天天看點

IOT(物聯網)的七大通信協定

目錄

​​TCP/IP協定與Http協定的差別​​

​​物聯網協定​​

​​1. REST/HTTP(松耦合服務調用)​​

​​2. CoAP協定​​

​​3. MQTT協定(低帶寬)​​

​​4. DDS協定(高可靠性、實時)​​

​​5. AMQP協定(互操作性)​​

​​6. XMPP協定(即時通信)​​

​​7. JMS​​

TCP/IP協定與Http協定的差別

TPC/IP協定是傳輸層協定,主要解決資料如何在網絡中傳輸.

HTTP是應用層協定,主要解決如何包裝資料.

關于TCP/IP和HTTP協定的關系,網絡有一段比較容易了解的介紹:“我們在傳輸資料時,可以隻使用(傳輸層)TCP/IP協定,但是那樣的話,如果沒有應用層,便無法識别資料内容,如果想要使傳輸的資料有意義,則必須使用到應用層協定,應用層協定有很多,比如HTTP、FTP、TELNET等,也可以自己定義應用層協定。WEB使用HTTP協定作應用層協定,以封裝HTTP 文本資訊,然後使用TCP/IP做傳輸層協定将它發到網絡上。”

術語TCP/IP代表傳輸控制協定/網際協定,指的是一系列協定。“IP”代表網際協定,TCP和UDP使用該協定從一個網絡傳送資料包到另一個網絡。把IP想像成一種高速公路,它允許其它協定在上面行駛并找到到其它電腦的出口。TCP和UDP是高速公路上的“卡車”,它們攜帶的貨物就是像HTTP,檔案傳輸協定FTP這樣的協定等。 

你應該能了解,TCP和UDP是FTP,HTTP和SMTP之類使用的傳輸層協定。雖然TCP和UDP都是用來傳輸其他協定的,它們卻有一個顯著的不同:TCP提供有保證的資料傳輸,而UDP不提供。這意味着TCP有一個特殊的機制來確定資料安全的不出錯的從一個端點傳到另一個端點,而UDP不提供任何這樣的保證。

HTTP(超文本傳輸協定)是利用TCP在兩台電腦(通常是Web伺服器和用戶端)之間傳輸資訊的協定。用戶端使用Web浏覽器發起HTTP請求給Web伺服器,Web伺服器發送被請求的資訊給用戶端。

物聯網協定

一類是傳輸協定,一類是通信協定。

  • 傳輸協定一般負責子網内裝置間的組網及通信;
  • 通信協定則主要是運作在傳統網際網路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協定是典型的C/S通訊模式,由用戶端主動發起連接配接,向伺服器請求XML或JSON資料。該協定最早是為了适用web浏覽器的上網浏覽場景和設計的,目前在PC、手機、pad等終端上都應用廣泛,但并不适用于物聯網場景。在物聯網場景中其有三大弊端:

備定期主動拉取的的方式,實作成本和實時性都大打折扣。(物聯網裝置性能不行,便宜)

安全性不高。web的不安全都是婦孺皆知,HTTP是明文協定,在很多要求高安全性的物聯網場景,如果不做很多安全準備工作(如采用https等),後果不堪設想。

場景中的裝置多樣化,對于運算和存儲資源都十分受限的裝置,http協定實作、XML/JSON資料格式的解析,都是不可能的任務。

IOT的七大通信協定:

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

REST即表述性狀态傳遞,是基于HTTP協定開發的一種通信風格。

适用範圍:

REST/HTTP主要為了簡化網際網路中的系統架構,快速實作用戶端和伺服器之間互動的松耦合,降低了用戶端和伺服器之間的互動延遲。是以适合在物聯網的應用層面,通過REST開放物聯網中資源,實作服務被其他應用所調用。

特點:

(1)REST 指的是一組架構限制條件和原則。滿足這些限制條件和原則的應用程式或設計就是RESTful。

(2)用戶端和伺服器之間的互動在請求之間是無狀态的。

(3)在伺服器端,應用程式狀态和功能可以分為各種資源,它向用戶端公開,每個資源都使用 URI 得到一個唯一的位址。所有資源都共享統一的界面,以便在用戶端和伺服器之間傳輸狀态。

