# Couche liaison de données

Dans le domaine des réseaux informatiques, la couche de liaison de données est la seconde couche des sept couches du modèle OSI.
La couche de liaison de données est la couche de protocole qui transfère des données entre les nœuds adjacents d'un réseau étendu (WAN) ou entre des nœuds sur le même segment d'un réseau local (LAN). La couche de liaison de données fournit les moyens fonctionnels et procéduraux pour le transfert de données entre des entités d'un réseau et, dans certains cas, les moyens de détecter et potentiellement corriger les erreurs qui peuvent survenir au niveau de la couche physique.
Ethernet pour les réseaux locaux (multi-nœuds), le protocole point à point (PPP), HDLC et ADCCP pour des connexions point à points (double nœud) sont des exemples de protocoles de liaison de données.

## Principe

D'après la sémantique de l'architecture réseau OSI, les protocoles de liaison de données répondent aux demandes de services provenant de la couche de réseau et réalisent leur fonction par l'envoi de demandes de services à la couche physique.
La couche de liaison de données s'occupe de la livraison locale de trames entre dispositifs présents sur un même LAN. Les trames de liaison de données, comme sont nommées ces unités de données de protocole (PDU), ne franchissent pas les limites du réseau local. Le routage inter-réseau et l'adressage global sont des fonctions de couches supérieures, permettant aux protocoles de liaison de données de se focaliser au niveau local, de la livraison, de l'adressage et de l'arbitrage du support. Ainsi, cette couche est analogue à un policier qui ferait la circulation ; il tente d'arbitrer entre les différentes parties s'affrontant pour l'accès au moyen de communication.
Quand des appareils essaient d'utiliser simultanément un support, des collisions de trame surviennent. Les protocoles de liaison de données spécifient comment les appareils détectent et se remettent de telles collisions, mais ils ne les empêchent pas d'arriver.
La livraison de trames par des appareils de couche 2 est établie par l'utilisation d'adresses non-ambiguës de matériel. Un entête de trame contient l'adresse source et destination indiquant de quel appareil provient la trame et quel appareil est censé la recevoir et la traiter. À la différence des adresses routables et hiérarchiques de la couche réseau, les adresses de la couche 2 sont plates, c'est-à-dire qu'il n'y a pas de parties de cette adresse qui pourraient être utilisées pour identifier le groupe physique ou logique auquel l'adresse appartient.
La liaison de données fournit ainsi un transfert de données à travers la liaison physique. Ce transfert peut être fiable ou non ; plusieurs protocoles de liaison de données n'ont pas de mécanismes d'accusé réception et acceptation des trames, et certains protocoles de liaison de données peuvent même n'avoir aucune sorte de somme de contrôle pour tester s'il y a eu des erreurs de transmission. Dans ces cas-là, des protocoles de plus haut niveau doivent fournir du contrôle de flux, de la détection d'erreur, de l'accusé réception et de la retransmission.
Dans certains réseaux, comme les réseaux locaux IEEE 802, la couche de liaison de données est décrite plus en détail avec des sous-couches de contrôle d'accès au support (Media Access Control - MAC) et de contrôle de la liaison logique (Logical Link Control - LLC) ; cela signifie que le protocole LLC IEEE 802.2 peut être utilisé avec toutes les couches MAC IEEE 802, comme Ethernet, Token ring, IEEE 802.11, etc., autant qu'avec certaines couches MAC non-802 comme FDDI. D'autres protocoles de liaison de données, comme HDLC, sont spécifiés pour inclure les deux sous-couches, bien qu'encore d'autres protocoles, comme Cisco HDLC, utilisent le système de construction des trames de bas niveau de HDLC comme couche MAC en combinaison avec une couche LLC différente. Dans la recommandation UIT-T G.hn qui fournit un moyen de créer un réseau local haut débit (jusqu'à 1 gigabit par seconde) par l'emploi du câblage existant de la maison (lignes électriques, lignes téléphoniques et des câbles coaxiaux), la couche de liaison de données est divisée en trois sous-couches (convergence de protocole d'application, contrôle de la liaison logique (LLC) et contrôle d'accès au support (MAC))

