Estoy tratando de entender cómo funcionan la transmisión y el ACK en TCP. En esta Figura, ¿cuando A retransmite el seq 100 después de recibir tres ACK duplicados, B responderá con ACK 121 o ACK 158?
Respuesta
¿Demasiados anuncios?El tema de la retransmisión ha sido ampliamente documentado en toda la red y la literatura relevante, así que en el caso de una retransmisión debido a la expiración del tiempo de espera del segmento, voy a citar simplemente un documento de Novell con algunos ejemplos de captura de paquetes:
TCP implementa la fiabilidad enviando un acuse de recibo por los segmentos de datos recibidos. [...] Cuando el emisor detecta la pérdida del segmento, se ve obligado a retransmitir todos los segmentos después de que se alcanza el tiempo de espera de retransmisión.
[...]
La Figura 3 describe una traza de TCP donde los bytes en orden hasta el número de secuencia 2028597920 se reciben correctamente, momento en el que hay una pérdida de segmento. Sin ser consciente de la pérdida, el emisor continúa enviando datos hasta 2028605220, momento en el que retransmite el segmento perdido y toda la tubería de datos hasta 2028605220 nuevamente. Esto resulta en la retransmisión de cinco paquetes que en realidad fueron recibidos exitosamente.
Retransmisión típica y drenaje de la tubería.
Al utilizar el esquema de Acknowledgement Selectivo, un receptor puede acusar selectivamente los segmentos que fueron recibidos después de la pérdida. El emisor solo necesita retransmitir los segmentos perdidos. Estos segmentos o paquetes perdidos también se conocen como "agujeros" en el flujo de datos.
Si solo estás analizando las características de retransmisión rápida/recuperación rápida según RFC 2581, entonces el comportamiento de retransmisión sería algo diferente. HOST B
emitiría ACKs duplicados como indica la figura, señalando a HOST A
que se necesita la retransmisión de un segmento. Y por supuesto, también recibiría y almacenaría los segmentos siguientes hasta el tamaño de su ventana de recepción, así es como funciona el mecanismo de reordenamiento de segmentos. Al recibir el segmento faltante, el mecanismo de reordenamiento podría ensamblar el flujo y la pila de HOST B
enviaría un ACK al último segmento recibido (157).