目录

4.1 PINGREQ - 心跳请求

4.1.1 固定报头

4.2 PINGRESP - 心跳响应

4.2.1 固定报头


4.1 PINGREQ - 心跳请求

客户端发送PINGREQ报文给服务端的。用于:

  1. 在没有任何其它控制报文从客户端发给服务的时,告知服务端客户端还活着。
  2. 请求服务端发送 响应确认它还活着。
  3. 使用网络以确认网络连接没有断开。

PINGREQ 与 CONNECT 可变报头中的 保持连接 Keep Alive 字段有非常大的关联。

保持连接(Keep Alive)是一个以秒为单位的时间间隔,表示为一个16位的字,它是指在客户端传输完成一个控制报文的时刻到发送下一个报文的时刻,两者之间允许空闲的最大时间间隔。客户端负责保证控制报文发送的时间间隔不超过保持连接的值。如果没有任何其它的控制报文可以发送,客户端必须发送一个PINGREQ报文。

不管保持连接的值是多少,客户端任何时候都可以发送PINGREQ报文,并且使用PINGRESP报文判断网络和服务端的活动状态。

如果保持连接的值非零,并且服务端在一点五倍的保持连接时间内没有收到客户端的PINGREQ控制报文,它必须断开客户端的网络连接,认为网络连接已断开。

客户端发送了PINGREQ报文之后,如果在合理的时间内仍没有收到PINGRESP报文,它应该关闭到服务端的网络连接。

保持连接的实际值是由应用指定的,一般是几分钟。允许的最大值是18小时12分15秒。

PINGREQ 只有固定报头字段,且报文长度只有 2 字节。

4.1.1 固定报头

PINGREQ 固定报头 的数据格式
  Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
byte 1 MQTT 报文的类型(12 - PINGREQ) Reserved 保留位
12,0xC - PINGREQ 0 0 0 0
byte 2 剩余长度
0x00

PINGREQ 只有固定报头字段,且报文长度只有 2 字节。

PINGREQ 没有 可变报头 字段。

PINGREQ 没有 有效载荷 字段。

响应:服务端必须发送 PINGRESP报文响应客户端的PINGREQ报文。

4.2 PINGRESP - 心跳响应

服务端发送PINGRESP报文响应客户端的PINGREQ报文。表示服务端还活着。

4.2.1 固定报头

PINGRESP 固定报头 的数据格式
  Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
byte 1 MQTT 报文的类型(13 - PINGRESP) Reserved 保留位
13,0xD - PINGRESP 0 0 0 0
byte 2 剩余长度
0x00

PINGRESP 只有固定报头字段,且报文长度只有 2 字节。

PINGRESP 没有 可变报头 字段。

PINGRESP 没有 有效载荷 字段。

