top of page

Los errores en la transmisión pueden ser debidos a tres causas distintas:

 

  • Características materiales de la línea.

  • Equipos de transmisión.

  • Causas externas al circuito de datos.

Para cuantificar el efecto de los errores sobre la transmisión se utiliza la tasa de error, o BER (Bit Error Rate), que es el cociente entre el número de bits recibidos erróneamente y el número total de bits transmitidos. Para redes WAN se considera como BER aceptable uno en torno a 10-6 y para redes LAN en torno a 10-9.

Otra forma de cuantificar los errores es mediante la tasa de error residual, que es el cociente entre el número de bits erróneos no detectados y el número de bits erróneos transmitidos.

 

1  Códigos de detección de errores

Para detectar el mayor número de errores se utilizan los códigos de control de errores. Estos códigos se dividen en autocorrectores y detectores.

 

1.1  Códigos autocorrectores

Los códigos autocorrectores son aquellos que detectan y corrigen los errores producidos en una posición concreta. Esta tarea la desempeña el equipo receptor.

 

1.2  Códigos detectores

En los códigos puramente detectores el receptor detecta los errores, pero no es capaz de corregirlos, lo que hace es solicita el reenvío de la información. Las técnicas de solicitud de reenvío se denominan ARQ.

 

1.2.1  Modalidades de ARQ

Las distintas modalidades de ARQ son las siguientes:

 

  • ARQ con envío y espera. Es el método más lento. El emisor envía un paquete, si hay un error el receptor envía una señal de no reconocido, NAK, con lo que el emisor reenvía el paquete. Si no hay error el receptor envía señal de reconocido, ACK, con lo que el emisor pasa a enviar el siguiente paquete.

  • ARQ de envío continuo no selectivo. Se emplea en conexiones full-duplex. El emisor va enviando bloques de paquetes sin espera entre ellos, a la vez que los almacena en búferes de memoria. Si el receptor advierte un error en un bloque, le envía al emisor una señal NAK, con lo que el emisor reenvía todo el bloque. Cuando los búferes de memoria están saturados hay un tiempo de espera hasta que el receptor comunica que se pueden vaciar y se puede comenzar a enviar el siguiente bloque de paquetes.

  • ARQ de envío continuo selectivo. Es una mejora del modo anterior, en la que además de línea full-duplex se necesita una identificación de cada paquete del bloque enviado. Cuando se produce un NAK se reenvía sólo el paquete que ha llegado mal, y no todo el bloque. Además, al llegar un NAK se vacían los búferes anteriores a ese paquete, que ya se sabe que no son defectuosos, con lo que se reducen los tiempos de parada. El inconveniente de este método es que la información a enviar es mayor.

2  Códigos de control de errores

Los códigos de control de errores son siempre redundantes. Un código redundante es el que utiliza más bits de los estrictamente necesarios para la transmisión de los datos; gracias a esta característica se pueden detectar y corregir los errores.

Se dividen en sistemáticos y no sistemáticos, según la forma de añadir los bits redundantes.

2.1  Códigos no sistemáticos

En los códigos no sistemáticos los bits redundantes se añaden implícitamente en el código. Se les llama códigos M entre N, como por ejemplo el 3 entre 8, que para emitir un carácter de 8 bits añade otros 3 de control.

Los bits de control siempre se ponen a 1 flanqueando el carácter.

2.2  Códigos sistemáticos

En los códigos sistemáticos para determinar el valor de los bits redundantes se aplica un algoritmo a la información a transmitir.

2.2.1  Ejemplos de códigos sistemáticos

Código de paridad horizontal   Con este código se añade un único bit redundante para hacer que el número total de bits sea par o impar.

Código de paridad vertical   Se aplica a más de una palabra de información. Es necesario saber cuántas palabras forman el bloque al que se aplica el algoritmo. A cada palabra se le aplica un código de paridad horizontal y al bloque la paridad vertical, como se ve en el siguiente ejemplo, en el que se ha aplicado paridad par.

 

01001

0

00110

0

00111

1

01000

1

 

Con este código si hay un error no sólo se detecta sino que se corrige, ya que se puede saber en qué bit se ha producido el error.

Código de Hamming   Con el código de Hamming se añade un número de bits redundantes que depende del número de bits que se usan para representar una palabra de información, de modo que se cumpla la desigualdad 

2P ³ P+N+1,

donde N es el número de bits por palabra y P el número de bits redundantes. Los bits redundantes se añaden intercalándose con los bits que forman la palabra en las posiciones 1, 2, 4, 8, ..., empezando por los bits menos significativos.

 

Este código es difícil de implementar por circuitería pero sencillo a nivel de software. Sólo es capaz de detectar y corregir un bit erróneo.

Códigos lineales   En este caso se considera que los bits de la palabra forman un vector. A partir de este vector y de un polinomio generador establecido se obtiene otro vector final, según la fórmula 

c = i×G,

siendo i el vector inicial, G el polinomio generador y c el vector resultante.

 

Estos códigos facilitan la implementación en hardware, por lo que son más utilizados que los códigos anteriores.

Dentro de los códigos lineales los más utilizados son los CRC, códigos de redundancia cíclica. En éstos los bits del carácter a enviar son los coeficientes de un polinomio. Utilizan la siguiente fórmula: 

P(x) = C(x)·C(x)+R(x),

(1)

con R(x) = resto(C(x), G(x)). Lo que se envía por la línea es la información C(x) y el resto R(x), de forma que el destino puede detectar errores mediante la fórmula (1).

 

Con estos códigos se pueden detectar errores de uno o varios bits en bloques grandes. 

 

2.2.2.3 CÓDIGOS PARA CONTROL DE ERRORES

bottom of page