Internet Control Message Protocol

Internet Control Message Protocol est l’un des protocoles fondamentaux constituant la suite des protocoles Internet. Il est utilisé pour véhiculer des messages de contrôle et d’erreur pour cette suite de protocoles, par exemple lorsqu’un service ou un hôte est inaccessible.

Pour les articles homonymes, voir ICMP.

ICMP se situe au même niveau que le protocole IP bien qu’il ne fournisse pas les primitives de service habituellement associées à un protocole de couche réseau. Son utilisation est habituellement transparente du point de vue des applications et des utilisateurs présents sur les réseaux.

Cet article traite d’ICMP version 4 qui accompagne IPv4. La version 6 du protocole est présentée dans l’article Internet Control Message Protocol V6.

Présentation

ICMP (Internet Control Message Protocol - Protocole de message de contrôle sur Internet) est un protocole de niveau 3 sur le modèle OSI, qui permet le contrôle des erreurs de transmission. En effet, comme le protocole IP ne gère que le transport des paquets et ne permet pas l'envoi de messages d'erreur, c'est grâce à ce protocole qu'une machine émettrice peut savoir qu'il y a eu un incident de réseau. Il est détaillé dans la RFC 792[1].

Format d'un paquet Internet Control Message Protocol

Bien qu'il soit à un niveau équivalent au protocole IP (si l'on tente de rapprocher le modèle OSI au modèle TCP/IP), un paquet ICMP est néanmoins encapsulé dans un datagramme IP. Dans le cadre de l'IPv4, la forme générale d'un tel paquet est la suivante :

Bit 0 - 7 Bit 8 - 15 Bit 16 - 23 Bit 24 - 31
Version/IHL Type de service Longueur totale
Identification (fragmentation) flags et offset (fragmentation)
Durée de vie(TTL) Protocole Somme de contrôle de l'en-tête
Adresse IP source
Adresse IP destination
Type de message Code Somme de contrôle
Bourrage ou données
Données (optionnel et de longueur variable)


