Per determinare la raggiungibilità di un computer, ping invia quattro pacchetti ICMP con una richiesta di tipo echo di 32 byte ciascuno all'indirizzo indicato come parametro nell'impostazione predefinita.
L'ICMP (Internet Control Message Protocol) è un protocollo utilizzato per lo scambio di informazioni e messaggi di errore nelle reti IPv4. Per le reti di computer basate su IPv6 viene utilizzato un protocollo successivo, l'ICMPv6.
Teoricamente, i computer che supportano ICMP o ICMPv6 devono rispondere automaticamente alle richieste echo in arrivo con un pacchetto ICMP di tipo echo reply secondo le specifiche del protocollo. Nella pratica questo non sempre funziona, in quanto alcuni amministratori configurano i computer sotto la loro gestione per motivi di sicurezza in modo che i pacchetti ICMP vengano scartati senza risposta. Pertanto, una richiesta ICMP senza risposta non implica necessariamente che il computer di destinazione non sia raggiungibile.
Se il computer di destinazione indirizzato non risponde, l'ICMP fornisce un feedback dal gateway responsabile. Di solito in questo caso la risposta arriva da un router che indica che la rete o l'host corrispondente non è raggiungibile.
Se il router non risponde si può presumere che il computer sia raggiungibile, ma che non risponde automaticamente alla richiesta echo a causa della sua configurazione.
Come output, il comando ping fornisce le seguenti informazioni:
- Tempo di risposta in millisecondi (ms)
- Periodo di validità dei pacchetti ICMP (Time to Live, TTL) (solo IPv4)
Il tempo di risposta indica quanto tempo impiega un pacchetto di dati per raggiungere il computer di destinazione e tornare indietro. Il periodo di validità indicato come TTL corrisponde al tempo di validità di un pacchetto di dati. Il valore iniziale massimo è 255. Di solito si utilizzano implementazioni con un TTL iniziale di 31, 63 o 127. Il TTL viene ridotto di 1 per ogni nodo di rete che il pacchetto di dati attraversa. In questo caso si parla di hop. Se il TTL scende a 0, il pacchetto dati viene scartato.
Il TTL che ottenete nell'output corrisponde solitamente al valore iniziale del computer rispondente meno il numero di hop attraversati.
Ad esempio, con un TTL di 58, si può supporre che il pacchetto di risposta sia stato inviato con un valore iniziale di 63 e abbia attraversato 5 nodi di rete sul percorso di ritorno.