由於在充電樁專案中和雲平台通訊用的是mqtt協議,所以來簡單學習了解下mqtt協議。
mqtt(message queuing telemetry transport,訊息佇列遙測傳輸協議),是一種基於發布/訂閱(publish/subscribe)模式的「輕量級」通訊協議,該協議構建於tcp/ip協議上,由ibm在2023年發布。mqtt最大優點在於,可以以極少的**和有限的頻寬,為連線遠端裝置提供實時可靠的訊息服務。作為一種低開銷、低頻寬占用的即時通訊協議,使其在物聯網、小型裝置、移動應用等方面有較廣泛的應用。
mqtt是乙個基於客戶端-伺服器的訊息發布/訂閱傳輸協議。mqtt協議是輕量、簡單、開放和易於實現的,這些特點使它適用範圍非常廣泛。在很多情況下,包括受限的環境中,如:機器與機器(m2m)通訊和物聯網(iot)。其在,通過衛星鏈路通訊感測器、偶爾撥號的醫療裝置、智慧型家居、及一些小型化裝置中已廣泛使用。
由於物聯網的環境是非常特別的,所以mqtt遵循以下設計原則:
(1)精簡,不新增可有可無的功能;
(2)發布/訂閱(pub/sub)模式,方便訊息在感測器之間傳遞;
(3)允許使用者動態建立主題,零運維成本;
(4)把傳輸量降到最低以提高傳輸效率;
(5)把低頻寬、高延遲、不穩定的網路等因素考慮在內;
(6)支援連續的會話控制;
(7)理解客戶端計算能力可能很低;
(8)提供服務質量管理;
(9)假設資料不可知,不強求傳輸資料的型別與格式,保持靈活性。
(1)使用發布/訂閱訊息模式,提供一對多的訊息發布,解除應用程式耦合。
這一點很類似於xmpp,但是mqtt的資訊冗餘遠小於xmpp,,因為xmpp使用xml格式文本來傳遞資料。
(2)對負載內容遮蔽的訊息傳輸。
(3)使用tcp/ip提供網路連線。
主流的mqtt是基於tcp連線進行資料推送的,但是同樣有基於udp的版本,叫做mqtt-sn。這兩種版本由於基於不同的連線方式,優缺點自然也就各有不同了。
(4)有三種訊息發布服務質量:
「至少一次」,確保訊息到達,但訊息重複可能會發生。
(5)小型傳輸,開銷很小(固定長度的頭部是2位元組),協議交換最小化,以降低網路流量。
這就是為什麼在介紹裡說它非常適合「在物聯網領域,感測器與伺服器的通訊,資訊的收集」,要知道嵌入式裝置的運算能力和頻寬都相對薄弱,使用這種協議來傳遞訊息再適合不過了。
(6)使用last will和testament特性通知有關各方客戶端異常中斷的機制。
last will:即遺言機制,用於通知同一主題下的其他裝置傳送遺言的裝置已經斷開了連線。
testament:遺囑機制,功能類似於last will。
實現mqtt協議需要客戶端和伺服器端通訊完成,在通訊過程中,mqtt協議中有三種身份:發布者(publish)、**(broker)(伺服器)、訂閱者(subscribe)。其中,訊息的發布者和訂閱者都是客戶端,訊息**是伺服器,訊息發布者可以同時是訂閱者。
mqtt傳輸的訊息分為:主題(topic)和負載(payload)兩部分:
(1)topic,可以理解為訊息的型別,訂閱者訂閱(subscribe)後,就會收到該主題的訊息內容(payload);
(2)payload,可以理解為訊息的內容,是指訂閱者具體要使用的內容。
mqtt會構建底層網路傳輸:它將建立客戶端到伺服器的連線,提供兩者之間的乙個有序的、無損的、基於位元組流的雙向傳輸。
當應用資料通過mqtt網路傳送時,mqtt會把與之相關的服務質量(qos)和主題名(topic)相關連。
乙個使用mqtt協議的應用程式或者裝置,它總是建立到伺服器的網路連線。客戶端可以:
(1)發布其他客戶端可能會訂閱的資訊;
(2)訂閱其它客戶端發布的訊息;
(3)退訂或刪除應用程式的訊息;
(4)斷開與伺服器連線。
mqtt伺服器以稱為「訊息**」(broker),可以是乙個應用程式或一台裝置。它是位於訊息發布者和訂閱者之間,它可以:
(1)接受來自客戶的網路連線;
(2)接受客戶發布的應用資訊;
(3)處理來自客戶端的訂閱和退訂請求;
(4)向訂閱的客戶**應用程式訊息。
一、訂閱(subscription)
訂閱包含主題篩選器(topic filter)和最大服務質量(qos)。訂閱會與乙個會話(session)關聯。乙個會話可以包含多個訂閱。每乙個會話中的每個訂閱都有乙個不同的主題篩選器。
二、會話(session)
每個客戶端與伺服器建立連線後就是乙個會話,客戶端和伺服器之間有狀態互動。會話存在於乙個網路之間,也可能在客戶端和伺服器之間跨越多個連續的網路連線。
三、主題名(topic name)
連線到乙個應用程式訊息的標籤,該標籤與伺服器的訂閱相匹配。伺服器會將訊息傳送給訂閱所匹配標籤的每個客戶端。
四、主題篩選器(topic filter)
乙個對主題名萬用字元篩選器,在訂閱表示式中使用,表示訂閱所匹配到的多個主題。
五、負載(payload)
訊息訂閱者所具體接收的內容。
mqtt協議中定義了一些方法(也被稱為動作),來於表示對確定資源所進行操作。這個資源可以代表預先存在的資料或動態生成資料,這取決於伺服器的實現。通常來說,資源指伺服器上的檔案或輸出。主要方法有:
(1)connect。等待與伺服器建立連線。
(2)disconnect。等待mqtt客戶端完成所做的工作,並與伺服器斷開tcp/ip會話。
(3)subscribe。等待完成訂閱。
(4)unsubscribe。等待伺服器取消客戶端的乙個或多個topics訂閱。
(5)publish。mqtt客戶端傳送訊息請求,傳送完成後返回應用程式執行緒。
MQTT協議 MQTT協議簡介
mqtt messagequeuing telemetry transport,訊息佇列遙測傳輸 是ibm開發的乙個即時通訊協議。mqtt是面向m2m和物聯網的連線協議,採用輕量級發布和訂閱訊息傳輸機制。它的設計思想是輕巧 開放 簡單 規範,因此易於實現。這些特點使得它對很多場景來說都是很好的選擇,...
MQTT協議簡介
mqtt message queuing telemetry transport,訊息佇列遙測傳輸協議 是一種基於發布 訂閱 publish subscribe 模式的 輕量級 通訊協議,該協議構建於tcp ip協議上,由ibm在1999年發布。mqtt最大優點在於,可以以極少的 和有限的頻寬,為連...
MQTT協議簡介
簡介 mqtt全稱為 message queuing telemetry transport 訊息佇列遙測傳輸 是一種基於發布 訂閱正規化的,非常適合小型裝置或網路糟糕的環境下,因此被廣泛應用於iot系統中。mqtt工作在應用層,一般借助tcp ip實現資料報傳輸功能,mqtt在傳輸層上傳輸的是流資...