Tahoe

Protocole HDLC

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.

01111110
Fig. 1 Fanion de début et de fin de paquet HDLC

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 :

00
010101
11111111
00111110

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)

011111100001010111110111100111110cccccccccccccccc01111110

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.