Le protocole ICMP

La gestion des erreurs

Le protocole ICMP (Internet Control Message Protocol) est un protocole qui permet de gérer les informations relatives aux erreurs aux machines connectées. Etant donné le peu de contrôles que le protocole IP réalise, il permet non pas de corriger ces erreurs mais de faire part de ces erreurs aux protocoles des couches voisines. Ainsi, le protocole ICMP est utilisé par tous les routeurs, qui l'utilisent pour signaler une erreur (appelé Delivery Problem).

Les messages ICMP sont encapsulés

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.

Voici à quoi ressemble un message ICMP encapsulé dans un datagramme IP :

En-tête Message ICMP
Type(8 bits) Code(8 bits) Checksum(16 bits) Message(taille variable)

Signification des messages ICMP

Type Code Message Signification du message
8 0 Demande d'ECHO Ce message est utilisé lorsqu'on utilise la commande PING. Cette commande, permettant de tester le réseau, envoie un datagramme à un destinataire et lui demande de le restituer
3 0 Destinataire inaccessible Le réseau n'est pas accessible
3 1 Destinataire inaccessible La machine n'est pas accessible
3 2 Destinataire inaccessible Le protocole n'est pas accessible
3 3 Destinataire inaccessible Le port n'est pas accessible
3 4 Destinataire inaccessible Fragmentation nécessaire mais impossible à cause du drapeau (flag) DF
3 5 Destinataire inaccessible Le routage a échoué
3 6 Destinataire inaccessible Réseau inconnu
3 7 Destinataire inaccessible Machine inconnue
3 8 Destinataire inaccessible Machine non connectée au réseau (inutilisé)
3 9 Destinataire inaccessible Communication avec le réseau interdite
3 10 Destinataire inaccessible Communication avec la machine interdite
3 11 Destinataire inaccessible Réseau inaccessible pour ce service
3 12 Destinataire inaccessible Machine inaccessible pour ce service
3 11 Destinataire inaccessible Communication interdite (filtrage)
4 0 Source Quench Le volume de données envoyé est trop important, le routeur envoie ce message pour prévenir qu'il sature afin de demander de réduire la vitesse de transmission
5 0 Redirection pour un hôte Le routeur remarque que la route d'un ordinateur n'est pas optimale et envoie l'adresse du routeur à rajouter dans la table de routage de l'ordinateur
5 1 Redirection pour un hôte et un service donné Le routeur remarque que la route d'un ordinateur n'est pas optimale pour un service donné et envoie l'adresse du routeur à rajouter dans la table de routage de l'ordinateur
5 2 Redirection pour un réseau Le routeur remarque que la route d'un réseau entier n'est pas optimale et envoie l'adresse du routeur à rajouter dans la table de routage des ordinateurs du réseau
5 3 Redirection pour un réseau et un service donné Le routeur remarque que la route d'un réseau entier n'est pas optimale pour un service donné et envoie l'adresse du routeur à rajouter dans la table de routage des ordinateurs du réseau
11 0 Temps dépassé Ce message est envoyé lorsque le temps de vie d'un datagramme est dépassé. L'en-tête du datagramme est renvoyé pour que l'utilisateur sache quel datagramme a été détruit
11 1 Temps de ré-assemblage de fragment dépassé Ce message est envoyé lorsque le temps de ré-assemblage des fragments d'un datagramme est dépassé.
12 0 En-tête erronné Ce message est envoyé lorsqu'un champ d'un en-tête est erronné. La position de l'erreur est retournée
13 0 Timestamp request Une machine demande à une autre son heure et sa date système (universelle)
14 0 Timestamp reply La machine réceptrice donne son heure et sa date système afin que la machine émettrice puisse déterminer le temps de transfert des données
15 0 Demande d'adresse réseau Ce message permet de demander au réseau une adresse IP
16 0 Réponse d'adresse réseau Ce message répond au message précédent
17 0 Demande de masque de sous-réseau Ce message permet de demander au réseau un masque de sous-réseau
18 0 Réponse de masque de sous-réseau Ce message répond au message précédent
17 0 Timestamp reply La machine réceptrice donne son heure et sa date système afin que la machine émettrice puisse déterminer le temps de transfert des données

Plus d'informations

Pour plus d'informations sur le protocole ICMP, le mieux est de se reporter à la RFC 792 expliquant de manière détaillée le protocole :

Cet article est régulièrement mis à jour par des experts sous la
direction de Jean-François Pillou, fondateur de CommentCaMarche.
A voir également
Ce document intitulé « Le protocole ICMP » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.