当前位置: 首页 > news >正文

MQTT控制报文

MQTT控制报文

控制报文简介

报文是网络中交换与传输的数据最小单元,通俗来讲就是站点一次性要发送的数据块。它包含了将要发送的完整数据信息,其长短不一致,长度不限且可变。MQTT 客户端和服务端通过交换控制报文来完成它们的工作,比如订阅主题和发布消息。

常见控制报文

MQTT 目前定义了 15 种控制报文类型,如果按照功能进行分类,我们可以将这些报文分为 连接发布订阅 三个类别。
在这里插入图片描述

控制报文格式

在 MQTT 中,无论什么类型的控制报文,均由 固定报头、可变报头和有效载荷 三个部分组成。

  • 固定报头 固定存在于所有控制报文中
  • 可变报头和有效载荷是否存在以及它们的内容则取决于具体的报文类型。

例如 :

  • 心跳连接的 PINGREQ 报文就只有一个固定报头
  • 传递消息的 PUBLISH 报文则包含了这三个部分

在这里插入图片描述

固定报头

固定报头由 报文类型标识位报文剩余长度 三个字段组成。
在这里插入图片描述

报文类型

占4个bit位,是一个无符号的整数

常见的报文类型:https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901022

标识位

占4个bit位,不过到 MQTT 5.0 为止,只有 PUBLISH 报文的这四个比特位被赋予了明确的含义:

  • Bit 3:DUP,表示当前 PUBLISH 报文是否是一个重传的报文。

  • Bit 2,1:QoS,表示当前 PUBLISH 报文使用的服务质量等级。

  • Bit 0:Retain,表示当前 PUBLISH 报文是否是一个保留消息。

其他所有的报文中,这 4 位都仍是保留的。

剩余长度

剩余长度指示了当前控制报文剩余部分的字节数,也就是可变报头和有效载荷这两个部分的长度。MQTT 控制报文的总长度= 固定报头的长度 + 剩余长度。

在这里插入图片描述

可变报头

可变报头 的内容 取决于具体的报文类型。

举例:

  • CONNECT 报文的可变报头按顺序包含了协议名协议级别连接标识Keep Alive属性 这五个字段。

在这里插入图片描述

  • PUBLISH 报文的可变报头则按顺序包含了主题名报文标识符属性这三个字段。

在这里插入图片描述
属性是 MQTT 5.0 引入的一个概念。属性字段基本上都是可变报头的最后一部分,由属性长度紧随其后的一组属性组成,这里的属性长度指的是后面所有属性的总长度
在这里插入图片描述
所有的属性都是可选的,因为它们通常都有一个默认值,如果没有任何属性,那么属性长度的值就为0。属性通常都是为了某个专门的用途而设计的,不同的报文所支持的属性都是不一样的,具体的对应情况可以查看官网地址:不同的报文所支持的属性查看连接

有效载荷

有效载荷是用于实现对应报文的核心功能。

举例:

  • PUBLISH 报文中,Payload 用于承载具体的应用消息内容。(PUBLISH 报文最核心的功能)

  • SUBSCRIBE 报文中,Payload 包含了想要订阅的主题以及对应的订阅选项。(SUBSCRIBE 报文最核心的功能)

报文验证

连接相关

  • 建立连接

在这里插入图片描述

  • 心跳检测

在这里插入图片描述

  • 断开连接

在这里插入图片描述

主题相关

  • 订阅主题

在这里插入图片描述

  • 取消订阅

在这里插入图片描述

消息推送

  • Qos=0

在这里插入图片描述

  • QoS=1

在这里插入图片描述

  • QoS=2

在这里插入图片描述

相关文章:

  • 初学c语言18(自定义类型:结构体)
  • 硬件开发复盘实战指南
  • DiagramJS设计原理解读(二)
  • MVC和MVVM架构的区别
  • PyInstaller 如何在mac电脑上生成在window上可执行的exe文件
  • 项目开发中如何Git如何保持官方补丁更新
  • python与mysql怎么完成大量的数据交互?
  • 【Python/Tkinter】实现程序菜单
  • 海康相机---采集图像
  • PTA:双端队列
  • 【T2I】Controllable Generation with Text-to-ImageDiffusion Models: A Survey
  • 中小制造企业网络安全防护指南
  • 2025网络出版服务许可证申请保姆级教程
  • JavaScriptAPIs学习day3--事件高级
  • 对于从事FPGA行业的人来说,需要掌握哪些知识
  • 5G 网络中 DNN 的深度解析:从基础概念到核心应用
  • 第十章 ICU组件配置
  • hicFindTADs生成的domains.bed文件解析
  • 【25软考网工】第七章(4)DHCP、DNS
  • 【Python】开发工具uv
  • 定制网络接口报警灯生产厂商/温州seo优化公司
  • 电子商务网站建设系统特点/滕州百度推广
  • 廊坊盘古网站建设/爱站网长尾关键词挖掘查询工具
  • 怎么做短链接网站/爱站网关键词怎么挖掘
  • 微官网和公众号的区别/奇零seo赚钱培训
  • 网站管理 上传模板/武汉seo排名扣费