• 10 hours
  • Easy

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 4/10/19

Mais qu’est-ce qu’un protocole ?

Log in or subscribe for free to enjoy all this course has to offer!
Réseau de capteurs de l’ IoT Lab, Rocquencourt. Notre environnement se peuple d’objects connectés, ici des réseaux de capteurs pour fournir en permanence des informations sur un environnement. La communication entre ces objets, par les protocoles,
Notre environnement se peuple d’objects connectés, ici des réseaux de capteurs fournissant en permanence des informations sur un environnement. La communication entre ces objets, par les protocoles, est essentielle. © Inria / Photo H. Rague

Comprendre la notion de protocole

On ne peut parler de réseaux sans parler de protocoles. Qu’en est-il exactement ? D’après l’une des définitions du Larousse, un protocole est "un ensemble de règles définissant le mode de communication entre deux ordinateurs". On peut reprendre l’analogie avec la communication entre deux personnes. Le schéma ci-dessous représente les échanges entre Alice et Bob. La conversation effective débute une fois que les deux personnes se sont saluées (message “Bonjour”) et se termine par une fin explicite (message “Au revoir”).

Au niveau des ordinateurs et des réseaux, le protocole définit le format et l’enchaînement des messages qui doivent être échangés, ainsi que les actions à réaliser lors de la réception de ces messages. Le terme technique pour ces messages est PDU (Protocol Data Unit) ou Unité de Données de Protocole.

Le protocole HTTP du Web

Regardons de plus près le protocole HTTP ou protocole de transfert hypertexte qui permet à un client (le navigateur) de communiquer avec un serveur web en lui envoyant des requêtes pour obtenir des documents (comme les pages HTML) qui peuvent contenir des liens vers d’autres documents.

Quand on entre l’URL http://www.loria.fr/fr/ dans la barre de navigation, quel message est effectivement émis vers le serveur ?

Le message commence par GET (en majuscule !) suivi du chemin (path) pour indiquer le nom de la ressource et de la version du protocole HTTP (ici HTTP 1.1) :

GET /fr/ HTTP/1.1
suivi de la localisation de la ressource
host: www.loria.fr

Ce message doit avoir un format bien précis et normalisé de façon à ce qu’il soit compréhensible par tous les serveurs web et puisse être généré par n’importe quel navigateur. C’est l’objectif même de la standardisation.

Vous pouvez voir juste en dessous le contenu exact de la requête envoyée :

Vous avez lu ? C'est pas plus incompréhensible qu'un SMS écrit avec des codes de lanages de jeunes :)

On y voit apparaître également un cookie, c’est ce petit fichier texte stocké sur votre ordinateur qui, entre autres, permet de se ré-identifier auprès du serveur web et qui lui permet de garder vos données lors de vos différentes visites (achats effectués, pages consultées…) ; une sorte de carte de fidélité.

Le nom de mon navigateur (ici Safari) est également précisé ainsi que la machine que j’utilise avec la version du système d’exploitation (Macintosh Intel Mac OS X 10_12_2).

La requête est donc interprétée par le serveur qui peut ainsi transmettre la page HTML du site. Voyons cela de plus près, en vidéo.

Comme vous avez pu le voir dans le screencast, cette page contient elle-même des ressources (images, autres pages HTML…) Et, pour chacune d’elle, une nouvelle requête GET sera également émise.

À chaque niveau son protocole

Cependant, dans la vraie vie, les requêtes et les réponses peuvent se perdre au sein du réseau. Oui, oui... elles peuvent se perdre (serveurs saturés, routeurs engorgés, panne…) Le travail du réseau Internet c'est de faire "au mieux" (best effort) pour que toutes les données arrivent à destination. C’est le rôle du protocole dit IP (Internet Protocol). Il est très efficace et cherche à aller au plus vite, mais il ne peut garantir que tout se passe parfaitement.

Alors, comment s’assurer que le message est bien transmis d’une machine à l’autre ?

Eh bien c’est le rôle d’un autre protocole, le protocole TCP (Transmission Control Protocol) qui va garantir une transmission fiable des données en utilisant des mécanismes comme les accusés de réception (appelés aussi acquittement) ou les temporisateurs (minuteurs qui déclenchent une alarme pour ne pas attendre indéfiniment un accusé de réception). En bref : il renvoie les données si quelque chose d’anormal s’est produit. 

