18 octobre 2018

IPv4 – Calcul de sous-réseaux

Cet article s’adresse aux personnes qui ont déjà connaissance de la théorie de IPv4 et qui souhaitent comprendre comment calculer les sous-réseaux.

A l’aide de ces quelques exemples, vous devriez pouvoir répondre aux questions principales autour de ce sujet.

*Voir une méthode pour convertir le binaire en décimal, et inversement : www.infotrucs.fr/ipv4-conversion-binaire-decimale/

*Pour comprendre les sous-réseaux, il faut d’abord comprendre les classes d’adresses : www.infotrucs.fr/ipv4-les-classes-dadresses/

Définir des sous réseaux :

Admettons qu’on vous donne l’adresse de réseau 197.15.22.0, et qu’on vous demande d’en faire 4 sous-réseaux qui peuvent accueillir au moins 50 hôtes.

La première question à se poser est : quelle est la classe de cette adresse ?

C’est une classe C, donc son masque par défaut est sur 24 bits, soit 255.255.255.0.

On va « emprunter » des bits d’hôtes et les ajouter au masque de sous-réseau (SR). Il nous faut assez de bits pour pouvoir atteindre 4 SR.

A retenir : Si n est le nombre de bits empruntés, on pourra faire 2n SR. Si j’emprunte 2 bits d’hôtes, je peux faire 22 SR, soit 4 SR.

A retenir : Dans ce contexte, il est important de se souvenir de la valeur des puissances de 2.

20 21 22 23 24 25 26 27 28 29
1 2 4 8 16 32 64 128 256 512

On va donc ajouter 2 bits au masque :

On converti le masque en binaire. Par défaut, le masque est :

11111111 11111111 11111111 00000000

Avec 2 bits de plus, il devient :

11111111 11111111 11111111 11000000

Convertissons le dernier octet :

Le masque sera alors pour les 4 SR : 255.255.255.192

Il reste donc 6 bits d’hôtes pas SR.

A retenir : n étant le nombre de bits d’hôtes, on aura 2n-2 hôtes possibles par SR. Il y a 6 bits d’hôtes donc 26 – 2 = 62 adresses IP par SR.




Plages d’adresses :

On va donc maintenir définir quelles sont les adresses des SR et des broadcast. Le premier réseau est forcément 197.15.22.0.

Le masque nous indique que les bits d’hôtes ne sont pas sur les 3 premiers octets, seulement sur le dernier. Convertissons le :

197.15.22.0000 0000 SR0 = 0
197.15.22.0000 0001 Premier hôte du SR = 1
197.15.22.0011 1110 Dernier hôte du SR = 32+16+8+4+2 = 62
197.15.22.0011 1111  Broadcast du SR = 32+16+8+4+2 = 63
197.15.22.0100 0000 SR1 = 64
197.15.22.0100 0001 Premier hôte du SR = 65
197.15.22.0111 1110 Dernier hôte du SR = 64+32+16+8+4+2 = 126
197.15.22.0111 1111 Broadcast du SR = 127
197.15.22.1000 0000 SR2 = 128
197.15.22.1000 0001 Premier hôte du SR = 129
197.15.22.1011 1110 Dernier hôte du SR = 128+32+16+8+4+2 = 190
197.15.22.1011 1111 Broadcast du SR = 191
197.15.22.1100 0000 SR3 = 192
197.15.22.1100 0001 Premier hôte du SR = 193
197.15.22.1111 1110 Dernier hôte du SR = 128+64+32+16+8+4+2 = 254
197.15.22.1111 1111 Broadcast du SR = 255

Sur un réseau avec seulement 4 SR, il est facile de lister tous les SR disponibles. Mais si le réseau comprenait beaucoup de SR, il serait impensable de les lister de la sorte. Il faut donc une technique pour trouver à quel SR appartient telle IP.


Calculer l’adresse d’un SR en fonction d’une IP :

Comment définir à quel adresse de SR appartient l’adresse IP 172.16.145.5 / 255.255.254.0 ?

On va d’abord tout convertir en binaire, et comparer ce masque avec le masque par défaut de cette adresse de classe B :

172.16.145.5     = 1010 1100 . 0001 0000 . 1001 0001 . 0000 0101

255.255.254.0 = 1111 1111 . 1111 1111 . 1111 1110 . 0000 0000

