L’Internet Control Message Protocol (ICMP) è un’utilità utilizzata per la segnalazione degli errori e per scopi diagnostici nelle reti di computer. ICMP fa parte di Internet Protocol Suite (IP) e consiste di messaggi predefiniti con scopi diversi. La maggior parte degli aspetti dell’Internet Control Message Protocol passa inosservata agli utenti finali, ma alcuni strumenti di rete come traceroute e ping si affidano ai messaggi ICMP per la loro funzionalità.
Al centro di Internet e delle reti di computer più piccole c’è una raccolta di protocolli nota come IP Suite. Questi protocolli specificano i formati per i messaggi scambiati tra dispositivi di rete e stabiliscono regole per come tali messaggi vengono inviati e ricevuti. Anche i protocolli sono stratificati, con ogni livello che si basa su quello sottostante. L’ICMP fa parte del secondo livello più alto, il livello Internet. Questo livello include il noto protocollo Internet responsabile della trasmissione di singoli gruppi di dati, chiamati pacchetti, attraverso una o più reti.
ICMP viene utilizzato per inviare messaggi di errore o informazioni diagnostiche tra dispositivi o host utilizzando il protocollo Internet. I messaggi ICMP sono predefiniti e possono essere indicati per nome o numero di tipo. La maggior parte di questi messaggi riguarda diversi tipi di segnalazione degli errori. Ad esempio, quando non è possibile raggiungere un determinato host, viene spesso generato un messaggio ICMP che indica il problema specifico che impedisce la consegna dei dati. Altri tipi di messaggi vengono inviati se i pacchetti vengono danneggiati o se un router o un host in una rete è congestionato.
La dimensione massima di un pacchetto non è predefinita, ma è dettata dall’Unità di trasmissione massima (MTU) di un particolare collegamento di rete. Collegamenti diversi possono avere MTU diversi, ma un pacchetto deve essere più piccolo dell’MTU più piccolo lungo un determinato percorso per completare il suo viaggio. Una tecnica nota come Path MTU Discovery (PMTUD) utilizza messaggi ICMP per notificare a un mittente quando i pacchetti sono troppo grandi per un particolare segmento di percorso.
Un protocollo correlato noto come ICMP Router Discovery Protocol (IRDP) può facilitare la configurazione di rete automatica per gli host che lo supportano. IRDP utilizza due tipi di messaggi di Internet Control Message Protocol per annunciare e scoprire i router vicini, cioè gli host che connettono due o più reti. Un router che supporta IRDP trasmetterà periodicamente un messaggio pubblicitario del router ICMP che annuncia la sua presenza agli host. Gli host possono anche inviare un messaggio di richiesta chiedendo a tutti i router vicini di identificarsi.
Anche alcune popolari utility di rete si basano sull’Internet Control Message Protocol. Uno strumento, traceroute, utilizza il messaggio ICMP generato quando un pacchetto è scaduto o ha superato il suo “time to live” (TTL). Impostando un valore TTL intenzionalmente basso per un pacchetto, traceroute riceverà un messaggio ICMP Time Exceeded dall’ultimo router raggiunto dal pacchetto prima della scadenza. Ripetere questo processo e aumentare il valore TTL genererà, in teoria, un elenco di tutti gli host che i pacchetti stanno attraversando.
Un altro strumento chiamato ping si basa sul messaggio ICMP Echo Request, a cui si risponde con un messaggio ICMP Echo Reply. Sfortunatamente, il ping può anche essere abusato in un cosiddetto “attacco smurf” quando un hacker invia richieste di eco con informazioni del mittente falsificate, a cui rispondono molte altre macchine. Questo può congestionare una rete fino al punto in cui nessun pacchetto legittimo può passare, una situazione nota come denial of service.