
У меня есть программа (на Python), которая публикует информацию в шину (MQTT, реализовано с помощью mosquitto
). Это сообщение типа «выстрелил и забыл», то есть нет долгосрочной подписки, просто отправленное сообщение.
Все это работает, но я заметил (случайно), что TCP-трафик какой-то странный:
192.168.10.2
— сервер, на котором 172.19.0.20
находится docker-контейнер с MQTT-сервером. Команда была tcpdump -i any port 1883 -w mqtt.pcap
. Эти две строки — единственные для каждой передачи (для каждой публикации в шину MQTT).
В чем может быть причина TCP Retransmission
? (в целом все работает, просто интересно, почему ретрансляция)
решение1
Надежная служба TCP требует, чтобы все сегменты, содержащие данные, были подтверждены получателем. Если подтверждение (ACK) для сегмента не получено, отправитель должен повторно передать сегмент.
Для каждого соединения TCP поддерживает переменную, называемую тайм-аутом повторной передачи (RTO), которая представляет собой количество времени, в течение которого ожидается ACK для сегмента. Если TCP не получает ACK до истечения RTO, сегмент передается повторно.
Пожалуйста, обратитесь к следующей статье: