Le Protocole IP

Sommaire :

Adressage IP
Structure d'un segment IP
Sous-réseau et sur-réseau
Protocole de résolution d'adresse
IPv6

Adressage IP

Généralités - Adresses spéciales - Affectation des adresses

Cette partie concerne uniquement le format d'adressage de la version 4 du protocole IP : IPv4, prochainement et progressivement va se mettre en place une autre version IP : IPv6 avec un autre système d'adressage.

 

Généralités sur l'adressage

L'adressage IP est un adressage logique totalement indépendant des adresses de la couche physique comme les adresses MAC par exemple, cette indépendance permet à un réseau IP d'interconnecter des équipements hétérogènes..Il faudra donc une opération de conversion entre les adresses physiques et les adresses logiques, cette opération est généralement désigné par le terme mapping.

Un adresse IP est une séquence de 32 bits, ce qui devrait en principe nous donner 232 connexions possibles c'est à dire un peu plus de 4 milliards (4 294 967 296 pour être exact), en fait, comme on le voit plus loin, le nombre maximal effectif de connexions est moindre .

L'adressage IP reflète de par sa structure la distinction entre les différents réseaux logiques, en effet un certain nombre de bits de l'adresse IP identifie le réseau lui même (netid), l'autre partie identifie l'hôte dans ce réseau (hostid). Ce découpage netid - hostid constitue donc un plan d'adressage hiérarchique pour un réseau IP, ce qui permet une meilleure gestion des routeurs qui n'ont besoin que de mémoriser des adresses de réseaux et non des adresses d'hôtes. Il va sans dire que des réseaux interconnectés doivent avoir des netids distincts.

De plus cette structuration est différente selon la classe du réseau. On distingue 5 classes de réseaux codée de A à E. La distinction de classe de réseaux se fait sur la valeur des premiers bits. Pour les classes A, B et C, la taille de la partie d'adresse réservée au net-id varie, elle est de 1 octet pour la classe A, 2 pour la classe B et 3 pour la classe C.

La classe D est réservée à la multidiffusion (multicast), technique utilisée par des protocoles spéciaux pour transmettre simultanément des messages à un groupe donné de noeuds différents. La classe E est réservé à un usage ultérieur.

Exercice 1 : Déduire du tableau précédent, pour chacune des classes A, B et C, le nombre théorique de réseaux possibles et le nombre théorique d'hôtes par réseau.

Pour des raisons de commodités, les adresses IP sont rarement exprimée en binaire mais en notation décimale pointée. Chaque octet est traduit en sa valeur décimale et les 4 nombres sont séparés par des points.

Exemple : 137.65.4.1. correspond à l'adresse 10001001 01000001 00000100 00000001

 

 

Les adresses spéciales

Il existe un certain nombre d'adresses IP réservées :

Exercice 2  : Que désigne les adresses suivantes ?

Exercice 3  : Reprendre l'exercice 1 mais en tenant compte de la contrainte liée aux adresses spéciales. Donner pour chaque classe d'adresse l'intervalle des adresses de réseau.

 

 

Affectation des adresses IP

L'affectation d'une adresse IP à un réseau ne peut pas se faire n'importe comment car pour que le système fonctionne il ne faut absolument pas que 2 hôtes puissent avoir une adresse IP identique sinon c'est tout le système d'adressage qui s'écroule.

L'attribution d'un netid à un réseau est donc soumis à une autorité centrale. C'est l'Address Supporting Organization (ASO) qui est responsable de l'allocation des adresses IP (et de tous les identifiants uniques) dans l'Internet. Cet organisme a délégué cette responsabilité à des organismes régionaux comme ARIN aux USA, le RIPE NCC en Europe, et l'APNIC en Asie. Ces organismes délèguent à nouveau à d'autres organismes : les "local registries".

Il existe trois types de "local registries" en Europe définis par le RIPE NCC:

Les adresses de classe C ont été divisées en 8 blocs qui correspondent à peu près à des zones géographiques :

