Internet: architettura e protocolli/Protocollo ICMP

Wikibooks, manuali e libri di testo liberi.
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.