速成案例:tcpdump速成指南

一、基本用法

最简单的用法就是直接输入tcpdump,监控所有的数据包:

[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选项指定监视的网卡,例如:

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协议的数据包:

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

二、输出解释

对于以下数据包:

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等等则表示数据包中的字段,分别为数据包序号确认序号,和窗口大小

最后修改:2019 年 09 月 10 日
喜欢就给我点赞吧