패킷을 보낸 직후에 "TCP 재전송"이 발생하는 이유는 무엇입니까?

패킷을 보낸 직후에 "TCP 재전송"이 발생하는 이유는 무엇입니까?

버스(MQTT, 에서 구현)에 정보를 게시하는 프로그램(Python)이 있습니다 mosquitto. 이는 "실행 후 잊어버리는" 종류의 메시지입니다. 즉, 장기 구독이 없으며 단지 메시지만 전송됩니다.

이 모든 것이 작동하지만 우연히 TCP 트래픽이 이상하다는 것을 알았습니다.

여기에 이미지 설명을 입력하세요

192.168.10.2172.19.0.20MQTT 서버가 있는 도커 컨테이너가 있는 서버입니다 . 명령은 tcpdump -i any port 1883 -w mqtt.pcap. 이 두 줄은 각 전송(MQTT 버스에 대한 각 게시)에 대한 유일한 줄입니다.

왜 이런 이유가 있을 수 있습니까 TCP Retransmission? (모든 것이 전반적으로 작동합니다. 재전송이 왜 발생하는지 궁금합니다)

답변1

TCP의 안정적인 서비스를 위해서는 데이터가 포함된 모든 세그먼트가 수신자에 의해 승인되어야 합니다. 세그먼트에 대한 승인(ACK)이 수신되지 않으면 보낸 사람은 세그먼트를 다시 전송해야 합니다.

각 연결에 대해 TCP는 세그먼트에 대한 ACK가 예상되는 시간인 RTO(재전송 시간 초과)라는 변수를 유지합니다. RTO가 만료되기 전에 TCP가 ACK를 받지 못하면 세그먼트가 재전송됩니다.

다음 문서를 참조하세요.

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

관련 정보