在 Tshark 中使用两遍分析

WiresharkWiresharkBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本次实验中,你将学习使用 Wireshark 的命令行工具 tshark 进行两遍分析(two-pass analysis),以分析 PCAP 文件中的网络流量。在使用显示过滤器检查 TCP 确认数据包时,你将练习使用关键选项,如用于读取文件的 -r、用于两遍模式的 -2 和用于详细输出的 -V

这些练习将引导你从基础到高级掌握 tshark 操作,包括文件验证、通过两遍分析增强协议解析,以及解读网络流量模式。这些实用技能将帮助你利用 tshark 的强大功能进行更准确、高效的网络分析。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") wireshark/WiresharkGroup -.-> wireshark/display_filters("Display Filters") wireshark/WiresharkGroup -.-> wireshark/protocol_dissection("Protocol Dissection") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") wireshark/WiresharkGroup -.-> wireshark/commandline_usage("Command Line Usage") subgraph Lab Skills wireshark/packet_capture -.-> lab-548940{{"在 Tshark 中使用两遍分析"}} wireshark/display_filters -.-> lab-548940{{"在 Tshark 中使用两遍分析"}} wireshark/protocol_dissection -.-> lab-548940{{"在 Tshark 中使用两遍分析"}} wireshark/packet_analysis -.-> lab-548940{{"在 Tshark 中使用两遍分析"}} wireshark/commandline_usage -.-> lab-548940{{"在 Tshark 中使用两遍分析"}} end

使用 -r capture.pcap 打开文件

在这一步中,你将学习如何使用 Wireshark 的命令行工具 tshark 打开并检查数据包捕获文件。在学习更高级的分析技术之前,这项基础技能对于分析预先录制的网络流量至关重要。

-r 选项是 tshark 最常用的参数之一。它代表“read”(读取),用于指定 tshark 应从文件中处理数据包,而不是捕获实时网络流量。我们将使用一个名为 capture.pcap 的示例文件,其中包含已记录的网络通信数据。

在开始之前,让我们先了解一下我们要处理的内容:

  • .pcap 文件是存储捕获的网络数据包的标准格式
  • 该文件包含我们要分析的原始网络流量数据
  • 使用已保存的捕获文件使我们无需实时流量即可研究网络行为

请仔细按照以下步骤操作:

  1. 首先,导航到包含我们捕获文件的目录:
cd ~/project
  1. 验证捕获文件是否存在并检查其属性:
ls -l capture.pcap

你应该会看到类似以下的输出:

-rw-r--r-- 1 labex labex 12345 Jan 1 00:00 capture.pcap

这确认了文件的存在,并显示了其大小和权限。

  1. 现在,让我们打开并显示捕获文件的内容:
tshark -r capture.pcap

此命令读取文件并在你的终端中显示每个捕获数据包的摘要。每行代表一个网络数据包,显示诸如时间戳、源/目的地址和协议等基本信息。

对于初学者:在开始进行数据包分析时,处理已保存的捕获文件通常比处理实时流量更容易。-r 选项为我们提供了这种能力。在接下来的步骤中,我们将学习如何过滤和分析此流量的特定方面。

使用 -2 启用两遍分析

在这一步中,我们将探讨如何通过添加 -2 选项,以两遍分析(two-pass analysis)模式使用 Wireshark 的 tshark。这一强大功能使 tshark 对捕获文件进行两次处理,显著提高协议分析的准确性和显示过滤器的效果。

对于刚接触数据包分析的人来说:通常情况下,tshark 只按顺序读取一次数据包。两遍分析模式则有所不同:

  1. 第一遍:快速扫描整个文件,以建立协议关系和依赖项
  2. 第二遍:结合第一遍的完整上下文,仔细分析每个数据包

在以下情况下,你会希望使用两遍分析模式:

  • 处理复杂协议,后续数据包有助于解释前面的数据包
  • 应用需要完整数据包上下文的复杂显示过滤器
  • 生成精确的协议统计信息和摘要

让我们使用示例捕获文件进行练习:

  1. 首先,导航到项目目录(如果你是从前面的步骤继续操作):
cd ~/project
  1. 现在,启用两遍分析模式执行 tshark:
tshark -2 -r capture.pcap

了解具体过程:-2 标志激活了双重扫描过程。在第一遍扫描中,tshark 记录重要的协议细节,如 TCP 序列号和会话状态。在第二遍扫描中,它利用这些信息正确重建对话并准确应用过滤器。这对于像 TCP 这样的协议特别有价值,因为确认机制会影响我们对数据包的解读。

