`

Tcpdump的使用

阅读更多

实际用例: 监测192.16.0.100到192.16.0.102 网卡为eth1的包是否丢失,命令如下:

tcpdump -i eth1 dst host 192.16.0.102 and src host 192.16.0.100

输出为:

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
17:57:12.608278 IP 192.16.0.100.53701 > 192.16.0.102.cbt: UDP, length 1020
17:57:12.610451 IP 192.16.0.100.53701 > 192.16.0.102.cbt: UDP, length 998
17:57:12.612506 IP 192.16.0.100.53701 > 192.16.0.102.cbt: UDP, length 1008
17:57:12.615419 IP 192.16.0.100.53701 > 192.16.0.102.cbt: UDP, length 1016
17:57:12.615662 IP 192.16.0.100.53701 > 192.16.0.102.cbt: UDP, length 1024
17:57:12.616000 IP 192.16.0.100.53701 > 192.16.0.102.cbt: UDP, length 1000
17:57:12.616325 IP 192.16.0.100.53701 > 192.16.0.102.cbt: UDP, length 964
17:57:12.616650 IP 192.16.0.100.53701 > 192.16.0.102.cbt: UDP, length 1000
17:57:12.616788 IP 192.16.0.100.53701 > 192.16.0.102.cbt: UDP, length 452

 

10 packets captured
21 packets received by filter
0 packets dropped by kernel

 

用法:

tcpdump采用命令行方式,它的命令格式为:
  tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
          [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
          [ -T 类型 ] [ -w 文件名 ] [表达式 ]
  1. tcpdump的选项介绍
   -a    将网络地址和广播地址转变成名字;
   -d    将匹配信息包的代码以人们能够理解的汇编格式给出;
   -dd    将匹配信息包的代码以c语言程序段的格式给出;
   -ddd    将匹配信息包的代码以十进制的形式给出;
   -e    在输出行打印出数据链路层的头部信息;
   -f    将外部的Internet地址以数字的形式打印出来;
   -l    使标准输出变为缓冲行形式;
   -n    不把网络地址转换成名字;
   -t    在输出的每一行不打印时间戳;
   -v    输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
   -vv    输出详细的报文信息;
   -c    在收到指定的包的数目后,tcpdump就会停止;
   -F    从指定的文件中读取表达式,忽略其它的表达式;
   -i    指定监听的网络接口;
   -r    从指定的文件中读取包(这些包一般通过-w选项产生);
   -w    直接将包写入文件中,并不分析和打印出来;
   -T    将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程 调用)和snmp(简单       网络管理协议;)
  2. tcpdump的表达式介绍
   表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。
 
  在表达式中一般如下几种类型的关键字,一种是关于类型的关键字,主要包括host,net,port, 例如 host
210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一个网络地址,port
23 指明端口号是23。如果没有指定类型,缺省的类型是host.
   第二种是确定传输方向的关键字,主要包括src , dst
,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明,src 210.27.48.2
,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0
。如果没有指明方向关键字,则缺省是src or dst关键字。
   第三种是协议的关键字,主要包括fddi,ip
,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,
fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。其他的几个关键字就是指明了监听的包的协
议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。
   除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater,还有三种逻辑运算,取非运算是 not ! , 与运算是and,&&;或运算 是or ,||;
   这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。
   (1)想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包:
    #tcpdump host 210.27.48.1
   (2) 想要截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信,使用命令:(在命令行中适用   括号时,一定要
    #tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
   (3) 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
    #tcpdump ip host 210.27.48.1 and ! 210.27.48.2
   (4)如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:
    #tcpdump tcp port 23 host 210.27.48.1
  3. tcpdump 的输出结果介绍
   下面我们介绍几种典型的tcpdump命令的输出信息
   (1) 数据链路层头信息
   使用命令#tcpdump --e host ice
   ice 是一台装有linux的主机,她的MAC地址是0:90:27:58:AF:1A
   H219是一台装有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5B:46;上一条命令的输出结果如下所示:
21:50:12.847509 eth0  ice.telne
t 0:0(0) ack 22535 win 8760 (DF)
 
 分析:21:50:12是显示的时间, 847509是ID号,eth0 表示从网络接口设备发送数据包, 8:0:20:79:5b:46是主机H219的MAC地址,它表明是从源地址H219发来的数据包.
0:90:27:58:af:1a是主机ICE的MAC地址,表示该数据包的目的地址是ICE . ip 是表明该数据包是IP数据包,60
是数据包的长度, h219.33357 > ice.telnet
表明该数据包是从主机H219的33357端口发往主机ICE的TELNET(23)端口. ack 22535
表明对序列号是222535的包进行响应. win 8760表明发送窗口的大小是8760.
  (2) ARP包的TCPDUMP输出信息
   使用命令#tcpdump arp
   得到的输出结果是:
  22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
  22:32:42.802902 eth0 表明从主机发出该数据包, arp表明是ARP请求包,
who-has route tell ice表明是主机ICE请求主机ROUTE的MAC地址。
0:90:27:58:af:1a是主机ICE的MAC地址。
  (3) TCP包的输出信息
   用TCPDUMP捕获的TCP包的一般输出信息是:
  src > dst: flags data-seqno ack window urgent options
 
 src > dst:表明从源地址到目的地址, flags是TCP包中的标志信息,S 是SYN标志, F (FIN), P (PUSH)
, R (RST) "." (没有标记); data-seqno是数据包中的数据的顺序号, ack是下次期望的顺序号,
window是接收缓存的窗口大小, urgent表明数据包中是否有紧急指针. Options是选项.
  (4) UDP包的输出信息
   用TCPDUMP捕获的UDP包的一般输出信息是:
  route.port1 > ice.port2: udp lenth
  UDP十分简单,上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据包到主机ICE的port2端口,类型是UDP, 包的长度是lenth
  上面,我就详细介绍了TCPDUMP的安装和使用,希望会对大家有所帮助。如果想要熟练运用TCPDUMP这个LINUX环境下的SNIFFER利器,还需要大家在实践中总结经验,充分发挥它的威力。

分享到:
评论

相关推荐

    tcpdump使用详解

    tcpdump 使用详解 tcpdump 是一个功能强大的网络抓包工具,用于捕获和显示网络中的数据包。它可以帮助网络管理员和开发者来 debug 网络问题、分析网络流量、检测网络攻击等。 tcpdump 的基本使用 tcpdump 的基本...

    Linux下抓包工具tcpdump使用介绍.docx

    Linux 下抓包工具 tcpdump 使用介绍 tcpdump 是一个功能强大且灵活的抓包工具,广泛应用于网络分析和测试技术中。下面是 tcpdump 的一些重要知识点: 1. Ether 广播包的匹配:tcpdump 可以匹配 ether 广播包, ...

    Linux系统抓包命令tcpdump使用实例.docx

    Linux 系统抓包命令 tcpdump 使用实例 tcpdump 是 Linux 命令行下常用的一个抓包工具,记录一下平时常用的方式,测试机器系统是 Ubuntu 12.04。tcpdump 的命令格式为:tcpdump [-i 网卡] -nnAX 表达式。 参数说明...

    tcpdump使用说明

    ### tcpdump 使用说明详解 #### 一、简介 `tcpdump`是一款强大的网络数据分析工具,主要用于捕获并分析网络中的数据包。它可以帮助系统管理员、网络工程师和开发人员监测网络流量,诊断网络问题,理解网络协议行为...

    tcpdump使用方法

    **TCPDump使用方法** TCPDump是一款强大的网络封包分析软件,它允许系统管理员或网络工程师在Linux、Unix以及Windows等操作系统上实时捕获并分析网络数据包。在实际工作中,TCPDump是网络故障排查、安全审计和性能...

    Linux下tcpdump使用

    本篇将详细介绍 `tcpdump` 的使用方法,包括基本命令格式、捕获控制参数、包显示参数以及过滤表达式。 1. **基本命令格式** 基本的 `tcpdump` 命令格式如下: ``` tcpdump [-包显示格式参数] [-捕获控制参数] '...

    TCPDump使用方法小结

    TCPDump 是一款强大的网络封包分析软件,...了解并熟练使用TCPDump,对于网络管理员和开发者来说,是解决网络问题和优化网络性能的重要技能。在实际应用中,可以根据具体需求灵活组合这些参数,以达到最佳的抓包效果。

    抓包工具-tcpdump

    以下是一些基本的tcpdump使用知识点: 1. **基本语法**:tcpdump的基本命令格式为 `tcpdump [-i interface] [expression]`。其中,`-i` 参数指定监听的网络接口,如 `eth0` 或 `wlan0`,`expression` 是用来过滤...

    tcpdump-4.6.2.tar.gz

    - `include/`: 头文件,定义了TcpDump使用的各种数据结构和函数原型。 在使用TcpDump之前,确保你有适当的权限(通常是root或sudo),因为抓取网络数据包通常需要较高的系统访问级别。同时,了解如何编写有效的过滤...

    tcpdump-4.1.1

    在提供的“tcpdump使用指导.txt”文件中,很可能会包含如何使用这些选项和编写过滤表达式的具体指导,包括如何跟踪特定协议、主机或服务,以及如何解析捕获的数据包内容。 tcpdump 4.1.1版本可能引入了一些改进,...

    tcpdump4.2.1_libpcap1.2.1_code

    这个库不仅被tcpdump使用,还被许多其他网络监控和分析工具所依赖。`libpcap 1.2.1`同样代表了该库的一个特定版本,可能与早期版本相比,增加了新的功能或改进了兼容性。 使用`tcpdump`,你可以指定网络接口、过滤...

    tcpdump源程序

    1. 数据包捕获引擎:tcpdump使用libpcap库来捕获网络接口上的数据包。libpcap提供了跨平台的API,使得开发者可以方便地访问网络接口并捕获数据包。在源代码中,这部分通常包含在`libpcap`目录下,涉及文件如`pcap.h`...

    Tcpdump命令详解

    Tcpdump 使用表达式作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。 表达式中有三种类型的关键字: * 关于类型的关键字:host...

    tcpdump使用手册

    linux下抓包工具的使用,可以通过这个命令方便进行网络故障的排查

    TCPDUMP使用详解

    TCPDUMP的使用主要涉及到以下几个核心概念和操作: 1. 类型关键字: - `host`:指定具体的IP地址,表示只捕获该主机的数据包。 - `net`:指定网络地址,意味着捕获属于该网络的所有数据包。 - `port`:指定端口...

    Android tcpdump

    Wireshark是一款图形化的网络封包分析工具,可以配合TCPDump使用。首先用TCPDump将数据包捕获到`.pcap`文件,然后在PC上用Wireshark打开该文件,进行详细的分析和过滤。 **安全与隐私** 需要注意的是,使用TCPDump...

    linux下开源的tcpdump,类似于wireshark

    libpcap库不仅被tcpdump使用,许多其他网络分析和诊断工具也依赖它。 在Linux环境下编译和安装tcpdump的步骤通常包括以下几步: 1. 解压源码包:`tar -zxvf tcpdump-4.9.2.tar.gz` 2. 进入源码目录:`cd tcpdump-...

    TcpDump网络数据侦听软件

    **二、TcpDump使用方法** 1. **安装与启动**: 在Linux环境下,可以通过包管理器如`apt-get`或`yum`来安装TcpDump。启动时需要指定监听的网络接口,如`tcpdump -i eth0`。 2. **基本命令行选项**: - `-n`:不将IP...

Global site tag (gtag.js) - Google Analytics