Tipos de interferencias en los canales de comunicación. Los principales tipos de interferencias y distorsiones en los sistemas de comunicación. Métodos para lidiar con la interferencia.

este algoritmo(algoritmo LZ77 4 El nombre de los autores Abraham Lempel y Jacob Ziv. Publicado en 1977.) fue uno de los primeros en utilizar un diccionario. Los últimos N elementos ya codificados de la secuencia se utilizan como diccionario. Durante el proceso de compresión, el diccionario de subsecuencias se mueve (“se ​​desliza”) a lo largo de la secuencia de entrada. La cadena de elementos en la salida se codifica de la siguiente manera: la posición de la parte coincidente de la cadena de elementos procesada en el diccionario: desplazamiento (en relación con la posición actual), longitud, el primer elemento que sigue a la parte coincidente de la cadena. La longitud de la cadena coincidente está limitada arriba por el número n. En consecuencia, la tarea es encontrar la cadena más grande del diccionario que coincida con la secuencia que se está procesando. Si no hay coincidencias, se registra el desplazamiento cero, la longitud unitaria y solo el primer elemento de la secuencia no codificada: (0, 1, e).

El esquema de codificación descrito anteriormente conduce al concepto ventana corredera (Ventana corredera inglesa), que consta de dos partes:

  1. subsecuencia de elementos ya codificados de longitud N - diccionario - búfer de búsqueda(búfer de búsqueda en inglés);
  2. una subsecuencia de longitud n de una cadena de elementos para la cual se intentará encontrar una coincidencia - buffer avance (búfer de anticipación en inglés).

En términos ventana corredera El algoritmo de compresión se describe a continuación: si e 1, . . . , e i es una subsecuencia ya codificada, entonces e i-N+1 , . . . , e i es un diccionario o búfer de búsqueda, y e i+1 , . . . , e i+n - búfer de vista previa. De manera similar, la tarea es encontrar la cadena más grande de elementos del búfer de vista previa, comenzando desde el elemento e i+1, que coincida con la cadena del búfer de búsqueda; esta cadena puede comenzar desde cualquier elemento y terminar con cualquier elemento, es decir ir más allá del búfer de búsqueda, invadiendo el búfer de vista previa. Es natural ir más allá ventana corredera está prohibido. Deje que la cadena de elementos coincidentes de longitud máxima e i-p , , se encuentre en la ventana deslizante. . . , e i+q , entonces se codificará de la siguiente manera: (p+1, q+p+1, e i+p+q+2 ) - desplazamiento relativo al comienzo del búfer de vista previa (e i+1) , longitud de la cadena coincidente, el elemento que sigue a la cadena coincidente del búfer de vista previa. Si la búsqueda da como resultado dos coincidencias de la misma longitud, se selecciona la más cercana al comienzo del búfer de vista previa. Después de esto, la ventana deslizante se desplaza p + q + 2 elementos hacia adelante y se repite el procedimiento de búsqueda.

La elección de los números N y n es un problema importante aparte, porque cuanto mayores sean N y n, mayor más espacio necesario para almacenar valores de desplazamiento y longitud. Naturalmente, el tiempo de ejecución del algoritmo también aumenta al aumentar N y n. Tenga en cuenta que N y n suelen diferir en un orden de magnitud.

Demos un ejemplo de compresión usando este algoritmo. Comprimamos la cadena "TOBEORNOTTOBE" con los parámetros N = 10 y n = 3:

paso ventana corredera Máx. cadena combinada salida
1 ""+"TOB" t 0,1,T
2 "T"+"OBE" oh 0,1,O
3 "A"+"BEO" B 0.1.B
4 "TOB"+"EOR" mi 0.1.E
5 "TOBE"+"ORN" oh 3,1,R
6 "TOBEOR"+"NO" norte 0,1,norte
7 "TOBEORN"+"OTT" oh 3,1,T
8 "TOBEORNOT"+"TOBE" TOB 9.3.E

