MQTT 、DDS、XMPP、CoAP,RESTFul HTTP,谁更适合物联网应用?
协议就是双方要做某件事情而制定的规则,而且双方必须要遵从协议所约定的内容,大家才能共同做某件事情。现在在万物互联的时代,越来越多的设备要通过互联网连到云平台上,在物联网技术框架体系中,所使用到的通讯协议主要有:MQTT 、DDS、XMPP、CoAP、RESTFul HTTP等。这些常用的物联网应用层协议究竟谁更适合物联网应用呢?
物联网的终端节点一般都是存储和带宽受限的嵌入式设备,较复杂的协议不太适合嵌入式系统应用,例如:XMPP协议基于XML,对于嵌入式设备来说,XML解析是超级困难的。另外HTTP协议对于嵌入式设备来说是属于重量级也不是很合适,比较适合嵌入式设备就是轻量级的CoAP与MQTT。
一、RESTFul HTTP协议介绍
RESTful是一种基于资源的软件架构风格,是互联网最基础最广泛的应用层协议,所以最和主要的还是HTTP协议本身。平时访问网站我都会在地址栏上面填写一些网址,就可以访问相关的网页了,但是究竟如何因为我输入的那一长串的东西就能看到网页呢?我们来一起探究一下网页的显示过程:浏览器根据提供的URL给Web服务器发送一个请求,Web服务器接收请求进行处理生成一个响应发送给浏览器,浏览器解析响应中的符合HTML规范格式要求的文档,文档经过解析,这样网页就显示了。这个交互过程就是由HTTP(HyperText Transfer Protocol,超文本传输协议)的协议作为规范,完成客户端到服务端的一系列运作动作。
HTTP协议的主要特点可概括如下:支持客户/服务器模式,请求应答型,头部规定灵活,HTTP允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记。有端短连接和长连接,短连接的含义是限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接,减少服务器这边的并发压力。HTTP协议是无状态协议,无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。总体来说HTTP对于嵌入式设备来说太重了,也不灵活。
二、CoAP协议
在最近几年的时间中,越来越多的设备相互连接,而这些设备的数量将远超人类的数量,在这种大背景下,物联网和M2M技术应运而生。虽然对人而言,连接入互联网显得方便容易,但是对于那些微型设备而言接入互联网非常困难。在当前由PC机组成的世界,信息交换是通过TCP和应用层协议HTTP实现的。但是对于一般的设备而言,实现HTTP协议显然是一个过分的要求。为了让小设备可以接入互联网,CoAP协议被设计出来。
COAP与HTTP协议都是通过4个请求方法(GET, PUT, POST, DELETE)对服务器端资源进行操作。两者之间明显的区别在于HTTP是通过文本描述方式描述协议包内容,协议包里面会包含一些空格符,换行符等,协议包可读性很强。而COAP是通过定义二进制各位段功能来描述协议包内容。 因此COAP协议包大小更小,更紧凑,COAP协议最小的协议包只有4B。 协议包需要经过解析后才能知道里面具体内容,另还有一个明显的区别是传统的HTTP协议是主机与web服务器之间是单向通信的。而CoAP系统中CoAP Client与CoAP server是可以双向通信,双方都可以主动向对方发送请求。
三、MQTT协议(低带宽)
MQTT (Message Queuing Telemetry Transport ),消息队列遥测传输,由IBM开发的即时通讯协议,相比来说比较适合物联网场景的通讯协议。MQTT协议采用发布/订阅模式,所有的物联网终端都通过TCP连接到云端,云端通过主题的方式管理各个设备关注的通讯内容,负责将设备与设备之间消息的转发。
MQTT在协议设计时就考虑到不同设备的计算性能的差异,所以所有的协议都是采用二进制格式编解码,并且编解码格式都非常易于开发和实现。最小的数据包只有2个字节,对于低功耗低速网络也有很好的适应性。有非常完善的QOS机制,根据业务场景可以选择最多一次、至少一次、刚好一次三种消息送达模式。运行在TCP协议之上,同时支持TLS(TCP+SSL)协议,并且由于所有数据通信都经过云端,安全性得到了较好地保障。
MQTT适用在低带宽、不可靠的网络下提供基于云平台的远程设备的数据传输和监控。它具有以下特点:(1)使用基于代理的发布/订阅消息模式,提供一对多的消息发布;(2)使用TCP/IP提供网络连接;(3)小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量;(4)支持QoS,有三种消息发布服务质量:“至多一次”,“至少一次”,“只有一次”。
四、DDS协议
DDS(Data Distribution Service for Real-Time Systems),面向实时系统的数据分布服务,这是大名鼎鼎的OMG组织提出的协议,其权威性应该能证明该协议的未来应用前景。DDS协议适用于分布式高可靠性、实时传输设备数据通信,目前已经广泛应用于国防、民航、工业控制等领域。
DDS具有以下特点:(1)以数据为中心;(2)使用无代理的发布/订阅消息模式,点对点、点对多、多对多;(3)提供多大21种QoS服务质量策略。
DDS很好地支持设备之间的数据分发和设备控制,设备和云端的数据传输,同时DDS的数据分发的实时效率非常高,能做到秒级内同时分发百万条消息到众多设备。DDS在服务质量(QoS)上提供非常多的保障途径,这也是它适用于国防军事、工业控制这些高可靠性、可安全性应用领域的原因。但这些应用都工作在有线网络下,在无线网络,特别是资源受限的情况下,没有见到过实施案例。
五、XMPP协议(即时通信)
XMPP(Extensible Messaging and Presence Protocol)可扩展通讯和表示协议,XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。XMPP适用于即时通信的应用程序,还能用在网络管理、内容供稿、协同工具、档案共享、游戏、远端系统监控等。它的特点是:(1)客户机/服务器通信模式;(2)分布式网络;(3)简单的客户端,将大多数工作放在服务器端进行;(4)标准通用标记语言的子集XML的数据格式。
XMPP是基于XML的协议,由于其开放性和易用性,在互联网及时通讯应用中运用广泛。相对HTTP,XMPP在通讯的业务流程上是更适合物联网系统的,开发者不用花太多心思去解决设备通讯时的业务通讯流程,相对开发成本会更低。XMPP协议成熟、强大、可扩展性强、目前主要应用于许多聊天系统中,但是协议较复杂、冗余(基于XML)、费流量、费电,部署硬件成本高。
六、通讯协议比较
从当前物联网应用发展趋势来分析,MQTT协议具有一定的优势,因为目前国内外主要的云计算服务商,比如阿里云、AWS、百度云、Azure以及腾讯云都一概支持MQTT协议。还有一个原因就是MQTT协议比CoAP成熟的要早,所以MQTT具有一定的先发优势,但随着物联网的智能化和多变化的发展,后续物联网应用平台肯定会兼容更多的物联网应用层协议。
关注物联网智能传感器了解更多物联网知识
版权归原作者 SummerGao. 所有, 如有侵权,请联系我们删除。