Les liaisons synchrones permettent de transmettre des flux de bits. Dans les réseaux informatiques, il est toutefois important de conserver le découpage du flux en octets, ainsi que le découpage de la suite d'octets en paquets. Un protocole simple comme HDLC permet précisément de conserver ce découpage.
Le début et la fin d'un paquet de données sont marqués par la séquence de bits 01111110. Il s'agit d'un fanion spécial (flag) qui ne peut pas apparaître à l'intérieur d'un paquet. Grâce à lui, le récepteur a la certitude que les bits qui le suivent constituent successivement le premier, le deuxième, etc. octet des données transmises.
Un même fanion HDLC peut être à la fois la fin d'un paquet et le début du suivant.
| 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
|---|
La séquence de bits 01111110 étant réservée, les données transmises doivent être modifiées de façon qu'elle n'apparaisse pas à l'intérieur d'un paquet et ne soit pas interprétée à tort. Ainsi, chaque fois que 5 bits à 1 consécutifs apparaissent dans le flux de données, l'émetteur insère un zéro supplémentaire à leur suite. De son côté, le récepteur, après avoir reçu 5 bits à 1 consécutifs, ignore le zéro qui les suit. La séquence de bits transmise est ainsi reconstituée. Cette opération porte le nom de bit stuffing.
De plus, pour garantir l'intégrité des données transmises, une somme de contrôle sur 16 bits CRC16 est ajoutée à la fin du paquet.
L'exemple ci-dessous montre comment la séquence de bits est modifiée par l'application du protocole HDLC.
Paquet de trois octets 0x15 0xff 0x3e :
| 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 |
|---|
Paquet HDLC avec fanions et bit stuffing :
(cases plus foncées - bits ajoutés par le protocole HDLC, c - bits de la somme de contrôle CRC16)
| 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | c | c | c | c | c | c | c | c | c | c | c | c | c | c | c | c | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
|---|
Fig. 2 Paquet de trois octets (0x15 0xff 0x3e) avant et après application du protocole HDLC
Si aucune donnée ne doit être transmise sur la ligne, l'émetteur doit envoyer en continu la séquence 01111110.
L'envoi d'une suite de bits tous à 1 sert à interrompre la transmission et à signaler à l'autre extrémité qu'une erreur s'est produite.
