tcpdump,Linux下的网络数据包捕获神器
Tcpdump 是一款强大的网络抓包工具,使用 libpcap 库来抓取网络数据包。它可以帮助系统管理员、程序员等分析调试网络数据。以下是关于 Tcpdump 的基本用法和一些示例。
基本用法Tcpdump 的基本语法如下:```bashtcpdump ```
常用选项 `i interface`:指定要捕获的网络接口,例如 `i eth0`。 `nn`:不解析域名和端口号,直接显示 IP 和端口号。 `s number`:设置捕获的数据包长度,默认为 96 字节,设置为 0 表示捕获整个数据包。 `w file`:将捕获的数据包保存到文件中,例如 `w capture.pcap`。 `r file`:从文件中读取数据包进行分析,例如 `r capture.pcap`。 `v`:显示详细信息。 `c count`:捕获指定数量的数据包后退出。 `A`:以 ASCII 码方式显示每个数据包的内容。
常用过滤器 `host`:根据 IP 地址过滤,例如 `tcpdump host 192.168.1.1`。 `src host`:根据源 IP 地址过滤,例如 `tcpdump src host 192.168.1.1`。 `dst host`:根据目标 IP 地址过滤,例如 `tcpdump dst host 192.168.1.1`。 `port`:根据端口号过滤,例如 `tcpdump port 80`。 `src port`:根据源端口号过滤,例如 `tcpdump src port 80`。 `dst port`:根据目标端口号过滤,例如 `tcpdump dst port 80`。 `tcp`:只捕获 TCP 数据包。 `udp`:只捕获 UDP 数据包。 `icmp`:只捕获 ICMP 数据包。
示例1. 抓取所有接口的 HTTP 流量: ```bash tcpdump i any nn s0 v port 80 ```
2. 抓取特定主机的所有流量: ```bash tcpdump host 192.168.1.1 ```
3. 抓取特定端口的数据包并保存到文件: ```bash tcpdump i eth0 nn s0 w test.pcap port 8080 ```
4. 抓取所有 ICMP 数据包: ```bash tcpdump i any icmp ```
5. 抓取所有包含 HTTP GET 请求的数据包: ```bash tcpdump s 0 A vv 'tcp