ICMP (Internet Control Message Protocol) è un protocollo di rete per la rete IP (Internet Protocol). ICMP trasferisce le informazioni di controllo per lo stato della rete stessa piuttosto che i dati dell'applicazione. Una rete IP richiede ICMP per funzionare correttamente.
I messaggi ICMP sono un tipo specifico di messaggio IP distinto da TCP e UDP.
L'esempio più noto di messaggistica ICMP in pratica è l'utilità ping, che utilizza ICMP per analizzare gli host remoti per la risposta e misurare il tempo di andata e ritorno complessivo dei messaggi probe.
ICMP supporta anche altre utilità come traceroute che identificano i dispositivi di instradamento intermedi ("hop") sul percorso tra una determinata sorgente e destinazione.
ICMP contro ICMPv6
La definizione originale di ICMP supportava le reti di protocollo IP versione 4 (IPv4). IPv6 incorpora una forma riveduta del protocollo chiamata convenzionalmente ICMPv6 per distinguerlo dall'ICMP originale (occasionalmente chiamato ICMPv4).
Tipi di messaggi ICMP e formati dei messaggi
I messaggi ICMP contengono dati essenziali per il funzionamento e l'amministrazione di una rete di computer. Il protocollo riporta su condizioni quali dispositivi non responsivi, errori di trasmissione e problemi di congestione della rete.
Come altri protocolli della famiglia IP, ICMP definisce un'intestazione del messaggio. L'intestazione contiene quattro campi nella seguente sequenza:
- Tipo (8 bit)
- Codice (8 bit)
- Checksum (16 bit)
- Dati ICMP (32 bit)
ICMP definisce un elenco di tipi di messaggi specifici e assegna un numero univoco a ciascuno.
Come mostrato nella tabella seguente, ICMPv4 e ICMPv6 forniscono alcuni tipi di messaggi comuni (ma spesso con numeri diversi) e anche alcuni messaggi unici per ognuno. (I tipi di messaggi comuni possono anche variare leggermente nel loro comportamento tra le versioni IP).
| v4 # | v6 # | genere | Descrizione |
|---|---|---|---|
| 0 | 129 | Risposta eco | Messaggio inviato in risposta a una richiesta di eco (vedi sotto) |
| 3 | 1 | Destinazione irraggiungibile | Inviato in risposta a un messaggio IP che non è possibile recapitare per nessuno dei vari motivi. |
| 4 | - | Fonte di estinzione | Un dispositivo può inviare questo messaggio a un mittente che sta generando traffico in entrata a una velocità superiore a quella che può essere elaborata. (Sostituito da altri metodi.) |
| 5 | 137 | Reindirizzare il messaggio | I dispositivi di routing possono generare questo metodo se rilevano un cambiamento nella route richiesta per un messaggio IP che dovrebbe essere cambiato. |
| 8 | 128 | Richiesta di eco | Messaggio inviato dalle utilità ping per verificare la reattività di un dispositivo di destinazione |
| 11 | 3 | Tempo superato | I router hanno generato questo messaggio quando i dati in entrata hanno raggiunto il limite di conteggio "hop". Usato da traceroute. |
| 12 | - | Parametro Problema | Generato quando un dispositivo rileva dati corrotti o mancanti in un messaggio IP in entrata. |
| 13, 14 | - | Timestamp (richiesta, risposta) | Progettato per sincronizzare gli orologi temporali tra due dispositivi tramite IPv4, (sostituito da altri metodi più affidabili.) |
| - | 2 | Pacchetto troppo grande | I router generano questo messaggio quando ricevono un messaggio che non può essere inoltrato alla sua destinazione a causa del superamento di un limite di lunghezza. |
Il protocollo riempie i campi del codice e dei campi ICMP in base al tipo di messaggio scelto per condividere informazioni aggiuntive. Ad esempio, un messaggio Destinazione non raggiungibile può avere molti valori di codice diversi a seconda della natura dell'errore.




