MQTT(Quality of Service)设计了三个等级:

QoS 0:消息最多传递一次,如果当时客户端不可用,则会丢失该消息。
QoS 1:消息传递至少 1 次。
QoS 2:保证消息到达对方并且严格只到达一次。

工作原理

  • QoS 0 - 最多分发一次

当 QoS 为 0 时,消息的分发依赖于底层网络的能力。发布者只会发布一次消息,接收者不会应答消息,发布者也不会储存和重发消息。消息在这个等级下具有最高的传输效率,但可能送达一次也可能根本没送达。

  • Qos 1 - 至少分发一次

当 QoS 为 1 时,可以保证消息至少送达一次。MQTT 通过简单的 ACK 机制来保证 QoS 1。发布者会发布消息,并等待接收者的 PUBACK 报文的应答,如果在规定的时间内没有收到 PUBACK 的应答,发布者会将消息的 DUP 置为 1 并重发消息。接收者接收到 QoS 为 1 的消息时应该回应 PUBACK 报文,接收者可能会多次接受同一个消息,无论 DUP 标志如何,接收者都会将收到的消息当作一个新的消息并发送 PUBACK 报文应答。

  • QoS 2 - 只分发一次
    当 QoS 为 2 时,发布者和订阅者通过两次会话来保证消息只被传递一次,这是最高等级的服务质量,消息丢失和重复都是不可接受的。使用这个服务质量等级会有额外的开销。

发布者发布 QoS 为 2 的消息之后,会将发布的消息储存起来并等待接收者回复 PUBREC 的消息,发送者收到 PUBREC 消息后,它就可以安全丢弃掉之前的发布消息,因为它已经知道接收者成功收到了消息。发布者会保存 PUBREC 消息并应答一个 PUBREL,等待接收者回复 PUBCOMP 消息,当发送者收到 PUBCOMP 消息之后会清空之前所保存的状态。

当接收者接收到一条 QoS 为 2 的 PUBLISH 消息时,他会处理此消息并返回一条 PUBREC 进行应答。当接收者收到 PUBREL 消息之后,它会丢弃掉所有已保存的状态,并回复 PUBCOMP。

无论在传输过程中何时出现丢包,发送端都负责重发上一条消息。不管发送端是 Publisher 还是 Broker,都是如此。因此,接收端也需要对每一条命令消息都进行应答。

MQTT QoS服务质量相关推荐

  1. MQTT QoS 设计:车联网平台消息传输质量保障

    在本专题系列文章中,我们将根据 EMQ 在车联网领域的实践经验,从协议选择等理论知识,到平台架构设计等实战操作,与大家分享如何搭建一个可靠.高效.符合行业场景需求的车联网平台. 在此之前,我们已经介绍 ...

  2. MQTT QoS 详解

    本文主要介绍 MQTT 协议中 QoS(服务质量) 的详细内容. 1.概述 MQTT 协议 中规定了消息服务质量(Quality of Service),它保证了在不同的网络环境下消息传递的可靠性,Q ...

  3. MQTT Qos类型解释

    MQTT Qos类型解释 原文连接: https://blog.csdn.net/yangguosb/article/details/78653228 内容: Qos0 发送者只发送一次消息,不进行重 ...

  4. QoS服务质量二令牌桶算法及QoS业务分类

    QoS服务质量二令牌桶算法及QoS业务分类 2.3.3.DiffServ模型令牌桶算法 2.3.4.基于DiffServ模型的QoS组成 2.3.3.DiffServ模型令牌桶算法 令牌桶算法是网络流 ...

  5. QoS 服务质量介绍说明

    QoS 服务质量介绍说明 前言 QoS(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力, 是网络的一种安全机制, 是用来解决网络延迟 ...

  6. QoS服务质量三DiffServ模型报文的标记及PHB

    QoS服务质量三DiffServ模型报文的标记及PHB 2.3.5.报文的标记方法 2.3.5.1.IP Prececence 2.3.5.2.DSCP 2.3.5.3.IPv6报文 2.3.5.4. ...

  7. QoS服务质量四QoS边界行为之流量监管

    QoS服务质量四QoS边界行为之流量监管 二.QoS域边界节点的功能和行为 1.流分类 1.1.简单流分类 1.2.复杂流分类 2.流量监管 2.1.标记 2.1.1.流量监管工具CAR 2.1.1. ...

  8. QoS服务质量五QoS边界行为之流量整形

    QoS服务质量五QoS边界行为之流量整形 3.流量整形 3.1.GTS的原理 3.2.自适应流量整形 3.3流量监管和流量整形应用场景 3.4.配置限速(流量监管和流量整形) 3.4.1.配置流量整形 ...

  9. MQTT:QoS服务质量 0,1,2(Quality of Service 0, 1 2)

    原文链接:http://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels 转载链接:http://bl ...

最新文章

  1. TensorFlow(9)(项目)人马图像分类(卷积神经网络)
  2. 如何把Office365的更新从半年通道改成月度通道
  3. 怎么测内阻 恒压源_测电压表内阻的六种方法
  4. oracle几个网络,ORACLE网络的几个重点概念
  5. 【工具】Xshell安装注册以及简单属性配置
  6. HDU4472_Count
  7. 【讨论】不得不重视的问题:信息太多!信息太杂!
  8. [LAMP]——mod_security和mod_evasive模块的安装
  9. python程序变量名_python 变量名的规范
  10. iOS HTML5的JS交互
  11. plotplayer s/w hevc(h265)解码 问题
  12. charles 抓包图片显示_抓包修改工具(Charles)
  13. android声波通信demo,Android声波通信改进版
  14. 排球分组循环交叉编排_同学!中国海洋大学第一届排球联赛等你来战!
  15. Photoshop设计一款Iphone风格导航菜单教程
  16. 干货!如何快速拥有自己的商城APP
  17. 电商行业特点以及理解电商的模式
  18. Excel实现自动显示日期且不自动改变
  19. Mac M1 安装Maven
  20. 关于sentinel LDK加密war包实现应用加密的使用方法

热门文章

  1. 20170406 bpi_a64_android的编译配置文件排版v1.2.txt
  2. 关于使用Aravis进行实时图像采集
  3. 【程序设计】环境变量
  4. html 表格中加按钮,HTML 表单按钮
  5. 第2章 爬虫系列-爬取交易数据
  6. PTC自恢复保险丝应用和选型
  7. [php]PHP错误处理
  8. 云呐|公司固定资产如何管理,单位固定资产管理办法
  9. Verilog流水线设计
  10. maven介绍 极客学院