MQTT(Message Queuing Telemetry Transport)协议

server/2025/1/15 17:56:02/

文章目录

    • 一、MQTT 的原理
      • 1. 通信模型
      • 2. 核心概念
      • 3. 工作流程
    • 二、MQTT 的优势
      • 1. 轻量级
      • 2. 异步通信
      • 3. 可靠性
      • 4. 实时性
      • 5. 支持断线重连
      • 6. 跨平台支持
      • 7. 安全性
    • 三、MQTT 的典型应用场景
    • 四、与其他协议的对比

MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,专为低带宽、不稳定网络环境下的设备通信设计,广泛应用于物联网(IoT)领域。


一、MQTT 的原理

1. 通信模型

MQTT 基于 发布/订阅(Publish/Subscribe) 模型,而不是传统的请求/响应模型:

  • 发布者(Publisher):生产消息并将其发布到某个主题(Topic)。
  • 订阅者(Subscriber):订阅一个或多个主题,接收发布到这些主题的消息。
  • 代理(Broker):消息中介,负责接收发布者的消息并将其分发给订阅者。

2. 核心概念

  • 主题(Topic):用于分类消息的通道,消息按照主题进行路由。主题可以是多级结构(如 home/room1/temperature)。
  • QoS(质量服务等级)
    • QoS 0: 最多一次,消息可能丢失。
    • QoS 1: 至少一次,确保消息到达但可能重复。
    • QoS 2: 恰好一次,确保消息到达且不重复。
  • 保留消息(Retained Message):代理保存的最近一条消息,新订阅者能立刻接收。
  • 遗嘱消息(Last Will Message):设备异常断开时,代理代发的消息。

3. 工作流程

  1. 连接:客户端通过 TCP(或 WebSocket)连接到 Broker。
  2. 认证:可通过用户名和密码进行身份验证。
  3. 订阅:客户端订阅主题,Broker 记录该订阅关系。
  4. 发布:发布者将消息发送到特定主题,Broker 根据订阅关系分发消息。
  5. 断开:客户端主动断开或超时断开。

二、MQTT 的优势

1. 轻量级

  • 消息头部非常小(2 字节起),适合低带宽网络。
  • 协议简单易实现,资源占用少,适合嵌入式设备。

2. 异步通信

  • 发布/订阅模型支持松耦合,通信双方无需直接连接,提供高灵活性。

3. 可靠性

  • 提供 3 种 QoS 等级,用户可根据场景选择消息传输的可靠性。

4. 实时性

  • 支持长连接,消息实时推送,适合物联网中对延迟敏感的应用。

5. 支持断线重连

  • 客户端掉线后可自动重新连接,遗嘱消息机制保障异常断开时的信息通知。

6. 跨平台支持

  • 可在多种设备和操作系统上实现,具有广泛的生态支持。

7. 安全性

  • 支持 TLS 加密和基于用户名/密码的身份认证,增强传输安全性。

三、MQTT 的典型应用场景

  1. 智能家居
    • 设备状态更新(如灯的开关状态)。
    • 传感器数据上传(如温湿度监测)。
  2. 工业物联网
    • 设备远程监控和数据采集。
    • 设备报警通知。
  3. 车联网
    • 实时位置跟踪。
    • 远程车辆控制。
  4. 移动应用
    • 实时消息推送(如聊天应用)。
  5. 医疗健康
    • 健康监测设备的数据上传和报警。

四、与其他协议的对比

特性MQTTHTTPCoAP
模型发布/订阅请求/响应请求/响应
资源消耗非常低
传输协议TCP(可用 TLS 加密)TCP(可用 HTTPS)UDP(支持 DTLS 加密)
实时性
可靠性可选 QoS默认可靠默认不可靠

MQTT 的轻量性和高实时性使其成为物联网领域的首选协议。


http://www.ppmy.cn/server/158617.html

相关文章

Vue.js组件开发-使用地图绘制轨迹

在Vue.js中开发一个组件来展示地图并绘制轨迹,可以使用诸如Leaflet.js、Mapbox GL JS或百度地图等地图库。这些库提供了丰富的API来创建和定制地图,以及绘制路径、标记和其他地图元素。 示例: 1. 安装Leaflet.js 首先,需要安装…

LabVIEW智能水肥一体灌溉控制系统

本文详细介绍了一种基于LabVIEW的智能水肥一体灌溉控制系统的设计与实现。该系统采用模糊控制策略,能够自动调节土壤湿度和肥液浓度,满足不同作物在不同生长阶段的需求,有效提高水肥利用效率,对现代精准农业具有重要的实践和推广价…

用gpg和sha256验证ubuntu.iso

链接 https://ubuntu.com/tutorials/how-to-verify-ubuntuhttps://releases.ubuntu.com/jammy/ 本文是2的简明版 sha256sum介绍 sha256sum -c SHA256SUMS 2>&1这段脚本的作用是验证文件的 SHA-256 校验和。具体来说,命令的各个部分含义如下: …

http和https有哪些不同

http和https有哪些不同 1.数据传输的安全性:http非加密,https加密 2.端口号:http默认80端口,https默认443端口 3.性能:http基于tcp三次握手建立连接,https在tcp三次握手后还有TLS协议的四次握手确认加密…

安装软件缺少msvcp110.dll怎么办?出现dll丢失的解决方法

在日常使用电脑安装各类软件的过程中,相信不少朋友都遇到过 “缺少 msvcp110.dll” 的报错提示 。下面就来深入聊聊这个 msvcp110.dll 文件,以及当它缺失时,我们该如何巧妙应对。 一、msvcp110.dll 文件介绍 1.1 定义与功能 msvcp110.dll 是…

django基于Python的汽车销售管理系统的设计与实现

Django 基于 Python 的汽车销售管理系统的设计与实现 一、系统概述 Django 基于 Python 的汽车销售管理系统是一款专为汽车销售企业打造的综合性信息化管理平台。该系统借助 Django 框架的高效性、安全性以及 Python 语言丰富的库和工具,全面覆盖汽车销售业务的各…

命令模式-Command Pattern

什么是命令模式 命令模式是一种行为类设计模式,核心是将每种请求或操作封装为一个独立的对象,从而可以集中管理这些请求或操作,比如将请求队列化依次执行、或者对操作进行记录和撤销。 命令模式通过将请求的发送者(客户端)和接收者(执行请求…

MERN全栈脚手架(MongoDB、Express、React、Node)与Yeoman详解

MERN 全栈脚手架是一种用于快速构建基于 MongoDB、Express、React 和 Node.js 的全栈应用的框架或模板。它帮助开发者快速启动项目,减少了从零开始配置的时间。以下是关于 MERN 全栈脚手架的详细解析。 一、MERN 技术栈简介 MongoDB: 文档型数据库,用于…