TCP va donc permettre à la machine destinataire, par exemple, de remettre les informations dans le bon ordre, ou bien à l’émetteur de ré-envoyer une donnée si elle semble perdue.

Bien entendu ce n’est pas le seul protocole, si pour une application peu importe l’ordre d’arrivée des données, ou les quelques pertes, alors elle peut utiliser le protocole UDP (User Datagram Protocol), protocole de datagramme utilisateur. C’est le cas par exemple pour un flux vidéo en temps réel, car on ne souhaite pas revenir en arrière.

Suivons nos paquets de données pas à pas

Pour la navigation web, HTTP va donc s’appuyer sur TCP. La page HTML va être découpée en un ou plusieurs segments TCP (selon la taille de la page) qui sont numérotés.

Cela revient à envoyer un document par la poste en plusieurs parties ; chaque partie est numérotée et ensuite mise dans une enveloppe. Grâce à cette numérotation, il sera plus facile de les remettre dans l’ordre à l’arrivée et/ou d’identifier les parties manquantes.

De la même façon, chaque segment est encapsulé dans un paquet où seront indiquées l’adresse du destinataire ainsi que l’adresse de l’émetteur (si l’on a besoin de lui retourner de l’information) :

Ce paquet va transiter sur le réseau et va être traité par le protocole Internet pour être acheminé jusqu’à la destination grâce aux tables de routage présentes dans les routeurs. Les paquets IP sont des paquets autonomes (ou datagramme) qui peuvent prendre des chemins différents, arriver dans le désordre et aussi se perdre. 

Donc, un paquet IP comprend un segment TCP qui contient tout ou partie d’une page html ou d’une autre ressource (images, vidéo…) À la réception des paquets, le processus inverse va être réalisé : les segments TCP sont extraits des paquets IP (les enveloppes sont ouvertes) ; les parties de la page HTML sont extraites des segments TCP et la page HTML est reconstituée pour être restituée à l’utilisateur via son navigateur.

Résumons: encapsulation et désencapsulation

Les fonctionnalités sont bien séparées et modularisées : HTTP s’occupe de l’échange de document hypertexte, TCP de la fiabilité de la transmission de bout en bout (entre l’émetteur et le récepteur) et IP de l’acheminement des paquets jusqu’à la destination. Ce principe d’abstraction s’appelle le découpage en couches.

Lors de l’émission d’une donnée, chaque couche ajoute au message des informations spécifiques, appelées aussi “en-tête” (par exemple type de la requête pour HTTP, adresses pour IP) avant de le transmettre à la couche inférieure. C’est le principe d’encapsulation.

Lors de la réception, chaque couche analyse l’en-tête spécifique correspondant à son protocole, fait le traitement approprié et envoie le contenu du message (sans l’en-tête) à la couche supérieure.
C’est le principe de désencapsulation.

Une autre façon de présenter les choses

Dans le modèle TCP/IP, on compte ainsi 5 couches (ou 4 couches si on regroupe les fonctionnalités liées à l’accès réseau en une seule couche : accès au réseau local et transmission des données sur le canal physique). La couche où réside le protocole IP est classiquement appelée couche Internet ou couche réseau. 

Référence : Manuel ISN, Chapitre 16, (le manuel complet est en accès libre en CC-BY-SA). 

Bon, c'était la partie la plus ardue du cours. Vous savez quoi ? On va recommencer mais … en jouant dans la salle de classe ou d'activité ! Chiche ? Allons-y.

En résumé

  • Un protocole spécifie un ensemble de messages qu’il est possible d’envoyer ou de recevoir, et des actions à exécuter selon le message reçu.

  • Les deux mécanismes de base pour garantir le bon transfert des paquets d'information sont de renvoyer un accusé de réception et de recommencer l'envoi si cet accusé n'arrive pas au bout d'un certain temps.

  • Pour fonctionner correctement, Internet est organisé en couches, chaque couche ayant un rôle précis et fonctionnant avec un protocole.

  • On peut même apprendre et comprendre ça en jouant.

Example of certificate of achievement
Example of certificate of achievement