MQTT 协议精讲 · 第 3 章 控制报文详解 章节摘要:第 2 章搭好了通用格式的骨架,本章把 14 种报文逐一放到骨架上解剖。按功能分四组推进:连接组(CONNECT/CONNACK——最复杂,连接标志字节 8 个位各有含义)、消息组(PUBLISH 与四个确认报文——DUP/QoS/RETAIN 三个标志 + 报文标识符在此交汇)、订阅组(SUBSCRIBE/SUBACK/UNSUBSCRIBE/UNSUBACK——QoS 降级授予规则是重点)、维持组(PINGREQ/PINGRESP/DISCONNECT——全协议最简)。学完本章,你应当能对着任何一条抓包记录完整解读出每个字节的含义。
章节摘要:第 2 章搭好了通用格式的骨架,本章把 14 种报文逐一放到骨架上解剖。按功能分四组推进:连接组(CONNECT/CONNACK——最复杂,连接标志字节 8 个位各有含义)、消息组(PUBLISH 与四个确认报文——DUP/QoS/RETAIN 三个标志 + 报文标识符在此交汇)、订阅组(SUBSCRIBE/SUBACK/UNSUBSCRIBE/UNSUBACK——QoS 降级授予规则是重点)、维持组(PINGREQ/PINGRESP/DISCONNECT——全协议最简)。学完本章,你应当能对着任何一条抓包记录完整解读出每个字节的含义。
主线是一个会话的生命周期:连得上(CONNECT/CONNACK)→ 发得出(PUBLISH)→ 收得稳(QoS 确认组)→ 订得了(订阅组)→ 活得好(心跳)→ 退得净(DISCONNECT)。
阅读完本章,你应当能够:
固定报头、可变报头四字段(协议名/协议级别/连接标志/保活)、有效载荷五字段(客户端标识符/遗嘱主题/遗嘱消息/用户名/密码)、连接成功后的处理步骤。配图:连接标志位布局。
当前会话标志(Session Present)的三种判定情形、6 种连接返回码、非零返回码后的行为。
唯一承载应用消息的报文:DUP 重发标志、QoS 等级字段、RETAIN 保留标志、主题名与报文标识符、按 QoS 的预期响应表。
四个"单号回执"报文的格式与角色:QoS 1 的 PUBACK;QoS 2 三步走 PUBREC→PUBREL→PUBCOMP,重点讲 PUBREL 固定标志 0010。
订阅请求的负载结构(过滤器+请求 QoS)、SUBACK 的四种返回码与降级规则、重复订阅的替换语义、退订的两步。
全协议最简的三个报文:保活定时器的工作原理、1.5 倍超时判定、DISCONNECT 后的"三必须"与遗嘱清除。
前置知识:第 1 章第 3 节(QoS 与主题)、第 2 章全部(三段式结构与报文标识符)。
后续延伸:第 4 章把这些报文放进时间轴,讲会话恢复、QoS 状态机、重发与去重、主题匹配与错误处理。