网络数据包的捕获及分析软件简介(上)

  自由转载 ^_^   同时请注明原文出处:http://www.cnblogs.com/wangvsa/archive/2012/07/18/2598326.html

 

  在上一篇文章中使用tcpdump实现了基于ip的流量统计,在选择tcpdump之前我参考了许多文章论文,也在网上

搜索到了很多相关软件(大多是linux的,也有部分软件有windows版本),在此简单整理一下。

  这些软件按其功能大体可以分为两类:一类主要提供捕获数据包的功能,这类软件中有的可以作为logger使用,

有的则不行,即其只能实时的现实当前网络状况;另一类主要提供了分析功能,比如根据用户需求提取相应信息,根

据数据来图形化等。

  

  一、数据包捕获软件

  关于数据包的捕获的实现方式有多种:基于libpcap库、使用零拷贝技术、使用PF_RING接口、直接使用系统调用

等。直接使用系统调用是效率最低、丢包率最高的。其次,根据网上的文章中所介绍来看,使用零拷贝技术效率最高、

丢包率最低。我实测过使用零拷贝的netsniff-ng和基于libpcap库的tcpdump,并没有太大差距,都没有出现丢包现象。

测试环境是千兆网卡满负荷(与上篇文章同一个机器~.~)。

  resource_04.gif

  下面逐个介绍一下:

  1.tcpdump - dump traffic on a network

  这个应该软件应该是使用比较广泛,效率较高,基于libpcap库实现,它可以将捕获到的数据包信息记录到一个pcap

文件当中去,然后以后在分析。tcpdump支持filter可以有用户设置过滤器。它还提供了很多实用的选项,比如可以设置记

录时间间隔、记录文件大小限制、记录数据包信息大小限制、达到一定时间或大小时执行某命令等。同时,tcpdump可以

读取pcap文件(即使其变成人眼可识的文字形式),读取时也有多种选项可以设置。

  应用方法就很多了,我上一篇文章就是用它作为logger,然后自己统计流量。

  

  2.netsniff-ng - the packet sniffing beast

  这个工具是使用零拷贝的,效率很高,正如其介绍一样beast。。。netsniff-ng实际是一个工具套装,其包含了很多小

工具如:

  trafgen, a high-performance zero-copy network traffic generator

  flowtop, a top-like netfilter connection tracking tool

  同时,netsniff-ng也支持bpf,而且还支持pcap文件格式输入及读取。

  下图使用这个工具测试网卡最高传输速率,方法是先用trafgen产生traffic让网卡满负荷,在用netsniff-ng抓包分析,详细

介绍点这(里面还有一些基础tcp/ip知识,很实用)

[root@shopper2 tmp]# trafgen -d p1p1 -c /etc/netsniff-ng/trafgen/nst_udp_pkt_1472.txf -n 1000000 -b 0
 1 [root@emachine shm]# netsniff-ng -i p32p1 -o /dev/shm/c1.pcap -s -n 1000000 -b 0
 2 
 3 netsniff-ng 0.5.6.0
 4 RX: 238.41 MB, 122064 Frames each 2048 Byte allocated
 5 OUI UDP TCP ETH 
 6 IRQ: p1p1:48 > CPU0
 7 PROMISC
 8 BPF:
 9 (000) ret      #-1
10 MD: RX SCATTER/GATHER
11 
12 1000000 frames incoming
13 1000000 frames passed filter
14   0 frames failed filter (out of space)
15 [root@emachine shm]#
16 
17 [root@emachine shm]# pwd
18 
19 /dev/shm
20 [root@emachine shm]#
21 
22 [root@emachine shm]# ls -al
23 
24 total 1497072
25 drwxrwxrwt  2 root root         60 Oct 24 06:19 .
26 drwxr-xr-x 22 root root       4100 Oct 24 05:55 ..
27 -rw-------  1 root root 1530000024 Oct 24 07:34 c1.pcap
28 [root@emachine shm]#
29 
30 [root@emachine shm]# capinfos ./c1.pcap
31 
32 File name:           ./c1.pcap
33 File type:           Wireshark/tcpdump/... - libpcap
34 File encapsulation:  Ethernet
35 Packet size limit:   file hdr: 65535 bytes
36 Number of packets:   1000000
37 File size:           1530000024 bytes
38 Data size:           1514000000 bytes
39 Capture duration:    12 seconds
40 Start time:          Mon Oct 24 07:34:22 2011
41 End time:            Mon Oct 24 07:34:35 2011
42 Data byte rate:      123044025.00 bytes/sec
43 Data bit rate:       984352199.97 bits/sec
44 Average packet size: 1514.00 bytes
45 Average packet rate: 81270.82 packets/sec

   

  3.iptraf - Interactive Colorful IP LAN Monitor

  这个软件的功能也比较多,他可以实时检测,并提供多种监测机制,可以使用filter,可以作为logger。

我没有在满负荷的千兆网卡上测试,但是我看了一下这个工具的源代码,应该是直接使用了系统调用来捕捉

数据包。下面这个界面可以选择检测机制、设置filter、设置logger文件名及路径等。

  

  运行界面如下:

  

  

  4.argus - auditing network activity

  这个软件也是功能强大,官网上说了很多它的使用案例,介绍也是比较详细。这个软件记录数据包信息的时候使用自己

的文件格式,他同时也支持pcap文件格式,可以将pcap转成argus格式,但是反过来不行。还有一点要注意,转换不一定都

能成功,比如使用tcpdump记录时限制了数据包的大小,此时转换就会失败。

  argus包含argus-server和argus-client。其中argus用来抓包(也支持filter)。这个软件还有一个特点就是,

argus-server抓包时可以打开一个端口,然后client通过这个端口连接过来然后读取server抓的包的信息。

  argus-clinet包含很多解析分析工具(十多种)。可以读取argus(压缩的也可以读)、pcap等格式的文件然后再次过

滤文件中一些不需要的内容再写到文件中(可以存储为文本格式或arugs格式)。

  

  5.iftop - display bandwidth usage on an interface by host    (没有官网)

  这个软件不提供logger功能,但是能以比较简洁的形式将当前网络状态展示出来(与其他ip的数据交换)。

  具体使用请man~ 使用截图如下:

    

   

  以上工具都是我使用过的,还有很多没有使用过的工具,也在以后的文章中整理,关于第二类分析工具相关软件在下一篇文章中整理。

  

posted @ 2012-07-18 23:35  wangvsa  阅读(8067)  评论(1编辑  收藏  举报