zoukankan      html  css  js  c++  java
  • Tcpdump使用方法总结

    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返回前连接夭折
    服务器进程终止,客户端再发送数据的状态
    服务器主机崩溃
    服务器主机关机

  • 相关阅读:
    第二章:变量和简单数据类型
    第四章:操作列表
    第三章:列表简介
    老男孩Day6作业:计算器
    老男孩Day5作业:电子银行购物商城
    老男孩Day4作业:员工信息查询系统
    老男孩Day3作业:工资管理系统
    老男孩Day2作业:购物车程序
    改进地图的vo类
    slam kf
  • 原文地址:https://www.cnblogs.com/motadou/p/1599375.html
Copyright © 2011-2022 走看看