Linux命令-tcpdump
tcpdump 是一个功能强大的网络数据包捕获和分析工具。以下是 tcpdump 命令的完整参数列表及说明:
参数
-a 将网络地址和广播地址转换为名字
tcpdump -a -i eth0
-A 以 ASCII 格式打印所有分组,最小化链路层头部信息
tcpdump -A
-b 在数据链路层上选择协议,包括 IP、ARP、RARP、IPX 等
tcpdump -b
-i
指定要监听的网络接口。
例如,-i eth0 表示监听 eth0 接口。使用 -i any 表示监听所有接口。可以通过 tcpdump -D 或 tcpdump --list-interfaces 列出系统中的所有网络接口。
tcpdump -i eth0
-c
指定要捕获的数据包数量。例如,-c 10 表示捕获 10 个数据包后停止。
tcpdump -c 10 -i eth0
-d 将匹配信息包的代码以汇编格式输出
tcpdump -d -i eth0
-dd 将匹配信息包的代码以 C 语言程序段的格式输出
tcpdump -dd -i eth0
-ddd 将匹配信息包的代码以十进制形式输出
tcpdump -ddd -i eth0
-D 打印系统中所有可监控的网络接口
tcpdump -D
-e 在输出行打印数据链路层的头部信息
tcpdump -e -i eth0
-f 用数字形式显示外部的 Internet 地址
tcpdump -f -i eth0
-F 从指定文件中读取表达式,忽略其他表达式
tcpdump -F filter.txt -i eth0
-l 使标准输出变为缓冲形式
tcpdump -l -i eth0
-L 列出网络接口已知的数据链路
tcpdump -L -i eth0
-n 不把网络地址转换为名字
tcpdump -n -i eth0
-N 不输出主机名中的域名部分
tcpdump -N -i eth0
-nn 不进行端口名称的转换
tcpdump -nn -i eth0
-O 不将数据包解码器优化
tcpdump -O -i eth0
在这里插入代码片
-p 不将网络接口设置为混杂模式
tcpdump -p -i eth0
-q 快速输出,只输出较少的协议信息
tcpdump -q -i eth0
-r 从指定文件中读取数据包
tcpdump -r capture.pcap
-s 从每个数据包中截取指定字节数
tcpdump -s 1024 -i eth0
-S 将 TCP 的序列号以绝对值形式输出
tcpdump -S -i eth0
-T 将监听到的包直接解析为指定类型的报文
tcpdump -T rpc -i eth0
-t 在每行输出中不打印时间戳
tcpdump -t -i eth0
-tt 在每行输出中打印非格式化的时间戳
tcpdump -tt -i eth0
-ttt 输出本行和前一行之间的时间差
tcpdump -ttt -i eth0
-tttt 在每行输出的时间戳前添加日期
tcpdump -tttt -i eth0
-u 输出未解码的 NFS 句柄
tcpdump -u -i eth0
-v 输出稍微详细的信息
tcpdump -v -i eth0
-vv 输出更详细的报文信息
tcpdump -vv -i eth0
-vvv 输出更详细的报文信息
tcpdump -vvv -i eth0
-w 将捕获的信息保存到文件中,不分析和打印到屏幕
tcpdump -w capture.pcap -i eth0
-X 以 16 进制和 ASCII 码形式打印数据包的数据(不包括数据链路层头部)
tcpdump -X -i eth0
-XX 以 16 进制和 ASCII 码形式打印数据包的数据(包括数据链路层头部)
tcpdump -XX -i eth0
过滤表达式
数据类型
host 指定主机
tcpdump host 192.168.1.1
net 指定网络
tcpdump net 192.168.0.0
port 指定端口
tcpdump port 80
数据传输方向
src 指定源
tcpdump src 192.168.1.1
dst 指定目的
tcpdump dst 192.168.1.1
and 逻辑与
tcpdump host 192.168.1.1 and port 80
or 逻辑或
tcpdump src 192.168.1.1 or src 192.168.1.2
not 逻辑非
tcpdump not host 192.168.1.1
协议
ip 指定 IP 协议
tcpdump ip
tcp 指定 TCP 协议
tcpdump tcp
udp 指定 UDP 协议
tcpdump udp
arp 指定 ARP 协议
tcpdump arp
示例
捕获并保存 eth0 接口上的 10 个数据包到 capture.pcap 文件中:
tcpdump -i eth0 -c 10 -w capture.pcap
从 capture.pcap 文件中读取数据包并显示详细信息:
tcpdump -r capture.pcap -vvv
捕获 eth0 接口上的 HTTP 流量(端口 80)并显示详细信息:
tcpdump -i eth0 -nn -s0 -v port 80
捕获并显示 eth0 接口上的所有 ICMP 数据包:
tcpdump -i eth0 icmp
捕获并保存 eth0 接口上的 TCP 流量到 tcp.pcap 文件中:
tcpdump -i eth0 -w tcp.pcap tcp
捕获并显示 eth0 接口上的 UDP 流量:
tcpdump -i eth0 udp
捕获指定主机和端口的数据包:
tcpdump host 192.168.1.1 and port 80
捕获 HTTP 流量并以 ASCII 格式显示:
tcpdump -i eth0 -A port 80
捕获指定网络的数据包:
tcpdump net 192.168.0.0/24