一文带你学会 Wireshark 抓包分析:ARP、ICMP、TCP、HTTP 详解
前言
在网络排障、协议学习和安全分析中,抓包是一项非常基础但又非常重要的能力。
Wireshark 作为一款常用的网络协议分析工具,可以帮助我们捕获网络数据包,并对每一层协议进行拆解和展示。借助它,我们不仅能看到“数据是否到达”,还能进一步分析“数据是如何到达的”“在哪一层出现了问题”。
本文结合常见实验场景,对 Wireshark 的基础界面、过滤器使用方法以及 ARP、ICMP、TCP、HTTP 等常见协议抓包分析进行系统整理,适合作为入门学习笔记,也适合在日常排障中快速查阅。
一、Wireshark 是什么
Wireshark 是一款网络包分析工具,主要用于捕获网络中的数据包,并自动解析出数据包的详细内容,方便用户进行协议分析和故障定位。
它的典型使用场景包括:
- 分析网络通信过程
- 观察协议交互细节
- 定位网络连接异常
- 学习 TCP/IP 协议栈工作机制
- 检查应用层请求与响应内容
与一些更偏向应用日志分析的工具不同,Wireshark 更贴近网络底层,能够直接看到链路层、网络层、传输层以及部分应用层协议的数据细节。
二、Wireshark 抓包界面介绍
Wireshark 的界面通常可以分为几个核心区域。
1. Packet List Pane:数据包列表区
数据包列表区用于展示当前捕获到的所有数据包。每一行通常包含以下信息:
- 编号
- 时间戳
- 源地址
- 目标地址
- 协议类型
- 数据包长度
- 信息摘要
不同协议的数据包在列表中通常会以不同颜色显示,便于快速区分。
2. Packet Details Pane:数据包详情区
当我们在列表区选中某一个数据包后,下方详情区会展示该数据包的分层解析结果。这一部分是 Wireshark 最核心的区域,也是协议分析最常用的观察窗口。
常见字段一般包括:
- Frame:物理层/抓包帧的基本信息
- Ethernet II:数据链路层的以太网帧头信息
- Internet Protocol Version 4:网络层 IP 头部信息
- Transmission Control Protocol:传输层 TCP 头部信息
- Hypertext Transfer Protocol:应用层 HTTP 信息
3. 以 TCP 包为例看协议字段
在分析 TCP 数据包时,我们通常会重点关注以下内容:
- 源端口和目的端口
- 序列号 Seq
- 确认号 Ack
- 标志位 SYN、ACK、FIN
- 窗口大小 Window
- 校验和 Checksum
通过这些字段,可以快速判断当前连接处于建立、传输还是断开阶段。
三、Wireshark 过滤器设置
在抓包过程中,过滤器是提升分析效率的关键。面对大量数据包时,如果不做筛选,往往很难快速找到自己真正关心的内容。
1. 常见抓包场景
例如,执行下面的命令后:
Wireshark 中会出现与 DNS 解析、ICMP 请求和 ICMP 响应相关的数据包。
2. 显示过滤器示例
如果只想查看某个 IP 的 ICMP 包,可以使用如下显示过滤器:
- ip.addr == 211.162.2.183 and icmp
复制代码除此之外,还可以使用下面这些常见过滤条件:
- arp
- icmp
- tcp
- udp
- dns
- http
- tcp.port == 80
- ip.addr == 192.168.1.1
- tcp.flags.syn == 1 and tcp.flags.ack == 0
复制代码
3. 过滤器使用建议
- 想看某一种协议时,直接使用协议名过滤
- 想锁定某台主机时,优先使用 ip.addr
- 想定位特定服务时,结合端口号过滤
- 分析 TCP 建连过程时,可重点筛选 SYN、ACK、FIN
四、常见协议抓包分析
在日常实验和排障中,最常见的协议通常包括:
下面重点整理几个最常见、最适合入门学习的协议。
五、ARP 协议分析
1. ARP 是什么
ARP(Address Resolution Protocol,地址解析协议)用于将网络层地址(IP 地址)解析为数据链路层地址(MAC 地址)。
简单来说,当主机只知道对方的 IP 地址,却不知道对方的 MAC 地址时,就需要借助 ARP 完成地址解析。
2. ARP 的基本工作过程
在同一局域网内,主机发送数据前通常会先广播一个 ARP Request,用来询问“谁是这个 IP 地址对应的设备”。目标主机收到后,会返回一个 ARP Reply,告诉发送方自己的 MAC 地址。
如果网络中启用了代理 ARP,那么在某些场景下,路由器也可能代替目标主机进行响应。
3. 抓包分析
一组完整的 ARP 通信通常由一条请求报文和一条应答报文组成:
- ARP Request:广播发送,请求目标 IP 对应的 MAC 地址
- ARP Reply:单播返回,告知自己的 MAC 地址
4. ARP 请求报文
ARP 请求报文的特点是:
- 目的 MAC 地址通常为广播地址
- 发送方会携带自己的 IP 和 MAC 信息
- 目标 MAC 地址在请求时通常未知
5. ARP 应答报文
ARP 应答报文的特点是:
- 由目标主机返回
- 明确给出本机 MAC 地址
- 通常以单播方式发送给请求方
六、ICMP 协议分析
1. ICMP 是什么
ICMP(Internet Control Message Protocol,互联网控制消息协议)属于 TCP/IP 协议族中的网络层协议,主要用于传递控制消息、错误报告以及网络诊断信息。
它最常见的应用场景包括:
- ping:检测目标主机是否可达
- tracert / traceroute:跟踪数据包经过的路由路径
- 报告网络异常,例如目标不可达、超时等
2. ping 命令分析
需要注意的是,ping 的对象通常是域名或 IP 地址,而不是完整 URL。
例如:
执行该命令时,一般会先进行 DNS 解析,随后发送 ICMP Echo Request 报文;目标主机收到后,再返回 ICMP Echo Reply 报文。
3. ping 命令的作用
ping 常用于完成以下工作:
- 验证网络连通性
- 观察网络时延
- 查看 TTL(生存时间)等信息
其基本通信流程如下:
- 本机发送 ICMP Echo Request
- 对端主机返回 ICMP Echo Reply
- 如果长时间未收到响应,则通常表现为超时
4. traceroute / tracert 分析
在 Linux/macOS 中通常使用 traceroute,在 Windows 中一般使用:
该命令的作用是观察数据包从本机到目标主机的路由跳数与路径变化。
在一些实现机制中,目标主机收到特定 UDP 探测包后,可能会返回 ICMP 差错报文,例如“端口不可达”,这可以帮助我们判断数据包是否已经到达目的主机。
七、TCP 协议分析
TCP 是一种面向连接、可靠传输的协议。在 Wireshark 中,TCP 也是最常分析的协议之一。
1. TCP 三次握手
TCP 建立连接时,通常经历三次握手:
第一次握手:
客户端向服务器发送一个 SYN 报文段,表示希望建立连接。
第二次握手:
服务器收到后,返回 SYN + ACK 报文,表示“我收到了你的请求,并同意建立连接”。
第三次握手:
客户端再返回一个 ACK 报文,至此连接正式建立。
说明:Wireshark 默认可能使用“相对序列号”显示,因此你看到的 seq=0、ack=1 更多是便于观察的显示结果。
2. TCP 四次挥手
TCP 断开连接时,通常需要经过四次挥手:
第一次挥手:
客户端发送 FIN,表示自己已经没有数据要发送了,希望关闭连接。
第二次挥手:
服务器返回 ACK,表示已经收到关闭请求。
第三次挥手:
当服务器确认数据发送完毕后,再发送一个 FIN。
第四次挥手:
客户端返回 ACK,连接彻底关闭。
在实际抓包中,第二次挥手与第三次挥手有时会紧邻出现,甚至看起来像是合并在一起,这是比较常见的现象。
八、HTTP 协议分析
HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网中最常见的应用层协议之一,主要用于浏览器与服务器之间的数据传输。
1. Wireshark 中抓取 HTTP 包
在访问网页或发起 HTTP 请求时,Wireshark 可以捕获到对应的请求报文与响应报文。
通过过滤器 http,可以快速定位 HTTP 通信内容。
2. HTTP 响应信息查看
在数据包详情区中,我们可以进一步查看 HTTP 的关键内容,例如:
这对于分析网页访问流程、接口通信问题以及服务端返回结果非常有帮助。
九、抓包学习与排障建议
对于刚接触抓包分析的同学,建议按下面的思路学习:
- 先熟悉 Wireshark 的界面和过滤器
- 从 ARP、ICMP 这类简单协议开始观察
- 再逐步分析 TCP 建连与断连过程
- 最后结合 HTTP、DNS 等应用层协议进行完整链路分析
实际排障时,也建议遵循“由下到上”的分析思路:
- 先看链路层和 IP 层是否正常
- 再看 TCP 是否成功建立连接
- 最后确认应用层是否正常响应
十、总结
Wireshark 不只是一个“抓包工具”,更是学习网络协议和定位网络问题的重要助手。
通过本文的整理,我们可以从以下几个方面快速建立基础认知:
- 认识 Wireshark 的核心界面
- 掌握常用过滤器的基本写法
- 理解 ARP、ICMP、TCP、HTTP 的典型通信过程
- 学会通过抓包定位网络通信中的关键节点
如果你正在学习计算机网络,或者平时需要做接口调试、网络排障,那么熟练掌握 Wireshark 一定会让你的分析效率提升一个层级。
图片来源说明:本文部分配图来源水印或网络。