Etude de cas: ICMP

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.hk dans 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 ping avec 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 Traceroute suivie par www.ust.hk.

  • Lorsque le programme Traceroute se 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 ?