物联网通信协议的详解及选择建议

通信对物联网来说十分关键,无论是近距离无线传输技术还是移动通信技术,甚至是LPWAN都影响着物联网的发展。通信协议是指双方实体完成通信或服务所必须遵循的规则和约定。那么物联网都有哪些通信协议?众多的协议该如何选择?

我们将物联网通信协议分为两大类,一类是接入协议,一类是通讯协议。接入协议一般负责子网内设备间的组网及通信(文章《常见物联网近距离无线通信技术解析》有详细介绍);通讯协议主要是运行在传统互联网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协议是典型的CS通讯模式,由客户端主动发起连接,向服务器请求XML或JSON数据。该协议最早是为了适用web浏览器的上网浏览场景和设计的,目前在PC、手机、pad等终端上都应用广泛,但并不适用于物联网场景。在物联网场景中其有三大弊端:

1. 由于必须由设备主动向服务器发送数据,难以主动向设备推送数据。对于单单的数据采集等场景还勉强适用,但是对于频繁的操控场景,只能推过设备定期主动拉取的的方式,实现成本和实时性都大打折扣。

2. 安全性不高。web的不安全都是妇孺皆知,HTTP是明文协议,在很多要求高安全性的物联网场景,如果不做很多安全准备工作(如采用https等),后果不堪设想。

3. 不同于用户交互终端如pc、手机,物联网场景中的设备多样化,对于运算和存储资源都十分受限的设备,http协议实现、XML/JSON数据格式的解析,都是不可能的任务。

REST/HTTP(松耦合服务调用)

REST (Representational State Transfer),表征状态转换,是基于HTTP协议开发的一种通信风格,目前还不是标准;

适用范围:REST/HTTP主要为了简化互联网中的系统架构,快速实现客户端和服务器之间交互的松耦合,降低了客户端和服务器之间的交互延迟。因此适合在物联网的应用层面,通过REST开放物联网中资源,实现服务被其他应用所调用。

特点:

· REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful

· 客户端和服务器之间的交互在请求之间是无状态的

· 在服务器端,应用程序状态和功能可以分为各种资源,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用 URI (Universal Resource Identifier) 得到一个惟一的地址。所有资源都共享统一的界面,以便在客户端和服务器之间传输状态

· 使用的是标准的 HTTP 方法,比如 GET、PUT、POST 和 DELETE

点评: REST/HTTP其实是互联网中服务调用API封装风格,物联网中数据采集到物联网应用系统中,在物联网应用系统中,可以通过开放REST API的方式,把数据服务开放出去,被互联网中其他应用所调用。

CoAP协议

· CoAP (Constrained Application Protocol),受限应用协议,应用于无线传感网中协议。

适用范围:CoAP是简化了HTTP协议的RESTful API,CoAP是6LowPAN协议栈中的应用层协议,它适用于在资源受限的通信的IP网络。

特点:

报头压缩:CoAP包含一个紧凑的二进制报头和扩展报头。它只有短短的4B的基本报头,基本报头后面跟扩展选项。一个典型的请求报头为10~20B。

方法和URIs:为了实现客户端访问服务器上的资源,CoAP支持GET、PUT、POST和DELETE等方法。CoAP还支持URIs,这是Web架构的主要特点。

传输层使用UDP协议:CoAP协议是建立在UDP协议之上,以减少开销和支持组播功能。它也支持一个简单的停止和等待的可靠性传输机制。

支持异步通信:HTTP对M2M(Machine-to-Machine)通信不适用,这是由于事务总是由客户端发起。而CoAP协议支持异步通信,这对M2M通信应用来说是常见的休眠/唤醒机制。

支持资源发现:为了自主的发现和使用资源,它支持内置的资源发现格式,用于发现设备上的资源列表,或者用于设备向服务目录公告自己的资源。它支持RFC5785中的格式,在CoRE中用/.well—known/core的路径表示资源描述。

支持缓存:CoAP协议支持资源描述的缓存以优化其性能。

