Les modèles réseaux OSI et TCP/IP expliqués

Un protocole est un ensemble de règles qui définissent comment différents systèmes communiquent entre eux.

Dans le cas de réseaux, les protocoles définissent comment les données sont transférées d’un système à un autre.

Il est possible théoriquement d’utiliser un unique protocole qui prend les données d’une application informatique et les envoie à une application sur un autre ordinateur. Le problème avec cette approche est qu’elle est très rigide, car tout changement nécessite de modifier l’ensemble du protocole.

Pour ajouter de la souplesse et de l’efficacité, des modèles en couches (« stacks » ou « layers ») ont été définis. Chaque protocole va appartenir à une couche précise et chaque couche va avoir une fonction différente des autres. Le grand intérêt des modèles en couches réside dans la séparation des fonctions : on va pouvoir modifier des protocoles ou utiliser un protocole d’une couche plutôt qu’un autre sans affecter les autres.

Aujourd’hui, dans le monde réseau, il existe deux modèles largement dominants : le modèle OSI qui définit 7 couches et le modèle TCP/IP (« modèle Internet ») qui définit 4 couches.

Le modèle OSI est un modèle de réseau idéalisé (modèle conceptuel), tandis que le modèle TCP/IP est une implémentation pratique.

 

Le modèle théorique OSI et ses 7 couches

Le modèle OSI (Open Systems Interconnection ou Interconnexion de Systèmes Ouverts en Français) est un modèle conceptuel (théorique) dont le but est de définir des normes de communication entre différents systèmes informatiques. Il est normé en 1984.

Ce modèle propose un système de communication composé de 7 couches différentes. L’idée derrière cette représentation est une nouvelle fois de décomposer la communication entre deux périphériques en différentes « étapes » bien définies afin qu’on puisse par la suite faire évoluer les composants de chacune des couches de manière indépendante plutôt que de devoir modifier l’intégralité du processus de communication dès le changement d’un composant.

Le modèle OSI ne donne qu’une définition générale de chaque couche (on parle de couche d’abstraction) sans spécifier les services ni les protocoles utilisés par chacune d’entre elles. C’est aux concepteurs des protocoles de les créer de façon à ce qu’ils respectent les règles et limites d’une couche en particulier.

Les 7 couches définies par le modèle OSI sont les suivantes :

N° de la coucheNom de la coucheUnité de données
7ApplicationDonnées non transformées
6PrésentationDonnées non transformées
5SessionDonnées non transformées
4TransportSegments
3RéseauPaquets
2Liaison des donnéesFrames
1PhysiqueBits

La couche application

La couche application est la couche la plus proche de l’utilisateur. La majorité des protocoles utilisés par les utilisateurs se situent dans cette couche (HTTP, SMTP, FTP, etc.).

Cette couche interagit avec les applications logicielles qui implémentent des composants de communication. La couche application est le point d’accès aux services réseaux.

La couche application a généralement pour fonction d’identifier les interlocuteurs, de déterminer si les ressources sont disponibles et de synchroniser les communications.

La couche d’application en elle-même n’a aucun moyen de déterminer la disponibilité des ressources sur le réseau.

Notez que la couche application est la couche où il y a la plus grande diversité de protocoles. En effet, il n’y a pas beaucoup de méthodes fondamentalement différentes permettant d’assurer les fonctions des couches 2 à 6 et leur éventail de protocoles est donc assez

Pour la couche application, en revanche, on peut notamment utiliser les protocoles suivants (en se limitant au monde IP) :

  • Les protocoles FTP (IETF), NFS (Sun Microsystems) et AFS, SMB/CIFS (Microsoft) pour le transfert de fichiers ;
  • Les protocoles Simple Mail Transfer Protocol (SMTP), Post Office Protocol (POP), Internet Message Access Protocol (IMAP) pour les services de messagerie ;
  • Les protocoles Telnet, rlogin, Secure Shell (SSH) pour les sessions distantes ;
  • Le protocole HTTP pour le transfert de ressources hypermédia comme les documents HTML ;
  • Des protocoles d’exploitation et de gestion comme Domain Name System (DNS) pour la résolution d’adresse, Simple Network Management Protocol pour la supervision.

La couche présentation

