ping (utilitaire de mise en réseau) - ping (networking utility)
Auteur(s) original(aux) | Mike Muuss |
---|---|
Développeur(s) | Divers open source et commerciaux développeurs |
Première version | 1983 |
Plate-forme | Multiplateforme |
Taper | Commander |
Licence | Domaine public , BSD , GPL , MIT |
Ping est un utilitaire logiciel d' administration de réseau informatique utilisé pour tester l'accessibilité d'un hôte sur un réseau IP ( Internet Protocol ). Il est disponible pour pratiquement tous les systèmes d'exploitation dotés d'une capacité de mise en réseau, y compris la plupart des logiciels d'administration réseau intégrés.
Ping mesure le temps d' aller-retour pour les messages envoyés de l'hôte d'origine à un ordinateur de destination qui sont renvoyés à la source. Le nom vient de la terminologie active du sonar qui envoie une impulsion sonore et écoute l'écho pour détecter les objets sous l'eau.
Ping fonctionne en envoyant des paquets de demande d'écho ICMP ( Internet Control Message Protocol ) à l'hôte cible et en attendant une réponse d'écho ICMP. Le programme signale les erreurs, la perte de paquets et un résumé statistique des résultats, comprenant généralement le minimum, le maximum, les temps d' aller-retour moyens et l' écart type de la moyenne.
Les options de ligne de commande de l'utilitaire ping et sa sortie varient entre les nombreuses implémentations. Les options peuvent inclure la taille de la charge utile, le nombre de tests, les limites du nombre de sauts de réseau ( TTL ) que les sondes traversent, l'intervalle entre les demandes et le temps d'attente d'une réponse. De nombreux systèmes fournissent un utilitaire compagnon ping6, pour les tests sur les réseaux Internet Protocol version 6 (IPv6), qui implémentent ICMPv6 .
Histoire
L'utilitaire ping a été écrit par Mike Muuss en décembre 1983 alors qu'il travaillait au Ballistic Research Laboratory , aujourd'hui l' US Army Research Laboratory . Une remarque de David Mills sur l'utilisation des paquets d'écho ICMP pour le diagnostic et les mesures du réseau IP a incité Muuss à créer l'utilitaire pour résoudre les problèmes de réseau. L'auteur l'a nommé d'après le son produit par le sonar , car sa méthodologie est analogue à la localisation de l'écho du sonar. Le backronym Packet Internet Groper pour PING est utilisé depuis plus de 30 ans, et bien que Muuss dise que de son point de vue PING n'était pas un acronyme, il a reconnu l'expansion du nom par Mills. La première version publiée était un logiciel du domaine public ; toutes les versions ultérieures ont été concédées sous la licence BSD . Ping a été inclus pour la première fois dans 4.3BSD . La version FreeDOS a été développée par Erick Engelke et est sous licence GPL . Tim Crawford a développé la version ReactOS . Il est licencié sous la licence MIT .
La RFC 1122 prescrit que tout hôte doit traiter les demandes d'écho ICMP et émettre des réponses d'écho en retour.
Exemple d'appel
Ce qui suit est le résultat de l'exécution de ping sur Linux pour l'envoi de cinq sondes (intervalle de 1 seconde par défaut, configurable via l'option -i) à l'hôte cible www.example.com :
$ ping -c 5 www.example.com
PING www.example.com (93.184.216.34): 56 data bytes
64 bytes from 93.184.216.34: icmp_seq=0 ttl=56 time=11.632 ms
64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=11.726 ms
64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=10.683 ms
64 bytes from 93.184.216.34: icmp_seq=3 ttl=56 time=9.674 ms
64 bytes from 93.184.216.34: icmp_seq=4 ttl=56 time=11.127 ms
--- www.example.com ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 9.674/10.968/11.726/0.748 ms
La sortie répertorie chaque message de sonde et les résultats obtenus. Enfin, il répertorie les statistiques de l'ensemble du test. Dans cet exemple, le temps d' aller-retour le plus court était de 9,674 ms, la moyenne était de 10,968 ms et la valeur maximale était de 11,726 ms. La mesure avait un écart type de 0,748 ms.
Messages d'erreur
En cas de non-réponse de l'hôte cible, la plupart des implémentations n'affichent rien ou impriment périodiquement des notifications concernant l'expiration du délai. Les résultats de ping possibles indiquant un problème sont les suivants :
- H, !N ou !P – hôte, réseau ou protocole inaccessible
- S - la route source a échoué
- F – fragmentation nécessaire
- U ou !W – réseau/hôte de destination inconnu
- I - l'hôte source est isolé
- A – communication avec le réseau de destination administrativement interdite
- Z – communication avec l'hôte de destination administrativement interdite
- Q – pour ce ToS le réseau de destination est inaccessible
- T - pour ce ToS l'hôte de destination est inaccessible
- X – communication administrativement interdite
- V – violation de la priorité de l'hôte
- C – seuil de préséance en vigueur
En cas d'erreur, l'hôte cible ou un routeur intermédiaire renvoie un message d'erreur ICMP, par exemple "hôte inaccessible" ou "TTL dépassé en transit". De plus, ces messages incluent les huit premiers octets du message d'origine (dans ce cas, l'en-tête de la demande d'écho ICMP, y compris la valeur d'extinction), afin que l'utilitaire ping puisse faire correspondre les réponses aux requêtes d'origine.
Format des messages
Paquet ICMP
Bits 0-7 | Bits 8-15 | Bits 16-23 | Bits 24-31 | |
---|---|---|---|---|
En-tête (20 octets) |
Version/DIH | Type de service (ToS) | Longueur | |
Identification | drapeaux et décalage | |||
Temps de vivre (TTL) | Protocole | Somme de contrôle d'en-tête | ||
Adresse IP source | ||||
Adresse IP de destination | ||||
En-tête ICMP (8 octets) |
Type de message | Code | Somme de contrôle | |
Données d'en-tête | ||||
Charge utile ICMP ( facultatif ) |
Données de charge utile |
Bits 0-3 | Bits 4-7 | Bits 8–11 | Bits 12-15 | Bits 16-23 | Bits 24-31 | |
---|---|---|---|---|---|---|
En-tête (40 octets) |
Version | Classe de trafic | Étiquette de flux | |||
Longueur de la charge utile | En-tête suivant | Limite de sauts | ||||
Adresse source | ||||||
Adresse de destination | ||||||
En-tête ICMP6 (8 octets) |
Type de message | Code | Somme de contrôle | |||
Données d'en-tête | ||||||
Charge utile ICMP6 ( facultatif ) |
Données de charge utile |
Composition générique d'un paquet ICMP :
- En-tête IPv4 (en bleu) : protocole défini sur 1 (ICMP) et Type de service défini sur 0.
- En-tête IPv6 (en bleu) : En-tête suivant défini sur 58 (ICMP6)
- En-tête ICMP (en rouge) :
- Type de message ICMP (8 bits)
- Code (8 bits)
- Somme de contrôle (16 bits), le complément à un de 16 bits de la somme des compléments à un du paquet. Pour IPv4, cela est calculé à partir du message ICMP commençant par le champ Type (l'en- tête IP n'est pas inclus). Pour IPv6, cela est calculé à partir du message ICMP, précédé d'un "pseudo-en-tête" IPv6.
- Le champ Header Data (32 bits), qui dans ce cas (requête et réponses d'écho ICMP), sera composé de l'identifiant (16 bits) et du numéro de séquence (16 bits).
- Charge utile ICMP : charge utile pour les différents types de réponses ; peut être une longueur arbitraire, laissée au détail de la mise en œuvre. Cependant, le paquet incluant les en-têtes IP et ICMP doit être inférieur à l' unité de transmission maximale du réseau ou risquer d'être fragmenté .
Demande d'écho
La requête d'écho ("ping") est un message ICMP / ICMP6 .
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | dix | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tapez = 8 (IPv4, ICMP) 128 (IPv6, ICMP6) | Code = 0 | Somme de contrôle | |||||||||||||||||||||||||||||
Identifiant | Numéro de séquence | ||||||||||||||||||||||||||||||
Charge utile |
L'identifiant et le numéro de séquence peuvent être utilisés par le client pour faire correspondre la réponse avec la demande qui a provoqué la réponse. En pratique, la plupart des systèmes Linux utilisent un identifiant unique pour chaque processus ping, et le numéro de séquence est un nombre croissant au sein de ce processus. Windows utilise un identifiant fixe, qui varie selon les versions de Windows, et un numéro de séquence qui n'est réinitialisé qu'au démarrage.
Réponse d'écho
La réponse d'écho est un message ICMP généré en réponse à une demande d'écho ; il est obligatoire pour tous les hôtes et doit inclure la charge utile exacte reçue dans la demande.
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | dix | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tapez = 0(IPv4,ICMP) 129(IPv6,ICMP6) | Code = 0 | Somme de contrôle | |||||||||||||||||||||||||||||
Identifiant | Numéro de séquence | ||||||||||||||||||||||||||||||
Charge utile |
- L' identifiant et le numéro de séquence peuvent être utilisés par le client pour associer chaque demande d'écho à sa réponse.
Charge utile
La charge utile du paquet est généralement remplie de caractères ASCII , comme le montre la sortie de l' utilitaire tcpdump dans les 32 derniers octets de l'exemple suivant (après l'en-tête ICMP de huit octets commençant par 0x0800 ) :
16:24:47.966461 IP (tos 0x0, ttl 128, id 15103, décalage 0, drapeaux [aucun], proto : ICMP (1), longueur : 60) 192.168.146.22 > 192.168.144.5 : requête d'écho ICMP, id 1, séquence 38, longueur 40 0x0000: 4500 003c 3aff 0000 8001 5c55 c0a8 9216 E..<:.....\U.... 0x0010 : c0a8 9005 0800 4d35 0001 0026 6162 6364 ......M5...&abcd 0x0020 : 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 efghijklmnopqrst 0x0030 : 7576 7761 6263 6465 6667 6869 uvwabcdefghi
La charge utile peut comprendre un horodatage indiquant l'heure de transmission et un numéro de séquence, qui ne se trouvent pas dans cet exemple. Cela permet à ping de calculer le temps d'aller-retour sans état sans avoir besoin d'enregistrer le temps de transmission de chaque paquet.
La charge utile peut également inclure un paquet magique pour le protocole Wake-on-LAN , mais la charge utile minimale dans ce cas est plus longue que celle indiquée. La demande d'écho ne reçoit généralement aucune réponse si l'hôte dormait en état d'hibernation, mais l'hôte se réveille toujours de l'état de veille si son interface est configurée pour accepter les demandes de réveil. Si l'hôte est déjà actif et configuré pour autoriser les réponses aux paquets ICMP Echo Request entrants , la réponse renvoyée doit inclure la même charge utile. Cela peut être utilisé pour détecter que l'hôte distant a été effectivement réveillé, en répétant une nouvelle demande après un certain délai pour permettre à l'hôte de reprendre ses services réseau. Si l'hôte dormait simplement dans un état actif de faible puissance, une seule demande réveille cet hôte juste assez pour permettre à son service Echo Reply de répondre instantanément si ce service était activé. L'hôte n'a pas besoin de réveiller complètement tous les appareils et peut revenir en mode faible consommation après un court délai. Une telle configuration peut être utilisée pour éviter qu'un hôte entre en état d'hibernation, avec un délai de réveil beaucoup plus long, après un certain temps passé en mode actif à faible consommation.
Des failles de sécurité
Pour mener une attaque par déni de service , un attaquant peut envoyer des requêtes ping aussi rapidement que possible, écrasant éventuellement la victime avec des requêtes d'écho ICMP. Cette technique est appelée ping flood .
Les requêtes ping vers plusieurs adresses, les balayages ping , peuvent être utilisées pour obtenir une liste de tous les hôtes d'un réseau.
Voir également
Les références
Lectures complémentaires
- Dyson, Peter (1995). Maîtriser OS/2 Warp . Sybex . ISBN 978-0782116632.
- Jean-Paul Mueller (2007). Administration de Windows sur la ligne de commande pour Windows Vista, Windows 2003, Windows XP et Windows 2000 . John Wiley & Fils . ISBN 978-0470165799.
- McElhearn, Kirk (2006). La ligne de commande Mac OS X : Unix sous le capot . John Wiley & Fils . ISBN 978-0470113851.
Liens externes
- Manuel de référence des commandes d'administration système Solaris 10 –
- Manuel du gestionnaire de système FreeBSD –
- Manuel du programmeur Linux – Administration et commandes privilégiées –
- ping | Microsoft Docs