0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MQTT协议详解 概念、特性、版本及作用

亿佰特物联网应用专家 2023-08-01 00:09 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是ISO标准下基于发布/订阅方式的轻量级消息协议。MQTT通常使用TCP / IP(传输控制协议/Internet协议)作为其传输,但也可以使用其他双向传输。MQTT通常应用于物联网智能家居等设备和应用程序之间的通信。在嵌入式领域,MQTT已经占据着无法替代的分量,因为大多数的嵌入式设备,都需要这样的协议进行数据交互。

MQTT协议的主要特点

(1)开放消息协议,简单易实现。

(2)发布订阅模式,一对多消息发布。

(3)基于TCP/IP网络连接,提供有序、无损、双向连接。

(4)1字节固定报头,2字节心跳报文,最小化传输开销和协议交换,有效减少网络流量。

(5)消息QoS支持可靠传输保证。

MQTT深层特性

01

一对多信息发布

首先,他是基于订阅与发布的一种协议,所以他可以一对多地进行消息发布,这样的功能应用场景非常多,局限性广播能够让服务器灵活控制想要控制的那个设备,并且服务器可以提供多个可以订阅的主题,这是极为关键的。

因为对于服务器而言,接收数据并处理是核心任务,但是当设备的增多、设备功能行的增多,服务器处理逻辑将会几何倍数增长。同样是接收的数据,也许是完全不同类设备上传的完全不一样的信息,所以当可以提供多个订阅主题与发布主题时,这种逻辑上的差异性就能被区分开,给开发者带来了很大的便利。

02

不同底层协议

MQTT的第二个特性其实就是他基于了TCP/IP而生,注定它是靠上层的一个协议,现在接触的其实大多都是基于TCP协议而开发的,但它其实是有基于UDP版本的,名为MQTT-SN,但大家都知道,TCP面向连接,而UDP不面向连接,所以基于不同的底层协议类型,MQTT展现的特性肯定也是不同的。

03

消息可靠性

对于常用的MQTT协议,它有一个很重要的保证消息可靠性的特性——QoS(服务质量),QoS可分为三个等级:QoS 0、QoS 1、QoS 2。

QoS 0其实相当于MQTT没有做额外信息保护,因为本身是基于TCP协议的,所以其消息可靠性完全依赖于TCP协议。而QoS 1,则是代表至少承诺会有一次发送给接收者,这是在MQTT层进行的信息保护,而不只是依靠TCP协议层。最后QoS 2,则是保证消息仅仅传送到目的地一次。

a357d0e4-2fbc-11ee-bbcf-dac502259ad0.png

因为对于QoS 1,可能会因为消息没有反馈而多次发送,而接收方也可能收到多次消息,为此,QoS 2传输的消息带有唯一的ID,带有唯一消息ID的消息会存储两次,首先来自发送者,然后是接收者QoS级别2在网络中具有最高的开销,因为在发送方和接收方之间需要两个流。

MQTT两个主要版本

MQTT有v3 和 v5两个主要版本。这两个版本原理基本相同,但它们之间存在一些关键的差异,下面将从以下几个方面来介绍它们之间的区别。

01

主题别名

主题是MQTT中的核心概念,它用于标识消息的内容和意图。在MQTT v3中,主题只是一个简单的字符串,其结构是由一系列以斜杠分隔的单词组成的。例如,一个 MQTT v3主题可以是 sensors/temperature/room1,其中sensors是顶级主题,temperature是其子主题,room1是子主题下的一个特定设备。

然而,在 MQTT v5中,主题的结构得到了扩展,新增了一些更高级的功能。具体来说,MQTT v5引入了一个名为主题别名的新概念,它允许客户端将主题字符串映射到预定义的主题ID,从而减少网络流量和消息大小。这使得客户端能够在发送消息时只发送主题ID,而不必每次都发送完整的主题字符串。这对于IoT设备和网络带宽有限的环境来说非常有用。

02

订阅操作

MQTT v5引入了一种名为共享订阅的新订阅类型。如下图所示,共享订阅允许多个客户端共享一个订阅,并按照一定规则进行分配。这种订阅类型对于订阅高负载主题非常有用,因为它可以平衡订阅请求,减轻单个客户端的负载压力。

a3ab2ad2-2fbc-11ee-bbcf-dac502259ad0.png

