当前位置: 首页 > ai >正文

【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标志的消息
新订阅者会立即收到该主题的最后一条保留消息

  1. 遗嘱消息(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实现:

  1. Eclipse Mosquitto (开源)
  2. EMQ X (高性能)
  3. HiveMQ (企业级)
  4. AWS IoT Core (云服务)

客户端库:

  1. Paho (多语言支持)
  2. MQTT.js (JavaScript)
  3. 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),新增:

七、原因码

  1. 共享订阅
  2. 消息过期
  3. 流量控制
  4. 用户属性

MQTT因其轻量、高效和灵活的特性,已成为物联网领域最主流的通信协议之一。


http://www.xdnf.cn/news/1319.html

相关文章:

  • 软考资料分享
  • K8S安全认证
  • 【论文阅读】Hierarchical Group-Level Emotion Recognition
  • 国产RK3568+FPGA以 ‌“实时控制+高精度采集+灵活扩展”‌ 为核心的解决方案
  • 远程控制Firefox浏览器实例的挑战与Playwright的CDP和Selenium Marionette解决方案
  • Python中的“,”
  • 【OceanBase相关】02-OceanBase数据库NFS备份实践
  • C++笔记-stack_queue(含deque,priority_queue,仿函数的讲解)
  • ADW600防护等级与电气安全设计要点详解
  • 深入探究Linux项目自动化构建工具:make与Makefile
  • Kafka 主题设计与数据接入机制
  • windos端远程控制ubuntu运行脚本程序并转发ubuntu端脚本输出的网页
  • Uniapp 中缓存操作指南
  • 【笔记】CentOS7部署K8S集群
  • unity编辑器的json验证及格式化
  • 明远智睿2351开发板:性价比之选,赋能智能硬件创新
  • QT6 源(45):分隔条 QSplitter 允许程序的用户修改布局,程序员使用 IDE时,就是分隔条的用户,以及其 QSplitter 源代码
  • 【playwright】学习--持续汇总
  • CMake 入门指南:从零开始配置你的第一个项目
  • 动态贴纸+美颜SDK的融合实现:底层架构与性能优化技术全解析
  • Redis-cli常用参数及功能的详细说明
  • 基于Flask与Ngrok实现Pycharm本地项目公网访问:从零部署
  • Redis常见命令
  • 【C/S通信仿真】
  • uniapp 处理app video组件各种问题
  • vue+flask+lstm高校舆情分析系统 | 可获取最新数据!
  • 蓝桥杯17. 机器人塔
  • gem5-gpu教程04 高速缓存一致性协议和缓存拓扑
  • 服务器配置环境-condapytorch_20250422
  • Java从入门到“放弃”(精通)之旅——String类⑩