5. Detección de errores

5.2. Internet Checksum

Veamos algunas técnicas que utilizan el siguiente principio.

 Figura 1

Generalmente, para un bloque de datos de k bits, el algoritmo de detección de errores utiliza un código de n-k bits, siendo (n - k) < k. El código de detección de errores, también llamado bits de comprobación, se añade al bloque de datos para generar la trama de n bits de longitud, la cual será posteriormente transmitida. Ver que aquí hay  bits que NO SON DATOS, esto se conoce con el término de overhead,  y apunta a los bits que no son propiamente datos pero que forman parte de la trama para conseguir que los datos puedan convertirse en información, en otras palabras un exceso necesario.

El receptor separará la trama recibida en los k bits de datos y los (n-k) bits correspondientes al código de detección de errores. El receptor realizará el mismo cálculo sobre los bits de datos recibidos y comparará el resultado con los bits recibidos en el código de detección de
errores. Se detectará un error si, y solamente si, los dos resultados mencionados no coinciden.

Por tanto, P3 es la probabilidad de que la trama contenga errores y el sistema los detecte. P2 se denomina tasa de error residual y se define como la probabilidad de que no se detecte un error aunque se esté usando un esquema de detección de errores (Error indetectable) .

Generalmente, para un bloque de datos de k bits, el algoritmo de detección de errores utiliza un código de n-k bits, siendo (n - k) < k. El código de detección de errores, también llamado bits de comprobación, se añade al bloque de datos para generar la trama de n bits de longitud, la cual será posteriormente transmitida. Ver que aquí hay  bits que NO SON DATOS, esto se conoce con el término de overhead,  y apunta a los bits que no son propiamente datos pero que forman parte de la trama para conseguir que los datos puedan convertirse en información, en otras palabras un exceso necesario.

El receptor separará la trama recibida en los k bits de datos y los (n-k) bits correspondientes al código de detección de errores. El receptor realizará el mismo cálculo sobre los bits de datos recibidos y comparará el resultado con los bits recibidos en el código de detección de
errores. Se detectará un error si, y solamente si, los dos resultados mencionados no coinciden.

Por tanto, P3 es la probabilidad de que la trama contenga errores y el sistema los detecte. P2 se denomina tasa de error residual y se define como la probabilidad de que no se detecte un error aunque se esté usando un esquema de detección de errores (Error indetectable) .

Uno de los códigos para la detección de errores más habitual y más potente son los de comprobación de redundancia cíclica (CRC, Cyclic Redundancy Check), que se pueden explicar de la siguiente manera.

Dado un bloque o mensaje de k-bits, el transmisor genera una secuencia de (n-k) bits, denominada secuencia de comprobación de la trama (FCS, Frame Check Sequence), de tal manera que la trama resultante, con n bits, sea divisible por algún número predeterminado.  

 Figura 1

El receptor dividirá la trama recibida entre ese número y si no hay resto en la división, supondrá que no ha habido errores. 

Para explicar el por que vamos a asumir que podemos representar una secuencia de bits como un polinomio, por ejemplo:

 Figura 2

En el sistema numérico binario, multiplicar algo por 2z no hace mas que desplazar el contenido en z ceros a la izquierda.

Ejemplo: 22*7= 28, en el sistema binario: 7:111 y 28:11100 , vemo que se desplaza 2 ceros a la izquierda.

En ese caso:

 => el orden de R es menor que P, Q es la parte entera de la división. RTx es el FCS que es lo se transmite luego del mensaje de orden n-k.

Donde n es el orden de la trama de datos y k el orden del polinomio divisor. Así que 2n-k , desplaza los datos hacia la izquierda, para poder sumar en los últimos n-k ceros al resto. Notemos que n-k es al menos un orden menor que el orden de P, si no fuera así se podría seguir dividiendo.

Entonces la trama Transmitida es:

   

En extremo del Receptor :

   

Si realizamos la misma Operación  de dividir por P.

 

En el caso de que R y R'  sean iguales, si se suman con una XOR daría cero, esto indicaría que el Q sobre el que se calculó el cociente es el mismo y el mensaje llegó sin errores.

El polinomio expresado en la Figura 2, de manera general se puede escribir como:

 Figura 3 

Donde Ai vale 1 para el primer y último termino, y los valores intermedios pueden estar o no presentes dependiendo si son 1 o 0. Este es el polinomio utilizado para dividir y la división se puede realizar con un circuito de compuertas y registros de desplazamientos de manera que cuando vaya ingresando el Mensaje con los datos se pueda ir calculando el FCS y al finalizar se "acopla" al tren de bits del mensaje el del FCS.

 Figura 4

Se deja al alumno interpretar el siguiente caso para el polinomio: X5 + X4 + X2 + 1  => 110100 serían los coeficientes del Polinomio. 

La secuencia a transmitir es: 1010001101. En nuestro caso el orden de Mensaje es: 9. El orden del Polinomio es 5. El largo de la Trama será : 9+(5-1)=14.

Si personalizamos el circuito genérico para nuestro polinomio quedaría:

 Figura 5

   Figura 6