Hola Gastón.
Tenes razón, la solución es incorrecta.
Igualmente, hago algunas precisiones:
- El
emisor recién debería enviar la repetición de los datos cuando detecta 3
ACKs duplicados o en caso de timeout.
- Sin embargo, cuando le llega el ACK con 6836 puede avanzar la ventana y enviar un nuevo segmento.
- Dependiendo de como se considere el avance del tiempo, existen distintas soluciones válidas al problema. Por ejemplo:
* El primer segmento (5556) podría generar un ACK si el tercer segmento (8116) llega luego de los 500ms.
* Lo anterior podría generar un triple ACK duplicado cuando del lado del emisor se avanza la ventana y se envía un nuevo segmento.
* Si todo lo anterior sucede antes del timeout del segmento que se perdió, entonces solo se reenviará ese segmento.
* Si el segmento reenviado y el ACK correspondiente llegan antes del vencimiento de los restantes timers no se reenviará mas nada.
Otra opción:
* El reenvío se genera por el timeout del ACK perdido. Solo se reenvía ese segmento.
* Dependiendo de cuanto tarde en llegar el segmento reenviado y su correspondiente ACK, puede suceder que los restantes segmentos también den timeout y se reenvíen. Otra opción es que el ACK llegue antes y no se reenvíe mas nada.
Espero haber aclarado tus dudas y te pido disculpas por el error en la solución.
Veremos en lo posible de corregirlo.
Saludos