Réseau - Le masque de sous-réseau
Un masque de sous-réseau est un masque qui permet d'indiquer le nombre de bits d'une adresse IPv4 pour identifier le sous-réseau et les hôtes (permets aussi donc d'identifier le nombre d'hôtes possible sur un réseau), aussi connu sous les appellations suivantes en anglais :
- subnet mask
- netmask
- adress mask
Sommaire
Mais qu'est-ce qu'un Sous-Réseau ?
Un sous-réseau permet d'encadrer un ensemble d'hôtes, un ensemble d'ordinateurs/machine dans un seul ensemble. Prenons l'exemple d'un ordinateur chez soi, nous un réseau local qui permet aux équipements de notre maison de communiquer entre eux. Pour ma part cela se définit de cette façon :
- Ordinateur de bureau : 192.168.1.15
- Ordinateur portable : 192.168.1.10
- Mon Raspberry Pi : 192.168.1.13
En regardant rapidement le schéma, on peut identifier une partie qui ne change pas dans l'adresse IP.
Dans ma situation, identifier la partie "réseau" et "hôtes" est simple.
La partie réseau est "192.168.1" et le reste pour les hôtes.
Mais comment identifier cela ? C'est tout l'intérêt du Masque de sous réseau.
Si je regarde la configuration de ma Box internet, le masque de sous réseau de mon réseau local est "255.255.255.0".
Cela signifie que les 3 premiers mots de l'adresse IP sont pour créer des réseaux et le dernier mot pour les hôtes.
Autrement dit, si un ordinateur possède l'adresse IP "192.168.2.15", celui-ci sera dans un autre sous-réseau et il ne sera en théorie pas capable de communiquer avec le reste si le réseau n'est pas configuré pour une communication entre-réseaux.
Mon installation possèdera alors deux sous-réseaux dont leurs adresses seront :
- 192.168.1.0
- 192.168.2.0
Cela est du de la mise à 0 de tous les bits d'hôte.
Si nous reprenons notre masque "255.255.255.0", nous avons en binaire "1111 1111.1111 1111.1111 1111.0000 0000".
Prenons maintenant l'adresse IP 192.168.5.15, l'équivalent en binaire sera "1100 0000.1010 1000.0000 0101.0000 1111"
Nous allons appliquer le masque sur l'adresse IP, un ET logique entre le masque et l'adresse IP (autrement dit, on multiplie le masque avec l'adresse IP, bit à bit).
Ce qui nous donnera ce résultat : "1100 0000.1010 1000.0000 0101.0000 0000"
Et si on retraduit en décimal, nous obtenons 192.168.5.0, qui est notre adresse IP de Sous-Réseau.
À savoir qu'un masque de sous-réseaux peut très bien être "255.255.128.0" ou ""255.255.192.0", etc.. Cela s'explique car nous avons possibilité d'avoir ce genre de masque :
- "1111 1111.1000 0000.0000 0000.0000 0000" -> 255.128.0.0
- "1111 1111.1100 0000.0000 0000.0000 0000" -> 255.192.0.0
- "1111 1111.1110 0000.0000 0000.0000 0000" -> 255.224.0.0
- "1111 1111.1111 0000.0000 0000.0000 0000" -> 255.240.0.0
- ...
- "1111 1111.1111 1111.1111 1111.1111 0000" -> 255.255.255.240
Comme pour l'analogie de l'Adresse IP, nous pouvons imaginer alors trois sous-réseaux, le premier porte le nom de la première ville, disons "Troyes", l'autre "Reims" et un de transite disons "Air". Le message va transiter dans le réseau postal, partir de Troyes, passer par l'air, et se diriger vers Reims.
On peut réaliser la même analogie avec deux ordinateurs
Nous avons sur l'image ci-dessous des "routeurs" qui permettent de lier les sous-réseaux entre eux, nous pouvons voir 3 sous-réseaux sur cette image, "100.0.0.0", "Internet" et "200.0.0.0".
Le message envoyer aura alors traverser ces derniers pour arriver à destination.
Si nous devions continuer l'analogie avec le réseau postale, si je souhaite envoyer un colis du Pays de la chocolatine jusqu'à Troyes, mon colis passe par de nombreuses étapes intermédiaires avant d'arriver à destination, on appelle cela, la segmentation, c'est exactement ce que va faire notre réseau Internet.
On imagine alors rapidement l'intérêt pour Laposte de réduire au maximum les ponts entre les villes pour limiter la quantité d'étape intermédiaire. En remplaçant simplement nos bureaux de poste par des routeurs, nous avons une idée d'Internet.
Dans cette image nous avons 4 sous-réseaux, chacun représenté par une couleur, ces derniers sont liés par des routeurs. Le but étant de faire transiter un message vers Chocolatine jusqu'à Troyes.
- Réseau Vert = 100.0.0.0
- Réseau Rouge = 200.0.0.0
- Réseau Bleu = 300.0.0.0
- Réseau Orange = 400.0.0.0
Ces IP sont bien évidement fictives, nous avons vu précédemment qu'il n'est pas possible d'avoir un réseau "300.0.0.0" ou "400.0.0.0" (car une IP est un ensemble de 4 mots sur 8 bits).
Nous avons sur l'image plus haut deux principaux acteurs, "Troyes" et "Chocolatine" ils souhaitent s'envoyer un message entre eux.
Chocolatine va donc envoyer un message à l'adresse "400.401.402.404" depuis son poste qui possède l'adresse "100.101.102.103".
Le message va dans un premier temps, se diriger au premier Routeur, celui-ci possède une adresse IP sur une de ses bornes qui est situé dans le même réseau que le poste.
Entre le message va transiter vers un autre routeur, etc etc.
À chaque instant où le message passe d'un point à un autre, il circule dans un réseau. D'abord dans le réseau "100.0.0.0" puis "200.0.0.0".
Pour refaire le lien avec les explications précédentes, dans notre hypothétique situation, le masque de sous-réseau serait alors "255.0.0.0".
CIDR
Il est important lorsqu'on parle de masque de sous-réseau, d'évoquer le CIDR (Classless Inter-Domain Routing) qui permet de réduire la taille de la table de routage contenue dans les routeurs. Il s'agit d'un nombre indiquant le nombre de bits associé au masque de sous réseau. Reprenons "255.255.255.0", l'équivalent binaire est "1111 1111.1111 1111.1111 1111.0000 0000". Associons ce masque avec l'IP "192.168.1.47". Nous pouvons alors compter 24 bits pour le masque de sous-réseau, la notation CIDR sera alors :
- 192.168.1.47/24
De ce fait, nous serions en mesure d'identifier le sous-réseau de l'adresse IP.
Sous-réseaux & Hôtes disponibles
Lorsque nous choisissons le masque de notre sous-réseau, nous le faisons en fonction de la quantité de machines que nous souhaitons ou de réseaux (ou les deux). Pour calculer cela, il suffit de compter le nombre de bits du masque de sous réseau et d'en tirer la quantité.
Exemple : Avec le masque 255.255.0.0 nous avons "1111 1111.1111 1111.0000 0000.0000 0000" ou encore /16 en notation CIDR. Pour connaitre le nombre de réseau possible nous pouvons faire 2^16 = 65 536 sous-réseaux. Nous avons exactement le même nombre de bits pour la partie "hôte" soit 65 536 hôtes.
Mais attention ! Cela serait trop facile, cela n'est pas vrai pour les hôtes car le protocole IPv4 nous impose des adresses IP.
Restriction du nombre d’hôtes possible
Comme vu juste au-dessus, il n'est pas possible d'avoir 65 536 hôtes. Rappelez vous, plus haut nous disions que pour une IP "192.168.1.13/24" l'adresse réseau est "192.168.1.0", cela fait déjà une adresse utilisable en moins car nous ne pourrions pas donner cette adresse à un hôte/machine dans notre sous-réseau car c'est l'IP du réseau elle-même.
Adresse de Broadcast
Nous avons vu déjà une adresse IP inutilisable, mais il existe une seconde, l'adresse de Broadcast (ou Diffusion).
Celle-ci est la dernière IP possible de notre partie "hôte", pour la trouver il suffit de faire la technique inverse que pour l'adresse IP de sous-réseau. Au lieu de mettre tous les bits à 0 pour la partie "hôte", nous devons les mettre à un !
Exemple :
Prenons l'IP 192.168.1.14/24, ce qui nous donne en équivalent binaire :
"1111 1111.1111 1111.1111 1111.0000 0000" (Masque de sous-réseau)
"1100 0000.1010 1000.0000 0001.0000 1110" (IP 192.168.1.14)
Plaçons tous les bits "hôte" à 1, nous avons alors:
"1100 0000.1010 1000.0000 0001.1111 1111" (IP 192.168.1.255)
L'IP 192.168.1.255 est donc notre adresse de diffusion.
Nous avons ici un masque /24 et non /16 contrairement à plus haut, ce qui fait donc 2^24 = 16 777 216 Adresses de sous-réseau et 8 autres bits pour la partie "hôte" (une adresse IP est sur 32bits).
Ce qui nous fait 256 Adresses d'hôte dont 2 inutilisable.
Pour résumer :
- Adresse IP : 192.168.1.14/24
- Adresse Réseau : 192.168.1.0
- Adresse de Diffusion : 192.168.1.255
Petits défis
L'objectif sera de déduire l'adresse IP Réseau et de diffusion ainsi que donner le nombre d'adresses d'hôte et de sous-réseaux.
IP : 192.168.1.140/28 (Masque : 255.255.255.240)
Vouloir résoudre cela en restant en décimal risque d'être compliqué, le mieux sera de tout passer en binaire.
Résolution:
Le masque permet d'identifier que les 3 premiers mots de l'adresse IP font partie du sous-réseau, seul "240" devra être traduit en binaire.
Cela donne "1111 0000" (240), on peut donc identifier la première adresse IP.
140 en binaire donne "1000 1100"
Donc en appliquant un & logique entre le masque et l'IP nous obtenons comme premier nombre :
"1000 0000" = 128.
Et dernier nombre :
"1000 1111" = 143
Nous en déduisons alors :
- Adresse IP : 192.168.1.140/28
- Adresse de sous-réseau : 192.168.1.128
- Adresse de diffusion : 192.168.1.143