另外MQTT v5增加了订阅选项的概念,可以指定订阅选项,例如QoS等级、Retain As Publish、Retain Handling、消息的生命周期等,来对订阅行为进行更加精细地控制。

03

遗嘱消息

遗嘱消息是MQTT为那些可能出现意外断线的设备提供的将遗嘱优雅地发送给第三方的能力。

a3d4ae34-2fbc-11ee-bbcf-dac502259ad0.png

Will Properties是MQTT v5新增的一个字段,不同类型的报文有着不同的属性,例如CONNECT报文有最大报文长度、会话过期间隔等属性,SUBSCRIBE报文则有订阅标识符等属性。而且MQTT v5较v3相比,遗嘱消息的内容变得更加灵活,可以包含任何主题和任何消息内容。

04

错误处理

MQTT v5支持更加详细的错误处理机制,可以通过错误码和错误原因来定位和解决问题。同时,MQTT v5还引入了一个新的控制报文——Disconnect报文,可以帮助客户端和服务器更好地处理错误情况。

05

流量控制

MQTT v5在v3版本基础上引入了一些新的机制用于流量控制,为了更好地控制消息的传输和处理,避免因为消息传输速度过快导致的网络拥塞和负载过高。

最大报文大小限制(Maximum Packet Size):MQTT v5 允许客户端和服务端在握手时协商最大报文大小。如下图所示,这个最大报文大小限制可以用于控制客户端和服务端之间传输的最大消息大小,防止因为传输的消息过大导致网络拥塞和负载过高。

消息队列(Message Queue):当服务端发送的消息超出了客户端处理的速度时,服务端可以将消息存储到消息队列中,等待客户端处理。MQTT v5 定义了消息队列的队列大小和超时时间,以控制消息队列的大小和生命周期。

06

性能与效率

MQTT v5相对于MQTT v3来说,可以更好地处理大规模的数据传输,提高了通信的效率和性能。例如MQTT v5支持批量发布(Batch Publish)和预取(Message Prefetch)等功能,可以大大减少MQTT通信时的开销。

总之,MQTT v5相比于MQTT v3具有更多的新功能和安全性。但是,需要注意的是MQTT v5相对于MQTT v3增加了很多新的功能和概念,因此在使用MQTT v5时,需要对MQTT协议的新特性进行深入的了解,以便可以更好地使用这个新协议来构建可靠的应用程序。

MQTT协议于物联网有何好处?

01

操作简单

启动和运行MQTT既快速又简单,有数百万个现成的客户端应用程序和几乎同样多的代理可应用。

02

安全可靠

许多物联网设备依靠无线电连接来传输和收集数据,这意味着连接并不总是可靠的。MQTT可以允许将消息存储在代理中,直到设备准备好接收它。由于QoS(服务质量),MQTT能够对消息进行排队,确保它们到达目的地,如果需要,请确保它们只到达一次。

03

双向消息传递

也许更准确地说MQTT是全向的。任何设备、事物或应用程序都可以发布或订阅代理处理的任何主题。这意味着在网络上可以交谈或收听的内容没有限制。

04

大规模消息传递

将消息广播到一百万台设备与发送到一百台设备一样容易,要被网络上的所有内容听到,事物只需要发布到所有设备都订阅的主题。

