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 抓包指南