Adresses IPv4, routage et masques de sous-réseau
- Mia Combeau
- Réseau | Internet
- 17 novembre 2022
Table des matières
Parmi les adresses IP des systèmes connectés à Internet, les adresses IPv4 sont actuellement les plus répandues. Comment peuvent-elles identifier de façon unique tous les objets connectés ? Comment facilitent-elles le routage des données d’un côté à l’autre de ce vaste réseau ? Et pourquoi sont-elles progressivement remplacées par les adresses IPv6 ? C’est ce que nous allons voir dans cet article.
Mais avant cela, il serait sans doute utile de se remémorer les composants physiques du réseau Internet que nous avons eu l’occasion de voir dans l’article précédent sur l’architecture d’Internet.
Le matériel physique d’Internet
Internet est un réseau mondial d’une ampleur sidérante, composé de milliers de réseaux publics et privés, et de millions d’appareils connectés. Les données y circulent sur des supports physiques variés : câbles coaxiaux, fibre optique, ondes radio, etc. Elles passent par des commutateurs et des routeurs pour enfin arriver via l’ interface réseau de l’ hôte destinataire. Définissons ici ces termes.
Les hôtes, les clients et les serveurs
Un hôte, c’est tout système connecté au réseau. Ce peut être un client ou un serveur. Un client c’est un ordinateur, un smartphone, ou autre, connecté au réseau. Un serveur, c’est une machine plus puissante qui stocke et distribue du contenu sur Internet.
Les paquets
Pour envoyer des données, l’hôte expéditeur les encapsule dans un ou plusieurs paquets. Ces paquets contiennent non seulement les données à envoyer mais aussi des en-têtes qui fournissent, entres autres, des informations sur l’hôte expéditeur et l’hôte destinataire. Une fois préparés, ces paquets sont ensuite acheminés vers l’hôte destinataire. Le destinataire récupère les paquets et reconstitue les données à la réception.
Les commutateurs réseau (switch)
Comme toute donnée informatique, un paquet est composé d’une longue série de bits. Chaque bit d’un paquet doit donc se déplacer jusqu’à destination. Cependant, les supports physiques sur lesquels ils doivent se déplacer sont divers et variés. Parfois c’est une fibre optique, parfois c’est un câble de cuivre, ou encore des ondes radio ! Les méthodes pour déplacer les bits diffèrent évidemment selon le support physique.
Faire passer les bits d’un paquet d’un support physique à l’autre, c’est le rôle des commutateurs réseau (“switch” en anglais). Sur son trajet, un paquet passera sans doute par plusieurs commutateurs. Le commutateur le récupère depuis un segment du trajet sur un type de support physique pour le transférer via un autre support physique.
Les routeurs
Tous les paquets qui circulent sur Internet ne se rendent pas non plus tous à la même destination ! Il y a donc des intersections dans le réseau et le paquet doit être dirigé vers la bonne destination, c’est-à-dire qu’il doit être routé. Ça, c’est le rôle d’un type de commutateur plus sophistiqué : le routeur. Tout comme le commutateur, le routeur peut transférer un paquet d’un support physique à l’autre, mais ce n’est pas tout. Un routeur est généralement connecté à plusieurs segments à la fois et possède la capacité de déterminer dans quelle direction envoyer un paquet selon sa destination.
Plus loin, nous étudierons de plus près comment un routeur décide vers où envoyer un paquet grâce à sa table de commutation. Mais avant cela, nous devons comprendre les interfaces réseau.
Les interfaces réseau
Chaque appareil connecté à Internet, client, serveur, routeur, possède au moins une interface réseau. C’est la carte réseau qui fait le pont entre l’appareil et le support physique lié au reste du réseau : on y branche notre câble ethernet, par exemple. L’interface est donc une sorte de frontière entre un appareil et le réseau. Un client n’a typiquement qu’une seule interface puisqu’il n’a qu’une connexion au réseau. Par contre, un routeur en a plusieurs : une pour chacune de ses connexions dans le réseau.
Sur Internet, une adresse IP est associée `a chaque interface, ce qui permet de l’identifier de manière unique. Voyons donc ce qu’est une adresse IP, et en particulier, une adresse IPv4.
Qu’est-ce qu’une adresse IPv4 ?
Comme on vient de le voir, une adresse IP identifie non pas un appareil particulier mais plutôt son interface réseau. Avant s’interroger sur ce qu’est une adresse IPv4, commençons par comprendre ce que veut dire IP.
Qu’est-ce que IP ?
Dans l’article précédent sur l’architecture d’Internet, nous avons eu l’occasion d’examiner les différentes couches de protocoles qu’un paquet de données doit traverser pour être envoyé et réceptionné. L’adressage et le routage, c’est la fonction principale du protocole IP de la couche réseau.
IP (" I nternet P rotocol" ou “protocole internet” en français), s’occupe d’acheminer les paquets vers leurs destinations respectives, c’est-à-dire de leur routage. Ce protocole définit les adresses IP qui identifient de façon unique chaque hôte connecté. De plus, il est exécuté dans tous les hôtes (clients et serveurs) et tous les routeurs qui font partie du réseau Internet.
Dans l’hôte expéditeur, IP ajoute un datagramme en tête de chaque paquet à transmettre, qui contient entres autres l’adresse IP du destinataire et de l’expéditeur. Dans le routeur, IP maintient une table de transfert et exécute des algorithmes de routage qui analysent l’adresse de destination d’un paquet pour déterminer la direction dans laquelle le transférer.
L’anatomie d’une adresse IPv4
Une adresse IPv4, donc, c’est une adresse de la version 4 du protocole Internet. Ce sont les adresses les plus courantes sur Internet à présent. Toutefois, une nouvelle version du protocole Internet existe aussi aujourd’hui, IPv6, et avec elle, un nouveau système d’adressage auquel nous jetterons un coup d’œil à la fin de cet article.
Une adresse IPv4, c’est un nombre de 32 bits (4 octets). On la représente sous forme de quatre nombres entiers positifs séparés par des points. Chacun de ces nombres représentent un octet (8 bits). Prenons par exemple une adresse arbitraire : 198.42.214.5
. Le nombre 198
est l’équivalent en base 10 du premier octet de l’adresse ; 42
représente le deuxième octet, etc. Regardons cette adresse en binaire :
Notation décimale198``42``214``5
Notation binaire11000110``00101010``11010110``00000101
Avec cette limitation à 32 bits, les adresses IPv4 ne sont pas infinies. La plus petite adresse possible est 0.0.0.0
et la plus grande, c’est 255.255.255.255
:
Décimal : Binaire
0.0.0.0 : 00000000 00000000 00000000 00000000
255.255.255.255 : 11111111 11111111 11111111 11111111
La table de commutation d’un routeur
Un routeur a pour tâche d’examiner l’en-tête du paquet qui lui parvient pour y lire l’adresse de destination afin de pouvoir le transférer vers son interface réseau de sortie la plus appropriée. IP maintient une table de commutation (“Forwarding information base” en anglais, ou FIB) dans le routeur. Son algorithme de routage en fait usage pour déterminer vers quelle sortie envoyer le paquet. Imaginons à titre d’exemple un routage d’adresses IP de 4 bits :
Dans cet exemple, le routeur lit l’en-tête du paquet qui lui provient et consulte sa table de commutation pour déterminer qu’il doit transférer ce paquet vers son interface de sortie numéro 2.
Cependant, il existe environ 4 milliards d’adresses IPv4 de 32 bits. Clairement, un routeur avec une table de commutation de 4 milliards de lignes serait extrêmement lent et inefficace, même avec un algorithme de routage très bien optimisé ! Ne serait-il donc pas plus pratique pour le routeur de simplement lire les quelques premiers bits pour savoir quelle interface de sortie utiliser ? En effet ! C’est un des avantages du concept des sous-réseaux.
Masques de sous-réseau
Les premiers bits d’une adresse IP représentent le sous-réseau (“subnetwork” ou “subnet” en anglais) dans lequel se trouve l’appareil, et les bits suivants identifient l’interface elle-même. Un routeur n’a donc généralement qu’à regarder la partie réseau de l’adresse pour savoir où envoyer le paquet qui lui provient. Pour isoler les bits qui représentent le sous-réseau, le routeur utilise un masque de sous-réseau. Alors combien de bits représentent la partie sous-réseau de l’adresse ? La réponse à cette question n’est pas aussi simple qu’on pourrait le croire…
L’adressage IP par classe
On l’aura compris dans l’article sur l’architecture d’Internet, Internet est un réseau composé de sous-réseaux. Les adresses IP sont assignées par plages selon la taille du sous-réseau. À l’origine, les plages d’adresses étaient catégorisées en plusieurs classes : A pour les plus grandes, B pour les moyennes et C pour les plus petites. Les 8, 16 ou 24 premiers bits de l’adresse IPv4 représentaient alors l’adresse du sous-réseau, et les bits restants identifiaient l’hôte à l’intérieur de ce sous-réseau.
Pour isoler les bits qui représentaient le sous-réseau, il fallait d’abord identifier sa classe. Un premier bit à 0 indiquait la classe A ; les deux premiers bits à 1 et 0 respectivement, la classe B ; les trois premiers à 110, la classe C. On pouvait donc ensuite appliquer le masque de sous-réseau approprié et faire l’opération bitwise ET pour identifier le sous-réseau. Par exemple, avec une adresse de classe B :
IP : 10100111 00101101 11000110 00000010 : 167.45.198.2
Masque B : 11111111 11111111 00000000 00000000 : 255.255.0.0
Bitwise & : 10100111 00101101 00000000 00000000 : 167.45.0.0
Cependant, dans les années 1990, avoir 1, 2 ou 3 octets pour la partie sous-réseaux de l’adresse s’est avéré être une exigence trop rigide pour pouvoir subvenir aux nombre croissant d’entreprises avec des sous-réseaux de petite ou moyenne taille. Un sous-réseau de classe C ne pouvait accommoder que 254 postes ; trop peu pour la plupart des entreprises. Mais un sous-réseau de classe B, qui, lui, pouvait accommoder 65 354 postes, était bien trop grand ! Pourtant, avec ce système, une entreprise qui souhaitait connecter 2 000 postes se voyait alloué un sous-réseau de classe B. Un tel cas représentait une perte de 63,000 adresses, qui ne pouvaient être utilisées par d’autres entreprises.
Cette notion de classe d’adresses IPv4 est donc rapidement devenue obsolète au profit d’un système d’adressage sans classe qui est toujours d’actualité : CIDR.
L’adressage IP sans classe : CIDR
Le Classless Inter-Domain Routing ( CIDR) a généralisé la notion de sous-réseau en la rendant plus flexible. Dans ce système, la partie de l’adresse qui identifie le sous-réseau n’est pas de taille fixe comme celles des classes ci-dessus. Les masques de sous-réseaux CIDR sont de taille variable, ce qui permet une utilisation bien plus efficace de l’espace d’adressage IP.
Comme le masque de sous-réseau ne peut plus être déduit de l’adresse IP elle-même, CIDR introduit une nouvelle notation pour indiquer le nombre de bits à considérer pour le sous-réseau. L’adresse IPv4 de quatre octets peut être suivie d’une barre oblique, puis du nombre de bits qui représente le sous-réseau. Par exemple, 128.42.42.201/28
indique que les 28 premiers bits de l’adresse sont le sous-réseau :
IP : 10000000 00101010 00101010 11001001 : 128.42.42.201
Masque /28 : 11111111 11111111 11111111 11110000 : 255.255.255.240
Bitwise & : 10000000 00101010 00101010 11000000 : 128.42.42.192
Le calcul du nombre d’adresses d’un sous-réseau est 2taille de l’adresse - masque. Il y a donc 232-28 = 24 = 16 adresses IPv4 possibles dans la plage de ce sous-réseau de 28 bits :
IP : 10000000 00101010 00101010 11001001 : 128.42.42.201
Masque /28 : 11111111 11111111 11111111 11110000 : 255.255.255.240
IP min : 10000000 00101010 00101010 11000000 : 128.42.42.192
IP max : 10000000 00101010 00101010 11001111 : 128.42.42.207
Un fournisseur d’accès internet peut ainsi se voir allouer un bloc /19, soit 232-19 = 213 = 8 192 adresses Ipv4. Il peut alors créer des sous-réseaux de tailles variable à l’intérieur de celui-ci en fonction des besoins de ses clients. Par exemple, il pourra fournir à une entreprise de 200 postes un sous-réseau /24 (232-24 = 28 = 256 adresses), puis à une autre entreprise de 2 000 postes, un sous-réseau /20 (232-21 = 211 = 2 048 adresses).
Masques de sous-réseau et routage
Mais en pratique, comment fonctionnent ces masques de sous-réseau CIDR pour le routage d’un paquet ? Pour le comprendre, schématisons une partie fictive du réseau Internet.
On remarquera tout d’abord que chaque client et routeur possède une table de commutation qui lui indique où envoyer les paquets. Le routeur tout en haut de ce diagramme a deux entrées dans sa table de commutation. La première indique que tous les paquets qui lui proviennent dont la destination commence avec les 24 premiers bits : 151.147.106.x
doivent être envoyés vers l’interface du second routeur dont l’adresse est 151.147.106.62
. C’est le “saut suivant” (“next hop” en anglais) sur la route vers leur destination. La seconde entrée de cette même table de commutation indique que par défaut, tous les paquets devront être envoyés à 163.243.250.31
(un autre routeur connecté à l’interface R1-1, qui ne figure pas sur le schéma), quelle que soit leur destination ( 0.0.0.0/0
).
Il y a trois sous-réseaux distincts dans ce diagramme :
- Le sous réseau
151.147.106.60
de 30 bits, qui contient les interfaces des deux routeurs R1-3 (151.147.106.61
) et R2-1 (151.147.106.62
). - Un sous-réseau de 28 bits,
151.147.106.0
, qui contient l’interface du routeur R2-3 (151.147.106.1
) et celle du client B1 (151.147.106.2
). Les adresses des interfaces à l’intérieur de ce sous réseau doivent être comprises entre151.147.106.1
et151.147.106.14
. - Et un sous-réseau de 29 bits,
151.147.106.16
, qui contient l’interface du routeur R2-2 (151.147.106.17
) et celle du client A1 (151.147.106.18
). Les interfaces à l’intérieur de ce sous-réseau doivent avoir des adresses comprises entre151.147.106.16
et151.147.106.22
.
Bien entendu, les sous-réseaux ne peuvent pas se chevaucher. On n’aurait pas pu, par exemple, donner l’adresse 151.147.106.3
à l’interface R2-2 puisque cette adresse fait partie du sous-réseau de l’interface R2-3.
Adresses IPv4 réservées
Environ 600 millions d’adresses IPv4 sont réservées pour des utilisations spécifiques, et sont donc interdites d’usage. Ces adresses sont utilisées entres autres pour le trafic multicast, pour maintenir les tables des routeurs, pour traduire l’IPv4 en IPv6, ou pour fournir un espace d’adressage sans restriction sur les réseaux privés.
Bloc d’adresses | Plage d’adresses | Nombre d’adresses | Usage |
---|---|---|---|
0.0.0.0/8 | 0.0.0.0 – 0.255.255.255 | 16 777 216 | Logiciel |
10.0.0.0/8 | 10.0.0.0 – 10.255.255.255 | 16 777 216 | Réseau privé : communications locales |
100.64.0.0/10 | 100.64.0.0 – 100.127.255.255 | 4 194 304 | Réseau privé : communications fournisseur d’accès |
127.0.0.0/8 | 127.0.0.0 – 127.255.255.255 | 16 777 216 | Hôte : adresses bouclage localhost (“loopback”) |
169.254.0.0/16 | 169.254.0.0 – 169.254.255.255 | 65 536 | Sous-réseau : communication locale entre deux hôtes connectés directement |
172.16.0.0/12 | 172.16.0.0 – 172.31.255.255 | 1 048 576 | Réseau privé : communications locales |
192.0.0.0/24 | 192.0.0.0 – 192.0.0.255 | 256 | Réseau privé : affectation de protocoles d’IETF |
192.0.2.0/24 | 192.0.2.0 – 192.0.2.255 | 256 | Documentation : TEST-NET-1 |
192.88.99.0/24 | 192.88.99.0 – 192.88.99.255 | 256 | Reservé : relai 6to4 |
192.168.0.0/16 | 192.168.0.0 – 192.168.255.255 | 65 536 | Réseau privé : communication locales |
198.18.0.0/15 | 198.18.0.0 – 198.19.255.255 | 131 072 | Réseau privé : tests de performance entre deux sous réseaux connectés |
198.51.100.0/24 | 198.51.100.0 – 198.51.100.255 | 256 | Documentation : TEST-NET-2 |
203.0.113.0/24 | 203.0.113.0 – 203.0.113.255 | 256 | Documentation : TEST-NET-3 |
224.0.0.0/4 | 224.0.0.0 – 239.255.255.255 | 268 435 456 | Réservé : IPv4 multicast |
233.252.0.0/24 | 233.252.0.0 – 233.252.0.255 | 256 | Documentation : MCAST-TEST-NET |
240.0.0.0/4 | 240.0.0.0 – 255.255.255.254 | 268 435 455 | Réservé : préservé pour utilisation future |
255.255.255.255/32 | 255.255.255.255 | 1 | Sous réseau : adresse de diffusion par défaut |
Comme on peut le voir dans le tableau, certaines adresses sont réservées à des fins techniques (tests, documentation, affectations de protocoles). Mais que veut dire “réseau privé”, exactement ?
Adresses publiques et privées
Une adresse publique est une adresse assignée à notre routeur par le fournisseur d’accès à Internet qui permet de communiquer sur Internet. Avec une adresse publique, on peut envoyer et recevoir des paquets d’un bout à l’autre du réseau Internet.
Une adresse privée est assignée par le routeur à chaque appareil qui lui est connecté. Cette adresse privée permet la communication au sein du même sous-réseau, par exemple entre appareils connectés au même réseau WiFi. Bien entendu, un appareil ne peut pas utiliser son adresse privée pour envoyer ses paquets en dehors de son sous-réseau. Ce système d’adresses privées favorise l’économie d’adresses IPv4 car plusieurs appareils peuvent avoir la même adresse privée tant qu’ils ne sont pas sur le même réseau.
Adresses de réseau et adresses de diffusion (broadcast)
Les adresses de réseau et celles de diffusion (“broadcast adresses” en anglais), ne figurent pas dans la liste d’adresses réservées ci-dessus. Pourtant, elles ne doivent généralement pas être utilisées non plus.
La plage d’adresses d’un sous-réseau commence avec l’ adresse du réseau lui-même. Par exemple, l’adresse 130.200.189.45/24
fait partie d’un bloc qui commence avec l’adresse 130.200.189.0/24
. Cette dernière est considérée l’adresse du réseau lui-même et ne peut être assignée à une interface particulière.
Il en va de même avec la dernière adresse d’une plage d’adresses. Si l’on reprend l’exemple précédent, la dernière adresse du bloc est 130.200.189.255/24
. On appelle celle-ci l’ adresse de diffusion car lorsqu’on lui envoie un paquet, le paquet sera transmis à toutes les interfaces du réseau. De ce fait, cette adresse de diffusion ne peut pas non plus être assignée à un appareil particulière.
Contrer la pénurie d’adresses IPv4
Une longueur de 32 bits veut dire qu’il y a environ 4 milliards d’adresses IPv4. C’est beaucoup ! Et pourtant, ce n’est pas assez pour tous les appareils connectés à ce réseau mondial. 4 milliards, c’est seulement la moitié de la population humaine. Les habitants de pays en développement utilisent de plus en plus Internet. De plus, un nombre croissant d’objets se voient aussi connectés à Internet : montres, véhicules, alarmes, villes intelligentes, systèmes de surveillance sismique, ou encore domestiques… En bref, tout ce qui fait partie de l’Internet des objets.
Avec la croissance de l’utilisation d’Internet dans les années 90, l’Internet Engineering Task Force s’est penché sur la question d’un successeur à IPv4 qui pourrait proposer beaucoup plus d’adresses…
Les adresses IPv6
La version 6 d’IP augmente considérablement la taille des adresses IP de 32 à 128 bits. 128 bits, c’est une capacité de plus de 340 sextillions adresses. C’est largement plus que suffisant pour que chaque grain de sable sur terre ait sa propre adresse IP, voire plusieurs !
Une adresse IPv6 s’écrit en hexadécimal, avec 8 groupes de 16 bits (2 octets) séparés d’un double point “:” :
2001:0db8:0000:85a3:0000:0000:ac1f:8001
On peut raccourcir la notation en supprimant quelques zéros non-significatifs :
2001:db8:0:85a3:0:0:ac1f:8001
Et on peut même l’abréger encore s’il y a deux ou plusieurs groupes consécutifs de 16 bits nuls en conservant uniquement les “:” de chaque côté de la suite de chiffres omise, comme ceci :
2001:db8:0:85a3::ac1f:8001
De plus, les masques et les notations CIDR s’appliquent aussi aux adresses IPv6.
Comme il n’est pas envisageable d’éteindre la totalité d’Internet le temps de mettre tous les hôtes et routeurs à la nouvelle version d’IP, IPv6 est déployé progressivement sur Internet. IPv6 est rétrocompatible avec IPv4, mais le contraire n’est pas garanti. Certains routeurs et hôtes sont incapables d’exécuter IPv6. En attendant de les remplacer, le paquet IPv6 qui doit passer par un routeur incompatible peut se voir temporairement déguisé en IPv4 et restitué en IPv6 plus tard sur son chemin, si possible.
Une autre astuce à partager, une petite question à poser, ou une découverte intéressante à propos des adresses IPv4, du routage ou des sous-réseaux ? Je serai ravie de lire et de répondre à tout ça dans les commentaires. Bon code !
Sources et lectures supplémentaires
- Kurose, J. F., Ross, K. W., 2013, Computer Networking: A Top Down Approach, Sixth Edition, Chapter 1: Computer Networks and the Internet, pp. 1-82.
- Wikipédia, Sous-réseau [ Wikipédia]
- Wikipedia, IPv4 [ Wikipedia]
- RFC editor, Special-Purpose IP Address Registries (2013) [ rfc-editor.org]