首頁 - 關于我們 - 新聞活動 - IOT(物(wù)聯網)的(de)七大(dà)通(tōng)信協議(yì)

IOT(物(wù)聯網)的(de)七大(dà)通(tōng)信協議(yì)

2020-9-24新聞

在物(wù)聯網協議(yì)中,我們一般分(fēn)爲兩大(dà)類,一類是傳輸協議(yì),一類是通(tōng)信協議(yì)。傳輸協議(yì)一般負責子網内設備間的(de)組網及通(tōng)信;通(tōng)信協議(yì)則主要是運行在傳統互聯網TCP/IP協議(yì)之上的(de)設備通(tōng)訊協議(yì),負責設備通(tōng)過互聯網進行數據交換及通(tōng)信。


上圖爲物(wù)聯網聯接的(de)問題空間,其中物(wù)聯網的(de)通(tōng)信環境有Ethernet, Wi-Fi, RFID, NFC(近距離無線通(tōng)信), Zigbee, 6LoWPAN(IPV6低速無線版本),Bluetooth, GSM, GPRS, GPS, 3G, 4G等網絡,而每一種通(tōng)信應用(yòng)協議(yì)都有一定适用(yòng)範圍。AMQP、JMS、REST/HTTP都是工作在以太網,COAP協議(yì)是專門爲資源受限設備開發的(de)協議(yì),而DDS和(hé)MQTT的(de)兼容性則強很多(duō)。

  互聯網時(shí)代,TCP/IP協議(yì)已經一統江湖,現在的(de)物(wù)聯網的(de)通(tōng)信架構也(yě)是構建在傳統互聯網基礎架構之上。在當前的(de)互聯網通(tōng)信協議(yì)中,HTTP協議(yì)由于開發成本低,開放程度高(gāo),幾乎占據大(dà)半江山,所以很多(duō)廠商在構建物(wù)聯網系統時(shí)也(yě)基于http協議(yì)進行開發。包括google主導的(de)physic web項目,都是期望在傳統web技術基礎上構建物(wù)聯網協議(yì)标準。

  HTTP協議(yì)是典型的(de)CS通(tōng)訊模式,由客戶端主動發起連接,向服務器請求XML或JSON數據。該協議(yì)最早是爲了(le)适用(yòng)web浏覽器的(de)上網浏覽場(chǎng)景和(hé)設計的(de),目前在PC、手機、pad等終端上都應用(yòng)廣泛,但并不适用(yòng)于物(wù)聯網場(chǎng)景。在物(wù)聯網場(chǎng)景中其有三大(dà)弊端:

  (1) 由于必須由設備主動向服務器發送數據,難以主動向設備推送數據。對(duì)于單單的(de)數據采集等場(chǎng)景還(hái)勉強适用(yòng),但是對(duì)于頻(pín)繁的(de)操控場(chǎng)景,隻能推過設備定期主動拉取的(de)的(de)方式,實現成本和(hé)實時(shí)性都大(dà)打折扣。

  (2) 安全性不高(gāo)。web的(de)不安全都是婦孺皆知,HTTP是明(míng)文協議(yì),在很多(duō)要求高(gāo)安全性的(de)物(wù)聯網場(chǎng)景,如果不做(zuò)很多(duō)安全準備工作(如采用(yòng)https等),後果不堪設想。

  (3) 不同于用(yòng)戶交互終端如pc、手機,物(wù)聯網場(chǎng)景中的(de)設備多(duō)樣化(huà),對(duì)于運算(suàn)和(hé)存儲資源都十分(fēn)受限的(de)設備,http協議(yì)實現、XML/JSON數據格式的(de)解析,都是不可(kě)能的(de)任務。

IOT的(de)七大(dà)通(tōng)信協議(yì):

1. REST/HTTP(松耦合服務調用(yòng))

REST即表述性狀态傳遞,是基于HTTP協議(yì)開發的(de)一種通(tōng)信風格。

适用(yòng)範圍:

