CoderTools

MQTT 编解码器

MQTT 协议报文编码与解码

🔒 100% 本地处理您输入的数据完全在浏览器中处理,不会上传到任何服务器。

粘贴从 Wireshark、网络分析器或 Broker 日志中捕获的 MQTT 报文数据

示例报文

解析结果

输入报文数据并点击解析查看结果

MQTT 报文类型参考

代码 名称 方向 描述
0x10CONNECTC→S客户端连接请求
0x20CONNACKS→C连接确认
0x30PUBLISHC↔S发布消息
0x40PUBACKC↔S发布确认(QoS 1)
0x50PUBRECC↔S发布收到(QoS 2 第1步)
0x60PUBRELC↔S发布释放(QoS 2 第2步)
0x70PUBCOMPC↔S发布完成(QoS 2 第3步)
0x80SUBSCRIBEC→S订阅请求
0x90SUBACKS→C订阅确认
0xA0UNSUBSCRIBEC→S取消订阅请求
0xB0UNSUBACKS→C取消订阅确认
0xC0PINGREQC→S心跳请求(保活)
0xD0PINGRESPS→C心跳响应
0xE0DISCONNECTC→S客户端断开连接

MQTT 协议指南

认识 MQTT 协议

MQTT(消息队列遥测传输)是基于 TCP/IP 的轻量级消息协议,1999 年由 IBM 为卫星链路监控开发,现已成为物联网通信的事实标准。该协议采用发布-订阅模式,客户端通过中央 Broker 通信,非常适合不稳定网络和资源受限设备。

报文二进制结构

每个 MQTT 报文以固定头部(1-5字节)开始,后跟可选的可变头部和负载。第一字节的 7-4 位是报文类型,3-0 位是类型特定标志。剩余长度字段采用可变长度编码。

位范围 字段名 说明
7-4报文类型控制报文类型(1-15)
3-0标志位类型特定标志(PUBLISH 的 DUP、QoS、RETAIN)

可变长度编码

MQTT 对剩余长度字段采用紧凑编码,每字节使用 7 位数据和 1 位延续标志。0-127 需要 1 字节,128-16383 需要 2 字节,最多 4 字节可表示 268,435,455。

字节数 最小值 最大值
10127
212816,383
316,3842,097,151
42,097,152268,435,455

CONNECT 报文详解

CONNECT 报文在 TCP 连接建立后首先发送,包含协议版本、心跳间隔、客户端 ID 及可选凭据。连接标志控制会话行为,包括 Clean Session、遗嘱消息配置和认证信息。

PUBLISH 报文机制

PUBLISH 报文承载应用消息。固定头部标志位指示 QoS 等级、保留行为和重发状态。QoS 0 发完即忘,QoS 1 保证至少一次投递,QoS 2 通过四次握手确保精确一次投递。

QoS 服务质量保证

QoS 0
最多一次 - 发完即忘的投递方式
QoS 1
至少一次 - 保证投递但可能重复
QoS 2
精确一次 - 保证单次投递

实际应用场景

  • 分析 Wireshark 或 tcpdump 抓取的报文进行调试
  • 构建测试报文验证 MQTT Broker 或客户端实现
  • 通过实际报文分析学习 MQTT 协议内部原理
  • 排查物联网设备连接和消息投递问题
  • 为自动化测试场景生成示例报文

协议版本演进

目前有三个主要 MQTT 版本:MQTT 3.1(协议级别 3)、MQTT 3.1.1(协议级别 4,ISO/IEC 20922:2016 国际标准)和功能增强的 MQTT 5.0(协议级别 5)。本工具主要针对 MQTT 3.1.1,这仍是部署最广泛的版本。

快捷菜单

暂无访问记录