Un petit truc sympa aujourd’hui, je partage une méthode que j’ai apprise au début de mes études, pour calculer à partir d’une adresse IP et d’un masque de sous-réseau, l’adresse IP du réseau tout entier et le nombres d’adresses IP disponibles pour les hôtes.
C’est, pour moi, un sujet assez difficile à expliquer (surtout à l’écrit…), par conséquent cet article sera un “pas-à-pas” avec un exemple simple qui sera plus ou moins décortiqué.
Gardez l’aspirine près de vous et préparez votre cerveau à sortir de sa zone de confort !
Calculer l’adresse IP d’un réseau et le nombre d’hôtes disponibles
Avant de commencer, comme toujours, un peu de théorie ! Savoir faire c’est bien, comprendre de quoi on parle, c’est mieux…
Info ++ : un minimum de connaissances sur le sujet est requis, je ne ferrai ici qu’un survol. Vous devez savoir à minima qu’il existe des adresses IP publiques (routables sur internet) et privées (réservées aux réseaux locaux), à quoi ressemble une adresse IP (suites de nombres allant de 0 à 255 en 4 parties délimitées par des points) et comment la trouver sur une machine (graphiquement ou en lignes de commandes). |
C’est quoi une adresse IP ?
Et bien on peut dire que c’est l’identifiant “logique” d’une carte réseau, qui lui permet de communiquer avec les autres machines d’un réseau (à ne pas confondre avec l’adresse MAC d’une carte réseau qui elle, est l’identifiant “physique”).
C’est grâce aux adresses IP que les paquets de données sont acheminés à travers le plus grand réseau mondial qu’est Internet. Une adresse IP doit être unique sur un même réseau sous peine de conflits et gros dysfonctionnements.
IP signifie “Internet Procol”, vous avez surement déjà entendu les notions d’IPv4 et d’IPv6.
IPv4 est en réalité la première version du protocole IP, toujours en usage de nos jours.
IPv6 est le futur d’IPv4, créé pour pallier à un manque d’adresses IPv4 menaçant de plus en plus chaque années.
Info + : Si vous voulez en savoir plus sur la pénurie d’adresses IPv4 qui se profile, consultez l’article suivant émanent directement de l’ARCEP : Suivi épuisement adresses IPv4 |
Nous allons nous concentrer uniquement sur IPv4 dans cet article.
Voici quelques exemples d’adresses IPv4 : 172.16.2.55, 8.8.4.4, 65.48.12.1, 253.17.25.139…
En soit, une adresse IP seule n’a aucun intérêt. Elle est indissociable de ce que l’on appelle un “masque de sous-réseau”.
C’est quoi un masque de sous-réseau ?
C’est justement l’élément qui va nous servir à déterminer à quel réseau appartient une adresse IP.
Le masque de sous-réseau permet de faire la distinction entre l’adresse IP d’un réseau, et l’adresse IP d’un client, c’est à dire d’un PC, d’un serveur etc… On parle techniquement d’adresse réseau et d’adresse hôte.
Un masque de sous-réseau peut s’écrire de façon décimale comme ceci : 255.255.0.0, exactement de la même forme qu’une adresse IP, mais également en notation CIDR (Classless Inter Domain Routing) : /16
Le masque de sous-réseau joue un rôle très important au niveau du routage puisque la fonction même du routage est de transférer les paquets d’un réseau A, vers un réseau B. Hors, pour transférer un paquet, il faut savoir dans quel réseau de situe le destinataire, donc, il faut connaitre son masque de sous-réseau… CQFD.
Rentrons directement dans vif du sujet avec un exemple concret, une adresse IPv4 et son masque de sous-réseau que vous pouvez surement trouver dans votre propre réseau domestique : 192.168.1.7 /24
Cette adresse se décompose en 2 parties :
- 192.168.1.7 qui est l’adresse IP de l’hôte (de votre PC par exemple)
- Le /24 qui est le masque de sous-réseau en notation CIDR (soit 255.255.255.0 en décimal)
Je le rappelle (on sait jamais si vous avez oubliez depuis…) c’est grâce à ce masque de sous-réseau que nous allons pouvoir connaître l’adresse du réseau auquel appartient notre adresse IP mais également combien d’adresses IP sont disponibles pour utilisation dans notre réseau, c’est-à-dire attribuables à un hôte.
Une adresse IPv4 est composée de 4 parties délimitées par des points. Chaque partie est égale à 1 octet (système de codage) soit 8 bits (unité de données). Elle est codée sur 4 octets au total soit 32 bits.
Les masques de sous-réseau en notation CIDR vont de /0 jusqu’ à /32 puisqu’il y a 32 bits dans une adresse IPv4. En notation dite “décimale“, ils s’écrivent de 0.0.0.0 à 255.255.255.255.
⇒ En résumé l’on peut dire que, si on a une adresse IP avec le masque /24, cela signifie qu’on aura 24 bits (8 bits x 3 octets) utilisés pour définir le réseau lui-même. Les 8 bits restants (soit le dernier octet) représentent la partie “hôte” de l’adresse IP.
⇒ On résume d’une autre façon : si on a une adresse IP avec le masque /24, cela signifie qu’on aura 3 octets utilisés pour définir le réseau lui-même. L’octet restant, la 4ème et dernière partie de l’adresse IP (soit les 8 bits restants), sera donc utilisé pour la partie “hôte” (serveurs, PC, équipements réseau…).
OK compris mais maintenant, comment calculer le réseau qui contient l’adresse IP 192.168.1.7 /24 ?
En convertissant l’adresse IP et le masque du système de numérotation “décimal” (base 10) au système de numérotation “binaire” (base 2).
Le binaire est le langage de l’ordinateur qu’utilise son unité de données principale : le bit.
Le binaire étant un système de numérotation en base 2, c’est-à-dire qui n’utilise que des multiples de 2 (2^n), il n’utilise que 2 chiffres : le 0 et le 1. Un bit peut donc être égal soit à 0 soit à 1. Si on vulgarise le binaire, on peut dire que 1 = On et 0 = Off ou 1 = Oui et 0 = Non.
Pour effectuer notre calcul de façon plus imagée, nous allons utiliser le tableau suivant qui représente 1 octet, soit 8 bits (1 colonne = 1 bit) :
Un octet représente en décimal la valeur 256 (2^8). La somme de toutes les colonnes du tableau est égale à 255. Si on ajoute le 0 (qui compte pour 1 en informatique) on a bien 256 valeurs.
Décomposons maintenant l’adresse 192.168.1.7 en binaire dans notre tableau.
Commençons par le 1er octet valant 192. Dans mon tableau, je vais sélectionner seulement les colonnes qui vont me permettre de faire un total de 192 (soit 128+64) et ajouter des 1 dessous car les valeurs m’intéressent (souvenez-vous : 1 = Oui, 0 = Non).
Les autres colonnes non utilisées seront donc mises à zéro.
Si on relève toute la ligne que l’on vient d’écrire, on peut dire que le nombre 192 s’écrira alors écrit en binaire : 11000000
Mettons le reste de l’adresse IP 192.168.1.7 en binaire :
L’adresse IP 192.168.1.7 s’écrira donc en binaire : 11000000 10101000 00000001 00000111
Si on effectue la même conversion pour le masque de sous-réseau /24, on devrait avoir le résultat suivant : 11111111 11111111 11111111 00000000 soit en décimal : 255.255.255.0
On va maintenant superposer l’adresse IP + le masque en binaire et ainsi dégager l’adresse du réseau lui-même.
Le calcul est simple ; on transpose les résultats trouvés précédemment en binaire (adresse et masque) dans un nouveau tableau avec un bit par colonne :
Dans la 1ère ligne, on a l’adresse IP 192.168.1.7 en binaire et dans la seconde le masque de sous-réseau.
Et on calcule ! Mais en binaire attention ! On ne pourra donc qu’avoir en résultat 0 ou 1 !
WTF ?!
Pour calculer, on additionne et cela se fait colonne par colonne. A chaque fois qu’on aura dans l’addition le chiffre 0, le résultat sera 0 ! Si on a que des 0 le résultat sera 0 et si on a que des 1, le résultat sera 1…
L’adresse IP du réseau (se trouvant donc dans la 3ème ligne du tableau) s’écrira donc en binaire : 11000000 10101000 00000001 00000000
Et si on passe le résultat en décimal en utilisant le tableau du début avec les valeurs décimales, on tombe sur : 192.168.1.0 qui est donc l’adresse du réseau qui contient l’hôte 192.168.1.7 !
Vous venez d’apprendre à calculer l’adresse d’un réseau en partant d’une adresse IP et de son masque !
Ah ouaiiis ! Et du coup pour savoir combien d’hôtes sont utilisables dans ce réseau on fait comment ?
Et bien c’est facile !
On sait maintenant que les 8 derniers bits sont pour les hôtes puisqu’ils sont tous à 0 pour la partie “réseau”. Ça veut donc dire qu’ils sont tous à 1 pour partie “hôte” !
On va donc faire le calcul inverse maintenant : binaire vers décimal !
On reprend notre tableau du début qui représente les 8 derniers bits et on le rempli avec des 1 :
Et maintenant, on additionne ensemble les nombres décimaux de chaque colonne qui contient un 1 soit :
128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255
On a un résultat décimal de 255, soit 255 adresses IP disponibles pour la partie hôte.
Si on ajoute ce résultat au dernier octet de l’adresse réseau que l’on a trouvé : 192.168.1.0, on obtient 0 + 255 = 255.
Les adresses IP pour le réseau 192.168.1.0/24 iront donc de 192.168.1.0 à 192.168.1.255 soit un total de 256 valeurs car le 0 compte pour 1 valeur également, soit la valeur totale d’un octet !
SAUF QUE…
En informatique, la 1ère adresse et la dernière adresse d’un réseau ne sont JAMAIS ATTRIBUABLES.
Dans notre exemple, on a calculé que le réseau est 192.168.1.0, on se dit donc que la 1ère adresse est 192.168.1.0.
FAUX ! C’est en réalité l’adresse du réseau lui-même et elle ne peut donc pas être donnée à un équipement puisqu’elle représente un tout, elle ne rentre donc pas dans les calculs d’hôtes. La première adresse attribuable sera donc la suivante : 192.168.1.1.
La dernière adresse du réseau 192.168.1.255 est ce qu’on appelle une adresse de broadcast, c’est-à-dire l’adresse qui englobe en quelques sortes toutes les autres, c’est une adresse qualifiée “d’universelle”.
Cette adresse est utilisée pour envoyer des messages à tous les participants du réseau. Elle ne doit donc pas être attribuée manuellement. La dernière adresse attribuable sera donc la précédente : 192.168.1.254.
Du coup, on recalcule :
256 adresses IP au total – l’adresse du réseau – l’adresse de broadcast = 254 adresses libres.
Nous avons donc au final, 254 adresses IP disponibles pour nos hôtes dans notre réseau 192.168.1.0/24 qui iront de :
192.168.1.1 à 192.168.1.254
Vous venez d’apprendre à calculer le nombres d’adresses hôtes disponibles dans un réseau en partant d’une adresse IP et d’un masque !
Un récap des informations que nous avons trouvé en partant de l’adresse d’un client : 192.168.1.7 /24
Voilà pour ce petit article sur le calcul d’adresse IP réseau/hôte qui offre une première approche du binaire !
A force d’entrainement, vous vous rendrez compte que vous n’aurez plus besoin d’effectuer ces calculs et vous serez en mesure de très rapidement visualiser le nombre d’adresses IP hôtes et l’adresse d’un réseau !
A bientôt !