在 Tshark 中测量服务响应时间

WiresharkWiresharkBeginner
立即练习

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

简介

在本次实验中,你将学习使用 Wireshark 的命令行工具 Tshark 来测量 SMB 服务的响应时间。你将捕获 TCP 端口 445 上的网络流量,分析会话响应时间,并应用过滤器来检查特定主机的通信情况。

这些实践练习将指导你生成测试流量,使用 -z smb,srt 等命令计算 SMB 性能指标,并利用 Tshark 的统计功能分析结果。你将在 Linux 环境中亲身体验捕获过滤器(-f "tcp port 445")和显示过滤器(-Y "ip.addr==10.0.0.1")的使用。


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/capture_filters("Capture Filters") wireshark/WiresharkGroup -.-> wireshark/export_packets("Exporting Packets") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") wireshark/WiresharkGroup -.-> wireshark/commandline_usage("Command Line Usage") subgraph Lab Skills wireshark/packet_capture -.-> lab-548933{{"在 Tshark 中测量服务响应时间"}} wireshark/display_filters -.-> lab-548933{{"在 Tshark 中测量服务响应时间"}} wireshark/capture_filters -.-> lab-548933{{"在 Tshark 中测量服务响应时间"}} wireshark/export_packets -.-> lab-548933{{"在 Tshark 中测量服务响应时间"}} wireshark/packet_analysis -.-> lab-548933{{"在 Tshark 中测量服务响应时间"}} wireshark/commandline_usage -.-> lab-548933{{"在 Tshark 中测量服务响应时间"}} end

使用 -f "tcp port 445" 捕获 SMB 流量

在这一步中,你将学习如何使用 Wireshark 的捕获过滤器来捕获 SMB(服务器消息块,Server Message Block)网络流量。SMB 是一种主要用于 Windows 机器之间的文件共享、打印机访问和进程间通信的网络协议。它通常使用 TCP 端口 445 进行通信,因此我们将在捕获过程中重点关注这个特定端口。

让我们先准备好环境:

  1. 首先,通过点击 Xfce 桌面的终端图标或使用快捷键 Ctrl+Alt+T,在你的 LabEx 虚拟机中打开一个终端。我们将在终端中执行所有命令。

  2. 导航到默认工作目录,我们将把捕获的文件存储在此处。这有助于保持项目的条理性:

cd ~/project
  1. 现在,我们将启动 Wireshark,这是我们用于捕获和检查 SMB 流量的网络协议分析器。& 符号会让 Wireshark 在后台运行,这样你就可以继续使用同一个终端:
wireshark &
  1. 在 Wireshark 的主界面中,我们需要配置捕获设置:
  • 选择活动的网络接口(通常是 eth1)。这是用于监控流量的网卡。
  • 在捕获过滤器字段中输入:tcp port 445。这告诉 Wireshark 只捕获 SMB 所在的端口 445 上的流量。
  • 点击蓝色的鲨鱼鳍图标开始捕获。你会看到界面开始填充数据包。
  1. 为了生成一些用于捕获的 SMB 流量,我们将在一个新的终端窗口中使用 smbclient 命令。此命令尝试连接到本地 SMB 服务器(即使我们知道它会失败,但仍会生成我们想要捕获的流量):
smbclient -N -L //127.0.0.1
  1. 捕获大约 10 秒(足以生成足够的流量)后,点击红色方块按钮停止捕获。这会冻结数据包显示,以便我们进行检查。

  2. 在主窗口中观察捕获的数据包。你应该会看到目的/源端口为 445 的 TCP 数据包。这些就是我们要分析的 SMB 协议数据包。

  3. 最后,让我们保存捕获的内容以备将来参考:

  • 转到“文件”>“另存为”
  • 将文件命名为 smb_capture.pcapng(.pcapng 格式可以保留所有捕获信息)
  • 将其保存到我们开始操作的 ~/project 目录中

使用 -z smb,srt 计算 SRT

在这一步中,你将学习如何使用 Wireshark 的命令行工具 tshark 来计算 SMB 会话响应时间(Session Response Time,SRT)。SRT 用于衡量客户端发送 SMB 请求到收到服务器响应之间的时间,这对于识别 SMB 文件共享操作中的性能瓶颈至关重要。

  1. 首先,确保你位于项目目录中,我们将在该目录中处理捕获的文件:
cd ~/project
  1. 我们将使用上一步创建的捕获文件 smb_capture.pcapng。该文件包含在端口 445 上捕获的网络流量,端口 445 是 SMB 协议的标准端口。如果你没有这个文件,可以通过运行以下命令重新创建:
wireshark -k -i eth1 -f "tcp port 445" -w smb_capture.pcapng &

等待 10 秒以捕获一些 SMB 流量,然后使用 Ctrl+C 停止捕获。

  1. 主要命令用于计算 SMB 会话响应时间。-z smb,srt 选项告诉 tshark 分析 SMB 响应时间统计信息:
