next up previous
Next: About this document Up: CC51C Comunicación de Datos Previous: Pregunta 2

Pregunta 3

Parte I

En Go-Back-N tengo números de secuencia cíclicos. También hemos definido que un ACK superior al esperado implica ACK para todos los números menores. Escriba en pseudo-código una rutina que revisa si un número de ACK es superior al esperado en un esquema de números de secuencia cícilicos.

int between( first, last, ack )
int first, last, ack;
{
    if( first < last )
	return( first <= ack && ack < last );
    else
	return( first <= ack || ack < last );
}

Parte II

Explique porqué el tamaño de la ventana de emisión no puede ser igual al número máximo de secuencia disponible.

Si la ventana está completamente llena, podemos transmitirla y llegar correcta al otro lado. Si por alguna razón no recibimos ACKs del otro lado, retransmitimos toda la ventana, y el receptor creerá que son los datos siguientes, generando duplicados erróneos.

Parte III

La solución de Go-Back-N vista en clases soporta varios errores en la red (pérdida, alteración), pero no soporta desorden de paquetes. Muestre un escenario en que el desorden de paquetes causa errores en el protocolo. Defina una extensión al protocolo que lo defienda de los paquetes desordenados.

El caso típico es que los ACKs se desordenen, en cuyo caso avanzo la ventana al último ACK recibido, transmito la nueva ventana y recibo ACKs viejos que calzan con la nueva ventana y los acepto erróneamente. Una buena defensa contra este problema es usar números de secuencia mucho más largos que el tamaño de la ventana (unas 10 veces por ejemplo), de modo de disminuir la probabilidad de repetición. Otra alternativa es no aplicar la optimización de que un ACK superior al esperado implique ACKs a los anteriores. Esto, sin embargo, es muy ineficiente.



José M. Piquer
Sun May 2 20:39:27 CLT 1999