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