Lolokai – Supervision, systèmes, réseaux, base de données…

0

Les adresses IP, une affaire de mathématiciens ?

Loic FONTAINE 16 août 2010

Introduction

Dans ce billet, nous parlerons de l’adresse IP, qui est par définition l’adresse logique d’un périphérique connecté sur un réseau IP : Internet Protocol (ça peut être un ordinateur, un routeur, une imprimante, un disque dur réseau). Pour les connaisseurs, vous savez que l’adresse IP entre en jeu lorsque le segment se fait encapsuler pour devenir un paquet c’est à dire au niveau de la couche numéro 3 du modèle OSI (bientôt un billet à ce sujet :)). Aujourd’hui, il existe deux versions de l’IP :

  • IPv4 : Qui est codée sur 32 bits donc sur 4 octets. L’IPv4 est la version actuelle la plus utilisée de l’adresse IP, elle est composée de chiffre de 0 à 255 et se décompose en 4 quartets (1 quartet par octet). Nous pouvons avoir au total : 4 294 967 296 adresses IP différentes. Exemple d’adresse IPv4 : 192.168.1.1
  • IPv6 : Principalement à cause du nombre limité d’IPv4 disponibles, nous avons vu arrivé l’IPv6 qui est codée sur 128 bits et utilise des caractères hexadécimaux (va donc de « a » à « f » et de « 0 » à « 9 »)

L’adresse IP est en fait composée de plusieurs parties, une adresse IP regroupe la partie adresse du réseau, parfois la partie sous-réseau, et la partie réservée à la machine. De même, dans un soucis de standardisation, des classes d’adresse IP ont été crées.
C’est pourquoi nous pouvons nous demander : Quels sont les grands principes de l’adressage IP et comment à travers elles obtenir un réseau cohérent ?
Pour répondre à cette question, nous présenterons les grands principes de l’adresse IP, puis nous ferons du Subnetting (calcul de l’adresse IP, des masque de sous-réseau etc…) IPv4 et IPv6 puis nous terminerons par de l’agrégat d’adresses IP.

Autrement dit ce chapitre est essentiellement accès sur les mathématiques et notamment sur la conversion binaire ==> chiffre en base 10, mais ne vous inquiétez pas les principes ne sont pas compliqués, ce qu’il faut faire c’est surtout pratiquer !

Note : Dans ce billet, nous parlerons essentiellement de l’IPv4 qui est encore aujourd’hui la version de l’IP la plus utilisée.

Addresse IP : Grands principes

Les différentes parties de l’adresse IP

L’adresse IP se compose de plusieurs parties, la partie réseau, parfois la partie sous-réseau et la partie réservée à la machine. Afin de pouvoir mieux appréhender ce principe disons que l’adresse IP n’est composé que de l’adresse de réseau et l’adresse de la machine.
Pourquoi avoir choisit de décomposer l’adresse IP ?

En fait, la délivrance d’un message à travers le réseau n’est pas si loin du principe de la Poste. Je m’explique : Lorsque le facteur lit votre courrier il y a une hiérarchisation : Cette lettre est à livrée dans tel Pays, à telle ville, telle rue, tel numéro etc… Il en est de même pour l’adresse IP plus on la hiérarchise, plus il est facile pour nos périphériques de transmettre notre message.
La partie réseau de l’adresse IP détermine le réseau auquel l’adresse IP appartient (on pourrait comparer ça à la rue ou à la ville par exemple). Et la partie hôte (ou machine) détermine l’adresse réelle de la machine (on pourrait parler du numéro).
Pour déterminer la longueur de la partie réseau, nous utilisons le masque de sous-réseau, une adresse de réseau avec deux masques de sous-réseaux différents ne comportera pas le même nombre de machines sur son réseau.
Pour résumer un peu tout ça : plusieurs machines peuvent avoir la même adresse de réseau, autrement dit ces machines sont sur le même réseau (un exemple tout bête : si tous vos ordinateurs reçoivent la connexion internet depuis la même Livebox, routeur etc… alors vous avez la même adresse de réseau).
Le masque de sous-réseau est codé sur le nombre nombre de bits que la version de l’adresse IP utilisé, un masque de sous-réseau pour l’adresse IPv6 sera codé sur 128 bits et un masque de sous-réseau pour l’adresse IPv4 sera codé sur 32 bits. De plus, un masque de sous-réseau (en représentation binaire : uniquement avec des 0 et des 1) n’a pas de nombre mélangés, les « 1 » sont du coté gauche et les « 0 » du coté droit. Par exemple la représentation binaire du masque de sous-réseau : 255.255.255.0 est 1111 1111.1111 1111.1111 1111.0000 0000 ==> Nous retrouvons bien ici les 32 bits (car il y a 32 caractères 1 et 0 confondus) et les « 1 » sont du coté gauche et les « 0 » du coté droit.

