Les réseaux informatiques/Les protocoles de couche 1 et 2 (physique et liaison)
Dans ce chapitre, nous allons détailler les protocoles des couches liaison et physique qui sont les plus couramment utilisés. Nous allons notamment parler du célébrissime protocole Ethernet.
Un exemple de protocole : Ethernet
[modifier | modifier le wikicode]Le standard courant de transmission des données sur un réseau local est l'Ethernet. Sa première version date des années 1970 (1973-1976), son inventeur étant la fameuse entreprise Xerox. Elle standardisait la communication sur un bus, aujourd'hui émulé par des concentrateurs (hubs). C'est en 1982 que la seconde version d'Ethernet vit le jour. La troisième version, standardisée par l'IEEE, porte le nom de protocole 802.3. Ce protocole est depuis devenu le protocole le plus populaire pour les réseaux locaux. Techniquement, Ethernet est à la fois un protocole de couche 1 et de couche 2. Sa spécification standardise l'encodage des bits sur un câble Ethernet, par exemple. Cependant, nous allons nous concentrer sur ses fonctionnalités de couche 2 dans ce qui va suivre.
L'arbitrage du bus : le CSMA-CD
[modifier | modifier le wikicode]Comme tous les autres bus, le bus Ethernet doit contenir des mécanismes d'arbitrage pour résoudre la situation. Le protocole Ethernet utilise une méthode d'arbitrage spéciale : le CSMA-CD. De base, les machines attendent que le bus soit libre (personne n'émet) pour émettre une trame. Mais il arrive que deux machines voient que le bus est libre simultanément et démarrent une transmission chacune de leur côté. Il est ainsi parfaitement possible que deux machines émettent sur le bus en même temps et une collision a lieu.
Avec ce protocole, la détection de collision est relativement simple. Quand une machine envoie un 1 sur le bus, elle s'attend à ce que le bus contienne une tension positive, correspondant à un 1. Même chose pour un 0, qui doit donner une tension nulle. Si deux machines émettent sur le bus, les 1 l'emportent sur les 0 : si une machine émet un 1 et une autre un 0, on observera un 1 sur le bus. Pour détecter une collision, chaque machine compare ce qu'elle envoie sur le bus et ce qu'il y a sur le bus. Si elle observe un 1 sur le bus alors qu'elle a envoyé un 0, une collision a eu lieu. Quand une collision a lieu, a machine qui a détecté la collision stoppe sa transmission et envoie une trame spéciale sur le bus, qui indique l'occurrence d'une collision. Lorsqu'une collision a lieu, ou que le bus n'est pas libre, la machine va attendre son tour. Chaque machine attend durant un temps aléatoire, histoire de limiter l’occurrence des collisions.
Les trames Ethernet
[modifier | modifier le wikicode]Toute trame Ethernet contient diverses informations, dont :
- l'adresse MAC du destinataire : sans cela, on ne sait pas à qui la donnée est destinée ;
- l'adresse de l'émetteur, information utilisable par le destinataire pour savoir à qui envoyer une éventuelle réponse ;
- la donnée envoyée : un simple bloc de données de taille fixe, le plus souvent ;
- éventuellement des octets de synchronisation ou de contrôle d'erreur.
Dans la première version d'Ethernet, la trame indique elle-même sa longueur en nombre d'octets. Celle-ci est comprise entre 46 et 1500 octets. Si le nombre total d'octets est inférieur à 42, l'équipement réseau ajoute des octets inutiles dans la trame, histoire d'avoir au moins 46 octets. Dans les versions suivantes d'Ethernet, la longueur est remplacée par un numéro qui indique quels sont les protocoles utilisés pour la transmission des données sur le réseau : l'Ethertype. Pour garantir la compatibilité, il a été convenu que les trames Ethernet version 2 ont un champ dont la valeur est supérieure à la longueur de la trame, à savoir 1500.