杰瑞科技汇

Wireshark抓包怎么用?新手入门教程指南

Wireshark 抓包终极教程:从入门到精通

Wireshark 是一款功能极其强大的网络协议分析器,被誉为“网络界的瑞士军刀”,它允许你捕获并实时查看通过网络的数据包,是网络故障排查、性能分析、安全审计和学习的必备工具。

本教程将分为以下几个部分:

  1. 准备工作:安装与初识
  2. 核心操作:捕获数据包
  3. 数据分析:解读数据包
  4. 高级技巧:过滤与统计
  5. 实战案例:常见场景应用
  6. 重要提示与注意事项

第一部分:准备工作:安装与初识

下载与安装

  • 官方网站https://www.wireshark.org/
  • 下载:根据你的操作系统(Windows, macOS, Linux)下载对应的安装包。
  • 安装
    • Windows:双击安装包,按照向导一步步操作。强烈建议勾选 "Install Npcap" 选项,Npcap 是 WinPcap 的继承者,是 Wireshark 在 Windows 上捕获数据包的核心驱动,安装时可能需要管理员权限。
    • macOS:使用 Homebrew 安装最方便:brew install --cask wireshark
    • Linux (Ubuntu/Debian):使用 apt 安装:sudo apt update && sudo sudo apt install wireshark,安装时会提示是否允许非管理员用户捕获数据包,通常选择 "Yes for all"。

初识 Wireshark 界面

安装并打开 Wireshark,你会看到三个主要部分:

  • 工具栏:位于顶部,提供文件操作(打开、保存)、捕获控制(开始、停止)等常用功能。
  • 接口列表:位于左上角,显示你电脑上所有可用于抓包的网络接口(如以太网、Wi-Fi、Loopback 等)。
  • 数据包列表:位于左下角,是抓包后的核心区域,它会以列表形式显示捕获到的每一个数据包,包括编号、时间、源地址、目标地址、协议和长度等信息。
  • 数据包详情:位于右上角,当你选中左侧列表中的任何一个数据包时,这里会显示该数据包的详细协议解析信息。
  • 数据包字节:位于右下角,以十六进制和 ASCII 码的形式显示数据包的原始内容。

第二部分:核心操作:捕获数据包

选择捕获接口

在开始抓包前,你必须告诉 Wireshark 从哪个网络接口捕获数据。

  • 接口列表 中,选择你想要监控的网卡。
    • 如果你想抓取访问互联网的流量,选择你的主网卡(通常是 "Ethernet" 或 "Wi-Fi")。
    • 如果你想分析本机程序之间的通信,可以选择 "Loopback" 接口(对应 IP 0.0.1)。
  • 提示:不确定选哪个?可以尝试访问一个网站,然后观察哪个接口有数据流量,或者直接选择你当前正在使用的那个。

开始与停止捕获

  • 开始捕获:选中正确的接口后,点击工具栏上的蓝色鲨鱼鳍图标(或按 F5 键)。
  • 停止捕获:捕获到足够的数据后,点击红色的方块图标(或按 F6 键)停止捕获。

实践:现在就尝试开始捕获,然后打开浏览器访问一个网站(如 www.baidu.com),几秒钟后停止捕获,你应该会在数据包列表中看到大量的数据包。


第三部分:数据分析:解读数据包

这是 Wireshark 最核心、最强大的部分。

理解数据包列表

数据包列表中的每一行代表一个数据包,关键列包括:

列名 含义 重要性
No. 数据包序号 用于唯一标识一个数据包
Time 相对时间戳 从捕获开始到该数据包经过的时间
Source 源 IP 地址/端口 发送数据包的计算机和应用程序
Destination 目标 IP 地址/端口 接收数据包的计算机和应用程序
Protocol 使用的网络协议 如 TCP, UDP, DNS, HTTP 等
Length 数据包长度

实战:在捕获到的百度的流量中,找到访问 www.baidu.com 的 HTTP 请求,你可以通过 Protocol 列筛选 HTTP,然后查看 Destination 列,找到目标 IP 对应百度的地址。

解读数据包详情

点击列表中的任意一个数据包,右上角的 数据包详情 区域会展开,它像一个“目录树”,层层展示了数据包的封装结构。

  • 从底层到顶层:数据包的封装顺序通常是 物理层 -> 数据链路层 -> 网络层 -> 传输层 -> 应用层
    • Ethernet II (数据链路层):包含源和目的 MAC 地址。
    • Internet Protocol Version 4 (网络层):包含源和目的 IP 地址。
    • Transmission Control Protocol (传输层):包含源和目的端口号,以及 TCP 的标志位(如 SYN, ACK, FIN)。
    • Hypertext Transfer Protocol (应用层):包含我们真正关心的 HTTP 请求或响应内容,如 GET /index.html HTTP/1.1

实战:选中一个 HTTP 请求包,在详情区展开它,你会看到:

  1. Frame:物理帧信息。
  2. Ethernet II:MAC 地址。
  3. IPv4:你的 IP 和百度的 IP。
  4. TCP:你的随机端口(如 54321)和百度服务器的 80 端口,以及 SYN 标志位(表示这是一个连接请求)。
  5. HTTP:里面清晰地显示了 GET / HTTP/1.1 等请求头。

查看原始数据

在右下角的 数据包字节 区域,你可以看到数据包最原始的十六进制和 ASCII 码表示,这对于分析协议未知的协议或数据加密后的内容非常有用。


第四部分:高级技巧:过滤与统计

