Qu’est-ce que le protocole IP ? Définition et bases

Pour pouvoir envoyer des données via des réseaux numériques (Internet), vous avez besoin d’une adresse correcte, dans ce cas présent il s’agit d’une adresse IP. Les paquets de données obtiennent une adresse IP, tout comme les lettres possèdent une adresse postale pour s’assurer qu’elles arrivent bien au bon destinataire. Toutefois, leurs homologues numériques ne sont pas liés à un emplacement spécifique, en effet les adresses IP sont automatiquement ou bien manuellement affectées au périphérique réseau lors de la configuration de la connexion. Dans ce processus, l’Internet Protocol, en français protocole Internet (mais appelé plus communément protocole IP) joue un rôle important.

Le protocole IP : définition et historique

Internet Protocol (IP) est un protocole sans connexion qui, en tant qu’élément central de la famille des protocoles Internet (un ensemble d’environ 500 protocoles réseau), est responsable de l’adressage et de la fragmentation des paquets de données dans les réseaux numériques. Avec le protocole de transport TCP (Transmission Control Protocol), l’IP constitue la base de l’Internet. Pour envoyer un paquet de l’expéditeur au destinataire, le protocole IP définit une structure de paquets qui résume les informations envoyées. Le protocole détermine la manière dont les informations sur la source et la destination des données sont décrites et sépare ces informations des données informatives  dans l’en-tête IP. Ce type de format de paquet est également connu sous le nom de datagramme IP.

En 1974, l‘Institute of Electrical and Electronics Engineers (IEEE) a publié un document de recherche des informaticiens américains Robert Kahn et Vint Cerf qui décrivait un modèle de protocole pour une connexion mutuelle de paquets de réseau basé sur ARPANET, le prédécesseur d’Internet. En plus du protocole de contrôle de transmission TCP, le composant principal de ce modèle était le protocole IP, qui, en plus d’une couche d’abstraction spéciale, permettait la communication à travers différents réseaux physiques. Au cours des années suivantes, de plus en plus de réseaux de recherche ont été consolidés sur la base de cette combinaison de protocoles « TCP/IP », qui a finalement été spécifiée en 1981 comme standard dans le RFC 791.

IPv4 et IPv6 : les différences entre ces deux numéros de version

Toute personne qui se préoccupe des caractéristiques d’une adresse IP particulière, par exemple, pour rendre les ordinateurs adressables dans un réseau local, rencontre sans aucun doute les deux variantes IPv4 et IPv6. Cependant, il ne s’agit en aucun cas de la quatrième ou sixième génération du protocole IP, même si ce dernier a subi d’importants changements dans le passé. En fait, IPv4 est la première version officielle d’Internet Protocol, alors que le numéro de version est uniquement dû au fait que la quatrième version du protocole TCP est utilisée. IPv6 est le successeur direct d’IPv4, le développement du protocole IPv5 a été interrompu prématurément pour des raisons économiques.

Bien qu’il n’y ait pas eu d’autres versions depuis IPv4 et IPv6, le protocole IP a été révisé depuis sa première mention en 1974 (quand il n’existait pas indépendamment et faisait partie de TCP). L’accent a essentiellement été mis sur l’optimisation du paramétrage de la connexion et de l’adressage. Par exemple, la longueur des bits des adresses hôte a été augmentée de 16 à 32 bits à un stade précoce, augmentant ainsi l’espace d’adressage à environ quatre milliards de proxies possibles. Avec ses champs d’adresses 128 bits, l’IPv6 permet même d’afficher environ 340 sextillions (un nombre avec 37 zéros) d’adresses différentes, répondant ainsi à la demande à long terme d’adresses Internet.

Comment est composé l’en-tête IP d’un datagramme ?

Comme nous l’avons déjà mentionné, le protocole IP garantit que chaque paquet de données soit précédé des propriétés structurelles importantes dans l’en-tête et assigné au protocole de transport approprié (généralement TCP). La zone des données d’en-tête a été fondamentalement révisée pour la version 6, c’est pourquoi il est important de spécifier et différencier les en-têtes l’IPv4 et IPv6.

Structure de l’en-tête IPv4

