抓包工具 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. 初步观察 :此时您会看到数据包列表区已经被大量的数据包填满。其中,协议列为 TCP 和 HTTP 的包将是这次网页访问的主角。

  5. 使用过滤器精准定位 :为了从海量数据中找到与 example.com 相关的包,在界面顶部的"显示过滤器"输入框中输入 http 或 ip.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下载

相关推荐
沫璃染墨1 分钟前
从零入门计算机网络系列(十一):HTTP协议进阶——从重定向原理到GET/POST与Fiddler抓包
linux·服务器·开发语言·网络·c++·tcp/ip·html
梧桐16831 分钟前
14天、31个缺陷、28个测试脚本—用 Claude Code 完成第三方软件测试
人工智能·测试工具
蓝祁子yoky1 小时前
Qt学习日记 Day13:网络编程(一)-TCP基础与Socket实战
网络·qt·学习
箓维1 小时前
TCP Socket的进阶实现
网络·笔记·tcp/ip
小羊没烦恼!2 小时前
关于分布式锁原理的一些学习与思考-redis分布式锁,zookeeper分布式锁
java·服务器·网络·学习·负载均衡
小Ti客栈2 小时前
Netty 零拷贝原理与实战
运维·服务器·网络
国科安芯2 小时前
商业光学遥感载荷焦平面供电链的低噪声稳压器研究综述——以国科安芯ASP7A84AS型3A低压差线性稳压器为器件级参照
大数据·网络·嵌入式硬件·平面·卫星·商业航天·抗辐射
静以修身zzz2 小时前
计算云服务
运维·网络·云计算
星恒随风2 小时前
Linux网络编程:应用层协议究竟是什么?从网络计算器到TCP Socket抽象基类完整实现
linux·网络·笔记·tcp/ip
万联WANFLOW3 小时前
异地组网速度忽快忽慢到底怎么回事?直连与中继的判断方法和处理步骤
运维·网络·网络协议·p2p