MQTT编码/解码
在线MQTT编码/解码工具,支持CONNECT、PUBLISH、SUBSCRIBE等报文构建与十六进制解析,适用于网络协议学习与物联网联调
粘贴从 Wireshark、日志或抓包工具中获取的 MQTT 报文。
示例报文
解析结果
输入报文数据后自动解析并显示结果
MQTT 协议指南
认识 MQTT 协议
MQTT 是面向物联网的轻量级发布订阅协议,具备低带宽、低功耗、弱网容错等特点。通过本工具可以快速构建或解析控制报文,辅助协议学习与联调定位。
报文结构要点
- 每个 MQTT 报文由固定头、可变头和负载组成,固定头至少 2 字节。
- 固定头首字节高四位是报文类型,低四位是类型相关标志。
- 剩余长度采用变长编码,最多 4 字节,可表示到 268435455。
- PUBLISH 在 QoS 大于 0 时必须携带 Packet Identifier。
MQTT 报文类型参考
| 代码 | 名称 | 方向 | 描述 |
|---|---|---|---|
| 0x10 | CONNECT | C->S | 客户端连接请求 |
| 0x20 | CONNACK | S->C | 连接确认 |
| 0x30 | PUBLISH | C<->S | 发布消息 |
| 0x40 | PUBACK | C<->S | 发布确认(QoS 1) |
| 0x50 | PUBREC | C<->S | 发布收到(QoS 2) |
| 0x60 | PUBREL | C<->S | 发布释放(QoS 2) |
| 0x70 | PUBCOMP | C<->S | 发布完成(QoS 2) |
| 0x80 | SUBSCRIBE | C->S | 订阅请求 |
| 0x90 | SUBACK | S->C | 订阅确认 |
| 0xA0 | UNSUBSCRIBE | C->S | 取消订阅请求 |
| 0xB0 | UNSUBACK | S->C | 取消订阅确认 |
| 0xC0 | PINGREQ | C->S | 心跳请求 |
| 0xD0 | PINGRESP | S->C | 心跳响应 |
| 0xE0 | DISCONNECT | C->S | 断开连接 |
QoS 语义
- QoS 0:最多一次,开销最低,允许丢包。
- QoS 1:至少一次,可能重复,需去重处理。
- QoS 2:精确一次,最可靠但交互开销最高。
常见应用场景
- 解析抓包十六进制数据,快速判断控制报文类型与字段内容。
- 生成 CONNECT、PUBLISH、SUBSCRIBE 等报文,用于 Broker 或设备联调。
- 教学演示 MQTT 二进制结构,帮助理解固定头和剩余长度编码。
- 排查连接失败、订阅异常、消息投递不一致等协议层问题。