“平臺+應(yīng)用+硬件+數(shù)據(jù)”完整開放式生態(tài)系統(tǒng)
什么是MQTT ?
MQTT是一種輕量級的開放式消息傳遞協(xié)議,它為資源受限的網(wǎng)絡(luò)客戶端提供了一種在低帶寬環(huán)境中分發(fā)遙測信息的簡單方法.該協(xié)議采用發(fā)布/訂閱通信模式,用于機器對機器 (M2M)通訊。
作為一種低開銷協(xié)議創(chuàng)建以適應(yīng)帶寬和 CPU 限制,MQTT 被設(shè)計為在嵌入式環(huán)境中運行,它可以提供可靠、有效的通信路徑。MQTT 適用于連接代碼占用空間小的設(shè)備,對于由于偶爾的帶寬限制或不可靠的連接而經(jīng)歷不同延遲水平的無線網(wǎng)絡(luò)來說,它是一個不錯的選擇。MQTT最大優(yōu)點在于,用極少的代碼和有限的帶寬,為連接遠程設(shè)備提供實時可靠的消息服務(wù)。作為一種低開銷、低帶寬占用的即時通訊協(xié)議,使其在物聯(lián)網(wǎng)、小型設(shè)備、移動應(yīng)用等方面有較廣泛的應(yīng)用。
MQTT協(xié)議構(gòu)建于TCP/IP協(xié)議上,由IBM在1999年發(fā)布,一開始是專用于石油和天然氣行業(yè)的監(jiān)控和數(shù)據(jù)采集 ( SCADA ) 系統(tǒng)進行通信的協(xié)議,目前它逐漸在智能設(shè)備領(lǐng)域變得流行,日漸成為連接物聯(lián)網(wǎng)的領(lǐng)先開源協(xié)議 ( IoT ) 和工業(yè) IoT ( IIoT ) 設(shè)備。
雖然 MQTT 中的TT代表 Telemetry Transport,但MQ指的是一種名為 IBM MQ 的產(chǎn)品。盡管MQTT的拼寫有時被稱為消息隊列遙測傳輸,但 MQTT 通信中沒有消息隊列。
為了最大化可用帶寬,MQTT 的發(fā)布/訂閱(pub/sub)通信模型是直接與端點通信的傳統(tǒng)客戶端-服務(wù)器架構(gòu)的替代方案。相比之下,在pub/sub 模型中,發(fā)送消息的客戶端(發(fā)布者)與接收消息的客戶端(或訂閱者)分離。因為發(fā)布者和訂閱者之間都沒有直接聯(lián)系,所以第三方——經(jīng)紀人——負責(zé)他們之間的聯(lián)系。
MQTT 客戶端包括發(fā)布者和訂閱者,這些術(shù)語指的是客戶端是發(fā)布消息還是訂閱接收消息。這兩個功能可以在同一個 MQTT 客戶端中實現(xiàn)。當(dāng)設(shè)備(或客戶端)想要向服務(wù)器(或代理)發(fā)送數(shù)據(jù)時,它被稱為發(fā)布。當(dāng)操作反向時,它被稱為訂閱。在發(fā)布/訂閱模式下,多個客戶端可以連接到代理并訂閱他們感興趣的主題。
如果從訂閱客戶端到代理的連接中斷,那么代理將緩沖消息并在訂閱者重新聯(lián)機時將它們推送給訂閱者。如果從發(fā)布客戶端到代理的連接在沒有通知的情況下斷開,那么代理可以關(guān)閉連接并向訂閱者發(fā)送包含發(fā)布者指令的緩存消息。
一個 MQTT 會話分為四個階段:連接、認證、通信和終止。
客戶端首先使用代理的操作員定義的標準端口或自定義端口創(chuàng)建與代理的傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議 ( TCP/IP ) 連接。創(chuàng)建連接時,重要的是要認識到如果為服務(wù)器提供了重用的客戶端身份,它可能會繼續(xù)舊會話。
標準端口是 1883 用于非加密通信和 8883 用于加密通信 - 使用安全套接字層 ( SSL )/傳輸層安全性 ( TLS )。在 SSL/TLS 握手期間,客戶端驗證服務(wù)器證書并驗證服務(wù)器??蛻舳诉€可以在握手期間向代理提供客戶端證書。代理可以使用它來驗證客戶端。雖然不是 MQTT 規(guī)范的具體部分,但代理已經(jīng)習(xí)慣于使用 SSL/TLS 客戶端證書支持客戶端身份驗證。
因為 MQTT 協(xié)議旨在成為資源受限和 IoT 設(shè)備的協(xié)議,所以 SSL/TLS 可能并不總是一種選擇,并且在某些情況下可能不需要。在這種情況下,身份驗證顯示為明文用戶名和密碼,由客戶端發(fā)送到服務(wù)器——這是 CONNECT/CONNACK 數(shù)據(jù)包序列的一部分。此外,一些經(jīng)紀商,尤其是在互聯(lián)網(wǎng)上發(fā)布的公開經(jīng)紀商,將接受匿名客戶。在這種情況下,用戶名和密碼只需留空即可。
MQTT 被認為是一種輕量級協(xié)議,因為其所有消息的代碼占用量都很小。每條消息都由一個固定的標頭(2個字節(jié))、一個可選的可變標頭、一個限制為 256 兆字節(jié) (MB) 信息的消息有效負載和一個服務(wù)質(zhì)量 ( QoS ) 級別組成。
在通信階段,客戶端可以執(zhí)行發(fā)布、訂閱、取消訂閱和ping操作。發(fā)布操作將二進制數(shù)據(jù)塊(內(nèi)容)發(fā)送到發(fā)布者定義的主題。
MQTT 支持最大 256 MB 的消息二進制大對象 (BLOB)。內(nèi)容的格式將是特定于應(yīng)用程序的。使用 SUBSCRIBE/SUBACK 數(shù)據(jù)包對進行主題訂閱,并且使用 UNSUBSCRIBE/UNSUBACK 數(shù)據(jù)包對類似地執(zhí)行取消訂閱。
三物數(shù)字致力于為企業(yè)提供數(shù)據(jù)采集、邊緣網(wǎng)關(guān)、智能網(wǎng)關(guān)、云邊平臺、工業(yè)互聯(lián)網(wǎng)平臺等產(chǎn)品,解決工業(yè)企業(yè)設(shè)備互聯(lián),設(shè)備上云、產(chǎn)品智能化等難題。聯(lián)系我們:4001-6-66-98