Adresses IPv4 et le calcul des masques de sous-réseaux

I. Présentation

Aujourd'hui, nous allons nous intéresser à une notion de base lorsque l'on parle des réseaux informatiques et des adresses IPv4 : le calcul des masques de sous-réseau. Une étape indispensable pour obtenir le nombre d'hôtes disponibles dans un réseau et déterminer le bon masque de sous-réseau en fonction de ses besoins, notamment le nombre de sous-réseaux à mettre en place pour segmenter votre réseau local. C'est aussi un moyen d'obtenir l'adresse du réseau ainsi que l'adresse de broadcast c'est-à-dire l'adresse de diffusion de ce réseau.

Certains découvriront cette notion tandis que cela rappellera des souvenirs à d'autres, quoi qu'il en soit : bonne lecture ou bon stream si vous regardez la vidéo.

II. Réaliser des calculs avec les masques de sous-réseaux : pourquoi ?

Lorsque l'on détermine l'architecture de son réseau, on va déterminer un réseau de départ puis créer plusieurs sous-réseaux associés à des VLANs (réseau logique), si l'on veut segmenter son réseau et suivre les bonnes pratiques.

Pour gérer les masques de sous-réseau, on peut s'appuyer sur deux méthodes différentes : FLSM (Fixed Length Subnet Mask) et VLSM (Variable Length Subnet Masking).

  • FLSM

Cette méthode s'appuie sur les classes d'adresses IP avec des masques de sous-réseaux fixes et par défaut. Par exemple :

  • Classe A : 255.0.0.0 soit /8
  • Classe B : 255.255.0.0 soit /16
  • Classe C : 255.255.255.0 soit /24

Avec ce mode de fonctionnement, les masques de sous-réseau sont fixes donc potentiellement on va gaspiller des adresses IP sur son réseau interne.

  • VLSM

Cette méthode s'appuie sur des masques de sous-réseau à longueur variable. De cette manière, on va pouvoir découper notre réseau de base (par exemple : 192.168.1.0/24) en plusieurs sous-réseaux en fonction de nos besoins : si j'ai besoin d'un sous-réseau pour connecter 100 machines, pourquoi est-ce que je devrais mettre un masque de sous-réseau qui permet d'en accueillir plus de 60 000 ?

En suivant cette méthode, on va pouvoir découper précisément son réseau en fonction de ses besoins réels. Pour réaliser ce subnetting, il est nécessaire de trouver le bon masque de sous-réseau. Pour bien comprendre comment cela fonctionne, cela passe par la conversion binaire et ce que l'on peut appeler le calcul de masque de sous-réseau.

III. Rappel : format d'une adresse IPv4

Une adresse IPv4 est composée de 4 blocs de chiffres délimités par des points avec une valeur allant de "0" à "255" pour chaque bloc. Voici quelques exemples d'adresses IPv4 :

✔ 192.168.1.1

✔ 10.0.10.100

✔ 172.16.100.254

Chaque bloc correspond à ce que l'on appelle un octet et nous savons également qu'un octet est égal à 8 bits. Une adresse IPv4 est codée sur 4 octets c'est-à-dire un total de 32 bits : 4 x 8 bits.

La première partie de l'adresse IP correspond au réseau (ou au sous-réseau), tandis que la deuxième partie correspond à l'hôte.

Pour mieux appréhender cet article et en savoir plus sur les adresses IP, je vous recommande de regarder ma vidéo "Les adresses IP pour les débutants" ou de lire l'article associé.

IV. Qu'est-ce qu'un masque de sous-réseau ?

Comme je le disais, notre adresse IP est découpée en deux parties : la partie réseau et la partie hôte. La question c'est, comment est positionnée cette limite entre les deux blocs ? Cette limite entre la partie réseau et la partie hôte est déterminée par le masque de sous-réseau. Le masque de sous-réseau va permettre de découper un réseau en plusieurs sous-réseaux.

Le masque de sous-réseau peut s'écrire de deux façons différentes :

Notation décimale : 255.255.255.0, 255.0.0.0, 255.255.248.0, etc.

Notation CIDR (Classless Inter Domain Routing) : /8, /16, /22, /24, etc.