使用 -R "tcp.flags.ack==1" 过滤响应

在这一步中,你将学习如何利用 Wireshark 强大的显示过滤功能来筛选 TCP ACK 数据包。Tshark 中的 -R 选项可让你应用这些过滤器,从而分析捕获的网络流量。当你想专注于特定类型的数据包(如 TCP 确认包)时,此功能尤为实用。

TCP ACK 数据包在网络通信中起着至关重要的作用。每当你的计算机通过 TCP 连接接收到数据时,它都会发回这些确认包,以确认数据已成功接收。通过筛选这些数据包,你可以研究系统如何确认数据传输。

下面让我们逐步了解这个过程:

  1. 首先,你需要导航到存储捕获文件的工作目录:
cd ~/project
  1. 现在,你将使用 Tshark 并启用两遍分析(-2)选项,同时应用 ACK 过滤器:
tshark -2 -r capture.pcap -R "tcp.flags.ack==1"

下面来详细解析这个命令:

  • -2 启用两遍分析,以获得更准确的结果
  • -r capture.pcap 指定输入的捕获文件
  • -R "tcp.flags.ack==1" 应用用于筛选 ACK 数据包的显示过滤器

需要理解的关键点如下:

  • -R 选项指示 Tshark 仅显示符合过滤条件的数据包
  • tcp.flags.ack==1 精确匹配 TCP ACK 标志设置为 1(即开启状态)的数据包
  • TCP ACK 是正常的协议行为,不一定表示存在问题
  • 两遍分析(-2)有助于确保准确的协议解析和过滤

运行该命令后,你将看到输出中仅包含设置了 ACK 标志的 TCP 数据包。典型的一行输出如下:

1 0.000000 192.168.1.1 → 192.168.1.2 TCP 54 443 → 49234 [ACK] Seq=1 Ack=1 Win=64240 Len=0

这显示了数据包编号、时间戳、源/目的 IP 地址、端口以及 TCP 特定信息,包括你筛选的 [ACK] 标志。

使用 -V 显示结果

在这一步中,你将学习如何使用 Wireshark 的 -V(详细模式)选项查看全面的数据包详细信息。在分析网络流量时,了解数据包的完整结构至关重要。-V 标志通过显示完整的协议层次结构和所有字段值来提供帮助,这在检查上一步过滤出的 TCP ACK 数据包时特别有用。

详细输出(-V)揭示了每个数据包的三个关键方面:

  • 完整的协议分解,展示不同层如何相互封装
  • 这些协议中的每个字段值,包括在默认视图中通常隐藏的技术细节
  • 清晰的层次结构,反映了协议在网络通信中实际的堆叠方式

让我们逐步执行此操作:

  1. 首先,导航到存储捕获文件的工作目录。这确保你可以访问数据包捕获数据:
cd ~/project
  1. 现在,针对过滤后的 ACK 数据包运行带有详细输出的命令。注意,你将两遍分析(-2)与之前的过滤器(-R)结合使用,并添加了 -V
tshark -2 -r capture.pcap -R "tcp.flags.ack==1" -V

对于刚接触数据包分析的人来说:

  • -V 选项激活“详细”模式,就像从书籍的目录切换到阅读完整章节一样
  • 与显示基本数据包摘要的默认视图不同,详细模式会展示所有技术细节
  • 输出按协议层(以太网 → IP → TCP 等)组织信息,与数据包的实际结构完全一致
  • 你将看到每个协议字段的具体值,有助于准确理解网络交换中发生的情况

以下是输出中可以预期的内容(简化示例):

Frame 1: 54 bytes on wire...
Ethernet II, Src: aa:bb:cc:dd:ee:ff...
Internet Protocol Version 4, Src: 192.168.1.1...
Transmission Control Protocol, Src Port: 443...
    [ACK] Seq=1 Ack=1 Win=64240 Len=0
    [TCP Flags: ·······A····]

总结

在本次实验中,你学习了如何使用 Wireshark 的 tshark 命令行工具进行两遍数据包分析。该过程包括使用 -r 选项从捕获文件(capture.pcap)中读取数据包,并在分析前确认其位置。

你了解了通过 -2 选项启用的两遍模式,该模式通过对数据包进行两次扫描来提高协议分析的准确性。这种技术在处理复杂过滤器和需要后续数据包上下文信息的协议时特别有用。