参考:[linux速成案例](/linux/linux-maintenance/quick-guide-of-tcpdump-html.html)
一、基本用法
最简单的用法就是直接输入tcpdump
,监控所有的数据包:
1 2 3 4 5 6 7 8 9 |
[ma@ma ~]$ tcpdump tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on usbmon1, link-type USB_LINUX_MMAPPED (USB with padded Linux header), capture size 65535 bytes 10:53:08.002434 CONTROL SUBMIT to 1:2:0 10:53:08.004461 CONTROL COMPLETE from 1:2:0 10:53:08.004502 CONTROL SUBMIT to 1:1:0 10:53:08.004502 CONTROL COMPLETE from 1:1:0 10:53:10.850080 CONTROL SUBMIT to 1:1:0 10:53:10.850102 CONTROL COMPLETE from 1:1:0 |
1.1 指定网卡
通过-i
选项指定监视的网卡,例如:
1 2 3 4 5 6 |
root@ma:/home/ma# tcpdump -i lo ## 监视本地环回地址 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes 10:29:20.842742 IP localhost.33688 > localhost.9999: Flags [S], seq 2494882294, win 43690, options [mss 65495,sackOK,TS val 3419853282 ecr 0,nop,wscale 7], length 0 10:29:20.842763 IP localhost.9999 > localhost.33688: Flags [S.], seq 2985714491, ack 2494882295, win 43690, options [mss 65495,sackOK,TS val 3419853282 ecr 3419853282,nop,wscale 7], length 0 10:29:20.842788 IP localhost.33688 > localhost.9999: Flags [.], ack 1, win 342, options [nop,nop,TS val 3419853282 ecr 3419853282], length 0 |
默认会监视系统的第一块网卡,会自动排除本地环回地址。
1.2 指定端口
指定端口可以根据不同的协议选择:tcp port *
或者udp port *
,也可以直接port *
。
例如,抓取本地地址的9999端口上的tcp协议的数据包:
1 2 3 |
root@ma:/home/ma# tcpdump -i lo tcp port 9999 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes |
二、输出解释
对于以下数据包:
1 2 3 |
10:12:55.371576 IP localhost.33632 > localhost.9999: Flags [S], seq 2197027846, win 43690, options [mss 65495,sackOK,TS val 3418869659 ecr 0,nop,wscale 7], length 0 10:12:55.371600 IP localhost.9999 > localhost.33632: Flags [S.], seq 864630295, ack 2197027847, win 43690, options [mss 65495,sackOK,TS val 3418869659 ecr 3418869659,nop,wscale 7], length 0 10:12:55.371628 IP localhost.33632 > localhost.9999: Flags [.], ack 1, win 342, options [nop,nop,TS val 3418869659 ecr 3418869659], length 0 |
10:12:55.371628 IP localhost.33632 > localhost.9999
表示了数据包的时间以及源目地址,10点12分的数据包,从本地33632端口到本地9999端口。
Flags表名数据包类型:
S
: 表示SYN,同步序号.R
: 表示RST,复位连接。P
: 表示PSH,尽可能快地将数据送往接收进程。F
: 表示FIN,发送方完成数据发送。.
: 表示以上四个标记位都为0.
后面的seq
,ack
,win
等等则表示数据包中的字段,分别为数据包序号
,确认序号
,和窗口大小
。
评论