Si asignamos 4 bits para almacenar el desplazamiento, 2 bits para la longitud y 8 bits para los elementos, entonces la longitud de la secuencia codificada (sin tener en cuenta el final de la designación de la secuencia) será 4 x 8 + 2 x 8 + 8 x 8 = 112 bits, y el original será de 102 bat. EN en este caso No comprimimos la secuencia, sino que, por el contrario, aumentamos la redundancia de la representación. Esto se debe a que la longitud de la secuencia es demasiado pequeña para dicho algoritmo. Pero, por ejemplo, el dibujo del árbol de código de Huffman en la Fig. 13.1, ocupando 420 kilobytes espacio en disco, después de la compresión tiene un tamaño de aproximadamente 310 kilobytes.

A continuación se muestra el pseudocódigo del algoritmo de compresión.

// M - límite fijo // leer caracteres secuencialmente del flujo de entrada // en - entrada - secuencia comprimida // n - longitud máxima cadenas // pos - posición en el diccionario, len - longitud de la cadena // nelem - elemento detrás de la cadena, str - cadena encontrada // entrada - entrada, salida - salida // SlideWindow - búfer de búsqueda while(!in.EOF() ) / /mientras hay datos ( // buscando la coincidencia máxima y sus parámetros SlideWindow.FindBestMatch(in, n, pos, len, nelem); // escribe la salida: offset, length, element out.Write(pos) ; out.Write(len); out.Write(nelem); // mueve la ventana deslizante len + 1 elementos SlideWindow(in, len + 1); Listado 13.2.

Algoritmo de compresión LZ77

Decodificar una secuencia comprimida es una decodificación directa de los códigos grabados: cada entrada se relaciona con una cadena del diccionario y un elemento escrito explícitamente, después de lo cual se desplaza el diccionario. Obviamente, el diccionario se recrea a medida que se ejecuta el algoritmo de decodificación.

Se puede observar que el proceso de decodificación es mucho más sencillo desde el punto de vista computacional. // n - longitud máxima de la cadena // pos - posición en el diccionario, len - longitud de la cadena // nelem - elemento detrás de la cadena, str - cadena encontrada // in - entrada, out - salida // Dict - diccionario while(!in. EOF()) //mientras hay datos ( in.Read(pos); in.Read(len); in.Read(nelem); if(pos == 0) ( //nuevo separado carácter //elimina el primero del diccionario (lejos) un elemento Dict.Remove(1); //agrega un elemento al diccionario Dict.Add(nelem); línea correspondiente del diccionario str = Dict.Get(pos, len); //eliminar elementos len + 1 del diccionario Dict.Remove(len + 1); //Agregar una cadena al diccionario Dict.Add(str + nelem); ); fuera.Escribir(cadena + nelem) )

Listado 13.3. Algoritmo Este algoritmo es el fundador de toda una familia de algoritmos y prácticamente no se utiliza en su forma original. Sus ventajas incluyen un grado decente de compresión en secuencias bastante grandes, una descompresión rápida y la ausencia de una patente 5 un documento que otorga el derecho exclusivo a explotar la invención durante un tiempo determinado (normalmente entre 15 y 20 años) al algoritmo. Las desventajas incluyen una velocidad de compresión lenta, así como una relación de compresión más baja que los algoritmos alternativos (las modificaciones del algoritmo combaten esta desventaja). La combinación de los algoritmos de Huffman ("Algoritmos de compresión de imágenes sin pérdida") y LZ77 se denomina método DEFLATE 6. Esto se llama compresión y la descompresión se llama INFLATE (inglés: DEFLATE - desinflar, INFLATE - inflar).. El método DEFLATE se utiliza en formato gráfico PNG, así como

formato universal

Para asegurarse de que es necesaria la retransmisión de datos, el remitente numera las tramas que se envían y para cada trama espera del receptor el llamado reconocimiento positivo (ACK), una trama de servicio que notifica que se ha recibido la trama original y los datos que contiene. es correcto. Para organizar dicha numeración, se necesita un procedimiento de conexión lógico: proporciona un punto de partida a partir del cual comienza la numeración. El tiempo de espera de recepción es limitado: al enviar cada trama, el transmisor inicia un temporizador y, si después de un tiempo específico no se recibe una recepción positiva, la trama se considera perdida. El receptor, si recibe una trama con datos corruptos, puede enviar un acuse de recibo negativo (NACK) - indicación explícita eso este marco necesita ser retransmitido.

