在 Tshark 中追踪 TCP 流

WiresharkWiresharkBeginner
立即练习

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

简介

在本次实验中,你将学习如何使用 Wireshark 的命令行工具 tshark 来分析 TCP 流。你将练习使用基本命令来读取数据包捕获文件、识别 TCP 会话,并提取特定的流数据以进行详细检查。

这些练习将指导你验证捕获文件、检查协议细节以及保存流内容。通过完成本次实验,你将掌握使用 tshark 强大的过滤和统计功能进行网络流量分析的实用技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") wireshark/WiresharkGroup -.-> wireshark/protocol_dissection("Protocol Dissection") wireshark/WiresharkGroup -.-> wireshark/follow_tcp_stream("Follow TCP Stream") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") wireshark/WiresharkGroup -.-> wireshark/commandline_usage("Command Line Usage") subgraph Lab Skills wireshark/packet_capture -.-> lab-548929{{"在 Tshark 中追踪 TCP 流"}} wireshark/protocol_dissection -.-> lab-548929{{"在 Tshark 中追踪 TCP 流"}} wireshark/follow_tcp_stream -.-> lab-548929{{"在 Tshark 中追踪 TCP 流"}} wireshark/packet_analysis -.-> lab-548929{{"在 Tshark 中追踪 TCP 流"}} wireshark/commandline_usage -.-> lab-548929{{"在 Tshark 中追踪 TCP 流"}} end

使用 -r tcp.pcap 读取 TCP 捕获文件

在这一步中,你将学习如何使用 Wireshark 的命令行工具 tshark 读取 TCP 数据包捕获文件。这是从已保存的捕获文件中分析网络流量的第一步。了解如何读取数据包捕获文件是进行网络故障排除和分析的基础。

tshark 中的 -r 选项允许你从之前保存的捕获文件中读取数据包。你可以将其想象成打开一个文档——-r 标志告诉 tshark 要打开哪个“文档”(捕获文件)。我们将使用位于 ~/project 目录下名为 tcp.pcap 的示例文件。

  1. 首先,让我们验证捕获文件是否存在于预期的位置。在尝试分析任何文件之前,这是一个很好的做法:
ls ~/project/tcp.pcap
  1. 现在,我们将使用 tshark 读取捕获文件。不使用任何过滤器的基本命令将向你展示文件中所有网络流量的概述:
tshark -r ~/project/tcp.pcap

这将显示一个包含重要列的摘要视图:

  • 数据包编号(显示捕获数据包的顺序)
  • 时间戳(每个数据包的捕获时间)
  • 源 IP 地址和目标 IP 地址
  • 使用的协议(TCP、UDP 等)
  • 关于数据包内容的简要信息
  1. 为了更深入地了解数据包内容,我们可以添加 -V 标志(详细模式)。这将逐层显示每个数据包的完整协议分解:
tshark -r ~/project/tcp.pcap -V

详细输出将揭示以下详细信息:

  • 以太网层(MAC 地址)
  • IP 层(源/目标 IP、TTL 等)
  • TCP 层(端口、序列号、标志)
  • 应用层数据(如果存在)

这个详细视图有助于你准确理解通信过程中每个网络层正在发生的事情。

使用 -z conv,tcp 识别流索引

在这一步中,你将学习如何使用 Wireshark 的 tshark 工具结合 -z conv,tcp 选项,在数据包捕获文件中识别 TCP 会话流。这有助于分析主机之间的通信模式。

在开始之前,了解 TCP 流代表两个端点之间的完整会话非常重要。每个流都有一个唯一的索引编号,这有助于我们在可能包含许多同时进行的连接的网络捕获文件中,分离并分析特定的通信。

-z conv,tcp 选项会显示捕获文件中所有 TCP 会话的表格,展示流索引、源/目标地址、端口以及数据包数量。这能让我们对捕获文件中的所有 TCP 活动有一个宏观的了解。

  1. 首先,让我们列出捕获文件中的所有 TCP 会话:
tshark -r ~/project/tcp.pcap -z conv,tcp

当你运行此命令时,tshark 会处理数据包捕获文件,并生成所有 TCP 会话的摘要。该命令读取 (-r) 指定的 pcap 文件,并应用会话统计选项 (-z conv,tcp)。

  1. 输出将显示一个包含以下列的表格:

    • 流索引(每个 TCP 流的唯一标识符)
    • 源地址:端口(显示发起连接的设备)
    • 目标地址:端口(显示接收连接的设备)
    • 每个方向的数据包数量(有助于识别流量流向)
    • 总数据包数量(显示会话的规模)
  2. 若要过滤并仅查看会话统计信息(不包含数据包详细信息),可添加 -q(安静模式):

