¿Por qué recibo una "Retransmisión TCP" inmediatamente después de haber enviado un paquete?

¿Por qué recibo una "Retransmisión TCP" inmediatamente después de haber enviado un paquete?

Tengo un programa (en Python) que publica información en un bus (MQTT, implementado por mosquitto). Este es un mensaje del tipo "dispara y olvida", es decir, no hay una suscripción a largo plazo, solo se envía un mensaje.

Todo esto funciona, pero noté (por casualidad) que el tráfico TCP es extraño:

ingrese la descripción de la imagen aquí

192.168.10.2es un servidor, en el que 172.19.0.20se encuentra un contenedor acoplable con el servidor MQTT. El comando fue tcpdump -i any port 1883 -w mqtt.pcap. Estas dos líneas son las únicas para cada transmisión (para cada publicación al bus MQTT).

¿Por qué podría ser la razón de esto TCP Retransmission? (Todo funciona en general, solo tengo curiosidad por saber por qué la retransmisión)

Respuesta1

El servicio confiable de TCP requiere que el receptor reconozca todos los segmentos que contienen datos. Cuando no se recibe un acuse de recibo (ACK) para un segmento, el remitente debe retransmitir el segmento.

Para cada conexión, TCP mantiene una variable llamada tiempo de espera de retransmisión (RTO), que es la cantidad de tiempo dentro del cual se espera un ACK para el segmento. Si TCP no recibe un ACK antes de que expire el RTO, el segmento se retransmite.

Consulte el siguiente artículo:

https://www.extrahop.com/company/blog/2016/retransmission-timeouts-rtos-application-performance-degradation/

información relacionada