tcpdump 命令格式说明

- option- 可选选项(参数)
- proto- 协议类过滤器:根据协议进行过滤,可识别的关键词有:- tcp,- udp,- icmp,- ip,- ip6,- arp,- rarp,- ether,- wlan,- fddi,- tr,- decnet
- direction- 数据流向类过滤器:根据数据流向进行过滤,可识别的关键字有:- src,- dst,同时你可以使用逻辑运算符进行组合,比如- src or dst
- type类过滤器:可识别的关键词有:- host,- net,- port,- portrange,这些词后边需要再接参数。
常用选项
| 选项 | 说明 | 示例 | 
| -i | 目标网卡 |  | 
| -n
 -nn | 不对 IP/DOMAIN 进行解析 不对 IP/DOMAIN 及 PORT 进行解析
 |  | 
| -w | 将结果写入文件 | tcpdump icmp -w icmp.pcap | 
tcpdump 命令输出内容说明
| 21:26:49.013621 IP 172.20.20.1.15605 > 172.20.20.2.5920: Flags [P.], seq 49:97, ack 106048, win 4723, length 48
 | 
- 第一列:时分秒毫秒 21:26:49.013621
- 第二列:网络协议 IP
- 第三列:发送方的 ip 地址+端口号,其中 172.20.20.1 是 ip,而 15605 是端口号
- 第四列:箭头 >, 表示数据流向
- 第五列:接收方的 ip 地址+端口号,其中 172.20.20.2 是 ip,而 5920 是端口号
- 第六列:冒号
- 第七列:数据包内容,包括 Flags 标识符,seq 号,ack 号,win 窗口,数据长度 length,其中 [P.] 表示 PUSH 标志位为 1,更多标识符见下面
Flags 标识符
使用 tcpdump 抓包后,会遇到的 TCP 报文 Flags,有以下几种:
- [S] : SYN(开始连接)
- [P] : PSH(推送数据)
- [F] : FIN(结束连接)
- [R] : RST(重置连接)
- [.] : 没有 Flag (意思是除上面四种类型外的其他情况,有可能是 ACK也有可能是URG)
常见用法示例
基于IP地址过滤:host
| tcpdump host 192.168.10.100
 tcpdump -i eth0 src 192.168.10.100
 
 tcpdump -i eth0 dst 192.168.10.100
 
 | 
基于网段进行过滤:net
| tcpdump net 192.168.10.0/24
 tcpdump src net 192.168
 
 tcpdump dst net 192.168
 
 | 
基于端口进行过滤:port
| tcpdump src port 8088
 tcpdump dst port 8088
 
 tcpdump port 80 or port 8088
 
 tcpdump port 80 or 8088
 
 tcpdump portrange 8000-8080
 
 tcpdump src portrange 8000-8080
 
 tcpdump dst portrange 8000-8080
 
 | 
基于协议进行过滤:proto
常见的网络协议有:tcp, udp, icmp, http, ip,ipv6 等
protocol 可选值:ip, ip6, arp, rarp, atalk, aarp, decnet, sca, lat, mopdl, moprc, iso, stp, ipx, or netbeui
组合过滤规则
支持的运算符:
- and- 所有的条件都需要满足,也可以表示为- &&
- or- 只要有一个条件满足就可以,也可以表示为- ||
- not- 取反,也可以使用- !
| tcpdump src 10.5.2.3 and dst port 3389
 tcpdump 'src 10.0.2.4 and (dst port 3389 or 22)'
 
 | 
参考链接
tcpdump 抓包指南