捕获成千上万个数据包后,如何快速找到你关心的?答案是 过滤

过滤表达式

Wireshark 的过滤功能非常强大,位于数据包列表上方的显示过滤器栏。

  • 语法协议字段 [比较符] 值
  • 常用过滤器
    • 按 IP 过滤
      • ip.addr == 192.168.1.100:只显示与 IP 168.1.100 相关的数据包。
      • ip.addr == 192.168.1.100 && ip.addr == 8.8.8.8:显示 168.1.1008.8.8 之间的通信。
    • 按端口过滤
      • tcp.port == 80:只显示目标或源端口为 80 (HTTP) 的 TCP 数据包。
      • tcp.dstport == 443:只显示目标端口为 443 (HTTPS) 的数据包。
    • 按协议过滤
      • http:只显示 HTTP 协议的数据包。
      • dns:只显示 DNS 协议的数据包。
      • tcp:只显示 TCP 协议的数据包。
      • icmp:只显示 ICMP 协议的数据包(如 ping 命令)。
    • 组合过滤
      • http and ip.addr == 192.168.1.100:显示 168.1.100 的所有 HTTP 流量。
      • tcp.port == 80 or tcp.port == 443:显示所有 HTTP 和 HTTPS 流量。
    • 排除过滤
      • not dns:显示除了 DNS 之外的所有流量。

提示:在输入过滤器时,Wireshark 会提供自动补全功能,善用它!

统计功能

Wireshark 提供了强大的统计分析工具,可以帮助你宏观地了解网络流量状况。

  • 统计 -> 流量图:以图形方式展示网络负载随时间的变化,可以快速定位流量高峰期。
  • 统计 -> 端口:显示网络中各端口的流量分布,可以快速发现异常端口。
  • 统计 -> 协议分层:以饼图或条形图显示各种协议的占比。
  • 统计 -> TCP 流:将 TCP 连接视为一个“流”,可以清晰地看到一次完整的 TCP 握手、数据传输和挥手过程。
  • 统计 -> HTTP:分析 HTTP 请求,可以按域名、状态码(如 200, 404)等进行统计。

第五部分:实战案例:常见场景应用

分析 DNS 解析过程

  1. 目标:查看访问 www.google.com 时,DNS 是如何解析其 IP 地址的。
  2. 步骤
    • 开始捕获。
    • 在浏览器清空缓存(可选),然后访问 www.google.com
    • 停止捕获。
    • 在过滤器中输入 dns
    • 在数据包列表中,你会看到一个 DNS 请求包(类型为 A 记录查询)和一个 DNS 响应包(类型为 A 记录响应)。
    • 点击请求包,在详情区展开 DNS 层,可以看到 www.google.com 的查询信息,点击响应包,可以看到解析出的 IP 地址列表。

排查网页加载慢的问题

  1. 目标:怀疑某个网站加载慢是因为图片资源加载慢。
  2. 步骤
    • 开始捕获。
    • 访问该网站。
    • 停止捕获。
    • 过滤器输入 http
    • 在数据包列表中,找到所有 GET 请求。
    • 在统计 -> HTTP 中,可以按响应状态码排序,看是否有大量的 404 或 500 错误。
    • 或者,手动查看每个图片请求的 TCP 流,看是否存在重传(Retransmission),这通常意味着网络丢包或延迟。

分析 TCP 三次握手

  1. 目标:亲眼看到 TCP 连接是如何建立的。
  2. 步骤
    • 过滤器输入 tcp
    • 访问一个网站。
    • 在数据包列表中,找到一个 TCP 流的开始部分。
    • 你会看到三个连续的包:
      1. 第一个包 (SYN)Seq=1, Ack=0, Flags=...SYN... (客户端向服务器发起连接请求)。
      2. 第二个包 (SYN-ACK)Seq=1, Ack=2, Flags=...SYN, ACK... (服务器确认请求,并自己也发起一个连接请求)。
      3. 第三个包 (ACK)Seq=2, Ack=2, Flags=...ACK... (客户端确认服务器的请求)。
    • 这就是著名的“三次握手”。

第六部分:重要提示与注意事项

  1. 权限问题:在 Windows 和 Linux 上,捕获数据包通常需要管理员/ root 权限。
  2. 隐私与法律
    • 切勿在未经授权的情况下抓取他人的网络流量! 这是严重的侵犯隐私行为,并且在大多数国家和地区是违法的。
    • Wireshark 主要应用于分析自己的网络、自己的设备或获得明确授权的网络。
  3. 性能影响
    • 在高流量网络下长时间抓包会产生巨大的文件,并消耗大量 CPU 和内存。
    • 如果只想关注特定流量,尽早使用捕获过滤器(在捕获选项中设置),它的效率远高于显示过滤器。
  4. 理解捕获过滤器 vs 显示过滤器
    • 捕获过滤器:在数据包被捕获到内存/文件之前进行过滤,语法基于 tcpdump,功能相对简单但效率极高,适合在流量巨大时使用。
    • 显示过滤器:在捕获完成后,在内存中对已抓取的数据包进行过滤,功能极其强大,但不会减少捕获的数据量。

Wireshark 是一个需要不断练习才能掌握的工具,不要指望看一遍教程就能成为专家,从最简单的开始:捕获一个网站的流量,看看 DNS、HTTP 包长什么样,然后逐步尝试使用过滤器、分析 TCP 流、查看统计信息。

祝你学习愉快,早日成为网络分析高手!

分享:
扫描分享到社交APP
上一篇
下一篇