tcpdump是一款网络抓包工具,可以在Linux和其他类Unix系统上使用。它可以捕获网络数据包并将其显示在终端上,也可以将捕获的数据包保存到文件中以供后续分析。
tcpdump的作用是识别网络问题、调试网络应用程序、监控网络性能和检测网络攻击。它可以捕获各种协议的数据包,包括TCP、UDP、ICMP、HTTP、FTP等,可以根据不同的过滤条件进行数据包的过滤和分析,还可以对数据包进行解码和重组,以便更好地理解网络流量。
语法: tcpdump [ -nv ] [ -i interface ] [ -w file ] [ expression ]
tcpdump截取的包默认数据包的头部,默认情况下,直接启动tcpdump将监听的是第一个网络接口上所有流过的数据包。
常用参数:
-n:对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析
-nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名
-v:当分析和打印的时候,产生详细的输出
-vv:产生比-v更详细的输出
-vvv:产生比-vv更详细的输出
(一般-nnvv或-nnvvv一起使用)
-i :指定tcpdump需要监听的接口。可使用'any'关键字表示所有网络接口 如:-i ens33 抓取流经网卡的所有数据包。
-c:指定要抓取的包数量
-w:将抓包数据保存到文件中
-D:列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"后
表达式:
表达式用于筛选数据包,如果没有给定表达式,所有的数据包都将输出。在表达式中出现的shell元字符建议使用单引号包围。
1.type:指定ID的类型。
host/net/port /根据主机地址IP/网段/端口
默认的type为host
2.dir:指定ID的方向。
可以给定的值包括src/dst (源/目的) src or dst / src and dst,默认为src or dst。
3.proto:通过给定协议限定匹配的数据包类型。
常用的协议有tcp/udp/arp/ip/ether/icmp等,若未给定协议类型,则匹配所有可能的类型。
表达式单元之间可以使用操作符" and / && / or / || / not / ! "进行连接