2017-07-05 63 views
0

學習MQTT的學生。在MQTT中設置QoS級別1時,PUBACK重傳的原因是什麼?

要測試MQTT,經紀人使用mosquitto,發佈者和用戶使用的PAHO庫。

從發佈商到經紀商,發送有效負載大小爲1000字節的消息的實驗連續進行 我們已經開始了。

我在發佈的QoS級別設置爲1,當我將數據發送到經紀人,我有一個問題關於通過Wireshark的檢查數據。

enter image description here

上述圖象捕捉的Wireshark。 (354)爲響應PUBLISH消息,代理髮送(355)PUBLISH ACK消息。該券商然後發送(356)重發的消息,如355

我覈實,發佈在TCP ACK捎帶出現的形式ACK,但我不知道爲什麼356發生。

爲什麼356會發生? 如果是TCP問題,我不知道在piggybacked ack中重傳的機制。

回答

0

代理未發送重新傳輸,承載代理的計算機上的TCP堆棧發送它,因爲它在所需的超時(https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Timeout_based_retransmission)中沒有收到原始的TCP sync響應。

如果您檢查的356實際含量應當爲355

+0

一模一樣如果是這樣,是捎帶ACK重傳,因爲它沒有收到在RTO揹負的ACK的ACK? –

+0

完全忽略的東西MQTT側,整個TCP數據包似乎無法通過客戶端來接收,所以經紀人的TCP協議棧只是反感 – hardillb

+0

謝謝。它確實有幫助。 –

相關問題