`
rensanning
  • 浏览: 3515800 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:37528
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:604453
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:678278
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:87378
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:399921
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69093
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:90555
社区版块
存档分类
最新评论

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
  • 大小: 2.7 KB
  • 大小: 1.7 KB
  • 大小: 2.6 KB
  • 大小: 2.2 KB
  • 大小: 13.8 KB
  • 大小: 194.5 KB
  • 大小: 191.6 KB
  • 大小: 215.9 KB
  • 大小: 207.8 KB
  • 大小: 187.7 KB
  • 大小: 170.5 KB
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics