您的位置:首页 > 理论基础 > 计算机网络

tcpdump的用法

2015-09-01 19:00 561 查看
```


1 – Tcpdump简介

本文跟踪Tcpdump最新版本,不定期更新选项解析和使用方法,截至目前(2014.01.28),Tcpdump的最新版本是:tcpdump4.5.1和libpcap1.5.3。

root@motadou:/home/motadou/apps/tcpdump/sbin# tcpdump -h

tcpdump version 4.5.1

libpcap version 1.5.3

Usage: tcpdump [-aAbdDefhHIJKlLnNOpqRStuUvxX] [ -B size ] [ -c count ]

[ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]

[ -i interface ] [ -j tstamptype ] [ -M secret ]

[ -P in|out|inout ]

[ -r file ] [ -s snaplen ] [ -T type ] [ -V file ] [ -w file ]

[ -W filecount ] [ -y datalinktype ] [ -z command ]

[ -Z user ] [ expression ]

2 – Tcpdump选项函数说明

选项 说明

-a 将网络地址和广播地址转变成名字

-A 以ASCII格式打印出所有分组,并将链路层的头最小化

-c count 指定数据包的监听数量,当收到指定的包数量后,Tcpdump自动退出

-C file_size 在将原始数据包写入文件之前,检查数据文件的大小,如果当前数据文件大于指定的file_size,Tcpdump将关闭当前文件,并重新创建一个编号紧随上个文件编号的新数据文件。该选项需要配合-w选项一起使用。必须注意file_size的单位是百万字节(1000000字节,而不是1048576字节)。

-d 数据包的过滤条件经编译后,将其内部格式代码,以人们能够理解的汇编格式输出

-dd 数据包的过滤条件经编译后,将其内部格式代码,以C语言程序段的格式输出

-ddd 数据包的过滤条件经编译后,将其内部格式代码,以十进制的格式输出

-e 在输出行打印出数据链路层MAC地址等头部信息。该参数可以用来打印以太网或者IEEE 802.11等协议物理链路层的地址。

-n 不将地址(比如:主机地址、端口号)的数字表示形式转换成名字表示。

-s snaplen 从每个报文中截取snaplen字节的数据,而不是缺省的65535。如果我们指定过小的snaplen值,获取的数据报将被截断(亦即我们获得的不是一个完整的数据报,只是原始数据报的一部分),在输出行中会有类似[|proto]这样的输出,这里的proto是截断发生处的协议层名称。注意,采用更大的捕捉范围既增加了处理报文的时间,又相应的减少了报文的缓冲数量,可能导致报文的丢失。你应该把snaplen设的尽量小,只要能够容纳你需要的协议信息就可以了。设置snaplen参数值为0,即是设置为默认值65535。

如果指定只获取数据报前10个字节,在输出时,会表明该数据包在以太网链路层数据被截断了:

root@motadou:~# tcpdump -i eth0 -n -t -s 10

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth0, link-type EN10MB (Ethernet), capture size 10 bytes

[|ether]

[|ether]

如果指定只获取数据报前20个字节,在输出时,会表明该数据包在IP层数据被截断了:

root@motadou:~# tcpdump -i eth0 -n -t -s 20

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth0, link-type EN10MB (Ethernet), capture size 20 bytes

IP [|ip] IP [|ip]

-t 在每个输出行都不打印时间戳。

不使用该参数的输出行如下所示:

root@motadou:~# tcpdump -i eth0 -n

22:47:37.815859 IP 192.168.1.104.22 > 192.168.1.101.54931: Flags [P.], seq 1021826231:1021826427, ack 2432753, win 262, length 196

使用该参数后的输出行如下所示:

root@motadou:~# tcpdump -i eth0 -n -t

IP 192.168.1.104.22 > 192.168.1.101.54931: Flags [P.], seq 1021826231:1021826427, ack 2432753, win 262, length 196

-tt 在每个输出行打印非格式化的时间戳,格式为:UNIX时间戳.毫秒数

格式化时间戳的输出行如下所示:

root@motadou:~# tcpdump -i eth0 -n

20:23:59.519824 IP 192.168.1.104.22 > 192.168.1.101.54931: Flags [P.], seq 1021787799:1021787995, ack 2428345, win 254, length 196 20:23:59.520223 IP 192.168.1.101.54931 > 192.168.1.104.22: Flags [.], ack 196, win 3931, length 0

非格式化的时间戳输出行如下所示:

root@motadou:~# tcpdump -i eth0 -tt

1391172027.174475 IP motadou.local.ssh > 192.168.1.101.54931: Flags [P.], seq 1021799219:1021799415, ack 2429125, win 254, length 196

1391172027.174822 IP 192.168.1.101.54931 > motadou.local.ssh: Flags [.], ack 196, win 3944, length 0

-ttt 打印出当前输出行据上次输出所经历的时间间隔,其时间单位是毫秒。输出如下所示:

root@motadou:~# tcpdump -i eth0 -n -ttt

00:00:00.000016 IP 192.168.1.104.22 > 192.168.1.101.54931: Flags [P.], seq 1256:1372, ack 1, win 254, length 116

00:00:00.000196 IP 192.168.1.101.54931 > 192.168.1.104.22: Flags [.], ack 1060, win 3978, length 0

00:00:00.000090 IP 192.168.1.101.54931 > 192.168.1.104.22: Flags [.], ack 1372, win 3900, length 0

00:00:00.037288 IP 192.168.1.1.2049 > 239.255.255.250.1900: UDP, length 327

3 – Tcpdump过滤表达式说明

4 – Tcpdump使用示例

建立连接的过程

客户端主动关闭的情况/服务端主动关闭的情况(注意各端的链接状态)

accept返回前连接夭折

服务器进程终止,客户端再发送数据的状态

服务器主机崩溃

服务器主机关机

```
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tcpdump