物联网之MQTT3.1.1和MQTT5协议 (8) PUBCOMP报文

前言

PUBCOMP报文是对PUBREL报文的响应。它是QoS 2等级协议交换的第四个也是最后一个报文。

PUBCOMP – 发布完成(QoS 2,第三步)

固定报头

在这里插入图片描述

剩余长度字段
表示可变报头的长度,用变长字节整数编码。

MQTT3.1.1中PUBREL报文这个值等于2.即值为000000010

PUBCOMP可变报头

PUBCOMP报文可变报头按顺序包含以下字段:所确认的PUBREL报文标识符,PUBCOMP原因码,属性。

在这里插入图片描述

PUBCOMP原因码

可变报头第3字节是PUBCOMP原因码。如果剩余长度为2,则表示使用原因码0x00(成功)。

在这里插入图片描述

服务端或客户端发送PUBCOMP报文时必须设置一种PUBCOMP原因码。当原因码为0x00(成功)且没有属性(Properties)时,原因码和属性长度可以被省略。在这种情况下,PUBCOMP剩余长度为2。

PUBCOMP属性
属性长度

PUBCOMP报文可变报头中的属性长度被编码为变长字节整数。如果剩余长度小于4,则表示没有属性长度字段。

原因字符串

31 (0x1F)Byte,原因字符串(Reason String)标识符。

跟随其后的是UTF-8编码的字符串,表示此次响应相关的原因。此原因字符串(Reason String)是为诊断而设计的可读字符串,不应该被接收端所解析。

发送端使用此值向接收端提供附加信息。如果加上原因字符串之后的PUBCOMP报文长度超出了接收端指定的最大报文长度(Maximum Packet Size),则发送端不能发送此原因字符串。包含多个原因字符串将造成协议错误(Protocol Error)。

用户属性

38 (0x26)Byte,用户属性(User Property)标识符。

跟随其后的是UTF-8字符串键值。此属性可用于提供诊断信息或关于其他信息。如果加上用户属性之后的PUBCOMP报文长度超出了接收端指定的最大报文长度(Maximum Packet Size),则发送端不能发送此属性 。用户属性(User Property)允许出现多次,以表示多个名字/值对,且相同的名字可以多次出现。

PUBCOMP载荷

PUBCOMP报文没有有效载荷。

PUBCOMP行为

在之后的博文关于“操作行为”的内容会提到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传递协议,用于不同设备之间的通信。MQTT 3.1.1是MQTT的版本号,是比较常用的版本。 MQTT 3.1.1协议具有以下特点和优势: 1. 轻量级:MQTT采用一种非常轻巧的封装格式,使得它非常适合在网络带宽较低或者资源受限的环境下使用,如物联网设备中。 2. 简单易用:MQTT协议的设计非常简单,只有3个主要角色:发布者(Publisher)、订阅者(Subscriber)和代理服务器(Broker)。这种简单的架构使得开发者可以轻松地实现MQTT通信。 3. 异步通信:MQTT允许发布者和订阅者之间进行异步通信。发布者只需要将消息发布到代理服务器上,订阅者则可以在需要的时候订阅到消息。这种异步通信的特性可以提高通信的效率和可扩展性。 4. 可靠性:MQTT 3.1.1协议提供了多种传输层的质量保证服务,如最多一次、至少一次和只有一次的传输保证。根据应用场景的不同,可以选择适当的服务质量。 5. 安全性:MQTT 3.1.1协议支持SSL/TLS加密和鉴权机制,确保通信的安全性。通过这些安全机制,可以对消息进行加密传输,同时也可以对客户端进行身份验证。 总而言之,MQTT 3.1.1协议是一种适用于物联网设备的轻量级、简单易用、可靠和安全的通信协议。它的设计目标是在网络带宽有限和资源受限的条件下,实现可靠的异步通信。在物联网领域,MQTT 3.1.1广泛应用于各种场景,如传感器数据的采集、智能家居的控制等。 ### 回答2: MQTT 3.1.1协议是一种轻量级的通信协议,主要用于物联网和小型设备之间的通信。 MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅的模式的消息协议,具有低带宽、低数据包开销和低延迟的特点。它使用TCP/IP协议进行通信,并支持多种可靠性的服务质量等级。 MQTT 3.1.1协议定义了客户端与服务器之间的消息传输格式和规则。客户端可以是任何设备或应用程序,服务器则负责接收、转发和传送消息。 MQTT 3.1.1协议使用发布/订阅模式进行通信。客户端可以发布消息到特定的主题(topic),而其他客户端可以通过订阅相应的主题来接收消息。通过定义主题层次结构,可以实现灵活的消息过滤和分发。 协议中还定义了三个服务质量等级(QoS):0级为“至多一次”,消息会至少传输一次,但可能会重复或丢失;1级为“至少一次”,消息会至少传输一次,但可以重复;2级为“恰好一次”,消息会确保只传输一次。 此外,MQTT 3.1.1协议还支持保留消息和遗嘱消息的功能。保留消息是指发布到特定主题的消息会被保留在服务器上,新的订阅者可以接收到最新的保留消息。而遗嘱消息是当客户端断开连接时,服务器会代替客户端发布一个预先定义的消息,用于通知其他订阅者。 总的来说,MQTT 3.1.1协议提供了一种高效、灵活和可靠的通信机制,特别适用于物联网场景。它的低带宽和低功耗特性使其成为物联网设备之间通信的理想选择。 ### 回答3: MQTT(Message Queuing Telemetry Transport)是一种轻量级发布/订阅协议,用于在物联网设备之间传输消息。MQTT 3.1.1是MQTT协议的一个版本。 MQTT 3.1.1协议增强了先前版本的功能和性能。它主要包含以下几个方面的改进: 1. 会话状态:MQTT 3.1.1引入了会话状态的概念,使得设备可以保存和恢复连接状态。这意味着设备断开连接后,可以通过恢复会话状态来继续传输消息。 2. 心跳机制:MQTT 3.1.1中添加了心跳机制,用于检测设备是否在线。通过在连接期间定期发送心跳包,可以及时检测设备的连接状态。如果设备长时间未发送心跳包,服务器就可以判断设备已经离线,并采取相应的措施。 3. 遗愿消息:MQTT 3.1.1允许设备在断开连接时发送遗愿消息。遗愿消息是设备事先配置好的消息,当设备异常断开连接时,服务器会自动发布这些消息给其他订阅者。 4. 主题过滤器:MQTT 3.1.1支持更灵活的主题过滤器,可以通过通配符匹配多个主题。这使得订阅者可以更方便地订阅特定类型的消息。 5. 安全性:MQTT 3.1.1支持SSL/TLS加密传输,保护消息的安全性。设备和服务器可以使用用户名和密码进行身份验证,确保只有授权的设备才能连接和发布消息。 总的来说,MQTT 3.1.1协议在原有的基础上增加了一些重要的功能和改进,使得物联网设备之间的通信更加可靠和灵活。它被广泛应用于物联网领域,提供了一种高效、轻量级的消息传输解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YuYunTan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值