5 Les masques

5.1 Récapitulatif

Nous avons déjà vu plusieurs aspects importants des masques qu'il faudra toujours essayer de garder à l'esprit:
• Codés sur 4 octets, soit 32 bits,
• Ils permettent de faire la séparation entre la partie réseau et la partie machine de l'adresse IP,
• La partie réseau est représentée par des bits à 1, et la partie machine par des bits à 0,
• Le masque ne représente rien sans l'adresse IP à laquelle il est associé.


5.2 Comment représente-t-on un masque ?

Comme le masque est codé sur 32 bits, voici un exemple possible de masque:
__________Rseau__________ Machine
| | | |
11111111.11111111.11111111.00000000

Maintenant, plusieurs questions peuvent se poser. Jusqu'ici je comprends, mais comment je peux associer ce masque à une adresse IP, et quel sera le résultat ? Pourquoi les bits à 1 sont séparés de ceux à 0 ?

5.3 Comment le masque et l'adresse IP sont ils associés ?

Prenons par exemple une machine qui a pour adresse IP 192.168.25.147. Il nous faut lui associer un masque pour savoir quelle partie de cette adresse représente le réseau. Associons lui le masque précédent 255.255.255.0. On remarque que les bits des trois premiers octets sont à 1, ils représentent donc la partie réseau de l'adresse, soit 192.168.25, le 147 permettant d'identifier la machine au sein de ce réseau. Dans cet exemple, on remarque qu'un octet a été réservé pour l'adresse machine, ce qui nous donne 28 = 256 adresses disponibles pour les machines sur le réseau 192.168.25. Les adresses disponibles pour les machines seront donc:
192.168.25.0 (rserve pour le rseau, voir 5.4)
192.168.25.1
...
192.168.25.254
192.168.25.255 (rserve pour le broadcast, voir 5.4)

On observe donc que c'est le masque qui détermine le nombre de machines d'un réseau. Ainsi, on verra par la suite qu'on choisira le masque en fonction du nombre de machines que l'on veut installer.
5.4 Adresses spécifiques (réseau, broadcast)
Il existe des adresses spécifiques au sein d'un réseau. La première adresse d'une plage ainsi que la dernière ont un rôle particulier. La première adresse d'une plage représente l'adresse du réseau. Celle-ci est très importante car c'est grâce à elle qu'on peut identifier les réseaux et router les informations d'un réseau à un autre. La dernière adresse d'une plage représente ce que l'on appelle l'adresse de broadcast. Cette adresse représente en fait l'ensemble des adresses du réseau. Ainsi, quand on veut envoyer une information à toutes les machines, on utilise cette adresse.
Dans notre exemple, l'adresse de réseau sera donc 192.168.25.0, et l'adresse de broadcast 192.168.25.255. On remarque donc qu'il ne nous reste plus que 254 adresses pour identifier nos machines. Ainsi, à chaque fois que l'on choisira un masque en fonction du nombre de machines que l'on veut adresser, il faudra tenir compte de ces deux adresses...
5.5 Les bits à 1 et à 0 doivent ils être contigus ?
Dans l'exemple de masque que nous avons choisi, nous avons vu que les bits à 0 et à 1 étaient regroupés. Cela n'est pas une obligation, mais cela facilite énormemment l'exploitation du réseau. En conservant la contiguïté des bits, les adresses de nos machines au sein du réseau se suivent. Ce ne serait pas le cas si l'on avait choisi un masque avec des bits non contigus.

Exemple, si on choisit le masque suivant:
11111111.11111111.11111110.00000001

Ici, on a comme précédemment 8 bits qui représentent la partie machine, par contre, ils ne sont plus à la même place. Cela se traduit en décimal par le masque suivant 255.255.254.1. On voit donc que les adresses dont le dernier bit est a 1 ne seront pas dans le même réseau que celles dont le dernier bit est a 0. Ce qui veut dire que les adresses dont le dernier octet est impair ne seront pas dans le même réseau que les adresses paires. Dans cet exemple, cela reste encore facile de différencier les adresses paires et impaires, mais lorsque l'on fait des mélanges plus compliqués entre les bits significatifs, cela devient très vite inextricable.
On conservera donc toujours la contiguïté des bits significatifs !!!.