(4)使用的是标準的 HTTP 方法,比如:GET、PUT、POST 和 DELETE。

 REST/HTTP其實是網際網路中服務調用API封裝風格,物聯網中資料采集到物聯網應用系統中,在物聯網應用系統中,可以通過開放REST API的方式,把資料服務開放出去,被網際網路中其他應用所調用。

2. CoAP協定

CoAP (Constrained Application Protocol),受限應用協定,應用于無線傳感網中協定。

适用範圍:

CoAP是簡化了HTTP協定的RESTful API,CoAP是6LowPAN協定棧中的應用層協定,它适用于在資源受限的通信的IP網絡。

特點:

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

  (2)方法和URIs:為了實作用戶端通路伺服器上的資源,CoAP支援GET、PUT、POST和DELETE等方法。CoAP還支援URIs,這是Web架構的主要特點。 

(3)傳輸層使用UDP協定:CoAP協定是建立在UDP協定之上,以減少開銷和支援多點傳播功能。它也支援一個簡單的停止和等待的可靠性傳輸機制。

  (4)支援異步通信:HTTP對M2M(Machine-to-Machine)通信不适用,這是由于事務總是由用戶端發起。而CoAP協定支援異步通信,這對M2M通信應用來說是常見的休眠/喚醒機制。

  (5)支援資源發現:為了自主的發現和使用資源,它支援内置的資源發現格式,用于發現裝置上的資源清單,或者用于裝置向服務目錄公告自己的資源。它支援RFC5785中的格式,在CoRE中用/.well—known/core的路徑表示資源描述。

  (6)支援緩存:CoAP協定支援資源描述的緩存以優化其性能。

協定主要實作:

  · libcoap(C語言實作)

  · Californium(java語言實作)

  CoAP和6LowPan,這分别是應用層協定和網絡适配層協定,其目标是解決裝置直接連接配接到IP網絡,也就是IP技術應用到裝置之間、網際網路與裝置之間的通信需求。因為IPV6技術帶來巨大尋址空間,不光解決了未來巨量裝置和資源的辨別問題,網際網路上應用可以直接通路支援IPV6的裝置,而不需要額外的網關。

3. MQTT協定(低帶寬)

MQTT (Message Queuing Telemetry Transport ),消息隊列遙測傳輸,由IBM開發的即時通訊協定,相比來說比較适合物聯網場景的通訊協定。MQTT協定采用釋出/訂閱模式,所有的物聯網終端都通過TCP連接配接到雲端,雲端通過主題的方式管理各個裝置關注的通訊内容,負責将裝置與裝置之間消息的轉發。

适用範圍:

在低帶寬、不可靠的網絡下提供基于雲平台的遠端裝置的資料傳輸和監控。

特點:

  (1) 使用基于代理的釋出/訂閱消息模式,提供一對多的消息釋出

  (2) 使用 TCP/IP 提供網絡連接配接

  (3) 小型傳輸,開銷很小(固定長度的頭部是 2 位元組),協定交換最小化,以降低網絡流量

  (4) 支援QoS,有三種消息釋出服務品質:“至多一次”, “至少一次”, “隻有一次”

協定主要實作和應用:

  (1) 已經有PHP,JAVA,Python,C,C#等多個語言版本的協定架構

  (2) IBM Bluemix 的一個重要部分是其 IoT FoundaTIon 服務,這是一項基于雲的 MQTT 執行個體

  (3) 移動應用程式也早就開始使用MQTT,如 Facebook Messenger 和com等

  MQTT協定一般适用于裝置資料采集到端(Device-》Server,Device-》Gateway),集中星型網絡架構(hub-and-spoke),不适用裝置與裝置之間通信,裝置控制能力弱,另外實時性較差,一般都在秒級。

4. DDS協定(高可靠性、實時)

DDS(Data Distribution Service for Real-Time Systems),面向實時系統的資料分布服務。

适用範圍:

分布式高可靠性、實時傳輸裝置資料通信。目前DDS已經廣泛應用于國防、民航、工業控制等領域。

特點:

  (1) 以資料為中心

  (2) 使用無代理的釋出/訂閱消息模式,點對點、點對多、多對多

  (3) 提供多大21種QoS服務品質政策

協定主要實作:

  · OpenDDS 是一個開源的 C++ 實作

  · OpenSplice DDS

  DDS很好地支援裝置之間的資料分發和裝置控制,裝置和雲端的資料傳輸,同時DDS的資料分發的實時效率非常高,能做到秒級内同時分發百萬條消息到衆多裝置。DDS在服務品質(QoS)上提供非常多的保障途徑,這也是它适用于國防軍事、工業控制這些高可靠性、可安全性應用領域的原因。但這些應用都工作在有線網絡下,在無線網絡,特别是資源受限的情況下,沒有見到過實施案例。

