MQTT 控制报文 - PINGREQ心跳报文,PINGRESP - 第4章

目录

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 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
byte 1MQTT 报文的类型(12 - PINGREQ)Reserved 保留位
12,0xC - PINGREQ0000
byte 2剩余长度
0x00

 

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

PINGREQ 没有 可变报头 字段

PINGREQ 没有 有效载荷 字段

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

 

 

 

4.2 PINGRESP - 心跳响应

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

 

4.2.1 固定报头

 

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

 

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

PINGRESP 没有 可变报头 字段

PINGRESP 没有 有效载荷 字段

 

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值