Mètodos+de+Detecciòn+de+Errores

1. **INTRODUCCIÓN** El método de detección de errores permite al receptor conocer si los datos han sido recibidos o han sufrido algún error durante la transmisión, aunque no permita restarar los datos. La idea es añadir una cierta información redundante para que el receptor pueda conocer este hecho. En general cuanto mayor es la cantidad de información, es mayor es el número de errores que pueden ser detectados. La codificación binaria  es de gran utilidad práctica en dispositivos electrónicos como ordenadores, donde la información se puede codificar basándose en la presencia o no de una señal eléctrica, sin embargo, esta señal eléctrica puede sufrir alteraciones (como distorsiones o ruidos), especialmente cuando se transportan datos a grandes distancias. Por este motivo existen algunos mecanismos que garantizan un nivel de integridad de los datos, es decir, que el destinatario obtiene una confirmación de que los datos recibidos son, de hecho, similares a los datos transmitidos. Existen dos maneras de proteger la transferencia de datos para que no se produzcan errores: Por lo tanto, debemos asegurarnos que si dicho movimiento causa errores, éstos puedan ser detectados **Error de bit. ** Únicamente un bit de una unidad de datos determinada cambia de 1 a 0 o viceversa. Un error de bit altera el significado del dato. Son el tipo de error menos probable en una transmisión de datos serie, puesto que el intervalo de bit es muy breve (1/frecuencia) el ruido tiene que tener una duración muy breve. Sin embargo si puede ocurrir en una transmisión paralela, en que un cable puede sufrir una perturbación y alterar un bit de cada byte. **Error de ráfaga. ** El error de ráfaga significa que dos o más bits de la unidad de datos han cambiado. Los errores de ráfaga no significan necesariamente que los errores se produzcan en bits consecutivos. La longitud de la ráfaga se mide desde el primero hasta el último bit correcto, algunos bits intermedios pueden estar bien. Los errores de ráfaga es más probable en transmisiones serie, donde la duración del ruido es normalmente mayor que la duración de un bit, por lo que afectara a un conjunto de bits. El número doble bits afectados depende de la tasa de datos y de la duración del ruido.
 * {$page} **
 * Instalando un medio de transmisión más seguro, es decir, una capa de protección física. Una conexión convencional tiene, por lo general, un porcentaje de error entre 10-5 y 10-7.
 * Implementando mecanismos lógicos para //detectar// y //corregir// errores.
 * 2. DESARROLLO**

**Método de Paridad y paridad Bidimensional ** El bit de paridad se elige de forma que mantenga la paridad (par o impar) de la codeword. El código formado con un bit de paridad tiene una distancia de 2, ya que cambiando un bit de cualquier codeword el resultado es ilegal, pero cambiando dos vuelve a serlo. Con una distancia 2 es posible detectar errores de 1 bit, pero no es posible detectar errores múltiples, ni corregir errores de ningún tipo. A cambio tiene un overhead mínimo, ya que supone añadir solamente un bit a cada codeword. Por este motivo el bit de paridad se utiliza en situaciones donde la fiabilidad es muy alta y la codeword muy pequeña, como en algunos sistemas de memoria RAM o de grabación de datos en soporte magnético. La eficiencia de un código viene dada por la relación m/n; a la diferencia 1-m/n se la denomina //redundancia. Por ejemplo al utilizar un bit de paridad para acceder a un byte de memoria se tiene una// eficiencia de 0,8889 y una redundancia de 0,1111.

En esencia cualquier mecanismo de control de errores se basa en la inclusión de un cierto grado de redundancia, lo cual requiere un compromiso entre eficiencia y fiabilidad. Supongamos por ejemplo que deseamos transmitir un trama de 64 bits y utilizamos un bit de paridad; la eficiencia se reducirá en un 2% solamente y seremos capaces de detectar errores simples, pero los errores dobles pasarán desapercibidos; en caso de errores múltiples la probabilidad de que pasen desapercibidos es de 0,5, lo cual no es aceptable. Para mejorar la fiabilidad podemos introducir un bit de paridad cada ocho bits de datos; para esto imaginemos la trama como una matriz de 8 x 8 bits, a la cual añadimos una novena columna que son los bits de paridad; la transmisión se haría fila a fila, sin incluir la novena columna (los bits de paridad) que iría al final de la trama; el receptor reconstruiría la matriz 8 x 8 a partir de los bits recibidos y a continuación construiría la columna de bits de paridad, que luego compararía con la recibida; en caso de discrepancia se supondría un error y se pediría retransmisión.

