通信對物聯網來說十分關鍵,無論是近距離無線傳輸技術還是移動通信技術,甚至是LPWAN都影響著物聯網的發展。通信協議是指雙方實體完成通信或服務所必須遵循的規則和約定。那么物聯網都有哪些通信協議?眾多的協議該如何選擇?
我們將物聯網通信協議分為兩大類,一類是接入協議,一類是通訊協議。接入協議一般負責子網內設備間的組網及通信(文章《常見物聯網近距離無線通信技術解析》有詳細介紹);通訊協議主要是運行在傳統互聯網TCP/IP協議之上的設備通訊協議,負責設備通過互聯網進行數據交換及通信。
本文羅列下市面上物聯網協議,總結下它們各自特點、特定的物聯網應用場景等。
物聯網聯接的問題空間
上圖為物聯網聯接的問題空間,其中物聯網的通信環境有Ethernet, Wi-Fi, RFID, NFC(近距離無線通信), Zigbee, 6LoWPAN(IPV6低速無線版本),Bluetooth, GSM, GPRS, GPS, 3G, 4G等網絡,而每一種通信應用協議都有一定適用范圍。AMQP、JMS、REST/HTTP都是工作在以太網,COAP協議是專門為資源受限設備開發的協議,而DDS和MQTT的兼容性則強很多。
互聯網時代,TCP/IP協議已經一統江湖,現在的物聯網的通信架構也是構建在傳統互聯網基礎架構之上。在當前的互聯網通信協議中,HTTP協議由于開發成本低,開放程度高,幾乎占據大半江山,所以很多廠商在構建物聯網系統時也基于http協議進行開發。包括google主導的physic web項目,都是期望在傳統web技術基礎上構建物聯網協議標準。
HTTP協議是典型的CS通訊模式,由客戶端主動發起連接,向服務器請求XML或JSON數據。該協議最早是為了適用web瀏覽器的上網瀏覽場景和設計的,目前在PC、手機、pad等終端上都應用廣泛,但并不適用于物聯網場景。在物聯網場景中其有三大弊端:
1. 由于必須由設備主動向服務器發送數據,難以主動向設備推送數據。對于單單的數據采集等場景還勉強適用,但是對于頻繁的操控場景,只能推過設備定期主動拉取的的方式,實現成本和實時性都大打折扣。
2. 安全性不高。web的不安全都是婦孺皆知,HTTP是明文協議,在很多要求高安全性的物聯網場景,如果不做很多安全準備工作(如采用https等),后果不堪設想。
3. 不同于用戶交互終端如pc、手機,物聯網場景中的設備多樣化,對于運算和存儲資源都十分受限的設備,http協議實現、XML/JSON數據格式的解析,都是不可能的任務。
REST/HTTP(松耦合服務調用)
REST (Representational State Transfer),表征狀態轉換,是基于HTTP協議開發的一種通信風格,目前還不是標準;
適用范圍:REST/HTTP主要為了簡化互聯網中的系統架構,快速實現客戶端和服務器之間交互的松耦合,降低了客戶端和服務器之間的交互延遲。因此適合在物聯網的應用層面,通過REST開放物聯網中資源,實現服務被其他應用所調用。
特點:
· REST 指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程序或設計就是RESTful
· 客戶端和服務器之間的交互在請求之間是無狀態的
· 在服務器端,應用程序狀態和功能可以分為各種資源,它向客戶端公開。資源的例子有:應用程序對象、數據庫記錄、算法等等。每個資源都使用 URI (Universal Resource Identifier) 得到一個惟一的地址。所有資源都共享統一的界面,以便在客戶端和服務器之間傳輸狀態
· 使用的是標準的 HTTP 方法,比如 GET、PUT、POST 和 DELETE
點評: REST/HTTP其實是互聯網中服務調用API封裝風格,物聯網中數據采集到物聯網應用系統中,在物聯網應用系統中,可以通過開放REST API的方式,把數據服務開放出去,被互聯網中其他應用所調用。
CoAP協議
· CoAP (Constrained Application Protocol),受限應用協議,應用于無線傳感網中協議。
適用范圍:CoAP是簡化了HTTP協議的RESTful API,CoAP是6LowPAN協議棧中的應用層協議,它適用于在資源受限的通信的IP網絡。
特點:
報頭壓縮:CoAP包含一個緊湊的二進制報頭和擴展報頭。它只有短短的4B的基本報頭,基本報頭后面跟擴展選項。一個典型的請求報頭為10~20B。
方法和URIs:為了實現客戶端訪問服務器上的資源,CoAP支持GET、PUT、POST和DELETE等方法。CoAP還支持URIs,這是Web架構的主要特點。
傳輸層使用UDP協議:CoAP協議是建立在UDP協議之上,以減少開銷和支持組播功能。它也支持一個簡單的停止和等待的可靠性傳輸機制。
支持異步通信:HTTP對M2M(Machine-to-Machine)通信不適用,這是由于事務總是由客戶端發起。而CoAP協議支持異步通信,這對M2M通信應用來說是常見的休眠/喚醒機制。
支持資源發現:為了自主的發現和使用資源,它支持內置的資源發現格式,用于發現設備上的資源列表,或者用于設備向服務目錄公告自己的資源。它支持RFC5785中的格式,在CoRE中用/.well—known/core的路徑表示資源描述。
支持緩存:CoAP協議支持資源描述的緩存以優化其性能。
協議主要實現:
· libcoap(C語言實現)
點評:CoAP和6LowPan,這分別是應用層協議和網絡適配層協議,其目標是解決設備直接連接到IP網絡,也就是IP技術應用到設備之間、互聯網與設備之間的通信需求。因為IPV6技術帶來巨大尋址空間,不光解決了未來巨量設備和資源的標識問題,互聯網上應用可以直接訪問支持IPV6的設備,而不需要額外的網關。
MQTT協議(低帶寬)
MQTT (Message Queuing Telemetry Transport ),消息隊列遙測傳輸,由IBM開發的即時通訊協議,相比來說比較適合物聯網場景的通訊協議。MQTT協議采用發布/訂閱模式,所有的物聯網終端都通過TCP連接到云端,云端通過主題的方式管理各個設備關注的通訊內容,負責將設備與設備之間消息的轉發。
MQTT在協議設計時就考慮到不同設備的計算性能的差異,所以所有的協議都是采用二進制格式編解碼,并且編解碼格式都非常易于開發和實現。最小的數據包只有2個字節,對于低功耗低速網絡也有很好的適應性。有非常完善的QOS機制,根據業務場景可以選擇最多一次、至少一次、剛好一次三種消息送達模式。運行在TCP協議之上,同時支持TLS(TCP+SSL)協議,并且由于所有數據通信都經過云端,安全性得到了較好地保障。
適用范圍:在低帶寬、不可靠的網絡下提供基于云平臺的遠程設備的數據傳輸和監控。
特點:
· 使用基于代理的發布/訂閱消息模式,提供一對多的消息發布
· 使用 TCP/IP 提供網絡連接
· 小型傳輸,開銷很小(固定長度的頭部是 2 字節),協議交換最小化,以降低網絡流量
· 支持QoS,有三種消息發布服務質量:“至多一次”, “至少一次”, “只有一次”
協議主要實現和應用:
· 已經有PHP,JAVA,Python,C,C#等多個語言版本的協議框架
· IBM Bluemix 的一個重要部分是其 IoT Foundation 服務,這是一項基于云的 MQTT 實例
· 移動應用程序也早就開始使用MQTT,如 Facebook Messenger 和com等
點評:MQTT協議一般適用于設備數據采集到端(Device-》Server,Device-》Gateway),集中星型網絡架構(hub-and-spoke),不適用設備與設備之間通信,設備控制能力弱,另外實時性較差,一般都在秒級。
評論