首页 > 编程笔记 > 通用技能 阅读:5

物联网协议有哪些?(新手必看)

本节将简单介绍一些常见的物联网协议,包括物理层协议、数据链路层协议和应用层协议。

MQTT协议

MQTT(Message Queue Telemetry Transport,消息队列遥测传输)协议是 IBM 的 Andy Stanford-Clark 和 Arcom 的 Arlen Nipper 于 1999 年为了一个通过卫星网络连接输油管道的项目开发的。

为了满足低电量消耗和低网络带宽的需求,MQTT 协议在设计之初就包含了以下几个特点:
此后,IBM 一直将 MQTT 协议作为一个内部协议用于其产品中。直到 2010 年,IBM 公开发布了 MQTT 3.1 版本。2014 年,MQTT 协议正式成为 OASIS(结构化信息标准促进组织)的标准协议。随着多年的发展,MQTT 协议的应用重点不再只是嵌入式系统,而是更广泛的物联网世界。

简单来说,MQTT 协议有以下特性:
MQTT 协议的架构由 Broker 和连接到 Broker 的多个 Client 组成,如下图所示。


图 1 MQTT 协议的架构

MQTT 协议可以说是目前应用最广的协议。MQTT 协议可以为大量低功率、工作网络环境不可靠的物联网设备提供通信保障。

MQTT 协议在移动互联网领域也大有作为,很多 Android App 的推送功能都是基于 MQTT 协议实现的,一些 IM 也是基于 MQTT 协议实现的。

MQTT-SN协议

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

MQTT-SN 协议运行在 UDP 上,同时保留了 MQTT 协议的大部分信令和特性,如订阅和发布等。

MQTT-SN 协议引入了 MQTT-SN 网关这一角色,网关负责把 MQTT-SN 协议转换为 MQTT 协议,并和远端的 MQTT Broker 进行通信。MQTT-SN 协议支持网关的自动发现。

MQTT-SN 协议的通信模型如下图所示。


图 2 MQTT-SN协议的通信模型

CoAP协议

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

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

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

CoAP 的通信模型如下图所示:


图 3 CoAP的通信模型

LwM2M协议

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

LwM2M 协议的架构如下图所示:


图 4 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 就可以通过协议指定的接口进行交互了。

HTTP协议

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

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

LoRaWAN协议

LoRaWAN 协议是由 LoRa 联盟提出并推动的一种低功率广域网协议,它和我们之前介绍的几种协议有所不同。MQTT 协议、CoAP 都是运行在应用层,底层使用 TCP 或者 UDP 进行数据传输,整个协议栈运行在 IP 网络上。

LoRaWAN 协议则是物理层/数据链路层协议,它解决的是设备如何接入互联网的问题,并不运行在 IP 网络上。

说到设备如何接入互联网,我们很自然地想到 4G、Wi-Fi,如果设备上有 4G/Wi-Fi 模块,或者支持以太网的网卡,就可以和其他联网终端,比如手机,以同样的方式接入互联网。

但是在某些情况下,4G 或者 Wi-Fi 网络的覆盖非常困难,比如用于隧道施工的工程设备往往处于隧道几千米深处,不可能用 Wi-Fi 或者 4G 络覆盖。而工程设备经常在移动,使用有线网络与现场环境也不匹配。

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

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

NB-IoT协议

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

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

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

相关文章