Vous êtes sur la page 1sur 6

frameip.

com

http://www.frameip.com/entete-icmp/

Entte ICMP par _SebF

1 - Dfinition du protocole
2 - Structure de l'entte
3 - Dfinition des diffrents champs
3.1 - Type et Code
3.1.1 - Type=0,8 - Le Ping
3.1.2 - Type=3 - Destination non valide
3.1.3 - Type=4 - Volume de donne trop importante
3.1.4 - Type=5 - Redirection
3.1.5 - Type=9,10 - dcouverte de routeur
3.1.6 - Type=11 - Temps excd
3.1.7 - Type=12 - Erreur d'entte
3.1.8 - Type=13,14 - Marqueur temporel
3.1.9 - Type=15,16,17,18 - Demande d'information
3.2 - Checksum
3.3 - Identifiant
3.4 - Numro de squence
4 - Discussion autour de la documentation
5 - Suivi du document

1 - Dfinition du protocole
Le protocole ICMP (Internet Control Message Protocol) permet de grer les informations relatives aux
erreurs du protocole IP. Il ne permet pas de corriger ces erreurs, mais d'en informer les diffrents
metteurs des Datagrammes en erreurs. Chaque pile IP, que ce soit des routeurs ou des stations de
travail, grent ICMP par dfaut.
Ce protocole est considr comme faisant partie de l'ensemble des protocoles TCP/IP. Cependant,
contrairement TCP et UDP, il se situe en couche 3 et donc, il est encapsul dans IP. Le mot
"Encapsulation" relate clairement la confusion du placement d'ICMP dans les 7 couches OSI.
Les messages d'erreur ICMP sont transports sur le rseau sous forme de Datagramme, comme
n'importe quelle donne. Ainsi, les messages d'erreurs peuvent eux-mmes tre sujet aux erreurs.
Toutefois, en cas d'erreur sur un message ICMP, aucune trame d'erreur n'est dlivre pour viter un
effet "boule de neige".
Vous trouverez tous les dtails du protocole ICMP dans la Rfc 792.

2 - Structure de l'entte
Voici la structure de l'entte ICMP bas sur 8 octets.

Les deux champs Identifiant et Numro de squence ne sont prsent que dans le cas d'un paquet de
type Ping sinon les champs reste prsent mais en tant que bourrage et donc non utiliss.

3 - Dfinition des diffrents champs


3.1 - Type et Code
Les champs Type et Code sont cods respectivement sur 8 bits ce qui donne un totale de 2 octets. Ils
reprsentent la dfinition de message d'erreur contenu. Voici la liste des principales combinaison entre
les champs Type et Code :
Type Code Description

Rponse une demande d'cho

Rseau inaccessible

Hte inaccessible

Protocole inaccessible

Port inaccessible

Fragmentation ncessaire mais interdite

Echec de routage par la source

Rseau de destination inconnu

Hte de destination inconnue

Machine source isole

Rseau de destination interdit administrativement

10

Hte de destination interdite administrativement

11

Rseau inaccessible pour ce type de service

12

Hte inaccessible pour ce type de service

13

Communication interdite par un filtre

14

Host Precedence Violation

15

Precedence cutoff in efect

Volume de donne trop importante

Redirection pour un hte

Redirection pour un hte et pour un service donn

Redirection pour un rseau

Redirection pour un rseau et pour un service donn

Demande d'cho

Avertissement routeur

10

Sollicitation routeur

11

Dure de vie coule avant d'arrive destination

11

Temps limite de rassemblage du fragment dpass

12

En-tte IP invalide

12

Manque d'une option obligatoire

12

Mauvaise longueur

13

Requte pour un marqueur temporel

14

Rponse pour un marqueur temporel

15

Demande d'adresse rseau

16

Rponse d'adresse rseau

17

Demande de masque de sous rseau

18

Rponse de masque de sous rseau

3.1.1 - Type=0,8 - Le Ping


Le principe du Ping tant, la base, de valider la prsence d'un Hote IP. Pour cela, l'application Ping
utilisera la squence 8-0 afin d'mettre une demande d'cho. Les donnes reues dans un message
d'cho doivent tre rmises dans la rponse. Ainsi, si le message de retour correspond l'mission,
on en dduit que l'Hote est prsent. De plus, on peux en dduire d'autres services, tel que le temps de
rponse, la taille paquet maximum la dure de vie et etc.
L'identificateur et le numro de squence peuvent tre utiliss par l'metteur du message d'cho afin
d'associer facilement l'cho et sa rponse. Par exemple, l'identificateur peut tre utilis comme l'est un
port pour TCP ou UDP, identifiant ainsi une session. Et le numro de squence peut tre incrment
pour chaque message d'cho envoy. L'hte de destination respectera ces deux valeurs pour le retour.

3.1.2 - Type=3 - Destination non valide


Ce type de message est mis dans le cas o un routeur ou un hte ne puisse pas router un paquet.

3.1.3 - Type=4 - Volume de donne trop importante


Un routeur ou hte peut tre amen dtruire un Datagramme s'il manque de mmoire pour bufferiser.
Dans ce cas, le routeur mettra un message destination de la source du Datagramme dtruit, un
paquet ICMP de type 4.
Cela peut ce produire dans un second cas. Quand le Datagramme arrive trop rapidement pour qu'il
puisse tre trait le message ICMP peut donc constituer une demande de diminution de dbit de
transfert.

3.1.4 - Type=5 - Redirection


Ces types de messages sont mis afin d'indiquer que le chemin emprunt n'est pas le bon pour la
destination demand. La rception de ce type de message d'erreur peut tre interprte par la
modification de la table de routage locale. C'est plus communment appel "Icmp Redirect".

3.1.5 - Type=9,10 - dcouverte de routeur


