MQTT協議 MQTT協議解析

2021-10-18 04:32:26 字數 2458 閱讀 1650

協議就是通訊雙方的乙個約定,即,表示第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...