<span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Con este sistema las probabilidad es de detectar errores múltiples han aumentado, pero si los errores se producen a ráfagas (cosa muy normal en transmisión inalámbrica, por ejemplo) tendremos varios bits erróneos cerca, con lo que la probabilidad de que su bit de paridad detecte el error vuelve a ser de 0,5. <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Ahora bien, si en vez de calcular el bit de paridad para cada fila lo hacemos para cada columna tomaremos bits n o contiguos de la trama, con lo que la probabilidad de que un error a ráfagas pase desapercibido es mucho menor; tendrían que fallar dos bits de una misma columna y no fallar ningún otro bit, por ejemplo. Si estadísticamente la probabilidad de que un error en una columna pase desapercibido es de 0,5, la de que esta situación se de en las 8 columnas es de 0,58, es decir, 0,0039. En este caso una elección inteligente de los bits de paridad ha permitido aumentar considerablemente la fiabilidad del código sin reducir su eficiencia. <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">El objetivo esencial de los códigos de detección o corrección de errores consiste en optimizar los algoritmos de cálculo de los bits de control para que sean capaces de detectar el máximo número de errores posible con un número razonable de bits adicionales. Las técnicas matemáticas en que se basan estos algoritmos han sido objeto de exhaustivos estudios por parte de especialistas en teoría de la codificación, y no son fácilmente mejorables; como consecuencia de esto los algoritmos de detección y corrección de errores son una parte bastante estable dentro de los sistemas de transmisión de datos. **<span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Método de Código de Redundancia Cíclica (CRC) ** <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">El algoritmo de detección de errores más utilizado en la práctica se basa en lo que se conoce como //polinomicos (también llamados códigos de redundancia cíclica o CRC, Cyclic Redundancy Check). La idea básica es la misma que en el caso de los bits de paridad: añadir a los datos a transmitir// unos bits adicionales cuyo valor se calcula a partir de los datos; la trama así construida se envía, y el receptor separa los bits de datos de la parte CRC; a partir de los datos recalcula el CRC y compara con el valor recibido; si ambos no coinciden se supone que ha habido un error y se pide retransmisión. <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">La aritmética polinómica tiene unas propiedades singulares que la hacen especialmente fácil de programar en sistemas digitales, por lo que es posible implementarla directamente en hardware con lo que se consigue una eficiencia elevada, cosa importante para evitar que la comunicación se ralentice por el cálculo del CRC. Veamos algunas de estas propiedades: <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Supongamos la siguiente suma de polinomios: <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">X7 + x4 + x3+ x + 1 que equivale a: 10011011 <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">+ X7 + x6 + x33+ x que equivale a: 11001010 <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">- //<span style="color: black; font-family: 'Times New Roman','serif'; font-size: 16px;">X6+ x4 + 1 que equivale a: 01010001 // <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Obsérvese como no se arrastra valor a la unidad superior. En la práctica el resultado de la suma es equivalente a haber eftuado un OR EXCLUSIVO bit a bit entre las dos cadenas. <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">En el caso de la resta la situación es idéntica: //<span style="font-family: 'Times New Roman','serif'; font-size: 16px;">X6 + x4 + x2 + 1 que equivale a 01010101 // <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">- x7 + x5+ x3 + x2+ x + 1 que equivale a 10101111 <span style="font-family: 'Times New Roman','serif'; font-size: 16px;"> //<span style="font-family: 'Times New Roman','serif'; font-size: 16px;">X7 + x6 + x6 + x4 + x3 + x 11111010 // <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">ya que al utilizar módulo 2 la operación de dos valores iguales siempre da 0 y dos diferentes da 1. <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">En el caso de la división la operación se hace como en binario con la única peculiaridad de que la resta se hace módulo 2, como acabamos de ver. <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Veamos paso a paso co mo se utiliza todo esto en una transmisión de datos con un ejemplo concreto: <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">1.En primer lugar el emisor y el receptor acuerdan un generador polinómico común G(x), por <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">ejemplo x4 + x + 1 (10011 o g ); el primero y último bits de un generador polinómico siempre <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">deben ser 1. El CRC siempre tien e una longitud un bit menos que el generador polinómico <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">utilizado, por lo que en nuestro caso será de 4 bits (grado del polinomio) <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">2.Supongamos ahora que el emisor desea transmitir la cadena c1, formada por los bits <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">1101011011, que podemos ver como un polinomio de grado 9 (los datos a transmitir siempre  <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">deben tener más bits que el generad or polinómico utilizado). El emisor añade cuatro bits (en  <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">principio a 0) al final de los datos a transmitir, formando la cadena c2 110010110110000; esto <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">equivale a multiplicar la cadena por 24 <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">3.El emisor divide la cadena c2 por el generador polinómico acordado (10011) usando las reglas <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">de división binaria módulo 2 que antes hemos mencionado, y calcula el resto r, que es en este <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">caso 1110

