Tcp 当MQTT中设置了QoS级别1时,PUBACK重传的原因是什么?

Tcp 当MQTT中设置了QoS级别1时,PUBACK重传的原因是什么?,tcp,mqtt,wireshark,qos,Tcp,Mqtt,Wireshark,Qos,学习MQTT的学生 为了测试MQTT,代理使用MOSQUITO,发布者和订阅者使用paho库 从发布者到代理,连续发送负载大小为1000字节的消息的实验 我们已经开始了 我在发布服务器中将QoS级别设置为1,当我将数据发送给代理时,我遇到了一个关于通过wireshark检查数据的问题 上图是线鲨的照片。(354)作为对发布消息的响应,代理发送(355)发布确认消息。代理然后发送(356)重传消息,例如355 我已经验证了在TCP中发布确认是以背驮形式发生的,但我不知道为什么会发生356 为什么

学习MQTT的学生

为了测试MQTT,代理使用MOSQUITO,发布者和订阅者使用paho库

从发布者到代理,连续发送负载大小为1000字节的消息的实验 我们已经开始了

我在发布服务器中将QoS级别设置为1,当我将数据发送给代理时,我遇到了一个关于通过wireshark检查数据的问题

上图是线鲨的照片。(354)作为对发布消息的响应,代理发送(355)发布确认消息。代理然后发送(356)重传消息,例如355

我已经验证了在TCP中发布确认是以背驮形式发生的,但我不知道为什么会发生356

为什么会出现356?
如果是TCP问题,我不知道在piggybacked中重新传输的机制。

代理没有发送重新传输,托管代理的机器上的TCP堆栈发送了它,因为它没有在所需的超时()内收到原始的TCP
sync
响应


如果您检查356的实际内容,它应该与355完全相同

如果是,是否因为在RTO中没有接收到背载ACK的ACK而重新传输背载ACK?完全忽略MQTT端,整个TCP数据包似乎无法被客户端接收,所以代理TCP堆栈只是不喜欢它谢谢你。这真的很有帮助。