L'adressage IPv4
Ce que ce chapitre apporte
- Décomposer une adresse IPv4 en une partie réseau et une partie machine.
- Calculer une adresse de réseau, une adresse de diffusion et une plage utilisable.
- Expliquer comment une machine décide si une destination est locale ou distante.
- Distinguer adresses publiques, privées et particulières.
- Construire un plan d'adressage à longueur variable et dire ce qu'il économise.
- Reconnaître les pannes qui viennent d'un masque et non d'une adresse.
Une adresse MAC identifie une carte, et rien de plus : elle ne dit pas où cette carte se trouve, et ne permet donc de choisir aucun chemin. Une adresse IP fait l'inverse. Elle est construite pour répondre à une seule question, posée des millions de fois par seconde dans le monde : cette machine est-elle à côté de moi, ou faut-il passer par quelqu'un pour la joindre ?
Tout ce chapitre découle de cette question. La réponse s'obtient par un calcul très simple, que toute machine fait avant chaque envoi, et la plupart des pannes d'adressage sont des cas où deux machines répondent différemment à la même question.
Une adresse coupée en deux
Une adresse IPv4 tient sur 32 bits, écrits en quatre nombres de 0 à 255 séparés par des points. Ces 32 bits ne forment pas un identifiant d'un seul tenant : ils se coupent en deux parties, et c'est le masque qui dit où passe la coupure.
Le masque est une suite de bits à 1 suivie de bits à 0. Les bits à 1 désignent la partie réseau de l'adresse, les bits à 0 la partie machine.
La notation /24 donne simplement le nombre de bits à 1 : elle est équivalente à 255.255.255.0, et bien plus lisible.
Pour obtenir l'adresse du réseau, une machine ne fait pas une comparaison mais un calcul : un ET logique entre l'adresse et le masque, bit à bit. Tout bit de la partie machine est ramené à zéro, et ce qui reste est le réseau.
La colonne binaire montre ce que la notation décimale cache. Les 26 premiers bits sont recopiés à l'identique, les 6 derniers sont mis à zéro. Sur le troisième octet il ne se passe rien de visible ; c'est le quatrième qui bascule de 130 à 128.
Deux adresses de chaque sous-réseau ne peuvent jamais être données à une machine. La première, avec tous les bits machine à zéro, désigne le réseau lui-même. La dernière, avec tous les bits machine à un, est l'adresse de diffusion : une trame qui la vise s'adresse à toutes les machines du réseau. Un /26 contient donc 64 adresses mais n'en attribue que 62, et cette soustraction de 2 est l'erreur la plus fréquente de tout le chapitre.
Le masque décide qui est le voisin
Avant chaque envoi, une machine applique son masque à sa propre adresse et à celle de la destination. Si les deux calculs donnent le même réseau, elle émet directement sur le réseau local. Sinon, elle envoie à sa passerelle par défaut, un routeur chargé de faire suivre.
C'est tout le mécanisme, et il tient en une comparaison. Sa conséquence est moins évidente : deux machines qui portent le même masque sont d'accord, deux machines qui portent des masques différents peuvent être en désaccord sur leur propre voisinage.
Le cas du dernier commentaire est une panne courante, et elle est déroutante parce qu'elle n'est pas symétrique. Le poste croit son correspondant voisin et lui parle directement, le serveur croit le contraire et répond à son routeur. Selon la configuration du routeur, la conversation fonctionne à moitié, ou pas du tout, et les adresses semblent pourtant correctes.
Une adresse seule ne veut rien dire, il faut toujours lire le masque avec elle. Un relevé de configuration qui donne l'adresse sans le masque est inexploitable, et une adresse notée sans son préfixe dans une documentation est une erreur en attente.
Les adresses qui ne s'attribuent pas
Certaines plages ont un sens fixé, et les rencontrer renseigne immédiatement.
| Plage | Nom | Ce qu'elle signale |
|---|---|---|
127.0.0.0/8 | Bouclage | La machine elle-même ; le paquet ne quitte jamais la carte |
169.254.0.0/16 | Auto-attribution | La machine n'a obtenu aucune adresse et s'en est fabriqué une |
10.0.0.0/8 | Privée | Réseau interne, non routable sur Internet |
172.16.0.0/12 | Privée | Réseau interne, non routable sur Internet |
192.168.0.0/16 | Privée | Réseau interne, non routable sur Internet |
Une adresse en 169.254 est le message d'erreur le plus utile du réseau : elle dit qu'aucun serveur d'attribution automatique n'a répondu. Le problème n'est alors ni l'adresse ni le masque, mais ce qui devait les fournir, et le chapitre 7 y revient.
Les adresses privées sont réutilisables : le même 192.168.1.10 existe dans des millions de réseaux, sans conflit, parce qu'aucun routeur d'Internet n'accepte de les faire suivre. C'est ce qui a permis à IPv4 de tenir bien au-delà de ce que son espace d'adressage laissait prévoir, au prix d'une traduction en sortie que traite le chapitre 7.
Découper un bloc
Une organisation reçoit un bloc et doit le partager entre ses services. Le réflexe naturel est de découper en parts égales ; il est presque toujours mauvais, parce que les besoins ne sont pas égaux.
La méthode qui économise s'appelle le découpage à longueur variable : chaque sous-réseau reçoit la plus petite taille qui loge son besoin, et les grands sont placés en premier. Cet ordre n'est pas une commodité mais une nécessité : un sous-réseau doit commencer à une adresse multiple de sa taille, et placer un petit devant un grand casse cet alignement.
- Le découpage à longueur variable consomme 116 des 256 adresses du bloc, et en laisse 140 pour la suite.
- Les besoins totalisent 99 machines ; 9 adresses attribuables restent inoccupées dans les sous-réseaux déjà taillés, et ne serviront plus.
- Chaque sous-réseau perd deux adresses, l'une pour le réseau, l'autre pour la diffusion : 4 sous-réseaux coûtent donc 8 adresses avant même la première machine.
Basculer d'un mode à l'autre montre le coût du découpage uniforme : la liaison entre deux routeurs, qui n'a besoin que de deux adresses, en reçoit soixante-deux dont soixante ne serviront jamais. Le hachurage marque, dans chaque sous-réseau, la part que le besoin annoncé n'occupe pas.
Un sous-réseau se dimensionne sur le besoin à venir, pas sur le besoin du jour. Passer de 60 à 65 postes fait changer de taille, et changer de taille oblige à replacer tout ce qui suit dans le bloc. C'est le seul endroit du chapitre où il est raisonnable de prévoir large, et une marge d'un cran de plus coûte peu tant que le bloc n'est pas saturé.
Un plan réel comporte presque toujours des liaisons entre routeurs, qui ne portent que deux adresses et se taillent donc en /30. Elles sont nombreuses et minuscules, et c'est exactement ce que le découpage uniforme rend impossible.
- Le découpage à longueur variable consomme 872 des 1024 adresses du bloc, et en laisse 152 pour la suite.
- Les besoins totalisent 789 machines ; 71 adresses attribuables restent inoccupées dans les sous-réseaux déjà taillés, et ne serviront plus.
- Chaque sous-réseau perd deux adresses, l'une pour le réseau, l'autre pour la diffusion : 6 sous-réseaux coûtent donc 12 adresses avant même la première machine.
La méthode de calcul
Trois questions reviennent constamment, et se traitent toujours dans le même ordre.
Quel est le réseau de cette adresse ? Poser l'adresse et le masque en binaire, faire le ET logique. En pratique, seul l'octet où le masque n'est ni 255 ni 0 demande un vrai calcul : la taille du sous-réseau y donne un pas, et l'adresse de réseau est le multiple de ce pas immédiatement inférieur.
Ces deux machines sont-elles voisines ? Calculer le réseau des deux, avec leurs masques respectifs et non un masque supposé commun. Un désaccord est en soi le diagnostic.
Quelle taille pour ce besoin ? Ajouter 2 au nombre de machines, puis prendre la puissance de deux immédiatement supérieure. Soixante postes demandent 62 adresses attribuables, donc un bloc de 64, donc un /26.
Exercices type
Exercice 1 : une machine est en 192.168.4.200/26. Quelle est son adresse de réseau, et combien de machines ce sous-réseau accepte-t-il ?
Afficher la solution
Un /26 découpe le dernier octet par pas de 64 : les réseaux commencent à 0, 64, 128 et 192.
200 tombe entre 192 et 255, donc l'adresse de réseau est 192.168.4.192, et la diffusion 192.168.4.255.
La plage attribuable va de 192.168.4.193 à 192.168.4.254, soit 62 adresses. Pas 64 : la première et la dernière du bloc sont réservées.
Exercice 2 : un poste en 10.1.1.50/24 ne joint pas un serveur en 10.1.1.200/25, alors que les deux sont sur le même commutateur. Pourquoi ?
Afficher la solution
Les masques diffèrent, et les deux machines ne sont donc pas d'accord sur leur voisinage.
Le poste, en /24, calcule le réseau 10.1.1.0 pour lui comme pour le serveur : il conclut qu'ils sont voisins et lui parle directement.
Le serveur, en /25, se calcule dans 10.1.1.128 et place le poste dans 10.1.1.0 : il conclut que le poste est distant, et répond à sa passerelle.
La panne est asymétrique : la demande arrive, la réponse part ailleurs. Le commutateur ne peut rien y faire, car le problème est au-dessus de lui. La correction consiste à aligner les masques, après avoir décidé lequel est le bon.
Exercice 3 : un poste affiche l'adresse 169.254.11.42. Faut-il vérifier son masque ?
Afficher la solution
Non, cette adresse n'a pas été configurée : elle a été fabriquée par le poste lui-même, faute de réponse à sa demande d'adresse.
Corriger son masque ne mènerait nulle part. Ce qu'il faut chercher est plus bas ou plus loin : le câble et le voyant du port, le port du commutateur, puis le service qui devait attribuer l'adresse, ainsi que le chemin entre le poste et lui.
Cette adresse est donc une bonne nouvelle en soi : elle transforme une panne vague en une question précise.
Exercice 4 : un bloc 192.168.20.0/24 doit accueillir un service de 100 postes, un de 50, un de 20 et deux liaisons entre routeurs. Le découpage tient-il ?
Afficher la solution
Il faut d'abord traduire chaque besoin en taille, en n'oubliant jamais les deux adresses réservées.
100 postes demandent 102 adresses, donc un bloc de 128, un /25. 50 postes demandent 52, donc 64, un /26. 20 postes demandent 22, donc 32, un /27. Chaque liaison prend un /30, soit 4 adresses.
Le total fait 128 + 64 + 32 + 4 + 4 = 232 adresses sur les 256 du bloc. Le plan tient, et il reste 24 adresses.
En parts égales il ne tiendrait pas : cinq sous-réseaux de la taille du plus gros, soit cinq fois 128, demanderaient 640 adresses pour un bloc qui n'en compte que 256.
1.Que fait une machine pour savoir si une destination est locale ?
2.Combien de machines un /26 peut-il accueillir ?
3.Deux machines ont la même adresse réseau apparente mais des masques différents. Que se passe-t-il ?
4.Que signifie une adresse en 169.254 ?
5.Pourquoi place-t-on les grands sous-réseaux en premier ?
6.Quelle taille pour un service de 60 postes ?
7.Pourquoi le même 192.168.1.10 peut-il exister dans des millions de réseaux ?
La méthode
- Ne jamais lire une adresse sans son masque : seule la paire a un sens.
- Calculer le réseau des deux extrémités, chacune avec son propre masque, avant de conclure quoi que ce soit.
- Reconnaître 169.254 immédiatement et cesser de chercher du côté de l'adresse.
- Ajouter 2 avant d'arrondir à la puissance de deux supérieure, à chaque dimensionnement.
- Placer les grands sous-réseaux d'abord, les liaisons en
/30à la fin. - Garder une réserve dans le bloc, parce qu'agrandir un sous-réseau déplace tous les suivants.
Synthèse
- Une adresse IPv4 se coupe en une partie réseau et une partie machine ; c'est le masque qui dit où.
- L'adresse de réseau s'obtient par un ET logique, et la diffusion en remettant à un tous les bits machine.
- Chaque sous-réseau perd deux adresses, celle du réseau et celle de la diffusion.
- Une machine émet en direct si le calcul donne le même réseau, et par sa passerelle sinon.
- Des masques différents produisent des pannes asymétriques que les adresses seules ne laissent pas voir.
169.254signale une absence d'adresse, jamais une adresse mal choisie.- Le découpage à longueur variable taille chaque sous-réseau au besoin, et exige de placer les grands en premier.