
버스(MQTT, 에서 구현)에 정보를 게시하는 프로그램(Python)이 있습니다 mosquitto
. 이는 "실행 후 잊어버리는" 종류의 메시지입니다. 즉, 장기 구독이 없으며 단지 메시지만 전송됩니다.
이 모든 것이 작동하지만 우연히 TCP 트래픽이 이상하다는 것을 알았습니다.
192.168.10.2
172.19.0.20
MQTT 서버가 있는 도커 컨테이너가 있는 서버입니다 . 명령은 tcpdump -i any port 1883 -w mqtt.pcap
. 이 두 줄은 각 전송(MQTT 버스에 대한 각 게시)에 대한 유일한 줄입니다.
왜 이런 이유가 있을 수 있습니까 TCP Retransmission
? (모든 것이 전반적으로 작동합니다. 재전송이 왜 발생하는지 궁금합니다)
답변1
TCP의 안정적인 서비스를 위해서는 데이터가 포함된 모든 세그먼트가 수신자에 의해 승인되어야 합니다. 세그먼트에 대한 승인(ACK)이 수신되지 않으면 보낸 사람은 세그먼트를 다시 전송해야 합니다.
각 연결에 대해 TCP는 세그먼트에 대한 ACK가 예상되는 시간인 RTO(재전송 시간 초과)라는 변수를 유지합니다. RTO가 만료되기 전에 TCP가 ACK를 받지 못하면 세그먼트가 재전송됩니다.
다음 문서를 참조하세요.