抓包工具 Wireshark 是什么?

Wireshark 是一个开源的网络协议分析器,它的核心功能是捕获 网络上流动的数据包,并尽可能详细地显示出这些数据包的信息。它本身不会修改网络内容,也不会主动发出数据包,只是一个安静的"观察者"。

  • 前身与历史 :它最初在1998年以 Ethereal 的名字诞生,后因商标问题在2006年更名为 Wireshark。

  • 核心特点

    • 免费开源:在GNU GPL许可证下发布,任何人都可以免费使用和修改。

    • 跨平台:支持 Windows、macOS、Linux 等主流操作系统。

    • 功能强大:支持数百种协议的解析,拥有强大的过滤和统计分析功能。

🚀 如何上手使用 Wireshark?

下面我们一步步来,让您能快速开始第一次抓包。

1. 安装 Wireshark

您可以根据自己的操作系统,参考以下方式进行安装:

操作系统 安装方法
Windows 1. 访问 Wireshark 官网 下载安装包。 2. 运行安装程序,在安装过程中,务必勾选安装 Npcap 或 WinPcap,这是Wireshark用来抓包的核心驱动。
macOS 1. 从官网下载 .dmg 文件安装。 2. 或者,如果您安装了Homebrew,可以使用命令 brew install wireshark
Linux (如Ubuntu/Debian) 打开终端,执行命令: sudo apt update sudo apt install wireshark 安装过程中,可以选择允许非root用户抓包,方便日常使用。
2. 认识主界面

启动 Wireshark 后,界面主要分为几个区域,理解它们有助于快速上手:

  • 接口列表区:启动时你会看到电脑上的所有网络接口列表(如Wi-Fi、以太网、蓝牙等)。旁边跳动着的波浪线表示该接口有实时流量,选择正确的接口是抓包成功的关键。

  • 数据包列表区:开始抓包后,这里会一行行地实时显示捕获到的数据包。每一行都包含编号、时间、源地址、目标地址、协议、长度和基本信息。

  • 数据包详情区:在列表中选中一个包,这里会以树形结构显示它的详细内容,从物理层到应用层的所有协议字段都会清晰地展开。

  • 数据包字节区:最下方的区域会显示数据包的原始十六进制和ASCII码形式。

3. 开始第一次抓包:以访问网站为例

让我们通过一个简单的例子,体验一下抓包的全过程。

  1. 选择网卡并开始:在主界面的接口列表中,双击您正在使用的网卡(例如,连接Wi-Fi就选择名字带Wi-Fi或wlan0的接口)。Wireshark 会立即开始捕获所有经过该网卡的数据包。

  2. 产生流量 :打开您的浏览器,访问一个网站,比如 www.example.com

  3. 停止抓包:访问完成后,点击工具栏上的红色"停止"按钮。

  4. 初步观察 :此时您会看到数据包列表区已经被大量的数据包填满。其中,协议列为 TCPHTTP 的包将是这次网页访问的主角。

  5. 使用过滤器精准定位 :为了从海量数据中找到与 example.com 相关的包,在界面顶部的"显示过滤器"输入框中输入 httpip.addr == 93.184.216.34(此为示例IP,实际请用您访问的网站IP),然后回车。列表中就只显示HTTP协议或与该IP相关的数据包了。

4. 核心技能:用好两种过滤器

Wireshark 的强大很大程度上归功于其灵活的过滤机制。

  • 捕获过滤器 :在开始抓包前设置,只捕获符合条件的数据包,丢弃其余部分,可以帮助减少抓包文件的体积。它使用BPF语法。

    • 例如host 192.168.1.100 只捕获来自或去往该IP的数据包。
  • 显示过滤器 :在抓包结束后设置,在已捕获的所有数据包中,筛选出符合条件的数据包进行显示。它使用Wireshark特有的语法,功能更强大、更灵活。这也是我们最常用的过滤器。

下面是一些常用的显示过滤器语法,您可以现学现用:

过滤目标 过滤器表达式 说明
按协议 http 仅显示HTTP协议的数据包
dns 仅显示DNS协议的数据包
icmp 仅显示ICMP协议(如ping命令)的数据包
按IP地址 ip.addr == 192.168.1.1 显示源IP或目的IP为192.168.1.1的所有包
ip.src == 192.168.1.100 仅显示源IP为192.168.1.100的包
ip.dst == 8.8.8.8 仅显示目的IP为8.8.8.8的包
按端口 tcp.port == 80 显示源或目的TCP端口为80的所有包
tcp.srcport == 443 仅显示源TCP端口为443的包
组合过滤 http and ip.addr == 192.168.1.100 显示IP为192.168.1.100的HTTP流量
tcp.port == 80 or tcp.port == 443 显示所有HTTP(80)和HTTPS(443)流量
特定字段 tcp.analysis.retransmission 显示所有TCP重传包,用于排查网络延迟和丢包
http.request.method == "GET" 仅显示HTTP GET请求
5. 进阶技巧
  • 追踪数据流 :在数据包列表区,右键点击任何一个属于TCP或HTTP会话的数据包,选择 "追踪流" -> "TCP流"(或HTTP流),Wireshark会将这次会话的所有数据重组并显示出来,对于分析应用层协议(如HTTP的请求和响应内容)非常方便。

  • 分析三次握手 :过滤器输入 tcp,找到访问网站时的前三个包。它们分别是:

    1. 客户端发送的 [SYN] 包(请求连接)。

    2. 服务器回复的 [SYN, ACK] 包(同意连接)。

    3. 客户端发送的 [ACK] 包(确认连接建立)。这就是著名的TCP三次握手过程。

6. 常见问题与解决
  • 为什么抓不到包?

    • 是否以管理员/root权限运行?在Linux/macOS下,可能需要用 sudo 启动。

    • 是否选对了网卡?如果用的是Wi-Fi,却选择了"以太网"网卡,肯定抓不到数据。

  • 数据包太多,眼花缭乱? 这就是显示过滤器大显身手的时候,务必多加练习使用。

下载地址:以太网抓包工具Wireshark资源-CSDN下载

相关推荐
cpolar技术支持12 小时前
本地 Playwright 测试报告怎么远程复盘?Trace Viewer 跑起来后,用 cpolar 分享失败现场
前端·自动化测试·测试工具·cpolar·playwright
dog25012 小时前
写一个时延固定的拥塞控制
网络
酣大智12 小时前
华为 VRRP的抢占延迟时间
网络·tcp/ip·vrrp
hengmeida13 小时前
楼宇控制柜标准化项目交付完整规范
大数据·网络·笔记
2501_9378609413 小时前
上篇:网络编程基础与UDP套接字编程
java·网络·计算机网络
xixiaoyunya13 小时前
制造业生产数据备份:在“不停产“前提下的自动化实践
网络·安全
Figo_Cheung14 小时前
Figo权重动力学:递归本体论与跨尺度演化的形式化基础——揭示:宇宙的演化,本质上就是一场由无数观测者共同参与的、永不停歇的、跨尺度的权重重构盛宴。
网络·人工智能·量子计算
j7~14 小时前
【Linux】三十八.C++ 手写 HTTP 服务器:裸 socket + fork 多进程,从 HTTP 报文解析到浏览器打开网页
linux·网络·网络协议·学习·http·网络编程
FW-Linker14 小时前
偏远山区户外直播网络优化:多链路聚合如何保障稳定低时延传输
网络·5g·智能路由器
酣大智18 小时前
网络协议计时器 & 发包间隔汇总
运维·网络·tcp/ip