192.0.0 - 193.255.255 Plusieurs régions, ces adresses ont été allouées avant la répartition régionale
194.0.0 - 195.255.255 Europe
196.0.0 - 197.255.255 Utilisées lorsqu'il est nécessaire d'affecter des adresses IP qui ne sont pas basées sur la région
198.0.0 - 199.255.255 Amérique du Nord
200.0.0 - 201.255.255 Amérique centrale et Amérique du Sud
202.0.0 - 203.255.255 Zone Pacifique
204.0.0 - 205.255.255 Utilisées lorsqu'il est nécessaire d'affecter des adresses IP qui ne sont pas basées sur la région
206.0.0 - 207.255.255 Utilisées lorsqu'il est nécessaire d'affecter des adresses IP qui ne sont pas basées sur la région
208.0.0 - 223.255.255 Disponible

Mais on peut être amené à utiliser le protocole TCP/IP sans être connecté à Internet ou en étant connecté à Internet via une passerelle applicative (un serveur Proxy ou un Firewall par exemple), on parle alors de réseaux privés. Pour ces réseaux privés, il est prévu d'utiliser des plages d'adresses spécifiques (qui par ailleurs ne sont jamais affectés par l'ASO) :

 

Structure de la trame IP

Généralités - Datagramme IP - Fragmentation des datagrammes

Généralités

La couche IP est une couche intermédiaire dans la vision globale d'un réseau. En effet si on se réfère au modèle OSI, la couche IP correspond à la couche "réseau" (couche 3) de la pile de protocoles.Cette position intermédiaire signifie donc que le protocole IP va, à la fois fournir des services aux couches supérieures (TCP et UDP) et utiliser des services des couches inférieures (Ethernet, token Ring, X25...).

Le protocole IP est un protocole sans connexion ce qui signifie que chaque datagramme va être étiqueté avec l'adresse de l'expéditeur et du destinataire. Dans ce datagramme on va également trouver un certain nombre d'informations concernant l'acheminement du datagramme comme le nombre de routeurs traversés par exemple. La version 4 de IP prévoit même la possibilité d'insérer dans les datagrammes des informations de "qualité de service" mais elles sont en fait peu utilisés et il faudra attendre la version 6 pour voir cet aspect se développer.

Comme la couche IP s'appuie sur une couche basse directement lié aux caractéristiques physiques des réseaux (Ethernet par exemple), comme la taille d'adresse, la taille de l'unité de transmission maximale (MTU : Maximum Transmission Unit), la bande passante, etc... les datagrammes IP seront donc encapsulés dans des trames Ethernet, Token ring ou autre.

Le réseau IP est un réseau abstrait qui fait abstraction des problèmes matériels gérés par les couches inférieures, chaque datagramme pourra donc éventuellement être routé par des chemins différents, ce qui ne garanti pas qu'à l'arrivée les datagrammes soient dans le même ordre qu'au départ, c'est pourquoi un mécanisme de numérotation de datagramme est mis en oeuvre. La remise en ordre des différents datagrammes n'incombe pas au protocole IP mais aux protocoles supérieures (TCP, UDP).

 

Le Datagramme IP

Le datagramme IP est divisé en 2 parties :

L'entête IP

L'entête IP a une longueur minimale de 20 octets mais il peut être plus grand. On va trouver dans cet entête un certain nombre d'informations essentielles (structurées en champ) pour l'acheminement de l'information :

 


Cliquer sur une zone pour obtenir le descriptif du champ.

Version (4 bits)

Le champ version est utilisé pour indiquer le numéro de version de protocole utilisé (4, 6 etc...). Le logiciel Ip commencera par vérifier la valeur de ce champ pour s'assurer que le datagrame peut être traité. Le svaleurs possibles vont de 0 à 15 avec 4 pour IPv4, 6 pour IPv6 et d'autres valeurs pour des versions moins connues comme TP/IX ou TUBA.

Retour au schéma de l'entête

IHL Internet Header Length (4 bits)

Tous les champs de l'entête sont de longueur fixe sauf le champ Options qui lui est de longueur variable, la longueur de l'entête doit donc être précisée, c'est à cela que sert ce champ.

Retour au schéma de l'entête

TOS Type Of Service (8 bits)

Ce champ permet d'indiquer des informations liées à la qualité de service désiré en terme de priorité (préséance), de délais, de débit, de fiabilité et de coût.

Le bit de préséance lié à la priorité était à l'origine destiné aux applications du ministère de la défense américain, les valeurs possibles sont étiquetées de la manière suivante :

Les 4 drapeaux délai, débit, fiabilité et coût peuvent prendre alternativement mais pas simultanément les valeurs Normal (0) ou Elevé (1). Exemple la suite de bit 0010 correspond à "fiabilité maximale".

La plupart des applications ignorent la valeur de ce champ TOS mais il semble que ce champ puisse jouer un rôle important dans certains protocoles de routage. Par exemple si un routeur connaît 2 chemins possibles pour acheminer un datagramme : l'un à haut débit mais délai important comme une connexion satellite par exemple et l'autre une connexion à délai faible mais débit faible également (ligne spécialisée). Si l'application nécessite un fort volume de transfert de données, la liaison satellite sera choisie, si, par contre, c'est une application interactive qui nécessite des saisies de touches utilisateur, c'est la ligne spécialisée qui doit être utilisée.

Retour au schéma de l'entête

Total Length (16 bits)

Ce champ contient la longueur totale du datagramme, le datagramme peut donc faire au maximum 2 puissance 16 octets - 1 c'est à dire 65 535 octets de long, ce qui est rarement le cas car les couches inférieures ne sauraient pas traiter des paquets de données aussi importants. La longueur minimale est de 576 octets (512 octets de données et 64 octets d'entête).