REST/HTTP主要爲了(le)簡化(huà)互聯網中的(de)系統架構,快(kuài)速實現客戶端和(hé)服務器之間交互的(de)松耦合,降低了(le)客戶端和(hé)服務器之間的(de)交互延遲。因此适合在物(wù)聯網的(de)應用(yòng)層面,通(tōng)過REST開放物(wù)聯網中資源,實現服務被其他(tā)應用(yòng)所調用(yòng)。

特點:

(1)REST 指的(de)是一組架構約束條件和(hé)原則。滿足這(zhè)些約束條件和(hé)原則的(de)應用(yòng)程序或設計就是RESTful。

(2)客戶端和(hé)服務器之間的(de)交互在請求之間是無狀态的(de)。

(3)在服務器端,應用(yòng)程序狀态和(hé)功能可(kě)以分(fēn)爲各種資源,它向客戶端公開,每個(gè)資源都使用(yòng) URI 得(de)到一個(gè)唯一的(de)地址。所有資源都共享統一的(de)界面,以便在客戶端和(hé)服務器之間傳輸狀态。

(4)使用(yòng)的(de)是标準的(de) HTTP 方法,比如:GET、PUT、POST 和(hé) DELETE。

REST/HTTP其實是互聯網中服務調用(yòng)API封裝風格,物(wù)聯網中數據采集到物(wù)聯網應用(yòng)系統中,在物(wù)聯網應用(yòng)系統中,可(kě)以通(tōng)過開放REST API的(de)方式,把數據服務開放出去,被互聯網中其他(tā)應用(yòng)所調用(yòng)。

2. CoAP協議(yì)

CoAP (Constrained Application Protocol),受限應用(yòng)協議(yì),應用(yòng)于無線傳感網中協議(yì)。

适用(yòng)範圍:

CoAP是簡化(huà)了(le)HTTP協議(yì)的(de)RESTful API,CoAP是6LowPAN協議(yì)棧中的(de)應用(yòng)層協議(yì),它适用(yòng)于在資源受限的(de)通(tōng)信的(de)IP網絡。

特點:

  (1)報頭壓縮:CoAP包含一個(gè)緊湊的(de)二進制報頭和(hé)擴展報頭。它隻有短短的(de)4B的(de)基本報頭,基本報頭後面跟擴展選項。一個(gè)典型的(de)請求報頭爲10~20B。

  (2)方法和(hé)URIs:爲了(le)實現客戶端訪問服務器上的(de)資源,CoAP支持GET、PUT、POST和(hé)DELETE等方法。CoAP還(hái)支持URIs,這(zhè)是Web架構的(de)主要特點。 

(3)傳輸層使用(yòng)UDP協議(yì):CoAP協議(yì)是建立在UDP協議(yì)之上,以減少開銷和(hé)支持組播功能。它也(yě)支持一個(gè)簡單的(de)停止和(hé)等待的(de)可(kě)靠性傳輸機制。

  (4)支持異步通(tōng)信:HTTP對(duì)M2M(Machine-to-Machine)通(tōng)信不适用(yòng),這(zhè)是由于事務總是由客戶端發起。而CoAP協議(yì)支持異步通(tōng)信,這(zhè)對(duì)M2M通(tōng)信應用(yòng)來(lái)說是常見的(de)休眠/喚醒機制。

  (5)支持資源發現:爲了(le)自主的(de)發現和(hé)使用(yòng)資源,它支持内置的(de)資源發現格式,用(yòng)于發現設備上的(de)資源列表,或者用(yòng)于設備向服務目錄公告自己的(de)資源。它支持RFC5785中的(de)格式,在CoRE中用(yòng)/.well—known/core的(de)路徑表示資源描述。

  (6)支持緩存:CoAP協議(yì)支持資源描述的(de)緩存以優化(huà)其性能。