Hay dos métodos para organizar el proceso de intercambio de recibos: el método de fuente inactiva y el método de ventana deslizante.

El método de fuente inactiva requiere que la fuente que envió la trama espere un reconocimiento (positivo o negativo) del receptor antes de enviar la siguiente trama (o repetir la corrupta). Si el recibo no llega dentro del tiempo de espera, entonces la trama (o recibo) se considera perdida y se repite su transmisión. En la figura. 6.6, pero está claro que en este caso el rendimiento del intercambio de datos es inferior al potencialmente posible, aunque el transmisor podría enviar la siguiente trama inmediatamente después de enviar la anterior.

En primer lugar, deberá esperar la llegada de un recibo positivo. (En adelante, cuando esto no distorsione la esencia de la cuestión bajo consideración, los ingresos positivos se denominarán simplemente “recibos” por razones de brevedad.)


Las desventajas de este método de corrección son especialmente notables en canales de comunicación de baja velocidad, es decir, en redes territoriales.

El segundo método se llama método de ventana deslizante. En este método, para aumentar la velocidad de transferencia de datos, se permite a la fuente transmitir una cierta cantidad de cuadros en modo continuo, es decir, a la velocidad máxima posible para la fuente sin recibir recibos de estos paquetes. La cantidad de paquetes que se permite transmitir de esta manera se denomina tamaño de ventana. La figura 6.6b ilustra la aplicación. este método para una ventana de paquetes de tamaño W.

En el momento inicial, cuando aún no se ha enviado ningún paquete, la ventana determina el rango de paquetes con números del 1 al W inclusive. La fuente comienza a transmitir paquetes y recibir recibos en respuesta. Para simplificar, supongamos que los recibos llegan en la misma secuencia que los paquetes a los que se envían.

corresponder. En el momento t t al recibir el primer recibo Kj, la ventana se desplaza una posición, definiendo un nuevo rango de 2 a (W + 1).

Los procesos de envío de paquetes y recepción de recibos son bastante independientes entre sí. Consideremos un momento arbitrario en el tiempo t n cuando la fuente recibe un recibo de un paquete con número n. La ventana se mueve hacia la derecha y determina el rango de paquetes permitidos para la transmisión de (n + 1) a (W + n). El conjunto completo de paquetes que salen de la fuente se puede dividir en los grupos que se enumeran a continuación (ver Fig. 6.6, b).

Los paquetes con números del 1 al η ya se han enviado y se han recibido los recibos, es decir, están fuera de la ventana de la izquierda.

Los paquetes que comienzan con el número (η + 1) y terminan con el número (W + n) están dentro de la ventana y, por lo tanto, pueden enviarse sin esperar la llegada de ningún recibo. Este rango se puede dividir en dos subrangos más:

O ya se han enviado paquetes con números de (η + 1) a m, pero aún no se han recibido los recibos;

O los paquetes con números del m al (W + n) aún no se han enviado, aunque no existe ninguna prohibición al respecto.

Todos los paquetes con números mayores o iguales a (W + η + 1) están fuera de la ventana de la derecha y, por lo tanto, no se pueden enviar todavía.

En la Fig. 6.6,c. Aquí t〇 es el momento inicial, tļ y t n son los momentos de llegada de los recibos del primer y η-ésimo paquete, respectivamente. Cada vez que llega un recibo, la ventana se mueve hacia la izquierda, pero su tamaño no cambia y permanece igual a W.

Cuando se envía un paquete, se establece un tiempo de espera en el origen. Si durante este tiempo no llega el recibo del paquete enviado, el paquete (o el recibo del mismo) se considera perdido y el paquete se envía nuevamente.

Si el flujo de recibos llega regularmente dentro de la tolerancia de W paquetes, entonces el tipo de cambio alcanza el valor máximo posible para un canal determinado y el protocolo adoptado.

En algunas implementaciones de ventana deslizante, no se requiere que el receptor envíe un acuse de recibo por cada paquete válido recibido. Si no hay "espacios" entre los paquetes recibidos, entonces el receptor sólo necesita enviar un recibo al último paquete aceptado, y este recibo indicará al remitente que todos los paquetes anteriores también llegaron sanos y salvos.

