2. Detección de errores.
Tipos de errores:
Error de bit.
Error de ráfaga.
A mayor velocidad de transmisión, un mismo error
afecta a mas bits; un ruido de 1/100 segundos
puede afectar:
○ Si se transmite a 1Kbps, a 10 bits.
○ Si se transmite a 1Mbps, a 10000 bits.
Los errores de bits son improbables.
En una transmisión de 1Mbps.
1 bit dura 1/1.000.000 = 1μs.
3. Detección y corrección de
errores.
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.
4. Método de comprobación:
Verificación de redundancia
cíclica. (CRC).
Esta técnica se basa en la división binaria.
En esta técnica, se añaden bits redundantes en la unidad de datos de
forma que todo el conjunto sea divisible exactamente por un número
binario determinado, en el destino los datos recibidos son divididos por ese
mismo número, si en ese caso no hay resto de la operación, el dato es
aceptado, si apareciera un resto de la división, el dato se entendería que
se ha corrompido y se rechazará.
La técnica añade unos bits de CRC, de la siguiente manera en tres pasos
básicos:
en primer lugar se añade una tira de n ceros, siendo n el número
inmediatamente menor al número de bits del divisor predefinido (que
tiene n+1 bits),
el segundo paso es dividir la nueva unidad de datos por el divisor
predefinido usando un proceso de división binaria, el resto que
quedara sería los bits de CRC a añadir,
el tercer paso es sustituir los n bits añadidos en el paso primero por los
n bits del resto de la operación del segundo paso, el dato final será
divisible exactamente por el divisor predefinido.
5. Sumas de comprobación.
Los dígitos de las cadenas de bits son considerados
como los coeficientes de un polinomio en algunas
variables x/coeficientes, que son elementos del campo
finito binario en lugar de los números decimales. Este
polinomio forma unas cadenas de bits que pueden
observarse como elementos de un anillo. Un anillo es,
hablando en términos generales, un conjunto de
elementos, es decir como los números que pueden ser
operados por una operación semejante pero no idéntica
a la de la suma y además alguna otra operación
semejante a la multiplicación, estas operaciones
poseen muchas de las propiedades de la aritmética
conmutatividad, asociativa, y distributiva.
7. Generador de suma de
comprobación.
En el emisor, el generador subdivide la
unidad de datos en segmentos iguales de n
bits (habitualmente n=16), estos segmentos
se suman usando una aritmética de
complemento a uno, de forma que la suma
sea también n bits, a continuación se
complementa la suma y ese dato
complementado se añade al final de la
unidad de datos original como bits de
redundancia, la unidad extendida se
transmite por la red.
8. Comprobador de suma de
comprobación.
El receptor subdivide las unidades de
datos en los mismos n bits, suma todos
los segmentos (incluidos los bits de
redundancia) y luego complementa el
resultado, si la unidad de datos está
intacta, el valor final que se obtiene es
nulo (n bits 0), si en resultado no es cero,
el paquete contiene un error y es
rechazado.
9. Métodos basados en el uso de
códigos de redundancia cíclica.
La verificación de redundancia cíclica consiste en la protección de los
datos en bloques, denominados tramas. A cada trama se le asigna un
segmento de datos denominado código de control (al que se denomina
a veces FCS, secuencia de verificación de trama, en el caso de una
secuencia de 32 bits, y que en ocasiones se identifica erróneamente
como CRC). El código CRC contiene datos redundantes con la trama,
de manera que los errores no sólo se pueden detectar sino que
además se pueden solucionar.
10. El concepto de CRC consiste en tratar a las secuencias binarias
como polinomios binarios, denotando polinomios cuyos
coeficientes se correspondan con la secuencia binaria. Por
ejemplo, la secuencia binaria 0110101001 se puede representar
como un polinomio, como se muestra a continuación:
0*X9 + 1*X8 + 1*X7 + 0*X6 + 1*X5 + 0*X4 + 1*X3 + 0*X2 + 0*X1 +
1*X0
Siendo
X8 + X7 + X5 + X3 + X0
O
X8 + X7 + X5 + X3 + 1
De esta manera, la secuencia de bits con menos peso (aquella que
se encuentra más a la derecha) representa el grado 0 del polinomio
(X0 = 1), (X0 = 1), (X0 = 1), el 4º bit de la derecha representa el
grado 3 del polinomio (X3), y así sucesivamente. Luego, una
secuencia de n- bits forma un polinomio de grado máximo n-1.
Todas las expresiones de polinomios se manipulan posteriormente
utilizando un módulo 2.
11. Especificaciones de un CRC.
El CRC se utiliza como una detección de errores de código, el cual tiene una serie de aplicaciones
usadas cuando se implementa mediante normas, convirtiéndolo así en un sistema práctico.
Estas son algunas de las aplicaciones:
Se usa un patrón de prefijos de bit para comprobar su autenticidad. Esto es útil cuando la
trama podría tener errores en los bits delante de un mensaje, una alteración que, de otro
modo dejaría sin cambios al CRC. A veces un envío agrega n bits (n es el tamaño de la CRC)
al mensaje que se debe controlar ya que se cogería un polinomio que no sería el correcto
para la división. Esto tiene la conveniencia de que el CRC del mensaje original con el CRC
adjunto es exactamente cero, por lo que el CRC se puede comprobar simplemente por la
división polinómica y comparando con el resto cero. A veces se realiza una implementación
del CRC con OR exclusivos en el resto de la división polinómica.
Orden de los bits: en ocasiones, el orden en el que se envían las tramas de datos no
corresponden exactamente con la posición que tendrán los bits en la división polinómica; es
decir, que puede que el primer bit enviado sea el de más peso o viceversa. Este convenio
tiene sentido cuando las tramas a enviar se envían por puertos series ya que el CRC es
comprobado por el hardware de cada máquina, y cada uno tendrá un convenio conjunto de
lectura y posicionamiento de paquetes para el envió a la capa siguiente.
Omisión del orden del bit de más peso del polinomio divisor: algunos escritores
proponen omitir esto, puesto que el bit mayor peso es siempre 1, y ya que el bit CRC debe
ser definido por un (n + 1) bits del divisor, es innecesario mencionar el divisor mayor peso en
el mensaje y en el CRC.
13. En este caso obtenemos el polinomio,
digamos g(x), asi:
18. 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 se 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.
19. 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?
20. 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.