维普资讯 http://www.cqvip.com 2008年6月 电 脑 学 习 第3期 基于WinPcap网络流量实时统计程序的设计 李宏波’ 黄炳琪 摘 要:用VC++实现了一个基于WinPcap库的网络流量实时统计程序.并对其工作原理进行了探讨。 关键词:WinPcap VC++ 实时网络流量统计 中图分类号:TP393 文献标识码:B 文章编号:1002—2422(2008)03-0035—02 Design of ReaI4ime Network qa-afifc Flows Statistics Program Based on WinP ̄p Li Hongbo Huang Bingqi Abstract:The paper gives a program of real-time network tragic flows statistics in VC++based on WinPcap,and d— iscusses its basic principle. Keyword:WinPcap VC++ Real—time Network Tragic Flows Statistics l关于WinPcap库 ntf(”没有可用的适配器!、Il”); WinPcap(windows packet capture)是windows平台下 } 一个免费的、公共的基于Windows的网络接口API库。主要 (2)指定要监听的网络适配器并打开 为win32应用程序提供访问网络底层的能力。其特点: prinff(”输入要监听的网络适配器号(1-%d): ); scanf(”%d ,&Mum); (1)捕获原始数据包,包括在共享网络上各主机发 for(d=alldeVS,i=O;i<inum-1;d=d一>next,i++); 送镤收的以及相互之间交换的数据包: fp=peap_open_liVe(d->name,65536,1,1000,errbuf)) (2)在数据包发往应用程序之前,按照自定义的规则 (3)编译并设置过滤器 将某些特殊的数据包过滤掉; 译过滤器,fp指向打开的网络适配器,fcdoe为编译完成后的过 (3)在网络上发送原始的数据包: 滤器存储地址, tcp”给出了过滤条件,下一个参数表示是否被优化 (4)收集网络通信过程中的统计信息。 (O为false,1为true。),最后一个参数给出子网掩码。 2流量统计程序的主要功能块(见图1) peap_eompile(fp,&feode, tcp”,1,netmask) peap_setiflter(fp,&focde) 取得网络适配器列表 (4)设置网络适配器为统计模式 选择要监控的网络适配器 网络适配器为统计模式(statstics mode)./ if(pcap—setmode(fp,MODE_STAT)<O) f 编译并设置过滤器 fprinff(stderr,"kn设置网络适配器模式错误Bn”); peap_elose(fp); 将网络适配器设置为统计模式 } (5)开始主循环,调用回调函数显示网络流量统计信 开始主循环调用回调函数显示网络流量统计 息 图1流量统计程序的主要功能 //peap._loop由WimPeap库定义,对每个采集来的数据包都用P 3程序代码设计 cessPaeket函数进行处理,fp指向打开的网络适配器 peap_loop( ,0,dispatcher_handler,(PUCHAR)&8Lts); (1)取得网络适配器列表 peap_close(fp); 取得网络适配器列表,alldevs是peap_if_t指针,指向链表头,errbuf (6)回调函数的实现 是char型数组,存储错误信息. /.对于捕获到的每一个数据包应用此回调函数./ peap__ifndalldevs(&alldevs,errbuf); void dispatcher_handler(u_char state, const struet peap_pkthdr prlnff(”网络适配器列表:、Il”): *header,eonst u_char*pkt_data) for(d=alldevs;d:d=d->next) I I struet timeval*old_is=(struet timeval・)state; prinff(”%d.name%8 ,++i,d->name); if(d一>deseriptlon) u_int delay; LARGE_printf(”(%B)、Il ,d->description); INTEGER Bps,Pp8; struet tm*hime; else char timestr[161; 收稿日期:2oo7—07-20 ・李宏波重庆邮电大学工程师(重庆400065)。 ・ 35 ・ 维普资讯 http://www.cqvip.com 2008耳6月 电 脑 学 习 第3期 基于JSP小型网上书店的设计木 梁瑾” 陈婷 摘 要:通过对,I-型网上书店的需求分析.采用JSP技术设计并开发了一个适舍个人使用的,I-型网上书店。 关键词:JSP ,I-型 网上书店 文献标识码: B 文章编号:1002—2422(20o8)03-0036—02 中图分类号:TP393.02 The Design of Minitype Web Bookshop Based on JSP Liang Jin Chen Ting Abstract:The paper adopts JSP technology to design and develop a minitype web bookstore according to demand a— nalysis of minitype web bookstore,which is suitable for individuals and small companies. Keyword:JSP Minitype Web Bookstore 1技术方案 JSP与ASP相比,具有跨平台性好、安全、可伸缩性好 的优点。能提供一种更为简便、有效的动态网页编写手段, 并且增强网页程序的性、兼容性和可重用性。但单纯的 随时浏览和买书,实现高效率的图书销售方式。网上书店的 功能模块分为前台模块及后台模块。前台模块主要包括图 书信息的浏览和查询模块、购物车以及前台订单处理、服务 台结帐管理功能模块。后台模块主要包括图书信息管理、用 户管理模块。 JsP语言执行效率并不高,如果在短时间内出现大量的用户 点击,单纯的JSP很快就会到达功能的上限,而使用Jay— 3数据库设计 设计了九个表,分别为:Books、Customers、Category、Fe— edback、Supprier、Salesbook、Vouch、Visit、Distincti0n。各表之 aBean的中间层技术就能大幅度地提高访问功能上限,加快 执行速度。根据系统的需要,采用“JSP+JavaBean”三层 Web结构的开发模式,使用Photoshop及Fireworks MX2OIM 间的关系如图1所示,其中Books表通过idbooks字段与 Salesbook表、Feedback表关联,通过idsupplier字段与Sup— prier表关联,通过idcategory与Category表关联;表Cus- tomer通过字段iddistinction与Distinction表关联,通过id— 对各种图片素材进行处理,应用Dreamweaver进行静态网 页的设计开发,SQL Server2000为后台数据库管理系统。 2功能设计 小型网上书店主要包含以下功能:提供网上开展图书 销售的基本业务,提供书店和读者的交互功能,实现订单结 算功能,提供网上功能强大的图书信息查询。从而让读者能 time_t localtv_sec; _customer字段与Salesbook表关联。当一个表的信息发生改 变时,与之关联的数据表相应字段或数据也会发生改变。如 当Category中的图书类别发生改变时,Salesbook里的图书 显示网络数据流量,每秒数据包量和比特量 //计算距上一个数据包的时间延迟,以m为单位。 个值是从与一个数据包相关的时间戳中获取的。 delay=(header->ts.tvse ̄一old_ts一>tv_sec) _nff("BPS=%I64u ,Bps.QuadPaa); prlnff("PPS=%I64ukn”,pp8.QuadPa ̄); oldts一>tv sec=header一>Its、tvsec; _—1000000一、 old_ts->tv_usec+header一>ta.tv—usee; old_ts一>tv_usee=header一>ts.tvusee; _获取每秒钟的比特量。乘8把单位从bytes转化成bits,乘 10000130是因为delay是以m为单位的./ Bps.QuadPart=(((・(LONGLONG*)(pkt_data+8)) 10o()00O)/(delay)): J 4结束语 8・ 实时网络流量统计是网络管理主要技术之一,借助这 个程序可以了解到基于WinPcap库捕获网络数据包和进行 统计分析的一般流程和方法。程序是一个雏形,如果应用到 获取每秒钟的数据包量./ Pps.QuadPart=((( (L0NGL0NG )(pkt_data)) (delay)): 100oo0o)/ 大流量 b或Ftp等服务器上,则要用到一些多线程等抓 包优化机制。 把时间戳转化为易读格式 localtvsec=header->ts.tvsec; ___参考文献 [1】The WinPcap manua1.http.//www.wlnpcap.ors/ [2 Wi2]nPcap 4.0.1 Developer's Pack.http./Asww.winpcap.ors/ [3 Wi3]nPcap专栏.h ̄p//www.cnpaf.neff ltime=localtime(&localtvsec): __strftime(timestr,sizcof timestr,”%H:%M:%S”,lime):f 显示时间戳./ pfinff(”%s 。timestr): 收稿日期:20o8—03-01 广东省“151”工程项目资助,项目标号:GDA068。 粱瑾华南师范大学教育信息技术学院讲师(广州510631)。 ・ 36 ・