Retour au schéma de l'entête

Identification (16 bits)

Ce champ correspond au numéro de datagramme. Chaque datagramme est numéroté par l'expéditeur en partant d'une certaine valeur initiale. La codification sur 16 bits permet de numéroter les datagrammes jusque 65535.

Retour au schéma de l'entête

Flags (3 bits)

On va trouver 2 drapeaux sur ces 3 bits (le premier bit étant toujours à 0) :

Retour au schéma de l'entête

Fragment Offset (13 bits)

Ce champ indique la position des données du fragment par rapport au début du datagramme originel.

Retour au schéma de l'entête

TTL Time To Live ( 8 bits)

Ce champ "Durée de Vie" représente la durée de vie maximale d'un datagramme sur le réseau, cette durée est exprimée en secondes. D'autre part, cette durée est décrémentée à chaque routeur de la durée nécessaire à son traitement, mais en fait comme l'évaluation de cette durée nécessiterait un traitement supplémentaire, les routeurs se contentent de décrémenter de 1 le TTL, on considère que ce TTL correspond finalement à un compteur de sauts (hops). Lorsque le TTL tombe à 0, le datagramme est écarté par le routeur.

Retour au schéma de l'entête

Protocol (8 bits)

Ce champ indique à quel protocole de couche supérieure ce datagramme est destiné. Par exemple la valeur de Protocol est 6 pour TCP, 17 pour UDP, 1 pour ICMP, etc...

Retour au schéma de l'entête

Header Checksum (16 bits)

Champ de contrôle de l'entête. Le complément à 1 de chaque valeur de 16 bits de l'entête est ajouté (sauf le champ Checksum Header). On prend alors le complément à 1 de cette somme que l'on code dans ce champ. Ce champ est donc recalculé à chaque routeur puisque le TTL est décrémenté.

Retour au schéma de l'entête

IP source et destination (2 x 32 bits)

Le réseau IP est un réseau sans connexion donc sur chaque datagrame doit figurer les adresses source et destination.

Retour au schéma de l'entête

Options IP ( taille variable, multiple de 32 bits)

Ce champ correspond à des informations qui sont assez peu utilisées dans le protocole IP et qui concernent la sécurité, l'enregistrement du chemin emprunté au travers des routeurs, l'obligation d'emprunter une certaine route, etc...

Retour au schéma de l'entête

Padding

Champ de remplissage lié au champ Options IP qui permet d'avoir un multiple de 32 bits.

Retour au schéma de l'entête

 

La fragmentation des datagrammes

Le protocole IP peut être utilisé en réseau hétérogène, c'est à dire qu'un datagramme peut traverser des réseaux de nature différentes (Ethernet, Token Ring, X25..), or ces réseaux ont des caractéristiques totalement différentes notamment ne ce qui concerne leur MTU, c'est à dire la taille de l'unité de transmission maximale.

Type de réseau
MTU en octets
Ethernet

1500

Token Ring 4 440 à 17 940
FDDI 4 352
X 25 1 007

Quelques valeurs de MTU de réseaux courants

