[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 263.   Messaggi ICMP

I messaggi ICMP qualificano i pacchetti del protocollo ICMP, che al contrario di TCP e di UDP non hanno le porte. Il messaggio ICMP è composto da un numero, che ne definisce il tipo, con l'aggiunta eventuale di un altro numero che indica il codice, da intendere in pratica come un sottotipo. L'elenco successivo è limitato ai tipi fondamentali:

Tipo Nome Chi lo utilizza
0 echo-reply risposta a un ping (pong)
3 destination-unreachable traffico TCP e UDP
5 redirect instradamento dei pacchetti
8 echo-request ping
11 time-exceeded (ttl-exceeded) traceroute

Il Ping funziona attraverso l'invio di un pacchetto ICMP di tipo 8, che rappresenta una richiesta di eco, con la quale si ottiene normalmente una risposta consistente in un pacchetto ICMP di tipo 0.

ping pong

ping -c 3 dinkel.brot.dg[Invio]

PING dinkel.brot.dg (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: icmp_seq=0 ttl=255 time=0.4 ms
64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=0.5 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=255 time=0.7 ms

--- dinkel.brot.dg ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.4/0.5/0.7 ms

I pacchetti Ping, sia di richiesta di eco, sia di risposta, possiedono un numero di ordine, icmp_seq, che consente di verificare con quale sequenza vengono restituiti i pacchetti di risposta dalla rete.

I pacchetti IP possiedono un'informazione denominata TTL, ovvero Time to live. Il valore di questo campo va da 0 a 255 e viene deciso da chi genera il pacchetto. Ogni volta che un pacchetto attraversa un nodo (un router o qualcosa che svolge un compito simile), questo nodo deve provvedere a ridurre di un'unità questo valore. Quando un nodo riceve un pacchetto con un valore TTL pari a zero, lo elimina, mandando al mittente un pacchetto ICMP di tipo 11, «tempo scaduto», che indica l'impossibilità di raggiungere la destinazione con quel valore TTL di partenza.

ICMP 11

I messaggi ICMP di tipo 3 sono essenziali per garantire il funzionamento della rete.

Traceroute sfrutta i messaggi ICMP di tipo 11 e di tipo 3 per disegnare la mappa dei pacchetti inviati a un certa destinazione. Invia una serie di pacchetti, UDP o ICMP, partendo da un valore TTL iniziale pari a zero, incrementando successivamente, fino a raggiungere la destinazione richiesta.

traceroute

/usr/sbin/traceroute www.swlibero.org[Invio]

traceroute to master.swlibero.org (62.152.34.17), \
  \30 hops max, 38 byte packets 1 151.5.184.148 (151.5.184.148) 107.225 ms 267.458 ms 109.690 ms 2 151.5.184.65 (151.5.184.65) 109.705 ms 115.023 ms 109.710 ms 3 151.5.206.137 (151.5.206.137) 119.754 ms 117.595 ms 132.192 ms 4 192.106.1.162 (192.106.1.162) 147.402 ms 127.113 ms 139.737 ms 5 151.17.202.42 (151.17.202.42) 139.740 ms 145.503 ms 151.768 ms 6 master.swlibero.org (62.152.34.17) 127.771 ms 147.494 ms 129.758 ms

Traceroute chiama il valore TTL come hop, salto. Nell'esempio viene usato un valore massimo di 30 (che comunque risulta più che sufficiente).

Traceroute utilizza generalmente un pacchetto UDP destinato alla porta 33 434+n, dove n rappresenta il valore TTL iniziale. Supponendo che non ci sia nulla in ascolto in quella porta nel nodo di destinazione, l'ultimo nodo restituisce un pacchetto ICMP di tipo 3, codice 3: «porta irraggiungibile».

Quando un pacchetto di un protocollo TCP o UDP raggiunge un router che non è in grado di instradarlo, perché consapevole di non poter raggiungere la destinazione richiesta, il pacchetto viene bloccato, restituendo al mittente un pacchetto ICMP di tipo 3: «destinazione irraggiungibile».

destinazine irraggiungibile

I messaggi ICMP sono importanti per garantire il funzionamento della rete; in particolare, i messaggi di tipo 3 sono fondamentali per garantire il funzionamento dei router dinamici che modificano l'instradamento al mutare delle condizioni della rete.

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome messaggi_icmp.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]

Valid ISO-HTML!

CSS validator!