TCPDump 完全指南:從入門到抓包分析實戰
TCPDump 是 Linux/Unix 系統下的一個強大的命令行網絡抓包工具,它能夠捕獲流經網絡接口的數據包,并以可讀的形式顯示出來。
它支持豐富的過濾規則,可以精確抓取特定協議、IP、端口的數據包,是網絡故障排查、安全分析、協議學習的利器。

1. 安裝 TCPDump
在部分 Linux 發行版中TCPDump 已經預裝。如果沒有,可以使用包管理器安裝:
# Debian/Ubunt
sudo apt install tcpdump
# CentOS/RHEL
sudo yum install tcpdump
# macOS (通過 Homebrew)
brew install tcpdump驗證安裝:
tcpdump --version2. 基本用法
(1) 查看可用網絡接口
tcpdump -D輸出示例:
1.eth0
2.wlan0
3.lo (Loopback)(2) 捕獲所有網絡流量
sudo tcpdump -i eth0- -i eth0:指定網卡(默認是第一個非 loopback 接口)
- 按 Ctrl+C 停止抓包
(3) 保存抓包數據到文件
sudo tcpdump -i eth0 -w capture.pcap-w capture.pcap:保存為 .pcap 文件(可用 Wireshark 分析)
(4) 讀取抓包文件
tcpdump -r capture.pcap3. 過濾數據包
TCPDump 支持 BPF(Berkeley Packet Filter)語法,可以精確過濾數據包。
(1) 按 IP 過濾
# 抓取來自 192.168.1.100 的流量
sudo tcpdump -i eth0 host 192.168.1.100
# 抓取目標 IP 是 8.8.8.8 的流量
sudo tcpdump -i eth0 dst 8.8.8.8
# 抓取源 IP 是 192.168.1.1 的流量
sudo tcpdump -i eth0 src 192.168.1.1(2) 按端口過濾
# 抓取 80 端口的 HTTP 流量
sudo tcpdump -i eth0 port 80
# 抓取目標端口 443 (HTTPS)
sudo tcpdump -i eth0 dst port 443
# 抓取源端口 22 (SSH)
sudo tcpdump -i eth0 src port 22(3) 按協議過濾
# 抓取 ICMP (Ping) 流量
sudo tcpdump -i eth0 icmp
# 抓取 TCP 流量
sudo tcpdump -i eth0 tcp
# 抓取 UDP 流量
sudo tcpdump -i eth0 udp(4) 組合過濾
# 抓取來自 192.168.1.100 的 80 端口流量
sudo tcpdump -i eth0 "host 192.168.1.100 and port 80"
# 抓取非 HTTP/HTTPS 的流量
sudo tcpdump -i eth0 "not (port 80 or port 443)"4. 高級用法
(1) 限制抓包數量
# 只抓 10 個包后停止
sudo tcpdump -i eth0 -c 10(2) 顯示數據包內容(十六進制 + ASCII)
sudo tcpdump -i eth0 -X(3) 抓取 HTTP 請求(顯示 URL)
sudo tcpdump -i eth0 -A "tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)"(4) 抓取 DNS 查詢
sudo tcpdump -i eth0 port 535. 結語
TCPDump 是網絡工程師、安全研究員、運維人員的必備工具,結合 Wireshark 可以更直觀地分析數據包。掌握它,你就能像黑客一般洞察網絡流量!



