Le problème survient donc si la taille d'un datagramme IP est plus grand que le MTU du réseau emprunté, dans ce cas le datagramme doit être découpé en fragments. C'est le routeur qui va effectuer cette opération et non l'émetteur du datagramme initial puisque ce dernier ignore la structure des réseaux traversés. Chaque fragment va être en fait traité comme un datagramme IP mais à l'arrivée les différents fragments devront être réassemblés.

 

Sous-réseaux et sur-réseaux

Généralités - Pourquoi des sous-réseaux - Principe du subnetting - Masques de sous-réseau -Sur-réseaux

 

Généralités

Lorsque le protocole IP a été mis au point, les nombres de réseaux et d'hôtes potentiellement adressables par le système d'adressage mis en place semblaient surdimensionnés par rapport aux besoins de l'époque, désormais après le développement fulgurant d'Internet ce système a montré ses limites. En effet le système d'adressage divisé en classes a pour effet de générer un gâchis considérable d'adresses.

C'est essentiellement pour remédier à ce gaspillage d'adresses que dès 1985 un mécanisme de sous-réseau est apparu, le principe est de diviser un réseau en plusieurs sous-réseaux interconnectés entre eux.

Plus récemment le concept de surréseau que l'on désigne également par CIDR (Classless Internet Domain Routing) a vu le jour. Le principe est de combiner plusieurs numéros de réseaux (généralement de classe C) pour former un réseau plus important.

 

Sous-réseaux

Pourquoi des sous-réseaux ?

Dans le mécanisme d'adressage IP on distingue principalement 3 classes de réseaux (A,B et C) pour lesquelles chaque réseau disposera d'un nombre maximum d'adresses (cf Adressage IP). Par exemple pour un réseau de classe C, c'est 254 adresses qui seront utilisables puisque l'adresse de l'hôte est codée sur un octet ce qui donne donc 256 adresses possibles auxquelles on soustrait les adresses spéciales (255 et 0) qui ne peuvent être allouées à un hôte.

Mais il arrive fréquemment qu'on veuille fragmenter un réseau pour différentes raisons.

La première motivation de fragmentation d'un réseau peut être la simplification de l'administration. En effet, l'installation de routeurs et le partitionnement en sous-réseaux d'un réseau va permettre d'administrer les sous-réseaux de façon indépendante. Par exemple, le plan d'adressage de chaque sous-réseau pourra se faire de façon totalement indépendante.

Une seconde motivation peut être également de faire une économie d'adresses. Prenons par exemple le cas d'une entreprise qui dispose d'un réseau de classe B, ce qui lui offre un potentiel de 65534 adresses d'hôtes. Il y beaucoup de chances qu'une proportion assez faible de ces adresses soit réellement employée. Si cette même entreprise désire installer un second réseau séparé physiquement du premier par un routeur elle a le choix entre faire l'acquisition d'un nouveau numéro de réseau ce qui est dommage puisqu'il lui reste un potentiel d'adresses non utilisées. Dans ce cas de figure, la solution du partitionnement en sous-réseau est bien meilleure.

Enfin, le dernier avantage de la fragmentation en sous-réseaux est l'aspect sécurité. En effet, il sera plus facile d'isoler certains hôtes du réseau s'ils se trouvent dans un sous-réseau relié par un routeur au reste du réseau que si toutes les machines se trouvent sur un même réseau.

Principe du subnetting

Le subnetting est le terme anglo-saxon qui désigne la fragmentation en sous-réseau. Le principe est d'introduire en plus des notions de netid et d'hostid, la notion de sous-réseau. Or une adresse IP a une taille fixe de 32 bits donc la technique consiste à "prendre" les bits nécessaires au codage du sous-réseau sur la partie réservée à l'hostid.

Il sera donc possible d'utiliser un nombre variable de bits pour caractériser le sous-réseau.

Par exemple pour un réseau de classe C d'adresse 192.47.56.0, on peut décider d'utiliser 3 bits pour caractériser le sous-réseau, ce qui laissera seulement 5 bits pour adresser les hôtes dans chacun des sous-réseaux. En respectant les règles d'adressage vues précédemment cela donne donc 2 5 - 2 = 30 adresses d'hôtes possibles par sous-réseau. Par contre l'utilisation de 3 bits par sous-réseau permet en théorie l'utilisation de 2 3 = 8 sous-réseaux, mais comme pour les netid les numéros de sous-réseau composés uniquement de 1 ou uniquement de 0 ne sont pas autorisés donc cela fait seulement 6 sous-réseaux possibles.

