Deteccion De Errores
Enviado por carlos1578 • 17 de Mayo de 2012 • 1.557 Palabras (7 Páginas) • 374 Visitas
Introducción
La comunicación entre varias computadoras produce continuamente un movimiento de datos, generalmente por canales no diseñados para este propósito (línea telefónica), y que introducen un ruido externo que produce errores en la transmisión.
Por lo tanto, debemos asegurarnos que si dicho movimiento causa errores, éstos puedan ser detectados. El método para detectar y corregir errores es incluir en los bloques de datos transmitidos bits adicionales denominados redundancia.
Se han desarrollado dos estrategias básicas para manejar los errores:
• Incluir suficiente información redundante en cada bloque de datos para que se puedan detectar y corregir los bits erróneos. Se utilizan códigos de corrección de errores.
• Incluir sólo la información redundante necesaria en cada bloque de datos para detectar los errores. En este caso el número de bits de redundancia es menor. Se utilizan códigos de detección de errores.
Si consideramos un bloque de datos formado por m bits de datos y r de redundancia, la longitud final del bloque será n, donde n = m + r.
Tipo de códigos detectores
Paridad simple (paridad horizontal)
Consiste en añadir un bit de más a la cadena que queremos enviar, y que nos indicará si el número de unos (bits puestos a 1) es par o es impar. Si es par incluiremos este bit con el valor = 0, y si no es así, lo incluiremos con valor = 1.
Ejemplo de generación de un bit de paridad simple:
Queremos enviar la cadena “1110100”:
1º Contamos la cantidad de unos que hay: 4 unos
2º El número de unos es par por tanto añadimos un bit con valor = 0
3º La cadena enviada es 11101000
El receptor ahora, repite la operación de contar la cantidad de “unos” que hay (menos el último bit) y si coincide, es que no ha habido error.
Problemas de este método:
Hay una alta probabilidad de que se cuelen casos en los que ha habido error, y que el error no sea detectado, como ocurre si se cambian dos números en la transmisión en vez de uno.
Paridad cruzada (paridad horizontal-vertical)
Para mejorar un poco el método anterior, se realiza una paridad que afecte tanto a los bits de cada cadena o palabra como a un conjunto de todos ellos. Siempre se utilizan cadenas relativamente cortas para evitar que se cuelen muchos errores.
Para ver más claro este método, se suelen agrupar los bits en una matriz de N filas por K columnas, luego se realizan todas las paridades horizontales por el método anterior, y por último, se hace las misma operación de calcular el número de unos, pero ahora de cada columna.
La probabilidad de encontrar un solo error es la misma, pero en cambio, la probabilidad de encontrar un número par errores ya no es cero, como en el caso anterior. Aun así, existen todavía una gran cantidad de errores no detectables
Un ejemplo de paridad cruzada (o de código geométrico)
1º Tenemos este código para transmitir: 1100101111010110010111010110
2º Agrupamos el código en cada una de las palabras, formando una matriz de N x K:
1100101
1110101
1001011
1010110
3º Añadimos los bits de paridad horizontal:
1100101 0
1110101 1
1001011 0
1010110 0
4º Añadimos los bits de paridad vertical:
1100101 0
1110101 1
1001011 0
1010110 0
0001101 1
Una vez creada la matriz, podemos enviar ésta por filas, o por columnas. Enviando las palabras por columnas aumentamos la posibilidad de corregir una palabra que haya sufrido un error de ráfaga (errores que afectan a varios bits consecutivos, debidos a causas generalmente electrónicas, como chispazos, y que harían que se perdiera toda una palabra completa).
Códigos de redundancia cíclica también llamados CRC
Intentando mejorar los códigos que sólo controlan la paridad de bit, aparecen los códigos cíclicos. Estos códigos utilizan la aritmética modular para detectar una mayor cantidad de errores, se usan operaciones en módulo 2 y las sumas y restas se realizan sin acarreo (convirtiéndose en operaciones de tipo Or-Exclusivo o XOR). Además, para facilitar los cálculos se trabaja, aunque sólo teóricamente, con polinomios.
La finalidad de este método es crear una parte de redundancia la cual se añade al final del código a transmitir (como en los métodos de paridad) que siendo la más pequeña posible, detecte el mayor número de errores que sea posible.
Pero además de esto, debe ser un método sistemático, es decir, que con un mismo código a transmitir (y un mismo polinomio generador) se genere siempre el mismo código final.
El polinomio generador: es un polinomio elegido previamente y que tiene como propiedad minimizar la redundancia. Suele tener una longitud de 16 bits, para mensajes de 128 bytes, lo que indica que la eficiencia es buena. Ya que sólo incrementa la longitud en un aproximado 1,6%:
(16bits / (128bytes * 8bitsporbyte)) * 100 = 1,5625
Un ejemplo de polinomio generador usado normalmente en las redes WAN es: g(x) = x16 + x12 + x5 + 1
Los cálculos que realiza el equipo transmisor para calcular su CRC son:
...