Nous avons dit que l'Internet est un réseau virtuel, construit par interconnexion de réseaux physiques via des passerelles. Ce chapitre parle de l'adressage, le maillon essentiel des protocoles TCP/IP pour rendre transparents les détails physiques des réseaux et faire apparaitre l'Internet comme une entité homogène.
Un système de communication doit pouvoir permettre à n'importe quel hôte de se mettre en relation avec n'importe quel autre. Afin qu'il n'y ait pas d'ambiguïté pour la reconnaissance des hôtes possibles, il est absolument nécessaire d'admettre un principe général d'identification.
Lorsque l'on veut établir une communication, il est intuitivement indispensable de posséder trois informations :
Le nom dit `` qui '' est l'hôte distant, l'adresse nous dit `` où '' il se trouve et la route `` comment '' on y parvient.
En règle générale les utilisateurs préfèrent des noms symboliques pour identifier les machines tandis que les processeurs de ces mêmes machines ne comprennent que les nombres exprimés au format binaire.
Les adresses IP (version 4) sont standardisées sous forme d'un nombre de 32 bits qui permet à la fois l'identification de chaque hôte et du réseau auquel il appartient. Le choix des nombres composants une adresse IP n'est pas laissé au hasard, au contraire il fait l'objet d'une attention particulière notamment pour faciliter les opérations de routage.
Nous éludons la correspondance entre ce nombre et une
éventuelle représentation symbolique, c'est l'objet du serveur de noms,
une application examinée page
.
Chaque adresse IP contient donc deux informations élémentaires, une adresse de réseau et une adresse d'hôte. La combinaison des deux désigne de manière unique une machine et une seule sur l'Internet, sous réserve que cette adresse ait été attribuée par un organisme ayant pouvoir de le faire !
On distingue deux types d'adresses IP :
.
Les adresses à utiliser sur les réseaux privés sont décrites par la RFC 1918 :
10.0.0.0IV1 |
10.255.255.255 |
172.16.0.0 |
172.31.255.255 |
192.168.0.0 |
192.168.255.255 |
Les adresses publiques (souvent une seule), sont le plus généralement fournies par le FAIIV2. Qu'elles soient délivrées de manière temporaire ou attribuées pour le long terme, elles doivent être uniques sur le réseau. La question est donc de savoir de qui le FAI les obtient.
C'est L'ICANN ou `` Internet Corporation for Assigned Names and NumbersIV3 '' qui est chargé au niveau mondial de la gestion de l'espace d'adressage IP. Il définit les procédures d'attribution et de résolution de conflits dans l'attribution des adresses, mais délègue le détail de la gestion de ces ressources à des instances régionales puis locales, dans chaque pays, appelées RIR ou `` Regional Internet Registries ''.
Il y a actuellement cinq `` Regional Internet Registries '' opérationnels : l'APNICIV4pour la région Asie-Pacifique, l'ARINIV5 pour l'Amérique, le RIPE NCCIV6 pour l'Europe, l'AfriNICIV7pour l'Afrique enfin LACNICIV8pour l'Amérique Latine.
Pour ce qui nous concerne en Europe c'est donc le RIPE NCC (Réseaux IP européen Network Coordination Centre) qui délivre les adresses que nous utilisons.
Les adresses IP sont allouées à l'utilisateur final qui en fait la demande par un `` Local Internet Registry '', ou LIR, autorisé par le RIPE NCC. Un LIR est généralement un FAI ou une grande organisation (entreprise multinationale). Il est sous l'autorité de l'instance régionale de gestion de l'adressage. Ainsi pour un utilisateur (quelle que soit sa taille) changer de FAI implique aussi de changer de plan d'adressage IP, lorsque celles-ci ont été allouées statiquement par le LIR. Les adresses IP sont alors restituées puis ré-attribuées à d'autres utilisateurs.
On compte plus de 2000 de LIRs offrant leurs services en Europe selon le RIPE NCCIV9. Le chiffre a forcement augmenté depuis 2003, avec l'élargissement des frontières européennes.
Une adresse IP est un nombre de 32 bits que l'on a coutume de représenter sous forme de quatre entiers de huit bits, séparés par des points (paragraphe 1.2).
La partie réseau de l'adresse IP vient toujours en tête, la partie hôte est donc toujours en queue.
L'intérêt de cette représentation est immédiat quand on sait que la partie réseau et donc la partie hôte sont presque toujours codées sur un nombre entier d'octets. Ainsi, on a principalement les trois formes suivantes :
Pour distinguer les classes A, B, C, D et E il faut examiner les bits de poids fort de l'octet de poids fort :
Si le premier bit est 0, l'adresse est de classe A. On dispose de 7 bits pour identifier le réseau et de 24 bits pour identifier l'hôte. On a donc les réseaux de 1 à 127 et 224 hôtes possibles, c'est à dire 16 777 216 machines différentes (de 0 à 16 777 215).
Les lecteurs attentifs auront remarqué que le réseau 0 n'est pas utilisé, il a une signification particulière (`` tous les réseaux ''). Plus de détails au paragraphe 2.2.
De même, la machine 0 n'est pas utilisée, tout comme la machine ayant le plus fort numéro dans le réseau (tous les bits de la partie hôte à 1, ici 16 777 215), ce qui réduit de deux unités le nombre des machines nommables. Il reste donc seulement 16 777 214 machines adressables dans une classe A !
128.0 à 191.255) et 65 534 (65 536 - 2) machines.
192.0.0 à 223.255.255) et 254 (256 - 2) machines.
Ces adresses forment une catégorie à part, nous en reparlons au paragraphe 3.
Enfin, pour conclure ce paragraphe, calculons le nombre d'hôtes adressables théoriquement à l'aide des classes A, B et C :
Certaines adresses IP ont une signification particulière !
Par convention le numéro 0 d'hôte n'est pas attribué. Si une adresse IP contient cette zone nulle cela signifie que l'on adresse le réseau lui-même et aucun hôte en particulier, donc en règle générale l'hôte lui-même.
De même, pour toutes les pile Arpa l'adresse 127.0.0.1
indique la machine elle-même (`` localhost '' - Voir chapitre IP
page
),
indépendamment des autres adresses réseaux éventuellement attribuées
à n'importe lequel de ses interfaces.
À l'inverse, si tous les bits de la partie hôte sont à 1, cela désigne toutes les machines du réseaux, c'est ce que l'on appele une adresse de `` broadcast '', c'est à dire une information adressée à tout le monde.
On évite au maximum l'usage d'une telle adresse IP sur les réseaux, pour des raisons d'efficacité (encombrement de la bande passante).
Quelques exemples d'adresses avec une signification particulière :
0.0.0.0 |
Hôte inconnu, sur ce réseau |
0.0.0.1 |
L'hôte 1 de ce réseau |
255.255.255.255 |
Tous les hôtes |
138.195.52.1 |
L'hôte 52.1 du réseau 138.195.0.0 |
138.195.0.0 |
Cet hôte sur le 138.195.0.0 |
193.104.1.255 |
Tous les hôtes du 193.104.1.0 |
127.0.0.1 |
Cet hôte (boucle locale). |
Remarque : les deux premières adresses, avec un numéro de réseau
égal à 0, ne peuvent figurer que comme adresse source dans des cas
bien particuliers comme le démarrage d'une station (cf chapitre IP
page
et les travaux pratiques associés).
En 1984 un troisième niveau de hiérarchie est mis en place : le `` subnet '' ou sous-réseau. pour permettre aux administrateurs de gérer plus finement de grands réseaux. La RFC 950 [J. Mogul, J. Postel, 1985] donne plus de précisions, la RFC 1878 [T. Pummill & B. Manning, 1995] est une table de tous les sous-réseaux possibles.
figure IV.02 -- Sous-réseaux
Le `` subnet '' utilise les bits de poids fort de la partie hôte de l'adresse IP, pour désigner un réseau. Le nombre de bits employés est laissé à l'initiative de l'administrateur.
Dans la figure IV.02 ci-contre, les bits 6 et 7 de la partie `` host '' sont utilisés pour caractériser un sous-réseau.
Quelques révisions des propriétés des puissances de 2IV12sont souvent nécessaires pour bien assimiler ce paragraphe. La figure suivante en rappelle les valeurs pour les huit premiers exposants :
Nous avons d'une part 27 + 26 = 192, et d'autre part 25 + 24 + 23 + 22 + 21 + 20 = 63IV13. Ce qui permet de caractériser 4 sous-réseaux de 62 machines (63 moins l'adresse de broascast, le `` 0 '' n'étant pas compté). Le calcul des masques et des adresses de diffusion est expliqué dans le tableau suivant :
| Numéro du réseau | `` Netmask '' | `` Broadcast '' | Adressage hôte |
| 193.104.1.00 | 255.255.255.192 | 00 + 63 = 63 | .1 à .62 |
| 193.104.1.64 | 255.255.255.192 | 64 + 63 = 127 | .65 à .126 |
| 193.104.1.128 | 255.255.255.192 | 128 + 63 = 191 | .129 à .190 |
| 193.104.1.192 | 255.255.255.192 | 192 + 63 = 255 | .193 à .254 |
Soit un total de 62 x 4 = 248 hôtes possibles pour cette classe C avec un masque de sous-réseauIV14, au lieu des 254 hôtes sans.
La machine d'adresse 1 sur chaque sous-réseau, aura comme adresse IP :
| Sous-réseau | Adresse | Décomposition |
| 00 | 193.104.1.1 | 00 + 1 = 1 |
| 01 | 193.104.1.65 | 64 + 1 = 65 |
| 10 | 193.104.1.129 | 128 + 1 = 129 |
| 11 | 193.104.1.193 | 192 + 1 = 193 |
Si vous pensez avoir tout compris, le remplissage du tableau suivant
dans le cas de la classe C 192.168.192.0 et avec 3 bits
pour définir les sous-réseaux ne devrait pas vous poser de problème...
| Numéro | Numéro | Adresse | Première | Dernière |
| du subnet | du réseau | de broadcast | machine | machine |
| 000(0) | to 3.2 cm 192.168.192. | to 3.2 cm 192.168.192. | to 1.5cm | to 1.5cm |
| 001(1) | 192.168.192. | 192.168.192. | ||
| 010(2) | 192.168.192. | 192.168.192. | ||
| 011(3) | 192.168.192. | 192.168.192. | ||
| 100(4) | 192.168.192. | 192.168.192. | ||
| 101(5) | 192.168.192. | 192.168.192. | ||
| 110(6) | 192.168.192. | 192.168.192. | ||
| 111(7) | 192.168.192. | 192.168.192. |
0xFFFFFFto 1cm__ soit encore 255.255.255.to 1cm___
Remarque : On pourra vérifer que la perte d'espace d'adressage pour adresser des hôtes se calcule avec la relation (2n-1) x 2, où n est le nombre de bits du masque. Ainsi avec 3 bits de masque de sous-réseau, la perte d'espace d'adressage s'élève à 14 hôtes ! Les 254 possibilités (256 moins 0 et 255) de numérotation de la classe C se réduisent à 240, amputées de 31, 32, 63, 64, 95, 96, 127, 128, 159, 160, 191, 192, 223 et 224.
En 1992 la moitié des classes B étaient allouées, et si le rythme avait continué, au début de 1994 il n'y aurait plus eu de classe B disponible et l'Internet aurait bien pu mourrir par asphyxie ! De plus la croissance du nombre de réseaux se traduisait par un usage `` aux limites '' des routeurs, proches de la saturation car non prévus au départ pour un tel volume de routes (voir les RFC 1518 et RFC 1519).
Deux considérations qui ont conduit l'IETF a mettre en place le `` Classless InterDomain Routing '' ou CIDR ou encore routage Internet sans classe, basé sur une constatation de simple bon sens :
Les adresses allouées sont donc des classes C contigües, attribuées par région ou par continent. En générale, 8 à 16 classes C mises bout à bout suffisent pour une entreprise. Ces blocs de numéros sont souvent appellés `` supernet ''.
Ainsi par exemple il est courant d'entendre les administrateurs de réseaux parler d'un `` slash 22 '' (/22) pour désigner un bloc de quatre classes C consécutives...
Plus précisement, trois caractéristiques sont requises pour pouvoir utiliser ce concept :
Ce masque se manifeste concrêtement comme dans la reécriture du tableau du paragraphe 1.2 :
| 10.0.0.0 | 10.255.255.255 | 10/8 |
| 172.16.0.0 | 172.31.255.255 | 172.16/12 |
| 192.168.0.0 | 192.168.255.255 | 192.168/16 |
Le terme `` classless '' vient de ce fait, le routage n'est plus basé uniquement sur la partie réseau des adresses.
Les agrégations d'adresses sont ventilées selon le tableau suivantIV15 :
| Multirégionales | 192.0.0.0 | 193.255.255.255 |
| Europe | 194.0.0.0 | 195.255.255.255 |
| Autres | 196.0.0.0 | 197.255.255.255 |
| Amérique du Nord | 198.0.0.0 | 199.255.255.255 |
| Amérique centrale, | ||
| Amérique du Sud | 200.0.0.0 | 201.255.255.255 |
| Zone Pacifique | 202.0.0.0 | 203.255.255.255 |
| Autres | 204.0.0.0 | 205.255.255.255 |
| Autres | 206.0.0.0 | 207.255.255.255 |
Tout d'abord il faut préciser qu'une adresse de broadcast est forcément une adresse de destination, elle ne peut jamais apparaître comme une adresse source dans un usage normal des réseaux.
Quatre formes possibles de broadcast :
255.255.255.255) Une telle
adresse ne peut servir que sur le brin local et ne devrait
jamais franchir un routeur. Ce n'est malheureusement pas
le cas (précisions en cours).
L'usage de cette adresse est normalement limitée à un hôte en phase d'initialisation, quand il ne connait rien du réseau sur lequel il est connecté.
En règle générale l'adressage multicast est employé pour s'adresser en une seule fois à un groupe de machines.
Dans le cas d'un serveur vidéo/audio, cette approche induit une économie de moyen et de bande passante évidente quand on la compare à une démarche `` unicast '' : un seul datagramme est routé vers tous les clients intéressés au lieu d'un envoi massif d'autant de datagrammes qu'il y a de clients.
Les adresses de type `` multicast '' ont donc la faculté d'identifier un groupe de machines qui partagent un protocole commun par opposition à un groupe de machines qui partagent un réseau commun.
La plupart des adresses multicast allouées le sont pour des applications particulières comme par exemple la découverte de routeurs (que nous verrons ultérieurement lors du routage IP) ou encore la radio ou le téléphone/vidéo sur Internet (`` Mbone ''). Parmi les plus souvent utiliséesIV16 sur un lan :
Si une adresse multicast démarre avec les bits 1110 par contre pour les 28 bits suivants son organisation interne diffère de celle des classes A, B et C.
224.0.0.0 à
239.255.255.255.
Une station Ethernet quelconque doit être configurée pour accepter le multicast, c'est à dire pour accepter les trames contenant un datagramme munis d'une adresse IP de destination qui est une adresse multicast.
Cette opération sous entend que la carte réseau sait
faire le tri entre les trames. En effet les trames multicast ont une
adresse MAC particulière : elles commencent forcément par les trois
octets 01:00:5EIV17. Ceux-ci ne
désignent pas un constructeur en particulier mais sont possédés par
l'ICANN (ex IANA).
Restent trois octets dont le bit de poids fort est forcément à 0 pour désigner les adresses de multicast (contrainte de la RFC 1700), ce qui conduit au schéma suivant :
Du fait qu'il n'y a pas assez de place dans l'adresse MAC pour faire tenir les 28 bits du groupe multicast, cette adresse n'est pas unique. On peut même préciser que pour chaque trame comportant une adresse multicast il y a 25 adresses IP de groupes multicast possibles !
Ce qui signifie que si les 23 bits de poids faible ne suffisent pas à discriminer la trame il faudra faire appel au pilote de périphérique ou à la couche IP pour lever l'ambiguïté.
Quand une trame de type multicast est lue par la station Ethernet puis par le pilote de périphérique, si l'adresse correspond à l'une des adresses de groupe multicast préalablement configurées, le datagramme franchit la couche IP et une copie des données est délivrée aux processus qui ont `` joint le groupe multicast ''.
La question est de savoir comment les trames de type multicast
atteignent justement cette station Ethernet ? La réponse se trouve dans
un protocole nommé IGMP et que nous examinerons dans le prochain
chapitre concernant IP, page
.
Pour conclure ce chapitre sur l'adressage IP, il faut nous donner quelques précisions supplémentaires.
Jusqu'à présent nous avons désigné un hôte par son adresse IP. Cette démarche n'est pas exacte si on considère par exemple le cas d'une passerelle, connectée physiquement à au moins deux réseaux différents, avec une adresse IP dans chacun de ces réseaux.
On dira donc maintenant qu'une adresse IP identifie non pas un hôte
mais un interface. La réciproque n'est pas vraie car un même interface peut
collectionner plusieurs adresses IP. Toutes permettent d'atteindre cet
interface, on parle alors d'`` alias IP '', d'`` hôtes virtuels '' et
de `` réseaux virtuels ''...
Nous aurons l'occasion de revenir sur ces notions à la fin de ce cours
(page
).
On dit d'une machine ayant au moins deux adresses IP qu'elle est du type `` multi-homed ''.
En général une passerelle qui met en relation n réseaux possède n adresses IP différentes (une dans chaque réseau), mais ce n'est pas une obligation (nous verrons quelle peut en être l'utilité à la fin de ce cours).
La figure IV.06 met en situation deux hôtes, A et B, en relation
via une passerelle G. Si les `` messages '' et les `` paquets '' sont identiques,
par contre les `` datagrammes '' et les `` trames '' diffèrent puisqu'il
ne s'agit plus du même réseau physique. Dès que nous aurons examiné
le fonctionnement de la couche IP nous reviendrons sur cette figure
pour en expliquer le fonctionnement (voir page
).
Pour en savoir plus :