5. Detección de errores

5.2. Internet Checksum

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 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 

Entonces la trama enviada es:

   

En extremo del Receptor :

   

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

 

En el caso de que R y R'  sean igualesm, 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