協議(yì)主要實現:

  · libcoap(C語言實現)

  · Californium(java語言實現)

  CoAP和(hé)6LowPan,這(zhè)分(fēn)别是應用(yòng)層協議(yì)和(hé)網絡适配層協議(yì),其目标是解決設備直接連接到IP網絡,也(yě)就是IP技術應用(yòng)到設備之間、互聯網與設備之間的(de)通(tōng)信需求。因爲IPV6技術帶來(lái)巨大(dà)尋址空間,不光(guāng)解決了(le)未來(lái)巨量設備和(hé)資源的(de)标識問題,互聯網上應用(yòng)可(kě)以直接訪問支持IPV6的(de)設備,而不需要額外的(de)網關。

3. MQTT協議(yì)(低帶寬)

MQTT (Message Queuing Telemetry Transport ),消息隊列遙測傳輸,由IBM開發的(de)即時(shí)通(tōng)訊協議(yì),相比來(lái)說比較适合物(wù)聯網場(chǎng)景的(de)通(tōng)訊協議(yì)。MQTT協議(yì)采用(yòng)發布/訂閱模式,所有的(de)物(wù)聯網終端都通(tōng)過TCP連接到雲端,雲端通(tōng)過主題的(de)方式管理(lǐ)各個(gè)設備關注的(de)通(tōng)訊内容,負責将設備與設備之間消息的(de)轉發。

适用(yòng)範圍:

在低帶寬、不可(kě)靠的(de)網絡下(xià)提供基于雲平台的(de)遠(yuǎn)程設備的(de)數據傳輸和(hé)監控。

特點:

  (1) 使用(yòng)基于代理(lǐ)的(de)發布/訂閱消息模式,提供一對(duì)多(duō)的(de)消息發布

  (2) 使用(yòng) TCP/IP 提供網絡連接

  (3) 小型傳輸,開銷很小(固定長(cháng)度的(de)頭部是 2 字節),協議(yì)交換最小化(huà),以降低網絡流量

  (4) 支持QoS,有三種消息發布服務質量:“至多(duō)一次”, “至少一次”, “隻有一次”

協議(yì)主要實現和(hé)應用(yòng):

  (1) 已經有PHP,JAVA,Python,C,C#等多(duō)個(gè)語言版本的(de)協議(yì)框架

  (2) IBM Bluemix 的(de)一個(gè)重要部分(fēn)是其 IoT FoundaTIon 服務,這(zhè)是一項基于雲的(de) MQTT 實例

  (3) 移動應用(yòng)程序也(yě)早就開始使用(yòng)MQTT,如 Facebook Messenger 和(hé)com等

  MQTT協議(yì)一般适用(yòng)于設備數據采集到端(Device-》Server,Device-》Gateway),集中星型網絡架構(hub-and-spoke),不适用(yòng)設備與設備之間通(tōng)信,設備控制能力弱,另外實時(shí)性較差,一般都在秒級。

4. DDS協議(yì)(高(gāo)可(kě)靠性、實時(shí))

DDS(Data Distribution Service for Real-Time Systems),面向實時(shí)系統的(de)數據分(fēn)布服務。

适用(yòng)範圍:

分(fēn)布式高(gāo)可(kě)靠性、實時(shí)傳輸設備數據通(tōng)信。目前DDS已經廣泛應用(yòng)于國防、民航、工業控制等領域。

特點:

  (1) 以數據爲中心

  (2) 使用(yòng)無代理(lǐ)的(de)發布/訂閱消息模式,點對(duì)點、點對(duì)多(duō)、多(duō)對(duì)多(duō)

  (3) 提供多(duō)大(dà)21種QoS服務質量策略

