MQTT之固定報頭分析


版本3.11

MQTT報文結構

1.Fixed header 固定報頭,所有報文都包含
2.Variable header 可變報頭,部分報文包含
3.Payload 有效載荷,部分報文包含

固定報頭

固定報頭 固定占2個字節
第一個節前4位表示報文類型后四位表示報文的標志
第二個字節表示剩余報文的長度

報文類型


比如建立連接的前四位報文為0001,則轉換成十進制=1,剛好對應上表中的CONNECT,也就是客戶端請求連接服務端的意思

報文標志

繼續上面那個圖,緊跟着0001后面的后四位報文為0000,表示缺省(Reserved),一般這四位用於表示消息安全等級,重復分發標志,保留消息等

舉個例子
當發送一條(消息安全等級)QoS=2的消息時,固定報頭的第一個字節為:

這里可以看到,前四位0011轉換成10進制就是3也就是對應報文類型的3 PUBLISH也就是發布消息類型的報文
后四位0100,這里就不能轉十進制了 ,可以直接對應報文標志圖的四個(3210)比特位,這里很明顯0100對應的是QoS2,
同理如果后四位是0010,那么對應就表示是一條QoS1的消息

剩余報文長度

這個很好理解,表示本次報文的剩余長度(字節位數)

比如這個紅色框的報文轉換成十進制是29,則表示還有29個字節是本次報文的,綠色框則就是剩余的報文了,剛好是29個,不信你數數
如果udp位置為0,表示當前消息為第一次發送
RETAIN 1:表示發送的消息需要一直持久保存,不但要發送給當前的訂閱者,並且以后新來的訂閱了此Topic name的訂閱者會馬上得到推送(只會收到最新的一條)
RETAIN 1:表示只發送給當前在線的訂閱者


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM