DETECCIÓN DE ERRORES.
Los mecanismos de detección de errores se basan en la inclusión de información
redundante en la trama, es decir, una serie de bits adicionales que representan de algún
modo el contenido del mensaje transmitido, y que se envían conjuntamente con el
propio mensaje. Aunque ningún método puede asegurar al cien por cien la detección de
todos los errores que se pueden producir, un método muy efectivo podría ser la
retransmisión de la trama una o varias veces, para ser comparada. Incluso se podrían
corregir los errores detectados mediante la comparación de un número impar de
transmisiones de la misma trama. Esto, lógicamente, reduce enormemente la capacidad
del enlace, por lo que se buscan otras técnicas que mantengan unas buenas prestaciones
pero con una cantidad menor de información redundante.
Paridad horizontal y vertical.
Un mecanismo de paridad horizontal, como el utilizado en las transmisiones
asíncronas, consiste en añadir a un grupo de bits de datos (entre 5 y 8), un bit más con
valor 0 ó 1 según corresponda para que el número de bits 1 total sea par (paridad par) o
impar (paridad impar). Así por ejemplo, si se trabaja con paridad impar, el dato
“0100001” se transforma en el “01000011” porque se necesita el último 1 para que el
byte tenga un número impar de unos. Por el contrario, si trabajásemos con paridad par el
resultado sería “01000010”.
Mediante este método se pueden detectar todos los errores de un único bit en el grupo. Sin embargo, la probabilidad de detectar un error que afecte a varios bits es sólo 0.5, lo que no es mucho. En concreto, la paridad puede detectar únicamente errores que afectan a un número impar de bits.
La detección de errores se puede mejorar considerablemente añadiendo a cada grupo de Q caracteres que se envían sucesivamente, uno más que contenga bits de paridad para los bits que ocupan la misma posición en los Q caracteres transmitidos. A esto se le conoce como paridad vertical.
Este método combinado es capaz de detectar todos los errores de 1, 2 ó 3 bits en el bloque, todos los errores con un número impar de bits erróneos y algunos con número par, ya que por ejemplo, no detectaría un error de cuatro bits como el señalado con las “X” en la figura. Detectará también todas las ráfagas de bits erróneos de longitud igual o inferior a 8.
Chequeo por suma: checksum.
El emisor de la trama realiza la suma de los bytes o caracteres a transmitir en todos o en determinados campos de la trama. Esta suma realizada habitualmente en módulo 256 ó 65536, generará 8 ó 16 bits respectivamente de información para el control de errores, que se añadirán al final de la trama o del campo que se supervisa. Generalmente, si el tamaño del bloque a comprobar es suficientemente largo, el byte extra resulta insignificante comparado con el margen adicional de seguridad que se logra.
Substituye generalmente al método de paridad horizontal proporcionando un nivel de detección de errores similar. Esta técnica detecta errores de 2 bits en una fila o dos filas, pero falla en la detección de un número par de bits erróneos en una columna. También es importante señalar que esta técnica no es capaz de detectar errores de secuencia: es decir, se produce una suma idéntica cuando el mensaje se envía en cualquier otro orden al azar.
Mediante este método se pueden detectar todos los errores de un único bit en el grupo. Sin embargo, la probabilidad de detectar un error que afecte a varios bits es sólo 0.5, lo que no es mucho. En concreto, la paridad puede detectar únicamente errores que afectan a un número impar de bits.
La detección de errores se puede mejorar considerablemente añadiendo a cada grupo de Q caracteres que se envían sucesivamente, uno más que contenga bits de paridad para los bits que ocupan la misma posición en los Q caracteres transmitidos. A esto se le conoce como paridad vertical.
Este método combinado es capaz de detectar todos los errores de 1, 2 ó 3 bits en el bloque, todos los errores con un número impar de bits erróneos y algunos con número par, ya que por ejemplo, no detectaría un error de cuatro bits como el señalado con las “X” en la figura. Detectará también todas las ráfagas de bits erróneos de longitud igual o inferior a 8.
Chequeo por suma: checksum.
El emisor de la trama realiza la suma de los bytes o caracteres a transmitir en todos o en determinados campos de la trama. Esta suma realizada habitualmente en módulo 256 ó 65536, generará 8 ó 16 bits respectivamente de información para el control de errores, que se añadirán al final de la trama o del campo que se supervisa. Generalmente, si el tamaño del bloque a comprobar es suficientemente largo, el byte extra resulta insignificante comparado con el margen adicional de seguridad que se logra.
Substituye generalmente al método de paridad horizontal proporcionando un nivel de detección de errores similar. Esta técnica detecta errores de 2 bits en una fila o dos filas, pero falla en la detección de un número par de bits erróneos en una columna. También es importante señalar que esta técnica no es capaz de detectar errores de secuencia: es decir, se produce una suma idéntica cuando el mensaje se envía en cualquier otro orden al azar.
Códigos de redundancia cíclica (CRC).
El uso del código polinomial, más conocido como redundancia cíclica (CRC), está muy
extendido. Proporciona una buena detección de errores con poca información
redundante adicional. Normalmente se le añaden a la trama 16 ó 32 bits de información
para la detección de errores mediante el CRC.
El método consiste básicamente en que el emisor trata la información a transmitir como
una cadena de bits, y la convierte en un polinomio binario (donde los valores de los
coeficientes son cero o uno). Este polinomio binario se multiplica por el grado del
polinomio generador que es conocido tanto por el emisor como por el receptor, y
posteriormente se divide por él en modulo 2 (no se llevan acarreos en la suma ni la
división), generándose un resto de grado una unidad inferior al polinomio generador.
Los coeficientes (ceros o unos) de este resto se añaden a la trama como código de
detección de errores. Un polinomio generador de orden Q generará un código de Q bits.
El receptor tratará a toda la trama como un polinomio (información y código de
detección de errores conjuntamente) y lo dividirá en módulo dos por el mismo
polinomio generador que uso el emisor. Si el resto de la división es cero, no se habrán
detectado errores en la transmisión.
El ejemplo anterior muestra el proceso en el emisor utilizando un polinomio generador
de orden 4 que genera un código de detección de errores de 4 bits. Se puede comprobar
que el polinomio correspondiente a la trama transmitida es divisible por el polinomio
generador utilizado en el método anterior y que, por lo tanto, la transmisión estará libre
de errores si, al hacer la división el receptor, el resto obtenido es cero.
No hay comentarios.:
Publicar un comentario