Le protocole Internet Control Message Protocol ou ICMP est décrit dans le document RFC792 Internet Control Message Protocol. Comme le protocole IP de la couche réseau fonctionne en mode non connecté, il ne fournit aucun service de contrôle lors de la transmission des paquets sur le réseau. Le rôle du protocole ICMP est de notifier l'émetteur lorsqu'il y a eu un problème.
La commande ping utilise principalement deux types de messages du protocole ICMP pour informer l'utilisateur sur les conditions de transmissions :
L'hôte distant est-il actif ou inactif.
Le temps de propagation en boucle (round-trip delay) lors de la communication avec l'hôte distant.
Les pertes de paquets pendant la communication.
Il existe 18 types de messages ICMP. Les deux types de messages employés par la commande ping sont :
Le type 8 (echo request) est émis vers l'hôte
distant.
Le type 0 (echo reply) est émis par l'hôte distant
en réponse.
Quelques autres types sont abordés dans la partie Section 9, « Fonctions réseau d'une interface ».
Pour valider le bon fonctionnement d'une communication sur un réseau IP, on suit une séquence précise de tests :
adresse IP de l'interface de boucle locale :
lo,
adresse IP de l'interface du poste de travail :
eth0 ou ppp0,
adresse IP du destinataire de la passerelle par défaut,
adresse IP extérieure au réseau local.
La commande suivante permet de valider le fonctionnement du protocole réseau IP pour les processus appartenant au même système. On parle alors de validation inter-processus.
$ ping -c 2 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.1 ms 64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=0.1 ms --- 127.0.0.1 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.1/0.1/0.1 ms
Il s'agit ici de contrôler que les processus pairs à l'intérieur du même système sont capables de dialoguer entre eux.
On teste ensuite le fonctionnement de l'interface seule :
$ ping -c 2 192.168.1.1 PING 192.168.1.1 (192.168.1.1): 56 data bytes 64 bytes from 192.168.1.1: icmp_seq=0 ttl=255 time=0.1 ms 64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=0.1 ms --- 192.168.1.1 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.1/0.1/0.1 ms
Il s'agit ici de contrôler que l'interface réseau est bien configurée et active.
Une fois ces deux étapes franchies, on peut tester les communications avec les autres systèmes.
Exemple d'echec :
$ ping -c 5 192.168.1.14 PING 192.168.1.14 (192.168.1.14): 56 data bytes --- 192.168.1.14 ping statistics --- 5 packets transmitted, 0 packets received, 100% packet loss
Exemple de succès :
$ ping -c 2 192.168.1.13 PING 192.168.1.13 (192.168.1.13): 56 data bytes 64 bytes from 192.168.1.13:icmp_seq=0
ttl=255
time=1.1 ms 64 bytes from 192.168.1.13: icmp_seq=1 ttl=255 time=0.8 ms --- 192.168.1.13 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.8/0.9/1.1 ms
|
Adresse de réponse du message ICMP : destinataire du test. |
|
|
Numéro de séquence du message. |
|
|
La valeur du champ TTL d'un paquet IP correspond au nombre d'interfaces de routage traversées pour arriver à l'interface. |
Pour obtenir la syntaxe de toutes les options disponibles, il faut accéder aux pages de manuels Unix :
via la console avec la commande man ping.
via l'interface graphique avec le centre d'aide de KDE : → → .
Cette commande est aussi très utile pour savoir si la résolution des noms d'hôtes fonctionne correctement. Dans ce cas on fait appel à un service Internet appelé Domain Name Service (>DNS). Cet appel au service >DNS nécessite un minimum de configuration.
$ ping -c 5 www.nic.frPING rigolo.nic.fr (192.134.4.20)
: 56 data bytes 64 bytes from 192.134.4.20: icmp_seq=0 ttl=54 time=57.6 ms 64 bytes from 192.134.4.20: icmp_seq=1 ttl=54 time=51.0 ms 64 bytes from 192.134.4.20: icmp_seq=2 ttl=54 time=57.0 ms 64 bytes from 192.134.4.20: icmp_seq=3 ttl=54 time=109.8 ms 64 bytes from 192.134.4.20: icmp_seq=4 ttl=54 time=165.3 ms --- rigolo.nic.fr ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max = 51.0/88.1/165.3 ms
|
Utilisation de la commande ping avec un nom d'hôte au lieu d'une adresse IP. |
|
|
Affichage de la correspondance entre le nom de l'hôte et son adresse IP. |
En cas d'echec sur la résolution des noms, il faut contrôler la validité des informations dans les deux fichiers suivants :
Vous êtes ici :