一、PUBLISH发布QoS0消息
二、抓包消息
1.1 固定报头
30 10
其中:
30 – 对应的控制报文类型为PUBLISH,重发标志DUP位0,QoS等级为0,
RETAIN标志位0
10 – 剩余长度0x10 = 16个字节
1.2 可变报头
00 06 74 6f 70 69 63 31
其中:
00 06 – 这里就是Topic Name的长度,共6个字节
74 6f 70 69 63 31 – topic1
1.3 有效载荷
31 32 33 33 33 32 34 35
其中,这里没有载荷的长度。
--对应的ASCII码:12333245
2.发布QoS消息的响应报文示例
MQTT协议中规定,PUBLISH报文的接收者必须按照根据PUBLISH报文中的QoS等级发送响应,下表描述了预期的响应规定
服务质量等级 | 预期响应 |
QoS0 | 无响应 |
QoS1 | PUBACK报文 |
QoS2 | PUBACK报文 |
注意:对于QoS 0类型的消息响应,协议规定可以无响应,但是并不是强制的,一般服务器接收到QoS 0类型的消息,都会按照原样返回,这对于Client其实是不影响的,因为客户端发送的Topic,一般都不会自己订阅,所以接收到没有订阅的Topic消息,不动作即可。
这里我的是没有应答。
三、PUBLISH发布QoS1消息
四、抓包消息
1.1 固定报头
32 12
其中:
32 – 对应的控制报文类型为PUBLISH,重发标志DUP位0,QoS等级为1,
RETAIN标志位0
12 – 剩余长度0x12 = 18个字节
1.2 可变报头
00 06 74 6f 70 69 63 31
其中:
00 06 – 这里就是Topic Name的长度,共6个字节
74 6f 70 69 63 31 – topic1
1.3 消息ID
00 09 -就是发送消息的序号,每发一次加一
1.4 有效载荷
31 32 33 33 33 32 34 35
其中,这里没有载荷的长度。
--对应的ASCII码:12333245
五、服务器应答抓包消息
1.1 固定报头
40 02:应答报头和剩余长度
1.2 消息ID
00 09 -就是应答发送消息的序号