PING(8) | iputils | PING(8) |
NOME¶
ping - invia ICMP ECHO_REQUEST agli host della rete
SINTASSI¶
ping [-aAbBdCDfhHLnOqrRUvV46] [-c count] [-e identifier] [-F flowlabel] [-i interval] [-I interface] [-l preload] [-m mark] [-M pmtudisc_option] [-N nodeinfo_option] [-w deadline] [-W timeout] [-p pattern] [-Q tos] [-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp option] [hop...] {destination}
DESCRIZIONE¶
ping usa il's datagramma imperativo ECHO_REQUEST del protocollo ICMP per ottenere una ICMP ECHO_RESPONSE da un host o gateway. I datagrammi ECHO_REQUEST (“ping”) hanno un'intestazione IP e ICMP, seguita da un struct timeval e quindi un numero arbitrario di byte “pad” usati per completare il pacchetto.
ping opera sia con IPv4 che IPv6. L'utilizzo di uno solo dei due può essere ottenuto specificando -4 o -6.
ping può anche inviare Node Information Queries di IPv6 (RFC4620). Gli hop intermedi potrebbero non essere permessi perché l'instradamento della sorgente IPv6 è stato deprecato (RFC5095).
OPZIONI¶
-4
-6
-a
-A
-b
-B
-c contatore
-C
-d
-D
-e identificatore
-f
-F flow label
-h
-H
-i intervallo
-I interfaccia
-l preload
-L
-m marcatura
-M pmtudisc_opt
-N nodeinfo_option
help
nome
ipv6
ipv6-global
ipv6-sitelocal
ipv6-linklocal
ipv6-all
ipv4
ipv4-all
subject-ipv6=ipv6addr
subject-ipv4=ipv4addr
subject-name=nodename
subject-fqdn=nodename
-n
-O
-p modello
-q
-Q tos
Nell'RFC2474 questi campi sono interpretati come Differentiated Services (DS) su 8 bit, che consistono di: bit 0-1 (i due bit meno significativi) di dati a sé stanti, bit 2-7 (i 6 bit più significativi) di Differentiated Services Codepoint (DSCP). Negli RFC2481 e RFC3168 i bit 0-1 sono usati per ECN.
Storicamente (RFC1349, reso obsoleto da RFC2474), questi erano interpretati come: bit 0 (quello meno significativo) riservato (adesso è stato ridefinito come controllo di congestione), 1-4 per il tipo di servizio, bit 5-7 (quelli più significativi) per la precedenza.
-r
-R
-s dimensione
-S sndbuf
-t ttl
-T opzione timestamp
-U
-v
-V
-w deadline
-W timeout
Quando si usa ping per isolare i guasti, deve prima essere avviato sull'host locale, per verificare che l'interfaccia della rete locale sia funzionante. Quindi, host e gateway lontani possono venire “pingati”. Vengono conteggiate le statistiche sui tempi di risposta e i pacchetti persi. Se vengono ricevuti pacchetti duplicati essi non sono inclusi nel calcolo dei pacchetti persi, sebbene il tempo di risposta di questi pacchetti sia usato nel calcolare i numeri di minimo/medio/massimo tempo di risposta.
Deviazione standard della popolazione (mdev), essenzialmente è la media di quanto distante ogni RTT di ping si trovi rispetto alla media totale RTT. Più è alto mdev, maggiore è la variabilità di RTT (nel tempo). Con un'alta variabilità di RTT ci saranno problemi di velocità nei trasferimenti di blocchi (richiederanno più dello stretto necessario poiché la variabilità farà attendere gli ACK il mittente) e si avrà una qualità VoIP che va dal medio allo scarso.
Quando il numero specificato di pacchetti è stato inviato (e ricevuto) o se il programma è terminato con un SIGINT, viene visualizzato un breve sommario. Statistiche aggiornate più brevi possono essere ottenute senza la terminazione del processo con il segnale SIGQUIT.
Questo programma è pensato per l'uso nel test, misura e gestione delle reti. A causa del carico che può imporre alla rete è sconsigliabile usare ping durante le normali operazioni o da script automatizzati.
STATO DI USCITA¶
Se ping non riceve assolutamente nessuna riposta, uscirà con codice 1. Se vengono indicati sia contatore che deadline e sono ricevuti meno di contatore pacchetti prima che scada deadline, uscirà ancora con codice 1. A seguito di altri errori uscirà con codice 2. Altrimenti uscirà con codice 0. Questo permette di usare il codice d'uscita per vedere se un host è vivo o meno.
DESTINAZIONI LINK-LOCAL IPV6¶
In IPv6, quando l'indirizzo di destinazione è nell'ambito link-local e ping sta usando socket datagrammi ICMP, l'interfaccia d'uscita deve essere specificata. Quando ping sta usando socket raw non è strettamente necessario indicare l'interfaccia di uscita, ma dovrebbe essere fatto per evitare ambiguità quando le possibili interfacce di uscita sono più di una.
Ci sono due modi per specificare l'interfaccia d'uscita:
• usando la % notazione
ping fe80::5054:ff:fe70:67bc%eth0
ping fe80::5054:ff:fe70:67bc%2
• usando una -I opzione
DETTAGLI PACCHETTO ICMP¶
Un'intestazione IP senza opzioni è di 20 byte. Un pacchetto ICMP ECHO_REQUEST contiene un'intestazione addizionale ICMP di 8 byte seguita da un ammontare arbitrario di dati. Quando viene data una dimensione questo indica la dimensione di questa parte extra di dati (il valore predefinito è 56). Quindi l'ammontare di dati ricevuti in un pacchetto IP di tipo ICMP ECHO_REPLY sarà sempre 8 byte in più dello spazio dati richiesto (l'intestazione ICMP).
Se lo spazio dati è grande almeno come la struct timeval, ping usa questo spazio iniziale per includere data e ora, che usa nel computo dei tempi di risposta. Se lo spazio è inferiore non vengono dati tempi di risposta.
PACCHETTI DUPLICATI E DANNEGGIATI¶
ping riporterà i pacchetti duplicati e danneggiati. Non devono mai esserci pacchetti duplicati, e ciò sembra causato da ritrasmissioni inappropriate a livello di connessione. Le duplicazioni possono avvenire in molte situazioni e sono raramente (per non dire mai) un buon segno, sebbene la presenza di bassi livelli di duplicati potrebbe non sempre essere causa di allarme.
I pacchetti danneggiati una seria causa di allarme, e spesso indicano hardware malfunzionante da qualche parte nel percorso dei pacchetti di ping (nella rete o negli host).
COLLISIONI DI ID¶
Contrariamente a TCP e UDP, che usano porte per identificare il destinatario al quale consegnare i dati, ICMP usa un campo di identità (ID) per l'identificazione. Quindi, se sulla stessa macchina e allo stesso momento, due processi ping usano lo stesso ID, le risposte echo possono finire al destinatario errato. Questo è un problema conosciuto dovuto alla limitata dimensione di 16 bit del campo ID. Questa è una limitazione storica del protocollo che non può essere corretta ora a meno di inserire l' ID nella parte di carico del pacchetto ping. ping stampa l'errore INDIRIZZO DIVERSO è il numero di pacchetti persi diventa negativo.
ping usa PID per ottenere un numero unico.Il valore predefinito di /proc/sys/kernel/pid_max è 32768. Su sistemi che usano molto ping e nei quali pid_max è maggiore di 65535 è possibile che ci siano delle collisioni.
PROVARE DIFFERENTI PATTERN DATI¶
Lo strato di (inter)network non deve mai trattare i pacchetti in modo differente in funzione dei dati contenuti nella porzione dati. Sfortunatamente sono noti problemi dipendenti dai dati che si infilano nelle reti e rimangono nascosti per lunghi periodi di tempo. In molti casi il particolare schema che avrà problemi è qualcosa che non ha sufficienti "transizioni", come tutti uno o tutti zero, o uno schema al confine, come uno con quasi tutti zero. Non è necessariamente sufficiente specificare uno schema dati di tutti zero (per esempio) sulla linea di comando, perché lo schema di interesse è al livello collegamento dati, e la relazione tra ciò che si digita e ciò che il controller trasmette può essere complessa.
Ciò significa che se si ha un problema dipendente dai dati bisognerà probabilmente fare molti test per trovarlo. Se si è fortunati si può trovare un file che non può essere inviato attraverso la propria rete o che impiega troppo tempo per trasferirsi di altri file di lunghezza simile. Si può quindi esaminare questo file per trovare gli schemi ripetuti, che si possono testare usando l'opzione -p di ping.
DETTAGLI TTL¶
Il valore TTL di un pacchetto IP rappresenta il numero massimo di router IP che il pacchetto può attraversare prima di essere cestinato. Nella pratica corrente ci si può aspettare che ciascun router in Internet decrementi il campo TTL esattamente di uno.
Il campo TTL per pacchetti TCP può prendere vari valori6. Il valore massimo ammesso per questo campo è 255, un valore iniziale raccomandato è 64. Per maggiori informazioni vedere la sezione «TCP/Lower-Level Interface» dell'RFC9293.
Nelle operazioni normali ping stampa il valore ttl dal pacchetto che riceve. Quando un sistema remoto riceve un pacchetto ping, esso può fare una tra tre cose con il campo TTL nella risposta:
BUG¶
VEDERE ANCHE¶
STORIA¶
Il comando ping è apparso in BSD 4.3.
La versione qui descritta è un derivato specifico per Linux.
Dalla versione s20150815, l'eseguibile ping6 non esiste più. È stato inglobato in ping. Creare un link simbolico chiamato ping6 che punta a ping risulterà nella stessa funzionalità che c'era prima.
SICUREZZA¶
ping richiede la «capability» CAP_NET_RAW per essere eseguito 1) nel caso che il programma sia usato per delle query non-echo (vedere l'opzione -N) o quando il campo di identificazione viene impostato a 0 per ECHO_REQUEST (vedere -e), o 2) se il kernel non supporta socket datagrammi ICMP, o 3) se l'utente non ha il permesso di creare un socket echo ICMP. Il programma può essere impostato come set-uid root.
DISPONIBILIT˦
ping fa parte del pacchetto iputils.
TRADUZIONE¶
La traduzione italiana di questa pagina di manuale è stata creata da Giulio Daprelà <giulio@pluto.it> e Giuseppe Sacco <eppesuig@debian.org>
Questa traduzione è documentazione libera; leggere la GNU General Public License Versione 3 o successiva per le condizioni di copyright. Non ci assumiamo alcuna responsabilità.
Per segnalare errori nella traduzione di questa pagina di manuale inviare un messaggio a pluto-ildp@lists.pluto.it.
iputils 20240117 |