Pour échanger des in­for­ma­tions 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’ap­pli­ca­tion et les pas­se­relles (par exemple les routeurs) qui utilisent l’extension IP pour renvoyer à l’ex­pé­di­teur du paquet des no­ti­fi­ca­tions de problèmes de da­ta­grammes. La structure, le mode de fonc­tion­ne­ment 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‘im­plé­men­ta­tion spé­ci­fique ICMPv6 a également été définie dans la RFC 4443. ICMP est un protocole autonome, même si les dif­fé­rentes no­ti­fi­ca­tions sont incluses dans des paquets IP standards. Pour cela, le protocole Internet traite l’extension op­tion­nelle comme un protocole de couche su­pé­rieure. Divers services réseau, souvent utilisés comme tra­ce­route ou Ping, sont basés sur le protocole ICMP.

Comment fonc­tionne l‘ICMP ?

Pour com­prendre le fonc­tion­ne­ment de ce protocole, il est d’abord utile de regarder la structure de l’ICMP ou son en-tête. Ceci est di­rec­te­ment 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 no­ti­fi­ca­tion du paquet ICMP en question. Cette in­di­ca­tion 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 des­ti­na­tion du paquet de données est inac­ces­sible, tandis que le « Code »  précise cette in­di­ca­tion et indique si le réseau de des­ti­na­tion (0), l’hôte (1) ou le port (3) ciblé n’a pas répondu à la requête pré­cé­dente. Les in­for­ma­tions relatives au type de message sont suivies de la somme de contrôle ICMP, qui garantit l’exac­ti­tude de la no­ti­fi­ca­tion. Cela se fait de la même manière que la somme de contrôle des autres pro­to­coles standards (IP, UDP, TCP).

Enfin, les données ICMP sont créées et struc­tu­rées dif­fé­rem­ment selon le type et l’instance de dé­clen­che­ment. Souvent, l’en-tête IP contient souvent une liste des 64 premiers bits du paquet de données qui sont res­pon­sables 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 com­mu­ni­ca­tion chiffré entre deux or­di­na­teurs.

Quels sont les types de paquets ICMP ?

En raison de la longueur de champ de 8 bits, 256 types de messages ICMP dif­fé­rents sont théo­ri­que­ment possibles, dont une qua­ran­taine de messages sont fixés (y compris certains qui sont obsolètes) et d’autres bloqués pour une uti­li­sa­tion ex­pé­ri­men­tale. La plupart des numéros (12-252) ne sont ac­tuel­le­ment pas attribués, mais sont réservés en principe. L’at­tri­bu­tion des numéros relève de la res­pon­sa­bi­lité de l‘IANA (Internet Assigned Numbers Authority), qui rè­gle­mente aussi l’at­tri­bu­tion des espaces d’adresses IP et des ports, par exemple. Le tableau suivant liste quelques-uns des prin­ci­paux types de paquets basés sur l’Internet Control Message Protocol :

Type ICMP Type ICMPv6 Nom du type Code Des­crip­tion
0 129 Echo reply (réponse echo) 0 L’ac­ces­si­bi­lité en répondant à un test Ping du réseau
3 1 Des­ti­na­tion Un­rea­chable (des­ti­na­tion inac­ces­sible) 0–15 Message ICMP qui informe, entre autres, de l‘inac­ces­si­bi­lité 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 (re­di­rec­tion) 0–3 No­ti­fi­ca­tion de la re­di­rec­tion des paquets pour le réseau spécifié (0), l’hôte sé­lec­tionné (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 0 Ping réseau
9 134 Router Ad­ver­ti­se­ment 0 Utilisé par les routeurs pour com­mu­ni­quer avec dif­fé­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 Da­ta­gramme sera alors détruit), ou que le temps d’attente pour assembler des paquets IP frag­men­tés (1) est expiré (le Da­ta­gramme ne peut pas être re­cons­ti­tué à temps).
13 13 Timestamp (demande heure) 0 Fournit le paquet IP cor­res­pon­dant avec un ho­ro­da­tage qui cor­res­pond à l’heure d’envoi et sert à syn­chro­ni­ser deux or­di­na­teurs.
14 - Timestamp Reply (réponse heure) 0 Message de réponse à un ho­ro­da­tage ICMP envoyé par le des­ti­na­taire après en avoir reçu un.
30 - Tra­ce­route 0 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 prin­ci­pa­le­ment utilisées à cette fin.

Les uti­li­sa­tions d‘ICMP et d‘ICMPv6

ICMP est d’une im­por­tance cruciale pour la com­mu­ni­ca­tion au sein des réseaux IP, ce protocole est aussi par­ti­cu­liè­re­ment utilisé par les routeurs. Cependant, les serveurs et les clients utilisent aussi les pos­si­bi­li­tés de mes­sa­ge­rie associée à l’Internet Protocol et reçoivent ainsi d’im­por­tantes in­for­ma­tions du réseau.

Un scénario d’uti­li­sa­tion courant est le test Ping du réseau, qui peut être exécuté à l’aide d’ap­pli­ca­tions du même nom via la ligne de commande du système d’ex­ploi­ta­tion respectif. L’outil de diag­nos­tic simple mais utile est le moyen le plus pratique pour vérifier l’ac­ces­si­bi­lité et la dis­po­ni­bi­lité d’un hôte par­ti­cu­lier sur le réseau. Pour cela, Ping envoie un paquet IP com­pre­nant ICMP (v6) « Echo Request » (Type 8 ou 128), auquel le des­ti­na­taire 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 dis­po­nible envoie un paquet de réponse. Il est également complété par un composant ICMP Type 3 ou 1 « Des­ti­na­tion Un­rea­chable (des­ti­na­tion inac­ces­sible).

Les routeurs utilisent aussi l’ICMP mais à des fins dif­fé­rentes. Par le biais d’un Router Ad­ver­ti­se­ment (ICMP Type 9 ; ICMPv6 Type 134), ils informent tous les par­ti­ci­pants actifs du réseau à in­ter­valles réguliers de leur présence et de diverses in­for­ma­tions du réseau. Ils stockent les données reçues dans leur cache et font du routeur la pas­se­relle 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 in­ter­faces réseau indiquent un hôte l’existence d’un meilleur premier hop ou saut (station in­ter­mé­diaire) pour l’envoi de paquets IP.

Aller au menu principal