2. Errores de Transmisión
• Origen:
Sucesos estáticos (Precedibles de antemano)
Efectos:
Distorsión de señal, pérdidas por atenuación
Corrección:
Ecualización, Cables especiales, Blindaje
Sucesos dinámicos (Impredecibles)
Relámpagos, CEM inducidos, manchas solares,
conmutación, diafonía, eco, etc.
SIN CORRECCION
3. Errores de Transmisión
• Es posible:
- Detectarlos: para solicitar la retransmi-
sión de datos. Esto se puede hacer a
varios niveles del modelo OSI.
- Corregirlos: A partir de redundancia en
los códigos. Esto se hace especial-
mente cuando la retransmisión de la
información es imposible.
4. Detección de Errores
• Bit de Paridad
- Transversal
- Longitudinal
- Combinado
• Chequeo de Redundancia Cíclico
(CRC - Cyclic Redundancy Check)
5. Bit de Paridad Transversal
Características:
• Paridad Par, Impar, Mark, Space.
• Detecta un número impar de cambio de
bits.
• Es muy vulnerable.
• Consume 10% del ancho de banda de
transmisión
6. Bit de Paridad Longitudinal
Características:
• Paridad Par o Impar
• Detecta un número impar de cambios
de bits.
• Es vulnerable, pero no tanto como el
transversal.
• Consume solo 1 byte más.
9. Cyclic Redundancy Check
• Se basa en generar un polinomio bi-
nario cuyos coeficientes son afectados
por la cadena de bits a transmitir.
• Para los cálculos se usa la aritmética
polinomial, que es módulo 2 de acuerdo
a la teoría de los campos algebraicos.
• No hay acarreo en las sumas ni présta-
mos en las restas (operador XOR).
10. Cyclic Redundancy Check
• El punto de origen es considerar la divi-
sión común de números binarios.
• Para esto como en cualquier división
tenemos un dividendo, un divisor, un
cociente y un resto.
• No nos interesa el cociente, sino el
resto, que como en todas las divisiones
es menor que el divisor.
11. Fundamentos de operación
Multiplicación de polinomios decimales:
(2x2 - 3x + 7) * (x + 2)
= 2x3 + 4x2 - 3x2 - 6x + 7x + 14
= 2x3 + x2 + x + 14
Así como multiplicamos, podemos dividir:
(2x3 + x2 + x + 14) / (x + 2) = 2x2 - 3x + 7
Si un polinomio no contiene exactamente al otro
queda un resto:
(x2 - 2x) / (x + 1) = (x - 3) + 3
13. Cyclic Redundancy Check
• El mensaje a transmitir consiste en el
mensaje original más el resto de la
división.
• CRC considera al dividendo y al divisor
como polinomios binarios, esto significa
que los coeficientes de las potencias de
X son 0 ó 1.
• Tenemos presencia o ausencia de tér-
minos en un polinomio binario.
14. Cyclic Redundancy Check
• El mensaje a transmitir es el polinomio
dividendo, el polinomio generador es el
divisor y el CRC transmitido es el resto.
• Mientras más grande es el polinomio
generador, mejor es la posibilidad de
detección.
• En la práctica se usan dos versiones de
CRC, de 16 y 32 bits, con polinomios ya
normalizados.
15. Cyclic Redundancy Check
• El CRC es una muy buena herramienta
para la detección de errores, pero no
para la integridad de datos.
• Por la estructura lineal de los polino-
mios CRC, es fácil generar cambios
intencionales sin que se modifique el
CRC.
• Para verificar integridad de datos se
usan funciones criptográficas.
16. Cálculo CRC
P / G = Q + R / G
Polinomio genera-
dor. Determina la
longitud del resto.
Mensaje (tratado
como un número
binario largo)
Cociente
(se descarta)
Resto, esto es lo
que se transmite
como CRC.
17. Cyclic Redundancy Check
• Para la ITU el polinomio generador es:
x16 + x12 + x5 + 1
en binario: 1 0001 0000 0010 0001
• Esto es conocido como CRC CCITT y
corresponde a la versión de 16 bits.
• El mensaje a transmitir se divide por es-
te polinomio y el resto de esta división
se adosa al final.
18. Cyclic Redundancy Check
• Otros generadores:
X25 standard : 1021
[CRC-CCITT, ADCCP, SDLC/HDLC]
X25 reversed : 0811
CRC16 standard : 8005
CRC16 reversed : 4003 [LHA]
CRC32 : 04C11DB7
[PKZIP, AUTODIN II, Ethernet, FDDI]
19. Cyclic Redundancy Check
• En destino se calcula el polinomio CRC
nuevamente usando el mismo polino-
mio generador.
• Si da el mismo resultado consideramos
que el mensaje llegó sin errores.
• Es más común efectuar el cálculo en
destino del CRC de toda la cadena, es-
to es, mensaje original más código CRC
de origen, comprobación que debe dar
0.
20. Usos de CRC
• CRC es uno de los protocolos de detec-
cción de errores más difundidos en
nuestros días.
• Esto se debe a su bajo volumen de da-
tos agregados y fiabilidad.
• CRC no solo es dependiente de la lon-
gitud del polinomio divisor, sino que ma-
temáticamente se demuestra que su
poder de detección es mayor para
determinados polinomios.
21. Efectividad de CRC
• Detecta el 100% de los errores si la
cantidad de estos es menor al grado del
polinomio generador.
• Para la longitudes más comunes de
paquetes o mensajes, tenemos que:
– CRC-16 detecta el 99.9984 %
– CRC-32 detecta el 99.9999 %
22.
23. Cyclic Redundancy Check
• La división por aritmética polinomial en
base 2 resulta sencilla ya que solo se
necesita utilizar registros de desplaza-
miento y operaciones XOR.
• Se puede realizar por hardware, con cir-
cuitos simples destinados al efecto.
• Actualmente es más común realizarla
por software, estas rutinas forman parte
de la mayoría de los sistemas de trans-
misión modernos.
24. Cyclic Redundancy Check
• División realizada por hardware:
• Las 16 posiciones de registro (original-
mente 0) son las que se van a transmi-
tir.
• Los bits ingresan por b y una vez que el
mensaje pasa completo queda el CRC.
25. Aritmética módulo 2
No existe acarreo ni préstamo, las operaciones son:
La resta resulta igual a la suma:
Esto es XOR
26. Aritmética módulo 2
• La división es una resta reiterativa del
divisor en relación al dividendo, por lo
que en módulo 2 podemos utilizar XOR
para la división (o sea la resta repetida).
• Esto simplifica enormemente la ejecu-
ción de una división binaria y mediante
este mecanismo, con el agregado de
tantos ceros al final del mensaje como
bits tiene el CRC, se calcula el resto
(que es el CRC).
27. Método
1. Si r es el grado del polinomio genera-
dor, agregar r bits al final del polino-
mio dato M(x), que ahora contiene
m+r bits y se convierte en: xr * M(x).
2. Dividir xr * M(x) entre G(x) usando
división módulo 2.
3. Obtener el resto (que siempre es r o
menos bits) de la cadena correspon-
diente a xr * M(x) usando sustracción
módulo 2.
30. Distancia Mínima
• Para poder detectar errores, el código
debe tener una distancia mínima supe-
rior a uno ya que si la nueva palabra
generada a partir de un error pertenece
al código no hay detección posible.
• Esto se debe a que las diferentes pala-
bras formadas a partir de los errores de
un bit NO deben constituir otro código
válido.
32. Distancia Mínima
• El nuevo código, es decir,
las palabras legales del
nuevo código son las que
están a la derecha.
• Tomando la palabra: 1001
A partir de un error 0001
de un solo bit ten- 1101
dríamos: 1011
1000
33. Distancia Mínima
• De lo anterior se deduce que para de-
tectar errores de un bit cada palabra
legal de n bits deberá estar rodeada de
n palabras ilegales que son las combi-
naciones a las que se llega con un solo
cambio.
• También se deduce que para detectar
errores de m bits, un código deberá
tener una distancia mínima: m+1.
34. Distancia Mínima
• Si la palabra original tiene n bits, estará
rodeada por n x m palabras ilegales
adyacentes.
• De esta manera producido el error se
está en condiciones de determinar de
dónde provino para poder hacer la co-
rrección.