前沿资讯
前沿资讯 真实、准确的物联网、互联网行业新闻

什么是MQTT,为什么在IoT中需要它

你的位置: 网站首页 新闻动态 技术应用

什么是MQTT?为什么在IoT中需要它

2021-03-17 10:10:03 阅读: 发布人:纵横智控

随着行业的快速发展,数据管理和接收所需的设备数量也在增加。为了解决众多设备之间的通信问题以及单个网络中设备组合的问题,已经创建了物联网(IoT)概念-基于某些功能的单个网络中设备的组合或特性,此网络进一步与类似网络组合在一起,从而创建更大的网络,依此类推。

什么是MQTT

在这样的网络中,设备通过各种接口和通信协议彼此交互。当我们正在考虑物联网概念的工业实现时,应使用具有自己的协议和硬件的工业设备,让我们开始探讨IIoT概念(工业物联网)。

为了进行通信,设备可以使用各种工业协议。为此,MQTT很受欢迎。

什么是MQTT?

MQTT或消息队列遥测传输是一种轻巧的开放式消息传递协议,用于在要求“代码占用量小”或网络带宽受限的远程位置进行数据传输。这些优势允许在M2M系统(机器对机器)和IIoT系统(工业物联网)中实现此协议。

还存在一种协议变体MQTT-SN(用于传感器网络的MQTT),以前称为MQTT-S,其设计用于不支持TCP / IP网络的嵌入式无线设备,例如ZigBee。

MQTT协议的功能

MQTT协议的主要功能:

● 异步协议

● 紧凑的消息

● 在数据传输线连接不稳定的情况下运行

● 支持多个服务质量(QoS)级别

● 轻松集成新设备

在应用程序层上,MQTT协议在TCP / IP协议之上工作,并且默认使用端口1883(如果通过SSL连接则使用端口8883)。

轻松集成新设备

在MQTT协议中,消息交换在客户端(可能是消息发布者或消息订阅者)与消息代理(例如Mosquitto MQTT)之间进行。

发布者在MQTT Broker上发送数据,并在消息中指定了明确的主题。订阅者可以根据对相应主题的订阅,从多个发布者接收各种数据。

MQTT设备使用确定类型的消息来与代理进行通信。主要类型如下:

● 连接–建立与Message Broker的连接

● 断开连接–断开与消息代理的连接

● 发布–在Message Broker中发布有关主题的数据

● 订阅–订阅消息代理上的主题

● 退订–退订主题

退订

消息的结构

MQTT消息包含以下几部分:

● 固定的标头(出现在所有消息中)

● 可变标头(出现在某些消息中)

● 数据,有效负载(存在于某些消息中)

固定头

RTU/DTU/边缘网关/物联网平台

消息类型-例如:CONNECT,SUBSCRIBE,PUBLISH等。

每个MQTT数据包特有的标志–这4位用于辅助标志,辅助标志的存在和状态取决于消息类型。

剩余长度–当前消息长度(可变报头+数据),大小为1到4个字节。

总体而言,MQTT协议中有15种消息类型:

RTU/DTU/边缘网关/物联网平台标志

固定标头的前4个最高有效位用作特定标志:

RTU/DTU/边缘网关/物联网平台

DUP –当客户端或MQTT代理提交重发的数据包(在PUBLISH,SUBSCRIBE,UNSUBSCRIBE,PUBREL中使用)时,将设置Duplicate。如果设置了该标志,则变量头必须包含消息ID(消息标识符)。

QoS –服务质量(0,1,2)

保留-发布带有保留标志的数据时,代理将对其进行存储。建立对该主题的新订阅后,代理将立即发送带有此标志的消息。仅在PUBISH类型的消息中使用。


可变标题

某些标头中存在可变标头。


它包含以下数据:


● 数据包标识符–存在于所有类型的消息中,但以下情况除外:CONNECT,CONNACK,PUBLISH(сQoS <1),PINGREQ,PINGRESP,DISCONNECT

● 协议名称–仅在CONNECT消息类型中显示

● 协议版本–仅在CONNECT消息类型中存在

● 连接标志–指定连接期间客户端行为的标志

RTU/DTU/边缘网关/物联网平台

用户名–如果设置了该标志,则有效负载中必须存在一个用户名(用于客户端身份验证)

密码–如果设置了此标志,则有效负载中必须存在密码(用于客户端身份验证)

将会保留-如果该标志设置为1,则代理将存储一个意愿消息。

Will QoS – Will Message的服务质量。如果设置了意愿标记,则必须存在意愿QoS和意愿保留。

意志标志-如果设置了该标志,则在客户端断开代理而不发送DISCONNECT命令(如果发生不可预知的关闭,失败等情况)之后,代理将通过所谓的意志消息通知所有已连接的客户端。

干净会话-如果将该标志设置为0,则代理存储一个会话,所有客户端订阅都将通过客户端的下一个连接发送,并且在客户端断开连接时,代理将接收来自QoS1和QoS2的所有消息。因此,如果该标志设置为1,则到下一个连接,客户端必须再次订阅所有主题。

● 会话存在–在CONNACK类型的消息中应用。如果Broker接受将Clean Session设置为1的连接,则必须将Session Present(SP)设置为0。如果Broker接受Clean Session设置为0的连接,则SP中设置的值取决于Broker是否已存储此客户端的会话状态(如果是,则必须将SP设置为1,反之亦然)。会话存在标志使客户端能够确定是否已经存储了会话状态。

● 连接返回码–如果代理出于某种原因无法从客户端接收格式正确的CONNACK数据包,则必须在下表的CONNACK数据包的第二个字节中设置适当的值:

RTU/DTU/边缘网关/物联网平台

数据,有效载荷

通过MQTT消息传输的数据的内容和格式在设备中定义。可以通过从剩余长度中减去变量头的长度来计算数据大小。

返回目录

MQTT协议(QoS)中的服务质量

发送消息时,MQTT支持三个级别的服务质量(QoS)。

QoS 0最多一次。在此级别上,发布者一次向代理发送一条消息,并且不等待任何响应,即发送并忘记它。

RTU/DTU/边缘网关/物联网平台

QoS 1至少一次。此级别可确保将消息传递到代理,但是可以从发布者复制消息。一旦收到副本,代理将再次将此消息发送给订阅服务器,并将消息接收确认转发给发布服务器。如果发布者未从代理获取PUBACK消息,它将尝试重新传递此数据包,将DUP设置为1。

RTU/DTU/边缘网关/物联网平台

QoS 2恰好一次。在此级别上,可以确保将消息传递到客户端,并且不可能重复副本。

RTU/DTU/边缘网关/物联网平台

发布者向代理发送消息。该消息包含唯一的数据包ID,QoS = 2和DUP = 0。发布者存储未经确认的消息,除非它从代理获得PUBREC响应。代理回复包含相同分组ID的PUBREC消息。收到此消息后,发布者发送具有相同数据包ID的PUBREL。代理必须存储消息副本,直到获得PUBREL。代理收到PUBREL后,它将删除消息副本,并将有关已完成的事务的PUBCOMP消息发送给发布者。

关键词:模拟量输入输出模块

友情链接