Cuánto tiempo se guardan los fragmentos TCP fragmentados en el servidor TCP

10

Suponga que un fragmento TCP dado está fragmentado en dos datagramas IP, y que el primer datagrama llega al servidor TCP, pero el segundo datagrama nunca llega.

Después de una cierta cantidad de tiempo, el servidor TCP envía un keepalive y determina que el cliente está vivo. ¿Qué hace el servidor TCP con este primer datagrama? ¿Espera a que llegue el segundo datagrama o descarta el primer datagrama?

Randomblue
fuente

Respuestas:

8

Después de que expira el tiempo de espera de reensamblado de fragmentos, el fragmento se descarta; el otro extremo necesitaría retransmitir.

Este tiempo de espera es generalmente configurable. En Linux, son 30 segundos por defecto y se controlan mediante /proc/sys/net/ipv4/ipfrag_time.

Michael Hampton
fuente
¿Se ha agotado el tiempo de reensamblaje del fragmento con respecto al primer fragmento recibido o se restablece el temporizador para cada nuevo fragmento que llega?
Randomblue
2
Creo que tendrías que leer el código fuente para responder eso definitivamente.
Michael Hampton
2

No hay una respuesta definitiva a esta pregunta;

Si ve este artículo sobre retransmisión adaptativa, verá que TCP usa RTT como factor para calcular los retrasos apropiados.

Este es un artículo más detallado. Esencialmente, no hay un valor de tiempo de espera especial solo para la fragmentación.

Sin embargo, este artículo de Cisco indica que un firewall virtual IOS XR tiene un tiempo de espera predeterminado de 10 segundos para fragmentos, con su propio temporizador configurable. Estoy vinculando esto para decir que los sistemas operativos y los dispositivos se comportarán de manera diferente y si está pasando una conexión a través de un dispositivo como este, por ejemplo, podría interferir negativamente con su conexión.

Sería mejor conectar dos máquinas de la misma configuración con un cruce y comenzar a probar desde allí si desea probar los efectos del retraso de fragmentación.

jwbensley
fuente
Gracias. ¿Cree que el tiempo de espera del fragmento en el artículo de Cisco se calcula con respecto al primer fragmento recibido o al último fragmento recibido?
Randomblue
El último fragmento recibido tiene más sentido que el primero, pero no sé, es a discreción de Cisco en ese ejemplo.
jwbensley