物联网架构分析之一:传输协议选择

Image

物联网应用、移动互联应用,在数据传输协议的选择上,需要充分考虑协议的通用性、扩展性,需要考虑带宽、流量、省电等因素。目前主要的物联网传输协议标准包括:MQTT、CoAP、XMPP、RESTful HTTP,本文将进行介绍和比较,并最终做出选择。最后,将详细介绍MQTT协议的相关使用示例。

一、 物联网协议介绍

1、XMPP
全称:可扩展通讯和表示协议。可用于服务类实时通讯、表示和需求响应服务中的XML数据元流式传输。XMPP以Jabber协议为基础,而Jabber是即时通讯中常用的开放式协议。XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完整,完善等先进性。XMPP的扩展协议Jingle使得其支持语音和视频。

2、MQTT
MQTT(MessageQueuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,成为物联网的推荐协议标准。MQTT的应用会越来越广,值得关注。通过MQTT协议,目前已经扩展出了数十个MQTT服务器端程序,可以通过PHP,JAVA,Python,C,C#等系统语言来向MQTT发送相关消息。

此外,国内很多企业都广泛使用MQTT作为Android手机客户端与服务器端推送消息的协议。其中Sohu,Cmstop手机客户端中均有使用到MQTT作为消息推送消息。MQTT由于开放源代码,耗电量小等特点,将会在移动消息推送领域会有更多的贡献,在物联网领域,传感器与服务器的通信,信息的收集,MQTT都可以作为考虑的方案之一。在未来MQTT会进入到我们生活的各各方面。

3、CoAP
CoAP是受限制的应用协议(ConstrainedApplication Protocol)的代名词。最近几年专家们预测会有更多的设备相互连接,而这些设备的数量将远超人类的数量。在这种大背景下,物联网和M2M技术应运而生。虽然对人们而言,连接入互联网显得方便容易,但是对于那些微型设备而言接入互联网非常困难。在当前由PC机组成的世界,信息交换是通过TCP和应用层协议HTTP实现的。但是对于小型设备而言,实现TCP和HTTP协议显然是一个过分的要求。为了让小设备可以接入互联网,CoAP协议被设计出来。CoAP是一种应用层协议,它运行于UDP协议之上而不是像HTTP那样运行于TCP之上。CoAP协议非常小巧,最小的数据包仅为4字节。简单地来说,CoAP是简化了HTTP协议的RESTfulAPI,因而也只提供了REST的四个方法,即PUT,GET,POST和DELETE。

4、RESTfulHTTP
基于HTTP协议请求,一般采取轮询的方式。对于微小的资源受限,在资源受限的通信的IP的网络,HTTP不是一种可行的选择。它占用了太多的资源和太多的带宽。而对于物联网这种嵌入式设备来说,关于资源与带宽,是我们需要优先考虑的内容。

二、 物联网协议比较

基于各协议的特征,以及衡量一个协议所用的标准,我们制定相关的参数对各通信协议技术进行比较如下:

表格 1 物联网传输协议比较

可以看到,CoAP和MQTT协议具有物联网应用要求的明显优势特征,包括可扩展性、通用性、兼容性、省电、省流量等。其中,MQTT相对CoAP的比较优势在于,当设备间需要N到N通信时,他的发布订阅机制能发挥很大的作用,一旦获得允许,可以使近距离的设备间直接通信等。

三、 MQTT协议介绍

MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:

1、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;

2、对负载内容屏蔽的消息传输;

3、使用 TCP/IP 提供网络连接;

4、有三种消息发布服务质量:

“至多一次”,消息发布完全依赖底层TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。

“至少一次”,确保消息到达,但消息重复可能会发生。

“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。

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

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

四、 MQTT使用示例

一个典型的应用场景如图(图片来自互联网)所示:

图1 MQTT使用示例

图1 MQTT使用示例

MQTT服务器与传感设备、移动设备等之间通过MQTT协议进行数据通信。来完成高效、低耗、可靠的数据传输。

文章来源:menger芒果

相关文章

最新内容

关注微信公众号,抢先看到最新精选资讯

关注2020欧洲杯夺冠热门
微信号,每天收到精选设计资讯