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