Otros métodos utilizan recibos negativos. Hay dos tipos de recibos negativos: grupales y selectivos. El recibo de grupo contiene el número de paquete, a partir del cual es necesario repetir la transmisión de todos los paquetes enviados por el transmisor a la red. El reconocimiento negativo selectivo requiere que solo se retransmita un paquete.

El método de ventana deslizante tiene dos parámetros que pueden afectar significativamente la eficiencia de la transferencia de datos entre el transmisor y el receptor: el tamaño de la ventana y el valor del tiempo de espera de recepción. La elección del tiempo de espera no depende de la confiabilidad de la red, sino de los retrasos en la transmisión de paquetes por parte de la red.

En redes confiables, en las que los paquetes rara vez se distorsionan y se pierden, para aumentar la tasa de intercambio de datos se debe aumentar el tamaño de la ventana, ya que en este caso el transmisor enviará paquetes con menos pausas. En redes poco confiables, el tamaño de la ventana debe reducirse, ya que con frecuentes pérdidas y distorsiones de paquetes, el volumen de paquetes retransmitidos a través de la red aumenta considerablemente, lo que significa rendimiento La red se desperdicia en gran medida y el rendimiento útil de la red disminuye.

El tamaño de la ventana puede ser parámetro constante Algoritmo de ventana deslizante. En este caso, se selecciona cuando se establece la conexión y no cambia durante la sesión. También existen versiones adaptativas del algoritmo, donde el tamaño de la ventana cambia durante la sesión de acuerdo con el estado actual de la red y el nodo de destino.

La confiabilidad de la red en tales algoritmos está determinada por signos de pérdida de paquetes como la expiración del tiempo de espera para una recepción positiva o la llegada de una recepción duplicada para un determinado paquete. Un duplicado indica que el nodo de destino ha agotado el tiempo de espera del siguiente paquete y el nodo solicita enviar este paquete por segunda vez. Cuando ocurren tales eventos, el nodo emisor reduce el tamaño de la ventana, tratando de encontrar modo óptimo transferencia de datos.

El tamaño de la ventana también puede ser cambiado por el nodo de destino. El motivo para reducir el tamaño de la ventana es la sobrecarga del nodo de destino, que no tiene tiempo para procesar los paquetes entrantes. Volveremos a este tema más adelante en la sección Comentario"Capítulo 7, cuando estudiaremos métodos para lidiar con las sobrecargas.

También hay implementaciones del método de ventana deslizante que utilizan la cantidad de bytes en lugar de la cantidad de paquetes como tamaño de la ventana. Mayoría ejemplo famoso Este enfoque es el protocolo TCP.

EN caso general El método de ventana deslizante es más complejo de implementar que el método de fuente inactiva, ya que el transmisor debe almacenar en un buffer todos los paquetes para los cuales aún no se han recibido acuses de recibo positivos. Además, cuando se utiliza este método, es necesario monitorear varios parámetros del algoritmo: tamaño de la ventana W, el número del paquete para el cual se recibió el recibo, el número del paquete que aún se puede transmitir antes de recibir un nuevo recibo .

Más sobre el tema Retransmisión y ventana deslizante:

  1. § 29 Transferencia y transferencia de derechos bajo obligaciones. – Construcción romana del derecho de transferencia. – Facilitación de la transferencia por la última legislación. – Inscripción de traslado. – Restricciones de transmisión. – Acción de transferencia. – Responsabilidad del transmitente y derechos del adquirente. – Entrada en derecho de acreedor o subrogación. – Ley rusa de transmisión. – Transferencia de cartas de préstamo. – Transferencia de créditos a acreedores.

Una de las técnicas más naturales utilizadas para organizar una transmisión confiable es reconocimiento. El remitente envía los datos y espera hasta recibir un recibo que confirme que sus datos han llegado de forma segura al destinatario. EN protocolo TCP usado caso especial apretón de manos: algoritmo de ventana deslizante. Antes de pasar a una consideración detallada de las características de implementación de este algoritmo en el protocolo TCP, resulta muy útil discutirlo desde una perspectiva general.

Por lo tanto, existen dos métodos para organizar el proceso de intercambio de recibos: el método de fuente inactiva y el método de ventana deslizante.