MQTT 控制报文 - PINGREQ心跳报文,PINGRESP - 第4章相关推荐

  1. CANopen | 网络管理NMT01 - 节点上线报文与心跳报文

    文章目录 一.前言 二.NMT节点上线报文 三.NMT心跳报文 一.前言 CANopen协议的NMT管理报文既是最简单又是最重要的知识点,为什么网络管理NMT这么重要? 1.CANopen从站上电后, ...

  2. MQTT协议详解 三、MQTT控制包(CONNECT)

    文章目录 系列文章目录 前言 CONNECT(客户端请求连接服务端) 一.固定包头(2字节) 二.可变包头(10字节) 协议名字(6字节) 协议等级(1字节) 连接标识(1字节) Clean Sess ...

  3. MQTT 控制报文类型、功能及格式(报文结构) - 第2章

    目录 2.1 MQTT 控制报文的结构 2.2 固定报头 2.2.1 控制报文的类型 2.2.2 控制报文类型的标志位 2.2.3 剩余长度 2.3 可变报头 2.4 有效载荷 2.1 MQTT 控制 ...

  4. MQTT——控制报文格式

    了解控制报文格式是学习MQTT中,笔者认为最为重要的一个知识点.MQTT的所有行为都离不开他.控制报文可以分为三个部分组成,分别为:固定报头.可以变报头.有效载荷部分. 注意:上面的说的报文的类型.是 ...

  5. MQTT 控制报文 - SUBSCRIBE订阅报文,SUBACK,UNSUBSCRIBE,UNSUBACK - 第5章

    目录 5.1 SUBSCRIBE - 订阅主题报文 5.1.1 固定报头 5.1.2 可变报头 5.1.3 有效载荷 5.2 SUBACK - 订阅确认 5.2.1 固定报头 5.2.2 可变报头 5 ...

  6. http发送16进制报文_阿里云物联网平台使用心得(25)MQTT协议详解UNSUBSCRIBE报文...

    题目 大家好,超子又和大家见面了,超子我能力有限,水平不高,有什么错误的地方,欢迎板砖.超子今天给大家介绍一下UNSUBSCRIBE报文. UNSUBSCRIBE报文 从上图中可知,UNSUBSCRI ...

  7. CANopen | 对象字典OD 02 - 修改CANopen节点的心跳报文发送间隔

    文章目录 一.前言 二.实验的目的 三.对象字典OD 3.1.Slave.od 3.2.Slave1.c 四.CAN盒子(收发器) 五.细节补充 5.1.Slave1.od文件的作用 一.前言 通过修 ...

  8. MQTT协议详解 二、MQTT控制包格式

    文章目录 系列文章目录 前言 一.MQTT控制包格式 二.固定包头 控制包类型 控制包类型标识 剩余长度 三.可变包头 数据包标识 四.载荷 系列文章目录 MQTT协议详解 一.MQTT简介 MQTT ...

  9. 数据帧,数据包,报文段,报文,分组,数据包的概念和区别

    应用层--消息 传输层--数据段(segment) 网络层--分组.数据包(packet) 链路层--帧(frame) 物理层--P-PDU(bit) 分组.包,packet,信息在互联网当中传输的单 ...

最新文章

  1. vw实现移动端自适应页面
  2. Delphi指针大全
  3. python参数估计_用python求参数估计的置信区间
  4. 12306订票助手更新
  5. (转)HttpURLConnection与 HttpClient 区别
  6. [css] body{height:100%}和html,body{height:100%}有什么区别?为什么html要设置height:100%呢,html不就是整个窗口吗?
  7. 计算机音乐奔跑,跑起来!100首最适合跑步的音乐
  8. 右侧快速入口滑动时左侧跟着变化
  9. 1000道Python题库系列分享25(40道Pandas客观题)
  10. Android 常用 adb 命令总结【转】
  11. Theme相关:button的效果不显示
  12. kafka中的数据发送保障
  13. 基于 MVP + Glide + Retrofit + RxJava2.0 + butterknife 的C9MJ TV App
  14. WordPress优化教程让WordPress打开速度更快
  15. 从删库到恢复到跑不了路-数据恢复工程师解说顺丰删库事件
  16. PHP获取身份证年龄和性别
  17. Linux 虚拟内存
  18. 守望先锋地图工坊分享合集
  19. 中文转换为日文的几点注意事项
  20. 从零开始——Emacs 安装配置使用教程 2015

热门文章

  1. stm32端口复用和重映射
  2. 九尾之火---算法生成的动画图像
  3. 海量数据库解决方案2011022101
  4. 【Java从0到架构师】Zookeeper 应用 - Java 客户端操作、服务器动态感知、分布式锁业务处理
  5. 【Java从0到架构师】交错的日志系统、SpringBoot 集成日志框架
  6. PyQt5: This application failed to start because it could not find or load the Qt platform plugin
  7. 【Python笔记】datetime 模块用法
  8. 信息系统项目管理06——项目进度管理
  9. 【网络安全面试题】——文件目录穿越实现特权文件读取
  10. linux_从windows到ubuntu再到manjaro