La notation CIDR est la norme aujourd'hui et sachez qu'elle commence à /0 pour 0.0.0.0 et se termine à /32 pour 255.255.255.255.

Le fait de maîtriser les masques de sous-réseau va permettre d'optimiser son réseau, de comprendre comment il est organisé et de prévoir les évolutions futures.

V. Calculer l'adresse IP d'un réseau à partir de son masque de sous-réseau

Dans cet exemple, je vais prendre une adresse IP que tout le monde ou presque connaît : 192.168.1.1/24. Dans de nombreux cas, il s'agit de l'adresse IP de votre box à la maison : mais alors, à quel réseau appartient cette adresse IP ? C'est ce que nous allons voir ensemble.

Pour commencer, je vous propose que l'on dissocie l'adresse IPv4 de son masque de sous-réseau :

✔ L'adresse IP de notre box (ou de notre machine) est 192.168.1.1, nous dirons que c'est l'adresse IP de l'hôte

✔ La valeur "/24" qui correspond au masque de sous-réseau en notation CIDR, ce qui correspond à 255.255.255.0

Le masque de sous-réseau est indispensable pour connaître le réseau auquel appartient notre hôte et notre adresse IP 192.168.1.1. Sans ce masque de sous-réseau, cette adresse IP n'a pas trop d'intérêt finalement. À partir du moment où l'on aura déterminé l'adresse IP du réseau, on sera en mesure de calculer combien d'hôtes on peut adresser dans notre réseau. Autrement dit, si vous utilisez ce réseau IPv4 chez vous, vous allez savoir combien d'appareils en même temps vous pouvez connecter à ce réseau 😉.

Le masque de sous-réseau /24 (ou 255.255.255.0) nous indique qu'il y a 24 bits utilisés pour définir le réseau en lui-même : une indication importante, mais comment l'interpréter ?

On sait qu'un octet est égal à 8 bits, donc on peut déterminer que 3 octets (soit 24 bits) sont utilisés pour définir le réseau et que le dernier et quatrième octet (soit 8 bits) sera utilisé pour la partie hôte. Quand je dis parti "hôte", je veux dire la partie de l'adresse IPv4 qui correspondra à votre ordinateur, votre smartphone, votre serveur, ou encore votre prise connectée.

A. Traduire l'adresse IP en binaire

➡ Maintenant, la question se pose : comment calculer l'adresse du réseau qui contient l'adresse IP 192.168.1.1/24 ?

Déjà, il va falloir que l'on se débarrasse de la notation décimale, car elle n'est pas assez précise pour répondre à cette question. Nous allons convertir la valeur décimale, c'est-à-dire en base 10, en valeur binaire c'est-à-dire en base 2. 

La numérotation binaire va permettre de convertir la valeur de notre octet en bits. Qui dit numérotation binaire, dit seulement deux valeurs : 0 ou 1. Pour faire la correspondance avec la notation décimale, il faudra ensuite utiliser des multiples de deux.

Nous savons qu'un octet est égal à 8 bits et que chaque bit est une puissance de deux, en commençant par "2 puissance 0" qui est égal à 1, "2 puissance 1" qui est égal à 2, etc... Ce qui donne le tableau suivant :

Notre tableau est vide, nous allons le remplir pour chaque bit en indiquant 0 ou 1.

Commençons par le premier octet "192". Cela nécessite de faire un peu de mathématiques et de calcul mental, mais rassurez-vous, c'est facile ! En fait, il faut trouver quels sont les multiples de 2 à additionner pour faire 192. La réponse : 128 + 64 = 192. Donc, nous allons mettre un "1" dans ces deux colonnes et 0 dans les autres, car elles ne nous intéressent pas. Indiquer "0" comme valeur pour un bit signifie mettre le bit à zéro.

Ce qui donne :

➡ Désormais, on sait que la valeur décimale 192 s'écrit 11000000 en binaire.

Faisons la même chose pour l'adresse IPv4 entière, voici le résultat :

Si l'on écrit sur une seule ligne, 192.168.1.1 en notation binaire cela donne :

11000000.10101000.00000001.00000001

B. Traduire le masque de sous-réseau en binaire

