【KWDB 创作者计划】_上位机知识篇---MQTT协议
文章目录
- 前言
- 一、基本概念
- 1. 协议特点
- 轻量级
- 基于发布/订阅模型
- 支持QoS等级
- 低功耗
- 支持持久会话
- 2. 主要组件
- Broker
- Publisher(发布者)
- Subscriber(订阅者)
- Topic(主题)
- 二、协议细节
- 1. 连接建立
- 2. 主题(Topic)
- 分层结构
- 支持两种通配符
- +(单级通配符)
- #(多级统配符)
- 3. QoS级别
- 三、协议报文
- 客户端请求连接
- 连接确认
- 发布信息
- QoS 1消息确认
- QoS 2消息接收确认
- QoS 2消息释放
- QoS 2消息完成
- 订阅请求
- 订阅确认
- 取消订阅
- 取消订阅确认
- 心跳请求
- 心跳响应
- 断开连接
- 三、应用场景
- 1. 物联网(IoT)设备通信
- 2. 传感器数据采集
- 3. 智能家居控制
- 4. 移动应用
- 5. 推送通知
- 6. 实时消息
- 7. M2M通信
- 8. 设备间直接通信
- 9. 远程监控
- 10. 工业设备监控
- 11. 环境监测
- 四、安全机制
- 基础认证
- TLS/SSL加密
- 客户端证书
- 主题权限控制
- 五、常见实现
- Broker实现:
- 客户端库:
- 六、版本演进
- MQTT 3.1
- MQTT 3.1.1
- MQTT 5.0
- 七、原因码
前言
MQTT (Message Queuing Telemetry Transport) 是一种轻量级的发布/订阅消息传输协议,专为低带宽、高延迟或不稳定的网络环境设计。
一、基本概念
1. 协议特点
轻量级
轻量级:协议头最小只有2字节
基于发布/订阅模型
基于发布/订阅模型:解耦消息生产者和消费者
支持QoS等级
支持QoS等级:提供三种消息传递质量保证级别
低功耗
低功耗:适合物联网设备
支持持久会话
支持持久会话:可恢复通信状态
2. 主要组件
Broker
Broker(代理服务器):消息中转站,负责接收、过滤和转发消息
Publisher(发布者)
Publisher(发布者):发送消息的客户端
Subscriber(订阅者)
Subscriber(订阅者):接收消息的客户端
Topic(主题)
Topic(主题):消息的分类标识,采用分层结构(如home/livingroom/temperature)
二、协议细节
1. 连接建立
MQTT连接通过CONNECT/CONNACK报文对建立:
客户端发送CONNECT报文,包含:
1.Client ID(客户端标识)
2.Clean Session标志(是否清除之前会话)
3.可选的用户名/密码
4.Keep Alive时间(心跳间隔)
5.服务端响应CONNACK报文,包含连接状态
2. 主题(Topic)
分层结构
分层结构,用"/"分隔(如home/floor1/room2/temp)
支持两种通配符
+(单级通配符)
+:单级通配符(如home/+/temp)
#(多级统配符)
#:多级通配符(如home/#)
3. QoS级别
MQTT定义了三种服务质量等级:
QoS 名称 描述 报文流
0 最多一次 消息发送一次,不保证送达 PUBLISH
1 至少一次 确保消息送达,但可能重复 PUBLISH → PUBACK
2 恰好一次 确保消息只送达一次 PUBLISH → PUBREC → PUBREL → PUBCOMP
4. 保留消息(Retained Message)
服务端会保存每个主题最后一条带retain标志的消息
新订阅者会立即收到该主题的最后一条保留消息
- 遗嘱消息(Last Will)
客户端在CONNECT时指定
当客户端异常断开时,服务端自动发布该消息
三、协议报文
MQTT有14种控制报文类型:
客户端请求连接
CONNECT (1):客户端请求连接服务端
连接确认
CONNACK (2):连接确认
发布信息
PUBLISH (3):发布消息
QoS 1消息确认
PUBACK (4):QoS 1消息确认
QoS 2消息接收确认
PUBREC (5):QoS 2消息接收确认
QoS 2消息释放
PUBREL (6):QoS 2消息释放
QoS 2消息完成
PUBCOMP (7):QoS 2消息完成
订阅请求
SUBSCRIBE (8):订阅请求
订阅确认
SUBACK (9):订阅确认
取消订阅
UNSUBSCRIBE (10):取消订阅
取消订阅确认
UNSUBACK (11):取消订阅确认
心跳请求
PINGREQ (12):心跳请求
心跳响应
PINGRESP (13):心跳响应
断开连接
DISCONNECT (14):断开连接
三、应用场景
1. 物联网(IoT)设备通信
2. 传感器数据采集
3. 智能家居控制
4. 移动应用
5. 推送通知
6. 实时消息
7. M2M通信
8. 设备间直接通信
9. 远程监控
10. 工业设备监控
11. 环境监测
四、安全机制
基础认证
基础认证:用户名/密码
TLS/SSL加密
TLS/SSL加密:保障传输安全
客户端证书
客户端证书:更高级别的身份验证
主题权限控制
主题权限控制:限制客户端对特定主题的访问
五、常见实现
Broker实现:
- Eclipse Mosquitto (开源)
- EMQ X (高性能)
- HiveMQ (企业级)
- AWS IoT Core (云服务)
客户端库:
- Paho (多语言支持)
- MQTT.js (JavaScript)
- MQTTnet (.NET)
六、版本演进
MQTT 3.1
MQTT 3.1:首个标准化版本(IBM, 1999)
MQTT 3.1.1
MQTT 3.1.1:OASIS标准(2014)
MQTT 5.0
MQTT 5.0:重大更新(2019),新增:
七、原因码
- 共享订阅
- 消息过期
- 流量控制
- 用户属性
MQTT因其轻量、高效和灵活的特性,已成为物联网领域最主流的通信协议之一。