5. AMQP協定(互操作性)

AMQP(Advanced Message Queuing Protocol),先進消息隊列協定,用于業務系統例如PLM,ERP,MES等進行資料交換。

适用範圍:

最早應用于金融系統之間的交易消息傳遞,在物聯網應用中,主要适用于移動手持裝置與背景資料中心的通信和分析。

特點:

  (1) Wire級的協定,它描述了在網絡上傳輸的資料的格式,以位元組為流

  (2) 面向消息、隊列、路由(包括點對點和釋出/訂閱)、可靠性、安全

協定實作:

  · Erlang中的實作有 RabbitMQ

  · AMQP的開源實作,用C語言編寫OpenAMQ

  · Apache Qpid

  · stormMQ

6. XMPP協定(即時通信)

XMPP(Extensible Messaging and Presence Protocol)可擴充通訊和表示協定,一個開源形式組織産生的網絡即時通信協定。

适用範圍:

即時通信的應用程式,還能用在網絡管理、遊戲、遠端系統監控等。

特點:

  (1) 客戶機/伺服器通信模式

  (2) 分布式網絡

  (3) 簡單的用戶端,将大多數工作放在伺服器端進行

  (4) 标準通用标記語言的子集XML的資料格式

  XMPP是基于XML的協定,由于其開放性和易用性,在網際網路及時通訊應用中運用廣泛。相對HTTP,XMPP在通訊的業務流程上是更适合物聯網系統的,開發者不用花太多心思去解決裝置通訊時的業務通訊流程,相對開發成本會更低。但是HTTP協定中的安全性以及計算資源消耗的硬傷并沒有得到本質的解決。

7. JMS

JMS (Java Message Service),即消息服務,這是JAVA平台中著名的消息隊列協定。

Java消息服務應用程式接口,是一個Java平台中關于面向消息中間件(MOM)的API,用于在兩個應用程式之間,或分布式系統中發送消息,進行異步通信。Java消息服務是一個與具體平台無關的API,絕大多數MOM提供商都對JMS提供支援。

JMS是一種與廠商無關的 API,用來通路消息收發系統消息,它類似于JDBC(Java Database Connectivity)。這裡,JDBC 是可以用來通路許多不同關系資料庫的 API,而 JMS 則提供同樣與廠商無關的通路方法,以通路消息收發服務。許多廠商都支援 JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ。 JMS 能夠通過消息收發服務(有時稱為消息中介程式或路由器)從一個 JMS 客戶機向另一個 JMS客戶機發送消息。消息是 JMS 中的一種類型對象,由兩部分組成:報頭和消息主體。報頭由路由資訊以及有關該消息的中繼資料組成。消息主體則攜帶着應用程式的資料或有效負載。根據有效負載的類型來劃分,可以将消息分為幾種類型,它們分别攜帶:簡單文本(TextMessage)、可序列化的對象 (ObjectMessage)、屬性集合 (MapMessage)、位元組流 (BytesMessage)、原始值流 (StreamMessage),還有無有效負載的消息 (Message)。

協定對比:

協定應用的側重方向

  MQTT、 DDS、 AMQP、XMPP、 JMS、 REST、 CoAP這幾種協定都已被廣泛應用,并且每種協定都有至少10種以上的代碼實作,都宣稱支援實時的釋出/訂閱的物聯網協定,但是在具體物聯網系統架構設計時,需考慮實際場景的通信需求,選擇合适的協定。

  以智能家居為例,說明下這些協定側重應用方向。智能家居中智能燈光控制,可以使用XMPP協定控制燈的開關;智能家居的電力供給,發電廠的發動機組的監控可以使用DDS協定;當電力輸送到千家萬戶時,電力線的巡查和維護,可以使用MQTT協定;家裡的所有電器的電量消耗,可以使用AMQP協定,傳輸到雲端或家庭網關中進行分析;最後使用者想把自家的能耗查詢服務公布到網際網路上,那麼可以使用REST/HTTP來開放API服務。

物聯網協定的選擇

  釋出/訂閱服務更适合物聯網環境下通信

繼續閱讀