[successivo] [precedente] [indice]

Internet Message Control Protocol

Lo Internet Control Message Protocol (ICMP) scambia messaggi di diagnostica e di errore, allo scopo di fornire feedback sulle operazioni di scambio pacchetti e di migliorare le prestazioni della rete.

La specifica del protocollo ICMP e' contenuta nel documento RFC792.

La maggior parte dei messaggi ICMP vengono trasmessi da un router intermedio di percorso alla stazione trasmittente per indicare l'avvenuto scartamento di un sup pacchetto per vari motivi.

E' da notare che in caso di scartamento di un pacchetto ICMP stesso non viene inviato un altro messaggio ICMP, per evitare effetti valanga o loop infiniti. Percio' la presenza di ICMP non garantisce che le stazioni trasmittenti scoprano la perdita di tutti i pacchetti scartati, e il controllo di flusso e la ritrasmissione devono essere affidati a protocolli a livelli piu' alti.

ICMP e' implementato direttamente sopra IP e viene considerato un protocollo necessario della serie protocolli TCP/IP.

Tutti i messaggi ICMP iniziano con una testata comune a 32 bit.

Il campo Checksum e' calcolato con lo stesso algoritmo della testata IP. Il campo Tipo esprime il tipo di messaggio, il campo Codice esprime una variante che dipende dal tipo. Sono definiti molti tipi di messaggi ICMP.

Messaggi Diagnostici

I messaggi di tipo Time Exceeded, Destination Unreachable e Source Quench denotano tutti un problema operazionale risultante in un pacchetto scartato, e hanno lo stesso formato.

Dopo il campo Non Usato segue una porzione del pacchetto scartato includente la sua intera testata e i primi 64 bit del suo campo dati.

I messaggi Destination Unreachable vengono inviati da un router o host finale che non riesce a recapitare a destinazione il pacchetto. Il campo codice descrive l'esatto motivo:

I messaggi Time Exceeded vengono inviati quando il campo TTL di un pacchetto e' scaduto. Il codice indica il motivo preciso:

I messaggi Source Quench sono inviati da un router in stato di congestione. Il campo Codice e' settato a zero. La stazione ricevente riduce subito (tipicamente alla meta') la velocita' di invio pacchetti, salvo incrementarla gradualmente in tempi successivi.

Il messaggio Parameter Problem viene inviato quando il recapito e' stato impossibile a causa di un errore nella testata IP.

Il campo puntatore indica il byte del pacchetto originale dove si e' verificato l'errore. Il codice puo' essere:

I messaggi di tipo Echo e Information servono a determinare la raggiungibilita' di stazioni remote, con il comando ping o simili.

Timestamp

I messaggi Timestamp Request e Timestamp Reply servono alla sincronizzazione del tempo tra due stazioni remote.

La stazione trasmittente invia un messaggio Timestamp Request in cui riempie il campo Timestamp Origine con l'ora dell'invio. La destinazione risponde con un messaggio Timestamp Reply in cui riempie il campo Timestamp Ricezione con l'ora di ricezione della richiesta e il campo Timestamp Trasmissione con l'ora di trasmissione del responso. La stazione trasmittente nota l'ora di ricezione del messaggio responso e calcola lo sfasamento tra le due stazioni.

I campi ora sono espressi in millisecondi a partire dalla mezzanotte scorsa GMT. Se la risoluzione dell'ordine dei millisecondi non e' disponibile, il bit piu' significativo del campo e' settato

I messaggi Timestamp non sono piu' attivamente usati in Internet, ma sono stati sostituiti dal piu' complesso ed efficiente algoritmo Network Time Protocol (NTP).

Scoperta del Router Locale

La scoperta dinamica del router locale da parte di una stazione trasmittente avviene con l'invio broadcast locale di un messaggio Router Solicitation. Se la rete locale supporta il multicasting questo messaggio puo' anche essere inviato all'indirizzo 224.0.0.2 del gruppo di tutti i router.

Il messaggio e' semplice. Solo il Tipo e' significativo, il Codice e' settato a zero.

I router che sentono il messaggio rispondono alla stazione richiedente con um messaggio del tipo Router Advertisement.

Il messaggio consiste essenzialmente in una lista di indirizzi internet di tutte le interfacce del router, ciascuno corredato da un Valore di Preferenza. Il valore e' un numero segnato in complemento a 2, ove i numeri piu' alti sono migliori. Il valore piu' basso possibile (80000000 esadecimale) indica che il router non desidera ricevere pacchetti per default su quella interfaccia. Le preferenze sono normalmente settate sui router da un amministratore di sistema.

Il campo Numero Indirizzi indica il numero di coppie Indirizzi e Valore. Il campo Codice e' nullo. Il campo Dimensione Entry denota il numero di parole per ciascun indirizzo ed e' sempre 2 nella versione corrente. Il Tempo di Vita indica la durata di validita' del messaggio di Advertisement in secondi. Le stazioni richiedenti dovrebbero inviare un nuovo messaggio di Solicitation allo scadere di questo tempo.

I messaggi Router Advertisement sono inviati a intervalli regolari dai router anche non in risposta ad un messaggio di Solicitation. Le stazioni di una sottorete devono considerare solo i messaggi provenienti da router di quella sottorete.

Ridirezioni

Se una stazione trasmittente invia pacchetti ad un router non ottimale per lo smistamento, questo router invia alla stazione un messaggio ICMP Redirect.

Nella situazione indicata si supponga che la stazione A che intende inviare pacchetti alla stazione B faccia uso di default del router X. Il router X indica alla stazione A la presenza di un router migliore Y con un messaggio Redirect.

La struttura di questo messaggio e' simile a quella di un messaggio di Destination Unreachable, ma col campo Non Usato sostituito dal campo Indirizzo Internet del router da usare.

Il codice specifica meglio la ragione della ridirezione:

Per motivi di sicurezza una stazione puo' essere configurata a non rispondere a messaggi di ridirezione.