Internet Control Message Protoco (ICMP) : Non solo PING.

Internet Control Message Protocol (ICMP)

L’Internet Control Message Protocol (ICMP) è un protocollo di supporto nella suite di protocolli Internet. Viene utilizzato dai dispositivi di rete, compresi i router, per inviare messaggi di errore e informazioni operative che indicano, ad esempio, che un servizio richiesto non è disponibile o che un host o un router non può essere raggiunto. L’ICMP si differenzia dai protocolli di trasporto come TCP e UDP in quanto non è tipicamente utilizzato per lo scambio di dati tra sistemi, né è regolarmente utilizzato da applicazioni di rete degli utenti finali (ad eccezione di alcuni strumenti diagnostici come ping e traceroute).

Un messaggio ICMP viene creato come risultato di errori in un datagramma IP o a scopo diagnostico. Questi errori sono segnalati all’indirizzo IP di origine del datagramma originario. Un messaggio ICMP è incapsulato direttamente all’interno di un singolo datagramma IP e segnala errori nell’elaborazione dei datagrammi.

Un’intestazione ICMP inizia dopo l’intestazione IPv4. Un pacchetto ICMP ha un’intestazione di otto byte, seguita da una sezione dati di dimensioni variabili. I primi quattro byte dell’intestazione sono fissi:

ICMP type
ICMP code
Checksum of the entire ICMP message
Checksum of the entire ICMP message
I restanti quattro byte dell’intestazione variano in base al tipo e al codice ICMP.

Il messaggio di errore associato all’ICMP include una sezione dati che contiene l’intera intestazione IP insieme ai primi otto byte del pacchetto che ha generato il messaggio di errore. Un datagramma ICMP viene poi incapsulato in un nuovo datagramma.

icmp header
pacchetto ICMP



 

Tipo messaggio ICMP 

  • Echo Reply (Ping Reply, used with Type 8, Ping Request)
  • Destination Unreachable
  • Source Quench
  • Redirect
  • Echo Request (Ping Request, used with Type 0, Ping Reply)
  • Router Advertisement (Used with Type 9)
  • 10 Router Solicitation (Used with Type 10)
  • 11 Time Exceeded
  • 12 Parameter Problem
  • 13 Timestamp Request (Used with Type 14)
  • 14 Timestamp Reply (Used with Type 13)
  • 15 Information Request (obsolete) (Used with Type 16)
  • 16 Information Reply (obsolete) (Used with Type 15)
  • 17 Address Mask Request (Used with Type 17)
  • 18 Address Mask Reply (Used with Type 18)

 

type ICMP
type ICMP

Echo Request Type 8 e Echo Reply Type 0

ICMP Echo Request Type 8 ed Echo Reply Type 0 lavorano in tandem. Gli host remoti usano questi due tipi di messaggi per testare la connettività. L’utente o un agente di sistena esegue l’utilità Ping iniziando la generazione di richieste di eco ICMP con l’aspettativa che l’host di destinazione invii una corrispondente risposta eco.

Destinazione irraggiungibile Tipo 3

Messaggio ICMP Type 3 Destination Unreachable avverte un source-host dei problemi di consegna incontrati durante il tentativo di raggiungere la destinazione. Un host di destinazione invia solo i tipi di codice 2 e 3; un router può inviare tutti i codici. Destination Unreachable utilizza diversi valori di codice per descrivere ulteriormente la funzione del messaggio ICMP inviato. Ogni tipo di codice descrive un diverso problema di consegna incontrato, come mostrato qui:

  • 0 = Network Unreachable
  • 1 = Host Unreachable
  • 2 = Protocol Unreachable
  • 3 = Port Unreachable
  • 4 = Fragmentation is needed, but don’t-fragment bit set
  • 5 = Source Route Failed
  • 6 = Destination Network Unknown
  • 7 = Destination Host Unknown
  • 8 = Source Host Isolated (obsolete)
  • 9 = Destination Network Administratively Prohibited
  • 10 = Destination Host Administratively Prohibited
  • 11 = Network Unreachable for ToS
  • 12 = Host Unreachable for ToS
  • 13 = Communication Administratively Prohibited by Filtering
  • 14 = Host Precedence Violation
  • 15 = Precedence Cutoff in Effect



Source Quench-Type 4

Un host ricevente genera questo messaggio quando non è in grado di elaborare i datagrammi alla velocità richiesta per mancanza di memoria o risorse interne. Questo messaggio serve come semplice meccanismo di controllo del flusso che un host ricevente può utilizzare per avvertire il mittente di rallentare la trasmissione dei dati. Quando l’host sorgente riceve questo messaggio, deve trasmettere queste informazioni al processo del livello superiore, come il TCP, che poi deve controllare il flusso del flusso di dati dell’applicazione. Un router genera questo messaggio quando, nel processo di inoltro dei datagrammi, ha esaurito i buffer e non può mettere in coda il datagramma per la consegna.