Les classes d’adresses IP

Toujours dans un esprit de standardisation, nous avons des classes d’adresses qui ont été créées :

Class A : 8 bits qui désignent le réseau ; 24 bits qui désignent les hôtes. Par exemple la plage d’adresses IPv4 correspondant à la class A : 10.0.0.0 à 10.255.255.255 (ici le premier quartet, donc le premier octet et donc les 8 premiers bits ne bougent pas : c’est la partie réseau ==> l’adresse du réseau est donc 10.0.0.0 et le masque de sous-réseau : 255.0.0.0)
Class B : 16 bits qui désignent le réseau ; 16 bits qui désignent les hôtes. Par exemple la plage d’adresses IPv4 correspondant à la class B : 172.16.0.0 – 172.16.255.255 (ici les deux premiers quartets, donc les deux premiers octets et donc les 16 premiers bits ne bougent pas : c’est la partie de l’IP qui désigne le réseau ==> l’adresse du réseau est donc 172.16.0.0 et le masque de sous-réseau : 255.255.0.0)
Class C : 24 bits qui désignent le réseau ; 8 bits qui désignent les hôtes. Par exemple la plage d’adresses IPv4 correspondant à la class C : 192.168.0.0 à 192.168.0.255 (ici les trois premiers quartets, donc les trois premiers octets et donc les 24 premiers bits ne bougent pas : c’est la partie de l’IP qui désigne le réseau ==> l’adresse du réseau est donc 192.168.0.0 et le masque de sous-réseau : 255.255.255.0)

Les plages d’adresses IP

Nous avons vu qu’avec l’adresse IPv4 nous avons 4 294 967 296 possibilités d’adresses IP sur un réseau, mais toutes ces possibilités ne sont pas toutes utilisées, par convention des plages d’adresses IP sont réservées pour divers usages :

Commençons par les adresses locales : 127.0.0.0 à 127.255.255.255 ==> Toutes les IP contenus dans cette plage sont locales (désignent votre propre machine)
Puis les adresses dites APIPA : 169.254.0.0 à 169.254.255.255 ==> Les addresses IP sont les adresses attribuées lorsque nous ne recevons pas d’adresses IP de la part du serveur DHCP
Les adresses qui commencent par 224 à 239 désignent des adresses multicast (un émetteur ==> plusieurs récepteurs)
Les adresses réservées qui commencent par 240 à 255.

Puis nous avons les adresses dites privées :
10.0.0.0 à 10.255.255.255 qui est une adresse de class A
172.16.0.0 à 172.31.255.255
192.168.0.0 à 192.168.255.255

Les conventions d’écritures

Une adresse IP ne peut être dissocié de son masque de sous-réseau car un masque de sous-réseau représente certes l’étendue d’une adresse de réseau mais grâce au masque de sous-réseau, nous pouvons déterminer à quelle adresse de réseau correspond une adresse IP (pour plus de détails voir chapitre sur le Subnetting).
Les conventions d’écritures sont donc les suivantes :

192.168.1.0 255.255.255.0 ==> ici l’adresse IP suivit de son masque de sous-réseau.
ou 192.168.1.0/24 ==> Comment passe-t-on de 255.255.255.0 à /24 ?

En fait 24 correspond aux nombres de bits à 1 présent dans le masque de sous-réseau. La représentation en binaire de 255.255.255.0 est 1111 1111.1111 1111.1111 1111.0000 0000 ==> comme vous pouvez le voir il y a 24 bits à « 1 » dans la représentation en binaire.

Comment trouve-t-on 255 à partir de 1111 1111 ?

255 = 2*100 + 5*10 + 5*1 = 1*10² + 5*10^1 + 5 * 10^0 ==> Représentation de 255 écrit en base 10. La base 10 qui veut dire qu’on représente le nombre en utilisant 10 chiffres de (0 à 9), donc en passant par des puissances de 10.
Maintenant en binaire nous n’avons que 2 façons de représenter un chiffre : 0 ou 1, nous allons donc représenter le nombre par des puissances de 2 : 255 = 1 * 2^7 + 1 * 2^6 + 1 * 2^5 + 1 * 2^4 + 1*2^3 + 1 * 2^2 + 1 * 2^1 + 1* 2^0 ==> Comment vous le constatez nous avons « 8 » fois « 2 » à la puissance « quelque chose », ce qui donne donc les 8 bits à « 1 ».
Pour vous entrainez, je vous conseil de convertir les chiffres binaires suivants en base 10 (réponse à la fin du billet) :
1111 000 ; 1110 0000 ; 1111 1100 ; 1111 1110 ; 1100 0000

