Comunicación Sincrónica
La comunicación asincrónica es buena para
transferir bajos volúmenes de datos, pero si se usa para transferir grandes
volúmenes se tendría:
-
“transmission
overhead” donde cada byte requiere posiblemente varios “control bits” (start bit,
stop bit, parity bit)
-
problemas
en la detección y corrección de errores, pues solo el parity bit se usa para
detectar errores
Para grandes volúmenes de datos, se usa la comunicación
sincrónica, pues:
-
minimiza
el “transmission overhead” reduciendo la cantidad de información de control que
se envía con cada mensaje
-
maneja
mejor la detección y corrección de errores
Para reducir el “transmission overhead” se delimita el frame de datos con un byte especial que es un indicador de comienzo del mensaje (start-of-message indicator) y un indicador del final del mensaje (end-of-message indicator). Existen tres formas en que se limita el mensaje:
ð Fixed message size – todos los mensajes tienen el mismo número de bytes. Tiene como dificultad o problema que si el mensaje tiene menos bytes, debe ser llenado con bytes extra para que sea igual al número de bytes especificado.
ð Byte count – el transmisor envía al receptor un byte que contiene un contador con el número de bytes en el mensaje. Problema: si el byte count es incorrecto (por ejemplo por noise), el receptor recibirá mayor o menor cantidad de bytes y el mensaje estará incorrecto.
ð Indicador especial de fin de mensaje – se envía después del último byte de datos. Una vez se detecta ese indicador, el DTE receptor termina de recibir.
Se puede usar una combinación de estas formas de limitar un mensaje para asegurar que el mismo no se pierda o esté incorrecto.
Sincronización y tiempo (Timing and Sincronization)
Las siguientes técnicas permiten transmitir un frame de data pura y mantener ambos DTE sincronizados:
1. Secuencias especiales de sincronización – Son caracteres enviados a través del frame. Estos caracteres son detectados por el DTE que recibe, quien puede realinear su reloj de sincronización de cualquier desviación que haya ocurrido. Los frame son precedidos por la secuencia de sincronización para asegurar que los relojes sean alineados antes de comenzar la transmisión.
2. Canal de tiempo separado – Se transmite en dos canales; uno reservado para los bits de datos y el otro para la señal del reloj que mantiene la sincronización.
3. Codificar el tiempo en los datos – Se codifica la información del tiempo directamente en cada bit transmitido.
Detección de errores
Existen dos formas principales para detectar errores:
· Longitudinal redundancy check (LRC) – tipo de verificación de parity que se aplica a una columna de bits en el mensaje. El LRC se aplica a todo el mensaje, no a un solo bit.
· Cyclic redundancy check (CRC) – La entidad que transmite calcula la verificación de error usando data del mensaje, añade la verificación de error al final del mensaje y envía el mensaje y la verificación de error en un frame a la entidad que recibe. El receptor realiza los mismos cálculos en el mensaje y determina si el mensaje es válido examinando el resultado del cálculo. El CRC es atractivo porque ofrece una detección de errores bastante exacta a través del uso de la división de polinomios.
Recuperación de error (Error Recovery)
Cuando en la comunicación ocurre algún error, se puede utilizar una de las siguientes formas para recuperar el mensaje con error:
Backward Error Recovery
El DTE que recibe le pide al DTE que transmitió
el mensaje que retransmita el frame que tiene error. El DTE receptor descarta
el frame con error. El pedido (o request) de retransmisión se hace a través de
una técnica conocida como automatic repeat request (ARQ). Los siguientes
protocolos usan ARQ:
a. Stop-and-Wait protocol – requiere
que la entidad transmisora envíe un frame a la vez y espere una respuesta del
receptor. Esta respuesta (acknowledgment) indica si el mensaje fue recibido
correctamente. Si se recibió correctamente, se envía un acknowledgment positivo
(ACK), y el DTE transmisor envía el próximo mensaje. Si no se recibió
correctamente, el receptor responde con un acknowledgment negativo (NAK),
requiriendo que el transmisor retransmita el frame original. El ciclo de
transmitir, esperar, retransmitir o transmitir el próximo mensaje continúa
mientras queden mensajes por enviar. Para evitar que un transmisor se pueda
quedar esperando una respuesta, se limita el tiempo que el transmisor espera.
Si no hay respuesta, se retransmite el frame. Para evitar que se duplique un
frame, se envía una identificación con cada mensaje, que sea única para cada
frame, llamado número de secuencia.
b. Go-back-N – Se usa en canales
full-duplex, donde se transmite el mensaje y la respuesta a la vez. Para
asegurar que la respuesta corresponda al mensaje correcto, se transmite una
identificación con la respuesta, que indica el número de secuencia del próximo
frame a recibir.
Tanto el DTE que transmite como el que recibe deben mantener suficiente información para determinar el estado de la comunicación (ejemplo, el número del próximo frame a transmitir o recibir). Esta información es representada como variables de estado:
-
VS
– (send state variable) – es el número en secuencia del próximo frame a
transmitir. Normalmente su valor inicial es 0. Se incrementa según se transmite
cada nuevo frame.
-
VR
– (received state variable) – es el número en secuencia del próximo frame
esperado por el receptor. Su valor inicial es idéntico al VS (ej. 0). Al
recibir un frame con un número igual al VR, el VR se incrementa por uno.
-
NS
– (send sequence number) – En el frame, se hace referencia al número de
secuencia que se envía con send sequence number.
-
NR
– (received sequence number) – En el acknowledgment (respuesta), el número de
secuencia que se le añade (NR) es el valor del VR después de que el frame ha
sido aceptado por el receptor.
El protocolo Go-back-N ofrece más flexibilidad e información útil transferida que el Stop-and-wait. Sin embargo, Go-back-N tiene el problema de que cuando un frame es recibido con error o fuera de secuencia, todos los frames que se han recibido después de ese son descartados hasta que el frame correcto se retransmita. Para evitar esto, se usa la retransmisión selectiva (selective retransmission), que es una técnica en donde solo el frame que no ha sido recibido correctamente es retransmitido.
Forward Error Recovery
El DTE que recibe tiene la capacidad de
detectar y, si es posible, corregir cualquier error encontrado en el frame. Se
requiere que el DTE transmisor envíe la suficiente información en el frame para
permitir que el DTE receptor corrija los errores detectados.
Uno de los códigos para corregir errores se
llama Hamming Code. En este código, el frame consiste de dos tipos de bit:
datos (obtenido de los datos que se transmiten) y parity (generados por los
bits de datos guardados en el frame).