物联网通信协议——物联网数据协议

2022-07-06 16:10发布

通过对不同物联网数据协议的简要概述,深入了解物联网(IoT)通信。

在本文之前的文章中,我们回顾了物联网中的网络协议,以及目前使用的主要通信协议。在本文中,我们将转换话题,讨论数据通信协议。这些数据通信协议是在开放系统互连(OSI)模型的底层工作的协议,不需要互联网连接。

 

物联网数据通信协议
以下是一些不同物联网数据协议的简要分类,即:

  • 消息队列遥测传输(MQTT)

  • 超文本传输协议(HTTP)

  • 受限应用协议(CoAP)

  • 数据分发服务

  • WebSocket

  • 高级消息队列协议(AMQP)

  • 可扩展消息和存在协议(XMPP)

  • OPC统一架构(OPC UA)
     

消息队列遥测传输(MQTT)

 


MQTT的设计是轻量级的,因此它可以在带宽非常低的网络中工作,它允许可靠和不可靠网络中的节点之间进行通信。MQTT遵循发布/订阅架构,这意味着有节点(代理)使信息可用,而其他节点(客户端)可以在订阅后通过访问相应的URL来读取可用的信息。

MQTT的一个用例是在一个智能工厂中,那里的生产工厂安装了温度传感器。安装的传感器将连接到MQTT代理,并将在传感器主题中发布数据,如下所示:

 

传感器/温度/装配线初始化

 

之后,MQTT客户机(可能有几种类型和数量)将订阅同一个主题,以便读取温度数据。MQTT架构的一个例子可以在图1中看到。

 

    111.png

图一 MQTT的发布/订阅架构
 

此外,MQTT根据可靠性从最低到最高定义了三个服务质量级别:

级别0:没有消息传递的保证。
级别1:保证了传递,但是有可能收到重复的消息。
第二级:交货有保证,不会有重复。
 

超文本传输协议(HTTP)


该协议是万维网(WWW)数据通信的起源,因此从逻辑上讲,它正被用于物联网世界。然而,它是没有针对它进行优化原因如下:

HTTP是为一次两个系统相互通信而设计的,所以连接几个传感器来获取信息既费时又费力。
HTTP是单向的,一个系统(客户机)向另一个系统(服务器)发送一条消息。这使得升级物联网解决方案变得相当困难。
功耗:HTTP依赖于传输控制协议(TCP),需要大量的计算资源,因此不适合电池供电的应用。
 

受限应用协议(CoAP)


CoAP是一种web传输协议,适用于带宽和可用性较低的有限网络。它遵循客户机/服务器架构,构建类似于HTTP,支持REST模型:服务器通过URL提供资源,客户机可以发出GET、POST、PUT和DELETE类型的请求。

CoAP通信链路是1:1和基于UDP的,因此无法保证交付。CoAP是在高度拥挤的网络中工作的,在这些网络中,节点没有太多的智能,并且不总是工作。

 

数据分发服务


与MQTT类似,DDS遵循发布-订阅方法,主要区别在于没有代理。这意味着所有发布者(即温度传感器)和订阅者(即移动电话)都连接到同一个网络。这个网络被称为全球数据空间(GDS)它将每个节点与所有其他节点相互连接,以避免瓶颈。DDS GDS的一个例子如图2所示。

 

        222.png

图二 DDS全球数据空间。图片由DDS基金会提供
 

此外,任何节点都可以离开或加入网络,因为它们是动态发现的。

 

WebSocket


链接到HTTP协议,WebSocket技术在浏览器和服务器之间建立TCP连接,然后两者交换信息,直到连接关闭。图3显示了HTTP和WebSocket之间的高级比较。

 

        333.png

图3。HTTP和WebSocket的比较。图片由Scaleway提供
 

虽然这个协议可以被视为HTTP连接的改进,但对于物联网应用程序来说,WebSocket仍然非常过载和沉重。

 

高级消息队列协议(AMQP)


一开始,AMQP最初不是为物联网应用而创建的,而是对于银行环境。AMQP接受发布/订阅架构,以及请求/响应类型。它是基于TCP的,所以保证了传递和确认,这使得该协议可靠,随之而来的是开销消息的可靠性。

与MQTT相比,AMQP提供两种服务质量级别:

至多一次:发送方不等待接收方的确认就删除消息。
至少一次:对于每条消息,发送方将在删除消息之前收到接收方的确认。在确认丢失的情况下,消息被重新发送。
恰好一次:消息只发送一次。它需要发送者和接收者之间的特殊协调。
 

可扩展消息和存在协议(XMPP)


它是基于可扩展标记语言(XML)在过去,它被称为闲聊。它是一个开放源代码、分散的、安全的XML消息交换协议。

XMPP的一个特征因素是它的寻址方法和如何识别节点。它使用jabberID@domain.com格式的Jabber ID,允许两个节点交换信息,而不管它们之间的距离有多远。

 

OPC统一架构(OPC UA)


它是为工业通信而制定的标准,旨在保证制造商、操作系统和编程语言之间的互操作性。OPC基金会报告称,许多工业供应商目前(截至2022年)采用OPC UA作为开放标准.

总而言之,OPC UA是一个与传输无关的协议,因此它支持以前使用的两种体系结构:请求/响应(如WebSocket或HTTP),以及发布/订阅(如MQTT)。