Pour convertir un chiffre en base 10, vous pouvez passer par la décomposition en puissance de 2 : Cliquez ici pour plus de détails

Le subnetting

Maintenant que vous êtes un pro en conversion binaire ==> chiffre en base 10, nous allons pouvoir faire du subnetting :) ^^. Le subnetting se définit par découpé une adresse de réseau en un ou plusieurs sous-réseau en jouant avec les masques de sous-réseau. Par exemple dans la plage d’adresses 192.168.1.0 à 192.168.1.255. Je veux 2 sous-réseaux de 10 hôtes et 1 sous-réseau de 24 hôtes. Pour cela nous allons suivre la méthode ci-dessous :

Alors mettons qu’à partir de l’adresse réseau 192.168.1.0/24 (donc la plage 192.168.1.0 à 192.168.1.255) je veuille 2 sous-réseaux de 10 hôtes et 1 sous-réseau de 24 hôtes.

Méthode de calcul

Premièrement : Est ce qu’il y a suffisamment d’adresses dans cette plage pour le nombre d’hôtes dont j’ai besoin ?

Ici, oui car cette plage peut accueillir jusqu’à 254 hôtes.

Deuxièmement : Prendre x le plus petit possible tel que 2^x-2 > « Au nombre d’hôte » donc ici ==> prendre x tel quel 2^x-2 > 10. Petite remarque : cela peut être supérieur ou égal, mais dans un soucis de réserver quelques adresses pour les hôtes sur la plage nous préférons mettre strictement supérieur.

Ici 2^1-2 = 0 ; 2^2-2 = 2 ; 2^3-2 = 6 (on approche :) ) ; 2^4-2 = 14
Notre chiffre x est donc 4

Troisièmement : Le chiffre x trouvé permet de savoir sur combien de bits sera codée la partie hôte (c’est à dire combien de bits vont être à 0 dans notre masque de sous-réseau), ici c’est 4 bits :

Donc notre masque de sous-réseau sous forme binaire ressemble à : 1111 1111.1111 1111.1111 1111.1111 0000 (nous retrouvons nos quatre bits à « 0 »), converti cela donne : 255.255.255.240 ==> Voici notre masque de sous-réseau.

Quatrièmement : Maintenant que nous avons notre masque de sous-réseau, nous allons calculer la plage IP. Pour cela le chiffre x est toujours nécessaire.

2^x = Nombre d’adresses sur la plage. Donc ici : 2^4 = 16 adresses disponibles.
Donc notre plage commence à 192.168.1.0 puis on ajoute 16 adresses cela nous fait 192.168.1.15 (on inclut la première adresse voila pourquoi ce n’est pas 192.168.1.16 :) ).

L’adresse 192.168.1.0 est l’adresse de réseau (comme dit dans l’énoncé), l’adresse 192.168.1.15 qui est la dernière adresse de la plage est l’adresse de broadcast (c’est à dire l’adresse sur laquelle nous allons pouvons contacter tous les hôtes de la plage).

Cinquièmement : Définir les hôtes disponibles pour la plage

Nous avons notre plage IP : 192.168.1.0 à 192.168.1.15, cependant l’adresse de réseau n’est pas utilisable pour un hôte, de même que l’adresse de broadcast, la plage d’adresses disponibles pour les hôtes est donc 192.168.1.1 à 192.168.1.14

Petit résumé :

La plage IP initiale : 192.168.1.0/24 ou 192.168.1.0 à 192.168.1.255 ou 192.168.1.0 255.255.255.0
Nous avons besoin de diviser ce réseau en un sous-réseau de 10 hôtes.
Le masque de sous-réseau est : 255.255.255.240
Donc nous avons notre plage d’adresse qui contient 16 adresses et 14 adresses disponibles pour les hôtes (nous avons enlevé l’adresse de broadcast et celle de réseau)

Maintenant continuons en faisant l’autre sous-réseau de 10 et le sous-réseau de 24 hôtes en partant cette fois ci de l’adresse 192.168.1.16.

De 192.168.1.16 à 192.168.1.255 j’ai encore de la place pour 10 hôtes.
Trouvons notre chiffre x : 2^4-10 > 14. x = 4;
Donc comme tout à l’heure nous avons 4 bits réservés pour les hôtes et le reste pour la partie réseau dans le masque, donc 1111 1111.1111 1111.1111 1111.1111 0000 converti en chiffre en base 10 : 255.255.255.240 ou /28
Nous avons donc 16 adresses dans la plage et 14 (16-2) adresses disponibles pour les hôtes. Soit un plage allant de 192.168.1.16 à 192.168.1.31, en enlevant l’adresse de réseau et de broadcast nous avons une plage réservée pour les hôtes allant de 192.168.1.17 à 192.168.1.30.