Au dmarrage d'une station, plutt que de configurer manuellement les routes statiques, surtout si elle
sont susceptibles de changer et que le nombre de stations est grands, il peut tre intressant de faire de
la dcouverte automatique de routeurs. Pour cela, il y a deux possibilits. La premire est l'envoi
rgulier de messages ICMP de type 9 "Avertissement routeur" d'annonces de routes par les routeurs.
La seconde possibilit est qu'une station sollicite les routeurs avec un message de type 10 "Sollicitation
routeur".
La dcouverte de routeur n'est pas un protocole de routage, son objectif est bien moins ambitieux , juste
obtenir une route par dfaut.
Vous trouverez tous les dtails du "dcouverte de routeur" dans la Rfc 1256.

3.1.6 - Type=11 - Temps excd


Lorsqu'un routeur traitant un Datagramme est amen mettre jour le champ Dure de Vie de l'en-tte
IP et que ce champ atteint une valeur zro, le Datagramme sera dtruit. Le routeur peut alors envoyer
un message d'erreur "Time To Live expir". Ce message ICMP peux tre mis aussi dans le cas o le
temps de rassemblage expire et le Datagramme ne peux donc tre reconstitu temps.

3.1.7 - Type=12 - Erreur d'entte


Si un routeur rencontre un problme avec un paramtre d'en-tte IP l'empchant de finir son traitement,
le datagramme sera alors dtruit. Un message d'erreur de type 12 sera donc alors mis.

3.1.8 - Type=13,14 - Marqueur temporel


Le but de ce type de message est de s'changer des donnes temporelles pour, par exemple,
synchroniser les horloges.

3.1.9 - Type=15,16,17,18 - Demande d'information


Ce type de message est envoy vers une adresse constitue du numro de rseau dans le champ
source de l'en-tte IP et un champ destinataire 0. La pile IP qui rpondra pourra alors envoyer une
rponse avec les adresses entirement renseignes.

3.2 - Checksum
Le champ Checksum est cod sur 16 bits et reprsente la validit du paquet de la couche 3 ICMP. Pour
pouvoir calculer le Checksum, il faut positionner le champ du checksum a 0. Ce calcul est strictement le
mme que celui du protocole IGMP.

Voici un exemple de fonction permettant le calcul du checksum ICMP.


unsigned short calcul_du_checksum(bool liberation, unsigned short *data, int taille)
{
unsigned long checksum=0;
// ********************************************************
// Complment 1 de la somme des complment 1 sur 16 bits
// ********************************************************
while(taille>1)
{
if (liberation==TRUE)
liberation_du_jeton(); // Rend la main la fentre principale
checksum=checksum+*data++;
taille=taille-sizeof(unsigned short);
}
if(taille)
checksum=checksum+*(unsigned char*)data;
checksum=(checksum>>16)+(checksum&0xffff);
checksum=checksum+(checksum>>16);
return (unsigned short)(~checksum);
}
unsigned short calcul_du_checksum_icmp(bool liberation, struct icmp icmp_tampon,char
data_tampon[65535])
{
char tampon[65535];
unsigned short checksum;
// ********************************************************
// Initialisation du checksum
// ********************************************************
icmp_tampon.checksum=0; // Doit tre 0 pour le calcul
// ********************************************************
// Calcul du ICMP
// ********************************************************
memcpy(tampon,(unsigned short *)&icmp_tampon,sizeof(struct icmp));
memcpy(tampon+sizeof(struct icmp),data_tampon,strlen(data_tampon));
checksum=calcul_du_checksum(liberation,(unsigned short*)tampon,sizeof(struct
icmp)+strlen(data_tampon));
return(checksum);
}

3.3 - Identifiant
Le champ identifiant est cod sur 16 bits et dfinit l'identifiant de l'metteur. Pour cela, il est conseill
d'assigner le numro du processus assign (PID) l'application lors de l'excution. Cela permet de le
rendre unique inter application. Cela ressemble beaucoup aux numros de port pour les protocole TCP
et UDP.

3.4 - Numro de squence


Le champ Squence est cod sur 16 bits et permet au rcepteur, d'identifier si il manque un paquet. Le
plus classique tant une incrmentation linaire de 1. Ainsi, si le rcepteur reoit la squence 1 puis 3, il
peut en dterminer une perte d'un paquet. Nanmoins, ce n'est pas normalis, donc personne n' la
garantie que l'metteur utilisera cette mthode. Cela peut aussi permettre l'metteur d'envoyer
multiples paquets et de pouvoir distinguer les retours.

4 - Discussion autour de la documentation

Vous pouvez poser toutes vos questions, vos remarques et vos expriences propos de l'entte ICMP.
Pour cela, rendez-vous sur le Forum "TCP-IP".

5 - Suivi du document
Version 1.1, le 06 novembre 2007, par Julien LEGRAND, correction du chapitre 3.1 sur le code 0
"rponse une demande d'cho"
Version 1.0, le 20 septembre 2003, par Sbastien FONTAINE, cration du document.

mot cl : protocol icmp i c m p voip transport ip ipv4 rfc 1256 ipv6 rfc 792
datagramme icmp icmp protocole icmp pile vpn datatgrame icmp resolution icmp
sequence entete icmp boule de neige encapsulation echo tcpip
Copyright 2011-2015 FrameIP TcpIP. Tous droits rservs. Les marques et marques commerciales
mentionnes appartiennent leurs propritaires respectifs. L'utilisation de ce site Web TcpIP implique
l'acceptation des conditions d'utilisation et du rglement sur le respect de la vie prive.
Scurit entreprise Tlphonie entreprise Expert de votre Infrastructure Test ADSL Serinya Operateur
Telecom

Google Adsense