__:: Internet: Le protocole IP ::__

 

Le modèle OSI


I
l est maintenant temps de passer aux choses sérieuses et d'expliquer les choses importantes .... Dans les sections à venir, nous allons décrire les principaux protocoles utilisés par les
machines actuelles pour communiquer sur les réseaux et donc sur Internet. Ces protocoles constituent un véritable langage qui est parlé par toutes les machines quel que soit leur pays d'origine. Cette universalité et réellement nécessaire pour parvenir à interconnecter autant de réseaux.
Nous allons voir que pour permettre cette universalité, les organismes de normalisation ont défini un modèle servant de support aux différents protocoles. Nous n'allons pas rentrer trop dans les détails mais sachez que ce modèle se représente sous forme de sept couches. A chaque couche correspond un protocole qui dialogue avec le protocole directement superieur ou directement inferieur en encapsulant ou en désencapsulant les données. Chaque entité (chaque machine) possède l'ensemble des sept couches aussi appelé pile de protocole, pour des raisons assez évidentes (similitude avec une pile d'assiettes par exemple).
Les données sortantes (qui vont de votre machine vers le réseau) partent en général de la couche la plus haute (couche APPLICATIVE) et traversent toutes les couches vers la couche la plus basse (couche PHYSIQUE) grâce à laquelle elles sont convoyées sur le réseau.


Ouf !! C'est un peu compliqué, je sais, on va donc faire un petit schéma. On y retrouve les deux couches citées plus haut plus quelques autres ...


Machine 1 (client)   Machine 2 (serveur)
Application
Présentation
Session
Transport
Réseau
Liaison
Physique
<---------------------------->

<---------------------------->

<---------------------------->

<---------------------------->

<---------------------------->

Application
Présentation
Session
Transport
Réseau
Liaison
Physique
I____________________________ Support de communication ________________________I


Ainsi, même si les données transitent réellement verticalement à travers toute la pile (jusqu'au support de communication) à chaque émission / reception, tout se passe comme si les couches dialoguaient entre elles directement (flèches horizontales) .


Le modèle présenté ci dessus est un modèle très complet appelé modèle OSI. Pour simplifier un peu les choses, nous n'utiliserons qu'un nombre réduit de couches de ce modèle. En effet, dans la majorité des cas, on peut réduire le modèle ci-dessus au modèle simplifié suivant:

Application
Transport
Réseau
Physique

Nous n'utilisons donc plus que quatre couches, on verra par la suite que c'est amplement suffisant !!

Rem : Le protocole PPP que nous avons décrit plus haut (dans le chapitre connexion) appartient à la couche "physique". Le protocole HTTP que nous avons aussi vu un peu plus tôt appartient à la couche applicative.


Voilà qui est fait, cette petite introduction du modèle OSI était nécessaire avant d'aller plus loin sur le protocole IP.

 

Adresse IP

Résumons un peu ce que l'on sait jusqu'a maintenant : Notre ordinateur est connecté à celui de notre FAI qui lui même est connecté à celui d'un fournisseur d'accès plus important et ainsi de suite.
Quand vous tapez une adresse, vous allez chercher sur le serveur correspondant la page indiquée (un ou plusieurs fichiers).

Pour bien comprendre le fonctionnement général, il nous manque un morceau d'information : Comment toutes ces données, tous ces fichiers, se propagent-ils à travers le réseau et trouvent-ils à chaque fois le bon destinataire ?

Dans la vie de tous les jours, vous êtes identifié par un nom, une adresse postale, éventuellement un numéro de téléphone.
Sur internet, vous êtes identifié par une adresse IP (Internet Protocol).
Cette adresse est composée de quatre chiffres compris entre 0 et 255 et séparés par des points. Par exemple : 255.25.31.10 est une adresse IP.

Cette adresse est l'identifiant unique de votre ordinateur sur internet, vous êtes donc le seul à la posseder tout au long de votre connexion. A chaque connexion, votre FAI vous fournit une nouvelle adresse IP. C'est pourquoi on parle d'adressage IP dynamique, en opposition avec l'adressage statique de certaines machines qui gardent constamment la même adresse (les sites web par exemple).

Rentrons un peu dans le détail. En fait, l'adresse IP contient un grand nombre d'informations qu'il est important de connaître.
Attachons nous tout d'abord à sa forme générale : Il s'agit de quatre nombres entre 0 et 255. Si vous avez bien assimilé le cours de codage (hum,hum...), vous saurez que 255 est le nombre maximum que l'on peut représenter sur un octet. Chaque digit de l'adresse IP se code donc sur un octet, l'adresse IP entière se code dons sur quatre octets soit 4*8=32 bits.

Nous allons continuer à utiliser l'analogie avec l'adresse postale : Dans votre adresse postale, certains critères généraux sont présents (pays par exemple), ceux ci sont complétés par des critères un peu plus précis de localisation géographique (ville) pour enfin aboutir à l'endroit exact où vous vivez (rue + numéro). Dans une adresse IP, c'est un peu pareil : une partie de l'adresse permet de déterminer le réseau dans lequel vous vous trouvez (rappelons qu'internet est une interconnexion de réseaux) cette partie est appelée Netid (Network Identificator). Le reste de l'adresse sert à vous identifier au sein de ce réseau (hostid). Comme l'adresse IP est numérique pure, il faut trouver un moyen de différentier la zone "identifiant réseau" de la zone "identifiant de l'hote". On définit pour ceci les cinq classes d'adresses suivantes :

Classe Valeurs
A de 0.0.0.0 à 127.255.255.255
B de 128.0.0.0 à 191.255.255.255
C de 192.0.0.0 à 223.255.255.255
D de 224.0.0.0 à 239.255.255.255
E de 240.0.0.0 à 247.255.255.255

 

Vous allez me dire que c'est bien joli mais que ça nous aide pas beaucoup à trouver l'identifiant réseau ... Détrompez vous. On connaît aussi la table de correspondance suivante :

 
Classe Information
A Netid : 8 premiers bits, Hostid: 24 derniers bits
B Netid : 16 premiers bits, Hostid: 16 derniers bits
C Netid : 24 premiers bits, Hostid: 8 derniers bits
D 32 bits d'adresse multicast
E Non utilisé

A cause du tableau précédent, on donne souvent une autre appellation aux classes d'adresses. Ainsi la classe A est aussi appelée /8 à cause de ses huit bits de Netid. Il en est de même pour les adresses de classe B (/16) et de classe C (/24).

Prenons un petit exemple : Soit l'adresse 203.43.21.12 : c'est une adresse de classe C, l'identifiant réseau de cette adresse est donc 203.43.21 et l'identifiant d'hôte de cette adresse est 12... Facile !!

Nous l'avons déjà dit tout à l'heure, dans la majorité des cas de connexion à internet vous utiliserez une adresse IP dynamique : votre FAI vous en donne une nouvelle à chaque connexion. Voici l'occasion de vérifier un peu ce qui est dit sur ce site... Si vous utilisez toujours le même fournisseur d'accès, l'identifiant réseau de l'adresse IP doit rester le même... à vous de le vérifier !!! Allez, je vais vous aider un peu à trouver l'adresse IP de votre connexion, ça n'est pas bien difficile et il existe de nombreuses méthodes.
Celle-ci est simple: vous allez tout d'abord ouvrir une fenêtre DOS : menu démarrer > programmes > invite de commande MS-DOS.
Une fenêtre DOS s'ouvre alors. Tapez la commande suivante :

 

Et voilà !! Vous avez votre adresse IP ! Et aussi le masque sous réseau, mais on verra son utilité plus tard.

Voici une autre méthode (pour les allergiques à MS-DOS !) qui fonctionne sous Win98 : Lancez la commande "exécuter" du menu démarrer. Dans la boite de dialogue qui apparaît, tapez "winipcfg" puis validez. La fenêtre suivante s'affiche :

 

Bon ... On en sait maintenant un peu plus sur l'adresse IP. Reprenons notre analogie de l'adresse postale.
Tout comme on peut mettre son adresse au dos d'un courrier que l'on envoie (pour que le récepteur sache d'où vient l'enveloppe), tout paquet de donnée, toute demande envoyée par votre machine sur le réseau contient votre adresse IP. Ceci permet d'identifier facilement la provenance des paquets et cela permet également au serveur de répondre au requêtes en s'adressant à la bonne personne, important non ??

DNS

Si vous avez bien suivi jusqu'ici, vous avez compris que tous les ordinateurs connectés sur le Net sont identifiés par une adresse IP. J'ai bien dit TOUS : les particuliers, les professionnels, les serveurs web, les serveurs mail ... tous possèdent une adresse IP.
Ainsi, le serveur web qui contient la page de yahoo par exemple possède aussi une adresse IP. Si vous la connaissez, vous pouvez la taper directement dans votre navigateur. Mais vous conviendrez qu'il est plus facile de retenir cette adresse : www.yahoo.fr que celle ci : 240.26.35.57 (ce n'est pas l'adresse IP exacte, j'ai un peu la flemme de chercher, pardon :-).
C'est pour cela que les serveurs DNS (Domain Name Server) on été mis en place.
Il s'agit de serveurs spéciaux qui se chargent de transcrire les adresses littérales que vous connaissez (www.yahoo.fr) en l'adresse IP dont votre PC a besoin pour se connecter.
En effet, à chaque adresse alphanumérique correspond une ou plusieurs adresse IP.
Les sites important disposent de plusieurs serveurs web pour accueillir leurs clients et disposent donc de plusieurs adresses IP.
Le serveur DNS contient donc d'énormes tables de données qui permettent de faire la liaison entre un nom de domaine et l'adresse IP du serveur correspondant.
Comme notre histoire devient un peu compliquée, je vais refaire un petit dessin :

 

 