Nous allons faire le même travail avec le masque de sous-réseau et le convertir en binaire. Sur le même principe, voici le résultat :

Sur une seule ligne, 255.255.255.0 se traduit en binaire de cette façon :

11111111.11111111.11111111.00000000

C. Déterminer l'adresse du réseau IPv4

Nous avons deux valeurs en binaire : l'adresse IPv4 et le masque de sous-réseau. À partir de ces deux informations, nous allons pouvoir déterminer l'adresse du réseau IPv4.

Pour bien comprendre, il est nécessaire de superposer les deux valeurs binaires pour les 4 octets. Voici la représentation :

➡ Sur la troisième ligne du tableau, la conversion en binaire de l'adresse IPv4

➡ Sur la quatrième ligne du tableau la conversion en binaire du masque de sous-réseau

Les valeurs étant superposées, nous allons ajouter une ligne supplémentaire qui va permettre d'obtenir l'adresse du réseau. Pour remplir cette ligne, voici les règles à suivre :

  • Lorsqu'il y a deux bits à 1 dans la même colonne (le bit de l'adresse IPv4 et le bit du masque de sous-réseau), on indique "1". En résumé : 1 + 1 = 1.
  • Lorsqu'il y a un bit à 1 et l'autre 0, ou un bit à 0 et l'autre à 1, on indique 0. En résumé : 0 + 1 = 0 et 1 + 0 = 0
  • Lorsqu'il y a deux bits à zéro, on indique 0. En résumé : 0 + 0 = 0

Autrement dit, il n'y a que quand le bit de l'adresse IPv4 et le bit du masque de sous réseaux sont à 1 tous les deux que le résultat sera "1". Dès qu'il y a un zéro, le résultat sera "0".

Si l'on reprend cet exemple, on obtient le résultat suivant (dernière ligne) :

Nous avons donc l'adresse IP de notre réseau, au format binaire :

11000000.10101000.00000001.00000000

Il ne reste plus qu'à faire la mécanique inverse : convertir la valeur binaire de chaque octet en valeur décimale. Ce qui sera plus lisible. Si l'on reprend les octets un par un, nous obtenons :

11000000 : 192

10101000 : 168

00000001 : 1

00000000 : 0

Nous pouvons affirmer que notre hôte avec l'adresse IPv4 "192.168.1.1" fait partie du réseau IPv4 "192.168.1.0/24".

VI. Obtenir le nombre d'hôtes disponibles dans un réseau

Nous avons l'adresse de notre réseau : 192.168.1.0. Combien est-ce qu'il y a d'adresses IP disponibles pour mes hôtes dans ce réseau ? Autrement dit, combien est-ce que je peux connecter d'hôtes sur mon réseau ?

Reprenons notre masque de sous-réseau : 255.255.255.0, en binaire 11111111.11111111.11111111.00000000. Rappelez-vous, grâce à cette valeur nous avons pu obtenir l'adresse de notre réseau.

Nous savons que le dernier octet correspond aux hôtes, car tous les bits sont à "0". Il suffit de faire le calcul inverse pour connaître le nombre d'hôtes possible dans ce réseau.

Cela revient à prendre "00000000", à inverser les valeurs, ce qui va donner tout simplement "11111111" puis à convertir la valeur binaire en décimale. Reprenons notre tableau :

Si l'on additionne la valeur de chaque bit, on obtient : 128 + 64 + 32 + 16 + 8 + 4 + 2 +1 = 255

Le résultat en décimal est 255, donc nous avons 255 adresses disponibles pour nos hôtes... Enfin pas tout à fait ! Voici toute la vérité :

Il y a 256 adresses IP disponibles dans ce réseau et non 255 adresses IP, car l'adresse en ".0" compte : 255 + 1 = 256. S'il y a 8 bits pour la partie hôte, il suffit de faire 2^8 (2 puissance 8) = 256 adresses IP

✔ Sur ce total de 256 adresses IP disponibles, il y a deux adresses que l'on ne pourra jamais attribuer (peu importe le réseau, peu importe le masque) : 192.168.1.0, car il s'agit de l'adresse du réseau et 192.168.1.255, car il s'agit de l'adresse de diffusion du réseau (broadcast)