<span style="font-family: 'Times New Roman','serif'; font-size: 16px;">4.El emisor resta el resto r de la cadena c2, formando así la cadena c3 11010110111110. <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">5.Obsérvese que, como la resta es una operación XOR sobre los cuatro últimos bits, en la práctica la resta se hace sencillamente sustituyendo los cuatro últimos bits de c2 por r. Al restar al dividendo el resto el valor obtenido es divisible porg <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">6.La cadena c3 es transmitida al receptor. <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">7.El receptor recibe la cadena c3 y la divide por g. Si el resultado no es cero la transmisión se considera errónea y se solicita retransmisión. <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Este algoritmo, que en principio puede parecer extraño y arbitrario, tiene tres características interesantes: <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">CRC-12: x12 + x11 + x3 + x2 + x + 1 <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">CRC-16: x16 + x15 + x2 + 1 <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">CRC-CCITT: x16 + x12 + x5+ 1 <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">CRC-32: x32 + x26 + x23 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1 <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">CRC-12 se utiliza en los códigos con longitud de carácter de 6 bits; CRC-16 y CRC-CCITT se utilizan en conexiones WAN, mientras que CRC-32 se utiliza en conexiones LAN. <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">En todos los generadores utilizados aparece x+1 como factor, ya que esto asegura la detección de todos los errores con un número impar de bits. Un código polinómico de r bits detectará todos los errores a ráfagas de longitud =< r. Un generador como CRC-16 o CRC-CCITT detectará todos los errores simples y dobles, todos los errores con un número impar de bits, todos los errores a ráfagas de longitud 16 o menor, 99,997% de los errores a ráfagas de 17 bits y 99,998% de los errores a ráfagas de 18 o más bits.
 * <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Da un resultado predecible y reproducible, por lo que aplicad o sobre unos mismos datos siempredará el mismo resultado,
 * <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Las operaciones utilizadas (desplazamiento, XOR, etc.) lo hacen muy fácil de implementar en hardware, y
 * <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Suministra un mecanismo extremadamente flexible y robusto para la detección de errores, a través de la elección del generador polinómico adecuado.
 * <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Los generadores polinómicos más utilizados forman parte de estándares internacionales, y son los siguientes:

<span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Se podria pensar en la posibilidad de que un error alterara la trama de tal forma que el CRC de la trama errónea coincidiera con el de la trama correcta (después de todo la probabilidad de que una trama distinta tenga el mismo CRC es 1/65 536 para CRCs de 16 bits); los algoritmos de cálculo de CRCs intentan conseguir que las otras posibles tramas con igual CRC se encuentren muy alejadas (en términos de distancia Hamming) por lo que tendría que producirse una gran cantidad de errores en la misma trama para que esta posibilidad pudiera darse. En todo caso, cualquier protocolo de nivel de enlace fallará si se produce un erro r que no pueda ser detectado por el CRC **<span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Método <span class="mw-headline" style="font-family: 'times new roman','serif'; font-size: 16px;"> de Suma de comprobación ** Es un método muy sencillo pero eficiente sólo con cadenas de palabras de una longitud pequeña, es por esto que se suele utilizar en de tramas importantes u otras cadenas importantes y en combinación con otros métodos. Funcionalidad: consiste en agrupar el mensaje a transmitir en cadenas de una longitud determinada L no muy grande, de por ejemplo 16 bits. Considerando a cada cadena como un número entero numerado según el sistema de numeración 2L-1. A continuación se suma el valor de todas las palabras en las que se divide el mensaje, y se añade el resultado al mensaje a transmitir, pero cambiado de signo.El receptor lo único que tiene que hacer es sumar todas las cadenas, y si el resultado es 0 no hay errores.

