Lo Internet Control Message Protocol e' un protocollo di controllo usato per inviare informazioni su problemi di rete o per semplici test di connettivita'.
La maggior parte dei messaggi ICMP vengono trasmessi da un router intermedio di percorso alla stazione trasmittente per indicare l'avvenuto scartamento di un pacchetto per vari motivi.
Il campo Tipo del messaggio ICMP denota il tipo di servizio espletato.
I tipi Echo Request ed Echo Reply vengono usati dal comando ping per determinare se un nodo finale sia raggiungibile.
Il tipo Destination Unreachable viene rispedito al mittente di un pacchetto che sia stato scartato per mancanza di routing. Il campo Informazioni contiene i primi 64 byte del pacchetto scartato.
Il tipo TTL Exceeded informa che un pacchetto e' stato scartato poiche' il suo tempo di vita e' scaduto in transito o all'atto del riassemblaggio dei frammenti: il campo Codice specifica esattamente il caso.
Il tipo Source Quench viene inviato al nodo a monte di un segmento di rete qualora per condizioni di traffico si sia verificato un intasamento. Il nodo a monte in tal caso dimezza subito la velocita' di invio pacchetti, salvo poi tentare di aumentarla di nuovo gradualmente in un tempo successivo.
Gli altri tipi di messaggi ICMP vengono usati piu' di rado.
E' da notare che se un pacchetto contenente un messaggio ICMP viene per qualche motivo scartato, questo non da' origine all'invio di un secondo pacchetto ICMP piu' un terzo per avvertire dei problemi del primo. Questo per evitare la cascata di pacchetti di controllo. Tocca ai protocolli a livello superiore accorgersi del mancato recapito del pacchetto originario.