色猫咪av在线网址_91精品国产福利在线观看雪梨还会玩转热点_丁香花的视频免费观看_国产手机在线A∨免费视频_十八禁av无码免费网站APP_综合色一区二区亚洲_日韩精品小电影_漂亮人妻熟睡中被公侵犯_全新成人高清无码片_高级厕所偷窥白领美女嘘嘘

當(dāng)前位置: 首頁 >應(yīng)用方案 >技術(shù)應(yīng)用 >

MQTT通信協(xié)議報(bào)文詳解


MQTT通信協(xié)議作為目前最主流的物聯(lián)網(wǎng)協(xié)議,大家應(yīng)該都很熟悉,包括阿里云、百度云等都是通過MQTT協(xié)議來實(shí)現(xiàn)通訊的,與HTTP通信協(xié)議一樣,其本身都是建立在TCP/IP協(xié)議上,本文會(huì)詳細(xì)介紹MQTT報(bào)文協(xié)議,讓大家直觀地感受到MQTT通信協(xié)議報(bào)文的結(jié)構(gòu)與內(nèi)容。

MQTT報(bào)文詳解

在探究MQTT通信協(xié)議底層的報(bào)文之前,大家還應(yīng)該對(duì)于MQTT通信協(xié)議本身的工作模式有一個(gè)簡(jiǎn)要直觀的了解。首先MQTT通信協(xié)議是一種低開銷、低帶寬占用的即時(shí)通訊協(xié)議,它本身是一種消息發(fā)布/訂閱的機(jī)制實(shí)現(xiàn)端與服務(wù)器通訊的協(xié)議。對(duì)于服務(wù)器而言,沒有訂閱的概念;而對(duì)于客戶端而言,既有發(fā)布概念,也有訂閱概念,客戶端通過發(fā)布主題向服務(wù)器發(fā)布信息,服務(wù)器收到信息后根據(jù)客戶端的發(fā)布主題對(duì)消息進(jìn)行處理。而消息的發(fā)布又要區(qū)分QoS概念,0/1/2分別對(duì)應(yīng)消息傳輸一次,保證傳輸一次以及保證僅僅傳輸一次,這些涉及到服務(wù)器與客戶端在通訊過程中是否有交互的過程。這幾個(gè)概念是MQTT通信協(xié)議主要的幾個(gè)概念,下面正式去詳解MQTT通信協(xié)議的報(bào)文內(nèi)容。

首先探究MQTT協(xié)議報(bào)文內(nèi)容,是直接使用TCP服務(wù)器進(jìn)行通訊的(不使用MQTT服務(wù)器),因?yàn)?/span>MQTT協(xié)議本身是基于TCP協(xié)議進(jìn)行通訊的,所以只要服務(wù)器向設(shè)備發(fā)起的請(qǐng)求連接報(bào)文以及訂閱報(bào)文進(jìn)行正確的回復(fù),普通的TCP服務(wù)器完全可以當(dāng)做MQTT服務(wù)器接收到客戶端發(fā)布的消息,并且能非常簡(jiǎn)單地將設(shè)備發(fā)送的包抓出來,其他手段類似于抓包工具也能實(shí)現(xiàn)但是并不能直觀幫助我們了解這一過程。

拿一個(gè)億佰特4G DTU設(shè)備舉例(其他設(shè)備也是一樣的),由于MQTT通信協(xié)議本身要配置三元組,我們將設(shè)備配置成標(biāo)準(zhǔn)MQTT協(xié)議工作模式,三元組按照下面的參數(shù)配置,然后目標(biāo)地址與端口直接填寫我們TCP服務(wù)器的地址與端口,訂閱與發(fā)布都勾選并且都按照如下進(jìn)行配置,然后觀察我們TCP服務(wù)器上交互的信息。

4G DTU配置

以下為TCP服務(wù)器端交互的信息:

MQTT服務(wù)器配置

連接MQTT通信協(xié)議第一步是請(qǐng)求TCP服務(wù)器連接,這一步由協(xié)議棧直接完成不需要管,然后客戶端會(huì)發(fā)送請(qǐng)求MQTT服務(wù)器連接報(bào)文,也就是上面的第一條消息:

第一個(gè)byte0x10,其為MQTT協(xié)議固定頭部分,此byte8個(gè)bit位分別代表了不同的意義,高四位與低四位的值分別代表的意義也貼在了下方:

MQTT報(bào)文

高四位信息

1MQTT協(xié)議報(bào)文

低四位信息:

2MQTT協(xié)議報(bào)文

以上就是固定頭部分的內(nèi)容,常見的固定頭以及其意義如下:

3MQTT協(xié)議報(bào)文

這里就能直觀理解MQTT通信協(xié)議交互過程中的幾個(gè)交互報(bào)文的頭部了,先是0x10為首的請(qǐng)求MQTT通信協(xié)議連接報(bào)文;其次是0x20為首的服務(wù)器響應(yīng)連接的報(bào)文;然后是0x82為首的設(shè)備訂閱請(qǐng)求報(bào)文;接著是0x90為首的訂閱請(qǐng)求回復(fù)。至此完成了設(shè)備連接MQTT服務(wù)器并且訂閱成功的過程。最后是設(shè)備發(fā)布的報(bào)文,以0x30為首。

MQTT通訊報(bào)文的第二個(gè)字節(jié)指示的是剩余字段的長(zhǎng)度,比如請(qǐng)求連接報(bào)文第二個(gè)字節(jié)值為0x1F代表后面的一個(gè)字節(jié)為剩余長(zhǎng)度,這個(gè)剩余長(zhǎng)度最大占用4個(gè)字節(jié),每個(gè)字節(jié)的低七位是編碼數(shù)據(jù),而最高位代表后面有沒有更多字節(jié)位,表示后續(xù)有沒有更多的字節(jié)為代表剩余字節(jié)數(shù)。而剩余的包括MQTT通信協(xié)議三元組信息,是可以在請(qǐng)求連接報(bào)文中看到的(0x31 0x31 0x31 就代表Client ID ,其前面的0x03代表Client ID 的長(zhǎng)度),而發(fā)布topic,可以在客戶端發(fā)布的報(bào)文中看到。

這些就是MQTT報(bào)文的詳情,去了解底層的報(bào)文結(jié)構(gòu)有助于我們更好掌控此協(xié)議的用法以及排查問題。

文章推薦:

北斗短報(bào)文通信技術(shù)原理及應(yīng)用介紹

CAN總線通信實(shí)現(xiàn)CAN報(bào)文帶ID標(biāo)識(shí)教程

MQTT協(xié)議報(bào)文中TPC驅(qū)動(dòng)和字符轉(zhuǎn)換教程

億佰特人每一天都致力于更好的助力物聯(lián)化、智能化、自動(dòng)化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的官網(wǎng)進(jìn)行了解,還有客服小姐姐在線答疑哦!



4000-330-990

https://www.wjx.cn/jq/84863372.aspx