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

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

3天内不再提示

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

宏集科技 2023-05-15 09:40 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

上期文章中给大家介绍了MQTT规范版本5中基础更改的信息和CONNACK返回码,本篇文章我们继续介绍MQTT5协议中的基础更改中其他新功能的细节描述。

虹 科 干 货

01

干净启动

MQTT 3.1.1的其中一个主流功能是MQTT客户端使用清除会话(cleanSession),即这些客户端可以通过临时连接的方式订阅消息或根本不订阅消息。当连接到MQTT代理时,客户端必须选择发送一个标注启用或禁用清除会话的CONNECT数据包。

在MQTT客户端使用清除会话后,一旦出现底层TCP连接断开、或客户端决定断开与代理的连接的情况,代理将会丢弃MQTT客户端的所有数据。此外,如果在代理上存在与客户端标识符关联的先前会话,清除会话CONNECT数据包将强制MQTT代理删除历史数据。

在MQTT v5中,客户端可以选择使用干净启动(Clean Start)(由 CONNECT 消息中的“干净启动”标志指示)。使用这个标志时,代理会丢弃任何以前的会话数据,客户端则会开启新的会话。关闭客户端和服务器之间的 TCP 连接后,会话不会被自动清理。要在客户端断开连接后触发会话删除,必须将“会话到期间隔”的新头字段设置为值 0。

新的Clean Start功能简化了 MQTT 的会话处理,因为它提供了更大的灵活性,并且比 cleanSession/持久会话概念更易于实现。使用 MQTT 5,除非“会话到期间隔”为 0,否则所有会话都是持久的。在超时后或客户端使用干净启动重新连接时,将删除会话。

额外的MQTT数据包

02

MQTT 5引入了一个新的MQTT数据包:AUTH数据包。这个新的数据包对于实现非简单的认证机制非常有用。

AUTH数据包可以在建立连接后由MQTT代理和客户端发送,以使用复杂的质询/响应认证方法(如SASL框架中定义的SCRAM或Kerberos)。也可以用于物联网的最先进的认证方法,如OAuth。这个数据包还允许在不关闭连接的情况下对MQTT客户端进行重新认证。

03

新的数据类型: UTF-8字符串对

自定义报头的出现也需要引入一种新的数据类型:UTF-8字符串对。这种字符串对本质上是一个键-值结构,键和值都是字符串数据类型,这种数据类型目前只用于自定义报头。

有了这种新的数据类型,MQTT在网络上共有7种不同的数据类型可以使用:

Bit

Two Byte Integer

Four Byte Integer

UTF-8 Encoded String

Variable Byte Integer

Binary Data

UTF-8 String Pair

大多数用户通常在其 MQTT 库的 API 中使用二进制数据和 UTF-8 编码字符串。在 MQTT 5 中,UTF-8 字符串对也经常被使用。所有其他数据类型对用户是隐藏的,但会被MQTT客户端和代理制作成网络上有效的MQTT数据包。

双向的DISCONNECT数据包

04

在MQTT 3.1.1中,客户端可以通过在关闭底层TCP连接之前,发送一个DISCONNECT数据包来表明它想断开连接。MQTT代理没有办法通知MQTT客户端发生了什么,并且代理将关闭TCP连接。


这一点在新的MQTT5中有所改变,现在允许代理在关闭套接字之前发送一个“MQTT DISCONNECT”包。客户端现在能够解释它被断开连接的原因并采取相应的行动,代理不需要指出确切的原因(例如出于安全原因)。但至少对于开发中的应用来说,这有助于找出代理关闭连接的原因。


当然,DISCONNECT数据包可以携带Reason Codes,所以很容易指出断开连接的原因(例如在无效权限的情况下)。

05

对QoS 1和2的消息不进行重试

MQTT客户端使用常设的TCP(或具有相同保证的类似协议)连接作为基础传输。TCP连接正常时提供双向连接,并且能保证消息符合恰好一次和按顺序传输,因此所有客户端或代理发送的MQTT数据包都会到达另一端。如果TCP连接中断,而消息正在进行时,QoS 1和2会通过多个TCP 连接提供消息传递保证

