__:: Internet: Le protocole IP ::__ |
Il 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) | |||||||||||||||
|
<----------------------------> <----------------------------> <----------------------------> <----------------------------> <----------------------------> |
|
||||||||||||||
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.
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 ??
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).
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.
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. |