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具有无数内置的功能来帮助缓解其中一些问题,从而让使用者的烦恼有所减少。

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

    关注

    2903

    文章

    44253

    浏览量

    371066
  • 智能家居
    +关注

    关注

    1926

    文章

    9508

    浏览量

    184208
  • MQTT
    +关注

    关注

    5

    文章

    649

    浏览量

    22422
收藏 人收藏

    评论

    相关推荐

    MQTT-3.1.1标准协议文档

    电子发烧友网站提供《MQTT-3.1.1标准协议文档.pdf》资料免费下载
    发表于 11-21 16:20 0次下载

    【教程】设备通过MQTT协议接入OneNET平台,建立可视化界面

    在物联网领域,传感器与服务器的通信、信息的收集以及MQTT协议都是可以考虑的方案之一。MQTT通常用于需要低功耗和低带宽的场景,如物联网设备、传感器网络、移动应用等。它的轻量级和高效特性
    的头像 发表于 10-25 08:06 497次阅读
    【教程】设备通过<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>接入OneNET平台,建立可视化界面

    MQTT.fx 连接Onenet 多协议接入平台 MQTT协议(旧版)详解

    此文档可以作为中间态MQTT版本,默认参数获取教程 多协议接入地址 td {white-space:nowrap;border:1px solid #dee0e3;font-size:10pt
    的头像 发表于 09-30 15:20 463次阅读
    <b class='flag-5'>MQTT</b>.fx 连接Onenet 多<b class='flag-5'>协议</b>接入平台 <b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>(旧版)<b class='flag-5'>详解</b>

    物联网行业中MQTT通信协议详解以及使用

    一 概述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议
    的头像 发表于 09-20 17:08 1173次阅读
    物联网行业中<b class='flag-5'>MQTT</b>通信<b class='flag-5'>协议</b><b class='flag-5'>详解</b>以及使用

    MQTT协议网关的工作原理及功能特性

    的数据传输。本文将详细探讨 MQTT协议网关 的工作原理、功能特性及其在物联网应用中的重要作用。 一、MQTT
    的头像 发表于 09-18 17:00 379次阅读
    <b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>网关的工作原理及功能<b class='flag-5'>特性</b>

    基于MQTT协议云平台的Modbus转MQTT网关

    钡铼Modbus转MQTT网关BL100是一款高性能、高性价比的物联网网关,它支持将Modbus协议(包括Modbus RTU和Modbus TCP)的数据转换为MQTT协议的数据格式
    的头像 发表于 07-29 17:59 688次阅读
    基于<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>云平台的Modbus转<b class='flag-5'>MQTT</b>网关

    mqtt协议和tcp协议区别

    MQTT协议和TCP协议在设计和应用上存在以下主要区别: 1. 起源与设计:MQTT协议诞生于1999年互联网初期,而TCP
    的头像 发表于 04-01 09:15 1541次阅读

    MQTT和Modbus的物联网网关协议的区别分析

    MQTT和Modbus的物联网网关协议区别分析 MQTT(Message Queuing Telemetry Transport)与Modbus是两种广泛应用在物联网环境中的通信协议
    的头像 发表于 03-18 16:50 754次阅读
    <b class='flag-5'>MQTT</b>和Modbus的物联网网关<b class='flag-5'>协议</b>的区别分析

    MQTT协议网关解决方案设计与实施

    MQTT协议网关是一个中间件,负责接收来自不同MQTT客户端的消息,并将这些消息转发到MQTT服务器;同时,也能接收来自MQTT服务器的消息
    的头像 发表于 03-11 14:07 461次阅读

    什么是MQTTMQTT协议中的方法

    MQTT是一种轻量级消息传递协议,由IBM开发,于1999年首次发布。它使用发布/订阅模式并在设备、服务器和应用程序之间转换消息。
    的头像 发表于 02-25 17:04 1269次阅读
    什么是<b class='flag-5'>MQTT</b>?<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>中的方法

    mqtt协议和http协议区别

    MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅模式的“轻量级”通讯协议,构建于TCP/IP协议上。它是由IBM在1999年发布的。MQT
    的头像 发表于 01-19 15:56 6797次阅读

    蓝牙协议版本解析:不同类型的蓝牙协议及其作用

    蓝牙技术作为一种无线通信技术,随着时间的推移不断发展演进。不同的蓝牙协议版本为各类设备提供了不同的功能和应用特性。本文将深入解析不同类型的蓝牙协议
    的头像 发表于 12-28 11:17 1965次阅读

    MQTT和Modbus协议的区别

    来源 | 博客园 物联网 (IoT) 不只是新技术,还是与旧技术的集成,其关键在于通信。可用的通信方法各不相同,但是,各种不同的协议在将海量 “事物” 连接到互联网时发挥着重要的作用。 本文介绍了
    的头像 发表于 12-08 15:21 2733次阅读
    <b class='flag-5'>MQTT</b>和Modbus<b class='flag-5'>协议</b>的区别

    MQTT和Modbus的物联网网关协议区别分析

    MQTT 是一个开放的轻量级机器对机器协议,专为物联网交互设计。MQTT 网络包含一个 MQTT 经纪人 (broker),负责协调 MQTT
    发表于 11-27 10:58 874次阅读
    <b class='flag-5'>MQTT</b>和Modbus的物联网网关<b class='flag-5'>协议</b>区别分析

    物联网中的MQTT协议概述

    MQTT协议已经成了物联网通信中的一个热词,今天我们一起来学习一下关于MQTT协议的一些知识。
    的头像 发表于 11-25 14:09 1274次阅读