ICMP

L’Internet Control Message Protocol fa parte del livello di rete e ha il compito di notificare agli host lo stato e gli errori dei router.

Queste notifiche sono inserite all’interno del campo dati dei datagrammi IP.

Infatti nell’IPv4 ci sono diversi problemi non gestiti:

  • Se un router deve scartare un pacchetto perché non sa dove instradarlo cosa si fa?
  • Se un datagramma ha il campo TTL pari a 0?
  • Se un host non riceve tutti i frammenti di datagramma entro un limite di tempo?

Grazie a ICMP il router che riscontra l’errore può inviare i dettagli di questo all’host mittente sperando che le informazioni che invia siano sufficienti a risolvere il problema per l’invio successivo.

I messaggi che invia hanno un campo tipo e un campo codice, contengono l’intestazione e i primi 8 byte del datagramma IP che ha causato l’errore.

TipoCodiceDescrizione
00risposta eco (a ping)
30rete destin. irraggiungibile
31host destin. irraggiungibile
32protocollo dest. irraggiungibile
33porta destin. irraggiungibile
36rete destin. sconosciuta
37host destin. sconosciuto
40riduzione (controllo di congestione)
80richiesta eco
90annuncio del router
100scoperta del router
110TTL scaduto
120errata intestazione IP

Ping

Il programma ping funziona inviando datagrammi contenenti un echo request di ICMP, a un indirizzo IP specifico.

Se il dispositivo di destinazione riceve il pacchetto, risponde con un altro pacchetto, chiamato echo reply.

Il programma ping misura il tempo che intercorre tra l’invio del pacchetto e la ricezione della risposta.

Tracerout

Il programma traceroute è uno strumento utilizzato per visualizzare il percorso che i pacchetti di dati seguono per raggiungere un determinato indirizzo IP.

Invia una serie di datagrammi IP alla destinazione, ciascuno contenente un segmento UDP aventi inizialmente TTL (time to live) basso che aumenta gradualmente ad ogni passaggio. Il primo TTL = 1, il secondo TTL = 2, ecc.

Quando l’n-esimo datagramma arriva all’ n-esimo router:

  • Il router scarta il datagramma.
  • Invia all’origine un messaggio di allerta ICMP (tipo 11, codice 0).
  • Il messaggio include il nome del router e l’indirizzo IP.

Quando il messaggio ICMP arriva all’host che ha avviato il programma tracerout, è possibile calcolare il RTT (Round-Trip Time).