从 PCAP 找到 MQTT 根因证据
分析 Mqttable 内置演示抓包,从 Client ID 连接重叠追到 CONNECT 与 DISCONNECT 证据,并写下有边界的会话接管结论。
- 作者:
- Mqttable
- 更新:
本页目录12 个章节
加载中...
分析 Mqttable 内置演示抓包,从 Client ID 连接重叠追到 CONNECT 与 DISCONNECT 证据,并写下有边界的会话接管结论。
加载中...
当 MQTT 客户端只报告“连接断了”时,抓包可以帮助你判断链路上的报文是否支持更具体的解释。本页会调查合成客户端 dup 为什么断开,并从概览一路追到具体的 CONNECT 与 DISCONNECT 报文。
整个流程使用 Mqttable 内置的 demo.pcapng。它只包含合成客户端和回环端点,不需要 Broker、Connection、Credential 或用户自己的抓包。即使暂时没有安装 Mqttable,也可以通过截图看懂每个状态和结果;要亲自执行分析,仍需安装并打开 Mqttable。
PCAP(Packet Capture)保存了在特定采集点与时间窗内观察到的网络报文。Mqttable 会解码其中受支持的 MQTT 流量,检查抓包是否足以支持判断,并把诊断结果链接回具体报文。
当客户端侧的 Trace 不足以解释链路上发生了什么时,使用 PCAP 核对 MQTT 控制报文、方向与顺序、连接时间窗和协议级断开原因。PCAP 只能证明采集点在该时间窗内看到的内容,不能单独证明应用已经处理消息、Broker 的全部内部行为或唯一根因。
本教程使用内置 demo.pcapng 调查合成客户端 dup 的会话接管,不需要 Broker、Connection、Credential 或用户自己的抓包。
完成教程时,你应该能够:
dup 在两条时间窗重叠的 TCP Connection 上发送了 CONNECT;DISCONNECT 携带 0x8E / 142,即会话被接管;
首次进入 PCAP 时,空列表会提供安全的内置 Demo 入口。
如果看不到 Demo 按钮,请停止。 这表示当前 Runtime 已经存在分析。不要为了本教程删除不认识的抓包;Demo 操作只会在空状态出现。
Mqttable 会立即为 demo.pcapng 创建分析。状态仍为处理中时,百分比和六个流水线阶段只说明工作正在进行。取消分析会停止任务,不是成功操作。

处理中状态可观察,但还不能得出结论;必须等待所有阶段结束并变成完成。
等到状态变成完成并出现概览后再继续。在 Mqttable v1.0.1 中,内置 Demo 会解码 443 条 MQTT 报文、报告 7 个问题,并通过 60 项检查中的 54 项。

概览把抓包可信度与 MQTT 行为分开,并指出优先级最高的证据路径。
按以下顺序阅读结果:
在优先问题中选择查看问题组。只有详情为 Client ID 连接重叠时才继续。

问题组把受影响客户端、端点、证据数量和下一步操作放在一起。
先记录精确事实:
dup127.0.0.1:2883<->127.0.0.1:55562127.0.0.1:2883<->127.0.0.1:555662问题组会合并重复命中,但不能指出是哪两个进程创建了这些连接。
选择打开解码后的 MQTT 报文。Mqttable 会清除可能遮挡证据的过滤器,选中报文 ID 92 和 96,并把 Grid 定位到第一条证据;它不会自动打开消息详情。

深链接保留两条证据 ID,并把 Grid 定位到第一条 CONNECT,随后再检查具体字段。
点击 08-10 10:14:17.889 的高亮 CONNECT。核对 Endpoint 127.0.0.1:55562、MQTT version 5、Keep Alive 60s、Clean Start 是、Client ID dup,以及保持脱敏的密码。

解码后的 CONNECT 字段提供可复核的协议证据,同时不暴露密码值。
这些值不是 Mqttable 生成的;合成客户端把它们编码进了 demo.pcapng,Mqttable 负责从报文中解码。
返回问题,选择会话接管信号。详情必须显示客户端 dup、Reason 142 和一条证据报文。

独立的问题组提供第二条证据路径,避免只根据 CONNECT 重叠推测会话接管。
选择打开解码后的 MQTT 报文,再点击高亮的 DISCONNECT 行。只有消息详情显示 0x8E - 会话被接管 时才继续。

解码后的 DISCONNECT Reason 是支持有边界判断的第二项直接观察。
从 Client ID 重叠问题选择相关检查,再打开 Client ID 连接重叠。即使使用 Free,Demo 也会展示全部 60 项检查详情。

规则、触发条件、证据结果与其他通过的客户端会同时保留。
这就是 Mqttable 相对普通报文列表的实际价值:先判断抓包是否可信,再合并重复异常、解释每项检查的证据边界,并把结论链接回解码报文。它不会取代应用日志、Broker 内部诊断或通用抓包分析器。
dup 在两条可见时间窗重叠的 TCP Connection 上发送了 CONNECT;另有一条 DISCONNECT 携带 0x8E / 142,即会话被接管。dup。下一步检查 Client ID 生成规则、应用日志、部署清单和 Broker 日志。不要把它缩写成“PCAP 已证明唯一根因”。抓包只能证明在该采集点与时间窗看到的内容,不能单独证明应用处理结果或全部 Broker 内部事件。
完成 Demo 后,**打开抓包…**支持一个 .pcap、.pcapng、.cap,或包含受支持抓包的 .zip。UI 上限为 50 MB,ZIP 内解压后的抓包也必须在此范围内。
pcap:upload、pcap:analyze 权限。遇到 Locked 或权限错误就停止,不存在自动 Local fallback。能力 | Free | Pro |
|---|---|---|
保留的 PCAP 分析 | 最多 3 个 | 不限 |
自有抓包的检查详情 | 完整 Summary 和前 5 项诊断详情 | 全部诊断详情 |
内置 Demo | 完整 Demo 诊断表面 | 完整 Demo 诊断表面 |
Runtime | Local Runtime | Local Runtime,以及在线确认后的认证 Remote Runtime |
分析默认约两小时后过期。确认当前对象是 demo.pcapng,选择标题栏垃圾桶,阅读删除此分析?此操作无法撤销。,然后选择确认。

删除只针对 demo.pcapng,并保留不可撤销操作确认。
只有之前的分析重新显示没有之前的分析时,清理才算完成。

空列表是教程分析已经删除的可观察证据。