原文: IoT Protocols : An Overview
作者: satyavrat
尋求 IoT 報道或投稿、給文章糾錯,請發送郵件至[email protected]。微信聯系 jiaweidi1214,備注“姓名+公司+職位”(以便更快稽核通過),加入“CSDN 物聯網技術交流群”,與作者及更多專家、技術同行進行 IoT 技術交流。
對于軟體公司來說,IoT 模式為其硬體設計以及所提供的服務帶來決定性的改變。其中影響最大的一個方面是通信協定。

通信協定
通信協定可以被認為是一種語言,即兩台或兩台以上的裝置可以互相交流。同時無規矩不成方圓,通信協定也遵循一組規則,兩台裝置會将有意義的資訊傳遞給對方。在分布式系統中通信協定極為重要,相同的協定不同的部分在多個位置獨立運作。系統在運作程序時可能是多樣化的,是以在系統中需要保證一組通用的指令來通信。
IoT 之是以可以掀起熱潮,資訊實體融合系統(Cyber-Physical Systems,簡稱CPS)功不可沒。實體裝置連接配接到網際網路和傳遞資料及接收資料的概念基于 IoT 解決方案的真正地實作。與此同時,這也增加了現有的通信協定及網際網路的複雜性。
IoT 的發展曆程中帶來了很多可能性,但其中唯一可行的是機器與機器(M2M)通過網際網路實作實時有效連接配接。一台裝置被連接配接到網際網路僅被認為是人際互動間的産物,而不是一個順其自然的結果。是以,協定與網際網路之間的通信總是在不可靠與緩慢的基礎上發展。
TCP/IP 協定
除了通信協定,網際網路協定體系結構的另一個方面是 TCP / IP 堆棧。它控制兩台計算機之間的資料傳輸。其中采用三次握手建立一個連接配接,其中涉及用戶端确認資料的接收且發送确認消息給伺服器。第二次握手是伺服器端接收到用戶端的資料後,傳回确認回單,第三次是用戶端也傳回一個确認回單給伺服器端,進而關閉通信通道。
這種通信方法的優點具有可靠性,可共享所有被發送的資料,但因為其過程都需要驗證,是以消耗時間比較久。
UDP 協定
使用者資料報協定(User Datagram Protocol,簡稱UDP)是一種比較快的通信方式,因為減少了确認程式。它是面向非連接配接的協定,它不與對方建立連接配接,而是直接就把資料包發送過去。是以,與 TCP/IP 相比,UDP 的可靠性相對不高,但是比較快。對于M2M 項目的快速原型,一個非常簡單的解決方案是使用 UDP,因為就 UDP 頭包含很少的位元組,比 TCP 負載消耗少。
HTTP 協定
在IoT 開發中協定最大的不同是在 OSI 模型的應用程式層。這一層在通信網絡中指定了接口方法。系統如何連接配接伺服器且資料如何發送都由這一層來決定。
其實最受歡迎的通信協定莫過于超文本傳輸協定(Hyper Text Transfer Protocol,簡稱HTTP)。主要應用于 web 浏覽器。它運作在一個客戶/伺服器模型上,伺服器響應任何的用戶端需求。因 web 網頁可能會加載很多内容,是以該協定有必要建立在 TCP/IP 堆棧之上。
MQTT 協定
MQ 遙測傳輸(MQ Telemetry Transport,簡稱MQTT)是一個面向 IoT 應用程式的輕量級連接配接協定。它基于 TCP/IP 網絡連接配接使用釋出/訂閱方法來傳輸資料。設計思想是開放、簡單、輕量、易于實作,這也使它成為 IoT 開發的理想平台。
MQTT 很多有用的功能适用面向 IoT 應用程式。簡而言之,想象一個公告闆,無論什麼時候,你都可以在上面記錄或招貼。同時,對你所記錄的内容感興趣的任何人都可以看到。
MQTT 差不多就是這樣的功能。
MQTT 包括代理和用戶端兩個部分。用戶端可以通路或修改裝置的資料,代理是持有并傳遞資料。
MQTT 使用釋出/訂閱消息模式。用戶端可以在一個話題(Topic)下面釋出特定參數資料給代理。另一個對此話題感興趣的客戶可以訂閱該話題,并定期收到更新的消息。
MQTT 提供一個有品質的服務,從 IoT 角度來看,其本質是消息的優先級。在任何情況下一個重要的消息可以傳輸到目的地,是以有了服務品質(QoS),雖然傳輸速度會變慢但是傳遞有了保證。一個動态的資料源速度優先于效率,然而配置設定一個較低的 QoS,更像是一個“fire-and-forget”事件,如 UDP。
在一個主題下,MQTT 可以保留最後一個已收到的消息,前提是它發送給訂閱者訂閱鍊已啟動。這允許訂閱者在一個存在的用戶端和代理網絡中異步連接配接。這也為檢查備援及資料丢失提供了一個工具。
MQTT 用戶端有一個屬性稱之為 Last Will a和 Testament。該屬性允許用戶端在異常中斷的情況下發送通知給代理。這個快速的回報有利于無線傳感器網絡自動再生,同時檢測并修複缺失節點和異常值,最終確定無線傳感器網絡中資料流完美循環。
CoAP 協定
CoAP 是一個基于 REST 模型的網絡傳輸協定。主要用于輕量級 M2M 通信。由于物聯網中的很多裝置都是資源受限型的,即隻有少量的記憶體空間和有限的計算能力,是以傳統的 HTTP 協定應用在物聯網上就顯得過于龐大而不适用,CoAP 應運而生。
就使用者可見性而言,CoAP 模拟了 HTTP 協定,并從這個角度來看,讀數傳感器資料本質上是像做一個 HTTP 請求。
CoAP 被認為是一種不會過時的技術協定,根據 Grtner 預測,500 億台裝置将會連接配接到網際網路,未來進一步發展将迫切需要低成本、低能耗的裝置。CoAP協定被設計用于與 10 kb RAM 一樣的系統。
CoAP 更有趣的功能之一是能夠發現網絡中的節點。這對于低功耗無線傳感器網絡的自治和自我修複設計非常有用。關于無線傳感器網絡的可擴充性問題,可以使用 CoAP 協定來發現節點正常的備援。
CoAP 是建立在 UDP 棧上,這是與 HTTP 或 MQTT 相比最主要的差別。它可以更加快速和更好的資源優化,而非資源密集型。
然而,在 CoAP 協定下 QoS 因素保持不變情況下,CoAP 相比 HTTP/MQTT 更加不可靠。但是 4 位元組的頭檔案對于連續流系統如環境監測傳感器網絡是一個不錯的選擇。