Un peu plus loin sur les classes d’adresses
Dans le chapitre précédent nous avons abordé la notion de « classes d’adresses ». IP propose trois classes principales, chacun d’entre-elles proposant une répartition différente des octets réseaux et machines :
- Classe A : R.M.M.M
- Classe B : R.R.M.M
- Classe C : R.R.R.M
Bien ! Admettons ! Alors l’adresse 10.234.12.25, adresse de classe A, B ou C ? Bonne question à laquelle vous ne savez pas répondre si vous n’avez pas connaissance de ce qui suit !
Pour différencier les classes d’adresses, IP se référe à la valeur du premier octet de l’adresse :
- si la valeur de l’octet est comprise entre 1 et 126, l’adresse est de classe A. Le premier octet indique le réseau, les trois suivants indiquent la machine dans le réseau.
- si la valeur de l’octet est comprise entre 128 et 191, l’adresse est de classe B. Les deux premiers octets indiquent le réseau, les deux suivants indiquent la machine dans le réseau.
- si la valeur de l’octet est comprise entre 192 et 223, l’adresse est de classe C. Les trois premiers octets indiquent le réseau, le dernier octet indique la machine dans le réseau.
Les curieux doivent se demander pourquoi des valeurs limites comme 126, 191 ou 223 ? N’oublions pas qu’IP se décline, pour nous, en décimal mais que les machines le traitent en binaire ! En fait une machine va repérer la classe d’une adresse, non pas sur la valeur du premier octet mais sur la valeur des premiers bits de l’octet :
- si l’octet est de la forme binaire 0xxxxxxx (avec x égal à 1 ou 0 bien sûr !), l’adresse est de classe A. La valeur décimale de cet octet peut donc être comprise entre 0 (00000000) et 126 (01111110). Dans le paragraphe « Adresses particulières » nous verrons pourquoi les valeurs décimales 0 et 127 sont exclues de la classe A.
- si l’octet est de la forme binaire 10xxxxxx, l’adresse est de classe B. La valeur décimale de cet octet peut donc être comprise entre 128 (10000000) et 191 (10111111).
- si l’octet est de la forme binaire 110xxxxx, l’adresse est de classe C. La valeur décimale de cet octet peut donc être comprise entre 192 (11000000) et 223 (11011111).
Facile non ? La machine repère dès les trois premiers bits de l’adresse sa classe ! Entre-nous, vous préférez la version décimale ou binaire ?
Les adresses particulières
Les plus attentifs auront remarqué que l’adresse 0.0.0.0, de classe A en théorie, n’était pas proposée. Il existe des formats spécifiques d’adresses qui ne peuvent pas être affectés à une machine (INTERFACE d’une machine, mais vous le savez maintenant … Je peux vulgariser un peu ?). Ces deux formats sont :
- l’adresse réseau : adresse spécifique qui identifie un réseau (incluant du même coup toutes les machines du réseau). Cette adresse est utilisée par les équipements d’interconnexion de réseaux que l’on appelle des routeurs. Dans le paragraphe suivant nous étudierons le routage de IP de base, vous comprendrez ce qu’est un routeur. Ces routeurs utilisent des tables de routage pour router les paquets. Ces tables indiquent des directions pour atteindre des réseaux. Il est donc nécessaire de pouvoir définir un format d’adresse qui identifie un réseau.
- l’adresse de « broadcast » : dite adresse de diffusion. Cette adresse permet d’indiquer qu’un paquet est émis à l’attention de toutes les machines du réseau IP d’un réseau IP.Elle se décline en deux formats les adresses de « diffusion limitée » et de « diffusion dirigée »
L’adresse réseau
Le format de cette adresse est simple : on place à 0 la partie machine de l’adresse :
- l’adresse réseau d’une adresse de classe A est donc de la forme : R.0.0.0 (avec 0<r<127)
- l’adresse réseau d’une adresse de classe B est donc de la forme : R.R.0.0 (avec 127<r1<192)
- l’adresse réseau d’une adresse de classe C est donc de la forme : R.R.R.0 (avec 191<r1<224)
Lorsqu’on indique l’adresse 10.0.0.0, on désigne l’ensemble des machines du réseau 10. Lorsqu’on indique l’adresse 162.10.0.0, on désigne l’ensemble des machines du réseau 162.10. Enfin lorsqu’on indique l’adresse 192.145.182.0, on désigne l’ensemble des machines du réseau 192.145.182.
L’adresse 0.0.0.0 pourrait donc indiquer toutes les machines du réseau 0. Mais le réseau 0 n’existe pas ! On pourrait donc dire qu’elle désigne l’ensemble des machines de tous les réseaux (le réseau IP galactique, quoi !). Pas du tout ! Elle représente deux choses selon la machine qui l’interprète :
- Pour un routeur, elle signifie le réseau par défaut ou plus précisément la route par défaut. Elle indique la route à emprunter pour tous les réseaux qui ne sont pas explicitement décrit dans la table de routage. Nous reviendrons sur cet aspect dans le chapitre suivant.
- Pour une machine IP en général, elle est utilisée pour indiquer « réseau courant », autrement dit, le réseau sur lequel je suis mais dont je ne connais rien ! En fait certaines machines ne conservent pas leur adresse IP à la mise hors tension. Donc au « boot » elle vont chercher à recevoir une adresse IP en la demandant à des serveurs, c’est la procédure RARP. Ce format d’adresse est utilisée dans ce cas (et dans quelques autres).
Pour le cas du routeur central ci-contre, il a dans sa table de routage :
- pour atteindre 167.10.0.0 passer par le routeur X1 sur mon interface 2
- pour atteindre 12.0.0.0, passer par le routeur X2 sur mon interface 3
- pour atteindre 0.0.0.0, passer par le routeur X3 sur mon interface 1
Si ce routeur reçoit un paquet à destination de 13.0.0.0 il l’enverra à X3, car il n’a pas de route explicite pour le réseau 13.0.0.0, il route donc par défaut sur X3 !
ATTENTION : L’adresse réseau ne peut jamais être affectée à une machine IP comme adresse d’interface. Elle est générée en source ou destination dans certains paquets par le stack IP dans certaines configuration.
L’adresse de diffusion (« broadcast »)
L’adresse de diffusion dirigée
Elle n’est utilisée qu’en adresse de destination. Elle indique que le paquet est à destination de toutes les machines du réseau identifié par la partie réseau de l’adresse. Elle est transférée par les routeurs jusqu’au réseau de destination.
Le format est très simple : on place à 1 toute la partie machine.
ATTENTION : on place à 1 chaque bit de la partie machine, un octet complet prend donc la valeur 255 (11111111) :
-
l’adresse « broadcast » d’une adresse de classe A est donc de la forme : R.255.255.255 (avec 0<r<127)
-
l’adresse « broadcast » d’une adresse de classe B est donc de la forme : R.R.255.255 (avec 127<r1<192)
-
l’adresse « broadcast » d’une adresse de classe C est donc de la forme : R.R.R.255 (avec 191<r1<224)
L’adresse de diffusion limitée
Elle n’est utilisée qu’en adresse de destination. Elle indique que le paquet est à destination de toutes les machines du réseau sur lequel il est émis. Ces paquets ne sont pas transférés par les routeurs ils restent dans leurs réseaux physiques d’émission.
Le format est encore plus simple : on place tout à 1.
ATTENTION : on place à 1 chaque bit de la partie réseau et machine, un octet complet prend donc la valeur 255 (11111111). L’adresse de diffusion limitée est donc du format décimal : 255.255.255.255
L’adresse de bouclage local (« loopback »)
Cette adresse spécifique est l’adresse : 127.X.X.X avec X.X.X égal à n’importe quoi compris entre 0.0.0 et 255.255.255. Dans 99,99% des cas on utilise l’adresse 127.0.0.1, si on ne le fait pas c’est uniquement par snobisme, pour ne pas faire comme les autres ! Elle indique, quelle que soit la valeur X.X.X, que le paquet émis par cette machine, lui est émis ! Autrement dit, elle permet à une machine de s’envoyer elle-même un paquet ! C’est de la communication intra-machine. Vous trouvez ça ridicule ? Vous avez tort ! Explication …
Imaginez une machine qui supporte plusieurs programmes distincts étant forcément localisés sur une même machine, du moins prévu comme tels lors de leur développement. Pour faire communiquer ces deux programmes, vous pouvez développer une interface spécifique d’accès entre les deux à la condition que vous développiez les deux programmes ! Si vous n’êtes pas le créateur de l’un de ses programmes vous risquez de rencontrer des difficultés. Maintenant si au lieu de tenter de joindre ce programme en interne, vous utilisez un transfert par l’adresse IP de la machine, vous serez considéré par ce programme comme un utilisateur externe à la machine, et il vous répondra !
Mais votre développement va être installé sur différentes machines donc vous ne pouvez pas prédire l’adresse IP de la machine qui l’hébergera. En prévoyant d’utiliser l’adresse de « loopback », vous êtes certain d’appeler la machine qui supporte le programme appelant !
Un exemple simple :
Vous avez réalisé de superbes pages HTML, sur votre PC. Pour les tester il vous suffit de lancer votre navigateur et de sélectionner la page d’entrée par la fonction « Fichier, Ouvrir ». Vous pouvez généralement aussi double-cliquer la page depuis votre Explorateur de fichier. Cette technique fonctionne bien si vos pages sont « statiques », autrement dit avec une extension « .htm » ou « .html ».
Si vous êtes un peu plus érudit dans le domaine, vous vous êtes peut-être lancé dans la conception de sites dynamiques en ASP ou PHP. Cette fois, si vous utilisez la méthode précédente, vous allez vous faire insulter par votre navigateur … Pourquoi ? Parce que les scripts ASP ou PHP sont des scripts serveurs à l’inverse de l’HTML ou du JavaScript qui sont des langages clients. Autrement dit, l’HTML est interprété par votre navigateur alors que l’ASP est interprété par le serveur, qui va généré une page HTML en fonction des instructions du script. Pour interpréter l’ASP ou le PHP il vous faut donc un serveur Web. Supposons que vous ayez un serveur Web installé sur votre PC (type PWS par exemple) ou que vous ayez placé vos pages sur un serveur qui vous est physiquement accessible.
Supposons que pour une raison quelconque vous ne connaissiez pas l’adresse IP de votre machine, ni son nom de serveur Web. Vous voulez cependant tester vos pages, depuis le navigateur installé sur ce serveur ! Comment faire ?
Il vous suffit d’entrer dans la barre d’adresse : http://127.0.0.1/monsite/ (avec monsite = nom du répertoire dans lequel vous avez installé vos pages).
Avec cette commande, vous indiquez au navigateur d’aller chercher un serveur HTTP à l’adresse IP 127.0.0.1. Quand le stack IP reçoit cette adresse destination, il procède à un bouclage au niveau du stack et remonte le paquet vers ses couches supérieures.
L’adresse 127.X.X.X ne peut donc, bien sûr, être utilisée comme adresse de station.
La capacité d’adressage
Fort des différents enseignements présentés ci-dessus, à votre avis : Combien de machines peut-on installer sur un réseau IP de Classe C ?
En théorie on pourrait dire : 255 puisqu’en Classe C, un octet est réservé à la partie machine. Mais en vérité 254, puisque l’adresse R.R.R.0 est réservée pour désigner le réseau et l’adresse R.R.R.255 est réservée pour le « broadcast ».
Plus généralement, si dans une adresse IP, N bits sont réservés à la partie machine, on pourra installer au maximum (2puissanceN) – 2 machines.
Par exemple, si 4 bits sont réservés on installera au maximum 2p4-2 = 16-2 = 14 machines.
Retenez cette formule ! Elle vous permet de déterminer précisément la Classe d’adresse IP dont vous avez besoin en fonction du nombre de machines à installer ! Pour être tout à fait juste, ce n’est pas le choix de la Classe qui est le plus complexe … Cela se « corse » vraiment lorsque vous allez divisé votre adresse réseau en sous-réseaux !
Conclusion du chapitre
Pas trop mal à la tête ? Le binaire, c’est une seconde nature pour vous ?
Dans ce chapitre je vous ai présenté l’adressage IP de base. Vous connaissez tout des 3 classes principales d’adresses et des adresses spécifiques IP. Mais il vous manque encore deux notions impératives dans l’adressage IP :
-
Comment on route IP ?
-
Comment définir un plan d’adressage satisfaisant ?
C’est l’objectif des chapitres 6 et 7. J’aurais pu tenter de vous présenter les notions de sous-réseaux et masque directement après ce chapitre, mais je pense que sur un plan pédagogique ce serait une erreur. En effet, pour bien comprendre le sous-réseau, il faut avoir quelques notions de routage. Le chapitre 6 vous présente donc les éléments de base du routage IP et le chapitre 7 vous présente les éléments de base à ne pas oublier pour définir un plan d’adressage, il justifie également de l’utilité des sous-réseaux. Le calcul des sous-réseaux et la notion de masque sont abordés au chapitre 8.