Structure de datagramme IP
Le terme « datagramme » ou « paquet » est utilisé pour décrire un bloc de données IP. Chaque datagramme IP contient un ensemble spécifique de champs dans un ordre spécifique afin que le destinataire sache comment décoder et lire le flux de données reçu. La description du format de datagramme IP dans ce tutoriel convient à la plupart des applications.
Un datagramme IP ressemble à ceci:
Version (4 bits)
Ce champ est défini sur la valeur «4» en décimal ou «0100» en binaire. La valeur indique la version d’IP (4 ou 6, il n’y a pas de version 5).
IHL (4 bits)
La longueur d’en-tête Internet (IHL) décrit la taille de l’en-tête en mots de 32 bits. Par exemple, la valeur minimale est 5, car il s’agit de la taille minimale d’un en-tête IP contenant tous les champs corrects, soit 160 bits ou 20 octets. Cela permet au destinataire de savoir exactement où commencent les données utiles.
Type de service – TOS (8 bits)
Le type de service permet aux stations de réception intermédiaires (les routeurs) de se faire une idée de la qualité de service souhaitée. Cela permet au réseau de procéder à des adaptations en termes de délai, de débit ou de fiabilité.
Longueur totale (16 bits)
Ceci informe le récepteur du datagramme où se trouve la fin des données dans ce datagramme. C’est la longueur de l’ensemble du datagramme en octets, plus l’en-tête. C’est pourquoi un datagramme IP peut contenir jusqu’à 65 535 octets, car il s’agit de la valeur maximale de ce champ de 16 bits.
Identificateur (16 bits)
Parfois, un périphérique situé au milieu du chemin du réseau ne peut pas gérer le datagramme à la taille à laquelle il a été transmis, et doit le décomposer en fragments. Si un système intermédiaire doit décomposer le datagramme, il utilise ce champ pour faciliter l’identification des fragments.
Flags (3 bits)
Le champ « flags » contient des drapeaux à un bit qui indiquent si le datagramme est un fragment, s’il est autorisé à être fragmenté et si le datagramme est le dernier fragment ou s’il existe d’autres fragments. Le premier bit de ce champ est toujours zéro.
Position du fragment – Offset (13 bits)
Lorsqu’un datagramme est fragmenté, il est nécessaire de réassembler les fragments dans le bon ordre. Le nombre d’offset numérote les fragments de manière à pouvoir être réassemblés correctement.
Durée de vie – TTL (8 bits)
Ce champ détermine la durée pendant laquelle un datagramme existera. À chaque saut, le champ TTL est décrémenté. Lorsque le champ TTL atteint zéro, le datagramme est dit « expiré » et est rejeté. Cela évite les encombrements sur le réseau qui sont créés lorsqu’un datagramme ne peut pas être transmis à sa destination. La plupart des applications définissent la durée de vie du champ sur 30 ou 32 par défaut.
Protocole (8 bits)
Cela indique quel type de protocole est encapsulé dans le datagramme IP. Certaines des valeurs communes incluent:
ICMP | 1 |
IGMP | 2 |
TCP | 6 |
UDP | 17 |
Checksum de l’entête (16 bits)
Selon la RFC 791, la formule du checksum de l’entête est la suivante: « les 16 bits complètent la somme de complément de tous les mots de 16 bits de l’en-tête ».
Le checksum de l’entête permet au protocole IP de détecter les datagrammes dont les en-têtes sont corrompus et de les supprimer. Comme le TTL change à chaque saut, le checksum doit être recalculée à chaque saut. Dans certains cas, cet algorithme est remplacé par un algorithme de contrôle de redondance cyclique.
Adresse source (32 bits)
C’est l’adresse IP de l’expéditeur du datagramme IP.
Adresse destination (32 bits)
C’est l’adresse IP du destinataire du datagramme. Si la partie hôte de cette adresse est définie sur toutes les valeurs à 1, le datagramme est diffusé à « tous les hôtes ».
Options & Bourrage (variable)
Diverses options peuvent être incluses dans l’en-tête par la mise en œuvre de la propriété intellectuelle d’un fournisseur particulier. Si des options sont incluses, l’en-tête doit être complétée par des zéros pour renseigner tous les octets inutilisés de manière à ce que l’en-tête soit un multiple de 32 bits et corresponde au nombre d’octets dans le champ Longueur d’en-tête Internet (IHL).