基于Libnet 的网络协议测试系统研究与实现

摘要:计算机网络协议测试主要包含测试集自动构造技术与测试执行系统的设计,该文介绍了网络协议测试的基本理论,网络协议测试系统的设计思路与实现方法,基于Libnet与WinPcap函数库实现一个网络协议测试系统,该系统包括测试集管理,测试例构造与测试结果管理等模块,可用于网络协议一致性测试与性能测试,最后对路由器提供的DHCP服务进行测试验证测试系统的有效性。

关键词:Libnet;协议测试;DHCP

中***分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)32-7218-03

计算机网络在各行业的广泛应用促使许多新的协议规范被制定,在协议规范被实现后投入应用前需要进行测试,全面的网络协议测试能够保证协议实现按照协议规范稳定可靠地运行。协议测试的研究涉及了协议描述、测试生成、测试集描述法、测试实现等多个环节,在这些方面,国内外研究人员经过多年努力达成了很多共识,例如:网络协议测试类型包括一致性测试,互操作性测试,性能测试和健壮性测试[1]。测试理论的形式化方法主要包括:SDL,LOTOS,Petri网,Estelle等[2-4]。该文研究的重点是测试实现部分,介绍基于Libnet与WinPcap函数库的协议测试系统的实现方法,并结合DHCP协议进行测试从而验证测试系统的有效性。

1 协议测试技术

网络协议测试属于计算机软件测试的一个分支,在测试领域中测试方法分为3种:白盒测试、黑盒测试和灰盒测试。白盒测试通过每条语句至少执行一次来全面检查整个程序代码,而黑盒测试只测试软件外部可以观察到的行为,不涉及程序的内部结构。白盒测试的测试能力非常强,但是过程过于复杂,对被测软件要求也很高。黑盒测试只关心被测软件的输入和输出,测试能力虽然弱了些,但是测试过程本身相对简单,对被测软件要求也无特殊要求。灰盒测试是将白盒测试和黑盒测试结合起来形成的一种测试方法,吸收了两种方法的优点。在通信测试中,协议测试因为协议实现的复杂性往往采用黑盒测试,它并不检查协议代码,而是按照协议标准,通过控制观察被测协议实现或系统的外部行为对其进行评价。

协议测试中用来描述特定协议或协议族测试的实体称为测试集,它由多个测试组构成,测试组对应于此协议族的一个标准协议规范,测试例对应于一个标准协议规范的某一项功能描述,完成一个测试例可能需要不同的测试过程,一个测试过程的完成需要进行初始化、发包、收包、比较以及处理结果等步骤,每一个动作称为一个测试步,它是测试集中最小的单位。在构造用于测试协议实现的输入数据包时采用了Libnet函数库,在捕获协议实现的反馈输出数据包时采用了WinPcap函数库,Libnet与WinPcap都是免费开源的函数库,它们封装了常用繁琐的网络开发过程函数,开放出简单统一的API接口功能函数,方便用户调用,使开发人员能够忽略网络底层细节的实现,从而专注于程序本身具体功能的设计与开发。Libnet与WinPcap都是基于C语言的函数库,具备低层网络数据包操控能力。

2 测试系统总体结构

测试系统包括测试集管理,测试例构造与测试结果管理3个功能模块,系统执行测试时的顺序与测试例构造模块中构造的测试步顺序一致。在对被测系统开始测试前需要针对协议规范设计测试例,所有测试例由测试集管理模块维护,最终的测试结果生成依赖测试例的执行结果。测试例由许多测试步组成,测试步包括两种执行逻辑:激励数据包发送和反馈数据包捕获。发送的激励数据包根据被测协议的类型与数据报文的类型设定首部各字段与报文数据,它的作用是激励被测系统内部产生状态变迁并发送反馈数据包。测试系统能够实时捕获所有数据包,根据filter条件过滤后选出特定报文并与测试步匹配,根据匹配结果系统决定测试步执行状态:丢弃报文继续阻塞,定时器清零继续下一测试步或者测试完成。在测试步执行过程中设置定时器,定时器时间的指定在测试例构造中完成。测试系统的总体结构如***1所示。

3 测试系统的设计与实现

本测试系统与被测实体部署在同一个交换网络中,被测实体是特定协议的一个实现,可以位于计算机或路由器等网络设备中,通过构造特定数据包并且捕获响应报文对协议外部行为进行分析测试。关键模块包括测试例构造,数据包构造与发送,数据包捕获与过滤。

3.1 测试例构造

