這一段時間在翻看MQTT-SN的協議,對針對不依賴於TCP傳輸的MQTT協議十分感興趣,老是再想着這貨究竟是怎麼定義的。一系列文章皆有MQTT-SN 1.2協議所拼裝組成,原文檔地址: MQTT-SN_spec_v1.2.pdfjava
MQTT-SN文檔分爲7個部分,我直接按照從前到後的順序,直接組裝成四個小篇。嗯,若放在一篇文章中,文字太長,形成排版難度。緩存
非直譯,徹底按照本身理解整理而成,請知曉。服務器
原名是MQTT-S,但會引發人們的誤解,所以改名成MQTT-SN:網絡
As part of the job of applying the same or similar license terms to the MQTT-S specification as those on the MQTT specification, we are proposing a small name change. The new name would be MQTT-SN, standing for exactly the same long name, MQTT for Sensor Networks. Some people had assumed that the S in MQTT-S stood for secure, so we hope this change will avoid that confusion. -- Ian Craggssession
MQTT for Sensor Networks is aimed at embedded devices on non-TCP/IP networks, such as Zigbee. MQTT-SN is a publish/subscribe messaging protocol for wireless sensor networks (WSN), with the aim of extending the MQTT protocol beyond the reach of TCP/IP infrastructure for Sensor and Actuator solutions.架構
針對適配傳感裝置(縮寫爲SA)的特定版MQTT協議,通常運行在嵌入式電池驅動的電子元件中,傳輸經過基於IEEE 802.15.4規範無線低速網絡構成的無線傳感網絡(WSN),一樣具備企業級別特性具備以數據爲核心的(data-centric)訂閱/發佈特性。app
總之,針對低功耗、電池驅動、處理存儲受限的設備、不支持TCP/IP協議棧網絡的電子器件而定製,好比常見的ZigBee(或XBee),對所依賴的底層傳輸網絡不可知,但只要網絡支持雙向數據傳輸和網關,都是能夠支持較爲上層的MQTT-SN協議傳輸。好比簡單數據報服務,只要支持一個源端點發送數據到一個特定目的地端點,這對支持MQTT-SN協議,就足夠了。廣播數據報傳輸服務也是必須的用於網關和終端的自動發現流程。爲了下降廣播風暴,MQTT-SN定義了廣播路徑深度(廣播範圍或廣播半徑)。負載均衡
儘管MQTT-SN被設計成儘量接近於MQTT,但那些低功耗、電池驅動、資源受限的設備所在網絡場景爲低速帶寬、高鏈接失敗、物理層數據包上線爲128字節。文檔提出瞭如下不一樣點:less
在MQTT-SN架構圖中,存在三種組件:this
MQTT-SN網關傳輸方式,下面的圖片一目瞭然。
網關須要抉擇哪些消息須要和遠程的MQTT Server進行交互,好比只選擇客戶端發送的PUBLISH、SUBSCRIBLE消息等。
上面簡單介紹了MQTT-SN,下面將會介紹MQTT-SN消息頭部和格式。