以不一样的视角看物联网协议
嵌入式系统接入互联网形成一个物联网系统,协议是必不可少的关键技术。传统上以解决人机对话为目标的互联网协议遇到了物物相连的物联网系统,显得像大马拉小车,有劲使不上,物联网协议就此应运而生。
毫无疑问,人类和嵌入式设备通过完全不同的方式使用互联网。人类主要通过万维网—运行在互联网上的应用集合—访问互联网。当然,网页并不是互联网人机交换的唯一选择,我们还可以通过电子邮件、短信、手机应用程序,以及一系列的社交媒体工具实现互联。
与互联网相比,在物联网中,智能电子设备之间通过互联网实现信息的交互,但这些设备上并没有类似于网页浏览器和社交媒体的工具,人们已经着手开发这类工具和服务。
TCP/IP协议栈
TCP/IP协议栈是互联网的核心。它可以通过OSI七层参考模型来表示,如图1所示。图中顶部的三层组合在一起,以简化模型。
图1 TCP/IP协议栈参考模型
1. 物理层和数据链路层
嵌入式系统中最使用的物理层协议包括:
1)以太网(10,100,1G)
2)WiFi(802.11b,g,n)
3)串行PPP(点对点协议)
4)GSM,3G,LTE,4G
2. 网络层
网络层是互联网的基础。该层提供了网络间及物理层之间的连接。该层中,设备拥有人们随处可见的IP地址。
3. 传输层
该层位于网络层之上,具有TCP和UDP两种传输协议。
TCP通常用于网络间的人机交互(电子邮件、网页浏览等),以致很多人认为TCP协议是传输层使用的唯一协议。TCP提供了逻辑连接、传输确认、丢包重传和流控服务。
但对嵌入式系统而言,使用TCP有点小题大做了。尽管长期以来,UDP主要用于类似于DNS和DHCP的网络服务,现在,在传感器数据采集和远程控制领域,它有了新的用武之地。
UDP也适合于实时数据应用,例如音频和视频应用。这是因为,TCP的包应答和重传特性对这类应用是无效的,并且增加了额外的开销。如果一个数据块(例如一段对话)没有按时到达目的地,也没有必要重传该包。如果重传,它会破坏包的顺序并导致信息错误。
设计物联网设备时,必须考虑如何将本地设备连接到互联网。可以通过网关,或者将该功能集成到设备中以实现连接。目前,很多MCU集成了以太网控制器,简化了联网的工作。
物联网协议栈
你可以使用熟悉的Web技术来构建物联网系统吗?答案是肯定,但没有使用新的协议有效。
HTTP(S)和WebSocket是数据负载中传送XML或JavaScript对象符号(JSON)的常用标准。JSON为网页开发人员提供了一个抽象层,可以为Web应用创建一个到Web服务器的持续、稳定的连接。
1. HTTP
HTTP是用于Web服务的客户端–服务器模型的基础。实现HTTP连接的安全的方式是在物联网设备中只包含一个客户端,不包含服务器。换言之,设计一个只发起连接、不接收的物联网设备比较安全。总之,不允许外部设备访问你的局域网。
2. WebSocket
WebSocket是一个全双工通信协议,它在客户端和服务器之间,通过一个TCP连接实现全双工通信。它是HTML 5规范的一部分,WebSocket标准简化了双向Web通信和连接管理方面的复杂度。
3. XMPP
XMPP(可扩展通信与表示协议)是现有Web技术在物联网领域开发新用途的一个很好的实例。
XMPP最初用于即时消息与现场信息。现在已经扩展到支持VoIP信令、协作、轻量级中间件、内容聚合及广义的XML数据路由等领域。它是家用电器大规模管理的竞争者,这些白色家电包括洗衣机、干衣机、冰箱等。
4. CoAP
尽管Web协议可用于物联网设备,对大多数物联网应用来说,它的体积太庞大。IETF制定的资源受限的应用协议(CoAP),可用于低功耗和资源受限的网络。CoAP是一个REST类型的协议,采用了与HTTP类似的语法,其语义可以与HTTP的语义一一对应。
对基于电池供电或能量收集供电的设备来说,CoAP协议是一个很好的选择。其部分特性如下:
1)CoAP运行在UDP协议之上。
2)由于UDP传输不可靠,CoAP重现了一些TCP的功能。例如,CoAP可以识别需要确认的请求和无需确认的请求。
3)CoAP报文采用异步请求/响应模式。
4)所有的报文头、方法和状态码基于二进制编码,以减少协议开销。
5)不同于HTTP,缓存CoAP响应的能力不依赖请求方式,取决于应答码。
6)CoAP面向需要轻量级协议和建立永久连接的需求。如果拥有Web应用背景,使用CoAP会比较容易。
5. MQTT
MQ(消息队列)遥测传输是一个开源的协议栈(MQTT),面向资源受限的设备和低带宽、高延迟的网络。它采用发布/订阅消息传输模式,是一个轻量级的协议,适合将小型设备连接到资源受限的网络。
MQTT带宽利用率高,数据不可知,并具有连续的会话意识。可以帮助物联网设备减少资源消耗,还可以确保可靠性和一定程度的服务等级。
MQTT面向大型网络中的小型设备,这些设备需要通过互联网中的后台服务器来监视和控制。它不是一个设备到设备的传输,也不是“组播”数据到多个接收器的传输。MQTT非常简单,仅提供了一些控制选项。
协议比较
表1概述了所有的物联网协议,开发这些互联网定义的物联网协议的目的是满足低存储空间、低带宽和高延迟设备的联网需求。
表1 超越MQTT:从思科的视角看物联网协议(Paul Duffy,2013.4.30)
协议 | CoAP | XMPP | RESTful HTTP | MQTT |
---|---|---|---|---|
传输类型 | UDP | TCP | TCP | TCP |
消息模式 | 请求/响应 | 发布/订阅 请求/响应 | 请求/响应 | 发布/订阅 请求/响应 |
2G、3G、4G适用性(1000个节点) | 很好 | 很好 | 很好 | 很好 |
LLN适用性(1000个节点) | 很好 | 可以 | 可以 | 可以 |
资源占用 | 10K RAM/Flash | 10K RAM/Flash | 10K RAM/Flash | 10K RAM/Flash |
成功案例 | 生活局域网 | 大型家电的远程管理 | 智能能源规范2(能源管理,家庭服务) | 扩展企业消息到物联网应用中 |
互联网和物联网协议比较如下,图2提供了将互联网协议与物联网中的性能优势比较。资料来源于Zach Shelby的报告“物联网驱动标准”。
图2 互联网和物联网协议比较
如图2左侧所示,Web应用的协议栈可以很容易地生成几百到几千字节的数据开销。比较而言,物联网协议针对受限制的设备和网络进行了优化,仅生成几十个字节的数据开销。
相关阅读
- 基于嵌入式操作系统的物联网安全
作者:何小庆,著名的嵌入式系统专家,国内最早涉足嵌入式OS者之一,创办了北京麦克泰软件技术有限公司,有30年嵌入式技术和市场经验。他还是中国软件行业协会理事、嵌入式系统分会副理事长,嵌入式系统联谊会秘书长。
本文选自《嵌入式操作系统风云录:历史演进与物联网未来》第 9 章。
以不一样的视角看物联网协议相关推荐
- 运营商视角的物联网商业模式-物联网操作系统篇
本文站在移动运营商(比如国内的中国移动.中国联通等)的角度上,分析一下应该采取什么样的商业模式切入物联网领域.众所周知,物联网的预测市场空间是巨大的,说是仅仅在通信领域,就至少有500亿个网络连接的需 ...
- 物联网协议选型-MQTT/AMQP/CoAP/HTTP/LwM2M
0 摘要 前面笔者简单谈了在实际的mqtt产品实现时,客户端和服务端分别如何实现,选择了参考文献[1]mosquitto服务端实现和[2]华为鸿蒙mqtt客户端实现,两个比较典型的项目作为例子对产品级 ...
- 当今最受欢迎的物联网协议(学习笔记)
当今最受欢迎的物联网协议--MQTT 本文目录 当今最受欢迎的物联网协议--MQTT 什么是MQTT MQTT基本原理 连接MQTT服务端 MQTTfx使用教程 什么是MQTT 首先让我们了解一下什么 ...
- 物联网协议之MQTT源码分析(二)
此篇文章继上一篇物联网协议之MQTT源码分析(一)而写的第二篇MQTT发布消息以及接收Broker消息的源码分析,想看MQTT连接的小伙伴可以去看我上一篇哦. juejin.im/post/5cd66 ...
- 物联网协议对比(HTTP、websocket、XMPP、COAP、MQTT和DDS协议)
目录 1.HTTP和websocket 2.XMPP 3.COAP 4.MQTT协议 5.DDS 对于物联网,最重要的是在互联网中设备与设备的通讯,现在物联网在internet通信中比较常见的通讯协议 ...
- 从CNN视角看在自然语言处理上的应用 原创 2017年10月24日 00:00:00 1339 作者 | 卞书青 卷积神经网络(Convolutional Neural Network)最早是应用在
从CNN视角看在自然语言处理上的应用 原创 2017年10月24日 00:00:00 标签: 1339
- 【GAN优化】从动力学视角看GAN是一种什么感觉?
今天讲述的内容是GAN与动力学,这是一个非常好玩.非常新鲜的视角.考虑到很多人微积分和线性代数等知识的涉猎不多,我将会对涉及的内容都做出基本说明,也并不会涉及过深入的东西,然后争取串成一个故事,扩展一 ...
- 探秘RocketMQ源码——Series1:Producer视角看事务消息
简介:探秘RocketMQ源码--Series1:Producer视角看事务消息 1. 前言 Apache RocketMQ作为广为人知的开源消息中间件,诞生于阿里巴巴,于2016年捐赠给了Apach ...
- 物联网协议比较 MQTT CoAP RESTful/HTTP XMPP
物联网协议 Protocol CoAP XMPP RESTful HTTP MQTT Transport UDP TCP TCP TCP Messaging Request/Response Publ ...
最新文章
- MySQL闪退问题的解决
- 使用EF操作Oracle数据库小计
- css 设置table样式
- nginx 解决session共享问题(jvm-route)方式
- windows文件中的中文在ubuntu下乱码(小弟参考了许多都不行,这个绝对行啊) .
- Go-json 实例
- svn diff 使用 vimdiff 作为比较差异工具
- OpenShift 4 - 使用 emptyDir/hostPath/local 类型 PV
- 网络通信数据处理过程
- yarn:info There appears to be trouble with your network connection. Retrying...
- mysql指定库执行sql语句_对多个mysql的一部分库进行执行sql语句
- paip.python ide 总结最佳实践o4.
- 登录emc磁阵提示java版本低_安装完打开 eclipse 提示 JVM 版本较低
- 【Unity】由Unity资源的相对路径获取资源的AssetDatabase路径
- 【毕业设计】基于树莓派的指纹识别考勤系统 - 单片机 嵌入式 物联网
- 2022年对于李一男是关键的一年,这也将决定他的社会地位
- 4月11号软件资讯更新合集......
- 介绍一个“王者”算法,它能认出游戏里的所有英雄
- Redis数据类型实践
- OpenJudge 4124 海贼王之伟大航路 深搜剪枝