协议主要实现:

· libcoap(C语言实现)

· Californium(java语言实现)

点评:CoAP和6LowPan,这分别是应用层协议和网络适配层协议,其目标是解决设备直接连接到IP网络,也就是IP技术应用到设备之间、互联网与设备之间的通信需求。因为IPV6技术带来巨大寻址空间,不光解决了未来巨量设备和资源的标识问题,互联网上应用可以直接访问支持IPV6的设备,而不需要额外的网关。

MQTT协议(低带宽)

MQTT (Message Queuing Telemetry Transport ),消息队列遥测传输,由IBM开发的即时通讯协议,相比来说比较适合物联网场景的通讯协议。MQTT协议采用发布/订阅模式,所有的物联网终端都通过TCP连接到云端,云端通过主题的方式管理各个设备关注的通讯内容,负责将设备与设备之间消息的转发。

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

适用范围:在低带宽、不可靠的网络下提供基于云平台的远程设备的数据传输和监控。

特点:

· 使用基于代理的发布/订阅消息模式,提供一对多的消息发布

· 使用 TCP/IP 提供网络连接

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

· 支持QoS,有三种消息发布服务质量:“至多一次”, “至少一次”, “只有一次”

协议主要实现和应用:

· 已经有PHP,JAVA,Python,C,C#等多个语言版本的协议框架

· IBM Bluemix 的一个重要部分是其 IoT Foundation 服务,这是一项基于云的 MQTT 实例

· 移动应用程序也早就开始使用MQTT,如 Facebook Messenger 和com等

点评:MQTT协议一般适用于设备数据采集到端(Device-》Server,Device-》Gateway),集中星型网络架构(hub-and-spoke),不适用设备与设备之间通信,设备控制能力弱,另外实时性较差,一般都在秒级。

本文转自d1net(转载)

时间: 2024-09-14 03:13:44

物联网通信协议的详解及选择建议的相关文章

物联网技术趋势详解:多模LTE或将是一条康庄大道

CNET科技资讯网 7月14日 北京报道(文/周雅): 就在今年亚洲电子消费展(CES Asia)期间,中国移动正式推出NB-IoT/eMTC/GSM三模通信模组A9500:时间跳回到5月底,中移动与高通.摩拜单车启动中国首个eMTC/NB-IoT/GSM(LTE Cat M1/NB1和E-GPRS)多模外场测试--两件事情的共同点,都是采用高通MDM9206 LTE IoT调制解调器.于是大家看到,一边Verizon和AT&T在美国商用eMTC,一边国内运营商部署多模通信组的一只靴子已经落地,

阿里淘咖啡火了 全球九大无人便利店物联网技术方案详解

最近阿里展示了无人售货的场景,让人大开眼界,自去年电商巨头亚马逊推出Amazon Go无人商店,在零售行业掀起了一股技术革新的热潮,在今年6月初,缤果盒子首家无人智能便利店在上海开业,一时之间,无人商店如雨后春笋般不断涌现.下面小编就国内外九大无人商店方案进行了整理,并对其所采用的物联网技术进行简单解读. 亚马逊Amazon Go 亚马逊推出的Amazon Go,除了顾客无需结账,即买即走,免去了顾客排队的苦恼外,Amazon Go跟普通的零售店几乎没有区别,其商品摆设与普通零售店亦基本一致,主

[iOS]iOS AudioSession详解 Category选择 听筒扬声器切换

在你读这篇文章之前,如果你不嫌读英文太累,推荐阅读下苹果iOS Human Interface Guidelines中Sound这一章. 选择一个Category AVAudioSessionCategoryAmbient 或 kAudioSessionCategory_AmbientSound --用于非以语音为主的应用,使用这个category的应用会随着静音键和屏幕关闭而静音.并且不会中止其它应用播放声音,可以和其它自带应用如iPod,safari等同时播放声音.注意:该Category无

