Definición
Este protocolo consiste en permitir que el remitente tenga un número máximo de
En TCP tiene un campo para el número de secuencia de
Un GBN sender debe responder a tres tipos de eventos
- Invocation from above
-
Cuando se trata de enviar un paquete, el remitente debe primero verificar que la ventana no está completa, si no lo está entonces se actualizan los valores y se envía el paquete a través del canal subyacente
Si la ventana está completa, usualmente se bufferea el paquete para enviarlo posteriormente. Si aún no hay paquetes enviándose, entonces se inicia el timer
-
- Receipt of an ACK
-
Cuando llega un ACK del paquete con números de secuencia
, entonces se toma como un acknowledgment acumulativo, indicando que todos los paquetes hasta ese número de secuencia (incluido) fueron entregados correctamente En este punto se mueve la base de la ventana. Si no quedan paquetes por recibir, entonces se frena el timer
-
- A timeout event
- Cuando ocurre un timeout, entonces todos los paquetes que aún no fueron confirmados serán reenviados
Desde el lado del receptor, es simple. Si un paquete con número de secuencia
Como todos los datos deben ser entregados en orden, un receptor podría guardar los paquetes correctos que están fuera de orden, pero esto es innecesario, ya que en la implementación actual el remitente reenvía todos los mensajes a partir del que se perdió. Este enforque tiene la ventaja de ser simple, ya que el receptor no debe guardar los paquetes recibidos, únicamente el del último paquete recibido en orden
La implementación de este protocolo usualmente utiliza event-based programming, puesto que los distintos procedimientos son invocados según el resultado de distintos eventos asincrónicos
Tiene la desventaja de que en redes con mucho delay, puede llegar a retransmitirse un gran número de paquetes de forma innecesaria