Internet: architettura e protocolli/Protocollo ICMP
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 | modifica sorgente]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 | modifica sorgente](0) Echo Reply - (8) Echo Request
[modifica | modifica sorgente]Verifica se un host è raggiungibile. Questo messaggio è usato dal comando ping
.
(3) Destination Unreachable
[modifica | modifica sorgente]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 | modifica sorgente]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 | modifica sorgente]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 | modifica sorgente]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
.