domingo, 29 de septiembre de 2013

DETECCIÓN DE ERRORES

¿Cómo puede saber el receptor que ha recibido el mismo mensaje que envió el emisor? ¿Cómo puede saber que no se ha producido ningún error que haya alterado los datos durante la transmisión? 
Se necesitan mecanismos de detección de errores para garantizar transmisiones libres de errores. Si el receptor detecta algún error, puede actuar de diversas maneras según los protocolos que esté utilizando. La solución más sencilla es enviarle un mensaje al emisor pidiéndole que le reenvíe de nuevo la información que llegó defectuosa.

Los mecanismos de detección se basan en añadir a las transmisiones una serie de bits adicionales, denominados bits de redundancia. La redundancia es aquella parte del mensaje que sería innecesaria en ausencia de errores (es decir, no aporta información nueva: sólo permite detectar errores). Algunos métodos incorporan una redundancia capaz de corregir errores. Estos son los mecanismos de detección y corrección de errores.
Como ejemplos de mecanismos de detección de errores vamos a estudiar a continuación la paridad y los códigos CRC.

Paridad

Las transmisiones se dividen en palabras de cierto número de bits (por ejemplo, 8 bits) y se envían secuencialmente. A cada una de estas palabras se le añade un único bit de redundancia (bit de paridad) de tal forma que la suma de todos los bits de la palabra sea siempre un número par (paridad par) o impar (paridad impar).
El emisor envía las palabras añadiendo los correspondientes bits de paridad. El receptor comprobará a su llegada que la suma de los bits de la palabra incluyendo la redundancia es un número par (si la codificación convenida entre emisor-receptor es de paridad par) o un número impar (paridad impar). Si el receptor encuentra alguna palabra que no se ajuste a la codificación establecida, le solicitará al emisor que le reenvíe de nuevo la información.
La paridad únicamente permite detectar errores simples, esto es, que varíe un único bit en cada palabra. Si varían 2 bits, este mecanismo no es capaz de detectar el error.
Veamos un ejemplo de paridad par:
 

Datos(8 bits)Datos + redundacia(9 bits)Suma de bits
101101101011011016
001010010010100114
110010011100100104
111110101111101006
000100000001000012

El receptor realizará la suma de bits a la llegada del mensaje. Si alguna palabra no suma un número par, significará que se ha producido un error durante la transmisión.

CRC

Los códigos de paridad tienen el inconveniente de que se requiere demasiada redundancia para detectar únicamente errores simples. En el ejemplo que hemos visto, sólo un 8/9 de la información transmitida contenían datos, el resto era redundancia. Los códigos de redundancia cíclica (CRC) son muy utilizados en la práctica para la detección de errores en largas secuencias de datos. Se basan en representar las cadenas de datos como polinomios. El emisor realiza ciertas operaciones matemáticas antes de enviar los datos. El receptor realizará,  a la llegada de la transmisión, una división entre un polinomio convenido (polinomio generador). Si el resto es cero, la transmisión ha sido correcta. Si el resto es distinto significará que se han producido errores y solicitará la retransmisión al emisor.

No hay comentarios:

Publicar un comentario