Ainsi chaque en-tête IP commence toujours par une spécification de 4 bits du numéro de version du protocole Internet, IPv4 ou IPv6. Il y a ensuite 4 autres bits supplémentaires, qui contiennent des informations sur la longueur de l’en-tête IP (IP header lenght), car celle-ci ne reste pas toujours constante. La longueur totale de l’en-tête est toujours calculée à partir de cette valeur multipliée par 32 bits. Ainsi, la valeur la plus petite possible est 5 et correspond donc à une longueur d’en-tête de 160 bits (correspond à 20 octets) quand aucune option n’est ajoutée. Le maximum est la valeur 15, pour 480 bits (ce qui correspond à 60 octets). Les bits 8 à 15 (Type of Service) peuvent contenir des instructions pour le traitement et la priorisation du datagramme. Par exemple, l’hôte peut spécifier les points importants tels que notamment la fiabilité, le débit et le délai de transmission des données.   

La longueur totale indique la taille totale du paquet de données, en d’autres termes, la taille des données utiles est ajoutée à la longueur de l’en-tête. Le champ ayant une longueur de 16 bits, la limite maximale est de 65 635 octets. Le RFC 791 spécifie également que chaque hôte doit pouvoir traiter au moins 576 octets. Un datagramme IP peut être fragmenté arbitrairement sur son chemin de l’hôte vers les routeurs ou autres périphériques, mais les fragments ne doivent pas être plus petits que les 576 octets mentionnés. Les autres champs de l’en-tête IPv4 ont la signification suivante :

  • Identification : tous les fragments d’un datagramme ont le même numéro d’identification que celui qu’ils reçoivent de l’expéditeur. En associant ce champ de 16 bits, l’hôte cible peut assigner des fragments individuels à un datagramme spécifique.

  • Flag (drapeau) : chaque en-tête IP contient 3 bits flag qui contiennent des informations et des directives pour la fragmentation. Le premier bit est réservé et a toujours la valeur 0, le second bit appelé « Don’t Fragment » indique si le paquet peut être fragmenté (0) ou non (1). Le dernier bit, appelé « More Fragments » indique si d’autres fragments suivent (1) ou si le paquet est complet ou s’il se termine par le fragment actuel (0).

  • Position du fragment : ce champ indique à l’hôte cible de l’endroit où se trouve un seul fragment, ce qui permet facilement de compiler à nouveau l’ensemble du datagramme. La longueur de 13 bits signifie qu’un datagramme peut être divisé en un maximum de 8192 fragments.

  • Durée de vie (Time to Live, TTL) : pour s’assurer qu’un paquet ne migre pas d’un nœud à un autre dans le réseau indéfiniment, il est envoyé avec une durée de vie maximale (Time to Live). La norme RFC spécifie l’unité en secondes pour ce champ de 8 bits, a noter que la durée de vie maximale est de 255 secondes. Pour chaque nœud de réseau passé, le TTL est réduit d’au moins 1. Si la valeur 0 est atteinte, le paquet de données est automatiquement rejeté.

  • Protocole : le champ de protocole (8 bits) affecte le protocole de transport correspondant au paquet de données, par exemple, la valeur 6 représente TCP ou la valeur 17 pour le protocole UDP. La liste officielle de tous les protocoles possibles est gérée et mise à jour par l’IANA (Internet Assigned Numbers Authority) depuis 2002.

  • Somme de contrôle de l’en-tête : le champ « Checksum » de 16 bits contient la somme de contrôle de l’en-tête. En raison de la diminution du TTL par arrêt intermédiaire, il faut le recalculer pour chaque nœud de réseau. L’exactitude des données de l’utilisateur n’est pas vérifiée pour des raisons d‘efficacité.

  • Adresse de la source et adresse de destination : chaque 32 bits, soit 4 octets, sont réservés à l’adresse IP assignée de l’hôte source et cible. Ces adresses IP sont généralement écrites sous la forme de 4 nombres décimaux séparés par des points. L’adresse la plus basse est 0.0.0.0, la plus haute est 255.255.255.255.

  • Options : le champ « options » étend le protocole IP avec des informations supplémentaires qui ne sont pas fournies dans la conception standard. Comme il ne s’agit que d’ajouts facultatifs, le champ a une longueur variable, qui n’est limitée que par la longueur maximale de l’en-tête. Les options possibles sont, par exemple, « Security » (indique la confidentialité d’un datagramme), « Record Route » (affiche tous les nœuds réseau passés, leur adresse IP pour tracer l’itinéraire du paquet) et « Time Stamp » (ajoute l’heure à laquelle un nœud en particulier a été passé).