MQTT 3.1.1允许在TCP连接正常时重新交付MQTT消息。实际上,这可能会导致过载的MQTT客户端得到更多的过载。试想一下,一个MQTT客户端从MQTT代理处收到一个消息,需要11秒来处理这个消息(并且在处理后会确认数据包)。现在假设,代理会在10秒的超时后重新发送消息。这种方法没有任何优势,它只是占用了带宽,并加重了MQTT客户端的负荷。

使用没有用户名的密码

06

MQTT 3.1.1要求MQTT客户端在CONNECT数据包中使用密码时要发送一个用户名。对于某些用例来说,如果没有用户名是非常不方便的。使用 OAuth就是一个很好的例子,它使用 JSON Web 令牌作为唯一的身份验证和授权信息。在 MQTT 3.1.1 中使用此类令牌时,经常使用静态用户名,因为唯一的相关信息在密码字段中。

虽然MQTT 5 中有更简便的方式来携带令牌(例如通过 AUTH 数据包),但仍然可以使用 CONNECT 数据包的密码字段。现在,用户只需使用密码字段,不再需要填写用户名。

07

虹科HiveMQ MQTT解决方案

虹科HiveMQ 是一个基于 MQTT 数据传输的通信平台,旨在将数据快速、高效、可靠地传递给连接的物联网设备,HiveMQ 使用 MQTT 协议在设备和企业平台之间进行实时、双向的数据推送。

虹科HiveMQ 的建立是为了解决企业在构建新的物联网应用时面临的一些关键技术挑战,包括:

构建可靠、可扩展的关键业务物联网应用

快速的数据交付,以满足终端用户对响应式物联网产品的期望

通过有效利用硬件、网络和云资源降低运营成本

将物联网数据整合到现有的企业系统中

