Avant-propos
Description sommaire du protocole TCP/IP (Transfert Contrôle Protocole/Internet Protocole) et des Classes d'Adresses Réseaux Privés, rien ne remplacera la lecture de la RFC791 et RFC793. Mais pour une approche débutante de TCP/IP, cela peut convenir à un utilisateur désireux de se familiariser avec le vocabulaire TCP/IP pour régler réseau et routeur. Un étudiant découvrant IP pourra défricher le sujet, ce n'est pas un article de fond sur TCP/IP.
Je conseille de lire le livre de chez O'Reilly :
TCP/IP - Administration de réseau
3e édition, octobre 2002
ISBN : 2-84177-221-7 - 787 pages
J'ai trouvé sur le Web la partie de l'article qui décrit les Classes d'Adresses Réseaux Privés, je trouve que cette représentation numérique est très explicite. De ce fait, je tiens à remercier Christian Martin, F6DDW, (documents.ref-union.org), auteur d'une partie de ce document que j'ai seulement étayer de la description concernant le Datagramme IP. Une présentation qui diffère peut aider à la compréhension.
Internet Protocole IP
IP (Internet Protocol) est le protocole utilisé sur le réseau mondial Internet et sur le réseau Packet-radio, après AX25. Il définit les méthodes de communication des ordinateurs reliés à ces réseaux.
Les classes publiques et privées
Il existe cinq classes d’adresses IP (voir document SM2-01: Internet), seules les trois premières sont utilisées pour adresser des machines.
Classe A : de 0.0.0.0 à 127.255.255.255. 126 plages sont disponibles dans cette classe. La plage 10.0.0.0 est réservée pour les réseaux privés et la classe 127.0.0.0 est réservée pour les tests locaux à chaque machine (localhost). Le service radioamateur dispose d’un réseau dans cette classe : c’est le 44.x.x.x. Le deuxième octet définit le pays. C’est 151 qui a été attribué à la la France, qui a réservé le troisième octet au département et le quatrième à la station.
Classe B : de 128.0.0.0 à 191.255.255.255. 16 368 plages sont disponibles dans cette classe. Les plages 172.16.0.0 à 172.31.255.255 sont réservées pour les réseaux privés.
Classe C : de 192.0.0.0 à 223.255.255.255. 2 097 251 plages sont disponibles dans cette classe. La plage 192.168.0.0 est réservée pour les réseaux privés.
Les paquets des réseaux privés ne sont pas routés en dehors du réseau privé.
Pour chaque plage de chaque classe, la première adresse est l’adresse du réseau et la dernière est réservée à la diffusion de requêtes et d’informations à destination de toutes les machines du réseau. Pour gagner de la place, les plages peuvent être divisées en sous-réseaux.
Le masque de sous-réseau
Le masque de sous-réseau permet de définir des sous-réseaux à l’intérieur d’une classe.
Il est plus facile de s’y retrouver en le décomposant en binaire : sans découpage, chaque bit du masque de sous-réseau correspondant à celui de l’adresse réseau est à 1 et chaque bit correspondant à celui de l’adresse machine est à 0. Un masque de sous-réseau est donc composé d’une suite de 1 successifs puis de 0 successifs.
Si l’on prend pour exemple une plage dans chacune des classes :
Classe A : 44.151.54.7 Le premier octet donne l’adresse du réseau : 44, les autres sont propres à chaque machine. Le masque de sous-réseau non découpé est 255.0.0.0.
Classe B : 152.81.208.101 Les deux premiers octets donnent l’adresse du réseau : 152.81, les autres sont propres à chaque machine. Le masque de sous-réseau non découpé est 255.255.0.0.
Classe C : 192.151.54.7 Les trois premiers octets donnent l’adresse du réseau : 192.151.54, le dernier est propre à chaque machine. Le masque de sous-réseau non découpé est 255.255.255.0.
Supposons maintenant que l’on veuille découper une classe en sous-réseaux. Notre classe 44 s’y prête très bien. Dans 44.151.54.7, le 2e octet est attribué au pays et le 3e au département. Le masque correspondant au découpage par pays serait 255.255.0.0, celui au découpage par départements 255.255.255.0.
Dans chaque sous-réseau, l’adresse la plus basse est réservée au réseau et l’adresse la plus haute à la diffusion générale (broadcast).
Le masque de sous-réseau sert également au système à calculer l’adresse de broadcast du sous-réseau : le système effectue un ou exclusif sur la partie correspondant à l’adresse machine du masque avec des 1 et l’ajoute à l’adresse réseau.
Exemples : Soient les adresses 44.151.54.7 - 255.240.0.0 et 192.151.54.7 - 255.255.255.240.
| 11111111.11110000.00000000.00000000 |
|
11111111.11111111.11111111.11110000 |
| xor 11111111.11111111.11111111 |
|
xor 11111111 |
| 00101100.00001111.11111111.11111111 |
|
11000000.10010111.00110110.00001111 |
| 44 . 15 . 255 . 255 |
|
192 . 151 . 54 . 15 |
Leurs adresses de diffusion sont donc 44.15.255.255 et 192.151.54.15.
Voici pour chaque classe les découpages possibles en sous-réseaux, avec le masque de sous-réseau en binaire, le nombre de sous-réseaux, le nombre d’adresses disponibles dans le sous-réseau et le masque de sous-réseau exprimé en décimal.
Classe A
| Masque binaire |
Réseaux |
|
Adresses |
|
Masque |
| 11111111.00000000.00000000.00000000 |
1 |
|
16 777 214 |
|
255.0.0.0 |
| 11111111.10000000.00000000.00000000 |
2 |
|
8 388 606 |
|
255.128.0.0 |
| 11111111.11000000.00000000.00000000 |
4 |
|
4 194 302 |
|
255.192.0.0 |
| 11111111.11100000.00000000.00000000 |
8 |
|
2 097 150 |
|
255.224.0.0 |
| 11111111.11110000.00000000.00000000 |
16 |
|
1 048 574 |
|
255.240.0.0 |
| 11111111.11111000.00000000.00000000 |
32 |
|
524 286 |
|
255.248.0.0 |
| 11111111.11111100.00000000.00000000 |
64 |
|
262 142 |
|
255.252.0.0 |
| 11111111.11111110.00000000.00000000 |
128 |
|
131 070 |
|
255.254.0.0 |
| 11111111.11111111.00000000.00000000 |
256 |
|
65 534 |
|
255.255.0.0 |
| 11111111.11111111.10000000.00000000 |
512 |
|
32 766 |
|
255.255.128.0 |
| 11111111.11111111.11000000.00000000 |
1 024 |
|
16 382 |
|
255.255.192.0 |
| 11111111.11111111.11100000.00000000 |
2 048 |
|
8 190 |
|
255.255.224.0 |
| 11111111.11111111.11110000.00000000 |
4 096 |
|
4 094 |
|
255.255.240.0 |
| 11111111.11111111.11111000.00000000 |
8 192 |
|
2 046 |
|
255.255.248.0 |
| 11111111.11111111.11111100.00000000 |
16 384 |
|
1 022 |
|
255.255.252.0 |
| 11111111.11111111.11111110.00000000 |
32 768 |
|
510 |
|
255.255.254.0 |
| 11111111.11111111.11111111.00000000 |
65 536 |
|
254 |
|
255.255.255.0 |
| 11111111.11111111.11111111.10000000 |
131 072 |
|
126 |
|
255.255.255.128 |
| 11111111.11111111.11111111.11000000 |
262 144 |
|
62 |
|
255.255.255.192 |
| 11111111.11111111.11111111.11100000 |
524 288 |
|
30 |
|
255.255.255.224 |
| 11111111.11111111.11111111.11110000 |
1 048 576 |
|
14 |
|
255.255.255.240 |
| 11111111.11111111.11111111.11111000 |
2 097 152 |
|
6 |
|
255.255.255.248 |
| 11111111.11111111.11111111.11111100 |
4 194 304 |
|
2 |
|
255.255.255.252 |
Classe B
| Masque binaire |
Réseaux |
|
Adresses |
|
Masque |
| 11111111.11111111.00000000.00000000 |
1 |
|
65 534 |
|
255.255.0.0 |
| 11111111.11111111.10000000.00000000 |
2 |
|
32 766 |
|
255.255.128.0 |
| 11111111.11111111.11000000.00000000 |
4 |
|
16 382 |
|
255.255.192.0 |
| 11111111.11111111.11100000.00000000 |
8 |
|
8 190 |
|
255.255.224.0 |
| 11111111.11111111.11110000.00000000 |
16 |
|
4 094 |
|
255.255.240.0 |
| 11111111.11111111.11111000.00000000 |
32 |
|
2 046 |
|
255.255.248.0 |
| 11111111.11111111.11111100.00000000 |
64 |
|
1 022 |
|
255.255.252.0 |
| 11111111.11111111.11111110.00000000 |
128 |
|
510 |
|
255.255.254.0 |
| 11111111.11111111.11111111.00000000 |
256 |
|
254 |
|
255.255.255.0 |
| 11111111.11111111.11111111.10000000 |
512 |
|
126 |
|
255.255.255.128 |
| 11111111.11111111.11111111.11000000 |
1 024 |
|
62 |
|
255.255.255.192 |
| 11111111.11111111.11111111.11100000 |
2 048 |
|
30 |
|
255.255.255.224 |
| 11111111.11111111.11111111.11110000 |
4 096 |
|
14 |
|
255.255.255.240 |
| 11111111.11111111.11111111.11111000 |
8 192 |
|
6 |
|
255.255.255.248 |
| 11111111.11111111.11111111.11111100 |
16 384 |
|
2 |
|
255.255.255.252 |
Classe C
| Masque binaire |
Réseaux |
|
Adresses |
|
Masque |
| 11111111.11111111.11111111.00000000 |
1 |
|
254 |
|
255.255.255.0 |
| 11111111.11111111.11111111.10000000 |
2 |
|
126 |
|
255.255.255.128 |
| 11111111.11111111.11111111.11000000 |
4 |
|
62 |
|
255.255.255.192 |
| 11111111.11111111.11111111.11100000 |
8 |
|
30 |
|
255.255.255.224 |
| 11111111.11111111.11111111.11110000 |
16 |
|
14 |
|
255.255.255.240 |
| 11111111.11111111.11111111.11110000 |
32 |
|
6 |
|
255.255.255.248 |
| 11111111.11111111.11111111.11111100 |
64 |
|
2 |
|
255.255.255.252 |
La passerelle
Avec l’adresse de réseau et le masque de sous-réseau, une machine peut déterminer à quelles machines elle peut envoyer ses datagrammes. Ainsi, la machine d’adresse IP 44.151.54.7 avec le masque de sous-réseau 255.255.255.240 fait partie du réseau 44.151.54.0 contenant les machines d’adresses 44.151.54.1 à 44.151.54.14 ; l’adresse de diffusion pour ce sous-réseau est 44.0.0.15. Cette machine peut donc s’adresser directement à chacune des machines de ce sous-réseau. Si par contre elle a besoin de connecter la machine 44.151.54.54, celle-ci ne faisant pas partie de son réseau, elle doit passer par l’intermédiaire d’une machine appelée passerelle qui est chargée d’envoyer la requête à la machine désirée. Il y a au moins une passrerelle dans un réseau interconnecté.
Le DNS
Il est plus facile pour l’être humain de retenir des noms (f6ddw.ampr.org) plutôt que des adresses IP (44.151.54.7). Un nom unique est donc affecté à chaque machine d’un réseau. Le DNS (Domain Name System) est un programme qui tourne en permanence sur un ou plusieurs serveurs du réseau et qui fait la correspondance entre le nom des machines et leur adresse IP, qui sont les seules comprises par le réseau.
Paramétrage système
Les paramètres TCP/IP à fournir à un système d’exploitation réseau sont donc l’adresse IP de la machine, son masque de sous-réseau, la ou les adresses DNS et l’adresse de la passerelle par défaut. Lorsque la machine se connecte à un réseau via une ligne téléphonique, c’est généralement le serveur de communications qui attribue l’adresse IP, le masque de sous-réseau, l’adresse des DNS et de la passerelle pat défaut. Le protocole utilisé s’appelle DHCP (Dynamic Host Control Protocol).
Encapsulation
L’ensemble des informations de l’entête et les données contenues dans un paquet IP s’appellent un datagramme. Sa longueur maximum est de 65536 octets. Le datagramme est encapsulé dans une trame physique, Ethernet ou AX25 par exemple.
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Entête | Données |
| Datagramme | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Entête | Encapsulation |
| Trame | Entête Datagramme & Données |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Encapsulation |
Fragmentation
Comme les trames voyagent de machine en machine, elles peuvent subir des découpages dûs au fait que certains routeurs sont limités en nombre d’octets contenus dans une trame. Par exemple la limite de transfert d’Ethernet est de 1 500 octets par trame, mais elle peut descendre à moins de 128 octets. Cette limite s’appelle MTU (Maximum Tranfer Unit). Un datagramme peut donc être découpé en datagrammes plus petits selon le MTU du routeur. Une fois découpé, les fragments d’un datagramme sont transmis tels quels jusqu’à leur destination finale. La machine destinatrice des datagrammes se charge de les réassembler pour restituer le datagramme original.
Le datagramme IP
Le datagramme IP comprend trois parties : l’entête, les données et les contrôles. Il y a deux champs contrôle, un portant sur l’entête, l’autre sur les données, permettant ainsi aux routeurs de traiter plus rapidement les datagrammes selon les données de l’entête et permettant aux applications générant les données d’avoir leur propre méthode pour générer et vérifier les contrôles pour les données.
L’entête est composée de mots de 32 bits
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Exemple d'en-tête de Datagramme Internet |
Version : Version du protocole. Actuellement, c’est la version 4. Le logiciel de traitement vérifie ce champ d’abord et ne traite pas les datagrammes d’une version inconnue afin de prévenir les erreurs d’interprétation.
Internet Header Length (IHL) : Longueur de l’entête en mots de 32 bits, généralement 5.
Type of Service : Type de service. Ce champ se décompose comme suit :
Type de Service 8 bits
Le Type de Service donne une indication sur la qualité de service souhaitée, qui reste cependant un paramètre"abstrait". Ce paramètre est utilisé pour "guider" le choix des paramètres des services actuels lorsqu'un datagramme transite dans un réseau particulier. Certains réseaux offrent un mécanisme de priorité, traitant préférentiellement un tel trafic par rapport a un trafic moins prioritaire
(en général en acceptant seulement de véhiculer des paquets d'un niveau de priorité au dessus d'un certain seuil lors d'une surcharge momentanée). Principalement, le choix offert est une négociation entre les trois contraintes suivantes : retard faible (Low Delay) , taux faible d'erreur (High Relibility) et haut débit (High Throughput).
|
Bits 0-2: Precedence.
Bit 3: 0 = Normal Delay, 1 = Low Delay.
Bits 4: 0 = Normal Throughput, 1 = High Throughput.
Bits 5: 0 = Normal Relibility, 1 = High Relibility.
Bit 6-7: Reserved for Future Use.
0 1 2 3 4 5 6 7
+-----+-----+-----+-----+-----+-----+-----+-----+
| | | | | | |
| PRECEDENCE | D | T | R | 0 | 0 |
| | | | | | |
+-----+-----+-----+-----+-----+-----+-----+-----+
Precedence
111 - Network Control
110 - Internetwork Control
101 - CRITIC/ECP
100 - Flash Override
011 - Flash
010 - Immediate
001 - Priority
000 - Routine |
Precedence, (Priorité)
Normal Delay,(Retard standard)
Low Delay, (Retard faible)
Normal Throughput, (Débit standard)
High Throughput, (Haut débit)
Normal Relibility, (Taux d'erreur standard)
High Relibility, (Taux d'erreur faible)
Reserved for Future Use, (Réservé pour usage futur)
Precedence : Importance du datagramme, de 0 (normal) à 7 (contrôle réseau).
D, T, R : Type de transport désiré.
D (delay) : Délai faible.
T (throughput) : Traversée rapide.
R (reliability) : Haute fiabilité.
Total length : Longueur totale en octets du datagramme IP, y compris l’entête. Comme ce champ est codé sur 16 bits, le maximum possible est 216, soit 65 536 octets.
Identification : Numéro unique qui identifie le datagramme. Une valeur d'identification assignée par l'émetteur pour identifier les fragments d'un même datagramme. Si un routeur doit couper le datagramme en plusieurs fragments pour pouvoir le router, chaque fragment contiendra cet identificateur.
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Entête | Données | Données | Données |
| Datagramme |(600 Octets)|(600 Octets)|(200 Octets)|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Entête | Données | Fragment 1
| Fragment 1 |(600 Octets)| (Fragment offset = 0, More Fragments = 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Entête | Données | Fragment 2
| Fragment 2 |(600 Octets)| (Fragment offset = 75, More Fragments = 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Entête | Données | Fragment 3
| Fragment 3 |(200 Octets)| (Fragment offset = 150, More Fragments = 0
+-+-+-+-+-+-+-+-+-+-+-+-+-+
Identification |
Flags : Bits de contrôle.
Do not fragment : Si ce bit est positionné, la fragmentation est interdite. Si le routeur doit fragmenter, il renvoie un message d’erreur.
More fragments : Si ce bit est positionné, il indique qu’il y a encore d’autres fragments du datagramme original qui suivent.
Fragment offset : Décalage dans le datagramme original des données transportées dans le fragment, en blocs de 8 octets.
Time to live (TTL) : Durée en secondes pendant laquelle le datagramme peut transiter sur le réseau. Au bout de ce délai, le routeur détruit le datagramme et envoie un message d’erreur à l’expéditeur. Chaque routeur traversé doit décrémenter le TTL de un ou de la durée en secondes du transfert. Ceci évite les bouclages dûs à des tables de routage corrompues et les longs délais dûs à des routeurs surchargés.
Protocol : Identification du protocole ayant généré les données contenues dans le champ data.
Header checksum : Assure de l’intégrité des valeurs de l’entête. Il est formé en considérant l’entête comme une séquence d’entiers sur 16 bits, additionnés en complément arithmétique à 1 et en prenant le complément à 1 du résultat. Pour les besoins du calcul, le champ Header checksum est supposé contenir des zéros.
Source IP address : Adresse IP de l’émetteur sur 32 bits.
Destination IP address : Adresse IP du destinataire sur 32 bits.
Options : Champ optionnel de longueur variable.
Padding : Champ dépendant des options sélectionnées.
|