Uno Sbampato in giro per la rete .. proveniente da Platania (39°0′0″N 16°19′0″E)
In: How-To & Guide
20 gen 2010Oggi voglio presentare un piccolo ma credo interessante 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 presenza 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 (presente su molti sistemi diversi, come UNIX (Linux e Mac), DOS, Windows,) che invia una successione 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 paramentro (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 possono 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 passaggi 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 possiede un header di 28 bytes, quindi Ping Bytes Sent = Ping Packet Size + Ping Header Packet Size (28 bytes)
Ping con parametro Timeout
Per impostare il timeout al comendo ping bisogna usare il parametro –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
Blog personale di Antonio Di Cello (Rafanto) .. informazioni,suggerimenti e curiosità sul mondo Linux, Maemo e OpenSource