IPv4
IPv4 (Internet Protocol version 4) est la premiÚre version d'Internet Protocol (IP) à avoir été largement déployée, et qui forme encore en 2023 la base de la majorité des communications sur Internet, par rapport à l'IPv6. Elle est décrite dans la RFC 791[1] de , remplaçant la RFC 760[2], définie en .
Chaque interface d'un hĂŽte IPv4 se voit attribuer une ou plusieurs adresses IP codĂ©es sur 32 bits. Au maximum 4 294 967 296, soit 232 adresses peuvent donc ĂȘtre attribuĂ©es simultanĂ©ment en thĂ©orie (en pratique, un certain nombre ne sont pas utilisables).
L'épuisement des adresses IPv4 a conduit au développement d'une nouvelle version d'IP, IPv6, et à la transition d'IPv4 vers IPv6 afin d'adopter cette nouvelle version. Le manque d'adresse IPv4 est dans un premier temps contourné grùce à l'utilisation de techniques de traduction d'adresses (NAT) ainsi que par l'adoption du systÚme CIDR. Le nombre d'adresses IP Version 4 publiques est arrivé officiellement à saturation le .
Représentation d'une adresse IPv4
Une adresse IPv4 est représentée sous la forme de quatre nombres entiers séparés par des points comme 193.43.55.67
. Chacun des nombres reprĂ©sente un octet. La plage d'attribution s'Ă©tend de 0.0.0.0 Ă 255.255.255.255, sachant qu'il existe des contraintes empĂȘchant l'utilisation de certaines adresses (rĂ©servĂ©e, masque, broadcast, etc.)
En-tĂȘte IPv4
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Version d'IP | Longueur de l'en-tĂȘte | Type de service | Longueur totale | ||||||||||||||||||||||||||||
Identification | Indicateur | Fragment offset | |||||||||||||||||||||||||||||
DurĂ©e de vie | Protocole | Somme de contrĂŽle de l'en-tĂȘte | |||||||||||||||||||||||||||||
Adresse source | |||||||||||||||||||||||||||||||
Adresse destination | |||||||||||||||||||||||||||||||
Option(s) + remplissage |
Version (4 bits) :
- Version d'IP utilisée. Ici, 4.
Longueur de l'en-tĂȘte ou IHL (pour Internet Header Length) (4 bits) :
- Ce champ indique en binaire sur 4 bits la longueur totale de l'en-tĂȘte et cette longueur est donnĂ©e, non pas en bit, ni en octet, mais en mots de 32 bits (=4 octets). La longueur donnĂ©e correspondrait au nombre de lignes du schĂ©ma prĂ©cĂ©dent. La valeur est comprise entre 5 et 15, car il y a 20 octets minimum et on ne peut dĂ©passer 40 octets d'option. La longueur maximale d'un en-tĂȘte est donc de 15*4 octets soit 60 octets.
Type de service ou ToS (pour Type of Service) (8 bits) :
- Ce champ permet de distinguer différentes qualités de service différenciant la maniÚre dont les paquets sont traités. Composé de 3 bits de priorité (donc 8 niveaux) et trois indicateurs permettant de différencier le débit, le délai ou la fiabilité.
- Il se décline au fil des RFC. Au départ (RFC 791[1]) nous avions :
Bits 0-2: Precedence. Bit 3: 0 = Normal Delay, 1 = Low Delay. Bits 4: 0 = Normal Throughput, 1 = High Throughput. Bits 5: 0 = Normal Reliability, 1 = High Reliability. Bit 6-7: Reserved for Future Use.
- Le champ DSCP généralise ensuite le champ TOS (RFC 2474[3], ) :
Bits 0-5: DSCP (Differentiated Services Code Point) Bits 6-7: CU (Currently Unused)
- En (RFC 3168[4]) le champ CU est utilisé pour la gestion des congestions[5] :
Bits 0-5: DSCP (Differentiated Services Code Point) Bits 6-7: ECN (Explicit Congestion Notification)
Longueur totale en octets ou Total Length (16 bits) :
- Nombre total d'octets du datagramme, en-tĂȘte IP comprise. Donc, la valeur maximale est 216â1 octets.
Identification (16 bits) :
- NumĂ©ro permettant d'identifier les fragments d'un mĂȘme paquet.
Indicateurs ou Flags (3 bits) :
- (Premier bit [bit de poids fort]) actuellement inutilisé.
- (DeuxiĂšme bit) DF (Don't Fragment) : lorsque ce bit est positionnĂ© Ă 1, il indique que le paquet ne peut pas ĂȘtre fragmentĂ©. Si le routeur ne peut acheminer ce paquet (taille du paquet supĂ©rieure Ă la MTU), il est alors rejetĂ©.
- (TroisiÚme bit) MF (More Fragments) : quand ce bit est positionné à 1, on sait que ce paquet est un fragment de données et que d'autres doivent suivre. Quand il est à 0, soit le fragment est le dernier (et dans ce cas le fragment offset est différent de 0), soit le paquet n'a pas été fragmenté.
Fragment offset (13 bits) :
- Position du fragment par rapport au paquet de départ, en nombre de mots de 8 octets. Lorsque la valeur indiquée est 0, il s'agit du premier fragment.
Durée de vie ou TTL (pour Time To Live) (8 bits) :
- Initialisé par l'émetteur, ce champ est décrémenté d'une unité généralement à chaque saut de routeur. Quand TTL = 0, le paquet est abandonné et un message ICMP est envoyé à l'émetteur pour information.
Protocole (8 bits) :
- Numéro du protocole au-dessus de la couche réseau : TCP = 6, UDP = 17, ICMP = 1.
- Ce champ permet d'identifier le protocole utilisé par le niveau supérieur :
- Internet Control Message Protocol ou ICMP est repéré par les bits 00000001, qu'on écrit souvent en hexadécimal avec 01
- Transmission Control Protocol ou TCP par les bits 00000110, soit 06
- User Datagram Protocol ou UDP par les bits 00010001, soit 11 en hexadécimal
Somme de contrĂŽle de l'en-tĂȘte ou Header Checksum (16 bits) :
- ComplĂ©ment Ă un de la somme complĂ©mentĂ©e Ă un de tout le contenu de l'en-tĂȘte afin de dĂ©tecter les erreurs de transfert. Si la somme de contrĂŽle est invalide, le paquet est abandonnĂ© sans message d'erreur.
Adresse source (32 bits) :
- Adresse IP de l'Ă©metteur sur 32 bits.
Adresse destination (32 bits) :
- Adresse IP du récepteur 32 bits.
Options (0 Ă 40 octets par mots de 4 octets) :
- Facultatif.
- Champ de taille variable comprise entre 0 et 7 bits. Il permet de combler le champ option afin d'obtenir un en-tĂȘte IP multiple de 32 bits. La valeur des bits de bourrage est 0.
Fragmentation
Sur une interface déterminée, une trame a une taille maximale, appelée Maximum Transmission Unit ou MTU. Lorsque la longueur du paquet (datagramme) est supérieure, l'information sera fragmentée. La taille maximum supportée par IPv4 (car codée sur 16 bits) est de 65 535 octets mais les réseaux ne prennent généralement pas en charge de trames de telles longueurs, en général on trouve des MTU de l'ordre de 1 500 octets (Ethernet).