1. tcpdump的语法格式
tcpdump [option] [proto] [dirction] [type]
-
option:可选参数
- proto:协议过滤器,可识别的关键词有
- http,tcp,udp,icmp,ip,ip6,arp,rarp
- type:类型过滤器。可识别的关键词
- host,net,port,portrange。这些词后面还需要再接参数
- directiron:数据流向过滤器,可识别的关键字
2. 抓包结果
19:30:12.208604 IP 172.17.0.3.mysql > 172.17.0.4.36216: Flags [P.], seq 132:176, ack 1, win 227, options [nop,nop,TS val 3168643546 ecr 3168628546], length 44
2.1 输出内容结构
- 时间
- 协议
- 发送方IP+端口号
- 数据流向
- 接收方IP+端口号
- 冒号
- 数据包内容:包含Flags标识符,seq号,ack号,win窗口,数据长度length
2.2 Flags标识符
- [S]: SYN(开始连接)
- [P]: PSH(推送数据)
- [F]: FIN(结束连接)
- [R]: RST(重置连接)
- [.]: 可以用来表示ACK标志位1
3. 常规过滤规则
3.1 基于host过滤
tcpdump host 210.21.48.1
tcpdump host www.baidu.com
3.2 基于网段进行过滤
tcpdump net 192.168.10.0/24
#指定源地址是某个网段
tcpdump src net 192.168
3.3 基于端口过滤
tcpdump port 8088
# 监视多个端口
tcpdump port 80 or port 8080
# 监视范围内的端口
tcpdump portrange 80-8080
# 指定目的端口号
tcpdump dst port 80
3.4 基于协议过滤
tcpdump icmp
tcpdump udp
tcpdump 'ip && tcp'
3.5 常规过滤规则如果添加多个过滤规则用and 或者or连接
4. 可选参数解析
4.1 监视指定网卡的数据包
tcpdump -i eth0
# 监听所有网卡
tcpdump -i any
- 如果不指定网卡,tcpdump一般只会监视第一个网卡,即eth0
4.2 不把IP地址和端口号转换为名字
# 会以数字的形式显示端口号
tcpdump -nn port 80
4.3 将过滤结果输出到文件
# 过滤结果输出到指定文件中
tcpdump icmp -w icmp.pcap
4.4 从文件中读取包数据
tcpdump icmp -r all.pcap
4.5 指定抓包截取的前多少字节(默认96)
tcpdump -s 100
# 0表示截取报文全部内容
tcpdump -s 0
4.6 抓取指定个数的数据包
tcpdump -c 10
5. 其他过滤方式
5.1 基于包大小进行过滤
tcpdump less 32
tcpdump greater 64
tcpdump <= 128