资源描述:
《网络流量在线分析系统的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、网络流量在线分析系统的设计与实现综合实训报告1信息学院计算机科学系目录一、实训目的………………………………………………3二、实训内容………………………………………………3三、主要设备及环境………………………………………3四、设计与步骤……………………………………………4五、过程与调试……………………………………………22六、整理与小结……………………………………………23七、参考文献………………………………………………24八、附录……………………………………………………252一、实训目的设计并实现一个网络流量的分析系统。该系统具有以下功能:(1)实时抓取网络数据。(2)网络协议分析与显示
2、。(3)将网络数据包聚合成数据流,以源IP、目的IP、源端口、目的端口及协议等五元组的形式存储。(4)计算并显示固定时间间隔内网络连接(双向流)的统计量(如上行与下行的数据包数目,上行与下行的数据量大小等)。在这些统计数据的基础上分析不同网络应用的流量特征。二、实训内容(1)能够实时抓取网络中的数据包。并实时显示在程序界面上。用户可自定义过滤条件以抓取所需要的数据包。(2)分析各个网络协议格式,能够显示各协议字段的实际意义。例如,能够通过该程序反映TCP三次握手的实现过程。(3)采用Hash链表的形式将网络数据以连接(双向流)的形式存储。(4)计算并显示固定时间间隔内网络连接(双向流)的
3、统计量(如上行与下行的数据包数目,上行与下行的数据量大小等)。例如,抓取一段时间(如30分钟)的网络流量,将该段时间以固定时长(如1分钟)为单位分成若干个时间片,计算网络连接在每一个时间片内的相关统计量。并在上述统计数据的基础上分析不同应用如WEB、DNS、在线视频等服务的流量特征。注意,可根据实际的流量分析需要自己定义相关的统计量。三、主要设备及环境硬件设备:(1)台式计算机或笔记本计算机(含网络适配器)软件设备:(2)Windows操作系统3(3)网络数据包捕获函数包,Windows平台为winpcap(4)编程语言选用C/C++。(5)编程环境为codeblocks四、设计与步骤(
4、1)设计代码检索机器所连接的所有网络适配器,并在屏幕中显示适配器的名称和详细信息,用户可以输入适配器编号选择指定的适配器用来捕获包,如果没有找到适配器,提示用户检查WinPcap是否安装,代码与结果显示如下:/*setthesource*/if(pcap_createsrcstr(source,PCAP_SRC_IFLOCAL,NULL,NULL,NULL,errbuf)==-1){printf("%s",errbuf);exit(-1);}printf("source:%s",source);/*findalldevices*/if(pcap_findalldevs_ex(sour
5、ce,NULL,&alldevs,errbuf)==-1){printf("%s",errbuf);exit(-1);}/*chooseonedevices*/d=alldevs;while(d!=NULL){printf("%s,%s",d->name,d->description);d=d->next;}printf("chooseadevice[numberbetween1to4]:");scanf("%d",&i);d=alldevs;while(--i)d=d->next;printf("-------------------
6、---------------------------");printf("selecteddevice:%s",d->name);4实验结果显示如下:(2)选择指定适配器后,调用ifprint();函数计算本机的IP地址、掩码、广播地址、目标地址等信息,并用声明staticcharb;用来记录本机IP地址,为接下来查找Hash表判断流量包的流向做准备:voidifprint(pcap_if_t*d){pcap_addr_t*a;/*名称*///printf("%s",d->name);/*描述*/if(d->description)printf("tDe
7、scription:%s",d->description);/*回环地址*/printf("tLoopback:%s",(d->flags&PCAP_IF_LOOPBACK)?"yes":"no");/*IP地址*/for(a=d->addresses;a;a=a->next){printf("tAddressFamily:#%d",a->addr->sa_family);