mqtt協議基本介紹
簡介mqtt(message queuing telemetry transport,訊息佇列遙測傳輸協議),是一種基於發布/訂閱(publish/subscribe)模式的"輕量級"通訊協議,該協議構建於tcp/ip協議上,由ibm在2023年發布。mqtt最大優點在於,可以以極少的**和有限的頻寬,為連線遠端裝置提供實時可靠的訊息服務。作為一種低開銷、低頻寬占用的即時通訊協議,使其在物聯網、小型裝置、移動應用等方面有較廣泛的應用。
mqtt協議是輕量、簡單、開放和易於實現的,這些特點使它適用範圍非常廣泛。在很多情況下,包括受限的環境中,如:機器與機器(m2m)通訊和物聯網(iot)。其在,通過衛星鏈路通訊感測器、偶爾撥號的醫療裝置、智慧型家居、及一些小型化裝置中已廣泛使用。
特點與優勢
適用於低頻寬,小型傳輸,開銷很小。
基於發布/訂閱的體系結構,基於事件的驅動,可以實現一對多的訊息發布以及應用解耦
使用tcp/ip提供網路連線。
使用last will和testament特性通知有關各方客戶端異常中斷的機制。
有三種訊息發布服務質量。
對負載內容遮蔽的訊息傳輸。
mqtt協議原理
通訊過程中mqtt協議具有三種身份,即發布者(publish)、**(broker伺服器)、訂閱者(subscribe)。
其中主要包括兩個部分
topic:主題(主題是乙個簡單的字串,可以有更多的層次結構級別,用斜槓分隔,如:/sys//thing/register),在客戶端訂閱主題以後,就可以收到此類主題的publish訊息。
payload:負載資訊,也就是訊息內容 在iot中主要是裝置定義協議發來的資訊(json資料等)
sequencediagram
客戶端 ->> 服務端:tcp連線(三次握手)
客戶端 ->> 服務端:connect報文連線
服務端 ->> 客戶端:conack響應連線mqtt完成
客戶端 ->> 服務端:心跳pingreq
服務端 ->> 客戶端:響應心跳pingresp
客戶端 ->> 服務端:訂閱主題subscribe(可以包含多個帶有訂閱的主題topic)
客戶端 ->> 服務端:publish發布資訊(帶有主題topic)
服務端 ->> 客戶端:publish發布資訊(帶有主題topic)
```
其中,客戶端可以發布/訂閱(可以是其他客戶端的)資訊,取消訂閱關閉連線,服務端可以接受客戶端發來的資訊,處理客戶端訂閱與退訂資訊,向有相關訂閱資訊客戶端傳送資訊。
mqtt協議資料結構
固定頭(fixed header)主要是表示資料報型別與分組標識
可變頭(variable header) 根據固定頭的資料報型別決定
負載(payload訊息體)這個是傳送的具體資料
mqtt協議的固定頭部
第乙個位元組資訊,messagetype代表了訊息的型別
服務質量
1. 至多一次 qos = 0 這個代表訊息會傳送一次,不管有沒有到達服務端
2. 至少一次 qos =1 這個代表會保證服務到達一次,服務端通過puback來響應,這樣就算一次,如果通訊異常就會重發這條在訊息頭中設定了dup(固定頭部的資料)位的訊息
3. 一次 qos=2 這個會執行一次而且只有一次。
服務質量對應頭報文資訊型別
puback 報文是對 qos 1 等級的 publish 報文的響應,即只有當publish發布qos 1 等級的訊息時,伺服器才會發出對應的響應報文
pubrec報文是對qos等級2的publish報文的響應。它是qos 2等級協議交換的第二個報文。真正能實現qos2等級訊息而且沒有效能問題的broker或mqtt server的很少。
pubrel報文是對pubrec報文的響應。它是qos 2等級協議交換的第三個報文。
pubcomp報文是對pubrel報文的響應。它是qos 2等級協議交換的第四個也是最後乙個報文。
mqtt介紹 協議解析
物聯網 internet of things,iot 最近 率越來越高。雖然http是網頁的事實標準,不過機器之間 machine to machine,m2m 的大規模溝通需要不同的模式 之前的請求 回答 request response 模式不再合適,取而代之的是發布 訂閱 publish su...
MQTT協議 MQTT協議簡介
mqtt messagequeuing telemetry transport,訊息佇列遙測傳輸 是ibm開發的乙個即時通訊協議。mqtt是面向m2m和物聯網的連線協議,採用輕量級發布和訂閱訊息傳輸機制。它的設計思想是輕巧 開放 簡單 規範,因此易於實現。這些特點使得它對很多場景來說都是很好的選擇,...
MQTT協議 MQTT協議解析
協議就是通訊雙方的乙個約定,即,表示第1位傳輸的什麼 第2位傳輸的什麼 在mqtt協議中,乙個mqtt資料報由 固定頭 fixed header 可變頭 variable header 訊息體 payload 三部分構成。mqtt 資料報結構 固定頭存在於所有mqtt資料報中,其結構如下 bit76...