HDLC¶
High-Level Data Link Control
Es un protocolo de capa 2 para WAN. Se usa en por ejemplo Serial.
Provee control de flujo y detección de errores.
Es Punto - Multipunto.
Está cayendo en desuso por PPP.
Control de flujo¶
Es una técnica para que el emisor no sobrecargue al receptor al enviarle más datos de los que pueda procesar. Vemos los protocolos ARQ, que según tengo entendido no son específicos a ningún protocolo de capa de enlace.
Tiempos:
Tiempo de transmisión: Tiempo que se tarda en inyectar datos al medio.
Tiempo de propagación: Lo que tardan los datos en moverse por el medio.
Métodos¶
On-Off:
No se usa. Creo que no es un protocolo ARQ.
La fuente envía mensajes sin esperar ACKs.
Cuando se está por llenar el buffer del receptor, éste envía una señal de stop que sería RNR (Receptor Not Ready).
Cuando vuelve a estar listo envía RR (Receptor Ready).
Stop and wait ARQ:
No se usa.
La fuente espera que le respondan un ACK antes de mandar la siguiente trama.
El destino detiene el flujo al no responder un ACK.
Es ineficiente
Ventanas deslizantes (Go Back N ARQ):
Al conectar define tamaño de ventana W.
Se transmiten W tramas numeradas sin esperar confirmación.
El receptor tiene un buffer de tamaño W.
El ACK dice cuál es la trama que espero que llegue. Se llama RR (Receptor Ready)
El receptor puede dar un RNR (Receptor Not Ready).
En full-duplex, al mandar información al mismo tiempo envía los RR.
Hay un timeout.
Si hay errores pido todas las tramas desde que ocurrio el error, REJ.
Si hay una trama que no llegó, el receptor se da cuenta porque se salteó un número, entonces pido todas las tramas desde que ocurrió el error.
Si la trama que no llegó es justo la última, el receptor nunca nunca envía el ACK, entonces en el transmisor salta el timeout y pide un ACK al receptor para saber si se cayó la conexión y si llegó el último mensaje.
Puede pasar que se pierda un ACK se pierda pero que el siguiente ACK llegue, en ese caso confirma todas las anteriores.
Selective Repeat ARQ/Selective Reject ARQ:
No lo vimos.
Detección de errores¶
Se usa CRC.
Se debe decidir un polinomio
P
de largok
, el polinomio debe ser el mismo en el emisor y en el receptor.Para cada secuencia de datos genera
k-1
bits de CRC. Para generar el CRC se agregank-1
ceros al final de los datos y se divide por el polinomioP
. El resto es el CRC, que se coloca en el lugar de losk-1
ceros que se agregaron.Al recibir se dividen los datos y el CRC concatenado por el mismo polinomio
P
, si el resto da cero esta bien.
Tramas¶
Tramas de información (I-frames): Transporte de datos, puede incluir información de control flujo y errores.
Tramas de supervisión (S-frames): Control de flujo y errores.
Tramas no numeradas (U-frames): Control de enlace, al inicio de la conexión generalmente.
Header¶
Flag (8 bits): Delimitador de trama
01111110
, bit stuffing si en los datos está este patrón.Address (8 bits o múltiplo de 8 bits): Identifica la estación secundaria, si son todos unos se trata de broadcast. Si el primer bit es un cero, significa que la dirección continúa en los siguientes 8 bits, se puede extender múltiples veces. Por culpa de ese bit, las direcciones tienen un múltiplo de 7 bits.
Control (8 o 16 bits): Identifica tipo de trama.
Tipo (16 bits): Sólo presente en Cisco HDLC, indica el protocolo encapsulado.
Information (variable): Datos (IP). Sólo presente en tramas de información.
FCS (16 o 32 bits): CRC.
Flag (8 bits): El mismo delimitador de trama.
Control¶
Los tamaños en bits dependen del tipo de trama y de si se usa control de 8 o 16 bits, cuando se usan 16 bits las secuencias son de 6 bits en vez de 3 bits:
Información (8 o 16 bits):
0
(1 bit).N(S) (3 o 6 bits): Secuencia de envío.
P/F (1 bit): Poll/Final bit.
N(R) (3 o 6 bits): Secuencia de recepción.
Supervisión (8 o 16 bits):
10
(2 bits).S (2 bits): Opción de supervisión.
Padding (0 o 4 bits): Padding en el caso que se use control de 16 bits.
P/F (1 bit): Poll/Final bit.
N(R) (3 o 6 bits): Secuencia de recepción.
No numeradas (8 bits):
11
(2 bits).S (2 bits): Opción no numerada
P/F (1 bit): Poll/Final bit.
M (3 bits): Opción no numerada.
El significado del Poll/Final bit depende del contexto:
En tramas de órdenes solicita respuesta.
En tramas de respuesta indica respuesta a una solicitud o final de transmisión.
Fases de operación¶
Inicialización.
Transferencia de datos.
Desconexión.
Bit stuffing¶
Se necesita porque el delimitador de trama tiene 6 unos seguidos, y se necesita un sistema para impedir que esa secuencia ocurra en los datos.
Al enviar, si hay 5 unos seguidos se inserta un cero.
Al recibir, si recibe 5 unos seguidos mira el sexto bit:
Si es un cero, se trata de datos, entonces borra el cero.
Si es uno miro el séptimo bit:
Si es un cero se trata de un delimitador.
Si es un uno hubo algún error.