✔ Peu importe le nombre d'adresses IP disponibles dans un réseau, il faut toujours soustraire deux adresses IP correspondantes à l'adresse IP du réseau et à l'adresse IP de diffusion

Note : l'adresse IP de broadcast est une adresse globale qui permet d'envoyer un message à tous les participants d'un même réseau.

En résumé, on peut considérer que la plage d'adresses IP que l'on peut attribuer à nos hôtes (routeur, ordinateurs, smartphones, etc.) est la suivante : 192.168.1.1 à 192.168.1.254. Soit un total de 254 adresses IP, non 255 ni 256. Pour finir, on peut établir une synthèse de notre réseau :

Tout cela peut paraître lourd, mais rassurez-vous, avec l'habitude on est plus obligé de passer par ces différents calculs. Par exemple, on sait automatiquement qu'un réseau avec un masque de sous-réseau en "/24" correspond à un réseau où l'on peut connecter 254 hôtes.

VII. Comment trouver le bon masque pour un nombre d'hôtes spécifique ?

Prenons le problème à l'envers : quel doit être le masque de sous-réseau pour permettre un nombre spécifique d'hôtes ? 

Tout d'abord, ce nombre d'hôtes ne pourra pas être à l'unité près : ce sera forcément un multiple de 2, c'est-à-dire 2^X. Si l'on veut accueillir 110 hôtes, on devra opter pour un masque qui permet 128 hôtes, car c'est le multiple qui s'en rapproche le plus : 2^7 = 128.

En fonction du masque de sous-réseau, on peut connaître à l'avance le nombre d'hôtes. Je vous propose un tableau récapitulatif des masques de sous-réseau en commençant à 255.0.0.0 soit /8, tout en sachant que cela commence à 0.0.0.0, puis 128.0.0.0, 192.0.0.0, etc.

Si l'on veut un réseau qui permet d'accueillir 110 hôtes, on partira sur un masque de sous-réseau en 255.255.255.128 soit /25, pour s'en rapprocher le plus.

Note : le masque de sous-réseau 255.255.255.252 soit /30 permet seulement deux adresses IP pour les hôtes, mais il est particulièrement intéressant. En effet, il est utile pour créer un réseau d'interconnexion entre deux équipements, par exemple un pare-feu et un routeur. Chaque équipement aura une adresse IP au sein de ce "petit réseau" isolé.

Si l'on applique un masque de sous-réseau /25 sur notre réseau 192.168.1.0, on passe de 8 bits à 7 bits pour les hôtes. Du coup, nous avons 1 seul bit pour gérer la valeur du sous-réseau. Ce qui implique :

✔ L'adresse du réseau reste la même à la différence du masque, à savoir 192.168.1.0/25

✔ L'adresse de broadcast est différente, ce sera 192.168.1.127, car c'est l'adresse IP la plus haute de notre sous-réseau. Pourquoi "127" ? Car 64 + 32 + 16 + 8 + 4 + 2 + 1 = 127

✔ Les hôtes pourront bénéficier des adresses IP allant de 192.168.1.1 à 192.168.1.126

VIII. Découper un réseau en plusieurs sous-réseaux

Partons du réseau 192.168.1.0/24, que nous allons découper en plusieurs sous-réseaux dans le but d'accueillir entre 30 et 50 machines sur chaque sous-réseaux.

Si l'on utilise le masque par défaut qui est associé à la classe C, à savoir /24, nous avons qu'un seul sous-réseau : 192.168.1.0/24. Maintenant, si l'on change le masque et que l'on prend un masque de sous-réseau en /26 (255.255.255.192), on va découper notre réseau d'origine en sous-réseau.

Nous obtenons alors le découpage suivant avec un masque de sous-réseau avec 26 bits à 1 :

On se retrouve avec deux bits de sous-réseaux à "1" pour gérer la partie sous-réseau. Ces deux bits correspondent aux valeurs décimales "128" et "64". Je vous laisse prendre connaissance de ce schéma :

Grâce à notre masque de sous-réseau, nous avons découpé notre réseau d'origine en 4 sous-réseaux. Voici une synthèse de nos sous-réseaux :

