Il s'agit d'un modèle en 7 couches dont le principe fondamental est de définir ce que chaque couche doit faire mais pas comment elle doit le faire.
Les protocoles et les normalisations IEEE sont là pour définir comment les services sont fournis entre les couches.
Il a fallu quelques années entre la proposition initiale de l'ISO (1978) et la publication du standard IS7498:84 (1984). C'est ce standard, largement adopté par les constructeurs les plus importants et d'autres organismes de normalisation comme l'ITU, qui a contribué à la popularité de ce «modèle d'interconnexion des systèmes ouverts». Un temps d'élaboration aussi long donne la mesure de la tâche accomplie pour fédérer les standards existants et obtenir un consensus entre des partenaires aux conceptions très éloignées sur l'organisation des réseaux.
Les spécifications des services des couches dédiées à la transmission de l'information, aussi appelées couches basses, sont si «chargées» qu'il a fallu les subdiviser en sous-couches respectant les modes de fonctionnement avec et sans connexion. Le consensus obtenu si difficilement est encore en vigueur aujourd'hui ; tous les constructeurs d'équipements le respectent.
Alors que pour les couches liées à la transmission de l'information les standards existants on pesé très lourd dans l'élaboration du modèle, la voie était quasiment libre pour les couches dédiées au traitement de l'information dans les années 80.
La tâche était à priori plus facile sachant qu'il n'y avait pas «d'ordre établi» sur les applications de traitement. Ce sont pourtant ces couches hautes qui ont provoqué le déclin de la modélisation OSI.
Les spécifications qui ont été produites pour les couches transport, session et application étaient si complexes que seules de rares applications mastodontes ont pu être développées. Ces services réseau, tels que les annuaires de services X500 normalisés par l'ISO et l'ITU n'ont pu être popularisés qu'après avoir été simplifiés et allégés. Aujourd'hui, on ne parle plus que des annuaires LDAP (Lightweight Directory Access Protocol).
Cette expérience a montré que l'on ne peut pas produire des spécifications trop «distantes» de l'état de la technologie et des infrastructures existantes. L'ISO a renoncé à promouvoir le modèle OSI en Décembre 1994 après avoir publié le standard ISO/IEC 7498-1:1994. A cette époque, l'Internet universitaire était déjà une réalité et les investissements industriels sur TCP/IP étaient bien engagés.
Le plus curieux, c'est que tous les organismes ne semblent pas avoir retenu la leçon. Le Forum ATM (Asynchronous Transfer Mode : technologie réseau répandue dans les grandes dorsales des opérateurs d'interconnexion) à produit deux spécifications contradictoires à un an d'intervalle vers le milieu des années 1990. La technologie ATM est aujourd'hui obsolète et remplacée par des dorsales Ethernet.
Usuellement, on distingue les Couches Hautes (de Transport jusqu'à Application) qui ont une fonction de traitement des données indépendante de la technique de connexion entre 2 systèmes des couches basses (de Physique jusqu'à Réseau) qui ont une fonction de transmission de l'information liée à la technologie de communication.
Elle s'occupe de la transmission «brute» des flots de bits sur un circuit de communication sans connaître ni la structure, ni la signification de ces bits. À ce niveau, on s'intéresse à l'amplitude du signal, à la durée d'un bit, à la possibilité de transmettre simultanément dans les deux sens, à l'établissement et la libération du canal de connexion.
Elle transforme les flots de bits en lignes de données sans erreur. Pour cela, elle fractionne les données d'entrée de l'émetteur en trames de données. C'est donc à elle de reconnaître les frontières des trames. Cette fonction entraîne la résolution des problèmes de trames endommagées, perdues ou dupliquées. On retrouve ici la fonction de contrôle d'erreur.
C'est aussi à ce niveau que l'on peut trouver des mécanismes de régulation pour éviter la saturation du canal de communication par un émetteur unique. C'est la fonction de contrôle de flux. Une technique très simple, employée dans les réseaux Ethernet, interdit les émissions continues à tous les hôtes du réseau. Une émission ne peut avoir lieu que si tous les hôtes ont eu le temps matériel de détecter que le média partagé est libre.
Si le service le requiert, le récepteur confirme la réception de chaque trame en émettant une trame d'acquittement.
Les réseaux à diffusion utilisent un service ou une sous-couche spécifique pour contrôler que l'accès au média est libre. Dans le cas des réseaux sans-fil de types IEEE 802.11 ou Wifi, des trames de gestion indépendantes des informations utilisateur sont échangées entre les équipements pour contrôler l'accès aux canaux hertziens.
Elle gère le sous-réseau (les couches basses), c'est-à-dire la façon dont les paquets sont acheminés de l'émetteur au récepteur. Elle contrôle la route empruntée par les paquets.
Les stratégies utilisées pour le routage sont très variables. On peut trouver des tables statiques dans les réseaux qui évoluent rarement. Cependant, on utilise généralement des protocoles de routage plus ou moins sophistiqués, dédiés à l'échange d'informations entre les équipements d'interconnexion fournissant un service de niveau réseau.
En plus des itinéraires disponibles, les choix de route se font en fonction du nombre d'équipements d'interconnexion à traverser, du débit disponible, de la charge d'un lien ou encore du temps de transit entre deux extrémités.
Cette couche doit aussi résoudre les problèmes d'interconnexion entre réseaux hétérogènes. Si un paquet doit transiter entre deux réseaux utilisant des technologies différentes, la couche réseau doit gérer :
-
le changement de formats d'adresses,
-
le redimensionnement des paquets,
-
la mise en conformité entre protocoles différents,
-
la comptabilisation du coût d'acheminement de l'information.
C'est encore à la couche réseau de contrôler la congestion d'un réseau en notifiant les hôtes voisins à l'aide d'informations spécifiques.
Sa fonction de base est de traiter les données de la couche session et de les découper au besoin en petites unités. Ces petites unités sont ensuite transmises à la couche réseau tout en s'assurant qu'elles sont parvenues à destination si on utilise un protocole orienté connexion.
Une connexion de transport est un canal point à point délivrant des messages sans erreur dans l'ordre d'émission toujours dans le cas d'un protocole orienté connexion. Avec la couche transport on aborde les couches de «bout en bout» (couches hautes), c'est-à-dire que le même protocole s'exécute sur l'émetteur et le destinataire en utilisant les messages d'en-tête et de contrôle. Cette couche doit gérer l'initialisation et la fin des connexions sur le réseau ; ce qui nécessite un mécanisme d'adressage permettant d'identifier le ou les destinataires. Les numéros de ports constituent le mécanisme d'adressage de la couche transport.
La couche transport est parfois considérée comme faisant partie des couches basses parce qu'elle doit préserver la couche session des changements de technologies entre réseaux.
-
La prise réseau ou socket est le canal de communication entre une application et la couche transport. Une même application peut utiliser plusieurs prises réseau. Le navigateur Chrome est un excellent exemple. Ce programme utilise un grand nombre de sockets lors de l'ouverture d'une seule page web.
-
En réception, la couche transport reçoit une séquence de segments ou datagrammes de la couche réseau. Les segments ou datagrammes peuvent être destinés à différentes prises réseau alors que les adresses IP source et destination des paquets de la couche réseau sont identiques.
-
L'opération qui permet de délivrer les segments ou datagrammes aux bonnes prises réseau est appelée démultiplexage.
-
L'opération qui permet d'assembler les segments ou datagrammes pour les passer à la couche réseau est appelée multiplexage.
-
Les opérations de multiplexage et de démultiplexage sont nécessaires lorsque le canal de communication de bout en bout est partagé entre deux hôtes.
Les deux protocoles disponibles au niveau de la couche transport sont TCP (orienté connexion) et UDP (non orienté connexion). Ils sont présentés dans la Section 4.4, « Couche Host-to-Host : les protocoles TCP & UDP ».
Elle permet à des utilisateurs, opérant sur différentes machines, d'établir des sessions entre eux. Une session a pour but le transport des données. Par rapport à la couche transport, elle offre des services supplémentaires tels que :
-
La gestion du dialogue ou du jeton : certains protocoles utilisent des jetons (autorisation d'émission) que les machines d'un réseau peuvent s'échanger.
-
La synchronisation : cette technique consiste à insérer des éléments tests dans le flot de données de manière à ne pas devoir reprendre la totalité d'une opération en cas d'échec.
C'est à travers la couche session qu'un utilisateur peut accéder à un système à temps partagé distant ou transférer des fichiers.
Elle traite la syntaxe de l'information transmise. Elle assure l'encodage et/ou la compression des données dans une norme agréée.
Elle assure des conversions telles que celles des protocoles d'utilisation de terminaux incompatibles entre eux, celles entre les différents systèmes de fichiers ou encore celles des formats du courrier électronique.
Cette couche assure l'interface entre l'utilisateur et les services du réseau. On y trouve toutes les applications cliente ou serveur connues : transfert de fichiers, courrier électronique, Web, multimédia, etc.
On distingue deux grands types de services au niveau application.
- Pair à pair
-
Avec ce mode de communication, les données sont directement échangées entre tous des hôtes (souvent appelés nœuds) qui exécutent un même programme.
On peut imaginer un réseau de capteurs qui échangent leurs mesures directement entre eux en permanence. Ainsi, le superviseur ne doit interroger qu'un seul capteur pour connaître l'ensemble des mesures connues.
- Client-serveur
-
Dans ce contexte, les données sont détenues par un seul hôte : le serveur. Les clients doivent interroger le serveur pour obtenir ces données. Les programmes exécutés sont différents entre le serveur et ses clients. Le World Wide Web est l'exemple le plus emblématique de service client-serveur.