MQTT建立连接CONNECT分析

CONNECT — 连接服务器


整个帧结构

(0000)     00 0c 29 8d b5 bd 00 50 56 c0 00 08 08 00 45 00
(0010)     00 4e 69 ca 40 00 40 06 2b 00 c0 a8 92 01 c0 a8
(0020)     92 8d cd 86 07 5b fa e8 93 77 82 4b 86 84 50 18
(0030)     01 00 b1 44 00 00 10 24 00 06 4d 51 49 73 64 70
(0040)     03 02 00 3c 00 16 6d 6f 73 71 73 75 62 2f 31 31
(0050)     32 31 36 2d 50 6f 74 6f 59 61 6e 67
 
注:加粗部分为MQTT协议结构

分析说明

固定报头:
    协议类型+保留位:10,其中MQTT报文控制类型为1,保留位为0,1代表类型1,即CONNECT请求.
    剩余长度: 24(36),代表可变报头长度(10字节)加上有效载荷长度一共为36字节.

可变报头:
    协议名长度:00 06,代表协议名长度为6字节
    协议名:4d 51 49 73 64 70 ,协议名称为:MQIsdp

为什么不是MQTT?
解析:这是在MQTT3.1标准中的定义,在MQTT3.1.1标准中,MQIsdp被改为了MQTT, 见 MQTT3.1与MQTT3.1.1版的区别

    协议级别:03,对应于MQTT3.1版本
    连接标志:02,说明
MQTT建立连接CONNECT分析_第1张图片
    保持连接:00 3c (60),以秒为单位,代表客户端传输完成一个控制报文的时刻到下一个报文的时刻,两者之间允许空闲的最大时间间隔。

有效载荷:
    可变报头中的标志决定是否包含这些字段,如果包含的话,必须按照这个顺序出现:客户端标识符,遗嘱主题,遗嘱消息,用户名,密码,客户端标识符必须存在而且必须是CONNECT报文有效载荷的第一个字段
    客户端标识符长度:00 16,代表接下来的客户端标识符长度为22字节。
    客户端标识符:6d 6f 73 71 73 75 62 2f 31 31 32 31 36 2d 50 6f 74 6f 59 61 6e 67(mosqsub/11216-PotoYang)

你可能感兴趣的:(MQTT,计算机网络)