mqtt(message queuing telemetry transport,訊息佇列遙測傳輸協議),是一種基於發布/訂閱(publish/subscribe)模式的「輕量級」通訊協議,該協議構建於tcp/ip協議上,由ibm在2023年發布。mqtt最大優點在於,可以以極少的**和有限的頻寬,為連線遠端裝置提供實時可靠的訊息服務。做為一種低開銷、低頻寬占用的即時通訊協議,使其在物聯網、小型裝置、移動應用等方面有較廣泛的應用。
1. mqtt協議特點
mqtt是乙個基於客戶端-伺服器的訊息發布/訂閱傳輸協議。mqtt協議是輕量、簡單、開放和易於實現的,這些特點使它適用範圍非常廣泛。在很多情況下,包括受限的環境中,如:機器與機器(m2m)通訊和物聯網(iot)。其在,通過衛星鏈路通訊感測器、偶爾撥號的醫療裝置、智慧型家居、及一些小型化裝置中已廣泛使用。
mqtt協議當前版本為,2023年發布的mqtt v3.1.1。除標準版外,還有乙個簡化版mqtt-sn,該協議主要針對嵌入式裝置,這些裝置一般工作於百tcp/ip網路,如:zigbee。
mqtt協議執行在tcp/ip或其他網路協議,提供有序、無損、雙向連線。其特點包括:
使用的發布/訂閱訊息模式,它提供了一對多訊息分發,以實現與應用程式的解耦。
對負載內容遮蔽的訊息傳輸機制。
對傳輸訊息有三種服務質量(qos):
最多一次,這一級別會發生訊息丟失或重複,訊息發布依賴於底層tcp/ip網路。即:<=1
至多一次,這一級別會確保訊息到達,但訊息可能會重複。即:>=1
只有一次,確保訊息只有一次到達。即:=1。在一些要求比較嚴格的計費系統中,可以使用此級別
資料傳輸和協議交換的最小化(協議頭部只有2位元組),以減少網路流量
通知機制,異常中斷時通知傳輸雙方
2. mqtt協議原理
2.1 mqtt協議實現方式
實現mqtt協議需要:客戶端和伺服器端
mqtt協議中有三種身份:發布者(publish)、**(broker)(伺服器)、訂閱者(subscribe)。其中,訊息的發布者和訂閱者都是客戶端,訊息**是伺服器,訊息發布者可以同時是訂閱者。
mqtt傳輸的訊息分為:主題(topic)和負載(payload)兩部分
topic,可以理解為訊息的型別,訂閱者訂閱(subscribe)後,就會收到該主題的訊息內容(payload)
payload,可以理解為訊息的內容,是指訂閱者具體要使用的內容
2.2 網路傳輸與應用訊息
mqtt會構建底層網路傳輸:它將建立客戶端到伺服器的連線,提供兩者之間的乙個有序的、無損的、基於位元組流的雙向傳輸。
當應用資料通過mqtt網路傳送時,mqtt會把與之相關的服務質量(qos)和主題名(topic)相關連。
2.3 mqtt客戶端
乙個使用mqtt協議的應用程式或者裝置,它總是建立到伺服器的網路連線。客戶端可以:
發布其他客戶端可能會訂閱的資訊
訂閱其它客戶端發布的訊息
退訂或刪除應用程式的訊息
斷開與伺服器連線
2.4 mqtt伺服器
mqtt伺服器以稱為「訊息**」(broker),可以是乙個應用程式或一台裝置。它是位於訊息發布者和訂閱者之間,它可以:
接受來自客戶的網路連線
接受客戶發布的應用資訊
處理來自客戶端的訂閱和退訂請求
向訂閱的客戶**應用程式訊息
2.5 mqtt協議中的訂閱、主題、會話
訂閱(subscription)
訂閱包含主題篩選器(topic filter)和最大服務質量(qos)。訂閱會與乙個會話(session)關聯。乙個會話可以包含多個訂閱。每乙個會話中的每個訂閱都有乙個不同的主題篩選器。
會話(session)
每個客戶端與伺服器建立連線後就是乙個會話,客戶端和伺服器之間有狀態互動。會話存在於乙個網路之間,也可能在客戶端和伺服器之間跨越多個連續的網路連線。
主題名(topic name)
連線到乙個應用程式訊息的標籤,該標籤與伺服器的訂閱相匹配。伺服器會將訊息傳送給訂閱所匹配標籤的每個客戶端。
主題篩選器(topic filter)
乙個對主題名萬用字元篩選器,在訂閱表示式中使用,表示訂閱所匹配到的多個主題。
負載(payload)
訊息訂閱者所具體接收的內容
2.6 mqtt協議中的方法
mqtt協議中定義了一些方法(也被稱為動作), 來於表示對確定資源所進行操作。 這個資源可以代表預先存在的資料或動態生成資料,這取決於伺服器的實現。通常來說,資源指伺服器上的檔案或輸出。
connect,等待與伺服器建立連線
disconnect,等待mqtt客戶端完成所做的工作,並與伺服器斷開tcp/ip會話
subscribe,等待完成訂閱
unsubscribe,等待伺服器取消客戶端的乙個或多個topics訂閱
publish,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最大優點在於,可以以極少的 和有限的頻寬,為連...
MQTT協議 MQTT協議簡介
mqtt messagequeuing telemetry transport,訊息佇列遙測傳輸 是ibm開發的乙個即時通訊協議。mqtt是面向m2m和物聯網的連線協議,採用輕量級發布和訂閱訊息傳輸機制。它的設計思想是輕巧 開放 簡單 規範,因此易於實現。這些特點使得它對很多場景來說都是很好的選擇,...