Etude de cas: ICMP
Source: Jim Kurose, Keith Ross: Computer networking: A Top-Down Approach
Dans ce TP, nous allons explorer plusieurs aspects du protocole ICMP (Internet Control Message Protocol) :
- Les messages ICMP générés par le programme
Ping; - les messages ICMP générés par le programme
Traceroute; - le format et le contenu d’un message
ICMP.
Pour rappel, le protocole ICMP est utilisé par les hôtes et les routeurs pour se communiquer des informations au niveau de la couche réseau. L’utilisation la plus courante de l’ICMP est le signalement d’erreurs. Par exemple, lors de l’exécution d’une session HTTP, vous avez peut-être rencontré un message d’erreur tel que “Destination network unreachable” (réseau de destination inaccessible). Ce message trouve son origine dans l’ICMP. À un moment donné, un routeur n’a pas été en mesure de trouver un chemin vers l’hôte spécifié dans votre requête HTTP. Ce routeur a créé et envoyé un message ICMP à votre hôte pour lui signaler l’erreur.
1 ICMP et Ping
Commençons notre étude sur ICMP
en capturant les paquets générés par le programme Ping.
Ping est un outil simple qui permet à n’importe qui
(par exemple, un administrateur réseau)
de vérifier si un hôte est actif ou non.
Le programme Ping de l’hôte source
envoie un paquet ICMP à l’adresse IP cible ;
si la cible est active,
le programme Ping de l’hôte cible répond
en renvoyant un paquet ICMP à l’hôte source.
Ouvrez un terminal.
Démarrez Wireshark et commencez la capture de paquets.
Saisissez la commande
ping www.ust.hkdans le terminal pour solliciter une réponse ICMP du serveur Web de l’Université des sciences et technologies de Hong Kong. Exécutez ensuite le programme Ping en tapant la touche “Entrée”.Au bout d’une dizaine de réponses, arrêtez
pingavec la combinaison de touches CTRL+C.Arrêtez la capture de paquets dans Wireshark.
Regardez la sortie dans le terminal.
Exercise
Exercise 1.1 Que signfie le mot RTT que vous voyez à chaque réponse ICMP dans le terminal ? Vous pouvez rechercher l’information sur Internet.
Saisissez icmp dans la fenêtre de filtres Wireshark pour n’afficher que les paquets ICMP dans Wireshark.
Exercise
Exercise 1.2 Quelle est l’adresse IP de votre hôte ? Quelle est l’adresse IP de l’hôte de destination ?
Exercise
Exercise 1.3 Quelle est la valeur de TTL utilisée par votre système d’exploitation lors de la préparation d’un datagramme IP ?
Exercise
Exercise 1.4 Pourquoi un paquet ICMP n’a-t-il pas de numéros de port source et de port de destination ?
Exercise
Exercise 1.5 Examinez l’un des paquets de requête ping envoyés par votre hôte. Quels sont les numéros de type et de code ICMP ? Quels sont les autres champs de ce paquet ICMP ? Combien d’octets représentent les champs somme de contrôle (checksum), numéro de séquence (sequence number) et identifiant (identifier) ?
Exercise
Exercise 1.6 Examinez le paquet de réponse ping correspondant. Quels sont les numéros de type et de code ICMP ? Quel est le numéro de séquence ? Est-ce que cette valeur correspond à celle que vous avez vue dans le message ping envoyé par votre ordinateur ?
2 ICMP et Traceroute
Poursuivons notre étude de ICMP
en capturant les paquets générés par le programme Traceroute.
Traceroute peut être utilisé pour déterminer le chemin emprunté par un paquet de la source à la destination.
Traceroute est implémenté de différentes manières sous Unix/Linux/MacOS et sous Windows.
Sous Unix/Linux, la source envoie une série de paquets UDP à la destination cible en utilisant
un numéro de port de destination improbable ;
sous Windows, la source envoie une série de paquets ICMP à la destination cible.
Pour les deux systèmes d’exploitation, le programme envoie le premier paquet avec TTL=1,
le deuxième avec TTL=2, et ainsi de suite.
Rappelons qu’un routeur décrémente la valeur TTL d’un paquet au fur et à mesure que celui-ci le traverse.
Lorsqu’un paquet arrive à un routeur avec TTL=1, le routeur envoie
un paquet d’erreur ICMP à la source.
Si vous travaillez sous Windows
Vous pourrez utiliser Traceroute en ouvrant une fenêtre de PowerShell et saisissant la commande tracert.
Si vous travaillez sous macOS/Linux
Vous pourrez utiliser Traceroute en ouvrant une fenêtre de terminal et saisissant la commande traceroute.
Commencez par ouvrir une fenêtre de terminal.
Démarrez Wireshark et commencez la capture de paquets.
Saisissez la commande appropriée de
Traceroutesuivie parwww.ust.hk.Lorsque le programme
Traceroutese termine, arrêtez la capture de paquets dans Wireshark. Il est possible que le programme ne termine pas, dans ce cas, arrêtez-le avec CTRL-C.
Dans Wireshark utilisez le filtre icmp ou udp (icmp || udp)
pour n’afficher que les paquets de Traceroute.
Bon à savoir
Pour obtenir des informations sur des adresses IP, vous pouvez toujours un moteur de recherche mis à disposition par le RIPE : rendez-vous sur cette page.
Exercise
Exercise 2.1 Quelle est l’adresse IP de votre hôte ? Quelle est l’adresse IP de l’hôte cible ?
Exercise
Exercise 2.2 Pouvez-vous determiner la route géographique suivie par le paquet ? Observez notamment les délais associés aux réponses.
Exercise
Exercise 2.3 Quelle est la valeur du champ Protocol dans l’en-tête IP ?
Exercise
Exercise 2.4 Examinez le paquet ICMP error dans votre capture d’écran. Quels champs/propriétés apparaîssent ?