郭力 胡偉 張政成
摘要:本篇文章首先對(duì)MQTT協(xié)議的基本含義進(jìn)行概述,從SSL/TLS認(rèn)證、AugPAKE認(rèn)證、訪問控制三個(gè)方面,對(duì)基于MQTT協(xié)議下物聯(lián)網(wǎng)通信應(yīng)用要點(diǎn)進(jìn)行分析,并以此為依據(jù),提出MQTT協(xié)議在物聯(lián)網(wǎng)中的應(yīng)用對(duì)策。
關(guān)鍵詞:MQTT協(xié)議;物聯(lián)網(wǎng);應(yīng)用
中圖分類號(hào):TP393? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)28-0031-02
在當(dāng)前市場背景中,通信對(duì)互聯(lián)網(wǎng)行業(yè)發(fā)展有著積極作用,無論是移動(dòng)通信技術(shù),還是近距離無線傳輸技術(shù),都會(huì)給物聯(lián)網(wǎng)發(fā)展帶來直接影響。從通信角度來說,通信協(xié)議作為雙方實(shí)體實(shí)現(xiàn)通信需要秉持的原則。在互聯(lián)網(wǎng)體系中,感知層及應(yīng)用層均要在網(wǎng)絡(luò)層的作用下實(shí)現(xiàn)通信?,F(xiàn)階段,TCP / IP是互聯(lián)網(wǎng)的主要的標(biāo)準(zhǔn)因素,物聯(lián)網(wǎng)通信協(xié)議是在互聯(lián)網(wǎng)TCP/IP協(xié)議上進(jìn)行運(yùn)行,負(fù)責(zé)設(shè)備通過互聯(lián)網(wǎng)技術(shù)實(shí)現(xiàn)數(shù)據(jù)傳遞和通信。因?yàn)镠TTP協(xié)議在研發(fā)過程中,投放的成本比較少,并且開放性強(qiáng)。在建設(shè)互聯(lián)網(wǎng)系統(tǒng)過程中,更多廠家更傾向于HTTP協(xié)議。但是在資源比較短缺的環(huán)境下,HTTP協(xié)議并不適用。MQTT協(xié)議憑借自身低功耗、開放強(qiáng)等優(yōu)勢(shì),得到了通信行業(yè)的我廣泛應(yīng)用,對(duì)通信事業(yè)發(fā)展起到了重要意義。
1 MQTT協(xié)議的基本概述
MQTT也就是Message Queuing Telemetry Transport的簡寫形式,翻譯成中文為消息隊(duì)列遙測(cè)傳輸,是基于IBM開發(fā)下形成的一種即時(shí)通信協(xié)議,可以給物聯(lián)網(wǎng)發(fā)展提供支持。MQTT協(xié)議可以應(yīng)用在各個(gè)平臺(tái)中,能夠?qū)⒏鱾€(gè)聯(lián)網(wǎng)物品與外部充分連接,被當(dāng)作一個(gè)傳感器和制動(dòng)器的通信協(xié)議[1]。
從MQTT協(xié)議自身角度來說,作為一種比較簡便且輕量的信息傳輸協(xié)議,專門是給受限設(shè)備、低寬帶、高延遲的網(wǎng)絡(luò)設(shè)計(jì)的。在MQTT協(xié)議設(shè)計(jì)過程中,秉持的設(shè)計(jì)原則在于以最小化網(wǎng)絡(luò)寬帶和設(shè)備資源,保證交付穩(wěn)定、可靠。這些設(shè)計(jì)理念,對(duì)于物聯(lián)網(wǎng)而言是最佳的選擇對(duì)象。MQTT協(xié)議框架圖見圖1:
2基于MQTT協(xié)議下物聯(lián)網(wǎng)通信應(yīng)用要點(diǎn)分析
2.1 SSL/TLS認(rèn)證
2.1.1客戶端向服務(wù)器發(fā)送Client Hello
客戶端在首次接受到來自服務(wù)器傳遞的ClientHello,其中涉及的字段及含義為:VersionNumber是客戶端傳遞給服務(wù)器能夠支持的最高版本號(hào);RandomlyGeneratedData是32字節(jié)中的一部分,前四個(gè)字節(jié)是由客戶端當(dāng)前事前組成,后幾個(gè)字節(jié)則是采用隨機(jī)函數(shù)組成,這些隨機(jī)數(shù)字被組建成一個(gè)密鑰,以保證系統(tǒng)運(yùn)行安全;SessionIdentification是SessionID讓客戶端快速恢復(fù)正常的因素,其標(biāo)識(shí)出前后數(shù)據(jù)變化,并將其保存在服務(wù)器中??蛻舳税l(fā)布消息到服務(wù)端的流程圖見圖2:
2.1.2 服務(wù)器向客戶端發(fā)送Server Hello
在Server Hello中,涉及的字段含義在于:Version Number給服務(wù)器傳遞雙方都可以應(yīng)用的最高版本號(hào);RandomlyGeneratedData是32字節(jié)的一部分,其中前4個(gè)字節(jié)是根據(jù)服務(wù)器當(dāng)時(shí)時(shí)間組成,后28個(gè)字節(jié)采用隨機(jī)組合方式,通過隨機(jī)組合形成密鑰;SessionIdentification字段能夠給NewSessionID、ResumedSessionID等形成提供支持,并讓客戶端沒有接受的指令快速恢復(fù)整張,形成新的ID[2]。在客戶端指令恢復(fù)正常的情況下,將會(huì)重新形成ID,并且ResumedSessionID、sessionID等指示相同。
2.2 AugPAKE認(rèn)證
AugPAKE協(xié)議一般是建設(shè)在D-H密鑰交換上,利用客戶端服務(wù)器進(jìn)行驗(yàn)證考察。在本質(zhì)上是一個(gè)比較煩瑣的D-H密鑰交換方式,具體由兩部分組成,一個(gè)是初始化,也就是在用戶端和服務(wù)器共同合作下進(jìn)行線下驗(yàn)證,用戶具有自己私鑰,通過hash函數(shù)核算出有效密鑰。另一個(gè)是協(xié)議執(zhí)行過程,根據(jù)AugPAKE協(xié)議執(zhí)行情況,形成會(huì)話蜜月,并通過應(yīng)用會(huì)話密鑰實(shí)現(xiàn)加密明文傳遞和處理。
2.3 訪問控制
在訪問控制方案設(shè)計(jì)過程中,需要結(jié)合協(xié)議特點(diǎn),把客戶端和代理之間認(rèn)真轉(zhuǎn)換成客戶端和主題認(rèn)證,本質(zhì)上為認(rèn)證問題。通過制定SSL/TLS解決方案,利用Publisher與Broker之間安全問題轉(zhuǎn)換成Publisher與opic之間的安全問題。在此過程中,涉及兩個(gè)比較特殊化主題,也就是RequestTopic及ResponseTopic。根據(jù)實(shí)際情況,將其分別應(yīng)用在用戶端及客戶端響應(yīng)中。在用戶端獲取一個(gè)主題信息以后,分步進(jìn)行,用戶端利用RequestTopic發(fā)送TargetTopic請(qǐng)求,之后用戶端采用TargetTopic加密方式加密傳遞信息,并在RequestTopic配合下獲取密鑰請(qǐng)求,監(jiān)管客戶端驗(yàn)證情況并發(fā)送公鑰。利用ResponseTopic傳遞給用戶,用戶通過驗(yàn)證獲取TargetTopic私鑰,從而實(shí)現(xiàn)TargetTopic信息解密處理。
3 MQTT協(xié)議在物聯(lián)網(wǎng)中的應(yīng)用
3.1 MQTT 通信協(xié)議
在MQTT通信協(xié)議下,要想實(shí)現(xiàn)信息發(fā)布,需要結(jié)合對(duì)應(yīng)話題進(jìn)行。只要在發(fā)布過程中明確發(fā)送話題,則無須配備對(duì)應(yīng)話題內(nèi)容。在MQTT協(xié)議中,明確指出發(fā)布服務(wù)器及客戶端對(duì)象,作為整個(gè)系統(tǒng)網(wǎng)絡(luò)核心,可以和多個(gè)客戶端相連接。在MQTT協(xié)議框架中,不管是信息產(chǎn)生者,還是信息接收者,都是以客戶端為主[3]。在服務(wù)器接收到來自于客戶端發(fā)送的信息以后,根據(jù)信息要求實(shí)現(xiàn)數(shù)據(jù)處理,發(fā)布服務(wù)器可以把接收的信息傳遞到各個(gè)客戶端中。
3.2 控制系統(tǒng)
以智能廚房油煙機(jī)系統(tǒng)為例,其中包含了四項(xiàng)內(nèi)容,也就是基于Open WRT系統(tǒng)下的無線路由器、手機(jī)控制端、基于樹莓派下的網(wǎng)關(guān)以及智能油煙機(jī)設(shè)備。智能廚房油煙機(jī)系統(tǒng)見圖3:
根據(jù)上述,利用智能移動(dòng)設(shè)備,可以實(shí)現(xiàn)和系統(tǒng)服務(wù)端的結(jié)合,并在MQTT協(xié)議下確保數(shù)據(jù)傳遞的安全性。在MQTT協(xié)議中,整個(gè)系統(tǒng)MQTT通信發(fā)布服務(wù)端以Mosquitto為主,Mosquitto管理和傳遞各個(gè)MQTT信息,并且負(fù)責(zé)對(duì)TLS-PSK框架資源集中管理,具有控制訪問和用戶身份認(rèn)證等功能。移動(dòng)通信設(shè)備和網(wǎng)關(guān)均與Open WRT系統(tǒng)中信息處理通信功能相連接,并由MQTT客戶端提供。MQTT客戶端模板由網(wǎng)關(guān)接收設(shè)備運(yùn)行信息,并把信息傳遞到移動(dòng)通信設(shè)備中。移動(dòng)通信設(shè)備傳遞的控制指令也可以由其傳遞,并在指令被處理完成以后傳遞給網(wǎng)關(guān)。
3.3 系統(tǒng)設(shè)計(jì)
3.3.1 云端部署
Bluemix IoT 服務(wù)是由 MQTT 代理,擔(dān)具的職責(zé)在于把收集的信息傳遞給各個(gè)客戶端。設(shè)備包含了各種設(shè)備,分布傳遞其檢測(cè)的信息,應(yīng)用程序由MQTT查閱以后獲取推送許可,實(shí)現(xiàn)信息傳遞。
3.3.2 本地網(wǎng)關(guān)設(shè)計(jì)(gateway)
mosquitto 作為 MQTT 的代理服務(wù)器,mosquitto是一個(gè)開放源代碼的MQTT代理服務(wù)器,具備支持C、C++、Python 語言開發(fā)等功能。利用交互編譯把mosquitto傳送到TWR-LS1021A中,之后在Bluemix IoT的作用下實(shí)現(xiàn)網(wǎng)關(guān)設(shè)備注冊(cè)[4]。在TWR-LS1021A客戶端的作用下,可以實(shí)現(xiàn)信息周期性傳遞,利用mosquitto源碼把提供的信息傳遞到MQTT客戶端中。
3.3.3 設(shè)備端
Kl25Z主要是利用 WiFi把獲取的數(shù)據(jù)信息傳遞給WR-LS1021A。之后利用網(wǎng)關(guān)向MQTT 代理傳遞該信息。網(wǎng)關(guān)給設(shè)備短創(chuàng)建一個(gè)信息聯(lián)通通道,通過應(yīng)用MQTT 協(xié)議將信息傳遞到MQTT 代理主題中。
3.3.4 移動(dòng)客戶端
作用于Bluemix IoT服務(wù)端下的Android移動(dòng)應(yīng)用程序,通過傳遞已經(jīng)注冊(cè)設(shè)備認(rèn)證信息,查閱對(duì)應(yīng)協(xié)議主題,并獲取由Bluemix 傳遞的各項(xiàng)信息。
3.3.5 測(cè)試結(jié)果
在當(dāng)前移動(dòng)互聯(lián)網(wǎng)快速發(fā)展的環(huán)境下,在物聯(lián)網(wǎng)應(yīng)用中,對(duì)移動(dòng)通信設(shè)備獲取信息提出嚴(yán)格要求,具體展現(xiàn)在時(shí)限性及移動(dòng)性兩方面。其中,時(shí)限性也就是需要將信息在要求時(shí)間范疇內(nèi)傳遞到移動(dòng)終端中;移動(dòng)性則需要在信息傳遞過程中,盡可能減少對(duì)能源的消耗。不管是IOS還是Android,如果采取拉取傳遞方式,在流程信息更換通知過程中,需要對(duì)其進(jìn)行持續(xù)檢查,獲取信息過程中,需要給服務(wù)器傳遞拉取指令,更換的信息將不能直接利用服務(wù)器進(jìn)行傳遞,加劇交互頻率和負(fù)擔(dān),讓推動(dòng)效率逐漸降低。為了縮短反應(yīng)時(shí)間,提升工作效率,及時(shí)把新歡信息傳遞給移動(dòng)端中,需要借助MQTT協(xié)議,保證操作系統(tǒng)和開發(fā)功能不會(huì)受到限制,并利用IOS平臺(tái)實(shí)現(xiàn)信息推送,防止各種問題出現(xiàn),節(jié)約更多信息傳送時(shí)間。
4 結(jié)束語
總而言之,本文將重點(diǎn)闡述和分析MQTT協(xié)議在物聯(lián)網(wǎng)通信中應(yīng)用情況,從能源消耗及信息傳遞兩個(gè)方面進(jìn)行比較分析,并且充分證明基于TCP/IP背景下的HTTP協(xié)議不適用于能源比較少的嵌入式系統(tǒng)中。并且,HTTP協(xié)議在信息傳遞上,功能比較繁雜,而MQTT協(xié)議憑借低功耗、高效率等優(yōu)勢(shì),在資源比較匱乏的當(dāng)前得到了高效應(yīng)用,更適合應(yīng)用在物聯(lián)網(wǎng)通信中,在減少能源消耗的同時(shí),也能提升信息傳遞效率。
參考文獻(xiàn):
[1] 劉佳.基于MQTT協(xié)議的城市水務(wù)物聯(lián)網(wǎng)監(jiān)控系統(tǒng)設(shè)計(jì)[J].物聯(lián)網(wǎng)技術(shù),2019,9(06):14-16+19.
[2] 溫小斌.物聯(lián)網(wǎng)系統(tǒng)自動(dòng)化監(jiān)控的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)時(shí)代,2019(06):34-36.
[3] 徐侃,丁強(qiáng).一種基于MQTT協(xié)議的物聯(lián)網(wǎng)通信網(wǎng)關(guān)[J].儀表技術(shù),2019(01):1-4+43.
[4] 王瑞,兀玉潔,李燕蘋.基于MQTT協(xié)議的物聯(lián)網(wǎng)實(shí)訓(xùn)云平臺(tái)設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2018,31(09):101-103.
【通聯(lián)編輯:光文玲】