協議(yì)主要實現:

  · OpenDDS 是一個(gè)開源的(de) C++ 實現

  · OpenSplice DDS

  DDS很好地支持設備之間的(de)數據分(fēn)發和(hé)設備控制,設備和(hé)雲端的(de)數據傳輸,同時(shí)DDS的(de)數據分(fēn)發的(de)實時(shí)效率非常高(gāo),能做(zuò)到秒級内同時(shí)分(fēn)發百萬條消息到衆多(duō)設備。DDS在服務質量(QoS)上提供非常多(duō)的(de)保障途徑,這(zhè)也(yě)是它适用(yòng)于國防軍事、工業控制這(zhè)些高(gāo)可(kě)靠性、可(kě)安全性應用(yòng)領域的(de)原因。但這(zhè)些應用(yòng)都工作在有線網絡下(xià),在無線網絡,特别是資源受限的(de)情況下(xià),沒有見到過實施案例。

5. AMQP協議(yì)(互操作性)

AMQP(Advanced Message Queuing Protocol),先進消息隊列協議(yì),用(yòng)于業務系統例如PLM,ERP,MES等進行數據交換。

适用(yòng)範圍:

最早應用(yòng)于金融系統之間的(de)交易消息傳遞,在物(wù)聯網應用(yòng)中,主要适用(yòng)于移動手持設備與後台數據中心的(de)通(tōng)信和(hé)分(fēn)析。

特點:

  (1) Wire級的(de)協議(yì),它描述了(le)在網絡上傳輸的(de)數據的(de)格式,以字節爲流

  (2) 面向消息、隊列、路由(包括點對(duì)點和(hé)發布/訂閱)、可(kě)靠性、安全

協議(yì)實現:

  · Erlang中的(de)實現有 RabbitMQ

  · AMQP的(de)開源實現,用(yòng)C語言編寫OpenAMQ

  · Apache Qpid

  · stormMQ

6. XMPP協議(yì)(即時(shí)通(tōng)信)

XMPP(Extensible Messaging and Presence Protocol)可(kě)擴展通(tōng)訊和(hé)表示協議(yì),一個(gè)開源形式組織産生的(de)網絡即時(shí)通(tōng)信協議(yì)。

适用(yòng)範圍:

即時(shí)通(tōng)信的(de)應用(yòng)程序,還(hái)能用(yòng)在網絡管理(lǐ)、遊戲、遠(yuǎn)端系統監控等。

特點:

  (1) 客戶機/服務器通(tōng)信模式

  (2) 分(fēn)布式網絡

  (3) 簡單的(de)客戶端,将大(dà)多(duō)數工作放在服務器端進行

  (4) 标準通(tōng)用(yòng)标記語言的(de)子集XML的(de)數據格式

  XMPP是基于XML的(de)協議(yì),由于其開放性和(hé)易用(yòng)性,在互聯網及時(shí)通(tōng)訊應用(yòng)中運用(yòng)廣泛。相對(duì)HTTP,XMPP在通(tōng)訊的(de)業務流程上是更适合物(wù)聯網系統的(de),開發者不用(yòng)花太多(duō)心思去解決設備通(tōng)訊時(shí)的(de)業務通(tōng)訊流程,相對(duì)開發成本會更低。但是HTTP協議(yì)中的(de)安全性以及計算(suàn)資源消耗的(de)硬傷并沒有得(de)到本質的(de)解決。

7. JMS

JMS (Java Message Service),即消息服務,這(zhè)是JAVA平台中著名的(de)消息隊列協議(yì)。

Java消息服務應用(yòng)程序接口,是一個(gè)Java平台中關于面向消息中間件(MOM)的(de)API,用(yòng)于在兩個(gè)應用(yòng)程序之間,或分(fēn)布式系統中發送消息,進行異步通(tōng)信。Java消息服務是一個(gè)與具體平台無關的(de)API,絕大(dà)多(duō)數MOM提供商都對(duì)JMS提供支持。

