RFC: 791
Précédent - Suivant - Retour au sommaire
Le diagramme suivant montre la position du protocole Internet dans la "pile" de protocoles :
+------+ +-----+ +-----+ +-----+
|Telnet| | FTP | | TFTP| ... | ... |
+------+ +-----+ +-----+ +-----+
| | | |
+-----+ +-----+ +-----+
| TCP | | UDP | ... | ... |
+-----+ +-----+ +-----+
| | |
+--------------------------+----+
| Protocole Internet & ICMP |
+--------------------------+----+
|
+---------------------------+
| Protocole de réseau local |
+---------------------------+
Relations entre les protocoles Figure 1.
Le protocole Internet s'interface d'un côté avec un protocole hôte-vers-hôte de niveau supérieur et de l'autre côté avec un protocole de réseau local. Dans ce contexte, un "réseau local" peut être un petit réseau d'entreprise comme un réseau beaucoup plus étendu comme ARPAnet.
Le modèle de fonctionnement de la transmission d'un datagramme d'un programme d'application vers un autre est illustré par le scénario suivant :
Nous supposons ici que la transmission traverse un routeur intermédiaire. L'application émettrice prépare les données à envoyer et appelle son module Internet local pour envoyer un datagramme en lui passant l'adresse de destination et quelques autres paramètres comme arguments.
Le module Internet prépare une en-tête de datagramme et lui ajoute les données. Le module Internet détermine une adresse réseau locale correspondant à cette adresse Internet, dans notre cas, il s'agit de l'adresse d'un routeur. Il envoie ensuite ce datagramme ainsi que l'adresse réseau locale à l'interface réseau local.
L'interface réseau local crée sa propre en-tête réseau local, et ajoute à son tour le datagramme, puis émet physiquement le paquet ainsi constitué sur le réseau.
Le datagramme arrive sur un routeur hôte encapsulé dans son en-tête réseau local, l'interface réseau local décapsule cette en-tête, et transfère le datagramme vers le module Internet routeur. Le module Internet routeur détermine en fonction de l'adresse Internet vers quel hôte et sur quel nouveau segment de réseau le datagramme doit être transmis. Le module Internet détermine une nouvelle adresse réseau local visant à ce moment l'ordinateur cible. Il appelle l'interface réseau local traitant ce segment pour y reporter le datagramme.
Cette interface réseau local crée une nouvel en-tête réseau local et y attache le datagramme puis transmet le tout sur le nouveau segment de réseau (lequel en l'occurrence supporte l'hôte cible).
Arrivé à destination, le datagramme est extrait de son enrobage réseau local par l'interface réseau local destinataire, puis est transmis au module Internet destinataire.
Le module Internet détermine à quel programme applicatif le datagramme est destiné. Il passe alors les données au programme applicatif en réponse à un appel système, accompagné de l'adresse de la source et de quelques autres paramètres.
Application Application
\ /
Module Internet Module Internet Module Internet
\ / \ /
LNI-1 LNI-1 LNI-2 LNI-2
\ / \ /
Réseau local 1 Réseau local 2
Chemin de transmission Figure 2
La fonction ou rôle du Protocole Internet est d'acheminer les datagrammes à travers un ensemble de réseaux interconnectés. Ceci est réalisé en transférant les datagrammes d'un module Internet à l'autre jusqu'à atteindre la destination. Les modules Internet sont des programmes exécutés dans des hôtes et des routeurs du réseau Internet. Les datagrammes sont transférés d'un module Internet à l'autre sur un segment particulier de réseau selon l'interprétation d'une adresse Internet. De ce fait, un des plus importants mécanismes du protocole Internet est la gestion de cette adresse Internet.
Lors de l'acheminement d'un datagramme d'un module Internet vers un autre, les datagrammes peuvent avoir éventuellement à traverser une section de réseau qui admet une taille maximale de paquet inférieure à celle du datagramme. Pour surmonter ce problème, un mécanisme de fragmentation est géré par le protocole Internet.
Une distinction doit être faite entre noms, adresses, et chemins [4]. Un nom indique ce que nous cherchons. Une adresse indique où cela se trouve. Un chemin indique comment y aboutir. Le protocole Internet s'occupe essentiellement des adresses. C'est à des protocoles de niveau plus élevé (ex., hôte-vers-hôte ou application) que revient la tâche de lier des noms à des adresses. Le module Internet déduit de l'adresse Internet une adresse réseau local. La tâche qui consiste à transcrire l'adresse de réseau local en termes de chemin (ex., sur un réseau local ou dans un routeur) revient au protocole de bas niveau.
Les adresses ont une longueur fixe de 4 octets (32 bits). Une adresse commence toujours par un numéro de réseau, suivi d'une adresse locale (appelée le champ "reste") codant l'adresse de l'hôte sur ce réseau. Il existe trois formats ou classes d'adresses Internet : pour la classe A, le bit de poids fort vaut zéro, les 7 bits suivants désignent le réseau, les derniers 24 bits désignent l'adresse locale de la machine; pour la classe B, les deux bits de poids fort valent 1 et 0, les 14 bits suivants désignent le réseau et les 16 derniers bits l'adresse locale de machine ; pour la classe C, les trois bits de poids fort forment le schème 110, les 21 bits suivants forment l'adresse réseau et les 8 derniers bits l'adresse locale.
La transcription d'adresse Internet en adresses de réseau local doit être sujette à quelques précautions ; un hôte physique unique peut abriter plusieurs adresses Internet distinctes comme s'il s'agissait de plusieurs hôtes indépendants. Certains hôtes peuvent disposer de plusieurs interfaces physiques (multi-homing).
De ce fait, il faudra pouvoir considérer le cas d'un hôte à plusieurs interfaces physiques chacune abritant plusieurs adresses Internet distinctes.
Des exemples de répartition d'adresses peuvent être trouvés dans "Address Mappings" [5].
La fragmentation du datagramme Internet devient nécessaire dès lors qu'un datagramme de grande taille arrive sur une portion de réseau qui n'accepte la transmission que de paquets plus courts.
Un datagramme Internet peut être spécifié "non fractionnable" Un tel datagramme Internet ne doit jamais être fragmenté quelques soient les circonstances. Si un datagramme Internet non fractionnable ne peut être acheminé jusqu'à sa destination sans être fragmenté, alors il devra être rejeté.
La fragmentation, la transmission et le réassemblage à travers un réseau local hors de vue d'un module de protocole Internet est appelée fragmentation Intranet [6].
Les procédures de fragmentation et réassemblage Internet doivent pouvoir "casser" un datagramme Internet en un nombre de "fragments" arbitraire et quelconque pourvu que le réassemblage soit possible. Le récepteur des fragments utilise le champ d'identification pour s'assurer que des fragments de plusieurs datagrammes ne puissent être mélangés. Le champ "Fragment Offset" indique au récepteur la position du fragment reçu dans le datagramme original. Les champs "Fragment Offset" et "Longueur Totale" déterminent la portion du datagramme original que représente le fragment. L'indicateur bit "Dernier Fragment" indique (lors de sa remise à zéro) au récepteur qu'il s'agit du dernier fragment. Ces champs véhiculent suffisamment d'information pour réassembler les datagrammes.
Le champ d'identification sert à distinguer les fragments d'un datagramme de ceux d'un autre datagramme. Le module Internet émetteur d'un datagramme Internet initialise le champ d'identification à une valeur qui doit être unique pour cette paire source-destination et pour ce protocole pendant toute la durée de transmission de ce datagramme. Le module Internet terminant l'émission d'un datagramme met le bit "Dernier Fragment" et le champ "Fragment Offset" à zéro.
Pour fragmenter un long datagramme, un module Internet (par exemple, dans un routeur), crée deux nouveaux datagrammes et copie le contenu des champs d'en-tête Internet originaux dans les deux nouvel en-têtes. Les données du datagramme original sont divisées en deux portions, la première d'une taille multiple de 8 octets (64 bit) (la taille de la seconde portion n'est donc pas nécessairement un multiple de 8 octets). Nous appellerons le nombre de blocs de 8 octets dans la première portion NBF (ou Nombre de Blocs du Fragment). La première portion de données est placée dans le premier des deux nouveaux datagramme, et le champ "Longueur Totale" est renseigné avec la taille de ce datagramme. Le bit "Dernier Fragment" est basculé à 1. La seconde portion de données est placée dans le second des deux nouveaux datagrammes, et le champ "longueur totale" est renseigné avec la taille du second datagramme. Le bit "Dernier Fragment" est placé à la même valeur que celui du datagramme original. Le champ "Fragment Offset" du second datagramme constitué est renseigné avec la valeur du même champ du datagramme original plus NFB.
Cette procédure peut être généralisée à une fragmentation en n fragments, plutôt que les deux décrits ci-dessus.
Pour réassembler les fragments d'un datagramme Internet, un module Internet (par exemple dans un hôte destinataire) recombine les datagrammes dont les valeurs des quatre champs suivants sont identiques : identification, source, destination, et protocole. La recombinaison est réalisée en replaçant la portion de donnée contenue dans chaque fragment dans un tampon à la position relative indiquée par le champ "Fragment Offset" lu dans l'en-tête correspondant. Le premier fragment sera donc placé en début de tampon, et le dernier fragment récupéré aura le bit "Dernier Fragment" à zéro.
Les routeurs implémentent le protocole Internet pour transférer les datagrammes entre réseaux différents. Les routeurs implémenteront de plus le protocole routeur vers routeur ou Gateway to Gateway Protocol (GGP) [7] leur servant à coordonner le routage et à s'échanger d'autres informations de gestion du réseau.
Dans un routeur, les protocoles de niveau supérieur n'ont pas à être reconnus. Les fonctions GGP sont ajoutées dans l'implémentation du module IP.
+-------------------------------+
|Protocole Internet & ICMP & GGP|
+-------------------------------+
| |
+---------------+ +---------------+
| Réseau local | | Réseau local |
+---------------+ +---------------+
Protocoles dans les routeurs Figure 3.