Ejemplo

<span style="font-family: 'Times New Roman','serif'; font-size: 16px;"> **<span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Método de Control de Flujo: ** <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Resulta necesario asegurar que la computadora de destino de la información se encuentra en disposición de recibir los datos. Para esto, existen técnicas que permiten al destinatario de la información controlar al emisor, para que envié ésta en el momento idóneo. A estos mecanismos se les conoce como técnicas de control de flujo. Cuando dos computadoras se comunican, una envía datos mientas la otra las recibe y los va almacenando en algún sitio en espera de ser evaluados. Este espacio donde se guarda la información puede ser memoria principal o secundaria. Esto es, pudiera tratarse de un disquete, un disco duro o también memoria RAM. <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Evidentemente, siempre se tratará de una cantidad finita de espacio. Si el emisor continua enviando información, podría llegar a sobrepasar la capacidad del espacio destinado al almacenamiento. Esto originaría la pérdida de datos que no pudieran almacenarse. Naturalmente se trata de una situación a evitar siempre que sea posible. <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Este problema se puede evitar reservando más de un espacio para almacenar mensajes. Pero si las demás condiciones no varian el emisor sigue enviando mensajes y el receptor no será capaz de procesar la información lo suficientemente rápida, solo bastaran de poco tiempo para que el problema vuelva <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Para resolverlo, hay que atacar a alguna de las dos condiciones anteriormente descritas. No sirve como solución aumentar la capacidad de procesamiento de la computadora destino, ya que resulta una solución local y no resuelve el problema, ya que en otro momento se convertirá en emisor de información y se producirá el mismo problema en la computadora que inicialmente emitía. Así, sólo se podrá evitar el problema si se consigue que la computadora origen deje de transmitir el tiempo suficiente como para que el receptor pueda procesar los mensajes, liberando así el espacio donde almacenar más información. **<span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Conclusión: ** <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Los factores que más afectan en el rendimiento de las comunicaciones son los errores y, por supuesto el manejo de información repetida. <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">Un tratamiento general de códigos detectores y correctores de errores requiere que la estructura del código sea modelada en una forma matemática relativamente intrínseca. El procedimiento más habitual es identificar las letras códigos con los elementos de un campo finito. Igualmente las propiedades de códigos detectores de errores sencillos, son usados para elevar la fiabilidad de la transmisión, permiten corregir algunos de los errores que ocurren, reduciendo de este modo la fiabilidad de error. **<span style="font-family: 'Times New Roman','serif'; font-size: 16px;">BIBLIOGRAFIA: ** <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">[] <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">[] <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">[] <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">[]


 * 3. OTROS QUE EL AUTOR CONSIDERE**

<span style="font-family: 'Times New Roman','serif'; font-size: 16px;">[] <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">[] <span style="font-family: 'Times New Roman','serif'; font-size: 16px;">[]
 * 4. REFERENCIAS BIBLIOGRAFICAS**

(Estudiante: Nombre_Completo ) en fecha fecha de la edición
 * Seguimiento de aportes: (*) Esto es para hacer un seguimiento de los aportes, copiar la linea siguiente cada ves que se edite, no borrar las existentes.**


 * AUTOR:** {$creator}

//user:oldeol en fecha 21 de mayo del 2013// //Esta pagina fue editada {$pagerevisions} veces. La ultima modificación fue realizada por//

//user:{$revisioneditor} el {$revisiondate}//