找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4|回复: 0
收起左侧

MQTT协议基本格式介绍

[复制链接]
ID:81365 发表于 2026-7-26 06:57 | 显示全部楼层 |阅读模式
一、MQTT 协议基本格式介绍
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种发布 / 订阅(publish/subscribe)模式的轻量级通讯协议,该协议构建于 TCP/IP 协议之上,由 IBM 在 1999 年发布。MQTT 最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
MQTT 是基于 TCP 的应用层协议,与 http、ftp 协议是处于同一层。几乎所有使用 ESP32 接入 IOT 物联网的项目中,都用的是 MQTT 协议,因此我们有必要学习 MQTT 协议基本内容。
1. MQTT 基本报文格式
MQTT 协议报文整体框架分为三部分:
表格
固定报头(fixed header)        可变报头(variable header)        荷载(payload)
所有报文都包含        部分报文包含        部分报文包含
1)固定包头(Fixed Header)
固定包头由如下构成:
第一字节 4~7 位用于表示报文类型,0~3 位用于每种报文的特殊标志位。
第二字节起为剩余长度:表示当前报文剩余部分(可变报头 + 荷载)占用的字节数。剩余长度采用可变长度编码方式,最多占用 4 字节。
MQTT 报文类型(第一字节高 4 位)
CONNECT:客户端请求连接服务端
CONNACK:连接确认
PUBLISH:发布消息
PUBACK:发布确认(QoS1)
PUBREC:收到发布(QoS2 第一步)
PUBREL:释放消息(QoS2 第二步)
PUBCOMP:发布完成(QoS2 第三步)
SUBSCRIBE:客户端订阅主题
SUBACK:订阅确认
UNSUBSCRIBE:取消订阅
UNSUBACK:取消订阅确认
PINGREQ:心跳请求
PINGRESP:心跳响应
DISCONNECT:断开连接
AUTH:认证扩展(MQTT5 新增)
低 4 位标志位:不同报文类型有专属标识,例如 PUBLISH 报文包含 DUP 重发标志、QoS 等级、RETAIN 保留标志。
2)可变报头(Variable Header)
不是所有报文都带有可变报头,根据报文类型决定内容。
常见内容:
报文标识符(Packet Identifier):SUBSCRIBE、PUBLISH (QoS>0) 等报文使用,16 位,用于匹配请求与应答;
主题名(Topic Name):PUBLISH 报文中携带;
协议名、协议版本、连接标志(CONNECT 报文)等。
3)荷载 Payload(有效载荷)
报文实际携带的数据内容,同样仅部分报文存在:
CONNECT:荷载包含客户端标识符、遗嘱消息、用户名、密码;
PUBLISH:荷载就是用户要传输的业务消息;
SUBSCRIBE:荷载包含订阅主题列表 + QoS 等级;
无荷载的报文:PINGREQ、PINGRESP、DISCONNECT 等。
2 MQTT 核心工作模式:发布 / 订阅模型
MQTT 架构包含三类角色:
Broker(服务端 / 代理服务器):接收客户端连接,转发消息;
发布者 Publisher:向某个主题(Topic)发送消息;
订阅者 Subscriber:订阅感兴趣的主题,接收 Broker 转发的消息。
发布者和订阅者互不直接通信,通过 Broker 中转,实现解耦。
3 关键概念
3.1 主题 Topic
使用字符串分层,例如 device/esp32/temp,支持通配符 +(单层匹配)、#(多层匹配)。
3.2 QoS 消息服务质量(3 个等级)
QoS 0:最多一次,消息只发一次,不保证送达;
QoS 1:至少一次,保证消息送达,可能重复接收;
QoS 2:恰好一次,握手流程确保消息只收到一次。
3.3 保留消息 Retain
发布消息设置 Retain=1 时,Broker 保存该主题最新消息,新客户端订阅主题后立刻收到这条留存消息。
3.4 遗嘱消息 Will
客户端异常掉线时,Broker 自动向指定主题发布预设遗嘱消息,用于设备离线告警。
3.5 心跳 PING
客户端定时发送 PINGREQ,服务端回复 PINGRESP,检测 TCP 连接是否存活,防止连接被网关断开。
4 ESP32 物联网项目应用说明
ESP32 内置 WiFi,可通过 TCP 连接 MQTT 服务器(公共云服务器 / 本地 EMQX、Mosquitto)。
典型工程流程:
ESP32 连接 WiFi;
TCP 连接 MQTT Broker;
发送 CONNECT 报文完成登录;
订阅接收指令主题、定时上报传感器数据(PUBLISH);
维持心跳,处理下行控制指令;
异常自动重连。
5 MQTT 优势总结
报文结构紧凑,头部短小,流量开销极低,适合单片机、ESP32 等资源受限嵌入式设备;
基于发布订阅,设备之间无需固定 IP 点对点通信;
支持三级 QoS,适应不同可靠性场景;
广泛支持阿里云、腾讯云、OneNET 等主流物联网平台,是嵌入式 IoT 首选协议。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表