MQTT入门(3)- 分析报文Packet
程序员文章站
2022-06-12 14:12:24
...
既然MQTT是一个通信协议,就有必要看看在通信时的packet报文信息,有助于对协议自身的理解。
MQTT是一个二进制协议,所以报文中的数据都是字节码而不是文字。
而且它采用 command 和 command acknowledgement 成对实现通信。
(1)报文分析
标准的MQTT报文结构
主要分为三部分:固定报头(Fixed Header)、可变报头(Variable Header)、有效载荷(Payload)
其中固定报头为2个字节,一定会存在,其他部分可以没有。
最小报文
包含两个字段:控制头部、报头长度
控制头部
包含两个字段:消息类型、标志位
可变报头
包含四个字段:协议名、协议级别、连接标志、保持连接
连接标志
包含以下八个字段:
第0位:保留标志位
第1位:清理会话标志
第2位:遗嘱标志
第3,4位:QoS标志
第5位:遗嘱保留Retain标志
第6位:密码
第7位:用户名
(2)报文抓取
这里采用Wireshark来抓包,可以在过滤栏filter里输入mqtt来只查看mqtt的通信包。以下抓取了14中报文中最常用的几种,可以参考上边的分析部分一一对应。
连接CONNECT/连接确认CONNACK
因为采用的是公开免费的Broker服务,所以Client ID, User name, Password都是空的。
发布消息PUBLISH
消息订阅SUBSCRIBE/订阅确认SUBACK
断开连接DISCONNECT
参考:
http://www.steves-internet-guide.com/mqtt-protocol-messages-overview/
http://gitbook.cn/books/599e6ab53a09d014a0aba58b/index.html
MQTT是一个二进制协议,所以报文中的数据都是字节码而不是文字。
而且它采用 command 和 command acknowledgement 成对实现通信。
(1)报文分析
标准的MQTT报文结构
主要分为三部分:固定报头(Fixed Header)、可变报头(Variable Header)、有效载荷(Payload)
其中固定报头为2个字节,一定会存在,其他部分可以没有。
最小报文
包含两个字段:控制头部、报头长度
控制头部
包含两个字段:消息类型、标志位
可变报头
包含四个字段:协议名、协议级别、连接标志、保持连接
连接标志
包含以下八个字段:
第0位:保留标志位
第1位:清理会话标志
第2位:遗嘱标志
第3,4位:QoS标志
第5位:遗嘱保留Retain标志
第6位:密码
第7位:用户名
(2)报文抓取
这里采用Wireshark来抓包,可以在过滤栏filter里输入mqtt来只查看mqtt的通信包。以下抓取了14中报文中最常用的几种,可以参考上边的分析部分一一对应。
连接CONNECT/连接确认CONNACK
因为采用的是公开免费的Broker服务,所以Client ID, User name, Password都是空的。
发布消息PUBLISH
消息订阅SUBSCRIBE/订阅确认SUBACK
断开连接DISCONNECT
参考:
http://www.steves-internet-guide.com/mqtt-protocol-messages-overview/
http://gitbook.cn/books/599e6ab53a09d014a0aba58b/index.html
上一篇: 中兴软创荣获2018大数据星河奖,助力数字中国建设
下一篇: MySQL 修改主键