系统实现时在测试例的构造模块中设置了行为选项来区分发送数据包与捕获数据包,测试步间隔时间选项用于控制相邻测试步执行的时机。对于发送数据包,根据协议的类型构造数据包设置页面,在此页面中设置首部字段与数据包内容,由于libnet提供自动计算校验和功能,此页面中首部校验和字段设置为0。对于捕获数据包,设置了匹配选项与传递选项,匹配选项用于判定数据包特征并触发下一测试步,传递选项用于决定是否需要将捕获数据定字段复制到下一测试步发送数据包特定字段中以及复制内容。对构造完的测试例启用测试将顺序执行其中的测试步,遇到捕获测试步将阻塞并启用超时定时器,每一个测试步执行过程都记录在日志文件中。

3.2 数据包构造与发送

系统实现使用Libnet函数库构造底层数据包,在依照协议字段长度与类型对测试例中设置的各字段进行合法性校验后调用libnet_init ()函数初始化函数库,此函数调用了WSAStartup()函数开启网络,同时分配一块内存区域建立libnet_t结构并返回此结构的描述符,这个描述符作为参数传递给构造数据包函数和发送数据包函数。测试步中设置的协议及各字段进行格式转换后传递给构造数据包函数,数据包构造函数根据协议族中的位置自顶向下建立数据报文头部,待发送的数据作为协议首部的有效载荷被加载,构造函数具备自动计算协议首部校验和字段的功能。测试报文发送函数根据协议类型调用socket函数将已构造好的缓冲区中的数据通过网卡发送到网络上,它的函数原型为:int libnet_write(libnet_t *l),此函数实现中调用了函数PacketSendPacket(),此函数在头文件packet32.h中声明,Packet32.lib与Packet32.dll是相应的静态链接库与动态链接库。WinPcap开发包中自带了Packet32,在工程项目中需要设置合适的系统路径。测试完成后使用libnet_destroy()函数来释放所占用的SOCKET连接、缓冲区等资源。

3.3 数据包捕获与过滤

捕获响应数据包使用WinPcap函数库,它的核心是NPF协议驱动,符合NDIS规范。在捕获数据包的线程里使用pcap_open()打开网络接口,pcap_next_ex()读取网卡接收的数据包,网卡在混杂模式会捕获大量的数据包,如果逐一比对测试步将消耗大量资源,在系统实现时调用pcap_setfilter()设置数据包过滤器,在调用pcap_setfilter前先使用pcap_compile()函数把高层的过滤规则解释成能被过滤引擎集成到数据包驱动中的低级字节码。

4 DHCP协议测试与结果分析

在对特定协议进行测试时需要根据协议的行为特征设计测试拓扑。某些协议的数据交换行为局限于测试平台与被测实体间,这种情况下只需将其部署在交换环境下即可,例如TCP协议的测试。而对于路由协议这样的协议而言,则需要设计更为复杂的拓扑,路由器的多个端口都需要部署测试平台进行协同测试。在协议安全性测试时借助交换机端口映射功能可以模拟攻击的拓扑结构。

为验证测试平台的有效性,选择DHCP协议进行测试。DHCP协议动态管理IP地址,工作在传输层之上,使用UDP提供的服务。其数据包封装格式如***2所示:

依照***2中DHCP数据包封装的结构,在构造DHCP数据包时调用函数依次为libnet_build_dhcpv4(),libnet_build_udp(),libnet_build_ipv4(),libnet_autobuild_ethernet(),Winpcap过滤DHCP数据包使用协议限定符“bootp”。测试采用的拓扑如***3所示:

测试拓扑中使用路由器作为DHCP服务器,在路由器上启用DHCP server服务,并且配置地址池、网关、地址租期等信息。

ip dhcp excluded-address 172.16.1.1 172.16.1.100

ip dhcp pool net172

network 172.16.1.0 255.255.255.0

default-router 172.16.1.254

dns-server 172.16.1.253

lease 30

在测试机上设置测试例Ts_sc,配置测试步:TS_DHCPDISCOVER,TS_DHCPOFFER,TS_DHCPREQUEST和TS_DHCPACK,其中TS_DHCPDISCOVER和TS_DHCPREQUEST是构造的激励数据报文,TS_DHCPOFFER与TS_DHCPACK为反馈数据报文。测试系统上启用测试执行Ts_sc测试例,在路由器上启用DHCP event调试,调试信息显示路由器DHCP服务状态发生变化,测试系统完成所有测试步后成功获得172.16.1.0网段IP,使用show ip dhcp server statistics查看DHCP服务器统计信息,与测试系统结果一致。

5 结束语

