Il existe de nombreux équipements réseau qui communiquent entre eux.
Mais comment notifier d’un problème de connexion, de transmissions de données ou encore la nécessité d’utiliser tel ou tel chemin pour se connecter à un équipement réseau.
C’est là que le protocole ICMP (Internet message protocol) entre en jeu grâce à la possibilité d’envoyer des messages.
Avec TCP et UDP, le protocole ICMP est l’un des protocoles fondamentaux qui permet à un réseau de fonctionner.
Dans ce tutoriel, je vous explique ce qu’est ICMP, comment il fonctionne, la liste des messages ICMP et la structure d’un paquet et datagramme.
Table des matières
Qu’est ce que le protocole ICMP
ICMP est un protocole de niveau réseau (couche 3 du modèle OSI).
ICMP signifie Internet message protocol et comme son nom l’indique est un protocole axé message.
Les périphériques d’un réseau utilisent les messages ICMP pour communiquer les problèmes de transmission de données.
Il est donc utilisé pour transmettre des informations sur les problèmes de connectivité du réseau à la source de la transmission compromise. Il envoie des messages de contrôle tels que “destination network unreachable”, “source route failed” et “source quench”.
Par exemple :
- Annoncer les erreurs de réseau : par exemple, un hôte ou une partition entière du réseau est inaccessible, en raison d’une défaillance quelconque. Un paquet TCP ou UDP dirigé vers un numéro de port sans récepteur attaché est également signalé par ICMP
- Annoncer l’encombrement du réseau : lorsqu’un routeur commence à recevoir trop de paquets, en raison d’une incapacité à les transmettre aussi vite qu’ils sont reçus, il génère des messages ICMP Source Quench. Dirigés vers l’expéditeur, ces messages devraient entraîner un ralentissement du rythme de transmission des paquets
Pour cela, l’une des principales façons dont ICMP est utilisé est de déterminer si les données arrivent à destination et au bon moment. L’ICMP est donc un aspect important du processus de signalement des erreurs et des tests visant à déterminer si un réseau transmet bien les données.
ICMP est utilisé aussi par les outils tels que ping et traceroute.
- Ping s’appuie sur le message 0 (ICMP Echo) pour vérifier si un hôte est en ligne par sa réponse. Cela permet de vérifier la vitesse de réponse : La latence.
- Traceroute s’appuie sur le TTL, lorsque ce dernier atteint 0, un message ICMP est envoyé. Traceroute analyse ces retours pour générer le chemin ou carte de la connexion
Quelles sont les messages d’erreur d’ICMP ?
Liste des codes erreurs et messages d’erreur
Type | Code | Description | ||
3 | 0-15 | Destination unreachable | Notification d’un paquet qui ne peut être transmis. Ce dernier est abandonné. Le champs du code fournit une explication. | |
5 | 0-3 | Redirect | Informe d’une route alternative pour le datagramme et devrait entraîner une mise à jour de la table de routage. Le champ code explique la raison du changement de route. | |
11 | 0,1 | Time excedeed | Envoyé lorsque le champ TTL a atteint zéro (code 0) ou lorsqu’il y a un délai d’attente pour le réassemblage des segments (code 1). | |
12 | 0,11 | Parameter Problem | Envoyé lorsque l’en-tête IP est invalide (code 0) ou lorsqu’une option de l’en-tête IP est manquante (code 1). |
Le type Destination unreachable
Ce type a pour but d’annoncer les erreurs de réseau lorsqu’un équipement réseau ne parvient pas à communiquer avec un autre.
Voici les codes erreurs et messages d’erreur pour le type Destination unreachable (Code 3).
Code erreur | Message ICMP | |
0 | Destination network unreachable | |
1 | Destination host unreachable | |
2 | Destination protocol unreachable | |
3 | Destination port unreachable | |
4 | Fragmentation required, and DF flag set | |
5 | Source route failed | |
6 | Destination network unknown | |
7 | Destination host unknown | |
8 | Source host isolated | |
9 | Network administratively prohibited | |
10 | Host administratively prohibited | |
11 | Network unreachable for ToS | |
12 | Host unreachable for ToS | |
13 | Communication administratively prohibited | |
14 | Host Precedence Violation | |
15 | Precedence cutoff in effect |
Message d’erreur | Description |
Destination Unreachable | Ce message est généré lorsqu’un paquet de données ne peut atteindre sa destination finale pour une autre raison. Par exemple, il peut y avoir des défaillances matérielles, des défaillances de port, des déconnexions de réseau, etc. |
Redirection Error | Ce message est généré lorsque l’ordinateur source (tel que le PDC) demande que le flux de paquets de données soit envoyé sur une autre route que celle prévue à l’origine. Cela est souvent fait afin d’optimiser le trafic réseau, en particulier s’il existe un autre moyen pour que les paquets de données atteignent leur destination en moins de temps. Cela implique la mise à jour des tables de routage dans les routeurs associés concernés. |
Source Quench | Il s’agit d’un message généré par l’ordinateur source pour réduire ou diminuer le flux de trafic réseau envoyé à l’ordinateur de destination. En d’autres termes, le PDC détecte que le taux de transmission des paquets de données est trop élevé et qu’il doit ralentir afin de s’assurer que l’ordinateur de destination reçoit tous les paquets de données qu’il est censé recevoir |
Time Exceeded | : Il s’agit du même événement que le Time to Live (TTL) basé sur le réseau |
Le type redirect Message
Ce type est utiliser par des routeurs pour informer d’une route alternative pour le datagramme.
Il est est conçu pour informer un hôte d’un itinéraire plus optimal à travers un réseau, ce qui peut induire une une mise à jour de la table de routage.
Code erreur | Message ICMP | |
0 | Redirect Datagram for the Network | |
1 | Redirect Datagram for the Host | |
2 | Redirect Datagram for the ToS & network | |
3 | Redirect Datagram for the ToS & host |
Le type Time Exceeded
Le message ICMP – Time exceeded est généré lorsque la passerelle qui traite le datagramme (ou le paquet, selon la façon dont vous le regardez) constate que le champ Time To Live (ce champ se trouve dans l’en-tête IP de tous les paquets) est égal à zéro et doit donc être éliminé. Cette même passerelle peut également notifier l’hôte source via le message de dépassement de temps.
Le terme “fragment” signifie “couper en morceaux”. Lorsque les données sont trop volumineuses pour tenir dans un seul paquet, elles sont découpées en petits morceaux et envoyées à la destination. À l’autre bout, l’hôte de destination recevra les morceaux fragmentés et les rassemblera pour créer le gros paquet de données original qui a été fragmenté à la source.
A lire : La fragmentation des paquets IP : tout savoir
Code erreur | Message ICMP | |
0 | TTL expired in transit | |
1 | Fragment reassembly time exceeded |
Le type Parameter Problem
Les messages ICMP Parameter Problem sont utilisés pour indiquer qu’un hôte ou un routeur n’a pas pu interpréter un paramètre invalide dans un en-tête de datagramme IPv4.
Lorsqu’un hôte ou un routeur du réseau trouve un mauvais paramètre dans un en-tête de datagramme IPv4, il abandonne le paquet et envoie un message ICMP Parameter Problem à l’expéditeur d’origine.
Le message ICMP Parameter Problem comporte également une option pour un pointeur spécial afin d’informer l’expéditeur de l’endroit où l’erreur s’est produite dans l’en-tête IPv4 original.
Code erreur | Message ICMP | |
0 | Pointer indicates the error | |
1 | Missing a required option | |
2 | Bad length |
Quelle est la structure d’un paquet ICMP (Datagramme)
Il utilise une structure de paquet de données avec un en-tête de 8 octets et une section de données de taille variable.
Voici un description des champs de l’en-tête ICMP (header) :
- Type : Le type de message ICMP
- Code : Sous-type du message ICMP
- Somme de contrôle : Similaire à la somme de contrôle de l’en-tête IP. La somme de contrôle est calculée en fonction du message ICMP entier
- Reste de l’en-tête : Données additionnelles qui peuvent être à zéro si aucune
Les messages d’erreur ICMP contiennent une section de données qui comprend une copie de l’intégralité de l’en-tête IPv4, plus au moins les huit premiers octets de données du paquet IPv4 à l’origine du message d’erreur.
La longueur des messages d’erreur ICMP ne doit pas dépasser 576 octets.
Ces données sont utilisées par l’hôte pour faire correspondre le message au processus approprié. Si un protocole de niveau supérieur utilise des numéros de port, ils sont supposés se trouver dans les huit premiers octets des données du datagramme original[6].
Les attaques par ICMP
Il existe des détournements du protocole ICMP afin de mener des attaques.
Voici quelques exemples.
Le type Time Exceeded peut être utilisé de manière malveillante pour des attaques visant à rediriger le trafic vers un système spécifique. Dans ce type d’attaque, le pirate, se faisant passer pour un routeur, envoie un message de redirection ICMP (Internet Control Message Protocol) à un hôte, qui indique que tout le trafic futur doit être dirigé vers un système spécifique en tant que route plus optimale pour la destination.
Un IDS peut être utilisé pour avertir lorsque ces messages de redirection ICMP se produisent ou pour qu’il les ignore.
Puis on trouve les attaques DoS et ICMP flood :
Ping of the death : Cette attaque vise à exploiter la taille variable de la section des données du paquet ICMP.
Dans le “Ping of death”, les paquets ICMP volumineux ou fragmentés sont utilisés pour des attaques par déni de service. Les données ICMP peuvent également être utilisées pour créer des canaux secrets de communication. Ces canaux sont connus sous le nom de tunnels ICMP.
Smurf attack : L’attaquant transmet un paquet ICMP dont l’adresse IP est usurpée ou falsifiée. Lorsque l’équipement du réseau répond, chaque réponse est envoyée à l’adresse IP usurpée, et la cible est inondée d’une tonne de paquets ICMP. Ce type d’attaque n’est généralement un problème que pour les équipements anciens.
Twinge Attack : Cette attaque est similaire à l’attaque Ping Flood, mais les demandes d’écho ICMP ne proviennent pas d’un seul ordinateur, mais de plusieurs. Elles comportent également une fausse adresse IP source dans l’en-tête du paquet de données.
En lien, vous pouvez lire :
Liens
- Protocole TCP, UDP, ICMP : fonctionnement et différences
- Le protocole TCP/IP : définition, architecture et couches
- L’établissement d’une connexion TCP/IP
- ICMP (Internet message protocol) : définition, fonctionnement du protocole
- UDP (User Datagram Protocol) : définition, structure du protocole
- Qu’est-ce que l’adresse IP ?
- La fragmentation des paquets IP : tout savoir
- Qu’est-ce que le MTU et MSS et comment l’optimiser
- Qu’est-ce que le routage IP et les types de routage
- Les couches du modèle OSI pour les nuls
- Les réseaux informatiques – le dossier