目录

一、概述
MQTT(Message Queuing Telemetry Transport) 是一种轻量级、基于 发布/订阅(Publish/Subscribe) 模式的消息传输协议,专为 低带宽、高延迟或不可靠网络环境 而设计。 它广泛应用于 物联网(IoT)、智能家居、车联网、工业监控、远程医疗 等场景。
二、设计目标与特点
| 特点 | 说明 |
| 🔹 轻量高效 | 报文头部最小仅 2 个字节,适合带宽受限的设备(如 ESP32、MCU)。 |
| 🔹 发布/订阅模型 | 客户端之间通过 Broker(代理服务器) 进行通信,发送者与接收者解耦。 |
| 🔹 可靠传输 | 支持 3 种 QoS(服务质量)等级,保障消息可靠性。 |
| 🔹 长连接 | 基于 TCP 长连接,支持心跳保活(Keep Alive)。 |
| 🔹 跨平台支持 | 支持 C、Python、Java、Node.js、Go 等多语言实现。 |
| 🔹 安全机制 | 可通过 TLS/SSL 加密传输,支持用户名密码或证书认证。 |
三、MQTT 通信架构
+------------+ +-----------+ +------------+
| Publisher | -----> | | -----> | Subscriber |
| (发布者) | | Broker | | (订阅者) |
+------------+ +-----------+ +------------+
-
Broker(代理服务器): 负责接收消息、过滤、转发给对应订阅者(常见实现:Mosquitto、EMQX、HiveMQ)。
-
Publisher(发布者): 向特定主题(Topic)发布消息。
-
Subscriber(订阅者): 订阅主题并接收消息。
四、主题(Topic)机制
主题是 MQTT 消息的 分类通道,使用类似路径的格式:
home/livingroom/temperature
device/lock/123/status
-
#:多层通配符 例如:home/#可匹配home/livingroom/temperature、home/kitchen/humidity -
+:单层通配符 例如:home/+/temperature可匹配home/livingroom/temperature但不匹配home/livingroom/sensor/temperature
五、QoS(服务质量等级)
| 等级 | 名称 | 适用场景 | 含义 |
| 0 | 至多一次 (At most once) | 温度上报、心跳数据 | 不保证送达,类似 UDP |
| 1 | 至少一次 (At least once) | 日志、状态更新 | 可重复但不会丢失 |
| 2 | 仅一次 (Exactly once) |

最低0.47元/天 解锁文章
2197

被折叠的 条评论
为什么被折叠?