详解如何选择使用ArrayList、HashTable、List、Dictionary数组_C#教程

在C#中,数组由于是固定长度的,所以常常不能满足我们开发的需求. 由于这种限制不方便,所以出现了ArrayList. ArrayList.List<T> ArrayList是可变长数组,你可以将任意多的数据Add到ArrayList里面.其内部维护的数组,当长度不足时,会自动扩容为原来的两倍. 但是ArrayList也有一个缺点,就是存入ArrayList里面的数据都是Object类型的,所以如果将值类型存入和取出的时候会发生装箱.拆箱操作(就是值类型与引用类型之间的转换),这个会影响程序性能

黑客攻击的11步详解及防御建议

  全世界网络面临巨大考验,每个人的信息都受到严重的安全威胁,尽管目前看起来你的信息还是有一定的安全保障,可是面对层出不穷的新技术,有必要了解整个攻击过程,因为黑客们依然存在. 安全公司Aorato的一项新研究显示,个人可识别信息(PII)和信用卡及借记卡数据在今年年初的Target数据泄露实践中遭到大规模偷窃后,该公司的PCI合规新计划已经大幅降低了损害的范围.利用所有可用的公开报告,Aorato的首席研究员Tal Aorato ery及其团队记录了攻击者用来攻击Target的所有工具,并创建

黑客攻击我们的 11 步详解及防御建议

安全公司Aorato的一项新研究显示,个人可识别信息(PII)和信用卡及借记卡数据在今年年初的Target数据泄露实践中遭到大规模偷窃后,该公司的PCI合规新计划已经大幅降低了损害的范围. 利用所有可用的公开报告,Aorato的首席研究员Tal Aorato 'ery及其团队记录了攻击者用来攻击Target的所有工具,并创建了一个循序渐进的过程,来讲述攻击者是如何渗透到零售商.在其网络内传播.并最终从 PoS系统抓取信用卡数据的.关于事故的细节依旧模糊,但是Be'ery认为,有必要了解整个攻击过

《Android游戏开发详解》一2.3 编写第一个程序

2.3 编写第一个程序 Android游戏开发详解在选择了工作区之后,Eclipse将会打开,并且你将会看到图2-7所示的欢迎界面. 现在,我们已经准备好了IDE,可以开始编写第一个Java程序了.由于还没有构建任何的Android应用程序,我们可以安全地退出这个标签页.如图2-8所示. 完成之后,我们将可以访问几个不同的视图.现在,只需要关心其中的2个视图:Package Explorer 和Editor Window.如图2-9所示. 2.3.1 创建一个新的Java项目 我们终于开始编写第

图文详解Heap Sort堆排序算法及JavaScript的代码实现_基础知识

1. 不得不说说二叉树要了解堆首先得了解一下二叉树,在计算机科学中,二叉树是每个节点最多有两个子树的树结构.通常子树被称作"左子树"(left subtree)和"右子树"(right subtree).二叉树常被用于实现二叉查找树和二叉堆. 二叉树的每个结点至多只有二棵子树(不存在度大于 2 的结点),二叉树的子树有左右之分,次序不能颠倒.二叉树的第 i 层至多有 2i - 1 个结点:深度为 k 的二叉树至多有 2k - 1 个结点:对任何一棵二叉树 T,如果其

CSS标签语法:详解选择符中的关系选择符

文章简介:CSS标签语法:详解选择符中的关系选择符. 相信大家都对CSS选择符都不陌生,选择符包含:元素选择符.关系选择符.属性选择符.伪类选择符.伪对象选择符.在众多的选择符中,可以让我们根据自己的需要更加灵活性的选择合适的选择符来对样式进行编写,达到最大的质量和效率. 今天就为大家介绍下选择符中的关系选择符,"关系"这可是一等一的大事啊,我们得理清楚,这样做事情才能更加的有效率.不然在CSS中有你受的,哈哈.关系选择符有四个类别:包含选择符.子选择符.相邻选择符.兄弟选择符.接下来