Les datagrammes - Réseau
Les données circulent sur Internet sous forme de datagrammes (on parle aussi de paquets).
Les datagrammes sont des données encapsulées, c’est-à-dire des données auxquelles on a ajouté des en-têtes correspondant à des informations sur leur transport (telles que l’adresse IP de destination, …).
Les données contenues dans les datagrammes sont analysées (et éventuellement modifiées) par les routeurs permettant leur transit.
Voici ce à quoi ressemble un datagramme :
Voici la signification des différents champs :
• Version (4 bits) : il s’agit de la version du protocole IP que l’on utilise
(actuellement on utilise la version 4 IPv4) afin de vérifier la validité du datagramme.
Elle est codée sur 4 bits.
• Longueur d’en-tête, ou IHL pour Internet Header Length (4bits) :il s’agit du
nombre de mots de 32 bits constituant l’en-tête (nota : la valeur minimal est 5). Ce
champ est traité.
• Type de service (8 bits) :il indique la façon selon laquelle le datagramme doit être
traité.
• La longueur totale (16 bits) : Il indique la taille totale du datagramme en octets.
La taille de ce champ étant de 2 octets, la taille totale du datagramme ne peut
dépasser 65536 octets. Utilisé conjointement avec la taille de l’en-tête, ce champ
permet de déterminer où sont situées les données.
• Identification, drapeaux (flags) et déplacement de fragment: sont des
champs qui permettent la fragmentation des datagrammes, ils seront expliqués plus
bas dans mon message.
• Durée de vie appelée aussi TTL, pour Time To Live (8 bits) : ce champ indique
le nombre maximal de routeurs à travers lesquels le datagramme peut passer. Ainsi
ce champ est décrémenté à chaque passage dans un routeur, lorsque celui-ci atteint
la valeur critique de 0, le routeur détruit le datagramme. Cela évite l’encombrement
du réseau par les datagrammes perdus.
• Protocole (8 Bits) : ce champ, en notation décimale, permet de savoir de quel
protocole est issu le datagramme:
° ICMP : 1
° IGMP : 2
° TCP : 6
° UDP : 17
• Somme de contrôle de l’en-tête, ou en anglais header checksum (16 bits) :
ce champ contient une valeur codée sur 16 bits qui permet de contrôler l’intégrité de
l’en-tête afin de déterminer si celui-ci n’a pas été altéré pendant la transmission. La
somme de contrôle est le complément à un de tous les mots de 16 bits de l’en-tête
(champ somme de contrôle exclu). Celle-ci est en fait telle que lorsque l’on fait la
somme des champs de l’en-tête (somme de contrôle incluse), on obtient un nombre
avec tous les bits positionnés a 1.
• Adresse IP source (32 bits) : Ce champ représente L’adresse IP de la machine
émettrice, il permet au dessinateur de répondre.
• Adresse IP destination (32 bits) : Adresse IP du destinataire du message.
Pour tenir de la fragmentation, chaque datagramme possède plusieurs champs permettant leur réassemblage :
• Champ déplacement de fragment (13 bits) : champ permettant de connaître la
position du début du fragment dans le datagramme initial. L’unité de mesure de ce
champ est de 8 octets (le premier fragment ayant une valeur de zéro).
• Champ identification (16 bits) : numéro attribué à chaque fragment afin de
permettre leur réassemblage.
• Champ longueur total (16 bits) : Il est recalculé pour chaque fragment.
• Champ drapeau (3 bits) : il est composé de trois bits :
• Le premier n’est pas utilisé.
• Le second (appelé DF Don’t Fragment): indique si le datagramme peut être
fragmenté ou non. Si jamais un datagramme a ce bit positionné à un et que le
routeur ne peut pas l’acheminer sans le fragmenter, alors le datagramme est
rejeté avec un message d’erreur.
• Le dernier (appelé MF : More Fragment, en français Fragments à suivre)
indique si le datagramme est un fragment de donnée (1). SI l’indicateur est à
zéro, cela indique que le fragment est le dernier (donc que le routeur devrait être
en possession de tous les fragments précédents) ou bien que le datagramme n’a
pas fait l’objet d’une fragmentation.
La fragmentation des datagrammes IP
Comme nous l’avons vu précédemment, la taille d’un datagramme maximale est de 65536 octets. Toutefois cette valeur n’est jamais atteinte car les réseaux n’ont pas une capacité suffisante pour envoyer de si gros paquets. De plus, les réseaux sur Internet utilisent différentes technologies, si ben que la taille maximale d’un datagramme varie suivant le type de réseau.
La taille maximale d’une trame est appelée MTU (Maximum Transfert Unit), elle entraînera la fragmentation du datagramme si celui-ci a une taille plus importante que le MTU du réseau.

La fragmentation d’un datagramme se fait au niveau des routeurs, c’est-à-dire lors de la transition d’un réseau dont le MTU est important à un réseau dont le MTU est plus faible. Si le datagramme est trop grand pour passer sur le réseau, le routeur va le fragmenter, c’est-à-dire le découper en fragments de tailles inférieures au MTU du réseau et de telle façon que la taille di fragment soit un multiple de 8 octets.

Le routeur va ensuite envoyer ces fragments de manière indépendante et les ré encapsuler (il ajoute un en-tête à chaque fragment) de telle façon à tenir compte de la nouvelle taille su fragment, et en rajoutant des informations afin que la machine de destination puisse ré assembler les fragments dans le bon ordre ( rien ne dit que les fragment vont arriver dans le bon ordre étant donné qu’il sont acheminés indépendamment les uns des autres…).
En savoir plus sur le MTU
Fin du tutoriel
Réalisation du tutoriel: Puce29
& OptimusS