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欺骗(不推荐,违法风险)。

抓包流程可以概括为:

  1. 选择正确的网卡(有线还是无线?IP地址对不对?)
  2. 设置过滤条件(只抓你关心的流量,不然数据量爆炸)
  3. 开始捕获(网卡进入混杂模式)
  4. 停止捕获(保存为pcapng文件)
  5. 分析数据(这就是咱们后面二十多章要干的事)

下面这张图,帮你把抓包的逻辑理清楚:

抓包原理与数据流 应用层 (HTTP/DNS) 传输层 (TCP/UDP) 网络层 (IP/ICMP) 网络接口层 (Ethernet) Wireshark 抓包点 混杂模式 捕获完整帧 解析各层头部 Wireshark 解析结果 Frame: 1514 bytes Ethernet II: MAC A → MAC B IP: 192.168.1.1 → 8.8.8.8 TCP: 源端口 54321 目标端口 443 Seq=1, Ack=1 HTTP: GET /index.html TLS: Client Hello 💡 数据从应用层向下逐层封装,Wireshark在网络接口层截获完整帧,然后逆向解析各层头部。 你看到的每一行包,都是这个“封装→截获→解析”过程的产物。

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请求和响应在哪一行。这就是你的第一个抓包实验。

嗯,第一讲就到这里。内容不多,但都是地基。分层模型是你分析问题的思维框架,抓包原理让你知道工具在干什么,安装和界面是动手的前提。这三样东西没搞透,后面学再多技巧也是空中楼阁。