MQTT协议抓包

betball贝博app 上位机 522 次浏览 没有评论

用onenet的模拟mqtt软件试了下连接emqtt,完美通信。打开抓包工具,抓了一波

1.连接

                 M  Q   T   T  ?x                          d    e   v    1         p  r    o         1                         auth1

10 1D 00 04 4D 51 54 54 04 C0 00 78 00 04 64 65 76 31 00 04 70 72 6F 31 00 05 61 75 74 68 31

固定报头10 1D  (连接,剩余长度29)

可变报头00 04(长度) 4D 51 54 54(协议名) 04(协议级别) C0(连接标志) 00 78(120s keeplive)

有效载荷(客户端标识符,遗嘱主题,遗嘱消息,用户名,密码)

00 04(长度)64 65 76 31 (dev1)

00 04 (长度)70 72 6F 31 (pro1)

00 05  (长度)61 75 74 68 31(auth1)

下面两条因为采用的是onenet平台的软件,他对于每一个用户的topic存在云端,然后连接时自动发送publish向服务器发起请求,服务器收到请求以后自动反馈该设备的所有topic。

0 GetProductTopics 30 13 00 11 24 47 65 74 50 72 6F 64 75 63 74 54 6F 70 69 63 73 固定报文:30 13(PUBLISH,重发=0,Qos=0,保留=0(将会存在数据库中))剩余长度19 可变报头 00 11 (长度17) 该消息没有有效载荷,直接发布订阅名。 0GetSubTopics

30 0F 00 0D 24 47 65 74 53 75 62 54 6F 70 69 63 73

分析同上

2.订阅

?  top1

82 09 00 02 00 04 74 6F 70 31 00

固定报文:82 (SUBSCRIBE+标志位)

可变报文:00 02 报文标识符(什么时候是标识符,什么时候是长度??)

有效载荷:00 04 74 6F 70 31 00 (4位,最后一位为字符串结束符,自动省略"\0"?

3.发布信息

0 top1123

30 09 00 04 74 6F 70 31 31 32 33

固定报文30 (publish)09 长度为9

可变报文 00 04 74 6F 70 31 长度为4+主题名

有效载荷 31 32 33  “123”

4.断开

?

E0 00

发表评论

邮箱地址不会被公开。

Go