Table des matières
Internet
Nous savons que cette couche est responsable de l'acheminement des datagrammes (ou des segments) d'un point à un autre, en passant si besoin est par plusieurs réseaux distincts. Voyons donc les informations que l'on peut trouver ici. Comme l'on peut s'y attendre, le paquet est constitué d'un en-tête et d'une charge utile.
L'en-tête est constitué d'un certain nombre de mots de 32 bits. Sa structure diffère suivant que l'on a affaire à de l'IPv4 ou de l'IPv6.
En-tête IPv4
Dans le premier mot (32 bits) nous avons:
- la version du protocole (4 bits). Les concepteurs ont vu large, pour l'instant, seules les valeurs 04 et 06 sont utilisées.
- Internet Header Length (4 bits) qui indique la taille de l'en-tête. Nécessaire à cause des éventuelles options.
- Type-of-service (8 bits) spécifie comment un protocole de couche supérieure particulier voudrait que le datagramme actuel soit traité. Les datagrammes peuvent se voir attribuer différents niveaux d’importance via ce champ.
- Total Length (16 bits) spécifie la taille totale du paquet, charge utile comprise.
Dans le second mot:
- Identification (16 bits) Cet entier identifie le paquet, permet de reconstituer le paquet final s'il a été fragmenté. La valeur indiquée sera la même dans tous les fragments d'un même paquet. Il faudra évoquer ce problème de la fragmentation.
- Flags (3 bits dont un n'est pas utilisé) indique si les routeurs sont autorisés à fragmenter ou non le paquet. Le premier bit est toujours =0, le second «don't fragment» indique si la fragmentation est interdite (1) ou pas (0). Si le paquet est trop grand pour passer et que ce bit est à 1 , alors le paquet est détruit! Le troisième bit «more fragments» indique, en cas de fragmentation, si le paquet est le dernier élement (0) ou s'il y en a d'autres(1). Il faudra vraiment évoquer ce problème de la fragmentation).
- Fragment offset (13 bits). En cas de fragmentation ce champ indique la position du fragment par rapport au premier paquet. Dans le premier paquet, ce champ est donc égal à 0.
Dans le troisième mot:
- Time To Live (8 bits) est un compteur qui est décrémenté à chaque passage d'un routeur. De plus, si le paquet met du temps à passer, ce compteur sera décrémenté à chaque seconde perdue. Si ce compteur tombe à zéro, le paquet est détruit.
- Protocol (8 bits) indique quel type de données se trouve dans la charge. Les valeurs les plus courantes sont:
- 01 : ICMP
- 02 : IGMP
- 06 : TCP
- 17 : UDP
- Le lecteur très curieux pourra s'armer de courage et aller chercher les autres dans le RFC 1700
- Header Checksum (16 bits) est un contrôle d'intégrité de l'en-tête.
Les 4eme et 5eme représentent les adresses IPv4 source et destination.
Les options sont facultatives. S'il y en a, elles peuvent être d'une longueur variable et sont ajoutées l'une à la suite de l'autre. Ce champ, très rarement utilisé, occupe un nombre entier de mots de 32 bits. Un bourrage est ajouté en fin d'options si nécessaire.
En-tête IPv6
Si la philosophie reste la même, il y a tout de même quelques différences.
Dans le premier mot:
- Version (4 bits): C'est toujours la version, ici = 6.
- Traffic class (8 bits): établit le niveau de priorité du paquet IPv6. C'est l'équivalent du ToS de l'IPv4.
- Flow Label (16 bits): un label pour un flux donné
. Pour en savoir plus, consultez le RFC6437.
Dans le second mot:
- Payload length (16 bits): C'est la taille de la charge utile.
- Next Header: (8 bits): Identique au champ «Protocol» d'IPv4.
- Hop limit (8 bits): Même fonction que le TTL de l'IPv4.
Viennent enfin les adresses IPv6 source et destination, chacune sur 128 bits et enfin la charge transportée par le paquet, c'est à dire le segment ou le datagramme de la couche supérieure.