Es
una técnica para que el emisor no sobrecargue al receptor al enviarle
más datos de los que pueda procesar . El receptor tiene un buffer
de una cierta capacidad para ir guardando los datos recibidos y tras procesarlos
, enviarlos a capas superiores .
Vamos
a suponer que todas las tramas recibidas llegan con un poco de retardo
pero sin errores y sin adelantarse unas a otras .
Consiste
en que el emisor envía una trama y al ser recibida por el receptor
, éste ( el receptor ) confirma al emisor ( enviándole un
mensaje de confirmación ) la recepción de la trama . Este
mensaje recibido por el emisor es el que le indica que puede enviar otra
trama al receptor . De esta forma , cuando el receptor esté colapsado
( el buffer a punto de llenarse ) , no tiene más que dejar de confirmar
una trama y entonces el emisor esperará hasta que el receptor decida
enviarle el mensaje de confirmación ( una vez que tenga espacio
en el buffer ) .
Este
sistema es el más eficaz para que no haya errores y es el más
utilizado cuando se permiten tramas muy grandes , pero es normal que el
emisor parta las tramas en más pequeñas para evitar que al
ser una trama de larga duración , es más probable que se
produzca algún error en la transmisión . También ,
en LAN's , no se suele permitir que un emisor acapare la línea durante
mucho tiempo ( para poder transmitir una trama grande ) .
Otro
problema adicional es que se infrautiliza la línea al estar parada
mientras los mensajes del receptor llegan al emisor .
El
problema de que sólo hay una trama cada vez en tránsito por
la red se soluciona con este sistema de ventanas deslizantes .
En
este sistema , el receptor y el emisor se ponen de acuerdo en el número
de tramas que puede guardar el receptor sin procesar ( depende del tamaño
del buffer ) . También se ponen de acuerdo en el número de
bits a utilizar para numerar cada trama ( al menos hay que tener un número
de bits suficientes para distinguir cada una de las tramas que quepan en
el buffer del receptor ) , Por ejemplo , si en el buffer del receptor caben
7 tramas , habrá que utilizar una numeración con 3 bits (
23 = 8 > 7 ) .
El
emisor transmite tramas por orden ( cada trama va numerada módulo
2número de bits ) hasta un máximo de el número
máximo de tramas que quepan en el buffer del receptor ( en el ejemplo
, 7 ) . El receptor irá procesando las tramas que le lleguen y confirmando
que admite tramas a partir de una dada ( hasta un máximo de 7 en
el ejemplo ) . Por ejemplo , si ha procesado hasta la trama 5 , confirmará
el número 6 ( es decir , que puede procesar las tramas 6 , 7 , 0
, 1 , 2 , 3 y 4 ) . Al recibir el emisor la confirmación de la trama
6 , emitirá todas las que no haya transmitido desde la 6 hasta la
4 ( 6 , 7 , 0 , 1 , 2 , 3 y 4 ) . Por ejemplo , se ya había enviado
la 6 , 7 , 0 y 1 , sabe que puede enviar la 2 , 3 y 4 .
Existe
la posibilidad de indicarle al emisor la confirmación de tramas
recibidas y prohibirle el envío de más tramas ( con el mensaje
de Receptor No Preparado ) .
Cuando
la dos estaciones son emisoras y receptoras , se pueden utilizar dos ventanas
por estación , una para el envío y otra para la recepción
. Se puede utilizar la misma trama para enviar datos y confirmaciones ,
mejorando así la utilización del canal .
Este
sistema de transmisión es mucho más eficiente que el de parada
y espera , ya que pueden haber más de una trama a la vez en las
líneas de transmisión ( en el de parada y espera sólo
puede haber una trama a la vez ) .
Cuanto
mayor es la trama que se transmite , mayor es la probabilidad de que contenga
algún error . Para detectar errores , se añade un código
en función de los bits de la trama de forma que este código
señale si se ha cambiado algún bit en el camino . Este código
debe de ser conocido e interpretado tanto por el emisor como por el receptor
.
Se
añade un bit de paridad al bloque de datos ( por ejemplo , si hay
un número par de bits 1 , se le añade un bit 0 de paridad
y si son impares , se le añade un bit 1 de paridad ) .
Pero
puede ocurrir que el propio bit de paridad sea cambiado por el ruido o
incluso que más de un bit de datos sea cambiado , con lo que el
sistema de detección fallará .
Dado
un bloque de n bits a transmitir , el emisor le sumará los k bits
necesarios para que n+k sea divisible ( resto 0 ) por algún número
conocido tanto por el emisor como por el receptor .
Este
proceso se puede hacer bien por software o bien por un circuito hardware
( más rápido ) .
Se
trata en este caso de detectar y corregir errores aparecidos en las transmisiones
. Puede haber dos tipos de errores :
vTramas
perdidas : cuando
una trama enviada no llega a su destino .
vTramas
dañadas
: cuando llega una trama con algunos bits erróneos .
Hay
varias técnicas para corregir estos errores :
1.Detección
de errores :
discutida antes .
2.Confirmaciones
positivas:
el receptor devuelve una confirmación de cada trama recibida correctamente
.
3.Retransmisión
después de la expiración de un intervalo de tiempo
: cuando ha pasado un cierto tiempo , si el emisor no recibe confirmación
del receptor , reenvía otra vez la trama .
4.Confirmación
negativa y retransmisión
: el receptor sólo confirma las tramas recibidas erróneamente
, y el emisor las reenvía .
Todos
estos métodos se llaman ARQ ( solicitud de repetición automática
) . Entre los más utilizados destacan :
Se
basa en la técnica de control de flujo de parada-y-espera . Consiste
en que el emisor transmite una trama y hasta que no recibe confirmación
del receptor , no envía otra .
Puede
ocurrir que :
vLa
trama no llegue al receptor
, en cuyo caso , como el emisor guarda una copia de la trama y además
tiene un reloj , cuando expira un cierto plazo de tiempo sin recibir confirmación
del receptor , reenvía otra vez la trama .
vLa
trama llegue defectuosa,
en cuyo caso no es confirmada como buena por el receptor . Pero puede ocurrir
que el receptor confirme una trama buena pero la confirmación llegue
al emisor con error , entonces , el emisor enviaría otra vez la
trama . Para solucionar esto , las tramas se etiquetan desde 0 en adelante
y las confirmaciones igual .
Es
una técnica sencilla y barata pero poco eficiente .
Se
basa en la técnica de control de flujo con ventanas deslizantes
.
Cuando
no hay errores , la técnica es similar a las ventanas deslizantes
, pero cuando la estación destino encuentra una trama errónea
, devuelve una confirmación negativa y rechaza todas las tramas
que le lleguen hasta que reciba otra vez la trama antes rechazada , pero
en buenas condiciones . Al recibir la estación fuente una confirmación
negativa de una trama , sabe que tiene que volver a transmitir esa trama
y todas las siguientes . Si el receptor recibe la trama i y luego la i+2
, sabe que se ha perdido la i+1 , por lo que envía al emisor una
confirmación negativa de la i+1 .
La
estación emisora mantiene un temporizador para el caso de que no
reciba confirmación en un largo periodo de tiempo o la confirmación
llegue errónea , y así poder retransmitir otra vez las tramas
.
Con
este método , las únicas tramas que se retransmiten son las
rechazadas por el receptor o aquellas cuyo temporizador expira sin confirmación
. Este método es más eficiente que los anteriores . Para
que esto se pueda realizar , el receptor debe tener un buffer para guardar
las tramas recibidas tras el rechazo de una dada , hasta recibir de nuevo
la trama rechazada y debe de ser capaz de colocarla en su lugar correcto
( ya que deben de estar ordenadas ) .Además
, el emisor debe de ser capaz de reenviar tramas fuera de orden .
Estos
requerimientos adicionales hacen que este método sea menos utilizado
que el de adelante-atrás-N .