既然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
分享到:
相关推荐
当两者结合,如"mqtt-xmeter-2.0.2-jar-with-dependencies.zip"所示,我们可以构建出针对MQTT服务器的高效性能测试方案。 该压缩包中的核心文件"mqtt-xmeter-2.0.2-jar-with-dependencies.jar"是一个包含所有依赖的...
MQTT中文文档,帮助理解MQTT具体协议,用于创建服务器或者客户端
本压缩包“mqtt-xmeter-syl-jar-with-dependencies.rar”包含了一个名为“mqtt-xmeter-syl-jar-with-dependencies”的文件,这很可能是一个Java应用,用于测试和分析MQTT协议的性能。 首先,我们来深入了解MQTT协议...
"mqtt-xmeter-2.0.2-jar-with-dependencies.jar" 文件就是这样的一个扩展,它使得JMeter能够支持对MQTT协议的测试。 这个jar文件包含了所有必要的依赖,使用户无需额外安装其他库即可在JMeter中执行MQTT相关的测试...
mqtt-client-0.4.0.jar
标题中的“paho.mqtt.embedded-c-master.zip”是一个开源项目,主要针对MQTT协议的C语言实现,名为Paho MQTT Embedded C。Paho是IBM和Oracle发起的一个开源项目,旨在提供一组支持多种开放标准的消息传递协议(如...
jmeter-mqtt插件应用于Jmeter对mqtt服务器压力测试
例如,文档中提到的MQTT-3.1.1版本,这个版本主要的改动包括增强了协议规范和改进了协议的互操作性。 由于MQTT协议具有良好的扩展性和灵活性,它在物联网(IoT)领域得到了广泛的应用。物联网中的设备往往受限于...
MQTT (Message Queue Telemetry Transport),翻译成中文就是,遥测传输协议,其主要提供了订阅/发布两种消息模式,更为简约、轻量,易于使用,特别适合于受限环境(带宽低、网络延迟高、网络通信不稳定)的消息分发...
3. **QoS服务质量等级**:MQTT提供三种服务质量(Quality of Service, QoS)级别,以确保消息的可靠传输: - QoS 0(At most once):消息最多被传递一次,无确认机制,最快速但不保证送达。 - QoS 1(At least ...
3. **会话管理**:mqtt.fx支持会话保持,即使客户端断开连接,服务器也会保留其订阅状态,以便在重新连接时恢复。 4. **消息过滤**:用户可以根据需要对接收到的消息进行过滤,只显示特定格式或特定内容的消息。 5. ...
3. **安装与配置paho.mqtt.c** 首先,你需要从GitHub或其他源获取paho.mqtt.c-master.zip压缩包,并解压到本地目录。在Linux环境下,通过执行`cmake`和`make`命令进行编译安装。完成安装后,可以将库链接到你的C++...
在本压缩包“MQTT-Client-master.rar”中,包含了一个MQTT客户端的源码,适用于测试MQTT服务器的功能。 首先,我们来详细了解一下MQTT协议的关键特性: 1. **发布/订阅模式**:MQTT采用这种模式,使得消息发布者...
赠送jar包:mqtt-client-1.3.jar; 赠送原API文档:mqtt-client-1.3-javadoc.jar; 赠送源代码:mqtt-client-1.3-sources.jar; 包含翻译后的API文档:mqtt-client-1.3-javadoc-API文档-中文(简体)版.zip 对应...
3. **创建客户端对象**:实例化`MQTT::Client`对象,指定连接的服务器地址、端口等信息。 4. **连接与认证**:调用`connect()`方法建立连接,可以设置用户名和密码。 5. **订阅与发布**:使用`subscribe()`订阅主题...
3. **协议实现**:全面实现了MQTT 3.1.1标准,包括QoS0、QoS1和QoS2三种服务质量级别,确保数据可靠传输。 4. **网络层兼容性**:库可直接与TCP/IP网络层交互,适应各种网络环境,包括WiFi、蓝牙、蜂窝网络等。 5....
mqtt-client-1.5-uber.jar
赠送jar包:mqtt-client-1.3.jar; 赠送原API文档:mqtt-client-1.3-javadoc.jar; 赠送源代码:mqtt-client-1.3-sources.jar; 包含翻译后的API文档:mqtt-client-1.3-javadoc-API文档-中文(简体)-英语-对照版....
MQTT-3.1.1-CN,MQTT协议中文版。不错的资料。