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如果指定只获取数据报前20个字节,在输出时,会表明该数据包在IP层数据被截断了: root@motadou:~# tcpdump -i eth0 -n -t -s 20 |
-t | 在每个输出行都不打印时间戳。 不使用该参数的输出行如下所示: root@motadou:~# tcpdump -i eth0 -n使用该参数后的输出行如下所示: root@motadou:~# tcpdump -i eth0 -n -t |
-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 |
-ttt | 打印出当前输出行据上次输出所经历的时间间隔,其时间单位是毫秒。输出如下所示:
root@motadou:~# tcpdump -i eth0 -n -ttt |
3 -- Tcpdump过滤表达式说明
4 -- Tcpdump使用示例
建立连接的过程
客户端主动关闭的情况/服务端主动关闭的情况(注意各端的链接状态)
accept返回前连接夭折
服务器进程终止,客户端再发送数据的状态
服务器主机崩溃
服务器主机关机