Le concept de base est celui de la commutation de paquets, une vieille idée de l’informatique, contrairement à l’approche par circuits virtuels plus utilisée en téléphonie.
Les données à transmettre d’une machine à une autre sont fragmentées à l’émission, en petit blocs de quelques centaines d’octets munis de l’adresse du destinataire, envoyées sur le réseau et ré-assemblées à la réception pour reproduire les données d’origine.
Ce concept facilite le partage des possibilités physiques du réseaux (bande passante) et est parfaitement adapté pour une implémentation sur machines séquentielles travaillant en temps partagé (plusieurs communications peuvent alors avoir lieux simultanément et sur une même machine).
Partant de ce concept, un modèle d’architecture pour les protocoles de communication a été développé par l’ISO (International Standards Organisation) entre 1977 et 1984.
Ce modèle sert souvent de référence pour décrire la structure et le fonctionnement des protocoles de communication, mais n’est pas une contrainte de spécification.
Ce modèle se nomme OSI comme Open Systems Interconnection Reference Model.
Les constituants de ce modèle sont si largement employés qu’il est difficile de parler de réseaux sans y faire référence.
Le modèle OSI est constitué de sept couches.
À chaque couche est associée une fonction bien précise, l’information traverse ces couches, chacune y apporte sa particularité.
Cette forme d’organisation n’est pas dûe au hasard, c’est celle sur laquelle les informaticiens ont beaucoup travaillé dans les années soixantes pour définir les caractéristiques des systèmes d’exploitation.
Une couche ne définit pas un protocole, elle délimite un service qui peut être réalisé par plusieurs protocoles de différentes origines.
Ainsi chaque couche peut contenir tous les protocoles que l’on veut, pourvu que ceux-ci fournissent le service demandé à ce niveau du modèle.
Un des intérêts majeurs du modèle en couches est de séparer la notion de communication, des problèmes liés à la technologie employée pour véhiculer les données.
Un service est une description abstraite de fonctionnalités à l’aide de primitives (commandes ou évènements) telles que demande de connexion ou réception de données.
Un protocole est un ensemble de messages et de règles d’échanges réalisant un service.
Une interface (point d’accès au service dans la norme) est le moyen concret d’utiliser le service.
Dans un programme, c’est typiquement un ensemble de fonctions de bibliothèque ou d’appels systèmes.
Dans une réalisation matérielle, c’est par exemple un jeu de registres a l’entrée d’un circuit.
Les détails d’un service varient bien sûr d’une architecture de réseau à l’autre.
La classification la plus grossière se fait selon que le service fonctionne en mode connecté ou non.
Malgré cette variabilité, les fonctions communes ont des noms conventionnellement constants.
Ces noms ne proviennent toutefois pas directement de ISO 7498-1.
connection.request est une demande de connexion sortante, i.e. à l’initiative d’une entité locale.
connection.indication correspond à l’évènement « une demande de connexion entrante a été reçue. »
connection.response est l’indication d’acceptation ou de rejet de la connexion.
connection.confirmation correspond à l’évènement « la réponse du demandé a été reçue. » C’est un acquittement.
data.request, data.indication et data.confirm sont le pendant pour les données.
Les données fournies à une primitive de service sont appelées (N)-SDU ou N est l’indication de la couche, son numéro dans la norme, parfois une lettre tirée du nom de la couche.
Les messages d’un protocole sont appelés PDU (Protocol Data Unit).
Ces couches sont parfois réparties en 2 groupes.
Les 4 couches inférieures sont plutôt orientées communication et sont typiquement fournies par un système d’exploitation.
Les 3 couches supérieures sont plutôt orientées application et plutôt réalisées par des bibliothèques ou un programme spécifique.
Dans le monde IP, ces 3 couches sont rarement distinguées.
Dans ce cas, toutes les fonctions de ces couches sont considérées comme partie intégrante du protocole applicatif.
Par ailleurs, les couches basses sont normalement transparentes pour les données à transporter, alors que les couches supérieures ne le sont pas nécessairement, notamment au niveau présentation.
Dans une telle architecture, une « entité » de niveau (N+1) envoie des données avec la primitive "data.request" de l’entité de niveau (N) en lui fournissant comme données un (N+1)-PDU qui sera typiquement, à son tour encapsulé dans un (N)-PDU.
Coté récepteur, chaque entité analyse l’enveloppe protocole correspondant à sa couche et transmet les données à la couche supérieure sous la forme d’une primitive "data.indication".
Certaines fonctions comme la détection des erreurs de transmission et leur correction, le contrôle de flux peuvent être présentes dans plusieurs couches.

