Le modèle en couches

Les infrastructures réseaux se développant de plus en plus, un processus de normalisation a été mis en œuvre. Des modèles sont apparus dans lequel on a essayé de faire rentrer l'existant. On va présenter ici deux modèles, qui sont les plus courant : le modèle historique, que l'on appelle modèle internet ou modèle TCP/IP d'une part, et le modèle OSI.

Le contexte

Pour bien voir comment fonctionne le réseau internet, on va détailler sur un exemple les différentes étapes du processus qui se passent pour l'un des services particulier d'internet, parmi les plus courant : le web. Pour rappel, le web, c'est l'ensemble des pages internet qui sont reliées les unes aux autres, déposées sur des serveurs webs, et où l'on évolue en suivant des liens web, aussi appelés lien hypertexte.

Un utilisateur veut consulter un site web pour avoir une information. Il ouvre son navigateur, et tape dans la barre d'adresse l'adresse de ce site web. Par exemple, l'adresse de cette page : https://lycee.educinfo.org/index.php?activite=reseau&page=reseau_couches. Que se passe t'il ensuite ? Nous allons détailler le parcours de cette requête.

Le modèle Internet

Le modèle internet est découpé en quatre couches. Ces couches, pour des raisons historiques, ne sont pas parfaitement étanches. Les nécessités de l'implémentation on eu un impact sur l'écritures des protocoles.

La couche application

Sur internet, les applications sont multiples : il y a le web, bien entendu, mais aussi le mail, les applications de messagerie instantanée, SSH, FTP, etc. Chacune de ces applications utilise un protocole spécifique qui permet l'échange des données. C'est l'application qui est en charge de la gestion de ce protocole. Au niveau d'internet, le fait que les données qui circulent concerne un serveur web, ou de courrier, ou de la vidéo à la demande, n'a aucune importance. Les équipements du réseau ne sont pas concernés par cela.

Dans notre exemple, nous utilisons avec un navigateur web. Celui ci va décomposer l'adresse et en extraira les informations suivantes :

  • Le protocole utilisé est le http, ce qui signifie que l'on veut atteindre un serveur web avec la version non sécurisée du protocole
  • L'adresse du serveur que l'on veut utiliser est nsi.educinfo.org.
  • Sur ce serveur web, le chemin de la page demandé est index.php.
  • la requête est de type GET.
  • deux paramètres sont passés dans cette requête :
    • theme qui a pour valeur reseau.
    • page qui a pour valeur couches.

Ces informations et tout un tas d'autre informations (les versions de protocole HTTP supportées, un certain nombre de valeur de cookies, le système d'exploitation, le navigateur utilisé avec sa version, etc.) constituent les données de la requête HTTP. Ces données sont structurées d'une façon bien particulière qui est définie dans diverses RFC ( RFC 1945 pour la version 1.0, RFC 2616 pour la version 1.1, corrigée par les RFC 7230 à 7237)

Cette requête HTTP va constituer les données que nous allons envoyer sur le réseau. Le navigateur construit la requête et passe ensuite les données à la couche réseau de la machine.

La couche de transport (TCP ou UDP)

La couche de transport peut être, suivant les services la couche TCP ou la couche UDP. On parle aussi de mode connecté (TCP) et de mode déconnecté (UDP). Le rôle du protocole de transport est le suivant :

  • Il découpe les données en paquets dont la taille dépend de la couche de liaison de données sous-jacente.
  • TCP comme UDP ajoute aux données un en-tête. En particulier, on trouve un port source et un port de destination. Les ports sont utilisés par ce qu'une même machine peut héberger plusieurs services (le web, le web sécurisé, le mail, le FTP, un service SSH,etc.). Tout ces services sont sur la même adresse IP. Ce qui les distingue, c'est le numéro de port TCP. On peut, par analogie, considérer que si l'adresse IP correspond à l'adresse postale d'un immeuble de bureau, le numéro de port correspondrait au numéro du bureau concerné dans cet immeuble. Un service écoute sur un port donné et il existe des ports standard en réception (par exemple 80 pour http, 443 pour https, 25 pour smtp, 22 pour ssh). Le port de destination indique le service. Le port source est libre, et permet de distinguer différentes applications sur une machine, ou différents utilisateurs. Il permet aussi de gérer le NAT.
  • En plus de ces informations, TCP ajoute un ensemble de données qui permettent de vérifier l'intégrité des données et de rassembler les paquets dans le bon ordre à l'arrivée. UDP est beaucoup plus laxiste sur ce sujet. C'est un protocole destiné essentiellement à des transmissions de faible taille sur un réseau local.

Une fois ces opérations effectuées, la couche TCP (ou UDP) transfère le message à la couche IP

La couche IP

La couche IP elle même est chargée de la transmission des paquets fournis par TCP sur le réseau. Cette couche va rajouter des données au paquet, en particulier l'IP source et l'IP destination. Le protocole IP est chargé du routage. Il doit déterminer le chemin à prendre pour envoyer les paquets vers l'adresse de destination. Nous verrons cela en détail un peu plus tard.

