MQTT 协议的核心是一系列格式固定的控制报文(Control Packets),客户端与服务器(Broker)之间的所有交互——连接、发布、订阅、心跳、断开——都是通过交换这些报文完成的。理解控制报文是掌握 MQTT 工作原理的基础。
报文通用结构
每个 MQTT 控制报文都由三个部分组成(部分报文可能省略后两部分):
固定头(Fixed Header):所有报文必备,长度至少 2 字节,包含:
-
报文类型(4 位):如 CONNECT、PUBLISH 等(共 14 种类型)。
-
标志位(4 位):针对不同报文有特定含义,如 PUBLISH 报文中的 QoS 等级、重发标志等。
-
剩余长度(1~4 字节):表示当前报文剩余部分的字节数(可变头 + 有效载荷),编码方式灵活,最大支持 256 MB。
可变头(Variable Header):部分报文包含,内容取决于报文类型,例如协议名、连接标志、报文标识符等。
有效载荷(Payload):部分报文包含,承载实际数据,例如订阅的主题列表、发布的消息内容等。
MQTT 控制报文类型列表(MQTT 3.1.1)
MQTT 3.1.1 定义了 14 种控制报文,按功能可划分为三组:



