17.4 ICMP - Internet Control Message Protocol

Il protocollo ICMP è spesso considerato come parte integrante del livello Network, poiché è utilizzato per comunicare errori o avvertimenti dai protocolli di tale livello (IP) o di livello superiore (TCP, UDP, ...). Un pacchetto ICMP (o messaggio ICMP) si compone dei seguenti campi (v. fig. 17.18):


pict
Figura 17.18: Il formato del messaggio ICMP.

Il pacchetto ICMP per IPv4 è definito nella RFC 792 e quello per IPv6 (spesso detto anche ICMPv6) è definito nelle RFC 2461 e 2463.

I messaggi ICMP si dividono in messaggi informativi/richieste (query) ed errori (error). I messaggi ICMP di errore sono generalmente trattati dallo stack TCP/IP in maniera leggermente diversa rispetto ai messaggi informativi/richieste (ad esempio un pacchetto ICMP di errore non viene mai generato in risposta all’arrivo di un altro pacchetto ICMP di errore, che genererebbe un ciclo infinito di pacchetti ICMP di errore). Inoltre un pacchetto ICMP di errore riporta sempre l’header IP ed i primi 8 byte del datagram IP che ha causato l’invio di tale pacchetto.

Nella tab. 17.16 sono riportati tutti i tipi dei pacchetti ICMP per IPv4, per ognuno dei quali è evidenziato se si tratta di un messaggio informativo o di un errore.


Type-|Code--|Descrizione-------------------------------|Query--|Error-|
|-0-|----0-|Echo-Reply--------------------------------|---•---|-----|
| 3 |    0 |Network Unreachable                        |       |  •  |
| 3 |    1 |Host Unreachable                           |       |  •  |
| 3 |    2 |Protocol Unreachable                        |       |  •  |
| 33 |    34 |PForartg Umnernetaatchioanbleneeded but no frag. bit set    |       |  ••  |
| 3 |    5 |Source routing failed                        |       |  •  |
| 3 |    6 |Destination network unknown                  |       |  •  |
| 33 |    78 |DSeoustrincaet hioonst hoissolta utendk (noowbnsolete)                |       |  ••  |
| 3 |    9 |Destination network administratively prohibited     |       |  •  |
| 3 |   10 |Destination host administratively prohibited      |       |  •  |
| 3 |   11 |Network unreachable for TOS                 |       |  •  |
| 33 |   1123 |HCoostmmunurneiacachtaiobnleadfomri TnOisStratively prohibited by filtering       |  ••  |
| 3 |   14 |Host precedence violation                     |       |  •  |
| 3 |   15 |Precedence cutoff in effect                    |       |  •  |
| 4 |    0 |Source quench                             |       |  •  |
| 55 |    01 |RReeddirirecectt f foorr n hetoswtork                       |       |  ••  |
| 5 |    2 |Redirect for TOS and network                |       |  •  |
| 5 |    3 |Redirect for TOS and host                   |       |  •  |
| 8 |    0 |Echo request                               |   •   |     |
|190 |    00 |RRoouuteter asodlivcerittaistiemonent                        |   ••   |     |
|11 |    0 |TTL equals 0 during transit                  |       |  •  |
|11 |    1 |TTL equals 0 during reassembly               |       |  •  |
|12 |    0 |IP header bad (catchall error)                |       |  •  |
|1123 |    10 |RTeimqeuisrtedamoppt rioenqsue msits (siobnsgolete)                  |   •   |  •  |
|14 |    0 |Timestamp reply (obsolete)                  |   •   |     |
|15 |    0 |Information request (obsolete)                 |   •   |     |
|1167 |    00 |InAfdodrmreastsio mnasrekp rlyequ(oebsstolete)                    |   ••   |     |
-18------0--Address mask reply----------------------------•----------

Tabella 17.16: I messaggi ICMP.

Il campo type assume un valore diverso per i messaggi ICMPv6, dipendentemente dal fatto essi siano messaggi informativi o errori. In particolare, gli errori hanno un valore di type compreso tra 0 e 127 mentre i messaggi informativi hanno un type compreso tra 128 e 255, come evidenziato nella tab. 17.17.
Type-|Code--|Descrizione---------|Info-|Error-|
|-1-|----0-|Destination Unreachable|-----|--•---|
| 2 |    0 |Packet Too Big     |     |  •   |
| 3 |    0 |Time Exceeded       |     |  •   |
| 4 |    0 |Parameter Problem     |     |  •   |
|121289 |    00 |EEcchoho RReeqpuelyst        |  ••  |      |
|133 |    0 |Router Solicitation    |  •  |      |
|134 |    0 |Router Advertisement |  •  |      |
|131356 |    00 |NNeeigighhbboorr S Aoldicviertattisioemnent|  ••  |      |
-137------0--Redirect---------------•---------|

Tabella 17.17: I messaggi ICMPv6.

Un pachetto ICMP, prima di essere inviato sulla rete, viene comunque incapsulato in un datagram IP.

[da completare ...]