登录后更精彩...O(∩_∩)O...
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一开始直接过滤没有发现mqtt的协议(后来发现是开始捕获数据的时候,1883端口刚好没有数据),上网看了要加.lua脚本,加了不好用。有的博客说最新的wireshark不需要脚本,于是直接升级到了Version 3.2.2 (v3.2.2-0-ga3efece3d640)。由于端口问题和测试时间问题还是没有数据。看到别的博客要先设置端口,在wireshark的“编辑”-》“首选项”-》“Protocols”-》“MQTT”中设置端口,  [backcolor=transparent !important]然后就能看到过滤出mqtt协议的数据了(因为我是用网页发送mqtt数据,所以端口号是8083).后来把端口号修改成1883,服务启动之后也有数据了。 [backcolor=transparent !important]记录一下mqtt协议 [backcolor=transparent !important]1.两个byte的固定头 [td]bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | byte 1 | Message Type | DUP flag | QoS level | RETAIN | byte 2 | Remaining Length |
[backcolor=transparent !important]名字 | 值 | 流向 | 描述 | CONNECT | 1 | C->S | 客户端请求与服务端建立连接 | CONNACK | 2 | S->C | 服务端确认连接建立 | PUBLISH | 3 | CóS | 发布消息 | PUBACK | 4 | CóS | 收到发布消息确认 | PUBREC | 5 | CóS | 发布消息收到 | PUBREL | 6 | CóS | 发布消息释放 | PUBCOMP | 7 | CóS | 发布消息完成 | SUBSCRIBE | 8 | C->S | 订阅请求 | SUBACK | 9 | S->C | 订阅确认 | UNSUBSCRIBE | 10 | C->S | 取消订阅 | UNSUBACK | 11 | S->C | 取消订阅确认 | PING | 12 | C->S | 客户端发送PING(连接保活)命令 | PINGRSP | 13 | S->C | PING命令回复 | DISCONNECT | 14 | C->S | 断开连接 |
- 第一个byte第3bit DUP flag是用来在保证消息传输可靠的,如果设置为1,则在下面的变长头部里多加MessageId,并需要回复确认,保证消息传输完成,但不能用于检测消息重复发送
- 第一个byte1-2bit QoS主要用于PUBLISH(发布态)消息的,保证消息传递的次数。00表示最多一次 即<=1;01表示至少一次 即>=1;10表示一次,即==1;11保留后用
- 第一个byte第0bit retain 主要用于PUBLISH(发布态)的消息,表示服务器要保留这次推送的信息,如果有新的订阅者出现,就把这消息推送给它。如果不设那么推送至当前订阅的就释放了。
|