Método tiempo de inactividad de la fuente requiere que la fuente que envía la trama (en este caso no importa qué nombre se use para la unidad de datos transmitidos) espere una recepción del receptor que indique que la trama original ha sido recibida y que los datos que contiene son correctos, y sólo entonces envía el siguiente fotograma (o repite uno distorsionado). Si el recibo no llega dentro del tiempo de espera, entonces la trama (o recibo) se considera perdida y se repite su transmisión. En la figura. La figura 17.10 muestra que la segunda trama se envía sólo después de que ha llegado un recibo que confirma la entrega de la primera trama.

Arroz. 17.10. Método de fuente inactiva

Sin embargo, luego hubo una larga pausa en el envío del siguiente tercer fotograma. Durante esta pausa, la fuente se vio obligada a repetir la transmisión del cuadro 2, ya que se perdió el recibo de la primera copia del mismo. Está claro que con un algoritmo de este tipo para la operación de origen, el receptor debe poder reconocer fotogramas duplicados y deshacerse de ellos.

Es bastante obvio que cuando se utiliza este método, el rendimiento del intercambio de datos es menor de lo potencialmente posible: el transmisor podría enviar la siguiente trama inmediatamente después de enviar la anterior, pero debe esperar a que llegue el recibo.

El segundo método se llama método. ventana corredera(ventana corredera). En este método, para aumentar la velocidad de transferencia de datos, se permite a la fuente transmitir una cierta cantidad de cuadros en modo continuo, es decir, a la velocidad máxima posible para la fuente. hasta que se reciban los recibos de estos marcos. El número de tramas que se permite transmitir de esta manera se llama tamaño de la ventana.

La figura 17.11 ilustra la aplicación de este método para una ventana de 5 cuadros.

Arroz. 17.11. Método de ventana corredera

En el momento inicial, cuando todavía no se han enviado fotogramas, la ventana define un rango de números de fotogramas del 1 al 5 inclusive. La fuente comienza a transmitir tramas y después de un tiempo recibe recibos en respuesta. Para simplificar, supongamos que los recibos llegan en la misma secuencia (pero no necesariamente al mismo ritmo) que los fotogramas a los que corresponden. En el momento en que el remitente recibe el recibo 1, la ventana sube una posición, definiendo un nuevo rango de tramas permitidas para el envío (de 2 a 6).

Los procesos de envío de paquetes y recepción de recibos son bastante independientes entre sí. En nuestro ejemplo, el remitente continúa transmitiendo tramas, pero pasa un tiempo sin recibir un recibo. Después de transmitir el cuadro 6, la ventana se agota y la fuente detiene la transmisión.

Después de recibir el recibo 2 (para el cuadro 2), la ventana sube uno, definiendo el rango de cuadros permitidos para la transmisión del 3 al 7. Se produce un "deslizamiento" similar de la ventana hacia arriba. después de recibir cada recibo: la ventana sube 1, pero su tamaño no cambia y permanece igual a 5. Después de que llega el recibo 8, la ventana aparece en el rango de 9 a 13 y permanece así durante bastante tiempo, ya que por alguna razón la fuente deja de recibir marcos de confirmación de entrega. Habiendo enviado la última trama permitida 13, el transmisor detiene nuevamente la transmisión para reanudarla después de recibir el recibo 9.

Cuando se envía una trama, se establece un tiempo de espera en el origen. si por establecer el tiempo Si el recibo de la trama enviada no llega, entonces la trama (o el recibo de la misma) se considera perdida y la trama se transmite nuevamente. Si el flujo de recibos llega regularmente dentro de una tolerancia de 5 cuadros, entonces el tipo de cambio alcanza el valor máximo posible para un canal determinado y el protocolo adoptado.

En general, el método de ventana deslizante es más complejo de implementar que el método de fuente inactiva, ya que el transmisor debe almacenar en una memoria intermedia copias de todas las tramas cuyos recibos aún no se han recibido. Además, cuando se utiliza este método, es necesario monitorear varios parámetros del algoritmo, como el tamaño de la ventana, el número de cuadro para el cual se recibió el recibo y el número de cuadro que aún se puede transmitir antes de recibir un nuevo recibo.




Arriba