新闻动态

物联网,协议对比

2019-03-25 11:22:16

对于物联网,最重要的是在互联网中设备与设备的通讯,现在物联网在internet通信中比较常见的通讯协议包括:COAP、MQTT、HTTP、websocket、XMPP

1、XMPP

因为物联网设备通信的形式和互联网中的即时通讯使用非常相似,互联网中常用的即时通讯协议也被大量运用于物联网体系构建中,这其间的典型是XMPP。

XMPP是基于XML的协议,因为其开放性和易用性,在互联网及时通讯使用中运用广泛。相对HTTP,XMPP在通讯的事务流程上是更适合物联网体系的,开发者不用花太多心思去处理设备通讯时的事务通讯流程,相对开发成本会更低。可是HTTP协议中的安全性以及核算资源消耗的硬伤并没有得到实质的处理。前段时间报出的黑客轻松破解的TCL洗衣机,正是选用XMPP协议。

无论是HTTP、websocket还是XMPP,在规划时都是依据互联网使用场景规划的,虽然很多厂商把他们使用在物联网体系中,可是必然会水土不服,这些协议的通病便是底子无法适用物联网设备的多样性,无法适用很多物联网设备对低功耗、低成本的需求,难以在极低资源的物联网设备中运用。能不能有协议既可以借用web技能的规划思维,一起又能适应恶劣的物联网设备运转环境呢?

2、COAP

COAP协议的规划目标就是在低功耗低速率的设备上实现物联网通讯。coap和HTTP协议相同,选用URL标明需求发送的数据,在协议格式的规划上也基本是参阅HTTP协议,十分容易理解。同时做了以下几点优化:

(1). 选用UDP而不是TCP。这省去了TCP树立连接的成本及协议栈的开支。

(2). 将数据包头部都选用二进制压缩,减小数据量以适应低网络速率场景。

(3). 发送和接纳数据可以异步进行,这样提升了设备响应速度。

COAP协议就像一个针对物联网场景的http移植品,许多规划保留了HTTP协议的影子,具有web布景的开发者也能快速上手。但是由于许多物联网设备隐藏在局域网内部,coap设备作为服务器无法被外部设备寻址,在ipv6没有遍及之前,coap只能适用于局域网内部(如wifi)通讯,这也很大限制了它的发展。

COAP协议

3、HTTP和websocket

在互联网时代,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数据格式的解析,都是“mission impossible”

HTTP的衔接问题,HTTP客户端和服务器之间的交互是采用恳求/应对形式,在客户端恳求时,会建立一个HTTP衔接,然后发送恳求音讯,服务端给出应对音讯,然后衔接就关闭了。(后来的HTTP1.1支撑持久衔接)

因为TCP衔接的建立过程是有开销的,假如使用了SSL/TLS开销就更大。

在阅读器里,一个网页包含许多资源,包含HTML,CSS,JavaScript,图片等等,这样在加载一个网页时要同时翻开衔接到同一服务器的多个衔接。

HTTP音讯头问题,现在的客户端会发送很多的HTTP音讯头,因为一个网页或许需求50-100个恳求,就会有相当大的音讯头的数据量。

HTTP通讯方法问题,HTTP的恳求/应对方法的会话都是客户端建议的,缺少服务器告诉客户端的机制,在需求告诉的场景,如聊天室,游戏,客户端应用需求不断地轮询服务器。

 

当然,仍然有不少厂商因为开发便利的原因,选择根据HTTP协议构架物联网系统,在设备资源允许的情况下,怎样防止上面说到的数据推送实时性低的问题呢?

websocket是一个可行的方法。websocket是HTML5提出的根据TCP之上的可支撑全双工通讯的协议标准,其在设计上基本遵循HTTP的思路,关于根据HTTP协议的物联网系统是一个很好的补充。

但是问题是:http+websocket的方法,协议开销价值太大。假如让一个单片机去完成这样的协议,性能会很费劲。 

websocket


websocket

4、MQTT协议

MQTT协议就很好的解决了coap存在的问题。MQTT协议是由IBM开发的即时通讯协议,相比来说比较适合物联网场景的通讯协议。MQTT协议采用发布/订阅形式,所有的物联网终端都经过TCP连接到云端,云端经过主题的方式办理各个设备重视的通讯内容,负责将设备与设备之间音讯的转发。

使用发布/订阅音讯形式,供给一对多的音讯发布,免除应用程序耦合。

对负载内容屏蔽的音讯传输。

使用 TCP/IP 供给网络连接。

有三种音讯发布服务质量:

"至多一次",音讯发布彻底依赖底层 TCP/IP 网络。会发作音讯丢掉或重复。这一等级可用于如下状况,环境传感器数据,丢掉一次读记载无所谓,因为不久后还会有第二次发送。

"至少一次",保证音讯抵达,但音讯重复可能会发作。

"只有一次",保证音讯抵达一次。这一等级可用于如下状况,在计费系统中,音讯重复或丢掉会导致不正确的成果。

MQTT协议

小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。

使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。

小型传输

MQTT在协议设计时就考虑到不同设备的计算功能的差异,所以所有的协议都是采用二进制格式编解码,而且编解码格式都十分易于开发和完成。最小的数据包只有2个字节,关于低功耗低速网络也有很好的适应性。有十分完善的QOS机制,依据事务场景能够选择最多一次、至少一次、刚好一次三种音讯送达形式。运行在TCP协议之上,一起支撑TLS(TCP+SSL)协议,而且由于所有数据通信都经过云端,安全性得到了较好地保障。

当时的物联网通信协议真的是百家争鸣,没有任何协议能够在市场上占有操控位置。但要完成物联网设备互联互通(不同厂商、不同渠道、不同架构),关键点并不在上述接入协议或通讯协议的一致,而在于上层事务运用层协议的一致。无论是wifi、蓝牙、亦或是mqtt、http都是设备进行数据通讯和交换的通道,规则的是通讯的格式;而通讯的内容的一致才是完成互联互通的关键。


 

5、DDS

DDS(Data Distribution Service for Real-Time Systems),面向实时系统的数据散布效劳,这是大名鼎鼎的OMG安排提出的协议,其权威性应该能证明该协议的未来运用前景。

适用范围:散布式高可靠性、实时传输设备数据通信。现在DDS现已广泛运用于国防、民航、工业操控等范畴。

特点:

  •   以数据为中心

  •   运用无代理的发布/订阅音讯形式,点对点、点对多、多对多

  •   提供多大21种QoS效劳质量战略

协议首要完成:

  •   OpenDDS 是一个开源的 C++ 完成

  •   OpenSplice DDS

DDS很好地支撑设备之间的数据分发和设备操控,设备和云端的数据传输,一起DDS的数据分发的实时功率十分高,能做到秒级内一起分发百万条音讯到很多设备。DDS在效劳质量(QoS)上提供十分多的保障途径,这也是它适用于国防军事、工业操控这些高可靠性、可安全性运用范畴的原因。但这些运用都作业在有线网络下,在无线网络,特别是资源受限的情况下,没有见到过施行事例。