Internet Control Message Protocol

ICMP – Internet Control Message Protocol

Il protocollo IP viene quindi utilizzato per il servizio di trasmissione di pacchetti host-to-host in un sistema di reti interconnesse. I dispositivi di connessione di rete, ad esempio i gateway, comunicano tra loro per scopi di controllo tramite uno speciale protocollo gateway-to-gateway. Di tanto in tanto, un gateway o un host di destinazione deve comunicare con un host di origine (ad esempio, per segnalare un errore nella trasmissione del pacchetto): a tale scopo si utilizza il protocollo ICMP.

ICMP utilizza il supporto di base dell’IP come se fosse un protocollo di livello superiore, ma è da  considerarsi parte integrante del protocollo IP.

ICMP utilizza il normale pacchetto IP per trasferire le sue informazioni. La tipica struttura dei messaggi ICMP è mostrata nella Fig. [20]

Figura 20: Messaggio ICMP - Internet Control Message Protocol
Figura 20: Messaggio ICMP – Internet Control Message Protocol

Il campo Type viene utilizzato per definire il tipo di messaggio ICMP, ad esempio, un messaggio di errore. Ci sono quasi quaranta tipi di messaggi standard che sono stati progettati per svolgere diverse funzioni, come effettuare una richiesta di invio e attesa di risposta (ad esempio utilizzata nel comando PING), per verificare se la destinazione è o meno raggiungibile, per segnalare pacchetti persi o non consegnati, e per molti altri scopi.

Il campo Code viene utilizzato per definire il sottotipo del messaggio all’interno del tipo di messaggio ICMP specificato. Ad esempio, il tipo di messaggio 3 (Destinazione Irraggiungibile) ha 16 diversi sottotipi come ad esempio: rete di destinazione non raggiungibile, host di destinazione irraggiungibile, protocollo di destinazione irraggiungibile, ecc.

Il campo Checksum è un checksum a 16 bit calcolato in modo simile al checksum dell’intestazione IP. Mentre il checksum dell’intestazione IP viene utilizzato per rilevare gli errori solo nell’intestazione IP, il checksum ICMP fornisce la copertura del rilevamento degli errori di bit per l’intero messaggio ICMP.

Infine, il campo Dati contiene principalmente dei dati la cui tipologia dipende dal tipo e dal codice del messaggio ICMP. Per alcuni messaggi, il campo Dati contiene l’intestazione IP dei primi 64 bit del pacchetto che ha attivato l’errore che ha causato l’invio del messaggio ICMP.

In definitiva quindi i principali compiti del protocollo ICMP sono i seguenti:

  • Segnalare errori di rete come, ad esempio, un host o una rete non raggiungibile.
  • Segnalare la congestione della rete. Se i buffer di un router o di un gateway sono pieni e vengono ricevuti sempre più pacchetti, il router o il gateway invieranno una notifica di congestione al mittente o al router o gateway che li precede.
  • Fornire supporto per la risoluzione dei problemi utilizzando la richiesta di ping e i relativi messaggi di risposta. Questo è il meccanismo utilizzato nei comandi ping e trace.
  • Controllare il timeout: quando il TTL di un pacchetto IP raggiunge lo zero senza raggiungere la sua destinazione, il pacchetto viene scartato. Quando il pacchetto viene scartato, il router o il gateway che lo ha rilasciato segnala all’origine del pacchetto che questo pacchetto è stato scartato utilizzando un messaggio ICMP.