couche 7 - couche application
La couche application (application layer) est constituée des programmes d’application ou services, qui se servent du réseau, c’est le point d’accès aux services réseaux.
Ils ne sont pas forcément accessibles à l’utilisateur car ils peuvent être réservés à un usage d’administration.
Elle n’a pas de service propre spécifique.
Gopher - SSH - NNTP - DNS - SNMP - XMPP - SMTP - POP3 - IMAP - IRC - VoIP - WebDAV - SIMPLE - HTTP
couche 6 - couche de présentation
La couche de présentation (presentation layer) met en forme les données suivant les standards locaux ou particuliers à l’application. Elle est chargée du codage des données applicatives, précisément de la conversion entre données manipulées au niveau applicatif et chaînes d’octets effectivement transmises.
Comme, par exemple passer d’une représentation "big endian" ou à une représentation "little endian" ou encore plus complexe comme celle décrite pas les "XdR" (eXternal Data Representation) et qui autorise la transmission de types abstraits de données (structures complexes, arbres, listes chainées, la liste n’est pas limitative...)
Actuellement, c’est de plus en plus le XML qui occupe cet espace assez peu normé.
Videotex - Unicode - MIME - HTML - XML - TDI - ASN.1 - XDR - UUCP - NCP - AFP - SSP
couche 5 - couche de session
La couche de session (session layer) effectue l’aiguillage entre les divers services qui communiquent simultanément à travers le même ordinateur connecté et le même réseau, elle gère la synchronisation des échanges et des "transactions" et permet l’ouverture ainsi que la fermeture de session.
Deux utilisateurs d’une même machine peuvent utiliser la même application sans risque d’inter-actions parasites.
RTSP - H.323 - SIP - AppleTalk
couche 4 - couche de transport
La couche de transport (transport layer) garantie que le destinataire obtient exactement l’information qui lui a été envoyée.
Elle gère les communications de bout en bout entre processus (programmes en cours d’exécution).
Cette couche met par exemple en œuvre des règles de renvoi de l’information en cas d’erreur de réception.
TCP - UDP - ICMP - SCTP - RTP - SPX - TCAP - DCCP
couche 3 - couche de réseau
La couche réseau (network layer) isole les couches hautes du modèle qui ne s’occupent que de l’utilisation du réseau, des couches basses qui ne s’occupent que de la transmission de l’information.
Elle gère les communications de bout en bout, généralement entre machines : routage et adressage des paquets.
NetBEUI - IPv4 - IPv6 - ARP - IPX - BGP - ICMP - OSPF - RIP - IGMP - IS-IS - CLNP - WDS - ATM
couche 2 - couche de liaison
La couche "liaison de données" (Data link layer) gère les communications entre 2 machines adjacentes, directement reliées entre elles par un support physique.
Elle effectue le travail de transmission des données d’une machine à une autre.
Ethernet - Anneau à jeton - LocalTalk - FDDI - X.21 - X.25 - Frame Relay - BitNet - CAN - Wi-Fi - PPP - HDLC
couche 1 - couche physique
La couche physique (physical layer) définit les caractéristiques du matériel nécessaire pour mettre en oeuvre le signal de transmission, comme des tensions, des fréquences, la description d’une prise...
Elle est chargée de la transmission effective des signaux entre les interlocuteurs.
Son service est typiquement limité à l’émission et la réception d’un bit ou d’un train de bit continu (notamment pour les supports synchrones).
CSMA/CD - CSMA/CA - Codage NRZ - Codage Manchester - Codage Miller - RS-232 - RS-449 - V.21-V.23 - V.42-V.90 - Câble coaxial - 10Base2 - 10BASE5 - Paire torsadée - 10BASE-T - 100BASE-TX - ISDN - PDH - SDH - T-carrier - EIA-422 - EIA-485 - SONET - ADSL - SDSL - VDSL - DSSS - FHSS - HomeRF - IrDA - USB - IEEE 1394 - Wireless USB, Bluetooth
Lorsque les services réseau et transport fonctionnent tous les deux en mode connecté, il n’y a pas toujours de distinction claire entre ces deux services.
Il y a toutefois deux cas ou cela est très simple :
Si le service réseau n’autorise qu’une seule connexion entre 2 machines : dans ce cas, les connexions de niveau transport sont nécessairement multiplexées sur une connexion de niveau réseau et la distinction est nette.
Les services des 2 couches relatifs à la correction des erreurs sont différents : Ces fonctions peuvent n’être présentes que dans une seule des 2 couches.
Du niveau 7 de l’application, au niveau 4 du transport, l’information circule dans ce que l’on appelle un message, au niveau 3 elle se nomme packet, puis frame au niveau 2 et signal au niveau 1.
Chaque couche ne voit et ne sait communiquer qu’avec la couche qui la précède et celle qui la suit, avec le cas particulier des couches 1 et 7.
L’intérêt de travailler en couches est que lorsque les modalités d’échanges entre chacune d’entres elles sont précisément décrites, on peut changer l’implémentation et les spécificités de la couche elle-même sans que cela affecte le reste de l’édifice.
C’est sur ce principe qu’est bâtie la suite de protocoles désignée par TCP/IP
Quand deux applications A et B discutent entre-elles via le réseau, les informations circulent de la couche 7 vers la couche 2 quand l’application A envoie de l’information sur le réseau, et de la couche 2 vers la couche 7 pour que l’application B reçoive l’information de A.
Le principe de base de cette discussion repose sur le fait que chaque couche du modèle de la machine A est en relation uniquement avec son homologue du même niveau de la machine B.
Quand l’information descend de la couche 7 vers la couche 1, chaque couche en-capsule les données reçues avant de les transmettre. _ Ainsi le volume d’informations s’est accrû de quelques centaines d’octets arrivé à la couche 1.
De manière symétrique, quand l’information remonte de la couche physique vers la couche Application, chaque couche prélève les octets qui lui sont propres, ainsi l’application B ne voit-elle que les octets envoyés par l’application A, sans le détail de l’acheminement.