> For the complete documentation index, see [llms.txt](https://iesjulioverne.gitbook.io/tema-4.-capa-de-enlace-de-datos/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://iesjulioverne.gitbook.io/tema-4.-capa-de-enlace-de-datos/protocolos-del-nivel-de-enlace/protocolo-hdlc.md).

# Protocolo HDLC

Características generales de HDLC ○ HDLC = Control de enlace de datos de alto nivel (High-level Data Link Control)&#x20;

* Protocolo de enlace que ofrece servicios orientados a conexión&#x20;
* Modos de funcionamiento&#x20;
  * NRM: modo normal de respuesta (Normal Response Mode)&#x20;
  * Modelo de comunicación half-duplex maestro-esclavo&#x20;
  * Las estaciones esclavas sólo pueden transmitir cuando la estación maestra lo ordena específicamente&#x20;
  * ABM: Modo equilibrado asíncrono (Asynchronous Balanced Mode)&#x20;
  * Modelo de comunicación full-duplex computador-computador&#x20;
  * Todas las estaciones tienen la misma categoría&#x20;
  * Cualquier estación puede transmitir en cualquier momento a través del enlace

Formato de trama HDLC

<figure><img src="https://865624770-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjyTVsvTaCzIqsx8Qp3Pm%2Fuploads%2FGwirF6s4I6vYQU2fCCPJ%2Fimagen.png?alt=media&amp;token=52726499-dbac-4c2a-9cb6-c61de4cce102" alt=""><figcaption></figcaption></figure>

Campos&#x20;

* Banderas de inicio y fin (flags)&#x20;
  * Patrón de bits = 01111110&#x20;
  * Utiliza inserción y eliminación de bits cero para garantizar que el patrón no aparece dentro de la secuencia de bits&#x20;
* Campo FCS: secuencia de comprobación de trama&#x20;
  * CRC de 16 bits que se calcula usando el generador polinómico: x16 + x12 + x5 + 1&#x20;
* Campo dirección (Address)&#x20;
  * En modo NRM: especifica la dirección del esclavo&#x20;
  * En modo ABM: en conexiones ABM punto a punto, el campo dirección se pone a valor 11111111 (dirección de difusión)&#x20;
* Campo Control. Especifica el tipo de trama e información adicional (número de secuencia, número de confirmación, bit P/F, etc.)&#x20;

Tipos de tramas HDLC ○ Formato del campo CONTROL

<figure><img src="https://865624770-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjyTVsvTaCzIqsx8Qp3Pm%2Fuploads%2FqdRpFuPZdGggU6XTBSGk%2Fimagen.png?alt=media&amp;token=6563db83-fb17-49b4-ba4c-0ff7ac5b66a8" alt=""><figcaption></figcaption></figure>

Formato del campo CONTROL en tramas extendidas

<figure><img src="https://865624770-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjyTVsvTaCzIqsx8Qp3Pm%2Fuploads%2FDE5UDd86Iu4udh2Fs6GZ%2Fimagen.png?alt=media&amp;token=b53aa48d-4a96-45c0-8ea7-f908192adbad" alt=""><figcaption></figcaption></figure>

#### Tramas de información (tramas de tipo I)&#x20;

* Tramas que transportan datos de la capa superior
* Números de secuencia, N(S)&#x20;
  * Se utiliza para control de errores y flujo&#x20;
  * Pueden ser de 3 bits (conexión normal) o de 7 bits (conexión extendida)&#x20;
    * Nº secuencia de 3 bits → 8 identificadores distintos (valores 0 a 7)&#x20;
    * Nº secuencia de 7 bits → 128 identificadores distintos (valores 0 a 127)&#x20;
* Números de confirmación, N(R)&#x20;
  * Se utiliza para enviar confirmaciones superpuestas (técnica de piggy-backing)&#x20;
    * Puesto que la conexión es de tipo full-duplex, se puede adjuntar la confirmación a los datos que viajan en sentido contrario&#x20;
    * En caso de no existir tráfico en sentido contrario, las confirmaciones deben enviarse en tramas de confirmación explícitas&#x20;
  * El número de confirmación contiene el identificador de la siguiente trama que se espera recibir&#x20;
* Bit P/F (Pregunta/Final)&#x20;
  * Se utiliza sobre todo en modo NRM: el maestro pone el bit P/F a 1 para indicar al esclavo que debe confirmar la trama&#x20;
  * También se usa cuando no se recibe la confirmación de una trama y expira el temporizador

#### Tramas supervisoras&#x20;

* Tramas de tipo RR (Receptor Ready, receptor preparado)&#x20;
  * Es una trama de confirmación&#x20;
  * Se utiliza para confirmar tramas de datos, en caso de no existir tráfico en sentido contrario&#x20;
  * El número de confirmación, N(R), contiene el identificador de la siguiente trama que se espera recibir&#x20;
* Tramas de tipo REJ (Reject, rechazo)&#x20;
  * Es una trama de confirmación negativa, para implementar el mecanismo RQ continuo con retroceso-N&#x20;
  * Cuando el receptor recibe una trama errónea, devuelve una trama REJ, indicando en el nº de confirmación,N(R), el identificador de la siguiente trama que espera recibir.
  * El receptor descartará todas las tramas recibidas a continuación, hasta recibir la trama indicada en el campo N(R)&#x20;
  * El emisor debe retransmitir todas las tramas, a partir la trama indicada en el campo N (R)
* Tramas de tipo SREJ (Selective Reject, rechazo selectivo)&#x20;
  * Es una trama de confirmación negativa para implementar el mecanismo RQ continuo con repetición selectiva&#x20;
  * Cuando el receptor recibe una trama de información errónea, devuelve una trama SREJ, indicando en el nº de confirmación, N(R), el identificador de la trama que debe retransmitir el emisor&#x20;
  * El emisor retransmite únicamente la trama especificada en el campo N(R)&#x20;
* Tramas de tipo RNR (Receptor Not Ready, receptor no preparado)&#x20;
  * Se utiliza para controlar el flujo: permite al receptor indicar al emisor que suspenda temporalmente el envío de tramas&#x20;
  * Esta trama confirma todas las tramas de información anteriores a la trama indicada en el número de confirmación, N(R), pero sin incluir ésta&#x20;
  * Al recibir una trama RNR, el emisor debe detener inmediatamente el envío de nuevas tramas de información&#x20;
  * Cuando el receptor está en condiciones de recibir nuevas tramas de información, debe enviar una trama supervisora de tipo RR.

#### Tramas sin numerar

<figure><img src="https://865624770-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjyTVsvTaCzIqsx8Qp3Pm%2Fuploads%2FThBJogfVCOFZUdjSRp5W%2Fimagen.png?alt=media&amp;token=937e546b-8aed-44bd-b43e-5c39da324973" alt=""><figcaption></figcaption></figure>

#### Ejemplos de funcionamiento de HDLC

<figure><img src="https://865624770-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjyTVsvTaCzIqsx8Qp3Pm%2Fuploads%2FLfm73tbhRo3I3rc0IIGB%2Fimagen.png?alt=media&amp;token=4e7dd059-eaef-496d-a132-28466d91bdc7" alt=""><figcaption></figcaption></figure>
