1. 威九国际

      客服热线

      400-9600-775

      物联网云平台

      设备接入平台

      样机申请

      问答中心

      Answer Center

      下载中心

      视频中心

      常见问题

      售后服务

      报文是什么意思?mqtt协议报文格式详解

      时间:2022-11-05 14:26:42 

      点击:8710 

      关键词:报文,mqtt,报文格式 

      问题:
      报文是什么意思?mqtt协议报文格式详解

      回答:
      报文是网络中交换和传输的数据单元,也是网络传输的单元。报文包含了将要发送的完整的数据信息,其长短不需一致。报文在传输过程中会不断地封装成分组、包、帧来传输,封装的方式就是添加一些控制信息组成的首部,那就是报文头。
       
      mqtt协议报文结构
       
      固件报头Fixed header
       
      最多一次(0), 发出去了就不管了
       
      至少一次(1),发出必须要等接收方回复ack,没有回复,那么就找时机重发,接收方需要处理去重
       
      准确一次(2),保证只发一次,需要持久化,重复消息自动去重,并且只有当接收方把消息投递出去,才算完成
       
      控制报文的类型 Control Packet type,14种有效类型: [connect, publish, subscribe,.....]
       
      第一个1个字节前4位,
       
      标志Flags,
       
      第一个1个字节后4位,
       
      DUP 控制报文是否为重复报文,只有PUBLISH才会有DUP为1的情况,其他的报文类型都是0
       
      QoS 控制PUBLISH报文的质量等级,
       
      publish
       
      publish - pubrec
       
      publish - pubrec - pubrel - pubcomp
       
      RETAIN,
       
      每个topic只有唯一的保留消息,每个client订阅的时候,会立刻读取到保留消息
       
      如果订阅者无法与broker连接,可以顺利获得retain消息,让订阅者下次连接订阅成功时一次接受所有的内容
       
      发布者定时发布retain消息,订阅者可以根据retain消息的变化推测发布者状态
       
      剩余长度 Remaining Length
       
      从第二个字节开始,最大长度是4个字节,低位在前,高位在后,顺利获得每一个字节第一位[0不需要,1需要]确定是否需要继续往后继续计算,也就是最多可以存储256M, 最大值16进制为:0xFF,0xFF,0xFF,0x7F
       
      可变报头Variable header
       
      可变报文部分是根据不同的报文类型,这部分的内容也不同
       
      比如: 连接报文会有用户名密码标识,遗嘱标识,是否清理会话标识等,发布报文会有topic信息
       
      报文标识符 PackageIdentifier [messageId]
       
      标识符作用:
       
      2个字节最大65535
       
      这些报文类型需要:PUBLISH(QoS > 0), PUBACK, PUBREL, PUBCOMP, SUBSCRIBE,SUBACK, UNSUSCRIBE,UNSUBACK
       
      重发使用相同的标识符
       
      确认后释放标识符
       
      有效载荷Payload
       
      以下这些报文类型才有payload:
       
      CONNECT(用户名密码,遗嘱消息,遗嘱topic,客户端标识),
       
      PUBLISH(可有可无,根据实际情况),
       
      SUBSCRIBE(订阅的topic信息集合),
       
      SUBACK(按顺序返回的订阅的topic的报文质量等级集合)
       
      UNSUBSCRIBE(取消订阅的topic信息集合)
       
      报文类型处理逻辑(接收方的处理逻辑)
       
      CONNECT 连接服务端 客户端--服务端
       
      报文解析错误:
       
      如果报文解析错误,连接失败
       
      如果解析的报文标识符不合法,连接失败
       
      报文解析成功
       
      重发QoS1的未完成的消息
       
      重发QoS2的未完成的消息
       
      连接成功,保存会话信息
       
      连接成功,回会CONNACK报文给客户端
       
      如果之前保存的会话信息,cleanSession == true,需要清空保存的session,订阅信息,需要重发的发布QoS1报文,需要重发的发布的QoS2的报文
       
      关闭之前的保存的会话
       
      如果报文标识符不存在,连接失败
       
      如果用户密码验证失败,连接失败
       
      如果是会话中已经存在该连接,说明是发送重复的连接报文
       
      检查心跳包,将已经存在的心跳包的间隔时间,更新成客户端指定的时间
       
      如果连接报文中存在遗嘱消息,需要将遗嘱消息保存在本次连接的会话对象中
       
      如果本次连接的报文cleanSession == false,也就是不清理会话,如果是客户端重连的,可能存在服务端有部分信息没有发送出去,需要重新发送给该客户端
       
      CONNACK 确认连接请求 服务端--客户端
       
      客户端确认连接成功
       
      PUBLISH 发布消息 双向
       
      客户端发送给服务端,是为了将报文分发到其他订阅匹配的客户端
       
      服务端发送给客户端,是为了发消息给匹配订阅的客户端
       
      根据不同的质量等级进行不同的回复报文
       
      QoS 0 直接publish消息即可
       
      QoS 1 PUBLISH消息之后,还需要回复PUBACK给来源客户端
       
      Qos 2 PUBLISH消息之后,还需要回复PUBREC给来源客户端 (后续客户端端发送PUBREL,再服务端发送PUBCOMP完成整个生命周期)
       
      如果是保留消息,需要覆盖之前保存的保留消息
       
      PUBACK 发布确认 双向
       
      带着messageId回复发布方,通知发布成功
       
      PUBAREC 发布收到 双向
       
      带着messageId回复发布方,通知收到了发布报文
       
      PUBREL 发布释放 双向
       
      带着messageId回复接收方,可以释放报文
       
      PUBCOMP 发布完成 双向
       
      带着messageId回复发布方,可以发布完成了
       
      SUBSCRIBE 订阅主题 客户端--服务端
       
      根据订阅的主题列表,
       
      保存订阅信息
       
      回复SUBACK,按顺序返回订阅报文中的报文质量等级集合
       
      根据订阅的主题,处理服务端保留信息,立即PUBLISH给客户端
       
      SUBACK 订阅确认 服务端-- 客户端
       
      客户端确认订阅成功
       
      UNSUBSCRIBE 取消订阅 客户端--服务端
       
      移除掉该客户端保存的订阅主题
       
      回复UNSUBACK报文
       
      UNSUBACK 订阅确认 服务端-- 客户端
       
      客户端确认取消订阅成功
       
      PINGREQ 心跳请求 客户端--服务端
       
      返回客户端PINGRESP报文
       
      PINGRESP 心跳响应 服务端--客户端
       
      收到报文确认服务端正常

       

      免责声明:本网站部分文章、图片等信息来源于网络,版权归原作者平台所有,仅用于学术分享,如不慎侵犯了你的权益,请联系我们,我们将做删除处理!


      产品系列

      工业智能网关
      威九国际·WG系列工业智能网关是一款支持采集各种PLC,仪器仪表,水环保,电力设备,CNC等各种工业设备数据,具有协议解析,边缘计算的高可靠性工业智能网关,是构建工业互联网系统的核心边缘节点。
      分析更多
      工业数采终端
      威九国际·WD系列工业数采终端,主要实现对现场工业设备的数字量DI、DO,模拟量AI,AO的采集和控制,实现LORA本地组网和4G数据上云的功能,从而实现对现场传感器、执行组织、指示灯等数采和控制。
      LoRa终端
      LoRa网关
      DTU
      RTU
      4G无线IO
      WIFI无线IO
      分析更多
      网段隔离器
      威九国际WC系列网段隔离器适用于生产网络对 PLC、HMI、CNC、DCS、MES等网络通讯和数据采集,兼有跨网段隔离和IP转换的功能。车间多个设备,如果有不同网段的IP地址,则可以统一成同一网段的IP地址,进行设备(PLC、CNC)的在线编程、数据采集、远程管理等各种跨网段访问。
      IP重命名
      跨网段访问
      网络隔离防护
      VPN组网
      NAT转换
      工业设计
      分析更多
      工业路由器
      威九国际·WR系列工业无线路由,是一款支持5G/4G/WIFI/以太网等方式联网接入,支持5G/4G组网、WIFI组网、VPN组网,为现场设备给予低时延、高可靠、高安全的网络接入,从而实现大规模设备组网应用。
      5G/4G蜂窝组网
      WiFi本地组网
      VPN虚拟组网
      断网重连
      远程管理
      高安全可靠
      分析更多
      工业设备数据平台
      威九国际·工业设备数据平台是一款高并发的工业设备远程管理和工业设备数据可视化的云平台,广泛应用于智能工厂数采中台、远程设备运营管理平台、各行业的物联网数据云平台等。
      海量设备接入
      高效数据采集
      丰富组态控件
      强大的数据分析
      预防式设备维护
      丰富的API接口
      分析更多
      设备远程维护系统
      威九国际·设备远程维护系统是一套实现对分散式设备远程维护和运营的软硬件系统,为工程师搭建一条通往远端设备现场的安全数据通道,实现对现场设备(PLC)的远程配置、远程诊断、远程调试和远程升级程序。
      设备远程配置
      设备远程调试
      远程上下载程序
      设备远程维护
      设备远程监控
      设备预防式维护
      分析更多

      威九国际,助您开启工业数字化和智能化之路

      申请样机
      在线
      咨询
      免费
      试用