物聯網 (IoT) 設備需要連接到互聯網,聯網的方式有很多種,傳輸協議也有很多種,為什么MQTT才是物聯網的首選傳輸協議呢?
本文重點講述MQTT傳輸協議。
一、關于MQTTMQTT:Message Queuing Telemetry Transport,消息隊列遙測傳輸。
互聯網的基礎網絡協議是 TCP/IP,MQTT(消息隊列遙測傳輸) 是基于 TCP/IP 協議棧而構建的。
MQTT由IBM在1999年發布,是一種基于發布/訂閱(publish / subscribe)模式的“輕量級”通訊協議,在 2014 年末,它正式成為了一種 OASIS 開放標準,而且在一些流行的編程語言中受到支持(通過使用多種開源實現)。
前面文章《http和tcp/ip的關系和區別》提及了OSI(開放式系統互聯),這里MQTT同HTTP屬于第七層(應用層)。
參考網址:
http://mqtt.orghttp://mqtt.p2hp.comhttps://www.ibm.com/developerworks/cn/iot/https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html
二、MQTT特點
MQTT特點:
開放消息協議,簡單易實現
發布訂閱模式,一對多消息發布
消息QoS支持,可靠傳輸保證
基于TCP/IP網絡連接,提供有序,無損,雙向連接。
1字節固定報頭,2字節心跳報文,最小化傳輸開銷和協議交換,有效減少網絡流量。
設計規范:
由于物聯網的環境是非常特別的,所以MQTT遵循以下設計原則:
精簡,不添加可有可無的功能;
允許用戶動態創建主題,零運維成本;
把傳輸量降到最低以提高傳輸效率;
把低帶寬、高延遲、不穩定的網絡等因素考慮在內;
支持連續的會話控制;
理解客戶端計算能力可能很低;
提供服務質量管理;
發布/訂閱(Pub/Sub)模式,方便消息在傳感器之間傳遞;
假設數據不可知,不強求傳輸數據的類型與格式,保持靈活性。
三、物聯網為何首選MQTT
1.為何選擇 MQTT
MQTT 是一種輕量級的、靈活的網絡協議,致力于為 IoT 開發人員實現適當的平衡:
這個輕量級協議可在嚴重受限的設備硬件和高延遲/帶寬有限的網絡上實現。
它的靈活性使得為 IoT 設備和服務的多樣化應用場景提供支持成為可能。
為了了解為什么 MQTT 如此適合 IoT 開發人員,我們首先來分析一下為什么其他流行網絡協議未在 IoT 中得到成功應用。
2.為什么不選擇其他眾多網絡協議
大多數開發人員已經熟悉 HTTP Web 服務。那么為什么不讓 IoT 設備連接到 Web 服務?設備可采用 HTTP 請求的形式發送其數據,并采用 HTTP 響應的形式從系統接收更新。這種請求和響應模式存在一些嚴重的局限性:
A.HTTP 是一種同步協議??蛻舳诵枰却掌黜憫?。Web 瀏覽器具有這樣的要求,但它的代價是犧牲了可伸縮性。在 IoT 領域,大量設備以及很可能不可靠或高延遲的網絡使得同步通信成為問題。異步消息協議更適合 IoT 應用程序。傳感器發送讀數,讓網絡確定將其傳送到目標設備和服務的最佳路線和時間。
B.HTTP 是單向的??蛻舳吮仨毎l起連接。在 IoT 應用程序中,設備或傳感器通常是客戶端,這意味著它們無法被動地接收來自網絡的命令。
HTTP 是一種 1-1 協議。客戶端發出請求,服務器進行響應。將消息傳送到網絡上的所有設備上,不但很困難,而且成本很高,而這是 IoT 應用程序中的一種常見使用情況。
C.HTTP 是一種有許多標頭和規則的重量級協議。它不適合受限的網絡。
出于上述原因,大部分高性能、可擴展的系統都使用異步消息總線來進行內部數據交換,而不使用 Web 服務。事實上,企業中間件系統中使用的最流行的消息協議被稱為 AMQP(高級消息排隊協議)。但是,在高性能環境中,計算能力和網絡延遲通常不是問題。AMQP 致力于在企業應用程序中實現可靠性和互操作性。它擁有龐大的特性集,但不適合資源受限的 IoT 應用程序。
除了 AMQP 之外,還有其他流行的消息協議。例如,XMPP(Extensible Messaging and Presence Protocol,可擴展消息和狀態協議)是一種對等即時消息 (IM) 協議。它高度依賴于支持 IM 用例的特性,比如存在狀態和介質連接。與 MQTT 相比,它在設備和網絡上需要的資源都要多得多。
那么,MQTT 為什么如此輕量且靈活?因為MQTT 協議的一個關鍵特性是發布和訂閱模型。與所有消息協議一樣,它將數據的發布者與使用者分離。
-
物聯網
+關注
關注
2903文章
44285瀏覽量
371355 -
傳輸協議
+關注
關注
0文章
78瀏覽量
11439 -
MQTT協議
+關注
關注
0文章
97瀏覽量
5349
發布評論請先 登錄
相關推薦
評論