MQTT协议--报文解析

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

MQTT 5.0 中文文档 - Thinking...

MQTT协议报文解析

一、报文格式

1.固定头

固定头:MQTT包类型 + 控制标识

类型:

NameValueDirection of flowDescription
保留0禁止保留
CONNECT1客户端到服务器连接请求
CONNACK2服务器到客户端连接回复
PUBLISH3双向消息发布
PUBACK4双向消息回复(QoS1)
PUBREC5双向消息已接收(QoS2交付第 1 部分)
PUBREL6双向消息释放(QoS2交付第 2 部分)
PUBCOMP7双向消息完成(QoS2交付第 3 部分)
SUBSCRIBE8客户端到服务器订阅请求
SUBACK9服务器到客户端订阅回复
UNSUBSCRIBE10客户端到服务器取消订阅请求
UNSUBACK11服务器到客户端取消订阅回复
PINGREQ12客户端到服务器PING 请求
PINGRESP13服务器到客户端PING 响应
DISCONNECT14双向断开连接通知
AUTH15双向认证交换

控制标识:

MQTT包控制标志Bit 3Bit 2Bit 1Bit 0
PUBLISHMQTT 5.0版本使用DUPQoSRETAIN

2.可变头

部分MQTT包含有:包ID(QoS 0 没有),属性集(保活时间、主题信息等)

3.载荷

部分MQTT包含有:载荷包含了一个或多个 长度 + 内容 格式的字段,这些字段的存在与否由可变头中的标志位决定。

二、报文解析

1. CONNECT

固定头:0x10、msg len

可变头:协议名称、版本、连接标识、保活时间

载荷:客户端ID、可变头标识下的属性内容

2. CONNECT ACK

固定头:0x20、msg len

可变头:连接回复标识、原因码

无载荷

3. SUBSCRIBE

固定头:0x82、msg len

可变头:订阅ID

载荷:主题、订阅选项(QoS)

4. SUBACK

固定头:0x90、msg len

可变头:订阅ID

载荷:订阅选项(QoS)

5. PINGREQ

固定头:0xc0、msg len

无可变头、载荷

6. PINGRESP

固定头:0xd0、msg len

无可变头、载荷

7. PUBLISH

固定头:0x30、msg len

可变头:订阅ID

载荷:主题、发布内容

8.PUBACK

固定头:0x40、msg len

可变头:订阅ID

无载荷

9.DISCONNECT

固定头:0xe0、msg len

可变头:断开原因码(部分无)

无载荷


  • 16
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值