ICMP - Internet Control Message Protocol
ICMP Introduction : ICMP est le protocole de contrôle des erreurs de IP Il permet aussi d’administrer sommairement les réseaux IP ICMP est très lié à IP Les messages ICMP sont véhiculés dans des datagrammes IP
ICMP Dans un système d'acheminement de paquets comme IP, les datagrammes véhiculés de routeurs en routeurs, peuvent se perdre entre l'émetteur et le récepteur Cela peut survenir lorsqu'un routeur fait transiter un nombre de paquets supérieur à sa capacité de traitement Ce qui ne rentre pas dans son tampon de réception est donc détruit On appelle cette situation « encombrement de réseau » (en anglais: network congestion)
ICMP Un routeur qui traite un paquet IP et qui ne parvient pas à le retransmettre vers le routeur suivant devra détruire le datagramme Lorsqu’un routeur doit faire parvenir un datagramme au coupleur réseau d’un ordinateur éteint à ce moment précis, devra également détruire celui-ci Le protocole ICMP permettra, dans ces situations, de constituer des messages d’informations pour avertir les applications concernées
ICMP Ni l'expéditeur initial, ni les routeurs que le paquet a jusqu'à présent croisés sur son chemin ne peuvent prédire qu'un paquet sera ou pas abandonné ultérieurement Si un paquet est perdu à n'importe quel moment entre deux routeurs il faut considérer que le paquet devra être réémis Si un routeur abandonne un paquet, pour une raison ou pour une autre, il en informera l'expéditeur
ICMP Le protocole ICMP aura pour rôle principal d’informer l’émetteur d’un problème survenu à un datagramme, dans un réseau considéré « peu sûr » ICMP se positionne au même niveau que le protocole IP avec lequel il est étroitement lié ICMP est un protocole utilisé par les serveurs hôtes et les routeurs pour s'informer réciproquement des perturbations de fonctionnement et de tous les événements ayant trait à la transmission de paquets IP
ICMP Structure et envoi de messages ICMP : Les messages ICMP sont emportés comme données de datagrammes IP dont le champ protocole vaudra 0x01 Les messages ICMP ne remontent pas jusqu'aux applications exécutées sur le système émetteur Ce qui se passe au niveau ICMP reste transparent aux applications
ICMP ICMP est constitué d’une vingtaine de messages différents Chacun possède une structure particulière Tous ces messages possèdent un en-tête commun de trois champs suivi des données ICMP Les différents messages ICMP sont identifiés grâce à un champ TYPE de 8 bits suivi d’un champ CODE sur 8 bits permettant d’affiner la nature du message Une somme de contrôle est prévue pour tous les messages ICMP
ICMP
ICMP Champs du message ICMP : Type (8 bits) Identifie chaque message Code (8 bits) Permet la ventilation ultérieure de messages Checksum (16 bits) Somme de contrôle de tous les mots dans le paquet ICMP
ICMP Comme pour les datagrammes IP, la somme de contrôle est constituée en additionnant tous les mots (unités 16 bits) du message ICMP Le contenu du champ de la somme de contrôle est considéré à 0 pour l'addition Il en résulte une valeur sur 16 bits dont le complément unitaire est alors stocké dans le champ CHECKSUM de l'en-tête du message ICMP
ICMP Le champ Type décide du traitement ultérieur du message ICMP Ceux définis jusqu'à présent se rangent en trois catégories : Messages d'erreur ICMP Requêtes ICMP Informations d'état ICMP
ICMP En général, juste après le checksum ICMP, apparaît le début du datagramme initial qui a généré l’erreur Dans le message ICMP, ni l'émetteur ni le récepteur du paquet ne sont nommés Ceci ne s'avère en effet pas nécessaire car l'en-tête IP placé au tout début du message ICMP contient déjà cette information, sous la forme de l'adresse IP de l'expéditeur et du destinataire
ICMP Type ICMP Message ICMP Signification Défini dans Echo Reply Echo Reply Réponse à une demande Echo RFC 792 3 Destination Unreachable Le paquet lP n'a pu être distribué (la cible ne peut être atteinte) 4 Source Quench Paquet IP non distribué pour cause d'embouteillage sur le réseau 5 Redirect Demande de déviation des paquets IP sur un autre routeur 8 Echo Demande à un serveur hôte de renvoyer un Echo Reply 9 Router Advertisement Le routeur fait connaître son adresse lP (pour les serveurs hôtes auxquels manque cette information) RFC 1256 10 Router Solicitation Demande à ce qu'un serveur hôte envoie des Router Advertisements 11 Time Exceeded La durée de vie d'un paquet IP est terminée 12 Parameter Problem Valeur erronée dans un champ de l'en-tête lP 13 Timestamp Demande de l'heure par un serveur hôte 14 Timestamp Reply _ Réponse à une demande d'heure 15 Information Request Demande de l'actuel numéro de réseau 16 Information Reply Réponse de Information Request 17 Address Mask Request Déterminer le masque de sous-réseau pour le réseau local actuel RFC 950 18 Address Mask RepIy Réponse à Address Mask Request
ICMP Outre les informations spécifiques aux messages, les messages ICMP de signal d'erreur contiennent toujours une partie du datagramme IP à l’origine du problème Ceci correspond aux cinq mots longs de l'en-tête IP et aux huit premiers octets de la partie de données du datagramme Cela doit offrir au récepteur du message la possibilité de reconnaître le paquet IP « perdu », afin de mettre en oeuvre éventuellement une retransmission si cela s'avère possible
ICMP Le datagramme contenant le message ICMP est envoyé à l’émetteur d’origine Il n’est pas envoyé au routeur précédent, ni à la destination Le message d’erreur peut se perdre et dans ce cas, les protocoles de couches supérieures devront gérer le problème
ICMP Dans certaines situations, il n'y a pas d’envoi de messages ICMP : Quand le datagramme contient un message ICMP Quand le datagramme est broadcast ou multicast Quand le datagramme est un fragment Ceci permet d’éviter la congestion du réseau
ICMP Les messages ICMP les plus importants : Destination Unreachable (message ICMP 3) Ce message est le plus courant sur l’Internet Il est généré lorsqu’un datagramme ne parvient pas à destination, en terme de réseau, d’hôte ou de service Le sous-code permet d’affiner la raison de l’erreur
ICMP
ICMP Type Message Signification Net Unreachable Net Unreachable Le réseau cible ne peut être atteint 1 Host Unreachable L'hôte cible ne peut être atteint 2 Protocol Unreachable Le protocole souhaité n'est pas disponible sur le serveur hôte cible 3 Port Unreachable Le port cité sur le serveur hôte n'est pas disponible 4 Fragmentation Needed and Don't Fragment was Set Le paquet IP a dû être fragmenté en raison de son importance, ce que l'expéditeur a toutefois interdit via le drapeau DF 5 Source Route Failed La route proposée dans le paquet IP en tant qu'option n'a pu être suivie 6 Destination Network Unknown Réseau cible inconnu 7 Destination Host Unknown Serveur hôte cible inconnu (ce qui n'est pas le cas du réseau cible) 8 Source Host lsolated Pas de passage pour le serveur hôte cible 9 Communication with Destination Network is Administratively Prohibited Accès au réseau cible interdit (protection d'accès au moyen d'un firewall sur les pages du destinataire) 10 Communication with Destination Host is Administratively Prohibited Accès au serveur hôte cible interdit (protection d'accès au moyen d'un firewall sur les pages du destinataire) 11 Destination Network unreachable for Type of Service Le réseau cible ne peut être atteint avec le TOS (Type of Service) indiqué 12 Destination Host unreachable for Type of Service Le serveur hôte cible ne peut être atteint avec le TOS indiqué
ICMP Source Quench (message ICMP 4) Ce message ICMP est généré lorsqu'un embouteillage se produit au niveau du routeur ou du serveur hôte cible Il n'est pas divisé en sous-codes individuels Il doit amener l'expéditeur d'un paquet IP à réduire le débit de transmission vers le destinataire souhaité, afin de faire baisser le flux des données
ICMP
ICMP Time Exceeded (message ICMP 11) Ce message signale un dépassement de temps ayant provoqué l'abandon d'un paquet IP Le compteur Time-To-Live (TTL) dans l'en-tête d'un paquet IP est dépassé (sous-code ICMP = 0) Les fragments d'un paquet IP n'ont pu être assemblés (sous-code ICMP = 1) dans le délai imparti Dès qu'un premier fragment d'un paquet IP est rencontré, un routeur place un compteur Time Out en attendant la réception des autres fragments
ICMP
ICMP Les requêtes de statut ICMP les plus importantes : Couples de messages ICMP Signification Echo(8) - Echo Reply(0) Permet de demander si un serveur hôte particulier peut être atteint et délivre indirectement des informations sur les délais de circulation des paquets sur cette distance Timestamp(13) - Timestamp Reply(14) Sert à la synchronisation de l'heure entre deux stations Address Mask Request(17) - Address Mask Reply(18) Donne à une station la possibilité de trouver les masques de sous-réseau de toutes les stations dans le réseau courant
ICMP Coordination requête-réponse Il y a deux champs Identifier Number et Sequence Number Ils apparaissent aussi bien dans une demande de statut que dans sa réponse Ils contiennent deux nombres sur 16 bits dont le rôle est d'aider à relier les questions posées à leurs réponses
ICMP Il s'agit là d'une fonction importante dès lors que plusieurs demandes de statut sont envoyées en même temps sur le réseau à partir d'un serveur hôte La source prend la valeur SequenceNumber du message et la mémorise en interne Dès qu'une réponse ICMP arrive, il peut relier le message à la demande précédente grâce à l'Identifier renvoyé
ICMP
ICMP Ping Echo Request et Echo Reply sont utilisés très souvent sur l'Internet Le programme PING permet à l’aide de ces messges, de déterminer la possibilité d'atteindre un serveur hôte et les temps de parcours des paquets sur la distance
ICMP Dans certains cas, le message Echo Reply attendu n'arrive pas et il est remplacé par le message ICMP 3 Destination Unreachable Une réponse Echo Reply confirme le fonctionnement correct du système TCP/IP sur toute la distance Une absence de réponse n’assure pas du contraire, en cas de firewall, par exemple
ICMP Synchronisation d'horloges La synchronisation du temps est un sujet essentiel dans toutes les technologies de réseau, qu'il s'agisse de l'Internet ou d'Ethernet local Lorsque plusieurs stations travaillent ensemble et veulent accorder leurs activités, il est nécessaire de pouvoir régler leurs horloges Internet reconnaît toute une série d'outils et de protocoles servant à la synchronisation de l'heure Les deux messages Timestamp Request et Timestamp Reply représentent les plus simples d'entre eux
ICMP L'initiateur envoie tout d'abord le message ICMP Timestamp au serveur hôte dont il aimerait recevoir des renseignements relatifs à l'heure Dans le message, il indique son heure actuelle en plus de l 'identifier habituel qui accompagne le Sequence Number Il effectue ceci au format Internet établi pour l'heure universelle en valeur 32 bits
ICMP Le serveur hôte situé à l'autre bout de l’écgange réceptionne le message, remplace simplement le code du message ICMP de Timestamp (13) par le message de Timestamp Reply (14) et enregistre sa propre heure dans le champ Receive Timestamp Ceci s'exécute immédiatement à l'arrivée du paquet Lorsqu'il quitte ensuite le serveur hôte pour revenir à l'initiateur, l'heure s'inscrit de nouveau dans le message, mais cette fois dans le champ Transmit Timestamp
ICMP Dès que le message ICMP de Timestamp Reply arrive à l'initiateur de la requête, ce dernier dispose de quatre indications horaires (la quatrième étant l'heure de réception du message Timestamp Reply) Grâce à ces données, il peut non seulement évaluer le temps de parcours du paquet jusqu'au site correspondant, mais également mesurer l'écart entre son horloge et celle du correspondant Un certain degré d’erreur non négligeable est à déplorer
ICMP
ICMP Routage A l'aide de ce message ICMP, un routeur peut faire connaître à un serveur hôte un meilleur routeur pour faire parvenir des paquets IP sur un réseau cible déterminé Le message Redirect avec le code ICMP 5 pourra être expédié qui ira modifier la table de routage d’un hôte, pour signifier une route alternative
ICMP
ICMP Spécifications ICMP et informations dans les RFC : RFC 792 Internet Control Message Protocol. J. Postel, 1981 : le document ICMP initial, dans lequel le mécanisme ICMP et les messages ICMP sont décrits de 0 à 16. RFC 950 Internet Standard Subnetting Procedure. j. Mogul & J. Postel, 1985: décrit le travail avec des masques de sous-réseau ainsi que les modifications concernant les routeurs et les serveurs hôtes qu'il faut effectuer pour l'utilisation de sous-réseaux. RFC 1122 Requirements for Internet Hosts - Communication Layers. R. Braden, 1989:compléments et éclaircissements sur de nombreuses questions de détail des protocoles réseau et Data Link Layer, également pour ICMP. RFC 1256 ICMP Router Discovery Messages. S. Deering, 1991: décrit un mécanisme par lequel des serveurs hôtes peuvent apprendre l'adresse IP du prochain routeur via ICMP.