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

 

Control de información

 

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).