協議就是通訊雙方的乙個約定,即,表示第1位傳輸的什麼、第2位傳輸的什麼……。在mqtt
協議中,乙個mqtt
資料報由:固定頭(fixed header)
、可變頭(variable header)
、訊息體(payload)
三部分構成。
mqtt 資料報結構
固定頭
存在於所有mqtt
資料報中,其結構如下:
bit765
4321
0byte 1
mqtt
資料報型別
不同型別mqtt
資料報的具體標識
byte 2…
剩餘長度
位置:byte 1, bits 7-4。
相於乙個4位的無符號值,型別如下:名稱值
流方向描述
reserved
0不可用
保留位connect
1客戶端到伺服器
客戶端請求連線到伺服器
connack
2伺服器到客戶端
連線確認
publish3雙向
發布訊息
puback4雙向
發布確認
pubrec5雙向
發布收到(保證第1部分到達)
pubrel6雙賂
發布釋放(保證第2部分到達)
pubcomp7雙向
發布完成(保證第3部分到達)
subscribe
8客戶端到伺服器
客戶端請求訂閱
suback
9伺服器到客戶端
訂閱確認
unsubscribe
10客戶端到伺服器
請求取消訂閱
unsuback
11伺服器到客戶端
取消訂閱確認
pingreq
12客戶端到伺服器
ping請求
pingresp
13伺服器到客戶端
ping應答
disconnect
14客戶端到伺服器
中斷連線
reserved
15不可用
保留位位置:byte 1, bits 3-0。
在不使用標識位的訊息型別中,標識位被做為保留位。如果收到無效的標誌時,接收端必須關閉網路連線:
資料報標識位
bit 3
bit 2
bit 1
bit 0
connect
保留位000
0connack
保留位000
0publish
mqtt 3.1.1使用
dup1
qos2
qos2
retain3
puback
保留位000
0pubrec
保留位000
0pubrel
保留位000
0pubcomp
保留位000
0subscribe
保留位000
0suback
保留位000
0unsubscribe
保留位000
0unsuback
保留位000
0pingreq
保留位000
0pingresp
保留位000
0disconnect
保留位000
0retain
: 發布保留標識,表示伺服器要保留這次推送的資訊,如果有新的訂閱者出現,就把這訊息推送給它,如果設有那麼推送至當前訂閱者後釋放。
位置:byte 1。
固定頭的第二位元組用來儲存變長頭部和訊息體的總大小的,但不是直接儲存的。這一位元組是可以擴充套件,其儲存機制,前7位用於儲存長度,後一部用做標識。當最後一位為 1時,表示長度不足,需要使用二個位元組繼續儲存。 例如:計算出後面的大小為0
mqtt
資料報中包含乙個可變頭,它駐位於固定的頭和負載之間。可變頭的內容因資料報型別而不同,較常的應用是做為包的標識:
bit765
4321
0byte 1
包標籤符(msb)
byte 2…
包標籤符(lsb)
很多態別資料報中都包括乙個2位元組的資料報標識字段,這些型別的包有:publish (qos > 0)、puback、pubrec、pubrel、pubcomp、subscribe、suback、unsubscribe、unsuback
payload
訊息體位mqtt
資料報的第三部分,connect、subscribe、suback、unsubscribe四種型別的訊息 有訊息體:
MQTT 協議解析
wireshark安裝包 網路抓包工具 qmqtt原始碼 mqtt客戶端原始碼 qt版本 官網 英文版協議說明文件 中文版協議說明文件 1.1幀結構 fixed header,present in all mqtt control packets variable header,present in...
MQTT協議 MQTT協議簡介
mqtt messagequeuing telemetry transport,訊息佇列遙測傳輸 是ibm開發的乙個即時通訊協議。mqtt是面向m2m和物聯網的連線協議,採用輕量級發布和訂閱訊息傳輸機制。它的設計思想是輕巧 開放 簡單 規範,因此易於實現。這些特點使得它對很多場景來說都是很好的選擇,...
mqtt介紹 協議解析
物聯網 internet of things,iot 最近 率越來越高。雖然http是網頁的事實標準,不過機器之間 machine to machine,m2m 的大規模溝通需要不同的模式 之前的請求 回答 request response 模式不再合適,取而代之的是發布 訂閱 publish su...