ICMP (Internet Control Message Protocol) è un protocollo di controllo del livello di rete usato dai router per segnalare eventi inattesi.
Viene usato anche per testare la rete: per esempio viene usato dal comando PING (Packet InterNet Groper) per verificare se è possibile comunicare con una stazione.
I messaggi di ICMP possono essere usati per:
-
segnalare che la destinazione di un pacchetto non è conosciuta o che un pacchetto è troppo grande ma non deve essere frammentato e quindi non può essere consegnato (Destination Unreacheable);
-
avvertire che un pacchetto viene scartato perché il contatore del tempo di vita si è azzerato (Time Exceeded);
-
avvertire il mittente di rallentare la trasmissione, in caso di congestione (Source Quench);
-
avvertire il mittente che c’è una strada migliore per raggiungere la destinazione, in modo che il mittente la memorizzi nella tabella di routing per usarla successivamente (Routing Redirect);
-
controllare se una destinazione è raggiungibile e attiva (Echo Request); la destinazione risponde con un messaggio Echo Reply;
-
misurare le prestazioni della rete facendo in modo che il tempo di arrivo della richiesta e il tempo di partenza della risposta vengano registrati nella risposta del destinatario (Timestamp Request e Timestamp Reply).
I messaggi ICMP si appoggiano sul protocollo IP, cioè vengono incapsulati in pacchetti IP.