5.4 Quelles adresses pour les masques ?

Etant donné que l'on conserve la contiguïté des bits, on va toujours rencontrer les mêmes nombres pour les octets du masque. Ce sont les suivants:
11111111
11111110
11111100
...
10000000
00000000
Soit en décimal:
255, 254, 252, 248, 240, 224, 192, 128, et 0.
Ainsi, on peut tout de suite dire si un masque semble valide au premier coup d'oeil. Un masque en 255.255.224.0 sera correct alors qu'un masque en 255.255.232.0 ne le sera pas (à moins de ne pas vouloir respecter la contiguïté des bits)
Vous pouvez aller voir tous les masques possibles dans la RFC suivante: http://www.faqs.org/rfcs/rfc1878.html.


5.5 Faire fi de l'écriture par octets

L'écriture de l'adresse IP selon 4 octets séparés par un point est facile à utiliser. Mais quand on se penche sur le problème d'un peu plus près, on se rend compte qu'elle n'est pas très adaptée...
Elle a deux défauts principaux:
• Ecriture en décimal alors que l'on résonne en binaire.
• Séparation des octets par des points.
Ainsi, lorsqu'on utilise des masques où la séparation réseau/machine se fait sur un octet (tous les bits des octets sont soit à 1, soit à 0) cela est simple. Prenons par exemple le réseau 192.168.25.0/255.255.255.0.
Toutes les machines commençant par 192.168.25 appartiendront à ce réseau. Si l'on prend le réseau 192.168.25.32/255.255.255.248 et que je vous demande si la machine 192.168.25.47 appartient à ce réseau ? ça devient plus compliqué...
Pour bien comprendre, il faut alors revenir en binaire. Etant donné que les trois premiers octets du masque ont tous leurs bits à 1, c'est sur le quatrième que va se faire la différentiation. Il s'écrit 248, soit 11111000 en binaire. Donc les 5 premiers bits de cet octet représenteront la partie réseau.
Pour notre réseau, le dernier octet vaut 32, soit 00100000, pour notre machine, il vaut 47, soit 00101111. On voit que les 5 premiers bits de ces deux octets ne sont pas identiques (00100 = 00101) et donc que ces deux adresses n'appartiennent pas au même réseau.
Cela peut sembler très compliqué, mais on verra par la suite des méthodes simples pour déterminer rapidement l'appartenance à un réseau.
5.8 Quelle est cette notation avec un /, comme /24 ?
Une autre notation est souvent utilisée pour représenter les masques. On la rencontre souvent car elle est plus rapide à écrire. Dans celle-ci, on note directement le nombre de bits significatifs en décimal, en considérant que la contiguïté est respectée. Ainsi, pour notre exemple 192.168.25.0/255.255.255.0,
on peut aussi écrire 192.168.25.0/24, car 24 bits sont significatifs de la partie réseau de l'adresse.
De même, les écritures suivantes sont équivalentes:
10.0.0.0/255.0.0.0 = 10.0.0.0/8
192.168.25.32/255.255.255.248 = 192.168.25.32/29

Etant donné que le masque détermine le nombre de machines qu'il pourra y avoir sur un réseau, c'est souvent de cette information que l'on part pour choisir le masque. Etant donné que l'on travail en binaire, le nombre de machines possible au sein d'un réseau sera une puissance de 2. Pour un nombre de machines donné, il faudra donc choisir la puissance de 2 supérieure pour pouvoir adresser les machines. De plus, il faudra prévoir un certain nombre d'adresses supplémentaires pour accueillir de nouvelles machines.
Ainsi, disons que l'on possède le réseau 193.225.34.0/255.255.255.0 et que l'on veut faire un réseau de 60 machines au sein de celui-ci. On veut 60 machines, il faut ajouter deux adresses pour le réseau et le broadcast, ce qui fait 62 adresses au total. La puissance de 2 supérieure à 62 est 64, mais cela ne nous laisserait que 2 adresses pour évoluer, ce qui est un peu juste. On préfèrera donc un réseau de 128 adresses. Pour identifier 128 adresses, il nous faut 7 bits (128 = 27) Donc dans notre masque, 7 bits seront à 0 pour identifier la partie machine, et les 25 bits restants seront à 1. Ce qui donne:
11111111.11111111.11111111.10000000
et en décimal 255.255.255.128 .