La couche présentation est chargée du formatage des données de la couche applicative afin qu’elles puissent être envoyées à travers le réseau puis être lues à nouveau par les applications.

La couche session

La couche session contrôle les connexions entre les ordinateurs. Cette couche permet l’ouverture et la fermeture de session et gère la synchronisation des échanges ainsi que les transactions.

La couche transport

La couche transport fournit les moyens concrets pour transférer des données de taille variable d’une source vers une destination en conservant la qualité du service.

L’enjeu de la couche de transport est de réceptionner les données qui viennent des couches supérieures, de les découper et de la faire transiter jusqu’à la couche réseau.

Cette couche est la première à communiquer directement avec la machine de destination : elle gère les communications de bout en bout (“end to end”) entre processus (programmes en cours d’exécution).

La couche réseau

La couche réseau fournit les moyens concrets pour transférer des données de taille variable (appelés “paquets”) entre différents réseaux de nœuds.

On va notamment effectuer le routage et l’adressage des paquets dans cette couche, c’est-à-dire qu’on va définir la route que vont emprunter les paquets pour aller d’un point de départ à un point d’arrivée (d’un interlocuteur à l’autre).

La couche liaison des données

La couche liaison des données gère les communications entre deux machines directement connectées entre elles.

On va dans cette couche découper des données brutes en frames de tailles variables puis les envoyer de manière séquentielle.

On va également dans cette couche détecter et pouvoir corriger les erreurs pouvant survenir dans la couche physique, définir le protocole pour établir et mettre fin à une connexion entre deux périphériques connectés physiquement et définir le protocole de contrôle de flux (régulation du trafic) entre eux.

La couche physique

La couche physique est chargée de la transmission des signaux entre les interlocuteurs. Son service est limité à l’émission et la réception d’un bit ou d’un train de bits continu.

La couche physique est, comme son nom l’indique, la couche dans laquelle sont définis les protocoles du monde physique (les différents câbles de transmission).

 

Le modèle pratique TCP/IP et ses 4 couches

Le modèle TCP/IP (encore appelé « modèle Internet »), qui date de 1976, a été stabilisé bien avant la publication du modèle OSI en 1984.

Pour information, TCP/IP est un modèle dérivé de l’ARPANET dont le but était de maintenir les communications coûte que coûte en cas d’attaque nucléaire. Il en découle un réseau basé sur le routage de paquets à travers une couche appelée Internet.

Le modèle TCP/IP est une approche réaliste ou pratique d’un modèle réseau là où le modèle OSI est un modèle idéalisé ou théorique. En conséquence, c’est le modèle TCP/IP qui est utilisé comme modèle de réseau de référence pour Internet.

Le modèle TFP/IP tient son nom de ses deux protocoles « majeurs » : les protocoles TCP (Transmission Control Protocol) et IP (Internet Protocol).

Il présente aussi une approche modulaire (utilisation de couches) mais en contient uniquement quatre :

  • La couche application ;
  • La couche transport ;
  • Internet ;
  • Accès réseau.
N° de la coucheOSITCP/IPUnité de données
7ApplicationApplicationDonnées non transformées
6Présentation
5Session
4TransportTransportSegments
3RéseauInternetPaquets
2Liaison des donnéesAccès réseauFrames
1PhysiqueBits

La couche application

Le modèle TCP/IP regroupe les trois couches de session, présentation et application du modèle OSI dans une seule couche application. En effet, d’un point de vue pratique, cela ne fait souvent pas beaucoup de sens de séparer ces couches.

Cette couche contient tous les protocoles de haut niveau : FTP pour le transfert de fichiers, SMTP pour les mails, HTTP pour le WWW, DNS pour les noms de domaine.

La couche transport

La couche transport assure la communication logique entre processus. Cette couche détermine comment les données doivent être envoyées : de manière fiable ou pas.

Concrètement, on va pouvoir choisir entre deux protocoles dans la couche transport : TCP (Transmission Control Protocol) et UDP (User Datagram Protocol).

TCP est un protocole de transfert fiable orienté connexion. Ce protocole contrôle et s’assure qu’il n’y ait ni perte ni corruption de données. Il est donc en charge des erreurs. TCP est le protocole le plus utilisé sur le Web aujourd’hui.