Une fois l'en-tête ajouté au message TCP, le paquet de donné obtenu porte le nom de datagramme IP.

Lorsque la couche IP a déterminé sur quelle interface réseau elle doit envoyer les données, elle passe le datagramme à la couche suivante, la couche liaison.

La couche liaison

La couche liaison présente deux parties. Suivant le protocole, des données vont être ajoutées au datagramme IP. Dans le cadre d'un réseau ethernet par exemple, l'adresse MAC de la source et l'adresse MAC de la destination sont ajoutées, avec d'autres données.

Une fois que cet en-tête a été ajouté au datagramme IP, on parle de trame réseau.

Puis, au niveau matériel, la trame réseau est convertie en signal qui va être envoyés vers la destination. Notez bien que le médium utilisé peut être très varié. On notera en particulier la proposition humoristique, faite pour un poisson d'avril de faire de l'IP par ... pigeons voyageurs ! Cette proposition a d'ailleurs été mise en œuvre (en anglais) par un groupe d'utilisateur linux de Bergen en Norvège en 2001 !

En résumé

Lorsque vous utilisez une application réseau, les données pour pouvoir être dirigé vers le serveur distant vont passer à travers 4 étapes successives :

  • Le formatage des données au niveau applicatif avec l'ajout de données propres au protocole applicatif
  • Les données passent ensuite à la couche transport qui découpent les données en paquet et ajoutent un en-tête propre à la couche transport (TCP ou UDP)
  • Ce paquet est transmis à la couche réseau, la couche IP qui détermine le périphérique à utiliser et rajoute un en-tête spécifique, transformant le paquet en datagramme IP
  • Enfin, le datagramme IP est passé à la couche réseau qui ajoute les informations liées au matériel, transformant le datagramme IP en trame réseau. Ce sont les données de cette trame qui sont véhiculées par le signal physique (courant dans le cuivre, ondes radios en wifi ou 5G, lumière dans une fibre optique, voire papier sur un pigeon voyageur)
Envoi d'une requête HTTP

Et à l'arrivée ?

Que se passe t'il quand ces données atteignent le serveur ? Le processus s'effectue dans le sens inverse :

  • La couche liaison désencapsule la trame réseau et passe le datagramme à la couche IP
  • La couche IP désencapsule le datagramme et passe le paquet à la couche transport (TCP/UDP)
  • La couche transport ré-assemble les paquets et éventuellement (TCP), contrôle l'intégrité de la transmission
  • La couche applicative lit l'en-tête puis interpréte les données qui lui sont destinées.
Envoi et réception d'une requête HTTP

Dans le cas, de notre exemple, le serveur web apache va construire la page de réponse à la requête, puis il enverra par le réseau la page de réponse à la machine cliente qui a émis la requête.

Le modèle OSI

Le modèle précédent en 4 couches, appelé modèle internet ou modèle TCP-IP est un modèle historique. C'est plus un modèle qui représente une réalité qu'un modèle théorique. À contrario, le modèle OSI (Open System Interconnexion) est un modèle théorique qui a pour vocation de fabriquer une norme afin de certifier des technologie et des infrastructures.

Le modèle OSI est un modèle en 7 couches. Ces couches sont sensées être étanches. On peut essayer de regrouper les couches OSI pour les faire rentrer dans les couches du modèle internet.

La couche supérieur applicative du modèle internet est découpée en 3 couches :

  • La couche application est le point d'entrée aux services réseaux.
  • La couche présentation est en charge de la conversion et du chiffrement des données
  • la couche session est chargée de gérer les sessions

La partie liaison du modèle internet est décomposée en deux sous-parties :

  • La partie liaison chargée de l'adressage physique
  • Et la partie physique chargé de la transmission binaire numérique ou analogique.
N° OSI Couche OSI N° Internet Modèle internet
7 Application 4 Application
6 Présentation
5 Session
4 Transport 3 Transport
3 Réseau 3 Réseau
2 Liaison 1 Liaison
1 Physique
Correspondance entre les modèles OSI et Internet

S'il y a bien une correspondance grossière entre les protocoles de la pile IP et les couches du modèle, on ne peut pas considérer que la pile IP soit vraiment compatible avec le modèle OSI. En particulier, la séparation des couches dans la pile IP est nettement plus approximative.

Conclusion

À retenir
  • La communication sur un réseau peut être décomposé en couches
  • Le modèle historique contient 4 couches, le modèle OSI 7 couches
  • Les 4 couches du modèle internet sont :
    • Application
    • Transport
    • Réseau
    • Liaison
  • Lorsque l'on descend dans les couches, à l'émission, chaque couche encapsule les données en ajoutant un en-tête.
  • Lorsque l'on remonte les couches, à la réception, chaque couche extrait les données en supprimant l'en-tête.
Envoi et réception d'une requête HTTP