tshark -r ~/project/tcp.pcap -z conv,tcp -q

-q 选项告诉 tshark 仅输出我们请求的统计信息,当我们只关注会话摘要时,这样能使输出更简洁易读。

  1. 记录下流索引(第一列),因为在下一步中,我们将跟踪特定的流,这些索引至关重要,它们能让我们在可能非常繁忙的网络捕获文件中专注于单个会话。

使用 -z follow,tcp,stream,0 跟踪流

在这一步中,你将学习如何使用 Wireshark 的 tshark 工具结合 -z follow,tcp 选项,从数据包捕获文件中跟踪并分析特定的 TCP 流。这能让你重构两个端点之间会话的实际数据流,从而更轻松地理解应用层的通信情况。

-z follow,tcp,stream,0 选项允许你将流 0(将 0 替换为上一步中你所需的流索引)作为连续的数据流进行查看,而非单个的数据包。在分析像 HTTP 这样的协议时,这尤其有用,因为加载一个网页可能会涉及多个数据包。

  1. 首先,让我们跟踪捕获文件中的流 0(第一个 TCP 会话)。此命令会读取 pcap 文件并重构整个会话:
tshark -r ~/project/tcp.pcap -z follow,tcp,stream,0
  1. 输出将显示三个重要信息:

    • 客户端和服务器之间完整的数据交换,按顺序重构
    • 应用层数据的 ASCII 表示形式(应用程序实际发送的内容)
    • 方向指示符(">" 表示客户端到服务器,"<" 表示服务器到客户端),有助于跟踪会话中每一部分的发起方
  2. 若要跟踪不同的流,将 "0" 替换为你所需的流索引(来自步骤 2 的输出)。例如,要查看捕获文件中的第二个会话:

tshark -r ~/project/tcp.pcap -z follow,tcp,stream,1
  1. 若要获得仅显示数据(不包含数据包头部)的更简洁输出,可添加 -q(安静模式)。当你只关心应用层数据时,这很有帮助:
tshark -r ~/project/tcp.pcap -z follow,tcp,stream,0 -q

使用重定向保存流文本

在这一步中,你将学习如何使用输出重定向将 TCP 流的内容保存到文件中。当你需要分析网络通信模式或与同事共享捕获的数据时,这种技术特别有用。该过程包括从数据包捕获文件中提取特定的 TCP 流数据,并将其存储在文本文件中以便后续检查。

  1. 首先,让我们将流 0 保存到名为 stream0.txt 的文件中。此命令读取数据包捕获文件 (tcp.pcap) 并仅提取 TCP 流索引为 0 的内容,然后将输出重定向到一个新的文本文件:
tshark -r ~/project/tcp.pcap -z follow,tcp,stream,0 -q > ~/project/stream0.txt
  1. 执行命令后,验证文件是否成功创建。ls -l 命令会显示文件的详细信息,包括其大小和创建时间:
ls -l ~/project/stream0.txt
  1. 若要查看你保存的实际内容,请使用 cat 命令。这将显示 TCP 流中的完整会话,包括客户端和服务器的消息:
cat ~/project/stream0.txt
  1. 同样的技术适用于捕获文件中的任何 TCP 流。以下是如何通过简单更改命令中的流索引来保存流 1。注意,我们正在创建一个新文件 (stream1.txt) 以避免覆盖前一个文件:
tshark -r ~/project/tcp.pcap -z follow,tcp,stream,1 -q > ~/project/stream1.txt
  1. 在检查较长的流时,添加行号可以使分析更加容易。cat 命令加上 -n 标志会显示每行及其对应的行号,帮助你引用会话的特定部分:
cat -n ~/project/stream0.txt

总结

在本次实验中,你学习了如何使用 Wireshark 的命令行工具 tshark 来分析 TCP 网络流量。练习内容包括使用 -r 选项读取数据包捕获文件、通过 -V 选项显示详细的协议信息,以及使用 -z conv,tcp 选项识别 TCP 会话以进行流分析。

你练习了根据索引跟踪特定的 TCP 流,并通过输出重定向保存流内容。这些技术为你提供了一个实用的工作流程,让你能够使用 tshark 从最初的数据包捕获到有针对性的数据检查,对网络流量进行全面的检查。