1. 抓包基础:网络分层模型回顾、抓包原理、Wireshark安装与界面介绍
各位同学,咱们正式开始这门课。第一讲,我不会一上来就扔一堆命令。先聊聊基础——网络分层模型、抓包到底在抓什么,以及Wireshark怎么装、怎么看。
你可能会问:都2025年了,还有人不会装Wireshark?其实不然。我见过不少工作了三四年的工程师,装是装上了,但抓包时网卡选错、过滤条件写错,抓了半天全是垃圾数据。嗯,咱们从根上捋一遍。
1.1 网络分层模型:抓包的理论地图
抓包说白了,就是“偷听”网线上跑的数据。但你要听懂这些数据,脑子里得有张地图——这张地图就是网络分层模型。
我个人习惯把TCP/IP四层模型记成:应用层 → 传输层 → 网络层 → 网络接口层。每一层干自己的活,数据一层层往下封装,到了对端再一层层拆开。
核心概念:数据封装
应用层数据(比如HTTP请求)→ 加上TCP头部 → 加上IP头部 → 加上以太网帧头/尾 → 变成比特流发出去。
抓包软件就是在网络接口层“截获”这个完整的帧,然后帮你把各层头部解析出来。
为什么一定要理解分层?因为你在Wireshark里看到的每一行,其实就是一个数据包。双击打开,从上到下依次是:Frame(物理层)、Ethernet II(数据链路层)、IP(网络层)、TCP/UDP(传输层),最下面是应用层协议的内容。你脑子里没有分层概念,看这些就是天书。
我记得有一次帮客户排查一个视频卡顿问题。对方说“网络没问题,ping都通的”。我抓了包一看,TCP重传率高达15%。这就是典型的“只看网络层通不通,不看传输层丢不丢”。分层思维救了我一命。
| OSI七层模型 | TCP/IP四层模型 | Wireshark中对应协议 | 抓包能看到什么 |
|---|---|---|---|
| 应用层、表示层、会话层 | 应用层 | HTTP、DNS、FTP、TLS | 请求/响应内容、证书、域名 |
| 传输层 | 传输层 | TCP、UDP | 端口号、序列号、确认号、标志位 |
| 网络层 | 网络层 | IP、ICMP、ARP | 源/目标IP、TTL、协议类型 |
| 数据链路层、物理层 | 网络接口层 | Ethernet II、Wi-Fi | MAC地址、帧类型、FCS校验 |
我的小技巧:刚开始学抓包,别贪多。先盯着传输层和网络层看。这两层的信息量最大,也最能暴露问题。应用层的内容太“花哨”,容易分散注意力。
1.2 抓包原理:网卡到底在干什么
抓包不是魔法。它的核心就一句话:把网卡设置成“混杂模式”,让它不挑食,所有经过的帧都收进来。
正常情况下,网卡只收目标MAC地址是自己的帧,其他的直接扔掉。这叫“非混杂模式”。但抓包软件会告诉网卡驱动:“哥们儿,别挑了,全给我。” 这就是混杂模式(Promiscuous Mode)。
在Wi-Fi环境下,还有个更狠的模式叫监控模式(Monitor Mode)。它连Wi-Fi帧头都不过滤,能抓到别人家路由器的信标帧。不过这个模式需要网卡和驱动支持,Windows下比较麻烦,Linux下用aircrack-ng那套工具比较方便。
避坑指南:我曾经在客户现场抓包,抓了半天只有自己的广播包。检查发现,交换机端口没做端口镜像(Port Mirroring),而我笔记本接在普通端口上。在交换网络里,你不做镜像,只能抓到发给自己和广播/组播的包。想抓别人之间的通信?必须用交换机端口镜像或Hub(现在几乎绝迹了)或ARP欺骗(不推荐,违法风险)。
抓包流程可以概括为:
- 选择正确的网卡(有线还是无线?IP地址对不对?)
- 设置过滤条件(只抓你关心的流量,不然数据量爆炸)
- 开始捕获(网卡进入混杂模式)
- 停止捕获(保存为pcapng文件)
- 分析数据(这就是咱们后面二十多章要干的事)
下面这张图,帮你把抓包的逻辑理清楚:
1.3 Wireshark安装:别踩这些坑
安装Wireshark本身不难,但有几个细节不注意,后面会折腾死你。
Windows环境
- 下载地址:官网 wireshark.org,别去第三方下载站。我见过有人下到带捆绑软件的版本,装完浏览器多了三个工具栏。
- 安装时注意:一路Next没问题,但到Install WinPcap/Npcap这一步,一定要勾选。Wireshark依赖这个驱动来抓包。现在推荐装Npcap,兼容性更好。
- Npcap选项:勾选“Install in WinPcap API-compatible Mode”,这样老工具也能用。
- 重启:装完必须重启。别问我为什么,Npcap驱动需要加载。
我曾经踩过的坑:有一次在Windows Server上装Wireshark,装完发现抓不到任何包。折腾了两小时,最后发现是Npcap没装成功——系统策略禁用了驱动安装。解决方案:以管理员身份运行安装程序,或者手动开启“允许安装未签名驱动”的策略。
Linux环境
Linux下简单得多,但权限是个大坑。
# Debian/Ubuntu
sudo apt update
sudo apt install wireshark
# 安装过程中会问:是否允许非root用户抓包?选“是”
# 如果选错了,事后可以手动配置:
sudo dpkg-reconfigure wireshark-common
sudo usermod -a -G wireshark $USER
# 然后注销重新登录
我个人习惯在Linux下用tshark(Wireshark的命令行版)做自动化抓包。后面章节会专门讲。
macOS环境
用Homebrew装最省心:
brew install --cask wireshark
# 或者只装命令行工具
brew install wireshark
macOS下需要给Wireshark授权“网络”权限,否则抓不到包。系统设置 → 隐私与安全性 → 网络 → 勾选Wireshark。
1.4 Wireshark界面:别被吓到,其实就三块
第一次打开Wireshark,很多人会懵——满屏的列表、按钮、颜色。别慌,核心区域就三个。
| 区域 | 名称 | 作用 | 我的建议 |
|---|---|---|---|
| 顶部 | 网卡选择列表 | 显示所有可用网卡,点击即可开始抓包 | 看“IP地址”那一列,选对你IP的那个 |
| 中间 | 包列表区 (Packet List) | 显示所有捕获到的包,一行一个 | 默认按时间排序,关注No.、Time、Source、Destination、Protocol、Info |
| 下方 | 包详情区 (Packet Details) | 选中某个包后,显示各层协议头部的详细解析 | 这是你分析问题的主战场,逐层展开看 |
| 最下方 | 包字节区 (Packet Bytes) | 显示原始十六进制和ASCII数据 | 新手先别看这里,容易晕 |
还有几个关键点:
- 过滤栏:就在包列表区上方。输入
tcp、ip.addr==192.168.1.1之类的表达式,立刻过滤。这是Wireshark最强大的功能,后面会花好几章专门讲。 - 颜色规则:Wireshark默认用颜色区分协议。浅蓝色是DNS,浅绿色是TCP,红色是HTTP……你可以自定义。我个人习惯把“TCP重传”设成深红色,一眼就能看到问题。
- 统计菜单:别忽略它。Statistics → Protocol Hierarchy 能告诉你各种协议占比;Statistics → Flow Graph 能画出TCP流时序图。
上手练习:装好Wireshark后,别急着抓复杂的东西。先打开它,不设任何过滤,直接点“开始捕获”。然后打开浏览器访问一个网页,等几秒后停止。看看你抓到了多少包?找找HTTP请求和响应在哪一行。这就是你的第一个抓包实验。
嗯,第一讲就到这里。内容不多,但都是地基。分层模型是你分析问题的思维框架,抓包原理让你知道工具在干什么,安装和界面是动手的前提。这三样东西没搞透,后面学再多技巧也是空中楼阁。