简介
在本实验中,你将学习如何使用网络分析必备工具 Wireshark 过滤网络流量。你将练习分析预先捕获的数据包文件,应用显示过滤器以筛选特定流量,并导出过滤后的结果供进一步检查。这些技能可以帮助你识别网络模式、排查连接问题,以及理解网络通信。
使用 Tshark 入门
在使用图形界面之前,先从 tshark 开始。它是 Wireshark 的命令行版本,适合快速分析和编写脚本。在本步骤中,你将验证安装情况,并对提供的数据包捕获文件进行基本检查。
首先检查版本,确认
tshark已正确安装。tshark --version你应该看到包含 Wireshark 和
tshark版本的信息,类似下面的输出:TShark (Wireshark) x.x.x (Git vx.x.x packaged as x.x.x-1) ...项目目录中已经放置了名为
capture.pcap的示例数据包捕获文件。使用ls命令确认文件存在。ls -lh capture.pcap输出会显示文件的详细信息,包括文件大小和名称。
-rw-rw-r-- 1 labex labex 9.1M Oct 24 2015 capture.pcap使用 Wireshark 自带的
capinfos工具获取捕获文件的概览信息。capinfos capture.pcap此命令会提供文件的元数据,例如数据包数量、捕获持续时间和平均数据包大小。
File name: capture.pcap File type: Wireshark/tcpdump/... - pcap File encapsulation: Ethernet File timestamp precision: microseconds (6) Packet size limit: file hdr: 65535 bytes Number of packets: 14 k File size: 9444 kB Data size: 9216 kB Capture duration: 298.505344 seconds First packet time: 2011-01-26 02:52:22.484409 Last packet time: 2011-01-26 02:57:20.989753 Data byte rate: 30 kBps Data bit rate: 247 kbps Average packet size: 646.28 bytes Average packet rate: 47 packets/s SHA256: 77d06d3f33f1a95fb9f2610f20ead8ce978449077d6ba22d4945b85bd48f75d1 RIPEMD160: 68e950b2e438c7be011a46646ddfc8105b65b339 SHA1: 06e502dca8dbfe8e6a9cabc61f722d94756f6db9 Strict time order: True Number of interfaces in file: 1 Interface #0 info: Encapsulation = Ethernet (1 - ether) Capture length = 65535 Time precision = microseconds (6) Time ticks per second = 1000000 Number of stat entries = 0 Number of packets = 14261最后,使用
tshark读取文件中的前 5 个数据包。-r选项指定输入文件,-c选项限制数据包数量。tshark -r capture.pcap -c 5此命令会为前 5 个数据包分别显示一行摘要,帮助你快速了解其中的流量。
1 0.000000 192.168.3.131 → 72.14.213.138 HTTP 997 GET /complete/search?client=chrome&hl=en-US&q=cr HTTP/1.1 2 0.029841 72.14.213.138 → 192.168.3.131 HTTP 440 HTTP/1.1 200 OK (text/javascript) 3 0.223883 192.168.3.131 → 72.14.213.102 TCP 66 55950 → 80 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=4 SACK_PERM=1 4 0.229423 192.168.3.131 → 72.14.213.138 TCP 54 57011 → 80 [ACK] Seq=944 Ack=387 Win=16192 Len=0 5 0.242649 72.14.213.102 → 192.168.3.131 TCP 66 80 → 55950 [SYN, ACK] Seq=0 Ack=1 Win=5720 Len=0 MSS=1430 SACK_PERM=1 WS=64
使用 Tshark 进行基本过滤
数据包捕获文件可能包含数千个数据包,因此很难找到特定信息。显示过滤器可以根据指定条件缩小查看范围,只显示匹配条件的数据包。在本步骤中,你将学习如何使用 tshark 应用基本过滤器。
使用
-Y(大写字母 Y)选项应用显示过滤器。要只查看 TCP 数据包,请使用过滤器tcp。查看文件中的前 5 个 TCP 数据包。tshark -r capture.pcap -Y "tcp" -c 5此时,输出中只会显示协议为 TCP 的数据包。
你也可以根据 IP 地址进行过滤。要查看源 IP 地址为
192.168.3.131的所有数据包,请使用ip.src过滤器。tshark -r capture.pcap -Y "ip.src == 192.168.3.131" -c 5注意,这里使用
==进行精确匹配。你可以使用
&&(AND)等逻辑运算符组合过滤器。要查找源 IP 地址为192.168.3.131的 TCP 数据包,请组合前面使用的两个过滤器。tshark -r capture.pcap -Y "tcp && ip.src == 192.168.3.131"你可以将过滤后的输出保存到新的捕获文件,供之后分析。
-w选项指定输出文件。将过滤后的 TCP 数据包保存到名为filtered_tcp.pcap的文件中。tshark -r capture.pcap -Y "tcp && ip.src == 192.168.3.131" -w filtered_tcp.pcap确认新文件已经创建。
ls -lh filtered_tcp.pcap你应该能在目录中看到这个新的、体积更小的捕获文件。
使用 Wireshark 图形界面查看流量
Tshark 非常适合自动化操作,而 Wireshark 图形用户界面(GUI)则提供了功能丰富的交互式环境,便于深入分析数据包。在本步骤中,你将启动 Wireshark GUI,并了解其主要组成部分。
从终端启动 Wireshark 应用程序。重要:请确保使用 Desktop Interface,而不是独立的 Terminal Interface。Wireshark 是需要图形环境才能正常运行的 GUI 应用程序。 末尾的
&会让应用程序在后台运行,从而释放终端以执行其他命令。wireshark &完成本步骤并运行步骤检查时,请保持 Wireshark 处于打开状态。
注意: 如果你在没有桌面环境的独立终端中运行此命令,Wireshark 将无法启动。对于 GUI 应用程序,请始终使用 Desktop Interface。

