OneNET MQTT订阅报文抓包解析(SUBSCRIBE&SUBACK)

以下是使用at组件登录OneNET后,订阅报文时,打印的RAW数据:

[D/AT] sendline: 0000-0020: 82 0C 00 01 00 07 73 65  74 74 69 6E 67 01                                                            ......setting.
[D/AT] recvline: 0000-0020: 20 0D 0A                                                                                               ..
[D/AT] recvline: 0000-0020: 53 45 4E 44 20 4F 4B 0D  0A                                                                           SEND OK..
[D/AT] recvline: 0000-0020: 0D 0A                                                                                                 ..
[D/AT] recvline: 0000-0020: 2B 51 49 55 52 43 3A 20  22 72 65 63 76 22 2C 30  2C 35 0D 0A                                         +QIURC: "recv",0,5..
[D/AT] urc_recv: 0000-0020: 90 03 00 01 01                                                                                        .....                                                                                   .....

订阅过程中,实际发送的数据包是82 0C 00 01 00 07 73 65 74 74 69 6E 67 01,其中:
82 0c是固定头:82代表订阅QOS1质量的报文,0C代表后面内容长度为12字节;
00 01是可变消息头:代表packid;
00 07 73 65 74 74 69 6E 67 01是有效载荷:00 07代表主题长度,73 65 74 74 69 6E 67代表主题为setting,最后的01再次表示为QOS1质量的主题。

收到的回复是90 03 00 01 01,其中:
90 03是固定头:90代表订阅ACK报文,03代表后面的数据长度为3;
00 01是可变消息头:代表packid;
01是返回值,代表QOS1主题成功。

0x00	成功(granted qos = 0)
0x01	成功(granted qos = 1)
0x02	成功(granted qos = 2)
0x80	失败

当收到订阅的报文时,有如下数据:

[D/AT] recvline: 0000-0020: 0D 0A                                                                                                 ..
[D/AT] recvline: 0000-0020: 2B 51 49 55 52 43 3A 20  22 72 65 63 76 22 2C 30  2C 31 36 0D 0A                                      +QIURC: "recv",0,16..
[D/AT] urc_recv: 0000-0020: 30 0E 00 07 73 65 74 74  69 6E 67 48 65 6C 6C 6F                                                      0...settingHello
[D/AT] recvline: 0000-0020: 0D 0A                                                                                                 ..

实际数据包是30 0E 00 07 73 65 74 74 69 6E 67 48 65 6C 6C 6F ,其中:
30 0E是固定头:30代表发布消息,虽然是设备订阅,但对于服务器来说是发布;0E代表后面数据长度为14;
00 07 73 65 74 74 69 6E 67是可变消息头:00 07是主题长度,主题名称为setting;
48 65 6C 6C 6F是有效载荷,内容为Hello

猜你喜欢

转载自blog.csdn.net/qq_27508477/article/details/108111407