一. 订阅Subscribe数据包

 

      1. QoS=0(1,2),抓包分析:

MQTT通讯协议分析(二): 订阅Subscribe

MQTT通讯协议分析(二): 订阅Subscribe

分析:

    Subscribe 报文固定报头

MQTT通讯协议分析(二): 订阅Subscribe

     82   :   其中bit7~bit4 :8 对应消息类型为 Subscribe, bit3~bit0: 2 保留位

     09   :   剩余长度

   Subscribe 报文可变报头MQTT通讯协议分析(二): 订阅Subscribe

     00   :   报文标识符MSB

     01   :   报文标识符LSB, (报文标识符由16位组成, 因此这里我们报文标识符位1)

MQTT通讯协议分析(二): 订阅Subscribe

     00   :   之后主题过滤器(Topic Filter)长度MSB

     04   :   主题过滤器(Topic Filter)长度 LSB ,与我们设置的"test"长度 符号

     74  65 73 74 : 对应的就是主题过滤器"test"

     00   :     QoS = 0,  若设置的是“至少一次”, 则为01, 若设置"刚好一次",则为02

继续,看看服务器返回给我们的Subscribe ack数据包:

MQTT通讯协议分析(二): 订阅Subscribe

分析:

      Subscribe ACK 报文固定报头

MQTT通讯协议分析(二): 订阅Subscribe

       90  : bit7~bit4值对应9,表示是Subscribe ack消息类型, bit3~bit0 保留位为0

       03  : 剩余长度

      Subscribe ACK 报文可变报头
MQTT通讯协议分析(二): 订阅Subscribe

       00  : 报文标识符MSB

       01  : 报文标识符LSB, 因此这里的报文标识符为1, 与我们之前Subscribe发送的报文标识符一致

        Subscribe  ACK 有效载荷MQTT通讯协议分析(二): 订阅Subscribe

       00 :bit7为0,表示成功,bit6~bit4 固定为0; bit3~bit2固定为0; bit1~bit0 : 0 ,表示QoS=0,完全符合我们的设置  

    

   

相关文章: