郭力 胡偉 張政成



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