Passons maintenant à 24 hôtes en parant de 192.168.1.32 :

La plage 192.168.1.32 à 192.168.1.255 est suffisamment grande pour contenir 24 hôtes.
Trouvons x : 2^4-2 = 14 (x =4 n’est pas assez grand) ; 2^5-2 = 30 > 24 (x = 5 est suffisant).
Nous avons donc 5 bits réservés pour les hôtes : 1111 1111.1111 1111.1111 1111.1110 0000, le masque de sous-réseau est donc 255.255.255.224 ou /27.
Notre plage contient donc 32 adresses, elle part donc de 192.168.1.32 à 192.168.1.63, en enlevant l’adresse de réseau et l’adresse de broadcast nous avons donc la plage 192.168.1.33 à 192.168.1.62 qui peut contenir des hôtes.

Voici donc les 3 plages dont l’entreprise a besoin pour pouvoir mettre en place ces 3 sous-réseau :

1ère plage : 192.168.1.0 à 192.168.1.15
2nde plage : 192.168.1.16 à 192.168.1.31
3ère plage : 192.168.1.32 à 192.168.1.63

Si vous voulez vous entrainer vous trouverez ci-dessous un fichier contenant des questions d’entrainement (ainsi que la correction) :

Format PDF : EnoncéCorrection
Format Word : EnoncéCorrection

Agrégat d’adresses IP

L’agrégat d’adresses IP permet de « résumer » plusieurs adresses de réseau avec un même masque de sous-réseau en une seule adresse de réseau, avec un masque de sous-réseau propre. Pour cela nous avons une méthode simple :

Nous devons agréger 192.168.0.0/24, 192.168.1.0/24,192.168.2.0/24 et 192.168.3.0/24

Pour cela nous allons comparer tous les chiffres de l’adresse IP, jusqu’à trouver un chiffre différent :

192 ==> premier quartet est identique à toutes les adresses
168 ==> second quartet est identique à toutes les adresses

A partir du troisième quartet, les chiffres sont différents, nous avons :0,1,2 et 3. Convertissons ces chiffres en binaire :

0 = 0000 0000
1 = 0000 0001
2 = 0000 0010
3 = 0000 0011

Maintenant nous allons comparer les bits un à un, jusqu’à ce qu’un bit soit différent, nous remarquons que les 6 premiers « 0 » sont identiques à partir du 7ème bit nous avons des chiffres différents.
Ce qui nous fait donc : 1er quartet identiques (8 bits), 2nd quartet identiques (8 bits), 3ème quartet (6 bits identiques).
Au total cela nous fait : 8 + 8 + 6 = 22 bits identiques. Nous savons que nous avons un « /22″. Donc 22 bits à « 1 » dans le masque de sous-réseau : 1111 1111.1111 1111.1111 1100.0000 0000 ==> 255.255.252.0.

Puis nous prenons l’adresse 192.168.0.0 à laquelle nous rajoutons un /22. L’adresse d’agrégation est donc 192.168.0.0/22.

Pour vous entrainer vous pouvez agréger les adresses suivantes : 172.16.0.0/24 ; 172.16.1.0/24, 172.16.2.0/24 et 172.16.3.0/24
La réponse se trouve à la fin du billet

Conclusion

Au sein de ce billet, nous avons vu différentes versions d’adresses IP et avons essayer de mieux comprendre les principes de Subnetting et d’agrégation qui sont la base dans l’adressage IP. En espérant que ce cour vous a été profitable.

Réponses

Conversion des chiffres de binaires en base 10

1111 000 ; 1110 0000 ; 1111 1100 ; 1111 1110 ; 1100 0000

1111 0000 ==> 1*2^7 + 1*2^6 + 1*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 0*2^1 + 0*2^0 = 240
1110 0000 ==> 1*2^7 + 1*2^6 + 1*2^5 + 0*2^4 + 0*2^3 + 0*2^2 + 0*2^1 + 0*2^0 = 224
1111 1100 ==> 1*2^7 + 1*2^6 + 1*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 1*2^1 + 0*2^0 = 252
1100 0000 ==> 1*2^7 + 1*2^6 + 0*2^5 + 0*2^4 + 0*2^3 + 0*2^2 + 0*2^1 + 0*2^0 = 192

Agrégation

La réponse est 172.16.0.0/22.Loic FONTAINE

Laisser un commentaire

Login to your account

Can't remember your Password ?

Register for this site!