tshark -r smb_capture.pcapng -z smb,srt
  1. 输出将显示一个详细的表格,其中包含 SRT 统计信息,这有助于你了解 SMB 会话的性能特征。它包括:
  • 处理的 SMB 请求总数
  • 最小响应时间(最快响应)
  • 最大响应时间(最慢响应)
  • 平均响应时间
  • 不同时间范围内响应时间的分布情况
  1. 处理大型捕获文件时,输出可能会很长。为了提高可读性,你可以将输出通过管道传递给 less,这样你就可以逐页滚动查看结果:
tshark -r smb_capture.pcapng -z smb,srt | less
  1. 为了保存这些统计信息以便后续分析或报告,可以将输出重定向到一个文本文件:
tshark -r smb_capture.pcapng -z smb,srt > smb_srt_stats.txt
  1. 你可以随时使用 cat 命令查看保存的统计信息。当你需要查看结果而无需重新运行分析时,这非常有用:
cat smb_srt_stats.txt

使用 -Y "ip.addr==10.0.0.1" 过滤主机

在这一步中,你将学习如何使用 Wireshark 的显示过滤器语法,针对特定主机 IP 地址(10.0.0.1)过滤网络流量。当你想在网络捕获中专注于与特定设备相关的流量时,这非常有用。

  1. 首先,确保你位于存储捕获文件的项目目录中:
cd ~/project
  1. 在 Wireshark 中打开你之前捕获的 SMB 流量文件。& 符号会让它在后台运行,这样你就可以继续使用终端:
wireshark smb_capture.pcapng &
  1. 在 Wireshark 的显示过滤器栏(位于主窗口顶部)中,输入以下过滤器,以查看涉及 IP 地址 10.0.0.1 的所有数据包:
ip.addr==10.0.0.1

然后按 Enter 键或点击“应用”来激活过滤器。

  1. 现在,数据包列表将仅显示满足以下任一条件的数据包:
  • 源 IP 为 10.0.0.1(来自此主机的流量)
  • 目的 IP 为 10.0.0.1(发往此主机的流量)
  1. 若要更精确地过滤,你可以只查看发往 10.0.0.1 的数据包(目的流量):
ip.dst==10.0.0.1
  1. 同样,若要只查看来自 10.0.0.1 的数据包(源流量):
ip.src==10.0.0.1
  1. 你可以使用逻辑运算符组合过滤器,以进行更精确的分析。例如,若要查看仅与 10.0.0.1 之间的 SMB 流量(使用 TCP 端口 445):
ip.addr==10.0.0.1 && tcp.port==445
  1. 若要保存过滤后的视图以便后续分析:
  • 转到“文件”>“导出指定数据包”
  • 选择“显示的”以仅保存过滤后的数据包
  • 保存为 filtered_host.pcapng

使用 -q 查看统计信息

在这一步中,我们将探索如何使用 Wireshark 的命令行工具 tshark 来分析网络流量统计信息。-q(安静模式)选项特别有用,因为它会隐藏单个数据包的详细信息,仅专注于统计摘要,从而使你更轻松地分析整体流量模式。

在开始之前,确保我们位于存储捕获文件的正确工作目录中:

cd ~/project

现在,让我们从基本统计信息开始。这个命令可以让我们在不显示每个数据包的情况下,了解捕获文件的内容概况:

tshark -r smb_capture.pcapng -q

为了了解不同网络协议在捕获文件中的分布情况,我们使用协议层次结构统计信息。这将显示每种协议的流量占比:

tshark -r smb_capture.pcapng -qz io,phs

由于我们正在处理 SMB 流量,我们可以专门分析 SMB 服务的响应时间。这有助于确定服务器对客户端请求的响应速度:

tshark -r smb_capture.pcapng -qz smb,srt

接下来,我们将查看端点统计信息,以了解哪些 IP 地址产生或接收的流量最多:

tshark -r smb_capture.pcapng -qz endpoints,ip

为了理解主机之间的通信模式,我们使用会话统计信息。这将显示特定 IP 对之间的流量量:

tshark -r smb_capture.pcapng -qz conv,ip

将统计信息保存下来以便后续分析通常很有帮助。这里我们将协议层次结构信息保存到一个文本文件中:

tshark -r smb_capture.pcapng -qz io,phs > protocol_stats.txt

最后,我们可以查看保存的统计信息以验证输出:

cat protocol_stats.txt

总结

在这个实验中,你学习了如何使用 Wireshark 和 tshark 来测量 SMB 服务的响应时间。这个过程包括使用“tcp port 445”过滤器捕获 SMB 流量,然后通过 tshark 的“-z smb,srt”参数分析会话响应时间,以评估 SMB 性能。

你还练习了使用“-Y”选项按 IP 地址过滤流量,并使用“-q”生成统计摘要。这些技术为使用命令行工具进行网络流量分析和 SMB 协议监控提供了必要的技能。