博客
关于我
MQTT协议知识梳理,看完你就懂了!
阅读量:796 次
发布时间:2023-02-09

本文共 1468 字,大约阅读时间需要 4 分钟。

MQTT简介

MQTT(Message Queue Telemetry)是一种基于TCP/IP协议栈的异步通信消息协议,属于轻量级的发布/订阅信息传输协议。其特点是将消息发送者与接受者分离,在网络环境中实现消息的可靠传输。MQTT广泛应用于设备硬件存储空间有限或网络带宽受限的场景,成为物联网平台的重要通信协议。

MQTT的核心特点是支持长连接通信,能够在不可靠网络环境中扩展应用。云端与设备端保持持续连接,云端发送消息后,设备端能够在最短时间内接收并响应。这种特性使得MQTT适用于需要实时控制的场景,尤其适用于执行器设备。然而,长连接的实现需要定期发送心跳包,这会占用电能,限制其在低功耗场景中的应用。尽管如此,MQTT依然因其高效性和灵活性,成为物联网领域的标准协议之一。

MQTT框架图

MQTT框架图展示了消息传输的整体流程。消息从发布者端出发,通过代理服务器进行中转,最终传递给订阅者端。这种发布/订阅模式解除了应用程序之间的耦合关系,实现了系统的灵活性和可扩展性。

MQTT特点

MQTT协议针对计算能力有限、网络带宽受限的远程传感器和控制设备设计,具有以下显著特点:

  • 发布/订阅模式:支持一对多的消息发布,解除应用程序耦合。
  • 小型传输:头部固定长度极小,减少网络流量。
  • 服务质量(QoS):提供三种消息发布等级(QoS0至QoS2),确保消息可靠性。
  • Last Will and Testament:通知机制,用于异常断开连接的设备。
  • MQTT协议原理

    MQTT协议通过建立客户端与服务器端的长连接,实现消息的可靠传输。客户端可以发布消息或订阅特定主题的消息,而服务器负责中转消息并确保传输质量。MQTT消息由主题(Topic)和负载(Payload)两部分组成,主题用于标识消息类型,负载为具体内容。

    MQTT客户端与服务器

    • 客户端:负责发布消息或订阅主题,支持断开连接的状态管理。
    • 服务器(Broker):作为消息代理,接收客户端的连接与消息,处理订阅请求,并向订阅者转发消息。

    MQTT协议中的关键概念

  • 订阅(Subscription):包含主题筛选器和QoS等级,定义了客户端接收的消息类型。
  • 会话(Session):客户端与服务器之间的连接状态,支持多个订阅。
  • 主题(Topic):消息的分类标识,服务器根据主题向订阅者发送消息。
  • 主题筛选器(Topic Filter):用于匹配多个主题,实现更灵活的消息订阅。
  • MQTT协议中的方法

    MQTT定义了几种核心操作方法:

  • Connect:建立与服务器的TCP连接。
  • Disconnect:断开连接。
  • Subscribe:注册主题订阅。
  • Unsubscribe:取消主题订阅。
  • Publish:发送消息至服务器。
  • MQTT优缺点

    优点

  • 轻量级:协议交换最小化,适合资源受限的设备。
  • 灵活性:支持多种QoS等级,满足不同场景需求。
  • 标准化:由OASIS技术委员会标准化,广泛应用于物联网设备。
  • 适用性广:支持多种平台,适合智能硬件、手机等多种设备。
  • 缺点

  • 功耗高:长连接需心跳包,影响电池续航。
  • 安全性不足:缺乏加密机制,存在数据泄露风险。
  • 服务器实现复杂:需要专业知识和工具,资源消耗较大。
  • MQTT应用场景

    MQTT广泛应用于以下场景:

  • 智能家居:控制灯、空调、门锁等设备。
  • 工业自动化:监控生产线状态,执行远程控制命令。
  • 交通管理:实时监控交通流量,管理信号灯。
  • 医疗设备:传输心电图、血压等实时数据。
  • MQTT的高效性和可靠性,使其成为物联网通信的重要选择。

    转载地址:http://gtffk.baihongyu.com/

    你可能感兴趣的文章
    mysql 5.6 修改端口_mysql5.6.24怎么修改端口号
    查看>>
    mui折叠面板点击事件跳转
    查看>>
    MYSQL 5.7数据库同步结构#1067报错 invalid default value for解决方法
    查看>>
    mui框架通讯录检索
    查看>>
    MySQL 8 公用表表达式(CTE)—— WITH关键字深入用法
    查看>>
    mysql 8 远程方位_mysql 8 远程连接注意事项
    查看>>
    MUI框架里的ajax的三种方法
    查看>>
    MySQL 8.0 恢复孤立文件每表ibd文件
    查看>>
    Mysql 8.0 新特性
    查看>>
    MultCloud – 支持数据互传的网盘管理
    查看>>
    MySQL 8.0.23中复制架构从节点自动故障转移
    查看>>
    MySQL 8.0开始Group by不再排序
    查看>>
    mysql ansi nulls_SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思
    查看>>
    multi swiper bug solution
    查看>>
    MySQL Binlog 日志监听与 Spring 集成实战
    查看>>
    MySQL binlog三种模式
    查看>>
    multi-angle cosine and sines
    查看>>
    Mysql Can't connect to MySQL server
    查看>>
    mysql case when 乱码_Mysql CASE WHEN 用法
    查看>>
    Multicast1
    查看>>