Les fonctions de contrôle de liaison de données (DLC)
Le contrôle de liaison de données (DLC) traite des procédures de communication entre deux nœuds adjacents, que la liaison soit dédiée ou diffusée. Les fonctions de contrôle de liaison de données incluent le découpage de trames et le contrôle de flux et d'erreurs.
Découpage de trames
La transmission de données dans la couche physique consiste à déplacer des bits sous la forme d'un signal de la source à la destination. La couche physique assure la synchronisation des bits pour garantir que l'expéditeur et le récepteur utilisent les mêmes durées de bits et la même synchronisation. La couche liaison de données, quant à elle, doit regrouper les bits dans des trames, de sorte que chaque trame se distingue des autres.
Le découpage en trames dans la couche liaison de données sépare un message d'une source à une destination en ajoutant une adresse d'expéditeur et une adresse de destination. L'adresse de destination définit où le paquet doit aller ; l'adresse de l'expéditeur aide le destinataire à accuser la réception.
Bien que le message entier puisse être emballé dans une seule trame, cela n'est normalement pas fait. L'une des raisons est qu'une trame peut être très volumineuse, ce qui rend le contrôle de flux et d'erreurs très inefficace. Lorsqu'un message est transporté dans une très grande trame, même une erreur sur un seul bit nécessiterait la retransmission de la trame entière. Lorsqu'un message est divisé en trames plus petites, une erreur sur un seul bit n'affecte que cette petite trame.
Taille du trame
Les trames peuvent être de taille fixe ou variable. Dans le cas d'une trame de taille fixe, il n'est pas nécessaire de définir les limites des trames ; la taille elle-même peut être utilisée comme délimiteur. Un exemple de ce type de trame est ATM WAN, qui utilise des trames de taille fixe appelées cellules.
Dans une trame de taille variable (sont utilisées dans les réseaux locaux), nous avons besoin d'un moyen de définir la fin d'une trame et le début de la suivante. Historiquement, deux approches ont été utilisées à cette fin : une approche orientée octet et une approche orientée bits.
Approche orientée octets
Dans une trame orientée caractère (ou octet), les données à transporter sont des caractères de 8 bits issus d'un système de codage tel que l'ASCII. L'en-tête, qui porte normalement les adresses de source et de destination et d'autres informations de contrôle, et la fin de trame, qui porte les bits redondants de détection d'erreurs, sont également des multiples de 8 bits. Pour séparer une trame de la suivante, un drapeau de 8 bits (1 octet) est ajouté au début et à la fin d'une trame. Ce drapeau, composé de caractères spéciaux dépendant du protocole, signale le début ou la fin d'une trame. La figure ci-dessous montre le format d'une trame dans un protocole orienté caractères.
Le drapeau peut être choisi pour être n'importe quel caractère non utilisé pour la communication textuelle. De nos jours, nous utilisons de nombreux types de données dans la communication, tout caractère utilisé pour le drapeau pourrait également faire partie de l'information. Si cela se produit, le récepteur, lorsqu'il rencontre ce motif au milieu des données, pense avoir atteint la fin de la trame. Pour résoudre ce problème, une stratégie de bourrage d'octets a été ajoutée à la trame orientée caractères. Dans la stratégie de bourrage d'octets (ou de caractères), un octet spécial est ajouté à la section de données de la trame lorsqu'il existe un caractère présentant le même motif que le drapeau. La section de données est remplie d'un octet supplémentaire. Cet octet est généralement appelé caractère d'échappement (ESC) et possède un modèle binaire prédéfini. Chaque fois que le récepteur rencontre le caractère ESC, il le supprime de la section de données et traite le caractère suivant comme une donnée, et non comme un indicateur de délimitation.
Le bourrage d'octets par le caractère d'échappement permet la présence du drapeau dans la section de données de la trame, mais cela crée un autre problème. Que se passe-t-il si le texte contient un ou plusieurs caractères d'échappement suivis d'un octet avec le même motif que le drapeau ? Le récepteur supprime le caractère d'échappement, mais conserve l'octet suivant, qui est incorrectement interprété comme la fin de la trame. Pour résoudre ce problème, les caractères d'échappement qui font partie du texte doivent également être marqués par un autre caractère d'échappement. En d'autres termes, si le caractère d'échappement fait partie du texte, un caractère supplémentaire est ajouté pour montrer que le second fait partie du texte.
Approche orientée bits
Dans la trame orientée bits, la section de données d'une trame est une séquence de bits à interpréter par la couche supérieure en tant que texte, graphique, audio, vidéo, etc. Cependant, en plus des en-têtes (et des possibles en-queues), nous avons toujours besoin d'un délimiteur pour séparer une trame de l'autre. La plupart des protocoles utilisent un drapeau spécial à 8 bits, 01111110, comme délimiteur pour définir le début et la fin de la trame, comme illustré dans la figure ci-dessous.
Ce drapeau peut créer le même type de problème que nous avons vu dans les protocoles orientés caractères. C'est-à-dire que si le motif de drapeau apparaît dans les données, nous devons d'une manière ou d'une autre informer le récepteur que ce n'est pas la fin de la trame. Nous faisons cela en remplissant 1 seul bit (au lieu de 1 octet) pour empêcher le motif de ressembler à un drapeau. La stratégie s'appelle le bourrage de bits. Dans le bourrage de bits, si un 0 et cinq bits 1 consécutifs sont rencontrés, un 0 supplémentaire est ajouté. Ce bit de bourrage supplémentaire est finalement supprimé des données par le récepteur. Notez que le bit supplémentaire est ajouté après un 0 suivi de cinq 1 quelle que soit la valeur du bit suivant. Cela garantit que la séquence de champ de drapeau n'apparaît pas par inadvertance dans la trame.
Cela signifie que si le motif en forme de drapeau 01111110 apparaît dans les données, il deviendra 011111010 (bourré) et n'est pas confondu avec un drapeau par le récepteur. Le vrai drapeau 01111110 n'est pas bourré par l'expéditeur et est reconnu par le destinataire.
Contrôle de flux
Le contrôle de flux est un problème de conception au niveau de la couche de liaison de données. C'est une technique qui observe généralement un flux de données approprié de l'expéditeur au destinataire. C'est très essentiel car il est possible pour l'expéditeur de transmettre des données ou des informations à un débit très rapide et, par conséquent, le récepteur peut recevoir ces informations et les traiter. Cela ne peut se produire que si le récepteur a une charge de trafic très élevée par rapport à l'expéditeur, ou si le récepteur a moins de puissance de traitement que l'expéditeur.
Le contrôle de flux est essentiellement une technique qui donne la permission à deux stations de vitesses de traitement différentes de communiquer entre elles. Le contrôle de flux dans la couche de liaison de données limite et coordonne simplement le nombre de trames ou la quantité de données que l'émetteur peut envoyer juste avant d'attendre un accusé de réception du récepteur. Le contrôle de flux est en fait un ensemble de procédures qui expliquent à l'émetteur la quantité de données ou de trames qu'il peut transférer ou transmettre avant que les données ne surchargent le récepteur.
Le périphérique de réception ne contient également qu'une quantité limitée de vitesse et de mémoire pour stocker des données. C'est pourquoi l'appareil récepteur devrait être en mesure de dire ou d'informer l'expéditeur d'arrêter la transmission ou transférer les données sur une base temporaire avant qu'il n'atteigne la limite. Il a également besoin d'un tampon, un gros bloc de mémoire pour simplement stocker des données ou des trames jusqu'à ce qu'elles soient traitées.
Le contrôle de flux est classé en deux catégories :
- Contrôle de flux basé sur la rétroaction : Dans cette technique de contrôle, l'expéditeur transmet simplement des données ou des informations ou des trames au récepteur, puis le récepteur renvoie des données à l'expéditeur et permet également à l'expéditeur de transmettre une plus grande quantité de données ou d'informer l'expéditeur de la façon dont le récepteur traite ou fait. Cela signifie simplement que l'expéditeur transmet des données ou des trames après avoir reçu des accusés de réception de l'utilisateur.
- Contrôle de flux basé sur le débit : Ces protocoles disposent de mécanismes intégrés pour limiter le débit de transmission des données sans exiger d'accusé de réception de la part du récepteur. Ils sont utilisés dans la couche réseau et la couche transport.
Contrôle d'erreur
Étant donné que la technologie sous-jacente au niveau de la couche physique n'est pas entièrement fiable, nous devons implémenter un contrôle d'erreur au niveau de la couche de liaison de données pour empêcher le nœud de réception de fournir des paquets corrompus à sa couche réseau. Le contrôle des erreurs au niveau de la couche liaison de données est normalement très simple et mis en œuvre à l'aide de l'une des deux méthodes suivantes. Dans les deux méthodes, un CRC est ajouté à l'en-tête de trame par l'expéditeur et vérifié par le destinataire.
- Dans la première méthode, si la trame est corrompue, elle est ignorée en silence ; s'elle n'est pas corrompu, le paquet est délivré à la couche réseau. Cette méthode est principalement utilisée dans les réseaux locaux câblés tels qu’Ethernet.
- Dans la seconde méthode, si la trame est corrompue, elle est ignorée en silence ; s'elle n'est pas corrompu, un accusé de réception est envoyé (à des fins de contrôle de flux et d'erreur) à l'expéditeur.
Exigences relatives au mécanisme de contrôle des erreurs :
- Détection d'erreur - L'expéditeur et le destinataire, les deux ou l'un d'entre eux, doivent s'assurer qu'il y a une erreur dans le transit.
- ACK positif - Lorsque le récepteur reçoit une trame correcte, il doit en accuser réception.
- ACK négatif - Lorsque le récepteur reçoit une trame endommagée ou une trame en double, il renvoie un NACK à l'expéditeur et l'expéditeur doit retransmettre la trame correcte.
- Retransmission : L'expéditeur maintient une horloge et définit un délai d'attente. Si un accusé de réception d'une trame de données précédemment transmise n'arrive pas avant le délai d'attente, l'expéditeur retransmet la trame, pensant que la trame ou son accusé de réception est perdu en transit.