Bon, comme c'est un peu complexe, on va détailler ensemble les différentes étapes. Ceci est le processus qui est lancé à chaque fois que vous voulez ouvrir une page web.

(0) Vous entrez l'adresse www.abc.com dans votre navigateur internet et tapez sur entrée.
(1) Votre PC va entrer en contact avec le serveur DNS que vous lui avez spécifié dans les paramètres de connexion. Je ne l'ai pas représenté ici mais ce serveur possède bien sûr une adresse IP. Vous lui envoyez une requête qui contient l'adresse alphanumérique du site à visiter.
(2) Le serveur vous répond en vous donnant l'adresse IP (123.11.24.110) de l'un des serveurs web du site. Aujourd'hui, les serveurs DNS accèdent à un certain nombre de statistiques concernant les sites : état des serveurs, nombre de personnes connectées ... Ainsi, si un site possède plusieurs serveurs web, le DNS vous donnera l'adresse IP du serveur le moins chargé ou le plus proche de votre point de connexion par exemple.
(3) Une fois que vous possédez l'adresse IP du serveur, vous pouvez lui envoyer une requête HTTP pour récupérer une page précise. Vous précisez votre adresse IP pour que les paquets vous reviennent bien.
(4) La requête se propage à travers le réseau jusqu'au serveur web dont l'adresse est 123.11.24.110.
(5) Le serveur web répond à votre requête HTTP par une réponse HTTP ... Si il possède la page demandée, celle-ci vous est envoyée.
(6) Vous recevez enfin la page web demandée et elle s'affiche sur votre écran.