JMS是一種與廠商無關的(de) API,用(yòng)來(lái)訪問消息收發系統消息,它類似于JDBC(Java Database Connectivity)。這(zhè)裏,JDBC 是可(kě)以用(yòng)來(lái)訪問許多(duō)不同關系數據庫的(de) API,而 JMS 則提供同樣與廠商無關的(de)訪問方法,以訪問消息收發服務。許多(duō)廠商都支持 JMS,包括 IBM 的(de) MQSeries、BEA的(de) Weblogic JMS service和(hé) Progress 的(de) SonicMQ。 JMS 能夠通(tōng)過消息收發服務(有時(shí)稱爲消息中介程序或路由器)從一個(gè) JMS 客戶機向另一個(gè) JMS客戶機發送消息。消息是 JMS 中的(de)一種類型對(duì)象,由兩部分(fēn)組成:報頭和(hé)消息主體。報頭由路由信息以及有關該消息的(de)元數據組成。消息主體則攜帶著(zhe)應用(yòng)程序的(de)數據或有效負載。根據有效負載的(de)類型來(lái)劃分(fēn),可(kě)以将消息分(fēn)爲幾種類型,它們分(fēn)别攜帶:簡單文本(TextMessage)、可(kě)序列化(huà)的(de)對(duì)象 (ObjectMessage)、屬性集合 (MapMessage)、字節流 (BytesMessage)、原始值流 (StreamMessage),還(hái)有無有效負載的(de)消息 (Message)。

協議(yì)對(duì)比:

協議(yì)應用(yòng)的(de)側重方向

  MQTT、 DDS、 AMQP、XMPP、 JMS、 REST、 CoAP這(zhè)幾種協議(yì)都已被廣泛應用(yòng),并且每種協議(yì)都有至少10種以上的(de)代碼實現,都宣稱支持實時(shí)的(de)發布/訂閱的(de)物(wù)聯網協議(yì),但是在具體物(wù)聯網系統架構設計時(shí),需考慮實際場(chǎng)景的(de)通(tōng)信需求,選擇合适的(de)協議(yì)。

  以智能家居爲例,說明(míng)下(xià)這(zhè)些協議(yì)側重應用(yòng)方向。智能家居中智能燈光(guāng)控制,可(kě)以使用(yòng)XMPP協議(yì)控制燈的(de)開關;智能家居的(de)電力供給,發電廠的(de)發動機組的(de)監控可(kě)以使用(yòng)DDS協議(yì);當電力輸送到千家萬戶時(shí),電力線的(de)巡查和(hé)維護,可(kě)以使用(yòng)MQTT協議(yì);家裏的(de)所有電器的(de)電量消耗,可(kě)以使用(yòng)AMQP協議(yì),傳輸到雲端或家庭網關中進行分(fēn)析;最後用(yòng)戶想把自家的(de)能耗查詢服務公布到互聯網上,那麽可(kě)以使用(yòng)REST/HTTP來(lái)開放API服務。

物(wù)聯網協議(yì)的(de)選擇

  發布/訂閱服務更适合物(wù)聯網環境下(xià)通(tōng)信

  DDS、MQTT、AMQP和(hé)JMS都是基于發布/訂閱模式,發布/訂閱框架具有服務自發現、動态擴展、事件過濾的(de)特點,它解決了(le)物(wù)聯網系統在應用(yòng)層的(de)數據源快(kuài)速獲取、物(wù)的(de)加入和(hé)退出、興趣訂閱、降低帶寬流量等問題,實現物(wù)的(de)聯接在空間上松耦合(雙方無需知道通(tōng)信地址)、時(shí)間上松耦合和(hé)同步松耦合。

  服務質量(QoS)是物(wù)聯網通(tōng)信中的(de)重要考慮因素

  在服務策略的(de)幫助下(xià),DDS能夠有效地控制和(hé)管理(lǐ)網絡帶寬、内存空間等資源的(de)使用(yòng),同時(shí)也(yě)能控制數據的(de)可(kě)靠性、實時(shí)性和(hé)數據的(de)生存時(shí)間,通(tōng)過靈活使用(yòng)這(zhè)些服務質量策略,DDS不僅能在窄帶的(de)無線環境上,也(yě)能在寬帶的(de)有線通(tōng)信環境上開發出滿足實時(shí)性需求的(de)數據分(fēn)發系統。