## Sous-couches de la couche de liaison de données
### La sous-couche Contrôle de la liaison logique (Logical Link Control - LLC)

La sous-couche la plus haute est celle du Contrôle de la liaison logique (Logical Link Control - LLC). Cette sous-couche multiplexe les protocoles fonctionnant au-dessus de la couche de liaison de données, et optionnellement, fournit le contrôle de flux, l'accusé réception et la correction d'erreur. Le LLC fournit l'adressage et le contrôle de la liaison de données. Il spécifie quels mécanismes doivent être utilisés pour adresser des stations sur le support de transmission et pour le contrôle de l'échange des données entre la machine de l'expéditeur et du destinataire.

### La sous-couche de Contrôle d'accès au support (Media Access Control - MAC)

La sous-couche basse est celle du contrôle d'accès au support (Media Access Control - MAC). Les protocoles appartenant à cette sous-couche ont notamment comme fonction de réguler les émissions sur un support donné, en particulier lorsque plusieurs stations indépendantes sont susceptibles d'émettre à tout moment sur le même support (tel qu'un bus ethernet, habituellement géré par le protocole CSMA/CD). Appartiennent également à cette sous-couche la description des formats de trame (cellule élémentaire du transport d'information) et des méthodes de repérage des stations émettrices et réceptrices (adressage). Un des formats définis dans ce cadre utilise les adresses dites MAC, de 6 octets, attribuées de manière (normalement) univoque à des stations émettrices/réceptrices (cartes), notamment celles utilisées par ethernet, bluetooth et Wi-Fi.
Il y a deux formes de contrôle d'accès au support : distribuée et centralisée. Chacune d'elles peut être comparée à une communication entre plusieurs personnes. Dans une conversation « distribuée », nous attendons que plus personne ne parle pour prendre la parole. Si deux personnes se mettent à parler en même temps, ils s'arrêteront immédiatement, marqueront un temps d'arrêt et commenceront un jeu long et élaboré pour dire "je vous en prie, à vous d'abord". Dans une conversation "centralisée", l'un des participants est expressément chargé de répartir les temps de parole entre les différents interlocuteurs.
Les protocoles de la sous-couche MAC ont également comme attribution de spécifier la manière de séparer les trames : comment détecter sur le support qu'une trame se termine et qu'une autre démarre. Il y a quatre manières d'indiquer les séparations de trames : basée sur le temps, par comptage des caractères, par bourrage d'octets (byte stuffing) et par bourrage de bits (bit stuffing).
* L'approche basée sur le temps requiert simplement un intervalle minimal entre trames. Le principal défaut d'une telle méthode est qu'en cas de perturbation externe, la détection d'erreur est difficile.
* Le comptage de caractères est basé sur la transmission dans l'entête de trame du nombre de caractères de la trame (hors entête). Cette méthode, toutefois, est facilement perturbée si ce champ devient erroné d'une façon ou d'une autre, ce qui rend difficile la distinction entre trames.
* Le bourrage d'octets place en tête de trame une séquence d'octets particulière, telle que DLE STX, et en fin de trame une autre séquence particulière, telle que DLE ETX. Ces marques de début et de fin sont détectées à la réception et ôtées du message qui est transmis aux couches supérieures de gestion de la communication.
* De façon similaire, le bourrage de bits remplace ces marques de début et de fin par des motifs particuliers de bits ou "drapeaux" (par exemple, un 0, six bits 1 et un 0). L'apparition de ce motif de bits ailleurs qu'en extrémité de trame est évitée par l'insertion d'un bit : Pour reprendre l'exemple où le drapeau est 01111110, un 0 est systématiquement inséré après cinq 1 consécutifs, quelle que soit la valeur du bit suivant. La séquence 01111110 signale donc sans ambigüité une extrémité de trame. Les drapeaux et les 0 ainsi insérés sont éliminés à la réception. Cette méthode permet de disposer de trames de longueur arbitraire, faciles à distinguer.

## Liste des services de la Couche de liaison de données