Lors de la structuration en sous-réseaux, il faudra donc trouver un équilibre entre un grand nombre de sous-réseaux avec peu d'adresses possibles par sous-réseau d'une part et peu de sous-réseaux et un nombre d'adresses important.

Enfin, on peut remarquer que la mise en sous-réseau a pour inconvénient de diminuer l'espace d'adressage d'un réseau puisque dans notre exemple on est passé pour ce réseau de classe C de 254 adresses d'hôtes possibles à seulement 6 x 30 = 180 adresses potentielles.

Les masques de sous-réseaux

Dans une adresse IP, la séparation entre netid et hostid est établie par la classe d'appartenance du réseau (cf Adressage IP), par contre pour la séparation entre hostid et sous-réseau la séparation va se faire à l'aide d'un masque de sous-réseau.

Un masque de sous-réseau est une suite de 32 bits qui va permettre de déterminer combien de bits sont réellement utilisés pour la partie hostid d'une adresse, connaissant la classe d'adresse du réseau, on en déduit de façon certaine le nombre de bits du netid et celui du sous-réseau. Par convention les zéros dans le masque de sous-réseau déterminent les positions des bits de l'hostid.

Exemple : Soit un réseau de classe C d'adresse 192.47.56.0, dans lequel on a décidé de laisser 3 bits pour le sous-réseau, le masque aura la valeur suivante : 11111111 11111111 11111111 11100000 , ce qui donne en notation décimale pointée 255.255.255.224

Remarque : La notion de masque est présente de toutes les configurations de réseau TCP/IP même pour ceux qui ne sont pas subdivisés en sous-réseaux, dans ce cas on utiliser ce qu'on appelle un masque standard, c'est à dire que la partie correspondant au netid est à 1, la partie correspondant à l'hostid est à 0.

Classe de réseau
Masque standard
A
255.0.0.0
B
255.255.0.0
C
255.255.255.0

Exercice 4 : Une entreprise a obtenu l'adresse de réseau 144.25.0.0, on veut structurer ce réseau en 20 sous-réseaux. Proposer un masque de sous-réseau et indiquer combien d'adresses seront utilisables dans chacun des sous-réseaux.

Exercice 5 : Pour les réseaux de classe C, déterminer quels sont les différents masque de sous-réseau possible, préciser le nombre de sous-réseaux ainsi que le nombre d'hôtes maximum par sous-réseau.

Exercice 6 : Quel est le nombre maximum d'hôte d'un sous-réseau de classe B ? de classe A ?

 

Sur-réseaux

Il y depuis déjà pas mal de temps pénurie de réseaux de classe A et de classe B, par contre il reste encore un grand nombre de réseau de classe C disponibles. Mais l'inconvénient majeur de ces réseaux de classe C est qu'ils ne peuvent prendre en charge que 254 hôtes. Les organisations de grande taille se voient donc obligées d'utiliser plusieurs réseaux de classes C.

Le principe du sur-réseau est donc d'utiliser un ensemble d'adresses de réseau de classe C contiguës au lieu d'un seul réseau de classe B. Par exemple, une entreprise a besoin d'un réseau de 8 000 hôtes, il est est donc possible d'utiliser 32 réseaux de classe C. Ce mécanisme est très utilisé par les fournisseurs d'accès internet qui ont besoin d'un volant important d'adresses IP.

Si on voit bien l'avantage d'utiliser plusieurs réseaux de classe C à la place d'un réseau de classe B, un problème va résider au niveau des routeurs. En effet, pour avoir la même capacité d'adressage qu'un réseau de classe B, il faut 256 adresses de réseaux de classe C. La place nécessaire au stockage de ces adresses dans la mémoire d'un routeur se trouve donc multiplié par 256 !.

La technique Classless Internet Domain Routing (CIDR) permet de n'utiliser qu'une seule entrée pour un bloc d'adresses de réseau de classe C. Le bloc de classe C sera décrit en donnant la plus basse adresse du bloc suivie d'un masque de sur-réseau. Le masque de sur-réseau est construit en mettant des 1 pour la partie commune à tous les sous-réseau et des 0 pour la partie variable.

