ICMP – Internet Control and error Message Protocol – Un routeur ou un hôte destinataire peut avoir à
communiquer vers l’émetteur d’un datagramme, par exemple, pour signaler une erreur de traitement du
datagramme. C’est le protocole Internet Control Message Protocol (ICMP) qui en est « chargé ». Il s’appuie sur
le support de base fourni par IP comme s’il s’agissait d’un protocole d’une couche supérieure. ICMP n’en
reste pas moins une partie intégrante du protocole IP, et doit de ce fait être implémenté dans chaque module
IP.
Les messages ICMP sont envoyés dans diverses situations: par exemple, lorsqu’un datagramme ne peut
pas atteindre sa destination, lorsque le routeur manque de réserve de mémoire pour retransmettre
correctement le datagramme, ou lorsque le routeur décode de viser l’hôte destinataire via une route
alternative pour optimiser le trafic.
Le protocole IP n’est pas, dans sa définition, absolument fiable. Le but de ces messages de contrôle est de
pouvoir signaler l’apparition d’un cas d’erreur dans l’environnement IP, pas de rendre IP fiable. Aucune
garantie que le datagramme soit acheminé ni qu’un message de contrôle soit retourné, de peut être donnée.
Certains datagrammes pourront se perdre dans le réseau sans qu’aucun message de contrôle ne le signale.
Les protocoles de niveau supérieur s’appuyant sur une couche IP devront implémenter leurs propres
mécanismes de contrôle d’erreur et de retransmission si leur objet nécessite un circuit de communication
sécurisé.
Les messages ICMP reportent principalement des erreurs concernant le traitement d’un datagramme dans
un module IP. Pour éviter de ne pas entrer dans un cercle vicieux de réémission de message de contrôle en
réponse à un autre message de contrôle et ce sans fin, aucun message ICMP ne sera réémis en réponse à
un message ICMP. De même les messages ICMP ne seront transmis qu’en réponse à un traitement erroné
du fragment zéro dans le cas d’un datagramme fragmenté. (Le fragment zéro est celui dont l’offset vaut
zéro).
Formats de message :
Les messages ICMP sont émis en utilisant l’en-tête IP de base. Le premier octet de la section de données
La diffusion gratuite de ce document ne nécessite pas d’autorisation préalable de l’auteur
130
du datagramme est le champ de type ICMP; Sa valeur détermine le format du reste des données dans le
datagramme ICMP.
ICMP est un protocole qui fonctionne un peu comme TCP, il est surtout utilisé pour la transmission de
messages d’erreurs sur le réseau. Quand un noeud du réseau n’est pas joignable pour une raison x ou y, un
message de ce type sera envoyé à l’émetteur du paquet IP.
Les messages d’erreur ICMP sont transportés sur le réseau sous forme de datagramme, comme n’importe
quelle donnée. Ainsi, les messages d’erreur peuvent eux-mêmes être sujet d’erreurs.
Toutefois en cas d’erreur sur un datagramme transportant un message ICMP, aucun message d’erreur n’est
délivré pour éviter un effet « boule de neige » en cas d’incident sur le réseau.
