tcpdump使用详解

1. tcpdump的语法格式

tcpdump [option] [proto] [dirction] [type]
  • option:可选参数

  • proto:协议过滤器,可识别的关键词有
    • http,tcp,udp,icmp,ip,ip6,arp,rarp
  • type:类型过滤器。可识别的关键词
    • host,net,port,portrange。这些词后面还需要再接参数
  • directiron:数据流向过滤器,可识别的关键字
    • src,dst,src or dst

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

你可能感兴趣的:(linux,tcpdump)