Vous êtes sur la page 1sur 6

16/7/2014 Entte du protocole IP

http://www.frameip.com/entete-ip/ 1/6
Entte IP
par Sbastien FONTAINE (_SebF)
1 - Dfinition du protocole
2 - Structure de l'entte
3 - Dfinition des diffrents champs
3.1 - Vers
3.2 - IHL
3.3 - Service
3.4 - Longueur totale
3.5 - Identification
3.6 - Flags
3.7 - Position fragment
3.8 - TTL
3.9 - Protocole
3.10 - Checksum
3.11 - Adresse IP source
3.12 - Adresse IP destination
3.13 - Options
3.14 - Bourrage
4 - Discussion autour de la documentation
5 - Suivi du document
1 - Dfinition du protocole IP
IP signifie "Internet Protocol", protocole Internet. Il reprsente le protocole rseau le plus rpandu. Il permet de
dcouper l'information transmettre en paquets, de les adresser, de les transporter indpendamment les uns des
autres et de recomposer le message initial l'arrive. Ce protocole utilise ainsi une technique dite de commutation
de paquets. Il apporte, en comparaison Ipx/Spx et Netbeui, l'adressage en couche 3 qui permet, par exemple, la
fonction principale de routage.
Il est souvent associ un protocole de contrle de la transmission des donnes appel TCP, on parle ainsi du
protocole TCP/IP. Cependant, TCP/IP est un ensemble de protocole dont voici les plus connu.
- IP - Internet Protocol - Couche 3 - IP natif.
- ARP - Address Resolution Protocol - Couche 3 - Rsolution d'adresse IP en adresse MAC.
- RARP - Reverse Address Resolution Protocol - Couche 3 - Rsolution d'adresse MAC en adresse IP.
- ICMP - Internet Control Message Protocol - Couche 3 - Gestion des messages du protocole IP.
- IGMP - Internet Group Management Protocol - Couche 3 - Protocole de gestion de groupe.
- TCP - Transmission Control Protocol - Couche 4 - Transport en mode connect.
- UDP - User Datagram Protocol - Couche 4 - Transport en mode non connect.
Vous trouverez tous les dtails du protocole IP dans la Rfc 791.
2 - Structure de l'entte
Voici la structure de l'entte IP bas sur 20 octets.
Voici le complment de l'entte IP qui est optionnel bas sur 4 octets.
16/7/2014 Entte du protocole IP
http://www.frameip.com/entete-ip/ 2/6
3 - Dfinition des diffrents champs
3.1 - Le champ Vers
Le champ version est cod sur 4 bits. Il reprsente le numro de version du protocole IP. Il permet aux piles IP
rceptionnant la trame de vrifier le format et d'interprter correctement la suite du paquet. C'est d'ailleurs pour
cette raison qu'il est plac au dbut, une version inconnue par un quipement conduit au rejet direct.
Voici la liste des diffrent codes.
- 00 - Rserv
- 01 - Non assign
- 02 - Non assign
- 03 - Non assign
- 04 - IP V4
- 05 - ST Datagram Mode
- 06 - IP V6
- 07 - Non assign
- 08 - Non assign
- 09 - Non assign
- 10 - Non assign
- 11 - Non assign
- 12 - Non assign
- 13 - Non assign
- 14 - Non assign
- 15 - Rserv
3.2 - IHL
IHL signifie "Internet header lengh". ce champ est cod sur 4 bits et reprsente la longueur en mots de 32 bits
de l'entte IP. Par dfaut, il est gal 5 (20 octets), cependant, avec les options de l'entte IP, il peut tre
compris entre 6 et 15.
Le fait que le codage soit sur 4 bits, la taille maximum de l'entte IP est donc de 15*32bits = 60 octets
3.3 - Service
Le champs service "Type Of Service" est cod sur 8 bits, il permet la gestion d'une qualit de service traite
directement en couche 3 du modle OSI. Cependant, la plupart des quipements de Backbone, ne tiennent pas
compte de ce champ et mme certain le rinitialise 0.
Voici la composition du champ Service :
16/7/2014 Entte du protocole IP
http://www.frameip.com/entete-ip/ 3/6
Vous trouverez tous les dtails du champ Service TOS "Type Of Service" dans la Rfc 1349.
3.3.1 - Priorit
Le champ Priorit "Precedence" est cod sur 3 bits. Il indique la priorit que possde la paquet. Voici les
correspondances des diffrentes combinaisons :
- 0 - 000 - Routine
- 1 - 001 - Prioritaire
- 2 - 010 - Immdiat
- 3 - 011 - Urgent
- 4 - 100 - Trs urgent
- 5 - 101 - Critique
- 6 - 110 - Supervision interconnexion
- 7 - 111 - Supervision rseau
3.3.2 - Dlai
Le champ Dlai "Delay" est cod sur 1 bit. Il indique l'importance du dlai d'acheminement du paquet. Voici
les correspondances des diffrentes combinaisons :
- 0 - Normal
- 1 - Bas
3.3.3 - Dbit
Le champ Dbit "Throughput" est cod sur 1 bit. Il indique l'importance du dbit achemin. Voici les
correspondances des diffrentes combinaisons :
- 0 - Normal
- 1 - Haut
3.3.4 - Fiabilit
Le champ Fiabilit "Reliability" est cod sur 1 bit. Il indique l'importance de la qualit du paquet. Voici les
correspondances des diffrentes combinaisons :
- 0 - Normal
- 1 - Haute
3.3.5 - Cot
Le champ Cot "Cost" est cod sur 1 bit. Il indique le cot du paquet. Voici les correspondances des
diffrentes combinaisons :
- 0 - Normal
- 1 - Faible
3.3.6 - MBZ
Le champ MBZ "Must Be Zero" est cod sur 1 bit. Comme son nom l'indique, il doit tre mis 0.
3.4 - Longueur totale
Le champ Longueur totale est cod sur 16 bits et reprsente la longueur du paquet incluant l'entte IP et les
Data associes. La longueur totale est exprime en octets, ceci permettant de spcifier une taille maximum de
16/7/2014 Entte du protocole IP
http://www.frameip.com/entete-ip/ 4/6
2
16
= 65535 octets. La longueur des Data est obtenu par la combinaison des champs IHL et Longueur totale :
Longueur_des_data = Longueur_totale - ( IHL * 4 );
3.5 - Identification
Le champ Identification est cod sur 16 bits et constitue l'identification utilise pour reconstituer les diffrents
fragments. Chaque fragment possde le mme numro d'identification, les enttes IP des fragments sont
identiques l'exception des champs Longueur totale, Checksum et Position fragment.
Vous trouverez tous les dtails des mcanismes de fragmentation et de rassemblage dans la Rfc 815.
3.6 - Flags
Le champ Flags est cod sur 3 bits et indique l'tat de la fragmentation. Voici le dtail des diffrents bits
constituant ce champ.
3.6.1 - Reserved
Le premier bit est rserv et positionn 0.
3.6.2 - DF
Appel DF "Don't Fragment", le second bit permet d'indiqu si la fragmentation est autorise. Si un
Datagramme devant tre fragment possde le flag DF 1, alors, il sera alors dtruit.
3.6.3 - MF
Appel MF "More Fragments", le troisime bit indique s'il est 1 que le fragment n'est pas le dernier.
3.7 - Position fragment
Le champ Position fragment est cod sur 13 bits et indique la position du fragment par rapport la premire
trame. Le premier fragment possde donc le champ Position fragment 0.
3.8 - TTL
Le champ TTL (Time To Live) est cod sur 8 bits et indique la dure de vie maximale du paquet. Il reprsente
la dure de vie en seconde du paquet. Si le TTL arrive 0, alors l'quipement qui possde le paquet, le
dtruira.
Attention, chaque passage d'un routeur le paquet se verra dcrment de une seconde. De plus, si le paquet
reste en file d'attente d'un routeur plus d'une seconde, alors la dcrmentation sera plus leve. Elle sera gale
au nombre de seconde pass dans cette mme file d'attente. Par dfaut, si les temps de rponse sont corrects,
alors on peut, entre guillemet, en conclure que le Time To Live reprsente le nombre de saut maximum du
niveau.
Le but du champ TTL est d'viter de faire circuler des trames en boucle infinie.
3.9 - Protocole
Le champ Protocole est cod sur 8 bits et reprsente le type de Data qui se trouve derrire l'entte IP.
Vous trouverez tous les dtails des types de protocole dans la Rfc 1700 qui remplace dsormais la Rfc 1340.
Voici la liste des protocoles les plus connu :
- 01 - 00001 - ICMP
- 02 - 00010 - IGMP
- 06 - 00110 - TCP
- 17 - 10001 - UDP
3.10 - Checksum
Le champ Checksum est cod sur 16 bits et reprsente la validit du paquet de la couche 3. Pour pouvoir
calculer le Checksum, il faut positionner le champ du checksum a 0 et ne considrer que l'entte IP. Donc par
exemple, si deux trames ont la mme entte IP (y compris le champ length) et deux enttes ICMP et Data
diffrentes (mais de mme longueur), le checksum IP sera alors le mme.
Voici un exemple de fonction permettant le calcul du checksum IP
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++;
16/7/2014 Entte du protocole IP
http://www.frameip.com/entete-ip/ 5/6
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);
}
Vous trouverez tous les dtails du Checksum IP dans la Rfc 1071.
Tous les quipements de niveau 3, tel que les routeurs, devront recalculer le Checksum, car il dcrmente le
champs TTL. De plus, toutes les fonctions de niveau 3 7, tel que la NAT, le PAT, modifiant le contenu de
l'entte IP ou des Data, devront recalculer le Checksum.
3.11 - Adresse IP source
Le champ IP source est cod sur 32 bits et reprsente l'adresse IP source ou de rponse. Il est cod sur 4
octets qui forme l'adresse A.B.C.D.
3.12 - Adresse IP destination
Le champ IP destination est cod sur 32 bits et reprsente l'adresse IP destination. Il est cod sur 4 octets qui
forme l'adresse A.B.C.D.
3.13 - Options
Le champ Options est cod entre 0 et 40 octets. Il n'est pas obligatoire, mais permet le "Tuning de l'entte IP".
Afin de bien grer les Options, cela doit commencer par un octets de renseignement. Voici le dtail de cette
octet :
3.13.1 - Copie
Le champ Copie est cod sur 1 bit et indique comment les options doivent tre traites lors de la
fragmentation. Cela signifie que lorsqu'il est positionn 1, il faut recopier les options dans chaque paquet
fragment.
3.13.2 - Classe
Le champ Classe est cod sur 2 bits et indique les diffrentes catgorie d'options existantes. Voici la liste
des diffrentes classe possible :
- 0 - 00 - Supervision de rseau
- 1 - 01 - Non utilis
- 2 - 10 - Debug et mesures
- 3 - 11 - Non utilis
3.13.3 - Numro
Le champ Numro est cod sur 5 bits et indique les diffrentes options existantes. Voici la liste des
diffrents numros possibles par Classe :
Classe 0,
16/7/2014 Entte du protocole IP
http://www.frameip.com/entete-ip/ 6/6
- 0 - 00000 - Fin de liste d'option. Utilis si les options ne se terminent pas la fin de l'en-tte (bourrage).
- 1 - 00001 - Pas d'opration. Utilis pour aligner les octets dans une liste d'options.
- 2 - 00010 - Restriction de scurit et de gestion. Destin aux applications militaires.
- 3 - 00011 - Routage lche dfini par la source.
- 7 - 00111 - Enregistrement de route.
- 8 - 01000 - Identificateur de connexion.
- 9 - 01001 - Routage strict dfini par la source.
Classe 2,
- 4 - 00100 - Horodatage dans l'Internet.
3.14 - Bourrage
Le champ Bourrage est de taille variable comprise entre 0 et 7 bits. Il permet de combler le champ option afin
d'obtenir une entte IP multiple de 32 bits. La valeur des bits de bourrage est 0.
4 - Discussion autour de la documentation
Vous pouvez poser toutes vos questions, vos remarques et vos expriences propos de l'entte IP. Pour cela,
rendez-vous sur le Forum "TCP-IP".
5 - Suivi du document
Le 19 fvrier 2009, par Mesot Titouan, correction de la valeur par dfaut du flag reserved qui doit tre gale 0 (voir
chapitre 3.6.1 et RFC 791 page 13).
Le 02 dcembre 2004, par _SebF, correction sur le calcul du checksum qui ne s'effectue que sur l'entte elle mme
et ne prend pas en compte les couches suprieurs.
Le 11 novembre 2003, par _SebF, indication des diffrentes classes et numros du champ Options.
Le 11 novembre 2003, par _SebF, complment de la dfinition du champ TTL en indiquant la dcrmentation de 1
par seconde pass dans un routeur.
Le 18 septembre 2003, par _SebF, cration du document.