UDP est un protocole de transfert non fiable et qui ne nécessite pas de connexion préalable. Ce protocole est particulièrement utilisé pour les échanges où la perte de quelques données n’est pas grave (appel vidéo, jeu en ligne, etc.) car il est plus rapide que TCP.

La couche Internet

Le but principal de la couche Internet est d’assurer la communication logique entre hôte, c’est-à-dire de transmettre coûte que coûte les paquets d’un hôte à un autre et de faire en sorte qu’ils arrivent à destination. Le protocole principal de cette couche est IP (Internet Protocol ou Protocole Internet). Les paquets peuvent prendre différentes routes pour arriver à destination et arriver dans un ordre différent de l’ordre dans lequel ils ont été envoyés.

Dans son fonctionnement, la couche Internet n’est pas responsable d’une transmission fiable. Elle ne fournit qu’un service peu fiable et une livraison optimale (via le routage et l’adressage). Étant donné que la livraison de paquets entre divers réseaux est une opération intrinsèquement peu fiable et sujette aux pannes, la charge de la fiabilité a été placée avec les points d’extrémité d’un chemin de communication, c’est-à-dire les hôtes, plutôt que sur le réseau.

Ce sera aux protocoles de plus haut niveau d’assurer la fiabilité du service.

La couche accès réseau

La couche accès réseau du modèle TCP/IP regroupe les couches physique et de liaison des données du modèle OSI. Cette couche définit comment envoyer des paquets IP à travers le réseau (via des protocoles comme Ethernet ou Wireless entre autres)

 

Comment se passe un échange de données en pratique ?

Pour bien comprendre l’ensemble des notions décrites ci-dessus, il me semble essentiel de visualiser comment se passe un échange de données de manière pratique. Pour cela, prenons l’exemple d’un utilisateur qui souhaite accéder à une page web.

Pour cela, les premiers protocoles utilisés vont être HTTP ou HTTPS (HTTP + le protocole de chiffrement TLS). HTTP va nous permettre d’envoyer une demande (requête) au serveur. En l’occurrence, la requête sera « renvoie moi le document HTML demandé ».

A ce niveau, d’autres protocoles vont être utilisés comme DNS (pour trouver le serveur où se situe le document), etc. Le protocole HTTP permet de créer une requête HTTP. Cette requête (ces données) vont devoir être transportées à travers les réseaux.

Pour cela, on va déjà devoir utiliser un protocole de transport comme TCP par exemple. Celui-ci va garantir l’intégrité des données et la transmission entre processus. A ce niveau, dans la couche de transport, les données venant de différents processus sont transformées en segments.

Chaque segment contient la donnée originale à laquelle est accolée un en-tête de transport. Cet en-tête contient les numéros de ports de la source et de la destination afin que les données puissent être transmises de manière effective.

Ces segments sont ensuite transmis aux protocoles de la couche Internet. Le rôle de cette couche est de choisir la route la plus rapide à travers le réseau pour que les données arrivent à destination. Les segments sont alors transformés en paquets. Cette couche se charge également de l’adressage des données en ajoutant un en-tête aux paquets qui contient l’adresse IP de destination et celle de départ.

Les paquets sont ensuite à nouveau transformés en frames dans la couche d’accès réseau. A ce niveau, on ajoute un en-tête contenant les adresses MAC (Media Access Control – adresses qui permettent d’identifier tout périphérique de manière unique) source et de destination.

Dans cette même couche, les informations sont finalement transformées en bits (0 et 1 qui correspondent au langage de la machine) et ces bits sont envoyés dans le réseau (les 0 et les 1 sont encodées dans les câbles en utilisant des transmissions électriques ou des impulsions lumineuses dans le cas de la fibre).

Dès que ces bits arrivent à destination, les opérations se déroulent dans le sens inverse : les bits sont reformés en frames, puis en paquets, en segments et enfin les données de base sont reconstituées.

Dans le cas d’une demande de page Internet, le serveur reçoit donc la requête originale et renvoie une réponse. Les mêmes opérations sont à nouveau effectuées avec transformation des données pour qu’elles puissent transiter puis reconstitution du côté du client.

Vous pouvez noter qu’on appelle la phase de transformation de l’information en bits l’encapsulation tandis que la phase inverse de reconstitution des données s’appelle la décapsulation.