Un tel datagramme est composé :

  • d'un en-tête IP (en bleu), avec Protocole valant 1 et Type de Service valant 0.
  • du type de message ICMP (8 bits)
  • du code de l'erreur (8 bits)
  • d'une somme de contrôle (16 bits), calculée sur la partie spécifique à ICMP (sans l'en-tête IP)
  • d'une partie aménagée pour des données relatives aux différents types de réponses (32 bits), si elle n'est pas utilisée, on procède à un bourrage (cette partie peut correspondre aux Identifiant et Numéro de séquence pour un paquet de type Ping par exemple, pour plus d'informations se référer à la RFC RFC 792[1] [2])
  • du message

Les différents incidents possibles sont reportés ci-dessous, avec le code d'erreur correspondant.

Les différents types

Type de message ICMP
TypeCodeDescription
0 - Réponse d'echo 0Réponse d'ECHO (Réponse au message de type 8)
1 et 2 - Réservés Reservés
3 – Destinataire inaccessible 0Le réseau n'est pas accessible
1La machine n'est pas accessible
2Le protocole n'est pas accessible
3Le port n'est pas accessible
4Fragmentation nécessaire mais impossible à cause du drapeau (flag) DF
5Le routage a échoué
6Réseau inconnu
7Machine inconnue
8Machine non connectée au réseau (inutilisé)
9Communication avec le réseau interdite
10Communication avec la machine interdite
11Réseau inaccessible pour ce service
12Machine inaccessible pour ce service
13Communication interdite (filtrage)
14Priorité d'hôte violé
15Limite de priorité atteinte
4 – Extinction de la source 0Extinction de la source (source quench)
5 – Redirection 0Redirection pour un hôte
1Redirection pour un hôte et un service
2Redirection pour un réseau
3Redirection pour un réseau et un service
8 – Demande d'echo 0Demande d'ECHO (utilisé par la commande ping)
11 – Temps dépassé 0Temps de vie du datagramme dépassé
1Temps de ré-assemblage des fragments du datagramme dépassé
12 – En-tête erroné 0Le pointeur indique l'erreur
1Absence d'une option obligatoire
2Mauvaise longueur
13 – Demande heure 0Timestamp request
14 – Réponse heure 0Timestamp reply
15 – Demande adresse IP 0Demande d'adresse réseau
16 – Réponse adresse IP 0Réponse d'adresse réseau
17 – Demande masque sous-réseau 0Demande de masque de sous-réseau
18 – Réponse masque sous-réseau 0Réponse de masque de sous-réseau

Signification du type 4 (extinction de la source)

Un routeur de transit ou la machine d'extrémité demande à l'émetteur de ralentir le rythme des envois de trame. Les routeurs de transit stockent les trames reçues dans un buffer avant de les router (store and forward). Si ce buffer venait à être plein ou si la charge CPU du routeur dépassait un seuil (ou toute autre motif de congestion) il ne pourrait plus assumer le routage des paquets à venir. Ils seraient alors perdus silencieusement. Afin que cela ne se produise pas n'importe quel nœud de transit peut ainsi informer l'émetteur de ralentir la cadence. Et cela pour n'importe quel protocole de la couche 4 (UDP, TCP…).

NB : Ce n'est pas redondant avec le mécanisme d'annonce de la taille de la fenêtre glissante d'une connexion TCP car cette dernière ne peut être contrôlée que par le destinataire (sauf proxification) or ici il s'agit des routeurs de transit.

Ce type de message a été rendu obsolète par la RFC 6633[3] en 2012.

Signification du type 5 (redirection)

Le routeur remarque que la route qu'a choisie l'ordinateur émetteur n'est pas optimale car le prochain routeur à passer pour atteindre le destinataire se trouve sur le même réseau que celui de l'ordinateur émetteur. Le routeur envoie l'adresse du prochain routeur à ajouter dans la table de routage de l'ordinateur émetteur de façon que le prochain envoi vers le même destinataire ne passe pas inutilement par lui. Cette option est souvent bloquée dans les réseaux des entreprises parce qu'elle peut être utilisée par un attaquant pour rediriger le flux de données d'une victime vers sa propre machine.

Failles dans le protocole ICMP

Il existe plusieurs attaques connues contre ICMP[4],[5],[6]. Parmi elles, on peut citer :

  • ICMP Sweep : En envoyant une série de requêtes ICMP sur un réseau, il est possible d'analyser les réponses et en déduire la structure ;
  • ICMP Redirect: Les messages ICMP de type 5 (redirection) peuvent être utilisés de manière malhonnête pour traverser un pare-feu. L'attaque consiste à faire passer un ordinateur par un chemin détourné qui va éviter le pare-feu. La solution consiste à configurer l'ordinateur pour ignorer ce genre de message.
  • Les messages ICMP de type 3 pour les codes 2 ou 3 (voire 4) peuvent clore une connexion TCP;
  • Un envoi répété de message ICMP de type 4 (code 0) ralentit grandement le débit d'une connexion;
  • Le message ICMP de type 3 pour le code 4 ralentit une connexion en passant le MTU au minimum (68 octets) puis en l'augmentant progressivement.

Notes et références

  1. (en) Request for comments no 792.
  2. Internet Control Message Protocol
  3. (en) « Deprecation of ICMP Source Quench Messages », Request for comments no 6633, .
  4. « ICMP Attacks Illustrated », sur www.sans.org, (consulté le )
  5. Madalina Baltatu, Antonio Lioy, Fabio Maino et Daniele Mazzocchi, « Security issues in control, management and routing protocols », Computer Networks, pioneering Tomorrow's Internet: Selected papers from the TARENA Networking Conference 2000, vol. 34, , p. 881-894 (DOI 10.1016/S1389-1286(00)00159-6, lire en ligne, consulté le )
  6. OpenBSD KernelTrap article

Voir aussi

Article connexe

Liens externes

  • Portail de l’informatique
  • Portail des télécommunications
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.