6 Comment bien choisir son masque ?

6.1 Partir de l'existant

La plupart du temps, le choix de l'adressage se fait en fonction des besoins exprimés, et des limites de ce que l'on a le droit de faire. Une certaine plage vous est allouée par votre fournisseur d'accès. Vous pourrez alors découper cette plage en différents réseaux, mais ne surtout pas dépasser de celle-ci. Ainsi, si vous possédez une plage de 128 adresses et que vous voulez adresser 500 machines, vous aurez quelques petits problèmes...

6.2 En fonction du nombre de machines

Etant donné que le masque détermine le nombre de machines qu'il pourra y avoir sur un réseau, c'est souvent de cette information que l'on part pour choisir le masque. Etant donné que l'on travail en binaire, le nombre de machines possible au sein d'un réseau sera une puissance de 2. Pour un nombre de machines donné, il faudra donc choisir la puissance de 2 supérieure pour pouvoir adresser les machines. De plus, il faudra prévoir un certain nombre d'adresses supplémentaires pour accueillir de nouvelles machines.
Ainsi, disons que l'on possède le réseau 193.225.34.0/255.255.255.0 et que l'on veut faire un réseau de 60 machines au sein de celui-ci. On veut 60 machines, il faut ajouter deux adresses pour le réseau et le broadcast, ce qui fait 62 adresses au total. La puissance de 2 supérieure à 62 est 64, mais cela ne nous laisserait que 2 adresses pour évoluer, ce qui est un peu juste. On préfèrera donc un réseau de 128 adresses. Pour identifier 128 adresses, il nous faut 7 bits (128 = 27) Donc dans notre masque, 7 bits seront à 0 pour identifier la partie machine, et les 25 bits restants seront à 1. Ce qui donne:
11111111.11111111.11111111.10000000
et en décimal 255.255.255.128


6.3 Comment déterminer la plage d'adresses à partir du masque et d'une adresse ?

Nous avons vu précédemment que le masque devait être associé à une adresse IP pour avoir une valeur. Le choix de la plage d'adresses sur laquelle il s'applique est donc tout aussi important !! Nous avons choisi un masque qui nous permettra d'identifier 128 machines. Mais nous possédons une plage d'adresses de 256 adresse. Ou faut-il placer nos 128 adresses dans cette plage ? Peut-on les placer n'importe où ?
La réponse est bien sur non. Nous n'avons que deux possibilités pour choisir notre plage, les adresses de 0 à 127, et les adresses de 128 à 255. Choisir une plage de 32 à 160 serait une erreur, et le réseau ne fonctionnerait pas.
Voici l'explication:
La différentiation du réseau va se faire sur le premier bit du dernier octet (vu que nos trois premiers octets sont fixés à 193.225.34) Si ce bit est à 0, cela correspond aux adresses de 0 à 127. S'il est à 1, cela correspond aux adresses de 128 à 255. Ainsi, si l'on choisit une plage d'adresses de 32 à 160, les adresses de 32 à 127 auront le premier bit de leur dernier octet à 0, alors que les adresses de 128 à 160 auront ce même bit à 1, elles seront alors considérées comme étant dans deux réseaux différents !!!
Ainsi, quel que soit le nombre de machines à placer dans une plage, on ne peut pas choisir l'adressage n'importe comment.
PS: Dans notre cas, les deux choix possibles sont identiques, mais l'on verra par la suite que ce n'est pas toujours le cas pour des plages plus petites...