ping utilise le datagramme obligatoire ECHO_REQUEST du protocole ICMP
pour requ??rir une r??ponse ICMP ECHO_RESPONSE d'un h??te ou d'une passerelle.
Les datagrammes ECHO_REQUEST (?? pings ??) comportent les en-t??tes IP et
ICMP, suivis d'une ?? struct timeval ?? et d'un nombre arbitraire d'octets
de bourrage utilis??s pour remplir le paquet.
OPTIONS
-a
ping audible.
-A
ping adaptatif. L'intervalle inter-paquets s'adapte au d??lai aller-retour
(round-trip time, rtt), afin qu'il n'y ait pas plus d'une sonde sans
r??ponse (ou plus, si le pr??chargement est utilis??) sur le r??seau.
L'intervalle minimal est de 200 ms pour les utilisateurs normaux (non
super-utilisateurs). Sur les r??seaux de rtt faible, ce mode est quasiment
??quivalent au mode inondation.
-b
Permettre de ?? pinger ?? une adresse de diffusion (broadcast).
-c nombre
S'arr??ter apr??s l'envoi de nombre paquets ECHO_REQUEST. Avec l'option
heure-limite, ping attend jusqu'?? nombre paquets
ECHO_REPLY avant que la temporisation n'expire.
-d
Sp??cifier l'option SO_DEBUG sur la socket utilis??e. Cette option de socket
n'est essentiellement pas utilis??e par le noyau Linux.
-F ??tiquette-flux
Allouer et sp??cifier une ??tiquette de flux (sur 20 bits) dans les paquets
de requ??te d'??cho (ping6 uniquement). Si la valeur est nulle, le noyau
alloue une ??tiquette de flux al??atoire.
-f
Mode inondation. Pour chaque ECHO_REQUEST envoy??, un point est affich??,
alors que pour chaque ECHO_REPLY re??u, un backspace (effacement arri??re)
est affich??. Cela fournit un affichage rapide du nombre de paquets qui ont
??t?? jet??s. Si aucun intervalle n'est fourni, ping fixe l'intervalle ??
z??ro et ??met des paquets d??s qu'en reviennent d'autres, avec un minimum de
100 fois/s. Seul le super-utilisateur peut utiliser cette option avec un
intervalle nul.
-i intervalle
Attendre intervalle secondes entre chaque envoi de paquet. Le d??lai
par d??faut est normalement d'une seconde, ou nul en mode inondation. Seul
le super-utilisateur peut fixer l'intervalle ?? des valeurs inf??rieures ??
0.2 secondes.
-I adresse-interface
Fixer l'adresse source ?? l'adresse de l'interface sp??cifi??e. L'argument
peut ??tre une adresse IP num??rique ou le nom d'un p??riph??rique. Cette
option est requise quand on d??sire joindre une adresse IPv6 locale au lien.
-l pr??chargement
Si pr??chargement est sp??cifi??, ping envoie ce nombre de paquets
sans attendre de r??ponse. Seul le super-utilisateur peut s??lectionner un
pr??chargement sup??rieur ?? 3.
-L
Enlever la boucle locale des adresses r??ceptrices des paquets
multidestinataires (multicast). Ce drapeau ne s'applique que si la
destination du ping est une adresse multidestinataire.
-n
Sortie num??rique uniquement. Ne pas essayer de trouver les noms symboliques
correspondant aux adresses d'h??tes.
-p motif
Vous pouvez sp??cifier jusqu'?? 16 octets de bourrage pour remplir
enti??rement le paquet ?? envoyer. C'est utile pour diagnostiquer des
probl??mes d??pendant des donn??es dans un r??seau. Par exemple, -p ff
forcera le remplissage du paquet envoy?? avec des un.
-Q tos
Sp??cifier les bits relatifs ?? la Qualit?? de Service dans les datagrammes
ICMP. tos peut ??tre un nombre d??cimal ou hexad??cimal.
Traditionnellement (RFC 1349), les num??ros de bits sont interpr??t??s comme
suit : 0 est r??serv?? (actuellement en cours de red??finition pour le
contr??le de congestion), 1-4 pour le type de service (Type of Service,
ToS), et 5-7 pour la Priorit??. Les valeurs possibles pour le type de
service sont : co??t minimal : 0x02, fiabilit?? : 0x04, d??bit : 0x08,
bas d??lai : 0x10. Plusieurs bits de TOS ne devraient pas ??tre utilis??s
simultan??ment. Les possibilit??s pour la Priorit?? vont de priorit?? normale
(0x20) ?? supervision r??seau (0xe0). Vous devez ??tre root (capacit??
CAP_NET_ADMIN) pour utiliser la priorit?? Critique ou une valeur de plus
haute priorit??. Vous ne pouvez pas positionner le bit 0x01 (r??serv??) ??
moins que l'ECN (NdT : Explicit Congestion Notification, notification
explicite de congestion) n'ait ??t?? activ??e dans le noyau. Dans le RFC 2474,
ces champs ont ??t?? red??finis pour former un champ de 8 bits destin?? aux
services diff??renci??s (Differentiated Services, DS), constitu?? des bits 0-1
de donn??es ind??pendantes (ECN sera utilis?? ici), et des bits 2-7 du
Differentiated Services Codepoint (DSCP).
-q
Sortie silencieuse. Rien n'est affich?? ?? part les lignes de r??sum?? au
d??marrage et ?? la fin de l'ex??cution.
-R
Enregistrer la route. Inclut l'option RECORD_ROUTE dans le paquet
ECHO_REQUEST et affiche (le tampon de) la route dans les paquets retourn??s.
Notez que l'en-t??te IP ne peut contenir qu'au plus neuf de ces routes.
Beaucoup d'h??tes ignorent ou d??sactivent cette option.
-r
Ne pas utiliser les tables de routage normales et envoyer les paquets
directement ?? un h??te pr??sent sur une interface directement connect??e. Si
l'h??te n'est pas situ?? dans un r??seau directement connect??, une erreur est
renvoy??e. Cette option peut ??tre utilis??e pour pinger un h??te local au
travers d'une interface ne faisant partie d'aucune route ?? condition que
l'option -I soit ??galement utilis??e.
-s taille-paquet
Sp??cifie le nombre d'octets de donn??es ?? envoyer. Le nombre par d??faut est
56, ce qui se traduit en 64 octets de donn??es ICMP quand ils sont combin??s
avec les 8 octets de donn??es de l'en-t??te ICMP.
-S tampon-??mission
Fixer le tampon d'??mission de la socket. S'il n'est pas sp??cifi??, on en
choisit un ne pouvant contenir plus d'un paquet.
-t ttl
Sp??cifier le champ IP Time to Live.
-T option-horodate
Sp??cifier des options d'horodates IP sp??ciales. L'option-horodate
peut ??tre tsonly (uniquement les horodates), tsandaddr
(horodates et adresses) ou tsprespec h??te1 [h??te2 [h??te3 [h??te4]]]
(sauts pr??sp??cifi??s horodat??s).
-M conseil
S??lectionner la strat??gie de d??couverte de la MTU (NdT : Maximum Transfer
Unit, unit?? de transfert d'information maximale) du chemin (Path MTU
Discovery). conseil peut ??tre soit do (ne pas fragmenter, m??me
en local), want (effectuer la d??couverte du PMTU, fragmenter
localement quand la taille du paquet est importante), ou dont (ne pas
sp??cifier le drapeau DF).
-U
Afficher le temps de latence total utilisateur-??-utilisateur (l'ancien
comportement). Normalement, ping affiche le rtt du r??seau, qui peut
??tre diff??rent p.ex. ?? cause d'??checs du DNS.
-v
Sortie verbeuse.
-V
Afficher le num??ro de version et se terminer.
-w heure-limite
Sp??cifier un d??lai, en secondes, avant que ping ne se termine quel
que soit le nombre de paquets envoy??s ou re??us. Dans ce cas, ping ne
s'arr??tera pas apr??s l'envoi de nombre paquets, mais attendra que le
d??lai expire ou que nombre sondes aient re??u une r??ponse, ou encore
qu'une notification d'erreur provienne du r??seau.
Quand vous utilisez ping pour la localisation de pannes, il devrait
d'abord ??tre ex??cut?? sur l'h??te local, pour v??rifier que l'interface r??seau
locale est activ??e et fonctionne correctement. Ensuite, les h??tes et les
passerelles de plus en plus ??loign??s devraient ??tre ?? ping??s ??. Les
d??lais aller-retour et les statistiques de perte de paquets sont calcul??s.
Si des paquets dupliqu??s sont re??us, ils ne sont pas inclus dans le calcul
des pertes de paquets, bien que leur d??lai aller-retour soit utilis?? pour
d??terminer les d??lais aller-retour min/max/moyen. Quand le nombre de
paquets sp??cifi?? a ??t?? envoy?? (et re??u), ou si le programme est termin?? par
un SIGINT, un bref r??sum?? est affich??. Des statistiques actuelles plus
courtes peuvent ??tre obtenues sans terminer le processus en utilisant le
signal SIGQUIT.
Si ping ne re??oit aucun paquet en r??ponse, il se terminera avec un
code de retour de 1. Si une heure-limite et un nombre de
paquets sont tous deux sp??cifi??s, et que moins de nombre paquets ont
??t?? re??us avant l'heure-limite, ping se terminera ??galement
avec un code de retour de 1. En cas d'autre erreur, le code de retour est
2. Sinon, il s'agit de 0. Cela permet d'utiliser le code de sortie pour
d??terminer si un h??te est actif ou non.
Ce programme est destin?? aux cas de tests, de mesure, et de gestion de
r??seaux. ?? cause de la charge qu'il impose sur le r??seau, il n'est pas
tr??s indiqu?? d'utiliser ping en temps normal, ou ?? partir de scripts
automatis??s.
D??TAILS D'UN PAQUET ICMP
Un en-t??te IP sans option comporte 20 octets. Un paquet ICMP ECHO_REQUEST
contient 8 octets suppl??mentaires d'en-t??te ICMP suivis d'une quantit??
arbitraire de donn??es. Quand une taille-paquet est fournie, elle
indique la taille de cette partie de donn??es suppl??mentaires (56 octets par
d??faut). Par cons??quent, la quantit?? de donn??es re??ues ?? l'int??rieur d'un
paquet IP de type ICMP ECHO_REPLY sera toujours de 8 octets sup??rieure ??
l'espace requis par les donn??es (l'en-t??te ICMP).
Si l'espace occup?? par les donn??es est d'au moins la taille d'une struct
timeval, ping utilise les huit premiers octets de cet espace pour
inclure une horodate qu'il utilise dans le calcul des d??lais aller-retour.
Si l'espace des donn??es est plus faible, aucun d??lai aller-retour n'est
donn??.
PAQUETS DUPLIQU??S ET ENDOMMAG??S
ping signalera les paquets dupliqu??s ou endommag??s. Une duplication
de paquets ne devrait jamais se produire, et semble ??tre caus??e par des
retransmissions inad??quates au niveau liaison de donn??es. Les duplications
peuvent se produire dans de nombreuses situations, et sont rarement (pour
ne pas dire jamais) un bon signe, bien que la pr??sence d'une basse
proportion de paquets dupliqu??s ne doive pas toujours vous inqui??ter.
Les paquets endommag??s constituent ??videmment une cause s??rieuse d'alerte
et indiquent souvent une panne mat??rielle quelque part sur le chemin du
paquet ping (dans le r??seau ou dans les h??tes).
TESTER DES MOTIFS DE DONN??ES DIFF??RENTS
La couche (inter)r??seau ne devrait jamais traiter des paquets diff??remment
en fonction des donn??es contenues dans la partie de donn??es.
Malheureusement, on a signal?? des probl??mes d??pendants des donn??es qui
s'immiscent dans les r??seaux et restent non d??tect??s pendant une longue
p??riode de temps. Dans beaucoup de cas, le motif particulier qui aura des
probl??mes est un motif ne comportant pas suffisamment de ?? transitions ??,
comme par exemple tous des un ou tous des z??ros, ou bien un motif proche
(comme par exemple presque uniquement des z??ros). Il ne suffit pas
n??cessairement de sp??cifier un motif de donn??es ne comportant que des z??ros
(par exemple) sur la ligne de commandes ??tant donn?? que le motif qui entre
en jeu est celui qui se trouve au niveau liaison de donn??es, et que la
relation entre ce que vous tapez et ce qui sera r??ellement envoy?? sur le
r??seau par les contr??leurs peut ??tre complexe.
Cela signifie que si vous avez un probl??me d??pendant des donn??es, alors
vous devrez probablement effectuer beaucoup de tests pour le trouver. Si
vous avez de la chance, vous pouvez trouver un fichier qui ne peut ??tre
envoy?? sur votre r??seau, ou qui prend beaucoup plus de temps ?? ??tre
transf??r?? que d'autres fichiers de longueur similaire. Vous pouvez ensuite
examiner ce fichier pour trouver des motifs r??p??t??s que vous pouvez tester
en utilisant l'option -p de ping.
D??TAILS SUR LE TTL
La valeur TTL (Time To Live, temps de vie) d'un paquet IP repr??sente le
nombre maximum de routeurs IP que ce paquet est autoris?? ?? traverser avant
d'??tre jet??. Dans la pratique, vous pouvez vous attendre ?? ce que chaque
routeur sur Internet d??cr??mente le champ TTL d'exactement une unit??.
La sp??cification TCP/IP pr??cise que le champ TTL destin?? aux ?? paquets ??
TCP devrait ??tre fix?? ?? 60, mais beaucoup de syst??mes utilisent des valeurs
plus petites (BSD 4.3 utilise 30, la version 4.2 utilisait 15).
La valeur maximale pour ce champ est de 255, et la plupart des syst??mes
Unix fixent le champ TTL des paquets ICMP ECHO_REQUEST ?? 255. C'est
pourquoi vous pouvez ?? pinger ?? certains h??tes, mais pas les atteindre
via telnet(1) ou ftp(1) .
Normalement, ping affiche la valeur TTL du paquet qu'il re??oit. Quand
un syst??me distant re??oit un paquet ping, il peut faire 3 choses avec le
champ TTL dans sa r??ponse :
Ne pas le modifier ; c'est ce que faisaient les syst??mes Unix Berkeley
avant la version BSD 4.3 tahoe. Dans ce cas, la valeur TTL du paquet re??u
sera de 255 moins le nombre de routeurs travers??s sur le chemin
aller-retour.
Le fixer ?? 255 ; c'est ce que font les syst??mes Unix Berkeley actuels.
Dans ce cas, la valeur TTL du paquet re??u sera de 255 moins le nombre de
routeurs travers??s sur le chemin venant du syst??me distant vers
l'h??te effectuant le ping.
Le fixer ?? une autre valeur. Certaines machines utilisent la m??me valeur
pour les paquets ICMP que pour les paquets TCP, par exemple 30 ou 60.
D'autres peuvent utiliser des valeurs compl??tement al??atoires.
BOGUES
Beaucoup d'h??tes et de passerelles ignorent l'option RECORD_ROUTE.
La taille maximale de l'en-t??te IP est trop courte pour que des options
comme RECORD_ROUTE soient vraiment utiles. On ne peut pourtant pas y faire
grand chose.
L'inondation de pings n'est en g??n??ral pas recommand??e, et inonder de pings
l'adresse de diffusion g??n??rale (broadcast) ne devrait ??tre fait que dans
des circonstances tr??s particuli??res.
La version d??crite ici est son descendant sp??cifique ?? Linux.
S??CURIT??
ping requiert la capacit?? CAP_NET_RAWIO pour pouvoir ??tre ex??cut??. Il
peut ??tre utilis?? dans le mode set-uid root.
DISPONIBILIT??
ping fait partie du paquetage iputils ; les derni??res versions
sont disponibles sous forme de code source via ftp anonyme sur
ftp://ftp.inr.ac.ru/ip-routing/iputils-current.tar.gz.
TRADUCTION
Fr??d??ric Delanoy <delanoy_f at yahoo.com>, 2002.