名词解释教学工作区 · 课程 0020 · 形态 单概念 · 约 6 分钟 · 前置:0013 · 前端 / 后端 / 接口 · 相关:0021 · 爬虫 · 2026-10-01

抓包:把流过网卡的数据抄一份下来

你能做到:别人一提「抓包」,你能说清它抄的是线路上真实跑过的帧, 能说出为什么加密之后只剩信封,以及它和日志、代理、监控各自管哪一段。

1 | 定义

抓包(packet capture,也叫 packet sniffing):把流经网卡的数据包(packet)原样复制一份、按时间顺序存成文件,事后逐条回看 —— 谁发给谁、什么协议、来回几次、各隔多久,以及没加密时里面的内容。 就像在网线上接一台录音机:从这里流过的数据都原样录一份下来,回头慢慢听 —— 程序自己说不清的那一段路,只有这盘录音能作证。

2 | 它解决什么麻烦

这一类问题的共同点是:答案不在程序里,在「路上」。

3 | 它怎么解决

工具的活拆成三问:在哪抄、抄什么、抄下来怎么看。

一句话:加密之后,抓包手里剩下的是信封 —— 谁和谁、走哪个端口、多大、来回几次、各隔多久;信纸不在它手里。

4 | 用它的代价

5 | 真实使用场景

场景一:线上某台服务器偶发慢,先抓到文件再回头算账。

# 服务器上:只留 https 流量,写进文件;复现完按 Ctrl-C 停
sudo tcpdump -i eth0 -w slow.pcap 'tcp port 443'

# 回看有哪些 TCP 会话、各自持续多久、各传了多少字节
tshark -r slow.pcap -q -z conv,tcp

# 挑出最慢的那一对地址,丢进 Wireshark 逐包看时间线:哪一段跳得最多
tshark -r slow.pcap -Y 'ip.addr == 198.51.100.7'

时间列按顺序读下去:域名解析、几次握手、请求发出到第一个响应字节等了多久、之后又传了多久 —— 跳得最多的那一段,就是瓶颈所在的那一段。

场景二:自己这台机器上,一次页面加载到底慢在哪(不碰网卡的近似视角)。

这类问题甚至不用抓包工具:浏览器里按 F12 打开开发者工具,切到 Network(网络)面板,勾上保留日志,刷新页面, 点开一条请求的 Timing(计时)标签 —— 它把这次加载拆成域名查询、建立连接、TLS 握手、等待首字节、内容下载几段分别计时。 它只是浏览器对自己那批请求的自述,不碰网卡:看不到别的程序,也看不到线路上真实跑过的帧;但要定位「这次加载慢在哪一段」,通常已经够用。

6 | 和相近的东西怎么分

工具它是什么和抓包什么关系
tcpdumpLinux / Unix 自带的命令行抓包工具,直接向网卡要数据,输出最原始的报文列表抓包的命令行形态;服务器上没图形界面时,靠它把流量存成 pcap
tsharkWireshark 附带的命令行分析器,协议解析引擎与 Wireshark 同一套管的是抓包的第三段「抄下来怎么看」:按字段过滤、统计会话,也能自己抓
Wireshark图形界面的抓包与协议分析软件,会话重组和逐包解读最完整抓包与解读一体的桌面工具,把 pcap 拖回本机对着时间线细看
浏览器 Network 面板浏览器记录自己发出的那批请求,并给出分段耗时抓包的一个局部替身:只看得到浏览器进程,不碰网卡,也看不到别的程序
curl -w命令行 HTTP 客户端;-w 按模板输出这次请求的分段时间抓包的一种窄口径取数:只覆盖自己这一次请求,不落 pcap 文件

它和另外几个「看问题的手段」也不一样:

还有一个常被混进来说的词是爬虫: 它是照着接口批量取数据的程序。抓包负责先把接口看清楚,爬虫负责看清之后搬运 —— 一个弄懂线路,一个批量取货。

7 | 常见误解

8 | 练习

三题自测,每题只有一个正确选项;选完立刻看到解释。

1. 抓包只看得到「信封」、看不到「信纸」,直接原因是什么?

对。TLS 把内容盖住之后,明文留下的只有地址、端口、长度、时间与握手时暴露的域名;帧是整段复制下来的,过滤器也是你自己写的。

2. 要让网卡把「不是发给本机」的帧也交上来,靠的是什么?

对。挑不挑收件人是网卡自己的行为,只有混杂模式能改它;BPF 过滤器管的是「留下来哪些」,权限管的是「能不能读网卡」。

3. 下面哪一种问题,抓包帮不上忙?

对。缓存逻辑住在程序内部,网线上看不出对错;DNS 解析、TLS 握手轮次、连接被 RST 掐断,都会在包的时间线上留下痕迹。