Redirect-Type 5

Un router invia un errore di reindirizzamento al mittente di un datagramma IP quando il mittente avrebbe dovuto inviare il datagramma ad un router diverso o direttamente ad un host finale (se l’host finale è locale). Il messaggio aiuta l’host di invio a dirigere un datagramma errato verso un gateway o un host. Questo avviso non garantisce una consegna corretta; l’host di invio deve correggere il problema, se possibile.

Solo i gateway generano messaggi di reindirizzamento per informare gli host di origine di datagrammi sbagliati. Si noti che un gateway che riceve un frame errato non cestina il datagramma offensivo se può inoltrarlo. Il gateway inoltra il frame, invia un messaggio di avviso alla sorgente e spera che l’host sorgente indirizzi correttamente i frame futuri all’host o gateway designato indicato nel messaggio. ICMP reindirizza i messaggi di avviso degli host sorgente quando un datagramma è stato indirizzato in modo errato e dovrebbe essere rispedito. Possono verificarsi quattro codici di errore di reindirizzamento:

  • 0 = Reindirizzamento per la rete
  • 1 = Reindirizzamento per Host
  • 2 = Reindirizzamento per il tipo di servizio e di rete
  • 3 = Reindirizzamento per il tipo di servizio e l’host

 

Router Advertisement and Solicitation – Types 9 e 10

Invece di inizializzare una tabella di routing con rotte statiche specificate nei file di configurazione, è possibile utilizzare router ICMP advertisement and solicitation messages. Dopo il bootstrapping, un host può trasmettere una trasmissione o multicast un messaggio di sollecitazione a cui un router o router risponde con una pubblicità router. Questo permette agli host comunicanti di conoscere dinamicamente le rotte disponibili e aggiornare le loro tabelle di routing.

Time Exceeded—Type 11

Il messaggio di tempo superato si verifica quando un router riceve un datagramma con un TTL (Time To Live) di 0 o 1. IP utilizza il campo TTL per prevenire cicli di routing infiniti. Un router non può inoltrare un datagramma che ha un TTL di 0 o 1. Invece, cestina il datagramma e invia un messaggio di superamento del tempo. Possono verificarsi due diversi codici di errore per il superamento del tempo:

  • 0 = Time-To-Live Equals 0 During Transit
  • 1 = Time-To-Live Equals 0 During Reassembly

Si noti che un router non può inoltrare un datagramma con un TTL di 0 o 1 sia durante il transito o il “Reassembly”

Parameter Problem—Type 12

Il messaggio di errore di parametro indica che un host o gateway ha ricevuto e non può interpretare un parametro non valido. Un host o gateway può anche inviare questo messaggio quando nessun altro messaggio ICMP che identifica il problema può essere utilizzato per avvisare l’host di invio. A questo proposito, si tratta di un messaggio catchall. Nella maggior parte dei casi questo messaggio indica un qualche tipo di errore di implementazione, forse a causa di problemi di incompatibilità del fornitore. Un host o un gateway non invierà questo messaggio a meno che non cestini il datagramma contenente il problema del parametro.

Possono verificarsi due messaggi di errore per problemi di parametrizzazione:

0 = IP Header Bad (errore catchall0)

Un host o gateway invia questo errore per indicare un errore generale di implementazione di natura non specifica.

1 = Opzione richiesta Opzione mancante

L’host o il gateway si aspettava un’opzione specifica, ma il mittente non l’ha inviata.

Timestamp Request and Reply—Types 13 and 14

I messaggi di richiesta e risposta timestamp funzionano in tandem. Una richiesta di timestamp permette ad un sistema di interrogarne un’altra per l’ora corrente. Si aspetta che un valore raccomandato restituito sia il numero di millisecondi trascorsi dalla mezzanotte, cioè il Coordinated Universal Time. Questo messaggio fornisce la risoluzione in millisecondi, considerata una caratteristica vantaggiosa rispetto ad altri mezzi per ottenere il tempo da un altro host che fornisce la risoluzione in secondi. I due sistemi confrontano i tre timestamp e utilizzano RTT per regolare il tempo del mittente o del destinatario, se necessario. Si noti che la maggior parte dei sistemi imposta il tempo di trasmissione e ricezione allo stesso valore.

Information Request and Reply—Types 15 and 16

Anche se i messaggi ICMP elencano la richiesta di informazioni e la risposta come potenziale tipo di messaggio ICMP, in realtà non si verificano, quindi sono obsoleti. Un host può richiedere informazioni come ad esempio su quale rete era collegato.

Address Mask Request and Reply—Types 17 and 18

La richiesta di maschera di indirizzo e i messaggi di risposta funzionano in tandem. Anche se oggi utilizziamo raramente questo messaggio, il suo design originale ha supportato la funzione di ottenere dinamicamente una maschera di sottorete. Gli host possono utilizzare la richiesta ICMP address mask per acquisire maschere di sottorete durante il bootstrap da un host remoto.