简介
在这个实验中,你将学习使用 Wireshark 的命令行工具 tshark
来分析 TCP 会话。你将练习使用过滤器捕获 TCP 流量、列出会话,并在解读详细的数据包信息时检查特定端口,如 HTTP(端口 80)。
通过包括使用 curl
生成流量和分析捕获文件在内的实践练习,你将掌握隔离 TCP 流并识别关键会话指标的方法。这些技能将提升你使用 Wireshark 进行网络故障排除和流量分析的能力。
在这个实验中,你将学习使用 Wireshark 的命令行工具 tshark
来分析 TCP 会话。你将练习使用过滤器捕获 TCP 流量、列出会话,并在解读详细的数据包信息时检查特定端口,如 HTTP(端口 80)。
通过包括使用 curl
生成流量和分析捕获文件在内的实践练习,你将掌握隔离 TCP 流并识别关键会话指标的方法。这些技能将提升你使用 Wireshark 进行网络故障排除和流量分析的能力。
-f "tcp"
捕获 TCP 流量在这一步中,你将学习如何使用 Wireshark 的命令行工具 tshark
捕获 TCP 网络流量。TCP(传输控制协议,Transmission Control Protocol)是互联网的核心协议之一,负责应用程序之间的可靠数据传输。通过使用 -f "tcp"
过滤器,我们可以专门关注 TCP 数据包,这在分析网页浏览、文件传输或电子邮件通信时非常有用。
首先,通过点击 Xfce 桌面的终端图标或使用快捷键 Ctrl+Alt+T
,在你的 LabEx 虚拟机中打开一个终端。我们将在这个终端中执行所有用于网络分析的命令。
导航到用于存储捕获文件的默认工作目录:
cd ~/project
这确保我们捕获的所有数据都将保存在一个一致的位置,方便后续查找。
使用以下命令开始捕获 TCP 流量:
sudo tshark -f "tcp" -w tcp_capture.pcap
让我们来分析一下这个命令各部分的作用:
sudo
为我们提供了进行数据包捕获所需的管理员权限tshark
是 Wireshark 的命令行版本-f "tcp"
作为捕获过滤器,告诉 tshark 仅记录 TCP 数据包-w tcp_capture.pcap
将捕获的数据包保存到名为 "tcp_capture.pcap" 的文件中当 tshark 运行时,我们需要生成一些示例 TCP 流量。打开另一个终端窗口并运行:
curl https://www.example.com
此命令向 example.com 发出一个简单的网页请求,该请求使用 TCP 进行通信。curl 命令将显示从网站返回的 HTML 内容。
等待几秒钟以捕获足够的数据后,在运行 tshark 的第一个终端中按 Ctrl+C
停止捕获。这将安全地终止数据包捕获过程。
现在,让我们通过查看捕获文件的前几行来验证我们捕获的内容:
tshark -r tcp_capture.pcap | head -n 5
此命令读取 (-r
) 我们的捕获文件并显示前 5 个数据包。你应该会看到显示 TCP 握手过程的输出,其中包括:
-z conv,tcp
列出会话在这一步中,你将学习如何使用 Wireshark 的 -z conv,tcp
选项,从捕获的流量中分析 TCP 会话。TCP 会话表示两个端点之间的完整通信会话,通过它们的 IP 地址和端口号来识别。此功能会提供捕获文件中所有 TCP 会话的摘要,显示源/目标 IP 地址、端口和数据包统计信息,这对于理解网络通信模式至关重要。
首先,确保你位于存储捕获文件的正确目录中。这很重要,因为 Tshark 需要知道在哪里找到数据包捕获文件:
cd ~/project
列出 TCP 会话的基本命令会分析捕获的数据包并显示一个摘要表。-r
标志指定输入文件,而 -z conv,tcp
启用会话统计功能:
tshark -r tcp_capture.pcap -z conv,tcp
输出将显示一个表格,展示所有 TCP 会话,类似于以下示例。每一行代表两个端点之间的一个会话,显示每个方向传输的帧数(数据包)和字节数:
=========================================================================
TCP Conversations
Filter:<No Filter>
| <- | | -> | | Total |
| Frames Bytes | | Frames Bytes | | Frames Bytes |
192.168.1.2:49152 <-> 93.184.216.34:80 | 3 180 | | 3 216 | | 6 396 |
=========================================================================
若要获得更详细的视图,显示每个会话发生的绝对时间戳,请使用 -t ad
选项。这有助于理解网络事件的时间和顺序:
tshark -r tcp_capture.pcap -z conv,tcp -t ad
你可以使用 -Y
选项结合显示过滤器,按特定条件过滤会话。此示例过滤涉及端口 80(HTTP 流量)的会话,当你只想分析 Web 流量时很有用:
tshark -r tcp_capture.pcap -z conv,tcp -Y "tcp.port==80"
若要保存会话统计信息以供后续分析或报告,将输出重定向到一个文本文件。这会创建一个永久的分析记录,你可以查看或与他人分享:
tshark -r tcp_capture.pcap -z conv,tcp > tcp_conversations.txt
-Y "tcp.port==80"
过滤特定端口在这一步中,你将学习如何使用 Wireshark 的显示过滤器语法和 -Y "tcp.port==80"
选项,过滤特定 TCP 端口(端口 80)的网络流量。端口 80 是 HTTP 网页流量的标准端口,因此这个过滤器有助于在你的网络捕获中分离出与网页相关的通信。
在开始之前,让我们先了解这个过滤器的作用:它会显示所有源端口或目标端口为 80 的 TCP 数据包。这与专门过滤源端口或目标端口不同,我们将在后面介绍。
首先,确保你位于存储捕获文件的正确目录中:
cd ~/project
要过滤之前捕获的端口 80(HTTP)的流量,请运行:
tshark -r tcp_capture.pcap -Y "tcp.port==80"
-r
标志指定输入文件,而 -Y
应用显示过滤器。此命令从 tcp_capture.pcap
读取数据包,但只显示涉及端口 80 的数据包。
输出将只显示源端口或目标端口为 80 的数据包:
1 0.000000000 192.168.1.2 → 93.184.216.34 TCP 74 49152 → 80 [SYN] Seq=0 Win=64240 Len=0 MSS=1460
2 0.028763000 93.184.216.34 → 192.168.1.2 TCP 74 80 → 49152 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0
3 0.028852000 192.168.1.2 → 93.184.216.34 TCP 66 49152 → 80 [ACK] Seq=1 Ack=1 Win=64240 Len=0
此输出显示了客户端(192.168.1.2)和 Web 服务器(93.184.216.34)之间完整的 TCP 三次握手(SYN、SYN - ACK、ACK)。
要专门过滤发往端口 80(目标端口)的流量,即显示对 Web 服务器的请求,请使用:
tshark -r tcp_capture.pcap -Y "tcp.dstport==80"
要过滤来自端口 80(源端口)的流量,通常显示 Web 服务器的响应,请使用:
tshark -r tcp_capture.pcap -Y "tcp.srcport==80"
你可以将此过滤器与其他过滤器结合使用,以进行更精确的分析。例如,要仅查看 HTTP GET 请求(最常见的 Web 请求类型):
tshark -r tcp_capture.pcap -Y "tcp.port==80 && http.request.method==GET"
这将端口过滤器与 HTTP 协议过滤器结合使用,专门显示 Web 浏览器何时向服务器请求页面。
-V
显示结果在这一步中,我们将探讨如何使用 Wireshark 的 -V
(详细模式)选项查看全面的数据包详细信息。在排查网络问题时,查看完整的协议解析信息至关重要。-V
标志会显示网络协议栈的每一层,从以太网帧到应用层协议,帮助你确切了解网络流量中正在发生的情况。
首先,确保你位于存储捕获文件的正确目录中。这很重要,因为 Tshark 需要访问你要分析的文件:
cd ~/project
显示所有数据包详细信息的基本命令会展示 Tshark 能够解析的所有内容。当你需要检查网络通信的完整结构时,这非常有用:
tshark -r tcp_capture.pcap -V
详细输出会以结构化的格式显示技术细节。以下是各部分的含义:
Frame 1: 74 bytes on wire (592 bits), 74 bytes captured (592 bits)
Ethernet II, Src: 00:11:22:33:44:55, Dst: 66:77:88:99:aa:bb
Internet Protocol Version 4, Src: 192.168.1.2, Dst: 93.184.216.34
Transmission Control Protocol, Src Port: 49152, Dst Port: 80, Seq: 0, Ack: 0, Len: 0
在处理大型捕获文件时,将过滤器与详细输出结合使用有助于聚焦相关流量。此示例仅显示 HTTP 流量(端口 80),并将输出限制为前 20 行:
tshark -r tcp_capture.pcap -Y "tcp.port==80" -V | head -n 20
为了便于文档记录或后续分析,你可以将详细输出保存到文本文件中。这会创建一个永久的数据包检查记录:
tshark -r tcp_capture.pcap -V > verbose_output.txt
要检查特定的协议元素,如 HTTP 头信息,可以将协议过滤器与详细模式结合使用。在调试 Web 应用程序或分析 HTTP 事务时,这很有帮助:
tshark -r tcp_capture.pcap -Y "http" -V
在本次实验中,你学习了如何使用 Wireshark 的 tshark
命令行工具分析 TCP 会话。你使用特定过滤器捕获了 TCP 流量,检查了 TCP 握手细节,并生成了用于分析的示例流量。
此外,你还探索了列出端点之间 TCP 会话以及过滤特定端口流量的技术。本次实验通过详细输出和会话统计信息,让你亲身体验了数据包检查,有助于进行有效的网络分析。