* Encapsulation des paquets de données de la couche réseau dans des trames.
* Synchronisation des trames
* La sous-couche de Contrôle de la liaison logique (Logical link control - LLC) :
** Le Contrôle d'erreur (Automatic Repeat reQuest, ARQ), en plus des ARQ fournis par quelques protocoles de la couche transport, des techniques forward error correction (FEC) fournies par la couche physique, et de la détection d'erreur et l'annulation de paquets fournis à toutes les couches, notamment la couche réseau. Le contrôle d'erreur de la couche de liaison de données (c'est-à-dire la retransmission de paquets erronés) est fourni dans les réseaux sans-fil et les modems V.42 du réseau téléphonique, mais pas dans les protocoles LAN comme Ethernet, comme les erreurs de bit sont rares sur des fils courts. Dans ce dernier cas, seules la détection d'erreur et l'annulation de paquets erronés sont fournies.
* La sous-couche de Contrôle d'accès au support (Media access control - MAC) :
** Protocoles d'accès multiple pour le contrôle d'accès au canal, par exemple les protocoles CSMA/CD pour la détection de collision et la retransmission dans les réseaux à bus Ethernet et les réseaux à concentrateurs (hubs), ou le protocole CSMA/CA pour l'évitement des collisions dans les réseaux sans-fils.
** Adressage physique (adressage MAC)
** La commutation LAN (Commutation de paquets) incluant le filtrage MAC et le spanning tree protocol
** La gestion de files d'attente des paquets de données ou leur ordonnancement
** La commutation Store-and-forward ou cut-through
** Le contrôle de la Qualité de service (QoS)
** Les LAN virtuels (VLAN)

## Exemples de protocole

* ARCnet
* ATM
* Cisco Discovery Protocol (CDP)
* Controller Area Network (CAN)
* Econet
* Ethernet
* Ethernet Automatic Protection Switching (EAPS)
* Fiber Distributed Data Interface (FDDI)
* Frame Relay
* High-Level Data Link Control (HDLC)
* IEEE 802.2 (fournit des fonctionnalités LLC aux couches MAC IEEE 802)
* IEEE 802.11 wireless LAN
* Link Access Procedures, D channel (LAPD)
* LocalTalk
* Multiprotocol Label Switching (MPLS)
* Point-to-Point Protocol (PPP)
* Serial Line Internet Protocol (SLIP) (obsolete)
* Shortest Path Bridging
* Spanning tree protocol
* StarLAN
* Token ring
* et la plupart des communications série.

## Interfaces

La couche de liaison de données est souvent implémentée dans les logiciels sous la forme d'un "pilote de carte réseau" (driver). Le système d'exploitation a une interface logicielle définie entre la liaison de données et la pile réseau et transport au-dessus. Cette interface n'est pas une couche en soi, mais plus une définition de l'interfaçage entre couches.

## Lien avec le modèle TCP/IP

Dans le cadre de la suite TCP/IP (à cinq couches), la couche de liaison de données du modèle OSI est contenue dans la couche de liaison, c'est-à-dire celle de plus bas niveau. Cette couche de liaison ne se préoccupe que des aspects matériels jusqu'au point d'obtenir les adresses matérielles pour situer les hôtes sur un lien réseau physique, et de transmettre des trames de données sur ce lien.
Ainsi, la couche de liaison a un périmètre plus large et comprend toutes les méthodes qui affectent le lien local, qui est un groupe de connexions qui sont limitées en portée aux autres nœuds du réseau d'accès local.
Le modèle TCP/IP n'est pas une référence de conception complète, du haut vers le bas, pour les réseaux. Il a été formulé dans le but d'illustrer les groupes logiques et la portée des fonctionnalités nécessaires dans la conception de la suite des protocoles d'interconnexion de TCP/IP, nécessaire pour l'exploitation de l'Internet. En général, les comparaisons directes et strictes des modèles OSI et TCP/IP doivent être évitées, car le découpage en couches dans TCP/IP n'est pas un critère de conception principal et elles ne sont en général pas très enrichissantes. En particulier, TCP/IP ne dicte pas une séquence hiérarchique stricte des exigences d'encapsulations, que l'on attribue aux protocoles OSI.