Masque par défaut :

255.255.0.0     = 1111 1111 . 1111 1111 . 0000 0000 . 0000 0000

On constate que 7 bits ont été empruntés pour faire des SR. Donc on à un réseau de 27 = 128 SR.

Il y a 9 bits d’hôtes restant, donc chaque SR peut avoir 29 -2 = 510 hôtes

Pour déduire l’adresse de SR de cette IP, on va utiliser l’opération AND entre l’ip et son masque. L’opération consiste à comparer chaque bit et si les 2 bits superposés sont à 1, on applique leur valeur, si un des 2 bits est à 0 (ou les deux), on ignore leur valeur. Exemple :

1er octet :

Valeur 128 64 32 16 8 4 2 1
IP 1 0 1 0 1 1 0 0
MASK 1 1 1 1 1 1 1 1

= 128+32+8+4 = 172

->Le premier octet de l’adresse de SR reste inchangé.

2ème octet :

Valeur 128 64 32 16 8 4 2 1
IP 0 0 0 1 0 0 0 0
MASK 1 1 1 1 1 1 1 1

= 16

->Le deuxième octet de l’adresse de SR reste inchangé.

3ème octet :

Valeur 128 64 32 16 8 4 2 1
IP 1 0 0 1 0 0 0 1
MASK 1 1 1 1 1 1 1 0

= 128+16 = 144

4ème octet :

Valeur 128 64 32 16 8 4 2 1
IP 0 0 0 0 0 1 0 1
MASK 0 0 0 0 0 0 0 0

= 0

->L’adresse du SR auquel appartient l’IP 172.16.145.5 est donc : 172.16.144.0


Calculer le numéro d’un SR :

Les sous réseaux sont numérotés à partir de zéro (SR0, SR1 etc..)

Pour connaitre le numéro du SR, on prend les bits empruntés et on les converti en décimal. Pour cela utilisons notre tableau de conversion.

Toujours avec la même IP, on récupère les 7 bits empruntés puis on les converti :

172.16.145.5/23     = 1010 1100 . 0001 0000 . 1001 0001 . 0000 0101

L’IP 172.16.145.5/23 fait partir de SR72

ATTENTION : Cette méthode ne s’applique que lorsque les SR ont tous le même masque de sous-réseau et donc le même nombre d’hôtes. Dans les cas de figure où les sous-réseaux sont différents, comme dans le prochain exemple, il n’est pas possible de calculer le numéro du SR.


Définir des sous réseaux différents :

Il se peut que l’on vous demande de créer des SR possédants des nombres d’hôtes différents et qu’il soit alors plus intéressant de créer des SR avec des masques différents, afin de ne pas gaspiller d’adresses IP. Par exemple, on vous demande :

Un SR de 10 hôtes pour la Direction
Un SR de 100 hôtes pour les Élèves
Un SR de 20 hôtes pour les Formateurs
Un SR Point par Point (PPP) donc de 2 hôtes pour une liaison de Routeur1 à Routeur2
Un autre SR de 2 hôtes pour une liaison PPP de Routeur2 à Routeur3

Pour cela on vous donne l’adresse 192.168.50.0/24

Calcul de SR0 :

On va commencer par créer le sous-réseau qui nécessite le plus d’hôtes, soit le SR « Elèves » de 100 hôtes. Ce sera le premier SR, soit SR0.

Cette fois on va fonctionner dans l’autre sens, en quelques sortes, car on commence notre calcul sur la base d’un nombre d’hôtes. A contrario, dans le premier exemple de cet article, on commençais notre calcul sur la base d’un nombre de SR. On va donc inverser le procédé et définir le nombre de bits d’hôtes que l’on doit épargner pour avoir au moins 100 hôtes dans le SR.
On se remémore donc la règle :

n étant le nombre de bits d’hôtes, on aura 2n-2 hôtes possibles par SR.

Quelle puissance de 2 nous donnera le nombre le plus proche de 100 ?

27  = 128

On épargnera alors 7 bits pour pouvoir caser 100 hôtes. Ce qui implique que l’on va emprunter un seul bit d’hôtes et l’ajouter aux bits de réseau.

On converti l’adresse et le masque par défaut :

192.168.50.0   = 1100 0000 . 1010 1000 . 0011 0010 . 0000 0000

