Errores

Las redes deben ser capaces de transferir datos de un dispositivo a otro con total exactitud, si los datos recibidos no son idénticos a los emitidos, el sistema de comunicación es inútil. Sin embargo, siempre que se transmiten de un origen a un destino, se pueden corromper por el camino. Los sistemas de comunicación deben tener mecanismos para detectar y corregir errores que alteren los datos recibidos debido a múltiples factores de la transmisión.
La detección y corrección de errores se implementa bien en el nivel de enlace de datos o bien en el nivel de transporte del modelo OSI.

Detección 


Se conocen el tipo de errores que pueden existir, el problema es ser capaz de reconocerlos, dado que no se puede comparar el dato recibido con el original, sólo se podría saber que ha habido un error cuando se descodifique todo el mensaje y se vea que no tiene sentido. Sin embargo existen determinadas técnicas sencillas y objetivas para detectar los errores producidos en la transmisión:

Redundancia

La redundancia consiste en enviar dos veces cada unidad de datos, de forma que el dispositivo receptor puede hacer una comparación bit a bit entre ambos datos y detectar si ha habido errores, para corregirlos con el mecanismo apropiado. Esta técnica es muy exacta pero enlentece la transmisión.
Sin embargo el concepto es aplicable añadiendo al flujo de datos un grupo pequeño de bits al final de cada unidad, siendo estos bits redundantes con una parte de la información, esos bits redundantes se descartan una vez comprobada la integridad de la transmisión.
En las comunicaciones de datos se usan cuatro tipos de comprobación de redundancia: verificación de redundancia vertical (VRC, Vertical Redundancy Check) conocida como verificación de paridad, verificación de redundancia longitudinal (LRC longitudinal Redundancy Check), verificación de redundancia cíclica (CRC Cyclic Redundandy Check) y suma de comprobación (Checksum). Las tres primeras se implementan habitualmente en el nivel físico para que pueda usarlo en nivel de enlace de datos, mientras que la suma de comprobación se usa en los niveles más altos.

Corrección de errores 

 

Los mecanismos explicados detectan errores pero no los corrigen. La corrección del error se puede conseguir de dos formas, en la primera, cuando de descubre un error el receptor puede pedir al emisor que retransmita toda la unidad de datos, con la segunda, el receptor puede usar un código de corrección de errores que corrija automáticamente determinados errores. En teoría es posible corregir automáticamente cualquier error en un código binario, sin embargo los códigos de corrección son más sofisticados que los de detección y necesitan mas bits de redundancia, el número de bits necesarios es tan alto que su uso no es eficiente, por esa razón la mayoría de la corrección se limita a errores de tres bits o menos.

Corrección de errores de un único bit.

El concepto de la corrección de errores se puede comprender con el caso más sencillo: el error de un único bit. Un error de un bit supone que un bit ha cambiado de un 0 a un 1 o de un 1 a un 0, para corregir el error, el receptor sólo tiene que invertir el valor del bit alterado, sin embargo, para hacer eso, el receptor debe saber en qué bit está el error, por lo que el secreto de la corrección de errores es localizar el bit o bits inválidos. La cuestión es el uso de los bits de redundancia para la corrección. Ahora bien ¿cuantos bits de redundancia usar?
Para calculas el número de bits de redundancia r necesarios para corregir un número de bits de datos m, es necesario encontrar una relación entre m y r.
Si a m de datos bits se le añaden r bits de redundancia, la unidad transmitida es m+r, los bits de redundancia r deben ser capaces de indicar todas las posibilidades de error de 1 bit posibles, incluyendo el no error, que en m+r bits es de m+r+1 posibilidades (no error, error en bit0, error en bit 1, etc), por ello r debe ser capaz de indicar todas esos estados. Dado que los r bits pueden representar 2r estados, entonces r debe ser tal que 2r m + r + 1. 

Código Hamming

 

Se pueden utilizar los bits de redundancia para corregir errores, pero ¿cómo se manipulan esos bits para descubrir en qué posición se ha producido el error? R. W. Hamming desarrolló una técnica que proporciona una solución práctica. El código Hamming se puede aplicar a unidades de datos de cualquier longitud y usa la relación de bits de datos y de redundancia. En el código cada bit r es el bit de VRC (redundancia vertical) para una combinación de bits de datos. Por ejemplo, un dato de 7 bits necesita 4 bits de redundancia, los colocaremos en las posiciones 1, 2, 4 y 8, con lo que la secuencia transmitida es la que indica la figura.

Detección y corrección

El receptor recibe la transmisión, toma los datos y recalcula cuatro nuevos VRC usando el mismo conjunto de bits usados en el cálculo en el emisor, a continuación reensambla los nuevos valores de paridad siguiendo el orden de la posición (r8, r4, r2, r1) la cifra resultante indica si ha habido error y en qué bit se ha producido. Si el resultado es 0000 no ha habido error, cualquier otro resultado indica error y bit erróneo. Una vez identificado el bit erróneo, el receptor puede cambiar el valor de ese bit para corregir el error.

No hay comentarios:

Publicar un comentario