本文基于Libnet与WinPcap函数库设计并实现了一个网络协议测试系统。在用于协议一致性测试时可手工设置测试用例,灵活配置协议首部字段,能够对常见网络协议进行测试。在用于网络性能测试时可以设置数据包类型与数据包的发送数量,网络注入速度受数据包长度与网卡接口速度、交换机背板带宽等因素限制,可分布多台测试系统在网络中同时注入从而提高注入速度。经过多年的研究,在协议一致性测试集自动生成技术方面,研究人员提出了多种可行的方法,下一步的主要工作是整合测试集自动生成技术从而完成协议自动测试,同时进一步完善支持的协议类型,增强扩展性。

参考文献:

[1] 毕***,史美林.计算机网络协议测试及其发展[J].电信科学,1996(12):51-54.

[2] 章韵,杨庚,钱恩渊.基于SDL语言的通信协议系统设计方法[J].计算机工程与应用,2001(22):95-98.

[3] 潘红艳,于全.用于通信网络协议开发的形式化方法[J].计算机工程,2004(2):129-134.

[4] 罗***舟,沈俊,顾冠群.从Petri网到形式描述技术和协议工程[J].软件学报,2000(5):606-615.

[5] 刘浏,陈晓梅.基于测试套优化的DHCP协议一致性可扩展测试系统设计[J].信息网络安全,2012(8):206-209.

[6] 程方,王鹏.现代网络测试技术发展综述[J].重庆邮电大学学报:自然科学版,2008(6):57-60.

[7] 刘洪霞,赵保华.基于协议实现的网络安全测试[J].小型微型计算机系统,2007(4):619-621.

[8] 尹霞,王之梁,景传明,施新刚.一种基于TTCN-3的协议测试系统及其扩展研究[J].中国科学:E辑:信息科学,2008(10):1594-1613.

[9] 李尧,胡玲,郝文.基于状态的自动化无线协议安全测试平台设计[J].计算机应用与软件,2012(11):168-171.

[10] 王之梁,尹霞,李中杰.OSPF协议测试中网络拓扑建模及其算法研究[J].计算机工程与应用,2002(12):1-4.

[11] 李伟,魏仰苏,郑啸.网络协议测试仪的研制[J].测试技术学报,2004(3):244-248.

基于Libnet 的网络协议测试系统研究与实现

转载请注明出处学文网 » 基于Libnet 的网络协议测试系统研究与实现

学习

古典女孩 第6期

阅读(18)

本文为您介绍古典女孩 第6期,内容包括古典女孩简单介绍自己,古典墨绿色油画女孩。宋辞的父亲是位教古典文学的教授,也许是受了父亲的影响,她从小就会背100多首唐诗宋词,父亲每次带她到朋友家去,朋友就逗她,给伯伯背一首诗。宋辞就说你随便点

学习

《舌尖上的中国》解读

阅读(11)

本文为您介绍《舌尖上的中国》解读,内容包括舌尖上的中国解说词完整版,舌尖上的中国文字讲解。【摘要】《舌尖上的中国》是将饮食文化与国家形象传播相结合的一次探索。透过美食这个窗口,让世界看到中国人与人、人与自然、人与社会的和谐

学习

总有一种力量让人泪流满面

阅读(23)

本文为您介绍总有一种力量让人泪流满面,内容包括总有一种力量让我们泪流满面原文,总有一种力量让我泪流满面1999。五月十二日,我想将被作为一个永久的纪念日深深烙在每个人的心里,它让我们更加懂得生命的珍贵,也让我们怀着对那些死者的哀悼

学习

“0” 的故事

阅读(32)

本文为您介绍“0” 的故事,内容包括关于0的故事,婴儿故事0至1岁。在zài数shù字zì王wán国uó里li,0很hěn骄jiāo傲ào,因yīn此cǐ,他tā总zǒn是shì瞎xiā捣dǎo蛋dàn,惹rě得de其qí他tā数shù字zì非fēi常chán生shēn气qì。

学习

《赤壁》《泊秦淮》赏析

阅读(16)

本文为您介绍《赤壁》《泊秦淮》赏析,内容包括赤壁泊秦淮对比赏析,泊秦淮所有赏析。我们再看第二首《泊秦淮》,秦淮就是秦淮河,南京城里现在还有这条河。南京是中国古代六朝的名都,从孙吴开始,历经东晋、宋、齐、梁、陈,都是在建康这里建都的

学习

轻松使用五笔输入繁体字等

阅读(23)