虹科HiveMQ 提供免费版、专业版、企业版 MQTT Broker 产品,并提供 Kafka、企业安全及 MQTT Broker 桥接三种企业级扩展套件,HiveMQ 还提供高效的 MQTT 客户端及云平台,多方位满足用户需求。

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

    关注

    1

    文章

    305

    浏览量

    17415
  • MQTT
    +关注

    关注

    5

    文章

    724

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MQTT协议为什么成为物联网协议

    MQTT协议之所以成为物联网领域的核心通信协议,主要得益于其 轻量级设计、高效资源利用、灵活可靠的消息传递机制、强大的安全支持以及广泛的生态兼容性 ,这些特性精准解决了物联网设备在资源受限、网络
    的头像 发表于 12-10 09:15 96次阅读

    MQTT网关支持5G通信吗

    MQTT网关可以支持5G通信 ,且在实际应用5G与MQTT协议的结合为物联网领域带来了显著优
    的头像 发表于 12-08 11:13 101次阅读

    PSI5传感器编程应用:汽车可靠数据传输的实现方案

    PSI5传感器编程应用汽车可靠数据传输的实现方案在汽车发动机舱的高温振动、工程机械的复杂工况等场景,压力、转速、温度等关键数据的精准传输,直接决定了ECU(电子控制单元)的控制精
    的头像 发表于 12-04 17:03 100次阅读
    <b class='flag-5'>虹</b><b class='flag-5'>科</b>PSI<b class='flag-5'>5</b>传感器编程应用:汽车可靠数据传输的实现方案

    动态 | ×长城汽车技术交流日圆满落幕!

    11月25日,携手长城汽车在保定·长城技术中心成功举办“X长城汽车技术交流日”系列workshop活动,与长城技术中心的各位工程师共同展望行业发展前景,为双方未来更多的生态合作
    的头像 发表于 11-28 17:07 1793次阅读
    <b class='flag-5'>虹</b><b class='flag-5'>科</b>动态 | <b class='flag-5'>虹</b><b class='flag-5'>科</b>×长城汽车技术交流日圆满落幕!

    圆满收官 | CAN总线专题全系列直播精华回顾已上线!

    CAN总线系列直播圆满收官!HongKeWebinars作为汽车电子通信领域的核心协议,CAN总线技术正随着智能驾驶、车联网等趋势加速迭代。为帮助工程师深入掌握CAN总线技术,
    的头像 发表于 11-24 17:55 2545次阅读
    圆满收官 | <b class='flag-5'>虹</b><b class='flag-5'>科</b>CAN总线专题全系列直播精华回顾已上线!

    案例 | 矿业数字化转型:owa5X如何赢得日立Wenco信任?

    owa5X用于采矿业的远程信息处理方案矿业数字化转型不仅是技术升级,更是一场信任构建的历程。选择何种技术伙伴,如何确保系统在恶劣环境下稳定可靠,是每一个矿业企业决策者必须审慎考虑的问题。在这
    的头像 发表于 11-18 17:03 385次阅读
    <b class='flag-5'>虹</b><b class='flag-5'>科</b>案例 | 矿业数字化转型:<b class='flag-5'>虹</b><b class='flag-5'>科</b>owa<b class='flag-5'>5</b>X如何赢得日立Wenco信任?

    直播回顾 | 硬核干货放送,CAN总线应用层直播助您告别低效联调,破解车载网络开发核心难题

    直播想要系统学习CAN总线知识,提升开发效率和项目交付质量?想要了解行业成功案例和高效工具链,帮助团队评估新技术方案、控制风险?欢迎关注「CAN总线专题系列」课程!8月
    的头像 发表于 09-17 17:39 603次阅读
    直播回顾 | 硬核<b class='flag-5'>干货</b>放送,<b class='flag-5'>虹</b><b class='flag-5'>科</b>CAN总线应用层直播助您告别低效联调,破解车载网络开发核心难题

    MQTT_协议中文资料

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

    GraniStudio :MQTT 协议的深度剖析

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

    分享 | 赋能现代化矿业:Owasys坚固型车载通信终端方案

    导读在采矿行业,设备运行环境极端恶劣——高温、严寒、粉尘、震动、冲击无处不在。确保关键设备(如矿用卡车、挖掘机、钻机等)的可靠通信、精准定位与高效管理,是保障矿山安全运营和提升生产力的核心挑战。Owasys专为采矿行业设计的坚固型车载通信终端——
    的头像 发表于 06-24 17:04 430次阅读
    <b class='flag-5'>虹</b><b class='flag-5'>科</b>分享 | 赋能现代化矿业:<b class='flag-5'>虹</b><b class='flag-5'>科</b>Owasys坚固型车载通信终端方案

    MQTT为何成为物联网协议

    的优势,以下为你详细介绍: 轻量级特性,适配资源受限设备 协议头开销小 :MQTT协议头非常简洁,相比其他协议,它在数据传输时添加的额外信息极少。例如,在一个简单的物联网设备向服务器发
    的头像 发表于 05-20 09:54 611次阅读

    直播回顾 | 核心协议精讲!TSN基础知识理论培训,带你划重点!

    当工业4.0与智能汽车、航空航天技术碰撞实时性、确定性通信成为跨越行业的共同需求4月1日直播间TSN工程师罗工带来「TSN基础知识理论培训」带大家系统回顾了TSN技术发展历程深
    的头像 发表于 04-02 17:33 761次阅读
    直播回顾 | 核心<b class='flag-5'>协议</b>精讲!TSN基础知识理论培训,<b class='flag-5'>虹</b><b class='flag-5'>科</b>带你划重点!

    直播回放 | IO-Link技术概述与IO-Link OEM

    「一站式通讯解决方案」系列直播第1期圆满落幕!本期主题为「IO-Link技术概述与IO-LinkOEM」感谢各位朋友的热情参与!本期直播
    的头像 发表于 02-19 17:34 1151次阅读
    <b class='flag-5'>虹</b><b class='flag-5'>科</b>直播回放 | IO-Link技术概述与<b class='flag-5'>虹</b><b class='flag-5'>科</b>IO-Link OEM

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

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

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

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