ICMP: che cos’è e come viene utilizzato

I nodi delle reti TCP/IP utilizzano l’Internet Control Message Protocol (ICMP) per scambiarsi informazioni relative allo stato e messaggi di errore. In particolare gli application server e i gateway (ad esempio i router) utilizzano questa estensione dell’Internet Protocol (IP) per notificare al mittente del pacchetto eventuali problemi con i datagrammi. La struttura, il modo di funzionamento e la collocazione dell’ICMP nella suite di protocolli Internet sono stati definiti nella RFC 792 del 1981. Per la versione 6 del protocollo Internet è stato implementato l’ICMPv6, descritto nella RFC 4443.

L’ICMP è un protocollo autonomo, anche se le sue notifiche sono incluse nei comuni pacchetti IP. A questo scopo il protocollo Internet considera questa estensione opzionale come un protocollo di livello superiore. Servizi di rete molto utilizzati come traceroute e ping si basano sul protocollo ICMP.

Come funziona l’ICMP?

Per comprendere il funzionamento del protocollo, conviene dare un’occhiata alla struttura dell’ICMP o meglio del suo header. Esso si collega direttamente con l’header dell’IP, nel quale viene indicato dal numero 1 (ICMPv4) o 58 (ICMPv6) del campo Protocollo. L’header dell’Internet Control Message Protocol non è molto ampio e ha la forma seguente:

Il primo campo di 8 bit (Tipo) indica la categoria a cui appartiene il messaggio ICMP. Il campo seguente (Codice), anch’esso di 8 bit, fornisce una descrizione ulteriore del messaggio. Facendo un esempio, un messaggio ICMP di tipo 3 specifica che la destinazione del pacchetto di dati non è raggiungibile, mentre il codice indica se a non essere disponibile sia la rete di destinazione (0), l’host desiderato (1) o la porta (3). L’ultimo campo (Checksum) ha la funzione di verificare la correttezza dei dati forniti. La sua struttura è analoga a quella dei checksum degli altri protocolli standard (IP, UDP, TCP).

Per ultimi ci sono i dati ICMP, che sono creati e strutturati diversamente in base al tipo di messaggio e all’istanza in funzione. In questo campo vengono spesso menzionati di nuovo l’header dell’IP e i primi 64 bit del pacchetto di dati responsabile del messaggio di errore o dello stato della query. Nel cosiddetto ICMP Tunneling questo campo viene utilizzato in modo improprio per inviare dati utente al di là del firewall o per stabilire un canale di comunicazione tra due computer.

Quali sono i pacchetti ICMP esistenti?

Considerata la dimensione di 8 bit del campo Tipo, i possibili tipi di messaggio ICMP sono in teoria 256. Di questi, circa 40 sono già assegnati (alcuni dei quali obsoleti), mentre alcuni sono bloccati per essere utilizzati in modo sperimentale. La maggior parte dei numeri (42-252) non è attualmente assegnata, ma in linea di principio prenotata. L’attribuzione dei numeri è sotto il controllo dell’Internet Assigned Numbers Authority (IANA), che regola anche l’assegnazione degli indirizzi IP e delle porte. La tabella seguente riassume alcuni dei pacchetti più importanti basati su ICMP:

Tipo di ICMP Tipo di ICMPv6 Nome del tipo Codice Nome del tipo
3 129 Echo Reply 0 Risposta al ping nel test di raggiungibilità
0 1 Destination Unreachable 0–15 Messaggio che segnala, tra le altre cose, la non raggiungibilità del componente indicato nel campo Codice (rete, protocollo, porta, host), un problema di routing o il blocco di un firewall.
5 137 Redirect Message 0–3 Notifica del redirect di un pacchetto per la rete indicata (0), l’host selezionato (1) o l’host e il servizio specificati (3).
8 128 Echo Request 0 Ping
9 134 Router Advertisement 0 Utilizzato dai router per comunicare con diversi client di rete
11 3 Time Exceeded 0 oder 1 Rapporto che indica il tempo di vita (Time To Live, TTL) di un pacchetto (0) o lo scadere del tempo di attesa per la ricostruzione di pacchetti IP frammentati
13 13 Timestamp 0 Fornisce al pacchetto IP corrispondente una marca temporale che indica il tempo di invio e serve a sincronizzare due computer
14 - Timestamp Reply 0 Risposta a un messaggio del tipo timestamp, inviata dal suo destinatario dopo la ricezione
30 - Traceroute 0 Messaggio ICMP obsoleto, utilizzato per tracciare il percorso di un pacchetto dati nella rete. Per questo scopo sono utilizzate principalmente echo request ed echo reply.

Utilizzo dei protocolli ICMP e ICMPv6

Il protocollo ICMP è di grande importanza per la comunicazione nelle reti IP, nelle quali viene utilizzato in particolare dai router, ma non solo: server e client fanno uso dei messaggi legati al protocollo Internet e ricevono in questo modo importanti informazioni di rete.

Una situazione tipica di impiego è il cosiddetto ping test, che può essere eseguito utilizzando l’omonimo comando disponibile in tutti i sistemi operativi. L’utilizzo di questo strumento è il modo più semplice per controllare la disponibilità di un host nella rete. A questo scopo, ping invia un pacchetto ICMP(v6) di tipo Echo request (8 o 128), al quale il destinatario risponde con un messaggio consistente in un pacchetto di tipo Echo reply (0 o 129). Nel caso in cui il sistema a cui è destinato il ping non sia raggiungibile, l’ultimo nodo di rete disponibile invia un pacchetto di risposta di tipo Destination unreachable (3 o 1, cioè destinazione non raggiungibile).

Dal canto loro, i router utilizzano il protocollo ICMP per scopi diversi: attraverso un Router advertisement (ICMP di tipo 9; ICMPv6 di tipo 134), a intervalli regolari, informano della propria presenza tutti i partecipanti attivi del network e comunicano loro le varie informazioni di rete. Questi a loro volta immagazzinano i dati ricevuti nella cache e possono impostare il router  come gateway standard. Inoltre, i router cercano di ottimizzare il percorso dei pacchetti di dati nella rete usando i Redirect (tipo 5 o 137). Utilizzando questo tipo di messaggi, le interfacce di rete notificano all’host l’esistenza di una stazione intermedia (hop) per l’invio di pacchetti IP.

Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.