5.8.1 通信->MQTT物联网通信协议标准(OASIS):MQTT(Message Queuing Telemetry Transport)
·
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输) 是 OASIS 发布的轻量级、基于发布 / 订阅模式的物联网通信标准,专为低带宽、高延迟、资源受限的嵌入式设备设计OASIS Docs。当前主流为 MQTT 3.1.1(2014) 和 MQTT 5.0(2019) 两个版本
核心架构与角色
采用 客户端 - 服务器(Broker) 发布 / 订阅模型:
- 发布者(Publisher):发送消息到主题(Topic),不关心接收者
- 代理(Broker):服务器,负责接收、存储、路由消息
- 订阅者(Subscriber):订阅主题,接收匹配的消息
- 主题(Topic):消息的路由标签(如
sensor/temp/livingroom),支持通配符+(单层)、#(多层)
核心特性(OASIS 标准定义)
-
轻量、低开销
- 最小固定头部仅 2 字节
- 协议简单,嵌入式实现容易
-
三种消息 QoS 等级OASIS Docs
- QoS 0 (At most once):最多一次,发完即忘(传感器数据)
- QoS 1 (At least once):至少一次,确认重发(普通控制)
- QoS 2 (Exactly once):严格一次,防重复(计费 / 关键指令)
-
遗嘱(Will)与保留消息(Retain)
- 遗嘱:异常断开时 Broker 自动发布遗言
- 保留:Broker 保存最新一条消息,新订阅者立即收到
-
心跳(Keep-Alive)
- 客户端定时发
PINGREQ,维持长连接,检测离线
- 客户端定时发
报文结构(所有消息通用)
固定头(必选) + 可变头(可选) + 负载(Payload,可选)
-
固定头(1–5 字节)
- 第 1 字节:高 4 位 =报文类型(CONNECT/PUBLISH 等),低 4 位 = 标志(DUP/QoS/RETAIN)
- 后续字节:剩余长度(可变长编码)
-
可变头:消息 ID、主题名、属性等
-
Payload:应用数据(二进制、JSON、文本等)OASIS Docs
14 种控制报文(OASIS 定义)
- 连接类:CONNECT、CONNACK、DISCONNECT
- 消息类:PUBLISH、PUBACK、PUBREC、PUBREL、PUBCOMP
- 订阅类:SUBSCRIBE、SUBACK、UNSUBSCRIBE、UNSUBACK
- 心跳类:PINGREQ、PINGRESP
典型通信流程
- 连接:客户端 → CONNECT → Broker → CONNACK
- 订阅:客户端 → SUBSCRIBE → Broker → SUBACK
- 发布:发布者 → PUBLISH → Broker → 推送给所有订阅者
- 断开:客户端 → DISCONNECT → 关闭连接
MQTT 3.1.1 vs 5.0(OASIS 标准演进)
| 特性 | 3.1.1 | 5.0 |
|---|---|---|
| 错误反馈 | 仅连接成功 / 失败 | Reason Code 细化错误原因 |
| 会话管理 | Clean Session 布尔 | 会话超时、消息过期 |
| 主题别名 | 不支持 | 缩短主题名,减少带宽 |
| 共享订阅 | 不支持 | 多客户端负载均衡 |
| 用户属性 | 不支持 | 自定义键值对元数据 |
| 请求 / 响应 | 不支持 | 支持双向 RPC 模式 |
| 安全 | 基础认证 | SCRAM、增强认证、权限控制 |
应用场景
- 智能家居、工业物联网(IIoT)
- 车联网、智能表计(水电气)
- 医疗设备、环境监测、智慧城市
- 低带宽 / 卫星 / 移动网络通信
安全要点(OASIS 建议)
- 传输层:MQTT over TLS/SSL(端口 8883)
- 认证:用户名 / 密码、Token、X.509 证书
- 授权:Broker 级 ACL 控制主题读写权限
- ** payload 加密 **:敏感数据应用层加密
总结
MQTT 是物联网事实标准:轻量、可靠、支持分级 QoS、发布 / 订阅解耦、易嵌入式实现OASIS Docs。3.1.1 稳定通用,5.0 功能更强、更适合大规模 IoT
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)