Wireshark 主窗口会出现。由于我们要分析已有文件,因此不需要选择网络接口。打开
capture.pcap文件即可。- 在菜单栏中点击
File->Open...。 - 在文件对话框中进入
/home/labex/project,然后选择capture.pcap。 - 点击
Open按钮。
- 在菜单栏中点击
主窗口现在会显示文件中的数据包。花一点时间熟悉 3 个主要窗格:

- 数据包列表窗格(顶部): 显示捕获文件中所有数据包的列表,其中包含数据包编号、时间、源、目标、协议以及其他摘要信息等列。
- 数据包详细信息窗格(中部): 显示列表窗格中当前选中数据包的协议层详细信息,并且可以展开。你可以展开每一层(例如 Ethernet、IP、TCP)以查看其中的字段。
- 数据包字节窗格(底部): 以十六进制和 ASCII 格式显示所选数据包的原始数据。
在数据包列表窗格中点击不同的数据包,观察数据包详细信息窗格和数据包字节窗格中的信息如何随之更新。这种交互式查看是 Wireshark 最强大的功能之一。
在 GUI 中应用显示过滤器
你在 tshark 中学到的显示过滤器语法,在 Wireshark GUI 中完全相同。GUI 会立即提供可视化反馈,因此可以方便地编写和测试复杂过滤器。
在 Wireshark 窗口顶部找到显示过滤器栏。这是一个较长的文本输入框,通常会显示「Apply a display filter...」作为占位文本。
过滤 HTTP 流量。在过滤器栏中输入
http,然后按Enter,或点击过滤器栏右侧的Apply按钮(箭头图标)。http
数据包列表窗格会立即更新,只显示 HTTP 数据包。注意,过滤器栏会变成绿色,表示过滤器语法有效。如果输入无效过滤器,过滤器栏会变成红色。
接下来查找所有 DNS 流量。清除之前的过滤器,在过滤器栏中输入
dns,然后按Enter。dns现在你会看到捕获文件中的所有域名系统查询和响应。
你可以像使用
tshark一样组合过滤器。要查找涉及 IP 地址192.168.3.131的 HTTP 流量(无论该地址是源地址还是目标地址),请将ip.addr过滤器与http过滤器组合使用。http && ip.addr == 192.168.3.131
这种组合可以帮助你精确定位特定通信。你还可以尝试其他过滤器,例如
tcp.port == 80(过滤标准 HTTP 端口上的流量)或udp(过滤 UDP 流量)。要清除过滤器并再次查看所有数据包,请点击过滤器栏中的X按钮。
导出过滤后的数据
过滤流量并找到感兴趣的事件后,你通常需要导出结果,用于生成报告、共享,或在其他工具中进行进一步分析。Wireshark 和 tshark 提供了多种导出数据的方法。
首先,在 Wireshark GUI 中像前一步一样应用
http过滤器。将当前显示的(经过过滤的)数据包保存到新的捕获文件:
- 进入
File->Export Specified Packets...。 - 在对话框的「All Packets」区域中,确保选择
Displayed单选按钮。 - 将文件命名为
http_capture.pcap,并保存到/home/labex/project目录。

- 进入
你也可以将数据包摘要导出为文本文件或 CSV 文件。要导出为 CSV:
- 进入
File->Export Packet Dissections->As CSV...。 - 确保在「All Packets」中选择
Displayed。 - 将文件命名为
http_packets.csv,并保存到项目目录。
- 进入
你也可以在命令行中使用
tshark执行相同的导出操作,这对自动化很有帮助。下面的命令会读取原始capture.pcap,过滤http流量,并将指定字段导出到 CSV 文件。tshark -r capture.pcap -Y "http" -T fields -e frame.number -e ip.src -e ip.dst -e http.request.method -e http.host -E header=y -E separator=, > http_export_cli.csv-T fields:指定输出格式。-e ...:指定要导出的字段(列)。-E header=y:添加标题行。-E separator=,:使用逗号作为分隔符。
确认导出的文件已经创建。
ls -lh http_*你应该能在目录中看到
http_capture.pcap、http_packets.csv和http_export_cli.csv文件。
总结
在本实验中,你学习了使用 Wireshark 及其命令行版本 tshark 过滤网络流量的基础知识。你先使用 tshark 和 capinfos 检查捕获文件,然后练习应用显示过滤器,以筛选特定协议和 IP 地址;先在 tshark 中操作,再在交互式 Wireshark GUI 中操作。最后,你学习了如何将过滤结果导出为新的捕获文件和便于人阅读的 CSV 文件,用于报告和分析。这些核心技能是进行网络分析或故障排查的基础。

