如何在 Wireshark 中过滤 http 流量?

如何在 Wireshark 中过滤 http 流量?

我怀疑我的服务器有大量来自客户端的 http 请求。我想测量 http 流量。如何使用 Wireshark 来做到这一点?或者可能有使用其他工具的替代解决方案?

这是 Wireshark 中单个 http 请求/响应流量的样子。ping 由 WinAPI 函数 ::InternetCheckConnection() 生成 替代文本 http://yowindow.com/shared/ping.png

谢谢!

答案1

Ping 数据包应使用 ICMP 类型 8(回显)或 0(回显答复),因此您可以使用以下捕获过滤器:

icmp

以及显示过滤器:

icmp.type == 8 || icmp.type == 0

对于 HTTP,您可以使用以下捕获过滤器:

tcp port 80

或显示过滤器:

tcp.port == 80

或者:

http

请注意,的过滤器http并不等同于其他两个过滤器,后者将包括握手和终止数据包。

如果您想要测量连接数而不是数据量,可以将捕获或显示过滤器限制在通信的一侧。例如,要仅捕获发送到端口 80 的数据包,请使用:

dst tcp port 80 

将其与http显示过滤器结合使用,或者使用:

tcp.dstport == 80 && http

有关捕获过滤器的更多信息,请阅读“拍摄时进行过滤“来自 Wireshark 用户指南,捕获过滤器Wireshark wiki 上的页面,或pcap 过滤器 (7)手册页。对于显示过滤器,请尝试显示过滤器Wireshark wiki 上的页面。“过滤表达式”对话框可以帮助您构建显示过滤器。

答案2

http只需使用这样的DisplayFilter 即可:

显示过滤器示例

答案3

这不是 ping。这是 ping,因为已经由 outis 发出,是一个 ICMP 回显请求。您的跟踪显示 HTTP 连接的建立和立即终止,这就是它的作用InternetCheckConnection()。有问题的 IP 77.222.43.228 解析为http://repkasoft.com/,我猜,这就是您传递给 的 URL InternetCheckConnection()

您可以使用捕获或显示过滤器来过滤此 IP 的流量host == 77.222.43.228

答案4

使用 Wireshark 1.2+ ,我将运行此批处理文件:

:: Script to save a wireshark trace
:: tshark -D to get interface id
@echo off
C:
cd C:\Temp\NetTracing
set PATH=%PATH%;C:\Program Files\Wireshark
echo Tracing host 127.1 or 172.1.1.1 or 10.0.0.1

tshark.exe -i 4 -a duration:900 -S -f "tcp port 80" -w trace.cap

相关内容