• tcpdump 介绍


    tcpdump 是一款强大的网络抓包工具,dump the traffice on anetwork,对网络上的数据包进行截获的包分析工具。熟练掌握 tcpdump 可以方便我们跟踪解决网络丢包,重传,数据库链路调用等问题。

    tcpdump 的语法

    Usage: tcpdump [-aAdDefhIJKlLnNOpqRStuUvxX] [ -B size ] [ -c count ]
            [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
            [ -i interface ] [ -j tstamptype ] [ -M secret ]
            [ -Q|-P in|out|inout ]
            [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
            [ -W filecount ] [ -y datalinktype ] [ -z command ]
            [ -Z user ] [ expression ]
    

    tcpdump 主要支持3种类型的表达式:

    Type(类型)选项包括 host,net 和 port,缺省为 host

    host(缺省类型): 指明一台主机,如:host 10.215.20.13
    net: 指定网络地址,net 10.215.20.0
    port: 指明端口号,port 3306
    

    Direction(方向)选项包括 src 和 dst 以及它们的组合

    确定方向的关键字
    dst or src(缺省值) 指定源或者目标地址是 10.215.20.13的流量包
    src: src 10.9.51.13, 指定源地址是10.9.51.13
    dst: dst net 172.0.0.0, 指定目标网络地址是172.0.0.0
    dst and src  比如: src host 10.9.51.13   and dst host 10.215.20.13
    

    Proto(协议)包括 tcp 、udp 、ICMP 和 ah 等
    协议的关键字:缺省值是监听所有协议的信息包

    ip
    arp
    tcp
    udp
    icmp
    其他关键字 gateway broadcast less greater
    

    常用表达式:多条件时可以用括号,但是要用转义

    参数说明

    tcp: 协议类型,用来过滤数据报的协议类型
    -i bond0: 只抓取经过接口bond0的包
    -tttt: 使用格式 2019-02-02 10:37:37.120297,便于分析
    -s 0: 抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓到完整的数据包
    -c 100: 只抓取100个数据包
    dst port ! 22: 不抓取目标端口是22的数据包
    src net 10.10.1.0/24: 数据包的源网络地址为10.10.1.0/24
    -w 20190131.tcpdump: 保存成tcpdump文件中,方便使用wireshark分析抓包结果
    -D: 列出所有可用的网络接口
    -n: 禁用域名解析,让tcpdump直接输出IP地址.
    -e: 每行的打印输出中将包括数据包的数据链路层头部信息
    -X: 以16进制格式输出数据包的内容,不加该参数,会只输出iptcp/udp头部信息。加上该选项会将整个数据包输出。-vvvv  该参数其实是-v与-vvv的组合。-v会输出稍微详细一点的信息包括校验和ttl之类的;-vvv会尝试解析应用层协议,输出详细信息。二者组合就能完整的详细信息。-A:以ASCII值显示抓到的包,比如和MySQL的交互时,可以通过-A查看包的文本内容.
    

    例子

    # 监听指定网络接口的数据包
    tcpdump -i eth0
    
    #截获所有的主机收到和发出的所有数据包
    tcpdump host 192.168.1.134
    
    #截获主机 192.168.0.212 和主机 192.168.1.134 或 192.168.1.135 的通信
    tcpdump host 192.168.0.212 and (192.168.1.134 or 192.168.1.135 ) 
    
    #获取主机 192.168.0.212 除了和主机 192.168.1.134 之外所有主机通信的ip包,使用命令:
    tcpdump ip host 192.168.0.212 and ! 192.168.1.134
    
    #截获主机hostname发送的所有数据
    tcpdump -i eth0 src host 127.0.0.1
    
    #监视所有送到主机hostname的数据包
    tcpdump -i eth0 dst host 127.0.0.1
    
    #获取主机192.168.1.134接收或发出的telnet包,使用如下命令
    tcpdump tcp port 23 and host 192.168.1.134
    
    #对本机的udp 123 端口进行监视 123 为ntp的服务端口
    tcpdump udp port 123
    
    # 抓取经过所有eth0,且数据包源网络地址为192.168.1.0/24,不显示时间戳,除了 22 端口,保存为 target.cap
    tcpdump tcp -i eth0 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
    

    eg:

    [root@localhost ~]# tcpdump -n -s 0 port 80 -c 10 -tttt
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    2019-10-30 11:53:41.838176 IP 192.168.2.177.50241 > 192.168.0.216.http: Flags [.], seq 4068299219:4068299220, ack 755692383, win 8212, length 1: HTTP
    
    第一列是时间: 2019-10-30 11:53:41.838176
    第二列  IP是网络协议名称
    192.168.2.177.50241 > 192.168.0.216.http  表示 数据包发送的源端十进制地址和接收端的ip地址192.168.2.177和端口号50241。其中 > 表示数据包的流向。
    Flags [.] 包的状态标志:S=SYN   发起连接标志;P=PUSH  传送数据标志;F=FIN, 关闭连接标志;ack,   表示确认包。RST=RESET,异常关闭连接;.,表示没有任何标志。
    seq 4068299219:4068299220 请求同步的序列号,注意 4068299220 - 4068299219 = 1 表示数据包的大小和后面的length的大小一致
    ack 755692383 确认已经同步的序列号+1
    win 8212  当前可用的窗口大小
    length 1: HTTP 包体的长度
    

    TCP 结构

  • 相关阅读:
    DevExpress v17.2新版亮点—.NET Reporting篇(二)
    用MyEclipse JPA创建项目(二)
    DevExpress v17.2新版亮点—.NET Reporting篇(一)
    用MyEclipse JPA创建项目(一)
    HashMap底层实现原理
    Java 8 Tutorial
    剖析面试最常见问题之Java集合框架
    Java中String类的常用方法
    properties类以及.properties文件的使用
    递归
  • 原文地址:https://www.cnblogs.com/klvchen/p/11763710.html
Copyright © 2020-2023  润新知