Qu’est-ce que le protocole ICMP ?

Pour échanger des informations sur l’état ou des messages d’erreur, les nœuds dans les réseaux TCP/IP utilisent l‘Internet Control Message Protocol (ICMP), en français : protocole de message de contrôle sur Internet. Ce sont notamment les serveurs d’application et les passerelles (par exemple les routeurs) qui utilisent l’extension IP pour renvoyer à l’expéditeur du paquet des notifications de problèmes de datagrammes. La structure, le mode de fonctionnement et le placement dans la pile de protocole Internet ont été précisés en 1981 dans la RFC 792 Pour la version 6 du protocole Internet, l‘implémentation spécifique ICMPv6 a également été définie dans la RFC 4443.

ICMP est un protocole autonome, même si les différentes notifications sont incluses dans des paquets IP standards. Pour cela, le protocole Internet traite l’extension optionnelle comme un protocole de couche supérieure. Divers services réseau, souvent utilisés comme traceroute ou Ping, sont basés sur le protocole ICMP.

Comment fonctionne l‘ICMP ?

Pour comprendre le fonctionnement de ce protocole, il est d’abord utile de regarder la structure de l’ICMP ou son en-tête. Ceci est directement lié à l’en-tête IP, qui est marqué par le numéro de protocole 1 ou 58 (ICMPv6) dans le champ IP « protocole ». La zone de données d’en-tête de l‘Internet Control Message Protocol même est assez limitée et ressemble comme ci-dessous :

Le premier champ « Type », d’une longueur de 8 bits, détermine le type de notification du paquet ICMP en question. Cette indication peut être spécifiée par le champ « Code » suivant, qui est également long de 8 bits. Par exemple, un message ICMP de type 3 spécifie que la destination du paquet de données est inaccessible, tandis que le « Code »  précise cette indication et indique si le réseau de destination (0), l’hôte (1) ou le port (3) ciblé n’a pas répondu à la requête précédente. Les informations relatives au type de message sont suivies de la somme de contrôle ICMP, qui garantit l’exactitude de la notification. Cela se fait de la même manière que la somme de contrôle des autres protocoles standards (IP, UDP, TCP).

Enfin, les données ICMP sont créées et structurées différemment selon le type et l’instance de déclenchement. Souvent, l’en-tête IP contient souvent une liste des 64 premiers bits du paquet de données qui sont responsables du message d’erreur ou de la requête d’état de statut. Dans ce que l’on nomme ICMP Tunneling ou ICMP Tunnel, ce champ est alors détourné pour envoyer des données utiles sous les radars de pare-feu ou pour établir un canal de communication crypté entre deux ordinateurs.

Quels sont les types de paquets ICMP ?

En raison de la longueur de champ de 8 bits, 256 types de messages ICMP différents sont théoriquement possibles, dont une quarantaine de messages sont fixés (y compris certains qui sont obsolètes) et d’autres bloqués pour une utilisation expérimentale. La plupart des numéros (12-252) ne sont actuellement pas attribués, mais sont réservés en principe. L’attribution des numéros relève de la responsabilité de l‘IANA (Internet Assigned Numbers Authority), qui règlemente aussi l’attribution des espaces d’adresses IP et des ports, par exemple. Le tableau suivant liste quelques-uns des principaux types de paquets basés sur l’Internet Control Message Protocol :

Type ICMP Type ICMPv6 Nom du type Code Description
  129 Echo reply (réponse echo)   L’accessibilité en répondant à un test Ping du réseau
3 1 Destination Unreachable (destination inaccessible) 0–15 Message ICMP qui informe, entre autres, de l‘inaccessibilité du composant spécifié dans le champ « code » (réseau, protocole, port, hôte), des problèmes de routage ou de blocage par pare-feu
5 137 Redirect Message (redirection) 0–3 Notification de la redirection des paquets pour le réseau spécifié (0), l’hôte sélectionné (1), le service et le réseau spécifiés (2) ou le service et l’hôte spécifiés (3).
8 128 Echo Request   Ping réseau
9 134 Router Advertisement   Utilisé par les routeurs pour communiquer avec différents clients du réseau
11 3 Time Exceeded (temps dépassé) 0 ou 1 Rapport d’état indiquant que la durée de vie (time to live, TTL) d’un paquet (0) est expirée (le Datagramme sera alors détruit), ou que le temps d’attente pour assembler des paquets IP fragmentés (1) est expiré (le Datagramme ne peut pas être reconstitué à temps).
13 13 Timestamp (demande heure)   Fournit le paquet IP correspondant avec un horodatage qui correspond à l’heure d’envoi et sert à synchroniser deux ordinateurs.
14 - Timestamp Reply (réponse heure)   Message de réponse à un horodatage ICMP envoyé par le destinataire après en avoir reçu un.
30 - Traceroute   Type de message ICMP obsolète utilisé pour suivre le chemin d’un paquet de données sur le réseau, aujourd’hui ce sont les requêtes Echo et les Reply qui sont principalement utilisées à cette fin.

Les utilisations d‘ICMP et d‘ICMPv6

ICMP est d’une importance cruciale pour la communication au sein des réseaux IP, ce protocole est aussi particulièrement utilisé par les routeurs. Cependant, les serveurs et les clients utilisent aussi les possibilités de messagerie associée à l’Internet Protocol et reçoivent ainsi d’importantes informations du réseau.

Un scénario d’utilisation courant est le test Ping du réseau, qui peut être exécuté à l’aide d’applications du même nom via la ligne de commande du système d’exploitation respectif. L’outil de diagnostic simple mais utile est le moyen le plus pratique pour vérifier l’accessibilité et la disponibilité d’un hôte particulier sur le réseau. Pour cela, Ping envoie un paquet IP comprenant ICMP (v6) « Echo Request » (Type 8 ou 128), auquel le destinataire répond après réception du message avec un paquet de données contenant l’entrée ICMP « Echo Reply » (Type 0 ou 129). Si le système auquel le ping a été envoyé n’est pas atteint, la dernière station réseau disponible envoie un paquet de réponse. Il est également complété par un composant ICMP Type 3 ou 1 « Destination Unreachable (destination inaccessible).

Les routeurs utilisent aussi l’ICMP mais à des fins différentes. Par le biais d’un Router Advertisement (ICMP Type 9 ; ICMPv6 Type 134), ils informent tous les participants actifs du réseau à intervalles réguliers de leur présence et de diverses informations du réseau. Ils stockent les données reçues dans leur cache et font du routeur la passerelle par défaut. De plus, les routeurs tentent d’optimiser le chemin des paquets de données dans le réseau en utilisant les ICMP Redirect (Type 5 ou 137). En utilisant ce type de message, les interfaces réseau indiquent un hôte l’existence d’un meilleur premier hop ou saut (station intermédiaire) pour l’envoi de paquets IP.