Si l'on schématise ces sous-réseaux sur un réseau, cela pourrait permettre de découper notre réseau en plusieurs VLANs. Par exemple, un sous-réseau pour les serveurs, un autre pour les imprimantes et copieurs, un pour les machines internes et un pour les machines des visiteurs.

Note : si les 4 sous-réseaux sont situés sur le même site comme sur ce schéma, on peut imaginer qu'un site distant pourra joindre ces 4 sous-réseaux en créant une route qui reprend directement l'adresse du réseau : 192.168.1.0/24. Cela va automatiquement englober nos sous-réseaux et permettre d'avoir une seule route pour notre site : intéressant en termes de gestion.

Nous avons appliqué cette méthode pour créer des sous-réseaux avec un nombre d'hôtes réduits, mais on peut aussi appliquer cette méthode pour créer des sous-réseaux avec un nombre d'hôtes beaucoup plus important.

IX. Conclusion

Cette introduction au calcul de masques de sous-réseau touche à sa fin. J'espère que vous avez bien compris le principe de calcul : n'hésitez pas à vous entraîner, c'est le meilleur moyen d'assimiler cette notion qui n'est pas si évidente au premier abord. Voici un tableau vide pour vous exercer :

Si vous recherchez le masque idéal, vous pouvez utiliser une calculatrice en ligne : c'est très pratique, car vous indiquez votre réseau et un masque de sous-réseau, puis l'outil va vous donner le nombre de sous-réseaux possibles et le nombre d'hôtes par sous-réseau, mais c'est bien de savoir comment cela fonctionne en lisant cet article au préalable 😉. Utiliser une calculatrice comme celle mentionnée ci-dessous, c'est un moyen aussi de poursuivre l'apprentissage.

Calculatrice de masque sous-réseau IPv4

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian Burnel

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

florian has 3285 posts and counting.See all posts by florian

7 thoughts on “Adresses IPv4 et le calcul des masques de sous-réseaux

  • Un bon rappel pour l’histoire d’Internet, mais un tuto sur IPv6 serait plus d’actualité et plus utile, à mon humble avis ^^

    Répondre
    • Ipv4 a encore de beaux jours devant lui, pour ce qui est topologie réseau privé. C’est juste plus simple de retenir un équipement réseau ou un serveur adressable via l’IP 192.168.23.10.
      Mais par contre oui, un cours sur IPv6 serait d’utilité publique, vu la méconnaissance de ce protocole dans notre métier 🙂

      Répondre
      • Sans compter qu’il y a encore des applis métiers qui ne connaissent pas IPv6… Si, si. J’en ai même vu qui ont besoin comme prérequis d’avoir un hostname à 8 caractères, et pas un de plus, c’est dire… Donc IPv4 a encore de beaux jours devant lui 😀

        Répondre
        • Le fait qu’il y a encore des logiciels métier uniquement en IPv4 montre justement qu’on manque de radicalité pour le passage à l’IPv6.

          Tant qu’on proposera de l’IPv4, beaucoup s’en contenteront malheureusement. Mais ce n’est pas une excuse pour imposer la connaissance de l’IPv4 aux plus jeunes, plus vite on l’oubliera mieux on se portera 😋

          Certaines entreprises mise déjà depuis quelques temps sur de l’adressage uniquement en IPv6. Et c’est, je pense, une démarche à encourager.

          D’ailleurs, pourquoi votre site n’est pas disponible en IPv6 ? Car 1&1 le propose, non ?

          Répondre
      • Les adresses IPv6 lien-local se retienne plus facilement, étant donné qu’il est créé avec l’adresse MAC.
        Sinon, le mDNS, le DNS, ou le fichier hosts sont là pour éviter de retenir les adresses IP 😏

        Répondre
  • Quelle clarté et rigueur dans vos explications, merci pour la débutante que je suis 😃!

    Répondre
  • Bjr
    Je tien à vous remercie pour votre cours mais j’ai quel que chose que j’ai pas compris au niveau de calcul
    je voulais savoir si j’ ai une adresse IP et je voulais savoir le masque de (sr) qui va avec comment peut-on faire ?

    Répondre

Répondre à ABDOURAHIM Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

 

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.