抓包实战系列第 1 篇。
前面 20 篇,我们完成了网络基础:从分层、网卡、MAC、ARP、IP、路由、ICMP、TCP/UDP、端口、HTTP、DNS,一直讲到 Socket 编程。今天开始进入阶段 2:抓包实战。第一把工具,就是命令行里的老牌神器:tcpdump。
开场:网络问题,不能只靠猜
网络排障里最危险的一句话是:
我感觉包应该到了。
工程里,“感觉”很贵。
尤其是线上故障时。
你说:
客户端应该发了请求。
服务端应该收到了。
服务端应该回了包。
中间应该没丢。
每一个“应该”,都可能是事故复盘里的伏笔。
真实世界里,我们需要证据。
包到底有没有发出去?
有没有到网卡?
有没有到服务端?
服务端有没有回?
DNS 问的是谁?
TCP 三次握手完成了吗?
HTTP 请求到底发了什么?
这些问题,不能靠脑补。
要抓包。
先给结论:
tcpdump 是 Linux/Unix 系统上常用的命令行抓包工具,用来捕获和过滤经过网卡的数据包。
再通俗一点:




