Wireshark是一款强大的网络封包分析软件,它能撷取流经网卡的网络数据包,并以最详尽的方式展示其内容。它使用WinPCAP接口直接与网卡交互,在网络排障、协议学习和安全分析领域是不可或缺的利器,深受广大网络工程师的青睐。
本文旨在通过一个完整的实战流程,带你快速掌握Wireshark的核心功能,主要内容包括:
- Wireshark主界面概览。
- 使用Wireshark进行简单抓包并分析数据包内容。
- 熟练掌握抓包过滤器和显示过滤器的使用技巧,快速定位目标数据。
Wireshark主界面介绍
启动Wireshark后,其主界面主要分为以下几个区域:

-
Display Filter (显示过滤器):用于在已捕获的数据包列表中设置条件进行筛选。你可以在菜单栏通过 Analyze -> Display Filters 来管理过滤器。

-
Packet List Pane (数据包列表):显示所有捕获到的数据包,包含编号、时间戳、源/目的地址、协议、长度和概要信息。不同协议的数据包会以不同颜色高亮,颜色规则可通过 View -> Coloring Rules 查看。

-
Packet Details Pane (数据包详情):当你在列表中选择一个具体的数据包后,此处会分层展示该数据包的所有协议细节。这是分析TCP/IP协议栈的核心区域,从上至下通常包括:
- Frame:物理层数据帧概况。
- Ethernet II:数据链路层以太网帧头部信息。
- Internet Protocol Version 4:网络层IP包头信息。
- Transmission Control Protocol:传输层TCP段头部信息。
- Hypertext Transfer Protocol:应用层HTTP协议信息(如果是HTTP流量)。

-
Dissector Pane (数据包字节流):以十六进制和ASCII码形式显示数据包的原始字节内容。
简单抓包实战
让我们通过一个简单的例子开始第一次抓包。
-
启动抓包:点击菜单栏 Capture -> Options,在接口列表中选择你正在使用的网卡(例如WLAN),然后点击“Start”按钮。此时Wireshark进入抓包状态。

-
执行操作:在命令行中执行 ping www.baidu.com。

-
停止并分析:操作完成后,点击停止按钮。在显示过滤器栏输入 icmp,可以快速筛选出所有ICMP协议(ping命令使用的协议)的数据包。为了更精确,你可以使用 ip.addr == [目标IP] and icmp 这样的表达式。

至此,你已经成功完成了抓包。接下来,为了在复杂的网络流量中精准定位问题,学习过滤器的使用至关重要。
Wireshark过滤器使用详解
Wireshark提供两种过滤器:抓包过滤器 (Capture Filter) 和显示过滤器 (Display Filter)。
1. 抓包过滤器
在开始抓包之前设置,用于决定哪些类型的流量能被捕获。这可以避免捕获大量无关数据,减轻负荷。
- 设置路径:
Capture -> Capture Filters。
- 使用示例:只捕获主机
60.207.246.216 的ICMP流量,可设置过滤条件为 host 60.207.246.216 and icmp。

2. 显示过滤器
在抓包之后使用,用于在已捕获的海量数据包中筛选出需要分析的部分。这是最常用的过滤方式。
- 基本语法:
- 协议过滤:直接输入小写的协议名,如
tcp, http, dns。
- IP地址过滤:
ip.src == 192.168.1.1 (源IP)
ip.dst == 192.168.1.1 (目的IP)
ip.addr == 192.168.1.1 (源或目的IP)

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

- 逻辑运算符:
and (与), or (或), not (非)。
- 示例:
ip.addr == 192.168.1.104 and icmp

- 内容过滤:使用
contains 关键词。例如,要过滤数据部分包含“abcd”的包,可右键点击数据区相应部分,选择“Apply as Filter -> Selected”,然后在生成的表达式后修改,如 data.data contains “abcd”。

Wireshark抓包分析TCP三次握手
TCP是可靠传输的基石,其连接建立过程(三次握手)是网络分析中的经典场景。
-
握手过程简述:
- 第一次握手:客户端发送
SYN=1, Seq=x 的包到服务器,请求连接。
- 第二次握手:服务器同意连接,回复
SYN=1, ACK=1, Ack=x+1, Seq=y 的包。
- 第三次握手:客户端确认,发送
ACK=1, Ack=y+1, Seq=x+1 的包。连接建立。
-
Wireshark实战分析:
-
启动Wireshark抓包,然后浏览器访问一个网站(如 www.huawei.com)。
-
使用 ping 命令获取该网站IP(例如 211.162.2.183)。
-
在显示过滤器中输入 ip.addr == 211.162.2.183,筛选出相关流量。

-
在数据包列表中,可以清晰地看到前三个包就是TCP三次握手的过程。
-
第一次握手包:客户端发出SYN包。关键标志:SYN=1, Seq=0。

-
第二次握手包:服务器回复SYN+ACK包。关键标志:SYN=1, ACK=1, Ack=1, Seq=0。

-
第三次握手包:客户端发送ACK确认包。关键标志:ACK=1, Ack=1, Seq=1。至此,连接建立,后续开始传输HTTP等应用层数据。

在TCP包的详情中,FLAGS字段非常重要,常见的标志位含义如下:
- SYN:发起连接。
- FIN:终止连接。
- ACK:确认应答。
- PSH:提示接收端应立即将数据提交给应用层。
- RST:重置连接,通常表示异常中断。

常用操作与技巧
- 调整时间显示格式:默认的时间戳可能不易读,可以通过
View -> Time Display Format -> Date and Time of Day 调整为更直观的日期时间格式。

掌握以上内容,你便已经具备了使用Wireshark进行基础网络抓包与协议分析的能力。在实践中,结合具体的网络环境和问题场景,灵活运用过滤器进行数据包分析,是诊断网络问题、理解协议交互的关键。
|