Tutorial sul comando Ping

In: How-To & Guide

20 gen 2010

Oggi voglio pre­sentare un piccolo ma credo interes­sante how-to su ping.  L’autore originario di ping fu Mike Muuss che lo scrisse nel 1983 come strumento diagnostico di rete mentre lavorava al Ballistics Research Lab dell’US Army. L’origine del nome è attribuita alla similitudine esistente tra il funzionamento del programma da lui creato e quello di un sonar marino, il quale appunto emette dei ping sonori aspettandone il ritorno dopo che essi rimbalzano sul bersaglio. Infatti il ping è un termine onomatopeico nato per indicare un segnale sonoro di breve durata e di alta tonalità emesso da un sottomarino per segnalare la propria pre­senza e la propria raggiungibilità ad un altro sottomarino.

In seguito David L. Mills ha definito ping come acronimo di Packet InterNet Groper (ricercatore di pacchetti Internet).

Nel linguaggio informatico il termine è stato adottato per designare un particolare comando (pre­sente su molti sistemi diversi, come UNIX (Linux e Mac), DOS, Windows,) che invia una succes­sione di pacchetti ad una stazione per verificarne la raggiungibilità, e che ricorre a tal fine al protocollo ICMP.

Tecnicamente ping invia un pacchetto ICMP di tipo echo request e rimane in attesa di un pacchetto ICMP di tipo echo response in risposta. Solitamente infatti la parte di sistema operativo dedicata alla gestione delle reti (stack di rete) è programmata per rispondere automaticamente con un pacchetto di tipo echo response alla ricezione di un pacchetto di tipo echo request.

Incrementare o decrementare il tempo di intervallo tra i pacchetti

Di default ping attende 1 secondo tra un pacchetto e il successivo.

Incremento del Ping Time Interval

Per esempio incrementiamo questo intervallo di 5 secondi

$ ping -i 5 IP

Decremento del Ping Time Interval

Per esempio decrementiamo l’intervallo a 0.1 secondi

# ping -i 0.1 IP  (o sudo ping -i 0.14 IP )

Vi chiederete perchè ho eseguito il comando da superuser ?! Solo il super user può specificare un intervallo inferiore a 0.2 sec.

Effettuare un ping per verificare se un interfaccia di rete è funzionante (o anche detta UP)

Ping di localhost usando il para­mentro (o — zero)

Questo pobabilmente è l’esempio più semplice, per pingare localhost basta effettuare un ping usando (0 — zero) come parametro

$ ping 0
PING 0 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.024 ms

Ping di localhost usando il nome

$ ping localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.051 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.055 ms

Ping di localhost usando l’ip

$ ping 127.0.0.1

Ping di N pacchetti verso un host e poi Stop

Se si sceglie un numero N di pacchetti grande e si vuole arrestare prima l’esecuzione del comando si può usare CTRL+C

$ ping -c 5 rafanto.net
PING rafanto.net (85.94.207.19) 56(84) bytes of data.
64 bytes from cassiopea.ergonet.it (85.94.207.19): icmp_seq=1 ttl=55 time=46.3 ms
64 bytes from cassiopea.ergonet.it (85.94.207.19): icmp_seq=2 ttl=55 time=47.0 ms
64 bytes from cassiopea.ergonet.it (85.94.207.19): icmp_seq=3 ttl=55 time=46.7 ms
64 bytes from cassiopea.ergonet.it (85.94.207.19): icmp_seq=4 ttl=55 time=47.6 ms
64 bytes from cassiopea.ergonet.it (85.94.207.19): icmp_seq=5 ttl=55 time=46.6 ms

--- rafanto.net ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 46.368/46.901/47.639/0.487 ms

Visualizzare la versione dell’utility ping

ping -V
ping utility, iputils-sss20071127

Flood the network

Il Super user pos­sono inviare migliaia di pacchetti per secondo usando –f come opzione. Il ping stamperà sul terminale un (.) quando il pacchetto è stato inviato e un backspace quando è stato ricevuto.

