Tentatives de bonnes réponses à des questions qui peuvent ne pas l'être |
La réponse à cette question pourrait tenir en quelques mots. Cela n'expliquerait pas pourquoi il y a des trames et pourquoi il y a des paquets. Il va donc falloir tenter de décrire le cadre dans lequel s'inscrivent ces notions.
Imaginons qu’on doive envoyer 100 kg de haricots verts en conserve. Il ne viendrait à l’idée de personne de les mettre dans un bocal géant même s’il en existait d’aussi grands. Il serait difficile de le manipuler et s’il cassait en cours de route tout serait perdu. On va plutôt mettre tous ces haricots dans des pots en contenant chacun 500g et conditionner les 200 pots dans 20 cartons de 10.
On pratique exactement de la même manière pour la transmission de données sur un réseau.
Au cours d’une transaction (envoie ou réception d’un message, chargement d’une page de la toile, transfert d’un fichier, etc.) la quantité de données à véhiculer est extrêmement variable et peut aller de quelques koctets à plusieurs Goctets. Pour éviter de tout perdre en cas d’incident et surtout pour faciliter l’écoulement sur le réseau (plusieurs petites voitures circulent mieux sur les routes qu’un convoi exceptionnel) on découpe l’ensemble à transmettre en fragments de taille réduite et uniforme (typiquement de l’ordre de 1,5 koctets).
Chacun de ces fragments dûment identifié et pourvu de l’adresse du destinataire est envoyé séparément sur le réseau, lequel gère son acheminement jusqu’à bon port. On parle, d’une manière générale, de transmission par paquets.
Voici donc mise en lumière la notion de paquet. Avant d’aborder celle de trame il faut s’intéresser à un tout autre aspect du fonctionnement des réseaux de transmission de données, la subdivision des tâches.
Pour cela nous allons recourir à une anecdote tirée du passé.
Le jeune Ludwig vient de composer un nouvel air de musique pour sa copine Élise. Il plie ensemble les deux feuillets de la partition, écrit dessus Lettre à Élise et appelle son secrétaire : "Fais porter ça le plus vite possible". Le secrétaire glisse les feuillets dans une enveloppe, écrit dessus l'adresse d'Élise et appelle un porteur à qui il remet le pli.
Le porteur se rend à l'adresse indiquée, sonne et remet l'enveloppe à la personne qui est venu lui ouvrir. Celle-ci, la femme de chambre d'Élise, la décachette, constate que c'est pour sa patronne et lui en remet le contenu. Élise découvre la partition et se met immédiatement à son piano pour la déchiffrer.
Tentons d'analyser ces événements avec le regard froid du technicien.
Ludwig a transmis la partition d'un air de musique à Élise. Bien qu'il ait eu recours aux services de tierces personnes le résultat est le même que si lui-même lui avait remis cetta partition en main propre.
Le secrétaire et la femme de chambre ont vu que les feuillets étaient destinés à Élise. Ils sont passés entre leurs mains sans que l'un comme l'autre ait eu à s'occuper de leur contenu. Il aurait tout aussi bien pu s'agir d'une recette de cuisine ou d'un billet doux. L'intervention du coursier n'a aucune incidence sur le résultat. Il se serait passé exactement la même chose si le secrétaire de Ludwig avait remis lui-même l'enveloppe à la femme de chambre d'Élise
Le coursier a transporté l'enveloppe à la bonne adresse sans se préoccuper de savoir ce qu'elle contenait. Elle aurait pu être vide ou renfermer n'importe quel objet pouvant y être glissé.
À partir de ces constatations on peut dessiner un schéma qui représente les liens entre les acteurs de cette anecdote.
Mais quel rapport a cette histoire avec ce qui se passe quand deux ordinateurs communiquent entre eux ? Eh bien il se passe exactement la même chose.
Prenons par exemple le cas où une page de la toile a été demandée et voyons comment elle arrive dans notre navigateur. Nous pouvons représenter cette transaction par le schéma suivant.
Nous constatons que les deux schémas se ressemblent. Tout comme dans le cas de Ludwig et d'Élise, quand deux ordinateurs communiquent entre eux :
- chaque acteur communique avec son homologue distant comme s'il n'y avait pas d'intermédiaire ;
- les intervenant intermédiaires ne se préoccupent pas du contenu de l'objet qu'ils ont à transmettre.
Le logiciel réseau a envoyé des données (le contenu de la page accompagné de quelques données de service) mais sans savoir qu'il s'agissait d'une page de la toile. Le réseau ADSL a acheminé des suites de bits sans chercher à savoir à quoi ils pouvaient correspondre.
On dit que l'on a affaire à une architecture en couches.
Pour que tous les ordinateurs puissent communiquer entre eux, quels qu'en soit la marque et le modèle, il a fallu définir avec précision les tâches affectées à chacune des couches et la manière dont elles allaient dialoguer.
L'ISO (Organisation internationale de normalisation) a d'abord publié en 1978 puis complété à plusieurs reprises le modèle OSI (open systems intercommunication). L'ensemble des tâches qui doivent être effectuées pour assurer la communication entre ordinateurs y a été réparti en 7 couches (voir fig. 3). Les normalisateurs se sont ensuite attachés à définir pour chacune d'elles un langage de communication appelé protocole. Chaque protocole détaille comment deux homologues dialoguent mais aussi comment chacun communique avec les couches adjacentes.
Il n'entre pas dans ce propos de détailler les spécifications du modèle OSI. Il existe de nombreux sites sur la toile qui le font dont celui-ci. Nous nous contenterons d'en rappeler les grands principes. Chaque couche :
- échange des données avec son homologue selon un protocole convenu sans se préoccuper de la manière dont elles partent et arrivent ;
- confie ces données à la couche adjacente par l'intermédiaire de demandes de service elles aussi normalisées ;
- exécute le service demandé sans avoir à connaître de la nature des données à prendre en charge.
Le schéma ci-dessous représente le fonctionnement.
Dans les réseaux qui nous sont familiers (internet ou réseaux locaux domestiques) la répartition des fonctions ne suit pas exactement les prescriptions du modèle OSI apparu postérieurement. Toutefois on peut adopter une représentation similaire comme sur le schéma ci-dessous (fig. 5).
Si l'on s'intéresse au cas plus particulier d'un réseau local, la couche liaison de données devient la couche MAC (medium access control). En laissant de côté la couche application on obtient le schéma suivant (fig. 6).
Cette fois-ci nous avons fait figurer le nom donné à chaque type de message et les protocoles (les conventions régissant le dialogue) qui sont utilisés.
Au début de ce chapitre nous avions entrevu la notion de paquet avec un sens très général. Nous la voyons réapparaître ici avec un sens plus prècis en même temps que celle de trame.
Les rôles principaux de la couche transport sont :
- établissement
d'une connexion à la demande entre les applications puis sa fermeture à l'issue de la tansaction ;
- le découpage du message que souhaite envoyer l'application en fragments, les segments, afin de fluidifier la transmission ;
- la vérification que tous ces segments ont bien été reçus et leur ré-émission en cas de perte.
Pour assurer ces missions chaque segment va contenir en plus du fragment de message à transmettre, des données de service regroupées dans un en-tête.
Nous avons mentionné le protocole TCP (transmission control protocol) mais d'autres sont également utilisés pour des besoins spécifiques, comme le protocole UDP (User Datagram Protocol)
La couche réseau va acheminer ces segments sur le réseau en ajoutant elle aussi à chacun son propre en-tête. C'est dans cet en-tête que vont figurer, entre autres, l'adresse IP de l'émetteur et celle du destinataire. Le tout forme un paquet IP.
Rappelons le encore une fois, la couche réseau ne se préoccupe pas de ce que contient le paquet. Elle se contente de le faire arriver à la bonne adresse.
Les paquets IP sont envoyés sans établissement préalable d'une connexion comme cela peut être le cas avec d'autres protocoles. La couche IP destinataire ignore qui va lui envoyer des paquets et quand. Elle ne peut donc pas donner l'alerte en cas de perte. On se repose uniquement sur la couche transport pour vérifier que tout est là. Par analogie avec le télégraphe, les télégrammes sont envoyés sans avertissement préalable, on dit qu'un paquet IP est un datagramme.
Bien qu'il soit peu utilisé dans d'autres cas le mot datagramme n'est pas réservé aux paquets IP ni à la couche réseau. Il désigne n'importe quelle unité de transmission qui contient toutes les informations nécessaires à son acheminement. Les segments UDP sont aussi des datagrammes.
À ce niveau également d'autres protocoles peuvent être utilisés. Par exemple l'attribution automatique d'une adresse IP à une station par un serveur DHCP (Dynamic Host Configuration Protocol) met en œuvre le protocole ARP.
La couche réseau ne sait pas comment les stations sont reliées entre elles. Le moyen de transport, le médium, est du ressort de la couche MAC (medium access control). Tout comme la couche IP elle va à son tour ajouter son propre en-tête, le tout constituant une trame.
Pour la couche MAC, une trame n'est, en dehors de l'en-tête, qu'une suite de bits sans signification. Dans le cas d'un réseau TCP/IP la trame véhicule bien sûr un paquet IP mais sur un réseau local ethernet on peut transporter bien d'autres types de contenus. Une trame est comme un wagon. Celui-ci est adapté au type de voie sur lequel il roule mais peu importe qui monte à bord.
Parmi les données contenues dans l'entête de trame on trouve l'adresse de l'adaptateur réseau émetteur (carte ethernet ou adaptateur Wifi) et bien sûr celle de l'adaptateur destinataire. Il s'agit des adresses physiques appelées aussi adresses MAC. Chaque adaptateur fabriqué a sa propre adresse MAC en sortie d'usine. Les règles d'attribution des plages d'adresses garantissent en principe son unicité.
Comme le suggère le nom de cette couche, le protocole utilisé va dépendre du médium : ethernet pour une liaison à l'aide d'un câble réseau, Wifi pour une liaison par la voie des ondes radio. Il en existe d'autres mais qui ne s'adressent pas aux utilisateurs de petits réseaux domestiques.
Il n’a rien été dit de la couche application ni de la couche physique, ces quelques lignes n’ayant d’autre objet que de donner un aperçu de la manière dont fonctionnent les échanges de données via un réseau. Cette vision d’ensemble, même sommaire, est indispensable pour replacer les notions de trame et de paquet dans leur contexte et leur donner du sens.
S’il fallait résumer en quelque mots la manière dont s’effectue la communication entre machines il suffirait de dire que :
- l'application qui veut envoyer des données d’un ordinateur vers un autre fait appel aux services de la couche transport ;
- la couche transport (TCP) découpe les données en segments de taille uniforme et les numérote avant de les confier à la couche réseau ;
- la couche réseau (IP) emballe chaque segment dans un paquet étiqueté avec l'adresses réseau du destinataire (adresse IP) et le remet à la couche réseau local ;
- chaque paquet est mis dans un container appelé trame, sur lequel est indiqué vers quel matériel (adresse MAC) il doit être acheminé ;
- à la réception ces opérations sont effectuées dans l'ordre inverse et l'application distante récupère les données qui lui sont destinées.
Si l'échange s'effectue via internet d'autres couches et donc d'autres protocoles interviennent mais le principe reste le même.