Structure de l’en-tête IPv6

L’en-tête du protocole IPv6, contrairement à l’en-tête de son prédécesseur, a une taille fixe de 320 bits (40 octets). Des informations supplémentaires moins fréquemment utilisées peuvent être ajoutées séparément entre l’en-tête standard et les données utilisateur. Ces en-têtes d’extension (Extension Header) doivent être comparés avec le champ « options » du protocole IPv4 et peuvent être ajustés à tout moment sans avoir à modifier l’en-tête actuel. Cela vous permet notamment de déterminer les chemins des paquets, de spécifier des informations de fragmentation ou d’initier une communication cryptée via IPSec. Une somme de contrôle d’en-tête n’existe pas, au profit notamment de la performance.

Comme pour IPv4, l’en-tête IP actuel commence par le numéro de version long de 4 bits de l’Internet Protocol. Le champ suivant « Classe de trafic » est équivalent à l’entrée « Type of Service » dans l’ancienne variante de protocole. Ces 8 bits informent l’hôte cible sur le traitement qualitatif du datagramme, comme dans la version précédente, ce qui permet d’appliquer les mêmes règles. La nouveauté d’IPv6 est le FlowLabel ou identificateur de flux (20 bits), qui permet d’identifier les flux de données à partir de paquets de donnés en continu. Ceci permet de réserver la bande passante et d’optimiser le routage.

La liste suivante explique les informations d’en-tête supplémentaires du protocole IP amélioré :

  • Taille des données utilisateur : IPv6 transmet une valeur pour la taille des données utilisateur transportées, y compris l’en-tête de l’extension (16 bits au total). Dans la version précédente, cette valeur devait être séparément calculée en prenant la longueur totale moins la longueur de la ligne d‘en-tête.
  • En-tête suivant : le champ « Next Header » de 8 bits est l’équivalent de la spécification du protocole dans IPv4 et en tant que tel a repris sa fonction qui est l’affectation du protocole de transport souhaité.
  • Nombre de sauts : le Hop Limit (8 Bit) définit le nombre maximum de stations intermédiaires qu’un paquet peut traverser avant d‘être rejeté. Comme pour TTL dans IPv4, la valeur est réduite d’au moins 1 pour chaque nœud. 
  • Adresse de la source et adresse de destination : la majorité des en-têtes Ipv6 contiennent  les adresses de l’expéditeur et du destinataire. Comme mentionnée précédemment, ceux-ci ont une longueur de 128 bits (quatre fois la longueur des adresses IPv4). Il existe aussi des différences significatives dans la notation standard. La version la plus récente d’Internet Protocol utilise des nombres hexadécimaux et les divise en 8 blocs de 16 bits chacun. Les deux points sont utilisés au lieu des simples points pour la séparation. Une adresse IPv6 complète ressemble à ceci : 2001:0db8:85a3:08d3:1319:8a2e:0370:7344.

Comment fonctionne l’attribution d’adresses IP ?

Pour que les datagrammes dans leur en-tête puissent saisir les informations élémentaires de l’adresse de la source et de l’adresse de destination, ils doivent d’abord être affectés aux participants du réseau. Généralement, il est important de faire la distinction entre les adresses IP internes et externes ou publiques. Trois plages d’adresses sont réservées aux premiers, qui sont utilisées pour la communication dans les réseaux locaux :

  • 10.0.0.0 jusqu‘à 10.255.255.255
  • 172.16.0.0 jusqu‘à 172.31.255.255
  • 192.168.0.0 jusqu‘à 192.168.255.255

Le préfixe « fc00::/7 » est fourni pour les réseaux IPv6. Les adresses de ces réseaux ne sont pas acheminées sur Internet et peuvent donc être librement sélectionnées et utilisées dans des réseaux privés ou des réseaux d’entreprises. L’attribution d’une adresse est effectuée manuellement ou automatiquement dès qu’un appareil se connecte au réseau, à condition que l’attribution automatique d’adresse soit activée et qu’un serveur DHCP soit utilisé. A l’aide d’un masque de sous-réseau, un tel réseau local peut également être segmenté dans d’autres zones.

