Ping
Ping (Packet internet groper) è un'utility di amministrazione per reti di computer usata per misurare il tempo, espresso in millisecondi, impiegato da uno o più pacchetti ICMP a raggiungere un dispositivo di rete (attraverso una qualsiasi rete informatica basata su IP) e a ritornare indietro all'origine. È prettamente utilizzato per verificare la presenza e la raggiungibilità di un altro computer connesso in rete e per misurare le latenze di trasmissione di rete.
Ping software | |
---|---|
Genere | Utility |
Data prima versione | dicembre 1983 |
Sistema operativo | Multipiattaforma |
Licenza | licenza BSD (licenza libera) |
Tecnicamente tramite ping viene inviato un pacchetto ICMP di tipo echo request e si rimane in attesa di un pacchetto ICMP di tipo echo reply 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 reply alla ricezione di un pacchetto di tipo echo request.
Ping tipicamente visualizza sullo standard output il numero di pacchetti inviati e ricevuti, la loro dimensione, il tempo totale trascorso tra l'invio di ogni pacchetto e la ricezione della risposta corrispondente, la media dei tempi e la percentuale di risposte ottenute. Alcune implementazioni (come quella disponibile in Cisco IOS) non mostrano i tempi di ciascun tentativo, ma si limitano a mostrare un carattere per ogni pacchetto inviato che indica se è stata ricevuta risposta o meno. Altre implementazioni, come quella in Solaris, si limitano normalmente ad indicare se la destinazione è stata raggiunta o meno, e fornendo un output dettagliato solo specificando apposite opzioni.
Storia
modificaL'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.[1]
In seguito David L. Mills ha definito ping come acronimo di Packet InterNet Groper (pacchetto Internet a tentoni[2]).
Uso (su MS Windows)
modificaDa un'interfaccia a riga di comando si può eseguire ping come segue:
ping [opzioni] destinazione
Il parametro destinazione può essere un indirizzo IP o un nome DNS, che indica l'apparato (o gli apparati, in caso di un indirizzo IP di broadcast) a cui inviare i pacchetti echo request.
Le opzioni sono specifiche del sistema operativo in uso, ma tipicamente consentono di specificare il numero di pacchetti di tipo echo request da inviare, la loro lunghezza in byte, e di effettuare un cosiddetto flood ping in cui i pacchetti sono inviati ripetutamente quanto più rapidamente possibile.
Tra le opzioni comunemente disponibili vi sono:
-a
- Risolve gli indirizzi IP in nomi host.
-n conteggio
- Determina il numero di richieste echo da inviare. Il numero di richieste predefinito è 4.
-w timeout
- Consente di regolare il valore di timeout (in millisecondi). Il valore predefinito è 1000 (corrispondente a un timeout di un secondo).
–l dimensione
- Consente di regolare la dimensione del pacchetto di ping. La dimensione predefinita è 32 byte.
-f
- Imposta il bit di Non frammentazione nel pacchetto di ping. Per impostazione predefinita, il pacchetto di ping consente la frammentazione.
-t
- Imposta la chiamata continua, viene eseguito il ping all'host desiderato finché non viene interrotto. Può essere interrotto digitando sulla tastiera CTRL + C
Caratteri di output in Cisco IOS
modificaL'implementazione di ping disponibile in Cisco IOS, per ciascun pacchetto inviato, visualizza un carattere che indica l'esito:
Carattere | Significato |
---|---|
! | il carattere esclamativo indica la ricezione di un reply |
. | ogni punto indica un network server timed out mentre è in attesa del reply |
U | il carattere U indica la ricezione di un PDU error (target irraggiungibile) |
Q | il carattere Q indica source quence target occupato |
M | non frammentabile |
? | packet di tipo sconosciuto |
& | packet lifetime superato |
Esempi
modificaEffettua un ping verso it.wikipedia.org
(da un sistema GNU/Linux):
$ ping it.wikipedia.org PING rr.esams.wikimedia.org (91.198.174.2) 56(84) bytes of data. 64 bytes from rr.esams.wikimedia.org (91.198.174.2): icmp_seq=1 ttl=50 time=83.0 ms 64 bytes from rr.esams.wikimedia.org (91.198.174.2): icmp_seq=2 ttl=50 time=82.4 ms 64 bytes from rr.esams.wikimedia.org (91.198.174.2): icmp_seq=3 ttl=50 time=84.0 ms 64 bytes from rr.esams.wikimedia.org (91.198.174.2): icmp_seq=4 ttl=50 time=82.6 ms 64 bytes from rr.esams.wikimedia.org (91.198.174.2): icmp_seq=5 ttl=50 time=82.4 ms --- rr.esams.wikimedia.org ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4015ms rtt min/avg/max/mdev = 82.416/82.933/84.066/0.636 ms
Effettua un ping verso it.wikipedia.org
(da un router con Cisco IOS):
r1>ping it.wikipedia.org
Translating "it.wikipedia.org"...domain server (151.99.125.1) [OK] Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 91.198.174.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 88/88/88 ms
Alternative
modificaIl comando traceroute offre informazioni analoghe a quelle offerte da ping, ma mostrando anche il tempo impiegato per raggiungere ciascun gateway intermedio tra la sorgente e la destinazione.
Attacchi informatici
modificaping è uno strumento molto utile se non indispensabile in alcuni contesti, ma il fatto che la risposta a pacchetti di tipo echo request avvenga in maniera automatica lo ha reso uno degli strumenti preferiti per gli attacchi di tipo DoS o DDoS. È possibile infatti inviare ad un gran numero di apparati di rete dei pacchetti di tipo echo request falsificando però l'indirizzo IP del mittente (spoofato in gergo internet) con quello della vittima: gli apparati di rete saranno portati automaticamente a rispondere all'indirizzo IP falsificato, saturandolo (flood) di pacchetti di tipo echo reply e causandone l'irraggiungibilità o (in caso di modem con scarsa larghezza di banda) la disconnessione della vittima da Internet (questo attacco è un tipo di reflection attack). Un tipico esempio di questo attacco era lo smurf. In seguito al diffondersi di questo tipo di attacco negli anni novanta sono state prese precauzioni che lo rendono difficilmente praticabile.
Una variante più semplice è il ping flood, che consiste nell'invio a raffica di pacchetti di tipo echo request verso la vittima designata: se l'attaccante dispone di un'ampia larghezza di banda può facilmente saturare di richieste il destinatario, mandandogli in crisi lo stack di rete e di conseguenza il sistema operativo della vittima, impossibilitata a ricevere e a rispondere a tutti i pacchetti in arrivo.
Note
modifica- ^ (EN) Michael John Muuss, The Story of the PING Program, su arl.mil. URL consultato il 13 ottobre 2014 (archiviato dall'url originale l'8 settembre 2010).
- ^ The Story of the PING Program, su ftp.arl.army.mil. URL consultato il 1º novembre 2020.
Bibliografia
modificaVoci correlate
modificaAltri progetti
modifica- Wikimedia Commons contiene immagini o altri file su Ping
Collegamenti esterni
modifica- (EN) ping, su Linux man pages. URL consultato il 28 febbraio 2009.
- (EN) ping, su FreeBSD Man Pages. URL consultato il 28 febbraio 2009.
- (EN) ping, su macOS Man Pages. URL consultato il 28 febbraio 2009.
- (EN) ping, su Solaris Express Reference Manual Collection. URL consultato il 28 febbraio 2009.
- (EN) ping, su HP-UX Reference. URL consultato il 28 febbraio 2009.
- (EN) ping Command, su Documentazione AIX — Commands Reference. URL consultato il 28 febbraio 2009.
- (EN) ping, su Windows XP Command-line reference. URL consultato il 28 febbraio 2009.
- ping online, su ToolsRepo - esegue ping da pagina web, in italiano. URL consultato il 27 novembre 2014 (archiviato dall'url originale il 5 dicembre 2014).
- (EN) Online Ping, su networktools.nl. URL consultato il 2 marzo 2010 (archiviato dall'url originale il 14 marzo 2010).