255.255.255.0 = 1111 1111 . 1111 1111 . 1111 1111 . 0000 0000

On peut maintenant calculer la plage de SR0 :

192.168.50. 0000 0000 = 192.168.50.0 Adresse du SR
192.168.50.0000 0001 = 192.168.50.1 1er hôte
192.168.50.0111 1110 = 192.168.50.126 Dernier hôte
192.168.50.0111 1111 = 192.168.50.127 Broadcast

Avec son masque qui possède un bit de plus donc sur 25 bits :

1111 1111 . 1111 1111 . 1111 1111 . 1000 0000 = 255.255.255.128

Calcul de SR1 :

Le SR suivant qui nécessite le plus d’hôtes est celui des Formateurs avec 20 hôtes nécessaire. Il s’agit de SR1 et il va commencer juste à la suite de SR0, on peut donc en déduire tout de suite l’adresse du SR qui sera 192.168.50.128.

Même principe, on se pose la question : combien de bits d’hôtes nécessaire pour avoir 20 hôtes ?

Réponse : 25 = 32

On va donc laisser 5 bits d’hôtes, ce qui implique que l’on va emprunter 3 bits de réseau. Avec ces données, on peut d’ores et déjà calculer la plage :

192.168.50.1000 0000 = 192.168.50.128 Adresse du SR
192.168.50.1000 0001 = 192.168.50.129 1er hôte
192.168.50.1001 1110 = 192.168.50.158 Dernier hôte
192.168.50.1001 1111 = 192.168.50.159 Broadcast

Et le masque sur 27 bits :

1111 1111 . 1111 1111 . 1111 1111 . 1110 0000 = 255.255.255.224

Calcul de SR2 :

On calcul ensuite le SR Direction qui doit posséder 10 hôtes.

Même principe, il commencera juste après SR1, son adresse sera donc forcément 192.168.50.160.

Quelle puissance de 2 nous permet d’attendre 10 ?

Réponse : 24 = 16

On laissera donc 4 bits d’hôtes, ce qui implique que l’on emprunte 4 bits de réseau.

Avec ces données, on peut déjà calculer la plage :

192.168.50.1010 0000 = 192.168.50.160 Adresse du SR
192.168.50.1010 0001 = 192.168.50.161 1er hôte
192.168.50.1010 1110 = 192.168.50.174 Dernier hôte
192.168.50.1010 1111 = 192.168.50.175 Broadcast

Et le masque en 28 bits :

1111 1111 . 1111 1111 . 1111 1111 . 1111 0000 = 255.255.255.240

Calcul de SR3 :

On calcule maintenant le premier SR en PPP qui doit posséder 2 hôtes.

Même principe, il commence juste après SR2, son adresse sera donc 192.168.50.176.

Quelle puissance de 2 nous permet d’attendre 2 hôtes ?

Réponse :22 = 4 (il ne faut pas oublier que 2 adresses seront pour le réseau et le broadcast).

On laissera donc 2 bits d’hôtes, ce qui implique que l’on emprunte 6 bits de réseau.

Avec ces données, on peut déjà calculer la plage :

192.168.50.1011 0000 = 192.168.50.176 Adresse du SR
192.168.50.1011 0001 = 192.168.50.177 1er hôte
192.168.50.1011 0010 = 192.168.50.178 Dernier hôte
192.168.50.1011 0011 = 192.168.50.179 Broadcast

Et le masque en 30 bits :

1111 1111 . 1111 1111 . 1111 1111 . 1111 1100 = 255.255.255.252

Calcul de SR4 :

Et enfin,les paramètres de SR4 seront identiques à SR3. Peu de difficulté ici, SR4 aura le même masque, le même nombre d’hôte, et commence juste après SR3.

192.168.50.1011 0100 = 192.168.50.180 Adresse du SR
192.168.50.1011 0101 = 192.168.50.181 1er hôte
192.168.50.1011 0110 = 192.168.50.182 Dernier hôte
192.168.50.1011 0111 = 192.168.50.183 Broadcast

Et le même masque en 30 bits : 255.255.255.252

->Mission accomplie.

————————————————————————-

Ces quelques exemples me paraissent suffisants pour comprendre le principe du calcul de sous-réseaux. L’écrire m’a été bien utile pour remettre tout à plat également et je pense avoir fait à peu près le tour.

You may also like...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.