Les adresses IP externes sont automatiquement attribuées par le fournisseur d’accès Internet respectif lors de la connexion Internet. Tous les appareils ou périphériques sur Internet via un routeur commun accèdent au même IP externe. Habituellement, les fournisseurs attribuent une nouvelle adresse Internet toutes les 24 heures, à partir d’une plage d’adresses qui leur a été assignée par l’IANA. Il en va de même pour l’arsenal quasi inépuisable d’adresses IPv6, qui n’est que partiellement libérées pour une utilisation normale. En outre, cet arsenal n’est pas seulement divisé en adresses privées et publiques, mais il se distingue par des possibilités de classification beaucoup plus polyvalentes dans ce que l’on nomme les domaines de validité et d’unicité (Address Scopes ou portée d’une adresse) :

  • Host Scope : l’adresse Loopback (de rebouclage) 0:0:0:0:0:0:0:1 peut être utilisée par un hôte pour s’envoyer des datagrammes IPv6.
  • Link Local Scope : pour la connectivité IPv6, il est essentiel que chaque hôte puisse avoir sa propre adresse, même si  elle n’est valide que sur un réseau local. Cette adresse locale de liaison est identifiée par le préfixe « fe80::/10 » et est nécessaire, par exemple, pour la communication avec la passerelle standard (routeur) afin de générer une adresse IP publique.
  • Unique Local Scope : il s’agit de la plage d’adresses susmentionnée « fc00::/7 », réservée exclusivement à la configuration de réseaux locaux.
  • Site Local Scope : il s’agit d’un préfixe obsolète « fec0::/10 », qui a aussi été défini pour les réseaux locaux. Cependant, lors de la fusion de différents réseaux ou de l’établissement de connexions VPN entre des réseaux numérotés avec des adresses locales, il y a eu des complications et la norme a été jugée obsolète.
  • Global Scope: chaque hôte qui veut se connecter à Internet a besoin de sa propre adresse publique. Ceci est obtenu par l’auto configuration, soit en utilisant le SLAAC (Stateless Address Autoconfiguration) soit le DHCPv6 (mécanisme d’attribution des adresses).
  • Multicast-Scope : les nœuds de réseau, routeurs, serveurs et autres services réseau peuvent être combinés en groupes multicast à l’aide d’IPv6. Chacun de ces groupes a sa propre adresse, ce qui permet à un seul paquet d’atteindre tous les hôtes impliqués. Le préfixe « ff00::/8 » indique ainsi qu’une adresse de multidiffusion suit.

Comment le protocole IP règle la fragmentation

Chaque fois qu’un paquet de données doit être envoyé via TCP/IP, la taille globale est automatiquement vérifiée. Si cette valeur est supérieure à l’unité de transmission maximale (MTU pour maximum transmission unit) de l’interface réseau respective, l’information est fragmentée, c’est-à-dire divisée en blocs de données plus petits. Cette tâche est exécutée soit par l’hôte expéditeur (IPv6) soit par un routeur intermédiaire (IPv4). Par défaut, le paquet est composé par le destinataire, qui accède aux informations de fragmentation stockées dans l’en-tête IP ou dans l’en-tête d’extension. Dans des cas exceptionnels, le réassemblage peut aussi être pris en charge par un pare-feu, si ce dernier est configuré en conséquence. 

Etant donné que l’IPv6 ne prévoit généralement plus de fragmentation et ne permet plus la fragmentation du routeur, le paquet IP doit être de taille adéquate avant d’être envoyé. Si un routeur atteint un datagramme IPv6 qui dépasse l’unité de transmission maximale, il le rejette et en informe l’expéditeur sous la forme d’un message ICMPv6 de type 2 « Packet Too Big » (le paquet est trop volumineux). L’application d’envoi de données peut maintenant créer des paquets plus petits et non fragmentés ou bien initier la fragmentation. Ensuite, l’en-tête d’extension approprié est ajouté au paquet IP, ainsi l’hôte cible peut reconstituer les fragments individuels après réception.