On le voit bien, le dialogue commence à devenir compliqué ... Imaginez bien qu'internet relie des milliards de machines qui doivent toutes communiquer ensemble et donc parler le même langage. C'est pas facile ... On a donc mis en place le protocole Internet (IP en anglais).


Protocole IP

Ce protocole fait partie de la couche réseau du modèle OSI définit plus haut.
Sa seule utilité (qui est déjà très importante !) est de diriger les paquets à travers le réseau jusqu'à l'adresse IP destination. On dit que IP assure le routage des paquets. Le protocole IP n'est pas un protocole fiable c'est à dire qu'il ne permet pas de s'assurer que les paquets arrivent à destination (rassurez vous, cette tache est effectuée par un autre protocole). Il ne permet pas nom plus d'assurer que les paquets arriveront dans l'ordre dans lequel ils ont été envoyés. En effet, deux paquets consécutifs ne vont pas forcément emprunter le même chemin sur le réseau, il se peut aussi que certains paquets se perdent ou que le contenu de certains paquets soit modifié. IP se contente juste de trouver la route vers l'adresse IP destination mais sans certitude d'y arriver. Il fait cela très bien et les paquets arrivent dans la majorité des cas, rassurez vous !!
J'oubliais une petite chose : IP a une fonction de fragmentation. IP est capable de fragmenter un paquet de données trop gros en deux ou plusieurs paquets plus petits si cela est nécessaire, en cours de transfert.
Le protocole IP est utilisé sur toutes les machines présentes sur le réseau. Pour arriver à ses fins, IP ajoute à chaque paquet de données un en-tête qui contient tout un tas d'informations intéressantes, entre autre l'adresse IP de la machine source et celle de la machine cible. Cet en-tête est suivi par les données à transmettre elles-mêmes. L'ensemble en-tête + données forme ce que l'on appelle dans le jargon informatique un datagramme IP, dont voici l'aspect :

Bit 0 _______________________________________________________________________Bit 31
Version HLEN TYPE DE SERVICE LONGUEURE TOTALE
IDENTIFICATION F Fragment Offset
TTL PROTOCOLE CONTROLE HEADER
ADRESSE IP SOURCE
ADRESSE IP DESTINATION
OPTIONS IP Padding
DATA


Ca fait pas mal de nouveautés tout ça non ? On va expliquer tout ça calmement ...
Il y a des choses faciles quand même : l'adresse IP source et l'adresse IP destination, on a déjà vu, on sait quelle tête ça a et ce que ça veut dire... c'est déja ça !!

