Introduction et services fournis par la couche liaison de données
Le modèle TCP/IP ne définit aucun protocole dans la couche liaison de données ou la couche physique. Ces deux couches sont des territoires de réseaux qui, lorsqu'ils sont connectés, constituent Internet. Ces réseaux, filaires ou sans fil, fournissent des services aux trois couches supérieures du modèle TCP/IP.
Il existe deux types de canaux de couche liaison :
- Le premier type est celui des canaux de diffusion, qui connectent plusieurs hôtes dans les réseaux locaux sans fil, dans les réseaux satellite et dans les réseaux d'accès à câble hybride fibre-coaxial (HFC). Étant donné que de nombreux hôtes sont connectés au même canal de communication de diffusion, un protocole d'accès au support est nécessaire pour coordonner la transmission des trames. Dans certains cas, un contrôleur central peut être utilisé pour coordonner les transmissions ; dans d'autres cas, les hôtes eux-mêmes coordonnent les transmissions.
- Le deuxième type de canal de couche liaison est la liaison de communication point à point, comme celle que l'on trouve souvent entre deux routeurs connectés par une liaison longue distance, ou entre l'ordinateur de bureau d'un utilisateur et le commutateur Ethernet à proximité auquel il est connecté.
La communication au niveau de la couche liaison de données est de nœud à nœud. Une unité de données d'un point sur Internet doit traverser de nombreux réseaux (LAN et WAN) pour atteindre un autre point. Ces LAN et WAN sont connectés par des routeurs. Il est d'usage de désigner les deux hôtes finaux et les routeurs comme des nœuds et les réseaux intermédiaires comme des liens.
Les services fournis par la couche de liaison
Le champ d'action de la couche liaison de données est de nœud à nœud. Lorsqu'un paquet circule sur Internet, la couche liaison de données d'un nœud (hôte ou routeur) est chargée de livrer un datagramme au nœud suivant sur le chemin. À cette fin, la couche liaison de données du nœud émetteur doit encapsuler le datagramme reçu du réseau dans une trame, et la couche liaison de données du nœud récepteur doit décapsuler le datagramme de la trame. En d'autres termes, la couche liaison de données de l'hôte source doit seulement encapsuler, la couche liaison de données de l'hôte de destination doit décapsuler, mais chaque nœud intermédiaire doit à la fois encapsuler et décapsuler. La raison en est que chaque liaison peut utiliser un protocole différent avec un format de trame différent. Même si une liaison et la suivante utilisent le même protocole, l'encapsulation et la décapsulation sont nécessaires car les adresses de la couche de liaison sont normalement différentes.
Les services possibles qui peuvent offerts par un protocole de la couche de liaison sont les suivants :
- Découpage en trames : Le premier service fourni par la couche liaison de données est le découpage en trames. La couche liaison de données à chaque nœud doit encapsuler le datagramme (paquet reçu de la couche réseau) dans une trame avant de l'envoyer au nœud suivant. Le nœud doit également décapsuler le datagramme de la trame reçue sur le canal logique. Bien que nous n'ayons montré qu'un en-tête pour une trame, nous verrons dans les prochains cours qu'une trame peut avoir à la fois un en-tête et une fin. Différentes couches de liaison de données ont des formats différents pour la trame.
- Contrôle de flux : Chaque fois que nous avons un producteur et un consommateur, nous devons penser au contrôle des flux. Si le producteur produit des articles qui ne peuvent pas être consommés, une accumulation d'articles se produit. La couche liaison de données émettrice à la fin d'une liaison est productrice de trames ; la couche de liaison de données réceptrice à l'autre extrémité d'une liaison est un consommateur. Si le taux de trames produites est supérieur au taux de trames consommées, les trames à l'extrémité de réception doivent être mises en mémoire tampon en attendant d'être consommées (traitées). Certainement, nous ne pouvons pas avoir une taille de mémoire tampon illimitée du côté de la réception. Nous avons deux choix. Le premier choix est de laisser la couche de liaison de données réceptrice abandonner les trames si sa mémoire tampon est pleine. Le deuxième choix est de laisser la couche de liaison de données réceptrice envoyer un retour à la couche de liaison de données émettrice pour lui demander de s'arrêter ou de ralentir. Différents protocoles de couche liaison de données utilisent différentes stratégies pour le contrôle de flux.
- Accès au lien. Un protocole de contrôle d'accès au support (MAC) spécifie les règles par lesquelles une trame est transmise sur le lien. Pour les liens point à point qui ont un seul expéditeur à une extrémité du lien et un seul récepteur à l'autre extrémité du lien, le protocole MAC est simple (ou inexistant) - l'expéditeur peut envoyer une trame chaque fois que le lien est inactif. Le cas le plus intéressant est celui où plusieurs nœuds partagent un seul lien de diffusion, ce qu'on appelle le problème d'accès multiple. Ici, le protocole MAC sert à coordonner les transmissions de trames des nombreux nœuds.
- Livraison fiable. Lorsqu'un protocole de couche liaison fournit un service de livraison fiable, il garantit le déplacement sans erreur de chaque datagramme de couche réseau sur la liaison. Semblable à un service de livraison fiable de couche transport, un service de livraison fiable de couche liaison peut être réalisé avec des accusés de réception et des retransmissions. Le service de livraison fiable de la couche liaison est souvent utilisé pour les liaisons sujettes à des taux d'erreur élevés, comme une liaison sans fil, dans le but de corriger une erreur localement - sur le lien où l'erreur se produit - plutôt que de forcer de bout en bout retransmission des données par un protocole de couche transport ou application. Cependant, la livraison fiable de la couche liaison peut être considérée comme une surcharge inutile pour les liaisons à faible taux d'erreur, y compris les liaisons fibre optique, coaxiale et de nombreuses liaisons cuivre à paire torsadée. Pour cette raison, de nombreux protocoles de couche liaison filaire ne fournissent pas un service de livraison fiable.
- Détection et correction d'erreurs - Le matériel de la couche de liaison d'un nœud récepteur peut décider à tort qu'un bit d'une trame est égal à zéro alors qu'il a été transmis à un, et vice versa. De telles erreurs binaires sont introduites par l'atténuation du signal et le bruit électromagnétique. Étant donné qu'il n'est pas nécessaire de transmettre un datagramme comportant une erreur, de nombreux protocoles de la couche de liaison prévoient un mécanisme de détection de ces erreurs binaires. Pour ce faire, le nœud émetteur doit inclure des bits de détection d'erreur dans la trame et le nœud récepteur doit effectuer un contrôle d'erreur. La détection d'erreurs dans la couche de liaison est généralement plus sophistiquée et est implémentée dans le matériel. La correction d'erreur est similaire à la détection d'erreur, sauf qu'un récepteur détecte non seulement quand des erreurs de bits se sont produites dans la trame, mais détermine également exactement où dans la trame les erreurs se sont produites (et corrige ensuite ces erreurs).
Pour mieux comprendre la fonctionnalité et les services fournis par la couche liaison, nous pouvons diviser la couche liaison de données en deux sous-couches : le contrôle de liaison de données (DLC) et le contrôle d'accès au support (MAC). Ce n'est pas inhabituel car les protocoles LAN utilisent en fait la même stratégie. La sous-couche de contrôle de liaison de données traite tous les problèmes communs aux liaisons point à point et de diffusion ; la sous-couche de contrôle d'accès au support ne traite que des problèmes spécifiques aux liens de diffusion. En d'autres termes, nous séparons ces deux types de liens au niveau de la couche liaison de données, comme le montre la figure ci-dessous :