# ping -f localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
.^C
--- localhost ping statistics ---
427412 packets transmitted, 427412 received, 0% packet loss, time 10941ms
rtt min/avg/max/mdev = 0.003/0.004/1.004/0.002 ms, ipg/ewma 0.025/0.004 ms

Ping ad un IP con risposta audio Beep

Con questa opzione –a si può verificare ad esempio se un host e raggiungibile ed ottenere in caso di esito positivo un beep di conferma

$ ping -a IP

Rilevare l’indirizzo IP di un host

Per identificare un IP lanciamo verso un host un ping con un singolo pacchetto

$ ping -c 1 google.com
PING google.com (74.125.67.100) 56(84) bytes of data.
64 bytes from gw-in-f100.google.com (74.125.67.100): icmp_seq=1 ttl=43 time=287 ms
--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 287.903/287.903/287.903/0.000 ms


Stampa solo delle statistiche finali del comando ping

Usando l’opzione –q si ottiene al termine del comando solo la stampa su schermo delle statistiche finali e non i singoli pas­saggi di ping

$ ping -c 5 -q 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
--- 127.0.0.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3998ms
rtt min/avg/max/mdev = 0.047/0.053/0.061/0.009 ms

Cambiare la dimensione del pacchetto utilizzato per i ping

Si può cambiare la dimensione del pacchetto di default di un valore tra 56–100

$ ping -s 100 localhost
PING localhost (127.0.0.1) 100(128) bytes of data.
108 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.022 ms
108 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.021 ms
108 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.020 ms
^C
--- localhost ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.020/0.021/0.022/0.000 ms

Inoltre vi ricordo che un pacchetto ping pos­siede un header di 28 bytes, quindi Ping Bytes Sent = Ping Packet Size + Ping Header Packet Size (28 bytes)

Ping con para­metro Timeout

Per impostare il timeout al comendo ping bisogna usare il para­metro –w , ad esempio se vogliamo impostare un timeout di 5 sec

$ ping -w 5 localhost

Specificare il path per l’invio dei pacchetti di ping

$ ping hop1 hop2 hop3 .. hopN destination

ad esempio

$ ping 192.168.3.33 192.168.7.1 192.168.4.45

Registrazione e stampa della route completa del pacchetto ( ECHO_REQUEST sent and ECHO_REPLY received )

Questa variante del comando è molto usata per verificare il percorso effettivo nella rete di un pacchetto.

$ ping -R 192.168.1.63
PING 192.168.1.63 (192.168.1.63) 56(84) bytes of data.
64 bytes from 192.168.1.63: icmp_seq=1 ttl=61 time=2.05 ms
RR:   192.168.9.118
 192.168.3.25
 192.168.10.35
 192.168.1.26
 192.168.1.63
 192.168.1.63
 192.168.10.4
 192.168.3.10
 192.168.4.25
64 bytes from 192.168.1.63: icmp_seq=2 ttl=61 time=2.00 ms 

Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Add to favorites
  • Diggita
  • email
  • FriendFeed
  • HackerNews
  • Identi.ca
  • LinkedIn
  • Live
  • MySpace
  • Netvibes
  • NewsVine
  • PDF
  • Ping.fm
  • Reddit
  • RSS
  • Segnalo
  • StumbleUpon
  • Technorati
  • Twitter
  • Upnews
  • Wikio
  • Wikio IT
  • Yahoo! Buzz

Comment Form

About this blog

Blog personale di Antonio Di Cello (Rafanto) .. informazioni,suggerimenti e curiosità sul mondo Linux, Maemo e OpenSource

My Network


Blog Flickr Last.fm LinkedIn YouTube delicious slideshare googletalk vimeo Friendfeed Facebook

Twitter Feed

Facebook Fan

rafanto.net on Facebook

Spot

Supporta Rafanto.net

Spot