Alors les calculs associés aux masques de sous réseau, c'est une plaie... C'est difficile car les ordinateurs raisonnent en binaire, alors que nous, pauvres humains, nous travaillons en décimal. Et passer du décimal au binaire n'est pas toujours facile. Prenons donc un exemple.
Calcul de la partie réseau et de la partie machine d'une adresse
On peut reprendre l'exemple précédent, l'adresse 192.168.0.1 associée au masque 255.255.240.0.
Comme l'on peut s'en douter, la coupure entre les deux parties de l'adresse ne va malheureusement pas se faire entre deux octets distincts, mais bien en plein milieu d'un octet.
Transformons ces deux nombres en binaire :
Citation192.168.0.1 -> 11000000.10101000.00000000.00000001
255.255.240.0 -> 11111111.11111111.11110000.00000000
Comme prévu, la coupure imposée par le masque se fait en plein milieu d'un octet !
Citation255.255.240.0 -> 11111111.11111111.11110000.00000000
Ce qui donne sur notre adresse pour les parties réseau et machine :
Citation192.168.0.1 -> 11000000.10101000.00000000.00000001
Gloups...
On ne peut pas repasser en décimal étant donné que la coupure se fait au milieu d'un octet, car on ne peut malheureusement pas écrire un demi-octet ou une partie d'un octet seulement. On ne peut parler qu'en binaire.
La partie réseau de l'adresse est 11000000.10101000.0000 et la partie machine est 0000.00000001
Donc à chaque fois que la coupure aura lieu au milieu d'un octet, il ne sera pas possible d'écrire les parties réseau et machine de l'adresse autrement qu'en binaire.
Mais comment le savoir ?
Nous allons voir que les valeurs prises par les octets dans un masque sont spécifiques et cela est dû à l'ordonnancement des 1 et des 0 dans le masque.
La contiguïté des bits
Dans un masque en binaire, il doit y avoir
les 1 à gauche et les 0 à droite.
On ne peut pas mélanger les 1 et les 0.
Par exemple, ce masque est
correct:
11111111.11111000.
00000000.00000000
Mais celui-ci est
incorrect:
11111111.11100011.00000000.00000000
Donc, on retrouvera toujours les mêmes valeurs pour les octets d'un masque, ce sont les suivantes :
Citation00000000 -> 0
10000000 -> 128
11000000 -> 192
11100000 -> 224
11110000 -> 240
11111000 -> 248
11111100 -> 252
11111110 -> 254
11111111 -> 255
Donc ce masque est
correct: 255.255.128.0
Et ce masque est
incorrect: 255.255.173.0
Et ce masque est encore
incorrect: 255.128.255.0 (car il mélange des 0 et des 1)
Bien, nous savons ce qu'est un masque, comment il est composé et quelles sont les valeurs que chacun de ses octets peut prendre.
Il nous faut maintenant le mettre en pratique pour trouver les plages d'adresses associées à tel ou tel masque.
Calcul de plages d'adresses
C'est le gros morceau !
C'est ici que cela se complique. Mais rassurez vous, nous allons aller pas à pas pour que tout le monde comprenne bien.
Calcul de la première et de la dernière adresse d'une plage
Nous allons donc prendre un exemple d'adresse associée à un masque et nous allons essayer de trouver la plage d'adresses ainsi définie.
Reprenons notre exemple maintenant connu, l'adresse 192.168.0.1 associée au masque 255.255.240.0.
Votre mission si vous l'acceptez est de trouver la première et la dernière adresse du réseau auquel appartient cette adresse.
Et je fais ça comment moi ?
Dans un premier temps, nous savons qu'il va falloir transformer ces adresses en binaire pour y voir plus clair car la coupure a lieu en plein milieu du troisième octet.
Nous avons le masque et l'adresse :
255.255.240.0 ->
11111111.11111111.11110000.00000000
192.168.0.1 ->
11000000.10101000.00000000.00000001
Mais cela ne nous donne pas encore la première et la dernière adresse
Par contre, nous savons que les bits en vert dans l'adresse représentent
la partie réseau, et les bits en rouge
la partie machine.
Et toutes les machines appartenant à un même réseau ont un point commun,
tous les bits de leur partie réseau sont identiques !
Eh oui ! Si jamais deux machines ont
des adresses dont la partie réseau est différente, elles
ne seront pas considérées
dans le même réseau.
En même temps cela parait normal...
Donc pour notre calcul, on en déduit que toutes les machines appartenant à notre réseau vont avoir leur partie réseau qui sera égale à
11000000.10101000.0000
Par contre, les bits de la partie machine de l'adresse vont pouvoir varier pour toutes les machines du réseau.
Dans ce réseau, les adresses des machines pourront prendre beaucoup de valeurs, selon que l'on met certains bits de la partie machine à 0 ou 1.
Globalement, les adresses seront :
Citation11000000.10101000.00000000.00000000 -> 192.168.0.0
11000000.10101000.00000000.00000001 -> 192.168.0.1
11000000.10101000.00000000.00000010 -> 192.168.0.2
11000000.10101000.00000000.00000011 -> 192.168.0.3
11000000.10101000.00000000.00000100 -> 192.168.0.4
11000000.10101000.00000000.00000101 -> 192.168.0.5
...
11000000.10101000.00001111.11111110 -> 192.168.15.254
11000000.10101000.00001111.11111111 -> 192.168.15.255
En faisant varier les bits de la partie machine de l'adresse, nous avons pu trouver toutes les adresses du réseau.
La première adresse du réseau est celle dont tous les bits de la partie machine sont à 0 ; la dernière adresse du réseau est celle dont tous les bits de la partie machine sont à 1.
Nous savons donc maintenant calculer une plage d'adresses à partir d'une adresse et de son masque !
Tiens en passant, pouvez-vous me dire combien il y a d'adresses possibles dans le réseau que nous venons d'étudier ?
Nombre d'adresses dans un réseau
Nous avons vu que dans notre adresse, la partie réseau était fixée et la partie machine pouvait varier. Il nous suffit de trouver combien de combinaisons sont possibles en faisant varier les bits de la partie machine, et nous aurons alors le nombre d'adresses.
Si jamais nous n'avions qu'un seul bit pour la partie machine, nous aurions deux possibilités sur ce bit, 0 ou 1. Si nous en avions deux, il y aurait 2
2 adresses possibles, soit 4 adresses (00, 01, 10, 11) et ainsi de suite.
Si nous avions 10 bits pour la partie machine, nous aurions 2
10 adresses possibles, soit 1024 adresses.
Donc pour trouver le nombre d'adresses dans un réseau, il suffit de connaître le nombre de bits de la partie machine.
Et vu que la partie machine est définie par le masque,
le nombre de machines disponibles dans un réseau est directement dépendant du masque !
La relation est même encore plus explicite : nombre de machines dans un réseau = 2
Nombre de 0 dans le masque.
Si nous reprenons notre exemple précédent de l'adresse 192.168.0.1 associée au masque 255.255.240.0, nous pouvons maintenant immédiatement trouver le nombre d'adresses disponibles dans ce réseau. Le masque s'écrit :
255.255.240.0 ->
11111111.11111111.11110000.00000000
Dans lequel nous voyons douze 0 qui identifient la partie machine de l'adresse.
Nombre d'adresses = 2
Nombre de 0 dans le masque = 2
12 = 4096 adresses !
Facile non ?
Adresse de réseau, adresse de broadcast
Parmi la plage d'adresse définie par une adresse IP et un masque, deux adresses sont particulières, la première et la dernière.
La première adresse d'une plage est l'adresse du réseau lui-même.
Cette adresse ne pourra donc pas être utilisée pour une machine.
La dernière adresse d'une plage est une adresse spéciale, l'adresse de broadcast.
Cette adresse ne peut pas non plus être utilisée pour une machine. Elle est en fait utilisée pour identifier toutes les machines de mon réseau.
Quand nous envoyons un message à l'adresse de broadcast, ce message va être reçu par toutes les machines de notre réseau.
Nous remarquons par la même occasion que dans un réseau ayant 16 adresses disponibles, seules 14 adresses seront utilisables par les machines du réseau car la première et la dernière seront réservées pour le réseau et le broadcast. Et cela sera vrai pour tout réseau. À chaque réseau il y a deux adresses non utilisables pour les machines.
Nous savons donc maintenant, à partir d'une adresse et du masque associé :
- Déterminer la première et la dernière adresse de la plage.
- Connaître le nombre d'adresses de cette plage.
Retour sur nos questions
En début de chapitre nous avions beaucoup d'interrogations, regardons si nous avons su y répondre.
Comment allons nous pouvoir être identifiés par rapport à un autre réseau ?
Ça, c'est bon. C'est la partie réseau de l'adresse IP qui va dire dans quel réseau nous nous situons.
Et d'ailleurs, comment allons-nous identifier les réseaux ? Vont-ils avoir une adresse ? Ou un nom ?
Nous savons identifier un réseau par la partie réseau d'une adresse IP !
Et s'il faut une adresse pour le réseau et une pour ma machine, nous faudra-t-il deux adresses de couche 3 ?
Nous avons vu qu'en fait nous n'avons pas deux adresses, mais une seule.
Par contre, cette adresse est toujours associée à un masque qui va pouvoir définir la partie réseau et la partie machine de l'adresse.
Vous avez bien bossé et savez donc répondre à ces questions qui nous embêtaient.
Il serait temps de passer à un peu de pratique histoire de bien fixer les idées !