Internet: architettura e protocolli/Protocollo ICMP

Indice del libro

L'ICMP fornisce delle funzionalità di controllo sul livello IP:

  • verifica lo stato della rete;
  • riporta eventuali anomalie;
  • scopre la netmask (compito oggi svolto dal DHCP);
  • migliora il routing.

Non è in grado di rilevare errori che si verificano nei livelli sottostanti.

Intestazione dei pacchetti modifica

Un pacchetto ICMP può essere il payload di un pacchetto IP.

L'intestazione di un pacchetto ICMP ha lo scopo di comunicare un errore avvenuto nella rete:

  • tipo di messaggio;
  • codice del messaggio (sottotipo);
  • intestazione IP + i primi 64 bit del pacchetto che ha generato un errore.

Messaggi modifica

(0) Echo Reply - (8) Echo Request modifica

Verifica se un host è raggiungibile. Questo messaggio è usato dal comando ping.

(3) Destination Unreachable modifica

Segnala che la destinazione non è raggiungibile, e il motivo è specificato nel codice:

  • (0) Network unreachable: il router non trova la destinazione nella sua tabella di routing;
  • (1) Host unreachable: il router non trova la destinazione per la consegna diretta (per es., non ha risposto nessuno a una ARP Request);
  • (2) Protocol unreachable: l'host non trova il protocol type nel pacchetto IP;
  • (3) Port unreachable: la porta di livello 4 richiesta dal livello applicazione dell'host non è attiva;
  • (4) Fragmentation needed and DF set: il router ha bisogno di frammentare il pacchetto, ma il mittente ha richiesto di non frammentare il pacchetto;
  • (5) Source routed failed: il mittente può specificare manualmente il path all'interno del pacchetto, ma quel particolare path può non esistere.

(4) Source Quence modifica

Può essere inviato da un router quando sta per esaurire il buffer, e chiede al mittente di abbassare il rate → oggi non viene usato perché il TCP si occupa anche di rallentare il rate di invio dei pacchetti.

(5) Redirect modifica

Migliora il routing: si accorge se l'interfaccia di uscita di un pacchetto da un router corrisponde all'interfaccia di ingresso di quel pacchetto → esiste una strada migliore per raggiungere la destinazione.

 

(11) Time Exceeded for a Datagram modifica

Viene generato quando il TTL del pacchetto diventa zero, cioè quando il pacchetto ha attraversato un numero di hop pari al valore iniziale del TTL → il TTL limita gli effetti di un loop imprevisto. Questo messaggio è usato dal comando traceroute.