Exemple : (198.24.32.0, 255.255.224.0) désigne un bloc de sous réseaux de classe C. Afin de déterminer lequel, il faut exprimer ces 2 données en binaire :

La partie commune au différents réseaux est indiquée en rouge sur la figure précédente, on peut donc déterminer les adresses de réseaux faisant partie de ce bloc :

Première adresse : 11000110 00011000 00100000 00000000 = 198.24.32.0

Dernière adresse : 11000110 00011000 00111111 00000000 = 198.24.63.0

On utilise également une autre notation pour désigner ces blocs CIDR : plus basse adresse du bloc / nombre de bits de préfixe commun ce qui donne pour l'exemple précédent : 198.24.32.0/19

 

Protocoles de résolution d'adresses

Généralités - ARP - RARP

Généralités

L'adressage IP est un adressage logique qui utilise dans la version 4 de ce protocole une adresse sur 32 bits. Néanmoins la transmission des informations va se faire à l'aide des couches basses, les datagrammes IP seront donc encapsulés dans des trames de la couche 2 du modèle OSI telle que les trames Ethernet, Token ring, etc...

Ces réseaux physiques utilisent un système d'adressage physique, il faudra donc faire la correspondance entre les adresses physiques (adresse MAC : Medium Access Control) du protocole IP et les adresses physiques des équipements correspondants, c'est le rôle du protocole ARP.

Plus rarement, il sera nécessaire de faire la correspondance entre une adresse physique MAC et une adresse logique IP, le protocole RARP assure ce rôle.

 

Le protocole ARP

ARP signifie Adress Resolution Protocol, son rôle est de mettre en place un mécanisme de restitution d'une adresse MAC à partir d'une adresse IP dans le cadre d'un réseau où le support est partagé comme le réseau Ethernet par exemple.

Le principe de fonctionnement du protocole ARP est le suivant :

Supposons que la machine A de numéro IP 195.24.56.2 et d'adresse MAC 00-A0-C9-4C-F6-E8 désire connaître l'adresse MAC de l'hôte B d'adresse 195.24.56.12 afin de lui envoyer un message.

  1. La machine A va émettre sur le support une trame MAC de diffusion appelée trame ARP. Dans cette trame figurent les adresses IP et MAC de l'émetteur A et l'adresse IP de l'hôte B.
  2. Tous les noeuds du réseau physique reçoivent cette trame ARP. Chacun des noeuds compare l'adresse IP destinataire figurant dans cette trame avec la sienne.
  3. La machine B a reconnu son adresse IP dans le champ destinataire, elle répond donc directement à A (car elle connaît son adresse MAC) en encodant sa propre adresse MAC
  4. A reçoit donc la réponse à sa requête, il place donc le couple adresse IP/adresse MAC de B dans sa table de cache ARP
  5. A connaissant l'adresse MAC de B peut lui envoyer le message.

La table de cache ARP est destinée à conserver un certain temps en mémoire (généralement 15 minutes) les adresses IP résolues en adresse MAC afin d'économiser du temps et du trafic réseau lors des échanges.

Table cache ARP dans un système d'exploitation de type Windows

 

Le protocole RARP

Généralement une machine peut connaître facilement sa propre adresse IP car elle est stockée dans un endroit de son disque local, mais certains ordinateurs ne disposent pas de disque local ( diskless station), ou tout du moins n'utilisent pas ce disque local pour stocker des paramètres de configuration comme l'adresse IP.

Pour obtenir son adresse IP, l'ordinateur en question devra utiliser le protocole RARP (Reverse Adress Resolution Protocol), le principe de ce protocole est le suivant :

  1. La machine A (diskless station) envoie en diffusion une requête RARP dans laquelle figure son adresse MAC
  2. Tous les noeuds du réseau reçoivent cette requête mais seuls le ou les serveurs RARP vont la traiter
  3. Le serveur RARP tient à jour une liste des adresses IP des noeuds du réseau avec la correspondance avec l'adresse physique MAC
  4. Si l'adresse MAC figurant dans la trame RARP existe dans la table de correspondance du serveur RARP, ce dernier renvoie une réponse à la machine A avec son adresse IP

 

IPv6

A faire....