使用 tcpdump
捕获网络数据包后,通常需要分析捕获的数据或保存结果。以下是详细的后续步骤和建议:
tcpdump
会持续捕获直到手动终止。按 Ctrl+C
停止捕获。-c
参数指定了包数量(如 tcpdump -c 100
),捕获完成后会自动停止。tcpdump
会将结果打印到终端。例如:
bash
tcpdump -i eth0 port 80
输出格式为:
时间戳 源IP.端口 > 目标IP.端口: 协议细节
>
:数据包方向。Flags [S]
:TCP标志(如 SYN
、ACK
)。length N
:数据包长度。HTTP
、DNS
)。-w
保存原始数据(二进制格式,通常为 .pcap
或 .cap
):
bash
tcpdump -i eth0 -w capture.pcap
bash
tcpdump -i eth0 port 80 -w http.pcap
tcpdump
读取:
bash
tcpdump -r capture.pcap
-A
(ASCII)或 -X
(十六进制)查看内容:
bash
tcpdump -r capture.pcap -A
bash
wireshark capture.pcap
http.request.method == "GET"
)。bash
tcpdump -r capture.pcap host 192.168.1.100
bash
tcpdump -r capture.pcap -A | grep "GET \| POST"
bash
tcpdump -r capture.pcap 'tcp[tcpflags] & (syn|ack) != 0' | wc -l
bash
tcpdump -r capture.pcap -A | grep -oP 'Host: \K[^\r\n]+'
bash
rm capture.pcap
tcpdump
结合 nohup
或 systemd
作为后台服务运行。sudo
或赋予当前用户权限:
bash
sudo tcpdump -i eth0
或
bash
sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
bash
tcpdump -i eth0 -C 100 -w capture.pcap
Ctrl+C
。.pcap
后用 Wireshark 或进一步过滤。通过以上步骤,您可以高效利用 tcpdump
进行网络诊断。