MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸)是ISO標準下基于發(fā)布/訂閱方式的輕量級消息協(xié)議。MQTT通常使用TCP / IP(傳輸控制協(xié)議/Internet協(xié)議)作為其傳輸,但也可以使用其他雙向傳輸。MQTT通常應用于物聯(lián)網(wǎng)、智能家居等設備和應用程序之間的通信。在嵌入式領域,MQTT已經(jīng)占據(jù)著無法替代的分量,因為大多數(shù)的嵌入式設備,都需要這樣的協(xié)議進行數(shù)據(jù)交互。
MQTT協(xié)議的主要特點
(1)開放消息協(xié)議,簡單易實現(xiàn)。
(2)發(fā)布訂閱模式,一對多消息發(fā)布。
(3)基于TCP/IP網(wǎng)絡連接,提供有序、無損、雙向連接。
(4)1字節(jié)固定報頭,2字節(jié)心跳報文,最小化傳輸開銷和協(xié)議交換,有效減少網(wǎng)絡流量。
(5)消息QoS支持可靠傳輸保證。
MQTT深層特性
01
一對多信息發(fā)布
首先,他是基于訂閱與發(fā)布的一種協(xié)議,所以他可以一對多地進行消息發(fā)布,這樣的功能應用場景非常多,局限性廣播能夠讓服務器靈活控制想要控制的那個設備,并且服務器可以提供多個可以訂閱的主題,這是極為關(guān)鍵的。
因為對于服務器而言,接收數(shù)據(jù)并處理是核心任務,但是當設備的增多、設備功能行的增多,服務器處理邏輯將會幾何倍數(shù)增長。同樣是接收的數(shù)據(jù),也許是完全不同類設備上傳的完全不一樣的信息,所以當可以提供多個訂閱主題與發(fā)布主題時,這種邏輯上的差異性就能被區(qū)分開,給開發(fā)者帶來了很大的便利。
02
不同底層協(xié)議
MQTT的第二個特性其實就是他基于了TCP/IP而生,注定它是靠上層的一個協(xié)議,現(xiàn)在接觸的其實大多都是基于TCP協(xié)議而開發(fā)的,但它其實是有基于UDP版本的,名為MQTT-SN,但大家都知道,TCP面向連接,而UDP不面向連接,所以基于不同的底層協(xié)議類型,MQTT展現(xiàn)的特性肯定也是不同的。
03
消息可靠性
對于常用的MQTT協(xié)議,它有一個很重要的保證消息可靠性的特性——QoS(服務質(zhì)量),QoS可分為三個等級:QoS 0、QoS 1、QoS 2。
QoS 0其實相當于MQTT沒有做額外信息保護,因為本身是基于TCP協(xié)議的,所以其消息可靠性完全依賴于TCP協(xié)議。而QoS 1,則是代表至少承諾會有一次發(fā)送給接收者,這是在MQTT層進行的信息保護,而不只是依靠TCP協(xié)議層。最后QoS 2,則是保證消息僅僅傳送到目的地一次。
因為對于QoS 1,可能會因為消息沒有反饋而多次發(fā)送,而接收方也可能收到多次消息,為此,QoS 2傳輸?shù)南в形ㄒ坏腎D,帶有唯一消息ID的消息會存儲兩次,首先來自發(fā)送者,然后是接收者QoS級別2在網(wǎng)絡中具有最高的開銷,因為在發(fā)送方和接收方之間需要兩個流。
MQTT兩個主要版本
MQTT有v3 和 v5兩個主要版本。這兩個版本原理基本相同,但它們之間存在一些關(guān)鍵的差異,下面將從以下幾個方面來介紹它們之間的區(qū)別。
01
主題別名
主題是MQTT中的核心概念,它用于標識消息的內(nèi)容和意圖。在MQTT v3中,主題只是一個簡單的字符串,其結(jié)構(gòu)是由一系列以斜杠分隔的單詞組成的。例如,一個 MQTT v3主題可以是 sensors/temperature/room1,其中sensors是頂級主題,temperature是其子主題,room1是子主題下的一個特定設備。
然而,在 MQTT v5中,主題的結(jié)構(gòu)得到了擴展,新增了一些更高級的功能。具體來說,MQTT v5引入了一個名為主題別名的新概念,它允許客戶端將主題字符串映射到預定義的主題ID,從而減少網(wǎng)絡流量和消息大小。這使得客戶端能夠在發(fā)送消息時只發(fā)送主題ID,而不必每次都發(fā)送完整的主題字符串。這對于IoT設備和網(wǎng)絡帶寬有限的環(huán)境來說非常有用。
02
訂閱操作
MQTT v5引入了一種名為共享訂閱的新訂閱類型。如下圖所示,共享訂閱允許多個客戶端共享一個訂閱,并按照一定規(guī)則進行分配。這種訂閱類型對于訂閱高負載主題非常有用,因為它可以平衡訂閱請求,減輕單個客戶端的負載壓力。
另外MQTT v5增加了訂閱選項的概念,可以指定訂閱選項,例如QoS等級、Retain As Publish、Retain Handling、消息的生命周期等,來對訂閱行為進行更加精細地控制。
03
遺囑消息
遺囑消息是MQTT為那些可能出現(xiàn)意外斷線的設備提供的將遺囑優(yōu)雅地發(fā)送給第三方的能力。
Will Properties是MQTT v5新增的一個字段,不同類型的報文有著不同的屬性,例如CONNECT報文有最大報文長度、會話過期間隔等屬性,SUBSCRIBE報文則有訂閱標識符等屬性。而且MQTT v5較v3相比,遺囑消息的內(nèi)容變得更加靈活,可以包含任何主題和任何消息內(nèi)容。
04
錯誤處理
MQTT v5支持更加詳細的錯誤處理機制,可以通過錯誤碼和錯誤原因來定位和解決問題。同時,MQTT v5還引入了一個新的控制報文——Disconnect報文,可以幫助客戶端和服務器更好地處理錯誤情況。
05
流量控制
MQTT v5在v3版本基礎上引入了一些新的機制用于流量控制,為了更好地控制消息的傳輸和處理,避免因為消息傳輸速度過快導致的網(wǎng)絡擁塞和負載過高。
最大報文大小限制(Maximum Packet Size):MQTT v5 允許客戶端和服務端在握手時協(xié)商最大報文大小。如下圖所示,這個最大報文大小限制可以用于控制客戶端和服務端之間傳輸?shù)淖畲笙⒋笮?,防止因為傳輸?shù)南⑦^大導致網(wǎng)絡擁塞和負載過高。
消息隊列(Message Queue):當服務端發(fā)送的消息超出了客戶端處理的速度時,服務端可以將消息存儲到消息隊列中,等待客戶端處理。MQTT v5 定義了消息隊列的隊列大小和超時時間,以控制消息隊列的大小和生命周期。
06
性能與效率
MQTT v5相對于MQTT v3來說,可以更好地處理大規(guī)模的數(shù)據(jù)傳輸,提高了通信的效率和性能。例如MQTT v5支持批量發(fā)布(Batch Publish)和預?。∕essage Prefetch)等功能,可以大大減少MQTT通信時的開銷。
總之,MQTT v5相比于MQTT v3具有更多的新功能和安全性。但是,需要注意的是MQTT v5相對于MQTT v3增加了很多新的功能和概念,因此在使用MQTT v5時,需要對MQTT協(xié)議的新特性進行深入的了解,以便可以更好地使用這個新協(xié)議來構(gòu)建可靠的應用程序。
MQTT協(xié)議于物聯(lián)網(wǎng)有何好處?
01
操作簡單
啟動和運行MQTT既快速又簡單,有數(shù)百萬個現(xiàn)成的客戶端應用程序和幾乎同樣多的代理可應用。
02
安全可靠
許多物聯(lián)網(wǎng)設備依靠無線電連接來傳輸和收集數(shù)據(jù),這意味著連接并不總是可靠的。MQTT可以允許將消息存儲在代理中,直到設備準備好接收它。由于QoS(服務質(zhì)量),MQTT能夠?qū)ο⑦M行排隊,確保它們到達目的地,如果需要,請確保它們只到達一次。
03
雙向消息傳遞
也許更準確地說MQTT是全向的。任何設備、事物或應用程序都可以發(fā)布或訂閱代理處理的任何主題。這意味著在網(wǎng)絡上可以交談或收聽的內(nèi)容沒有限制。
04
大規(guī)模消息傳遞
將消息廣播到一百萬臺設備與發(fā)送到一百臺設備一樣容易,要被網(wǎng)絡上的所有內(nèi)容聽到,事物只需要發(fā)布到所有設備都訂閱的主題。
歸根結(jié)底,物聯(lián)網(wǎng)(IoT)有一項工作就是在網(wǎng)絡上獲取設備之間的數(shù)據(jù)。而這些網(wǎng)絡可能位于世界任何地方,每個網(wǎng)絡都面臨著許多可能導致它們數(shù)據(jù)傳輸失敗的情況,MQTT具有無數(shù)內(nèi)置的功能來幫助緩解其中一些問題,從而讓使用者的煩惱有所減少。
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2931文章
46251瀏覽量
392775 -
智能家居
+關(guān)注
關(guān)注
1934文章
9806瀏覽量
190620 -
MQTT
+關(guān)注
關(guān)注
5文章
682瀏覽量
23723
發(fā)布評論請先 登錄
簡析Modbus和MQTT協(xié)議
MQTT為何成為物聯(lián)網(wǎng)協(xié)議
KaihongOS操作系統(tǒng):MQTT物聯(lián)網(wǎng)通訊協(xié)議
基于MQTT協(xié)議的車云通信設計

百問MQTT協(xié)議分析 - MQTT簡述及協(xié)議報文格式組成
MQTT-3.1.1標準協(xié)議文檔
【教程】設備通過MQTT協(xié)議接入OneNET平臺,建立可視化界面

MQTT物聯(lián)網(wǎng)云平臺有什么功能
MQTT.fx 連接Onenet 多協(xié)議接入平臺 MQTT協(xié)議(舊版)詳解


物聯(lián)網(wǎng)行業(yè)中MQTT通信協(xié)議詳解以及使用

MQTT協(xié)議網(wǎng)關(guān)的工作原理及功能特性

鋇錸技術(shù)Modbus轉(zhuǎn)MQTT網(wǎng)關(guān):橋接Modbus協(xié)議與MQTT協(xié)議

基于MQTT協(xié)議云平臺的Modbus轉(zhuǎn)MQTT網(wǎng)關(guān)

鋇錸協(xié)議網(wǎng)關(guān)輕松實現(xiàn)Modbus轉(zhuǎn)MQTT協(xié)議

評論