本文为您介绍轻松使用五笔输入繁体字等,内容包括万能五笔输入法怎么打出繁体字,极品五笔输入怎么变成繁体字。在陈桥五笔输入法状态栏中点击鼠标右键,在弹出的右键菜单中选择“参数设置”“汉字输出设置”“输出繁体字”“确定”即可。按

学习

魔幻女子张一蓓

阅读(21)

无论你是不是湖南人,无论你是否关注芒果台,相信对于《天天向上》这个节目,你都有所耳闻。没错,这是湖南电视界的又一大奇迹。2008年8月4日,这档大型公德礼仪类脱口秀节目横空出世,开播两年以来,已然成为与《快乐大本营》分庭抗礼的王牌节目。

学习

LC三点式振荡电路的判别法及电路特征

阅读(28)

本文为您介绍LC三点式振荡电路的判别法及电路特征,内容包括三点式lc振荡电路原理,lc振荡电路公式详解。摘要LC正弦波振荡器在各种电子设备中、高频加热设备、医用电疗仪器中都有广泛应用,而LC正弦波振荡器里最常用的是三点式振荡器,因此掌

学习

兴勃亡忽杜一楠

阅读(20)

2013年1月,曾为国内团购网五强之一的24券的大股东成功集团明确撤资,24券倒闭,这意味着创始人杜一楠的事业戛然而止。作为一个能力远超同侪的年轻创业者,杜一楠究竟跌倒在哪里?

学习

浅析虚拟社会与现实社会的关系

阅读(20)

本文为您介绍浅析虚拟社会与现实社会的关系,内容包括虚拟社会大于现实社会的说法,引发虚拟社会与现实社会的冲突。摘要:随着互联网技术的不断发展与普及,网络以惊人的速度席卷全球,进入人们的学习、工作、生活等各个领域,延伸了人类生存的空

学习

“嫦娥三号”落月作文500字

阅读(22)

本文为您介绍“嫦娥三号”落月作文500字,内容包括嫦娥五号落月采样作文,嫦娥三号落月全过程。哟晴晴快来!妈妈大惊小怪地吆喝着。干嘛?我一脸怒气,一看电视,呀!我尖叫了一声。只见电视出现小字,嫦娥三号今晚落月!哇,载着中国人的梦想,被称为嫦娥

学习

热门网络词汇浅析

阅读(20)

本文为您介绍热门网络词汇浅析,内容包括网络流行词汇深度解析,2017年网络热门词汇。摘要:随着计算机和网络的高速发展,网络词汇成为一种快速出现并且迅速被社会成员所接受使用的新型词汇。对于被网络词汇充斥着生活今日,本文对2012年的网络

学习

凡客诚品网上商城网络营销策略分析

阅读(54)

本文为您介绍凡客诚品网上商城网络营销策略分析,内容包括凡客诚品的成功网络营销事件,凡客诚品的品牌推广网络营销。【摘要】VANCL凡客诚品是由原卓越网创始人陈年先生所创办,正式运营于2007年10月,在成立短短的几年内,成为了服装网络营销

学习

最新债务转让协议

阅读(30)

本文为您介绍最新债务转让协议,内容包括债务纠纷房屋转让协议,公司债权债务转让协议。最新债务转让协议范本合同编号:年字第号债务受让人(以下称甲方):

学习

网络试衣间等8则

阅读(27)

本文为您介绍网络试衣间等8则,内容包括网络男装试衣间,网络试衣间的市场营销。如果在网上订购衣服,一定存在因不合体而退换的烦恼。为此,德国科学家开发出一套名为“网上试衣间”的系统,不仅可以帮助顾客“体验”举手投足之间新衣是否合体,

学习

TCP/IP协议简要分析

阅读(28)

本文为您介绍TCP/IP协议简要分析,内容包括tcpip协议的含义是什么,tcpip协议详解教程。【摘要】人们在日常生活交流中要按一定的规则进行交流,同样在Internet互联网上计算机进行相互通信时,也必须要按一定的事先约定好的规则进行,因此:TCP/IP

学习

三网融合中的IP网络电视业务

阅读(23)

摘要:IP网络电视(IPTV)业务是三网融合的一个最大切入点。论文简单介绍了三网融合前提下的IPTV业务,IPTV的几种终端系统,通过比较指出基于IP-STB的终端系统将是三网融合中IPTV业务的主要终端系统,并进一步介绍了IP-STB机顶盒的接入方式、软硬件

学习

网络社会,网络道德

阅读(20)

本文为您介绍网络社会,网络道德,内容包括网络生活的道德要求,网络道德与现实社会道德。网络社会