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

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

    关注

    2870

    文章

    41639

    浏览量

    358410
  • 智能家居
    +关注

    关注

    1912

    文章

    9153

    浏览量

    179384
  • MQTT
    +关注

    关注

    5

    文章

    538

    浏览量

    21981
收藏 人收藏

    评论

    相关推荐

    mqtt协议和tcp协议区别

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

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

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

    什么是MQTTMQTT协议中的方法

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

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

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

    物联网中的MQTT协议概述

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

    MQTT协议和EDP协议该怎么选?

    OneNet支持HTTP,MQTT和EDP,HTTP好像不能下发指令,MQTT和EDP可以,我需要控制一个简单的开关,用那个协议更合理一些。
    发表于 11-09 07:18

    移动nb—mqtt协议介绍

    MQTT是客户端-服务器发布/订阅消息传输协议。它重量轻,开放,简单并且被设计为易于实现。这些特性使其非常适合使用 在许多情况下,包括受约束的环境,例如在Machine中进行通信需要小代码占用的机器
    发表于 09-26 07:44

    超干的干货来了!一文了解HTTP协议

    今天我们来了解另一个应用层协议——HTTP协议。推荐阅读《MQTT协议详解概念
    的头像 发表于 08-04 08:24 2139次阅读
    超干的干货来了!一文了解HTTP<b class='flag-5'>协议</b>

    MQTT发布特性有哪些

    MQTT 发布/订阅特性 从以上实例我们可以看到,MQTT 通信的核心枢纽是 MQTT 服务端,它负责将 MQTT 客户端发送来的信息传递给
    的头像 发表于 07-30 15:16 484次阅读

    MQTT的主要特性有哪些

    MQTT 的主要特性 MQTT 协议是为工作在低带宽、不可靠网络的远程传感器和控制设备之间的通讯而设计的协议,它具 有以下主要的几项
    的头像 发表于 07-30 14:42 1087次阅读

    MQTT协议概念和主要特性 MQTT协议于物联网有何好处

    MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是ISO标准下基于发布/订阅方式的轻量级消息协议MQTT通常使用TCP / IP(传输控制
    的头像 发表于 07-28 11:21 1197次阅读
    <b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>的<b class='flag-5'>概念</b>和主要<b class='flag-5'>特性</b> <b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>于物联网有何好处

    深入浅出地学习MQTT协议

    IBM公司的安迪·斯坦福-克拉克及Cirrus Link公司的阿兰·尼普于1999年撰写了MQTT协议的第一个版本。在2013年IBM公司向结构化资讯标准促进组织提交了MQTT 3.1
    的头像 发表于 05-25 10:17 710次阅读
    深入浅出地学习<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>

    什么是mqtt协议MQTT支持几种应用模式?

    最近项目中用到了MQTT,感觉挺优秀的一种协议,所以这里分享一些相关的知识。
    的头像 发表于 05-22 09:28 2977次阅读

    MQTT 5协议中的基础更改(二)

    上期文章中给大家介绍了MQTT 5协议中基础更改的信息和CONNACK返回码,本篇文章我们继续介绍MQTT 5协议中其他新功能的细节。
    的头像 发表于 05-16 10:46 361次阅读
    <b class='flag-5'>MQTT</b> 5<b class='flag-5'>协议</b>中的基础更改(二)

    虹科干货 | MQTT 5协议中的基础更改(二)

    IIoTMQTT5协议中的基础更改(二)上期文章中给大家介绍了MQTT规范版本5中基础更改的信息和CONNACK返回码,本篇文章我们继续介绍MQTT5
    的头像 发表于 05-15 09:40 378次阅读
    虹科干货 | <b class='flag-5'>MQTT</b> 5<b class='flag-5'>协议</b>中的基础更改(二)