Le premier champ contient comme son nom l'indique la version du protocole IP utilisé. On fonctionne aujourd'hui en IP V4 et on commence à parler de la prochaine version : IP V6.
HLEN contient la longueur de l'en-tête IP (5 * 32 bits = 20 octets si il n'y a pas d'options).
Le champ suivant contient la longueur totale du datagramme : en-tête + données.
Le champ identification permet de remettre les datagrammes dans l'ordre si IP a effectué une segmentation (contient le numéro du paquet)
Le champ F (flags) contient 3 bits qui permettent entre autre de savoir si IP a effectué une fragmentation durant le transport.
Le champ Fragment Offset indique où se situe le premier octet dans le paquet d'origine avant fragmentation.
Le champ TTL contient le compteur Time To Live (voir plus bas)
Le champ protocole contient le numéro du protocole transporté dans le datagramme IP. Il s'agit du protocole de la couche supérieure du modèle OSI. Nous étudierons par la suite les protocoles des couches supérieures.
Le champ CONTROLE HEADER contient une somme de contrôle. C'est un moyen de s'assurer que l'en-tête IP n'a pas été modifié durant le trajet.
Pour les options, merci de vous referer au RFC 791 pour rentrer dans les détails.

Parlons un peu de routage. Le fonctionnement général n'est pas bien compliqué à comprendre : si l'adresse IP destination n'appartient pas au même réseau IP que votre machine (même NetID), vous ne pouvez pas lui envoyer le datagramme directement. Il faut utiliser une passerelle, c'est à dire une machine qui possède une adresse dans les deux réseaux (le vôtre et le réseau destination). A la connexion, une passerelle par défaut est définie vers votre FAI : tout les datagrammes se dirigent donc vers votre fournisseur d'accès qui lui procèdera de la même manière avec les passerelles qu'il peut atteindre directement. Le routage est en fait un processus très complexe qui dépasse complètement l'objet de ce site.

Pour l'instant vous avez juste besoin de savoir ce qu'est le TTL : c'est un compteur de durée de vie du datagramme. Lorsque vous envoyez un datagramme, vous attribuez une valeur à ce champ. A chaque passage par un routeur, cette valeur est décrémentée de un. Un routeur qui reçoit une trame dont le TTL est à 1 à pour obligation de la détruire et donc de ne pas la transmettre. Ce processus permet d'éviter que des trames perdues tournent indéfiniment de routeur en routeur.

Sachez que la grande majorité des paquets qui partent et qui arrivent sur votre ordinateur sont des datagrammes IP. Vous ne pouvez pas les voir en principe avec les fonctions standard de windows. Il faut utiliser un petit outil informatique qui va capturer et stocker dans un fichier tous les paquets qui circulent par votre modem. Cet outil s'appelle un sniffer et une section de ce site lui est dédiée. Si vous voulez vraiment comprendre quelle tête ont les données qui rentrent et sortent de votre pc, c'est par ici

Voilà pour la partie théorique sur IP, ce sera tout pour le moment et c'est déjà pas mal ! On va maintenant prendre un petit exemple pour faire le point.

Application

Voici une application du fonctionnement du réseau dans l'état actuel de nos connaissances.

(1) Lorsque le serveur abc.com reçoit votre demande, il se doit de renvoyer la page que vous lui avez demandé, et dans la plupart des cas il s'agit d'un grosse quantité de données (images, textes, animations flash ...). Que se passerait-il si le serveur envoyait toutes ces données d'un seul coup ?

(2) Le serveur crée le paquet IP contenant comme adresse destination votre adresse IP (123.12.44.55) et comme adresse source la sienne (123.11.24.110). Il précise tous les autres champs de l'en-tête et met les données à la suite de cet en-tête pour composer un datagramme.

(3) Son modem code toutes ces données et elles transitent via le réseau jusqu'a votre FAI puis votre modem.

(4) Votre modem décode les données et votre navigateur les affiche.

Ca fonctionne, en somme !! Cependant, comme le paquet était assez énorme, chaque interconnexion a pris du temps, chaque traitement est fastidieux : en gros vous mettez une demi-heure à recevoir vos données.
Il existe un autre problème : si jamais entre chez vous et l'endroit où se situe le serveur (par exemple: USA, australie ...) une ligne se coupe au moment du passage de votre gros bloc de données, toutes vos infos sont perdues. Vous êtes obligé d'attendre une demi heure quand même avant de comprendre que votre paquet à été perdu (comment en être sûr ?) et de pouvoir relancer la requête .... Pas très efficace !
De plus, imaginez si tout le monde fonctionnait comme ça, le réseau serait terriblement saturé depuis longtemps !!

Nous voyons ici le point faible du protocole IP : il n'assure pas la fiabilité du transfert, ni l'optimisation de celui ci. Il est capable de diriger un paquet à travers le réseau mais c'est tout. C'est pourquoi un nouveau protocole a été developpé par les ingénieurs ... Voir le chapitre suivant !

[ Précédent | Accueil | Suivant ]
© 2001 RésoLution. Tous droits réservés. Contactez le Webmaster.