MQTT入门(3)- 分析报文Packet

既然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

猜你喜欢

转载自rensanning.iteye.com/blog/2406575
今日推荐