归根结底,物联网(IoT)有一项工作就是在网络上获取设备之间的数据。而这些网络可能位于世界任何地方,每个网络都面临着许多可能导致它们数据传输失败的情况,MQTT具有无数内置的功能来帮助缓解其中一些问题,从而让使用者的烦恼有所减少。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2939

    文章

    47324

    浏览量

    407966
  • 智能家居
    +关注

    关注

    1942

    文章

    9944

    浏览量

    195532
  • MQTT
    +关注

    关注

    5

    文章

    721

    浏览量

    24786
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    工业MQTT网关有哪些使用功能和应用场景

    工业MQTT网关作为连接工业设备与云平台的核心设备,凭借其轻量级、高效、可扩展的特性,在多个工业场景中发挥着关键作用,其使用功能和应用场景可归纳如下: 一、核心功能 数据采集与协议转换
    的头像 发表于 12-04 11:17 70次阅读

    创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—MQTT通信协议案例

    本文围绕创龙科技研发的评估板,提供 MQTT 通信协议开发案例指导。涵盖 MQTT 协议核心概念详解
    的头像 发表于 10-28 15:23 2272次阅读
    创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—<b class='flag-5'>MQTT</b>通信<b class='flag-5'>协议</b>案例

    Air780EPM嵌入式开发:LuatOS下的MQTT通信实践

    通过LuatOS脚本在Air780EPM开发板上实现MQTT通信,是物联网设备开发中高效且便捷的解决方案。 一、MQTT 协议详解   1.1 什么是
    的头像 发表于 09-30 16:11 1607次阅读
    Air780EPM嵌入式开发:LuatOS下的<b class='flag-5'>MQTT</b>通信实践

    LuatOS嵌入式开发实战:Air780EPM与MQTT通信

     本教程聚焦于LuatOS在Air780EPM开发板上的应用,演示如何通过脚本实现MQTT协议通信,助力物联网设备快速联网。 一、MQTT 协议详解
    的头像 发表于 09-29 18:10 290次阅读
    LuatOS嵌入式开发实战:Air780EPM与<b class='flag-5'>MQTT</b>通信

    MQTT_协议中文资料

    电子发烧友网站提供《MQTT_协议中文资料.pdf》资料免费下载
    发表于 09-02 16:19 0次下载

    通过MQTT协议能接入工业物联网云平台中吗

    通过MQTT协议完全可以接入工业物联网云平台,且因其轻量、高效、可靠等特性,已成为工业物联网场景中的主流通信协议之一。
    的头像 发表于 08-26 18:03 643次阅读

    GraniStudio :MQTT 协议的深度剖析

    在工业物联网(IIoT)的通信协议体系中,MQTT(Message Queuing Telemetry Transport)凭借其轻量级、发布 - 订阅模式和低带宽占用等特性,成为连接边缘设备与云端
    的头像 发表于 08-04 09:48 811次阅读
    GraniStudio :<b class='flag-5'>MQTT</b> <b class='flag-5'>协议</b>的深度剖析

    MQTT网关具备边缘计算功能吗?有什么功能?

    协议转换为MQTT协议,实现设备与云平台的通信),但随着边缘计算技术的发展,两者逐渐融合——MQTT网关集成边缘计算能力后,可在靠近设备的“边缘端”完成数据处理、决策和控制,大幅提升物
    的头像 发表于 07-15 15:01 579次阅读
    <b class='flag-5'>MQTT</b>网关具备边缘计算功能吗?有什么功能?

    简析Modbus和MQTT协议

    Modbus和MQTT协议在设计目标、通信模式、应用场景、网络结构、数据传输效率、设备兼容性及安全性等方面存在显著差异,具体分析如下: 一、设计目标与定位 Modbus :诞生于1979年,由施耐德
    的头像 发表于 07-10 14:25 495次阅读

    MQTT为何成为物联网协议

    的优势,以下为你详细介绍: 轻量级特性,适配资源受限设备 协议头开销小 :MQTT协议头非常简洁,相比其他协议,它在数据传输时添加的额外信息
    的头像 发表于 05-20 09:54 606次阅读

    KaihongOS操作系统:MQTT物联网通讯协议

    @ohos.net.khMqtt (MQTT物联网通讯协议) 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 目前
    发表于 05-08 07:51

    详解REST API通信协议

    的一环。 为了实现这一目标,我们采用了多种通信协议,包括MQTT、OPC UA、AMQP和REST API,它们共同构成了智能通信的坚实基础。本期内容,让我们聚焦REST API通信协议,探索它如何在IIoT领域中发挥关键
    的头像 发表于 01-17 12:40 1613次阅读
    <b class='flag-5'>详解</b>REST API通信<b class='flag-5'>协议</b>

    基于MQTT协议的车云通信设计

    随着智能汽车的发展,车云通信的功能场景及数据量也逐渐增多,具有轻量化、可靠性等特点的MQTT协议成为很多OEM车云通信协议的选择。本文主要介绍。 什么是MQTT
    的头像 发表于 01-08 10:24 1721次阅读
    基于<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>的车云通信设计

    百问MQTT协议分析 - 报文分析①

    5 4 3 2 1 0 Byte1 Mqtt报文类型(1) Reserved(保留位) 0 0 0 1 0 0 0 0 Byte2~n 剩余长度 表格3.1 16.3.1.2 协议
    发表于 12-13 09:41

    百问MQTT协议分析 - MQTT简述及协议报文格式组成

    16.1 mqtt协议介绍 16.1.1 概述 ​MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景
    发表于 12-13 09:29