MQTT協議簡介及協議原理

2021-09-29 07:39:32 字數 2205 閱讀 9093

mqtt(message queuing telemetry transport,訊息佇列遙測傳輸協議),是一種基於發布/訂閱(publish/subscribe)模式的「輕量級」通訊協議,該協議構建於tcp/ip協議上,由ibm在2023年發布。mqtt最大優點在於,可以以極少的**和有限的頻寬,為連線遠端裝置提供實時可靠的訊息服務。做為一種低開銷、低頻寬占用的即時通訊協議,使其在物聯網、小型裝置、移動應用等方面有較廣泛的應用。

如上圖所示,客戶端a連線到訊息**(message broker),訊息**返回確認訊息。客戶b發布訊息溫度25度,客戶a訂閱『溫度』,訊息**吧訊息推給客戶a,客戶a發布溫度20度,但客戶b沒有訂閱,訊息**不推送。訊息b又發布了溫度38度,客戶a就再次收到訂閱的訊息38度。最後客戶端斷開連線。整個過程非常簡單清晰,容易理解。

mqtt支援三種qos等級:

qos 0:「最多一次」,訊息發布完全依賴底層 tcp/ip 網路。分發的訊息可能丟失或重複。例如,這個等級可用於環境感測器資料,單次的資料丟失沒關係,因為不久後還會有第二次傳送。

qos 1:「至少一次」,確保訊息可以到達,但訊息可能會重複。

qos 2:「只有一次」,確保訊息只到達一次。例如,這個等級可用在乙個計費系統中,這裡如果訊息重複或丟失會導致不正確的收費。

mqtt的訊息型別

1 connect – 連線服務端:客戶端到服務端的網路連線建立後, 客戶端傳送給服務端的第乙個報文必須是connect報文

2 connack – 確認連線請求:服務端傳送connack報文響應從客戶端收到的connect報文。 服務端傳送給客戶端的第乙個報文必須是connack。如果客戶端在合理的時間內沒有收到服務端的connack報文, 客戶端應該關閉網路連線。合理的時間取決於應用的型別和通訊基礎設施。

3 publish – 發布訊息:publish控制報文是指從客戶端向服務端或者服務端向客戶端傳輸乙個應用訊息。

4 puback –發布確認:puback報文是對qos 1等級的publish報文的響應。

5 pubrec – 發布收到( qos 2, 第一步):pubrec報文是對qos等級2的publish報文的響應。 它是qos 2等級協議交換的第二個報文。

6 pubrel – 發布釋放( qos 2, 第二步):pubrel報文是對pubrec報文的響應。 它是qos 2等級協議交換的第三個報文。

7 pubcomp – 發布完成( qos 2, 第三步):pubcomp報文是對pubrel報文的響應。 它是qos 2等級協議交換的第四個也是最後乙個報文。

8 subscribe - 訂閱主題:客戶端向服務端傳送subscribe報文用於建立乙個或多個訂閱。 每個訂閱註冊客戶端關心的乙個或多個主題。 為了將應用訊息**給與那些訂閱匹配的主題, 服務端傳送publish報文給客戶端。 subscribe報文也( 為每個訂閱) 指定了最大的qos等級, 服務端根據這個傳送應用訊息給客戶端。

9 suback – 訂閱確認:服務端傳送suback報文給客戶端, 用於確認它已收到並且正在處理subscribe報文。

10 unsubscribe –取消訂閱:客戶端傳送unsubscribe報文給服務端, 用於取消訂閱主題。

11 unsuback – 取消訂閱確認:服務端傳送unsuback報文給客戶端用於確認收到unsubscribe報文。

12 pingreq – 心跳請求:客戶端傳送pingreq報文給服務端的。 用於:1. 在沒有任何其它控制報文從客戶端發給服務的時, 告知服務端客戶端還活著。2. 請求服務端傳送 響應確認它還活著。3. 使用網路以確認網路連線沒有斷開。

13 pingresp – 心跳響應:服務端傳送pingresp報文響應客戶端的pingreq報文。 表示服務端還活著。

14 disconnect –斷開連線:disconnect報文是客戶端發給服務端的最後乙個控制報文。 表示客戶端正常斷開連線。

mqtt傳輸的訊息分為:主題(topic)和負載(payload)兩部分

topic,可以理解為訊息的型別,訂閱者訂閱(subscribe)後,就會收到該主題的訊息內容(payload)

payload,可以理解為訊息的內容,是指訂閱者具體要使用的內容

MQTT協議 MQTT協議簡介及協議原理

mqtt message queuing telemetry transport,訊息佇列遙測傳輸協議 是一種基於發布 訂閱 publish subscribe 模式的 輕量級 通訊協議,該協議構建於tcp ip協議上,由ibm在1999年發布。mqtt最大優點在於,可以以極少的 和有限的頻寬,為連...

MQTT協議 MQTT協議簡介及協議原理

mqtt message queuing telemetry transport,訊息佇列遙測傳輸協議 是一種基於發布 訂閱 publish subscribe 模式的 輕量級 通訊協議,該協議構建於tcp ip協議上,由ibm在1999年發布。mqtt最大優點在於,可以以極少的 和有限的頻寬,為連...

MQTT協議 MQTT協議簡介及協議原理

mqtt message queuing telemetry transport,訊息佇列遙測傳輸協議 是一種基於發布 訂閱 publish subscribe 模式的 輕量級 通訊協議,該協議構建於tcp ip協議上,由ibm在1999年發布。mqtt最大優點在於,可以以極少的 和有限的頻寬,為連...