Wireshark是一款功能强大的网络封包分析软件。它能捕获流经网卡的数据报文,并以尽可能详细的方式展示网络封包的各类信息。作为网络封包与流量分析领域的利器,它深受网络工程师和分析师的青睐。
本文将系统介绍Wireshark的核心使用方法,主要内容包括:
- Wireshark主界面构成解析。
- 简单抓包示例,学习如何捕获并初步分析数据包。
- 过滤器的深度使用,包括协议过滤、端口/IP过滤以及数据包内容过滤。
Wireshark软件与主界面概览
首先,我们来认识Wireshark。下图展示了Wireshark启动后的主界面:

这个界面是进行所有分析操作的基础,下图对其主要区域进行了标注:

一个简单的抓包示例
- 启动抓包:点击菜单栏的
Capture -> Options,选择正在使用的网卡(例如WLAN),然后点击 Start 按钮。

- 执行操作:Wireshark处于抓包状态后,执行需要监控的网络操作,例如在命令行中执行
ping www.baidu.com。
- 停止与过滤:操作完成后,点击停止按钮。为避免无关数据包干扰,可在过滤栏输入条件。例如,输入
ip.addr == 119.75.217.26 and icmp 可以只显示与百度服务器IP相关且协议为ICMP的数据包。

至此,一个完整的抓包流程就完成了。接下来,我们深入了解界面和过滤功能。
Wireshark抓包界面详解
主界面的数据包列表会使用不同颜色区分协议,颜色规则可以在 View -> Coloring Rules 中查看和定制。

界面主要分为四个部分:
-
显示过滤器 (Display Filter):用于对已捕获的数据包列表进行筛选。相关设置路径:Analyze -> Display Filters。

-
数据包列表 (Packet List Pane):显示所有捕获到的数据包,包含编号、时间戳、源/目的地址、协议、长度和概要信息。

-
数据包详情 (Packet Details Pane):选中列表中的某个数据包后,此处会分层显示该数据包的所有详细信息,这是协议分析的核心区域。通常包括:
- Frame: 物理层数据帧概况。
- Ethernet II: 数据链路层以太网帧头部。
- Internet Protocol Version 4: 网络层IP包头。
- Transmission Control Protocol: 传输层TCP段头部。
- 应用层协议 (如Hypertext Transfer Protocol): 应用层信息。

例如,展开一个TCP包的详情,可以看到每个字段的具体值,理解这些字段对于网络协议分析至关重要。

-
数据包字节 (Packet Bytes Pane): 以十六进制和ASCII码形式显示数据包的原始字节。
Wireshark过滤器设置详解
面对海量数据包,过滤器能帮助我们快速定位目标。Wireshark提供两种过滤器:抓包过滤器和显示过滤器。
抓包过滤器 (Capture Filters)
在开始捕获前设置,用于决定哪些数据包被捕获进来。路径:Capture -> Capture Filters。

使用方法示例:在抓包前设置过滤条件 ip host 60.207.246.216 and icmp,则只捕获与该主机IP相关的ICMP包。


显示过滤器 (Display Filters)
在捕获完成后使用,从已捕获的数据包中筛选显示内容。在组网简单或流量不大的场景下,掌握这些网络抓包技能并熟练使用显示过滤器即可满足大部分需求。
使用方法示例:捕获所有流量后,在显示过滤器栏输入 ip.addr == 211.162.2.183 and icmp 来筛选特定主机的ICMP包。

过滤器表达式规则
1. 抓包过滤器语法
- 协议过滤:直接输入协议名,如
tcp, http。

- IP过滤:
host 192.168.1.104, src host 192.168.1.104, dst host 192.168.1.104。
- 端口过滤:
port 80, src port 80, dst port 80。
- 逻辑运算符:
&& (与), || (或), ! (非)。例如:src host 192.168.1.104 && dst port 80。
2. 显示过滤器语法
- 比较操作符:
== (等于), != (不等于), > (大于), < (小于), >= (大于等于), <= (小于等于)。
- 协议过滤:直接输入小写协议名,如
tcp, http, icmp。
- IP过滤:
ip.src ==192.168.1.104 (源地址)
ip.dst==192.168.1.104 (目标地址)
ip.addr == 192.168.1.104 (源或目标地址)

- 端口过滤:
tcp.port ==80 (源或目的端口)
tcp.srcport == 80 (TCP源端口)
tcp.dstport == 80 (TCP目的端口)

- HTTP方法过滤:
http.request.method=="GET"。
- 逻辑运算符:
and, or, not。例如:ip.addr == 192.168.1.104 and icmp。

- 按数据包内容过滤:使用
contains 关键词。例如,要过滤负载中包含“abcd”的TCP流,可选中相应数据区域,右键选择“作为过滤器应用” -> “选中”,然后在生成的过滤器后添加 and tcp contains "abcd"。



Wireshark抓包分析TCP三次握手
TCP通过三次握手建立可靠连接。
- 第一次握手:客户端发送
SYN=1, Seq=0 的包至服务器。
- 第二次握手:服务器回复
SYN=1, ACK=1, Seq=0, Ack=1 的包。
- 第三次握手:客户端发送
ACK=1, Seq=1, Ack=1 的包确认连接。
抓包分析步骤:
- 启动Wireshark抓包,并访问一个网站(如
www.huawei.com)。
- 通过
ping 命令获取该网站IP(例如 211.162.2.183)。

- 设置显示过滤器
ip.addr == 211.162.2.183,即可观察到TCP三次握手及后续的HTTP通信数据包。

第一次握手数据包详情:
标志位SYN置1,序列号Seq=0。

第二次握手数据包详情:
标志位SYN和ACK均置1,确认号Ack=客户端Seq+1=1。

第三次握手数据包详情:
标志位ACK置1,序列号Seq=1,确认号Ack=服务器Seq+1=1。

连接建立后,开始数据传输。TCP包头的Flags字段常见标识含义如下,这些技能也是网络安全分析的基础:
- SYN:发起连接。
- FIN:终止连接。
- ACK:确认响应。
- PSH:推送数据,接收方应尽快交付给应用层。
- RST:重置连接。

Wireshark常用操作调整
为了方便分析,可以调整时间戳显示格式。路径:View -> Time Display Format -> Date and Time of Day。调整后,数据包列表的时间列将显示具体的日期和时刻。

|