Echo or Echo Reply Message (Messaggio Echo)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data ...
+-+-+-+-+-
Campi IP
Addresses (Indirizzi)
L'indirizzo dell'host sorgente in un messaggio echo sarà l'indirizzo di destinazione del messaggio di risposta echo. Per formare un messaggio di risposta echo, la sorgente e la destinazione scambiano semplicemente gli indirizzi, impostano il codice tipo a 0 e ricalcolano il checksum.
Campi ICMP
Type
8 per messaggio echo;
0 per messaggio di risposta echo.
Code
0
Checksum
Il checksum è il complemento a uno a 16 bit della somma in complemento a uno del messaggio ICMP, a partire dal Type ICMP. Per calcolare il checksum, il campo checksum dovrebbe essere zero. Se la lunghezza totale è dispari, il datagramma ricevuto viene riempito con un ottetto di zeri per calcolare il checksum. Il checksum può essere sostituito in futuro.
Identifier (Identificatore)
Se Code = 0, un identificatore per aiutare nell'abbinamento delle risposte echo alle richieste echo. Il codice deve essere restituito nella risposta echo.
Sequence Number (Numero di sequenza)
Se Code = 0, un numero di sequenza per aiutare nell'abbinamento delle risposte echo alle richieste echo. Il codice deve essere restituito nella risposta echo.
Descrizione
I dati ricevuti in un messaggio echo devono essere restituiti nel messaggio di risposta echo.
Gli identificatori e i numeri di sequenza possono essere utilizzati dal processo mittente per associare le risposte alle richieste echo. Ad esempio, l'identificatore può essere utilizzato come una porta nel TCP o UDP per identificare una destinazione. Il numero di sequenza può essere utilizzato come un numero di sequenza nel TCP per ordinare i messaggi.
Nota pratica: Questa è la base per l'utility ping, ampiamente utilizzata per la diagnostica di rete:
$ ping google.com
PING google.com (142.250.185.78): 56 data bytes
64 bytes from 142.250.185.78: icmp_seq=0 ttl=116 time=12.5 ms
64 bytes from 142.250.185.78: icmp_seq=1 ttl=116 time=11.8 ms
Ogni riga rappresenta una sequenza di richiesta/risposta echo:
- icmp_seq: Corrisponde al numero di sequenza
- ttl: Time to Live del pacchetto di risposta
- time: Round-trip time (RTT) in millisecondi