Come Funziona il Comando Ping?

A chi non è capitato di usare almeno una volta il comando ping? Alla grande maggioranza suppongo, anche gli utenti meno smaliziati almeno una volta saranno stati costretti ad aprire l’odiato prompt dei comandi e digitare la parolina magica: ping.

Ping è un programma diffuso praticamente su tutti i sistemi disponibili, si tratta di un’utility di diagnostica che serve per misurare il tempo impiegato tra l’invio di un pacchetto dati e la ricezione della risposta dall’host remoto.

Il comando può essere utilizzato sia in LAN, sia in Internet, ma anche tra due computer collegati con un cavo di rete. E’ utile per capire se due computer “si vedono”, ovvero possono dialogare scambiandosi dati.

In questo esempio mostro l’utilizzo di ping dal mio computer verso il router della mia rete, dove 192.168.1.1 è appunto l’indirizzo del router:

C:\PillolHacking>ping 192.168.1.1
 
Esecuzione di Ping 192.168.1.1 con 32 byte di dati:
 
Risposta da 192.168.1.1: byte=32 durata=5ms TTL=64
Risposta da 192.168.1.1: byte=32 durata=3ms TTL=64
Risposta da 192.168.1.1: byte=32 durata=3ms TTL=64
Risposta da 192.168.1.1: byte=32 durata=4ms TTL=64
 
Statistiche Ping per 192.168.1.1:
Pacchetti: Trasmessi = 4, Ricevuti = 4, Persi = 0 (0% persi),
Tempo approssimativo percorsi andata/ritorno in millisecondi:
Minimo = 3ms, Massimo =  5ms, Medio =  3ms

In un altro articolo parlavo di come riuscire a capire, o perlomeno a tentare di indovinare il tipo di sistema operativo del computer remoto analizzando il campo TTL (in questo 64 ci suggerisce che il sistema operativo del router è basato sul kernel Linux).

Questa volta voglio soffermarmi su di un altro aspetto, anzi mi faccio una domanda:come funziona il ping, cosa succede dietro le quinte quando digito questo comando?

Il funzionamento di ping si basa sul protocollo ICMP (Internet Control Message Protocol), un protocollo espressamente ideato per fornire servizi di diagnostica e controllo della rete. La struttura di questo protocollo è abbastanza semplice, infatti ICMP si compone di 4 campi:

1. Tipo
2. Codice
3. Checksum
4. Dati

Particolarmente interessante è il campo Tipo. I tipi possono essere una trentina circa, ma quelli che ci interessano sono 2:

1. Tipo 0: Echo reply
2. Tipo 8: Echo request

Quando digitiamo il comando ping, dopo aver fornito l’indirizzo Ip dell’host da controllare, avvengono le seguenti azioni:

1. Viene inviato un pacchtto dati ICMP di tipo 8 (Echo request) verso l’Ip specificato
2. L’host remoto risponde con un paccheto ICMP di tipo 0 (Echo reply)

Ho catturato la sessione ping riportata sopra con Wireshark, qui sotto possiamo vedere lo scambio di pacchetti ICMP dall’host sorgente (il computer da cui ho impartito il comando) ovvero 192.168.1.6, e il router 192.168.1.1:

ecco la risposta da 192.168.1.1:

Queste immagini evidenziano la parte ICMP del pacchetto dati. La prima immagine mostra l’invio di Echo request  (notare il byte 22 impostato a 8), da 192.168.1.6 verso 192.168.1.1 (i dati relativi agli indirizzi sono inclusi nell’header Ip); La seconda mostra la risposta proveniente da 192.168.1.1, con Echo reply (si vede il byte 22 del segmento ICMP impostato a 0).

Analizzando i pacchetti si nota anche come Windows riempia con caratteri alfabetici (abcdefghjklmnopqrst…) il campo dati da 32 byte. Il pacchetto Echo reply si limita a ricopiare questi 32 byte e rispedirli al mittente.

Spero che questa spiegazione sia riuscita a chiarire alcuni aspetti di ping e del protocollo ICMP. Prossimamente ci addentreremo nei meandri della rete analizzando i protocolli e facendo a pezzi i pacchetti dati con Wireshark e affini.

4 Comments
  1. Pingback: Technotizie.it

  2. si, è mia intenzione proporre altri articoli simili, mostrando come funzionano “dietro le quinte” operazioni che a noi sembrano banali, come appunto “fare un ping”.
    Ciao

  3. Pingback: Tweets that mention Come Funziona il Comando Ping? | PillolHacking.Net -- Topsy.com

Comments are closed.