Duplex (canal de communication)
En télécommunications, un canal de communication duplex est un canal de communication qui transporte l'information dans les deux sens (bidirectionnel). Selon que l'information peut être transportée simultanément dans les deux sens ou non, on parle respectivement de canal full-duplex ou half-duplex (également appelé à l'alternat). Un canal qui transporte l'information dans un seul sens est appelé simplex (monodirectionnel).
Comparaisons avec la vie de tous les jours
modifierUn exemple de canal simplex est la radiodiffusion telle la radio FM. Les informations sont envoyées à partir d'une station émettrice et reçues sur un poste. Les auditeurs ne peuvent pas répondre.
La liaison half-duplex peut être comparée à une communication avec des talkies-walkies, l’un parle (l’autre ne peut parler en même temps) et lorsqu'il lâche le bouton (signal de fin de conversation) l’autre peut parler à son tour.
Le full-duplex est très souvent l'association de deux canaux simplex, de la même façon qu'une autoroute est l'association de deux routes à un seul sens. La liaison full-duplex peut également être comparée à une conversation téléphonique : les deux interlocuteurs peuvent parler en même temps.
Exemples
modifierExemple de liaison full-duplex : le protocole Xon/Xoff
modifierDans ce protocole, la synchronisation de l'émetteur et du récepteur et le contrôle de flux sont assurés de façon logicielle (contrôle de flux programmé).
Quand le tampon de réception est presque plein, le récepteur envoie vers l'émetteur, sur la ligne utilisée pour transférer les données, le code ASCII 0x13 (appelé DC3 pour Device Control 3) pour demander une suspension du transfert. Lorsque les données ont été traitées et que le tampon de réception est presque vide, le récepteur envoie le code ASCII 0x11 (appelé DC1 pour Device Control 1) et le transfert reprend. L'émetteur doit donc surveiller en permanence l'éventuelle arrivée d'un code DC1 ou DC3.
Exemple de liaison half-duplex : le protocole ETX/ACK
modifierDans ce protocole, les données sont envoyées par blocs (trames). L'émetteur envoie un bloc de données auquel il ajoute le code ASCII 0x03 (appelé ETX pour End of Text) puis se met en attente. De son côté, le récepteur traite les données et renvoie à l'émetteur le code ASCII 0x06 (appelé ACK pour ACKnowledge) pour signaler qu'il a bien reçu le bloc de données précédent et qu'il est prêt à recevoir de nouveau des données. Le récepteur peut dans certains cas renvoyer le caractère ASCII 0x15 (appelé NACK pour Negative ACKnowledge) pour signaler qu'il a détecté une erreur dans la transmission.