写点什么

物联网常用协议:MQTT、CoAP、LwM2M、HTTP、LoRaWAN 和 NB-IoT

发布于: 2021 年 03 月 12 日
物联网常用协议:MQTT、CoAP、LwM2M、HTTP、LoRaWAN和NB-IoT

物联网,即物的互联网,属于互联网的一部分。物联网将互联网的基础设施作为信息传递的载体,即现代的物联网产品一定是“物”通过某种方式接入了互联网,而“物”通过互联网上传/下载数据,以及与人进行交互。


物联网最早的定义是:把所有物品通过射频识别等信息传感设备与互联网连接起来,实现智能化识别和管理。当然,物联网发展到今天,它的定义和范围已经有了扩展与变化,下面是现代物联网具有的特点。



物联网和传统互联网最大的不同:数据的生产者和消费者主要是物,数据内容也是和“物”息息相关的。


人工智能可谓近年来 IT 领域最火的词语之一。纵观人工智能的发展路线,我们可以看到,人工智能的发展之所以能够突飞猛进,主要有以下两个原因。


  • 硬件的发展使得深度学习神经网络的学习时间迅速缩短。

  • 在大数据的时代,获取大量数据的成本变低。


事实上,第二个原因尤为重要,神经网络由于其特性,需要海量的数据进行学习,可供学习的有效数据量往往决定了最后训练出的神经网络的效果,甚至算法的重要性都可以排在数据量之后。


而物联网设备,比如智能家电、可穿戴设备等,每天都在产生海量的数据,这些数据经过处理和清洗后,都可以作为不错的训练数据反哺神经网络。同时,训练出来的神经网络又可以重新应用到物联网设备中,进而形成一个良性循环。


下图为物联网应用人工智能方法进行数据采集—迭代的循环。通过物联网设备采集并训练数据,在数据中心完成训练后,将模型应用到物联网设备,并评估效果进行下一次迭代。



物联网是人工智能落地的一个非常好的应用场景。随着人工智能的迅速发展,物联网这个同样在很多年前就提出的理论和技术,也会迎来新的春天。


目前,互联网数据入口渐渐朝几大巨头(例如阿里、腾讯)汇聚,规模较小的公司获取数据的代价越来越高,物联网这块还未完全开发的数据领域就显得尤为重要。


前端设备最终会趋于相同,出现同质化竞争,而如何采集和使用好设备产生的海量数据,才是你是否具有竞争优势的决定性因素。


1、MQTT 协议


MQTT 协议(Message Queue Telemetry Transport,消息队列遥测传输协议)是 IBM 的 Andy Stanford-Clark 和 Arcom 的 Arlen Nipper 于 1999 年为了一个通过卫星网络连接输油管道的项目开发的。为了满足低电量消耗和低网络带宽的需求,MQTT 协议在设计之初就包含了以下几个特点:


  • 实现简单

  • 提供数据传输的 QoS

  • 轻量、占用带宽低

  • 可传输任意类型的数据

  • 可保持的会话(Session)


随着多年的发展,MQTT 协议的重点不再只是嵌入式系统,而是更广泛的物联网世界。简单来说,MQTT 协议有以下特性:


  • 基于 TCP 协议的应用层协议

  • 采用 C/S 架构

  • 使用订阅/发布模式,将消息的发送方和接受方解耦

  • 提供 3 种消息的 QoS(Quality of Service):至多一次、最少一次、只有一次

  • 收发消息都是异步的,发送方不需要等待接收方应答


MQTT 协议的架构由 Broker 和连接到 Broker 的多个 Client 组成,如下图所示:



MQTT 协议可以为大量的低功率、工作网络环境不可靠的物联网设备提供通信保障。而它在移动互联网领域也大有作为,很多 Android App 的推送功能都是基于 MQTT 协议实现的,一些 IM 的实现也是基于 MQTT 协议的。


2、MQTT-SN 协议


MQTT-SN(MQTT for Sensor Network)协议是 MQTT 协议的传感器版本。MQTT 协议虽然是轻量的应用层协议,但是 MQTT 协议是运行于 TCP 协议栈之上的,TCP 协议对于某些计算能力和电量非常有限的设备来说,比如传感器,就不太适用了。


MQTT-SN 运行在 UDP 协议上,同时保留了 MQTT 协议的大部分信令和特性,如订阅和发布等。MQTT-SN 协议引入了 MQTT-SN 网关这一角色,网关负责把 MQTT-SN 协议转换为 MQTT 协议,并和远端的 MQTT Broker 进行通信。MQTT-SN 协议支持网关的自动发现。MQTT-SN 协议的通信模型如下图所示:



