Los enlaces síncronos permiten transmitir flujos de bits. Sin embargo, en las redes informáticas es importante conservar la división del flujo en bytes y, además, la división de la secuencia de bytes en paquetes. Un protocolo sencillo como HDLC permite conservar precisamente esa división.
La secuencia de bits 01111110 se utiliza para marcar el principio y el final de un paquete de datos. Se trata de un marcador especial (flag o bandera) que no puede aparecer dentro de un paquete. Gracias a él, el receptor puede tener la certeza de que los bits que le siguen constituyen, sucesivamente, el primer byte, el segundo, etc. de los datos transmitidos.
Un mismo flag HDLC puede ser simultáneamente el final de un paquete y el principio del siguiente.
| 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
|---|
Dado que la secuencia de bits 01111110 está reservada, los datos transmitidos deben modificarse de forma adecuada para que no aparezca dentro de un paquete y no sea interpretada erróneamente. Por ello, cada vez que en el flujo de datos aparecen 5 unos consecutivos, el transmisor inserta a continuación un cero adicional. El receptor, por su parte, tras recibir 5 unos consecutivos, omite el cero que les sigue. De este modo se reconstruye la secuencia de bits transmitida. Esta operación se denomina bit stuffing (relleno de bits).
Además, para garantizar la integridad de los datos transmitidos, al final del paquete se añade una suma de comprobación CRC16 de 16 bits.
El siguiente ejemplo muestra cómo cambia la secuencia de bits al aplicar el protocolo HDLC.
Paquete de tres bytes 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 |
|---|
Paquete HDLC con flags y bit stuffing:
(campos más oscuros: bits añadidos por el protocolo HDLC; c: bits de la suma de comprobación 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 Paquete de tres bytes (0x15 0xff 0x3e) antes y después de aplicar HDLC
Si no hay datos que enviar por la línea de transmisión, el transmisor debe enviar de forma continua la secuencia 01111110.
El envío de una secuencia formada únicamente por unos se utiliza para abortar la transmisión e informar al otro extremo de que se ha producido un error.
