网络数据包论文
摘要:随着当今社会网络的日益普及,网络嗅探(分析)器已经被广发的应用与模拟网络通信以及测试网络性能等等工作中。而目前对于数据包捕捉函数库libpcap的应用主要集中与在网络分析器中,相对于对截获的数据包进行发送等功能的工具相对来说较少。本文就实现一个基于libpcap及原石套接字的数据包发射器,同时支持多重格式读写,进而在大容量数据包的网络性能测试以及定时、快速发包准确性等应用方面进行了优化的设计。
关键词:网络数据包;嗅探libpcap;tcpdump network data package transceiver design and implementation
luo yun,gao qin
(xihua university,chengdu610039,china) abstract:with the growing popularity of social networks today,network sniffer (analysis) is already being widely distributed application and network traffic simulation and test network
performance,etc.work.at present,the packet capture library for applications libpcap mainly with the network analyzer,the relative of the intercepted data
packets for transmission and other functions are relatively few tools.this article implements a socket-based libpcap and the original stone packet transmitter supports both read and write multiple formats,and then large amounts of data packets in the network performance testing and timing accuracy applications such as fast contracting optimized design.
keywords:network data package;sniffing libpcap;tcpdump
一、数据包捕获原理及其相应的输出文件格式 (一)数据包的捕获原理
这里的libpcap是一种与系统无关而采用分组捕获机制的分组捕获函数库。使用libpcap编写的程序可以自有的夸平台使用。libpcap主要是由network tap 和 packet filter。在一个不活的过程中,驱动程序利用一个网络借口嗅探数据包,并且把它们完整的送递给用户层来进行应用程序。network tap会在数据包到达网络接口的同时,从网络设备的驱动程序中获得该数据包的拷贝,同时发送给内核数据包过滤器,packet filrer对进来的所有数据包执行过滤,只接受遵循过滤条件的数据包,再将其放进内核缓冲器,并
且传递给用户层的缓冲器,再交由应用程序进行下一步的处理。
(二)tcpdump以及它的输出文件格式
tcpdump是一款网络分析软件,能够根据使用者的定义来对网络上的数据包来进行截获,支持针对于协议、网络层、主机、端口或者网络的过滤,同时可以在linux、solaris、freebsd、windows等多重操作系统下运行。而由于tcpdump是一个公开输出文件格式和源代码的软件,所以许多基于tcpdump的网络分析器都是在它的基础上来进行改进的。
tcpdump输出文件包cap格式包括了一个文件头以及若干个数据包:文件头包括了文件标志等信息。而为了能与wireshark等协议解析工具相结合,在设计数据发射包的时候,对于捕获的数据发射包都存储为tcpdump格式。
二、关于数据包收发器的理论
(一)收发器的大致结构以及工作流程
对于模拟网络通信、网络分析等工作中需要的对于捕获数据进行捕获以及发送的需要,笔者设计了一款数据包收发器sp(send-packet),此工具能够实现cap文件加载,tcp类型和普通类型数据包自定义的规则发送,以及数据包的捕获统计等等功能。
该工具由以下几个模块组成,分别为:命令行输入与线
程控制模块;数据文件加载模块;普通发包线程模块;tcp数据发包线程模块;包捕获过滤统计模块以及线程的消息处理模块。此六种模块环环相扣,顺接而成,大致描述以及拟出了收发器的结构以及工作的流程。
(二)收发器的实现
笔者在linux的kde环境上开发实现了数据包收发器sendpacket,该收发器可运行于linux/solaris 平台。操作方法为:./sendpacket [-p pathfile] [-d dstmacaddr] [-f filter] [-m work-mode] [-o outputfile] [-n sendtimes] [-t interval] [-i interface]。
其功能选项如下:-p:指定读取发送的cap文件格式;-d:指定数据包发送的目的mac 地址,‘aa:bb:cc:dd: ee:ff’格式;-f::指定过滤字符串,同tcpdump的过滤格式,如‘host135.1.2.188’等;-m:指定程序的工作模式:1:普通发包模式默认 ,2:tcp服务端发包模式,3:tcp 客户端发包模式,4:数据包捕获及过滤统计模式;-o:指定输出的cap 文件,tcpdump 格式;-n:指定发送次数;-t:指定发送间隔,用以控制发送速率,单位为微秒;-i:指定网卡,eth0 或 eth1,…;-h:查看使用帮助。
该收发器能够加载指定的cap 文件,并采用tcp 类型或普通类型发送数据。例如通过 eth0,将数据文件
/tmp/test.cap循环 10 次,以最大速率发送到目的mac 地址00:1d:92:a9:60:32的机器。
同时笔者在此也设计了一个该收发器的试验方法:将收发器运行于发送端,选取普通发包模式,分别配置~1500字节不同大小的数据包,以最大速率连续发送一百万次。发送地址设置不存在的主机,以避免工作站之间出现不必要的交互。接收端将网卡设置为混杂模式捕获数据包,通过嗅探软件wireshark 分析网络流量,观察掉包情况。同时借助load- runner 实时监控发送端的 cpu 的负载状况。
三、结束语
解析目标分流法是一种较新的具有收敛证明的多级交替求解多学科设计优化方法。本文指出了最初的atc方法存在的问题,在此基础上基于分解协调策略,提出了一种改进的解析目标分流法—iatc。同时,文中设计实现的数据包收发器,通过存储和读取标准cap格式数据包文件,可以与wireshark等网络协议解析工具很好的结合使用,同时可以通过灵活的设置发送策略,将cap文件中的数据包直接向对端主机的mac地址进行大容量、快速发送,能够完成各种网络分析测量任务。而随着网络的广泛应用,该收发器的设计思想会不断完善,将在网络容量、性能测试及网络安全等更多领域发挥重要作用。
参考文献:
[1]曾敏,李峰.嵌入式数据包捕获器的设计与实现[j].计算机工程与设计,2009,30(7):1571-1573
[2]赵迁,陈潇凯,林逸.基于罚函数的解析目标分流法计算特性分析[j].计算机工程与设计,2010,31(11):25-2567
[3]陈宝林.最优化理论与算法[m].北京:清华大学出版社,2005
[4]李革新.网络数据包捕获工具的开发与实现[j].计算机工程与设计,2007,28(8):1834-1836