原文:Dissecting MQTT using Wireshark
作者:Abhinaya Balaji
翻译:安翔
审校:苏宓
MQTT 在 IT 领域扮演着越来越重要的角色,在之前的一篇文章中,我们初步介绍了 MQTT 协议以及它的工作方式。为了更好地理解本文中的内容,请阅读上一篇文章中的机器到机器(M2M)的基础知识。我们将使用 Catchpoint MQTT 监视器从 MQTT 代理订阅并发布一个主题。下图显示了使用 Catchpoint 进行的测试设置。
Catchpoint 的 MQTT 监视器的指标包括发布时间、发布大小、订阅时间、订阅大小、DNS 和连接时间。
为了更好地了解 MQTT 监视器收集到的数据,就必须知道在 MQTT 的内部到底发生了什么。幸运的是,可以使用 Wireshark 工具帮助我们完成这个深层次的探索。像 Wireshark 这样的嗅探工具可以帮助我们剖析通信过程中的每个步骤,并检查数据包。在本文的分析中,我们将使用Catchpoint MQTT 监视器设置一个样本测试,并查看测试过程中所涉及的一些细节。
Wireshark 分析
MQTT 协议基于 TCP/IP 层之上,客户端和代理都需要具有 TCP/IP 协议栈的支持。
下图显示了 Wireshark 工具获取到的 Catchpoint MQTT 监视器中同一个 MQTT 代理订阅、发布的消息流。此处我们使用 QoS t0 的传送级别。接下来我们逐个分析一下协议的数据包。
注意:在上图中,192.168.0.11 是 MQTT 代理的 IP; 192.168.0.12 是客户端的 IP,它b扮演了发布者和订阅者的双重角色。