3、CoAP 协议


CoAP(Constrained Application Protocol)协议是一种运行在资源比较紧张的设备上的协议。CoAP 协议通常也是运行在 UDP 协议上的。


CoAP 协议设计得非常小巧,最小的数据包只有 4 个字节。CoAP 协议采用 C/S 架构,使用类似于 HTTP 协议的请求-响应的交互模式。设备可以通过类似于 coap://192.168.1.150:5683/2ndfloor/temperature 的 URL 来标识一个实体,并使用类似于 HTTP 的 PUT、GET、POST、DELET 请求指令来获取或者修改这个实体的状态。


同时,CoAP 提供一种观察模式,观察者可以通过 OBSERVE 指令向 CoAP 服务器指明观察的实体对象。当实体对象的状态发生变化时,观察者就可以收到实体对象的最新状态,类似于 MQTT 协议中的订阅功能。CoAP 协议的通信模型如下图所示:



4、LwM2M 协议


LwM2M( Lightweight Machine-To-Machine )协议是由 Open Mobile Alliance(OMA)定义的一套适用于物联网的轻量级协议。它使用 RESTful 接口,提供设备的接入、管理和通信功能,也适用于资源比较紧张的设备。LwM2M 协议的架构如下图所示:



LwM2M 协议底层使用 CoAP 协议传输数据和信令。而在 LwM2M 协议的架构中,CoAP 协议可以运行在 UDP 或者 SMS(短信)之上,通过 DTLS(数据报传输层安全)来实现数据的安全传输。


LwM2M 协议架构主要包含 3 种实体——LwM2M Bootstrap Server、LwM2M Server 和 LwM2M Client。


LwM2M Bootstrap Server 负责引导 LwM2M Client 注册并接入 LwM2M Server,之后 LwM2M Server 和 LwM2M Client 就可以通过协议指定的接口进行交互了。


5、HTTP 协议


物联网也是互联网,HTTP 这个在互联网中广泛应用的协议,在合适的环境下也可以应用到物联网中。


在一些计算和硬件资源比较充沛的设备上,比如运行安卓操作系统的设备,完全可以使用 HTTP 协议上传和下载数据,就好像在开发移动应用一样。设备也可以使用运行在 HTTP 协议上的 WebSocket 主动接收来自服务器的数据。


6、LoRaWAN 协议


LoRaWAN 协议是由 LoRa 联盟提出并推动的一种低功率广域网协议,它和我们之前介绍的几种协议有所不同。MQTT 协议、CoAP 协议都是运行在应用层,底层使用 TCP 协议或者 UDP 协议进行数据传输,整个协议栈运行在 IP 网络上。而 LoRaWAN 协议则是物理层/数据链路层协议,它解决的是设备如何接入互联网的问题,并不运行在 IP 网络上。


LoRa(Long Range)是一种无线通信技术,它具有使用距离远、功耗低的特点。在上面的场景下,用户就可以使用 LoRaWAN 技术进行组网,在工程设备上安装支持 LoRa 的模块。


通过 LoRa 的中继设备将数据发往位于隧道外部的、有互联网接入的 LoRa 网关,LoRa 网关再将数据封装成可以在 IP 网络中通过 TCP 协议或者 UDP 协议传输的数据协议包(比如 MQTT 协议),然后发往云端的数据中心。


7、NB-IoT 协议


NB-IoT(Narrow Band Internet of Things)协议和 LoRaWAN 协议一样,是将设备接入互联网的物理层/数据链路层的协议。


与 LoRA 不同的是,NB-IoT 协议构建和运行在蜂窝网络上,消耗的带宽较低,可以直接部署到现有的 GSM 网络或者 LTE 网络。设备安装支持 NB-IoT 的芯片和相应的物联网卡,然后连接到 NB-IoT 基站就可以接入互联网。而且 NB-IoT 协议不像 LoRaWAN 协议那样需要网关进行协议转换,接入的设备可以直接使用 IP 网络进行数据传输。


NB-IoT 协议相比传统的基站,增益提高了约 20dB,可以覆盖到地下车库、管道、地下室等之前信号难以覆盖的地方。




来源:本文摘编自《物联网系统开发:从 0 到 1 构建 IoT 平台》。


发布于: 2021 年 03 月 12 日阅读数: 300
用户头像

【研究方向】物联网、嵌入式、AI、Python 2018.02.09 加入

【公众号】美男子玩编程

评论

发布
暂无评论
物联网常用协议:MQTT、CoAP、LwM2M、HTTP、LoRaWAN和NB-IoT