网络流量在线分析系统的设计与实现.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《网络流量在线分析系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《网络流量在线分析系统的设计与实现.docx(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上综合实训报告题目:网络流量在线分析系统的设计与实现华中农业大学正方教务系统王枫指导老师:王建勇 信息学院计算机科学系目 录一、 实训目的3二、 实训内容3 三、 主要设备及环境4 四、 设计与步骤5 五、 整理与小结17 六、 参考文献18一、实训目的设计并实现一个网络流量的分析系统。该系统具有以下功能:(1)实时抓取网络数据。(2)网络协议分析与显示。(3)将网络数据包聚合成数据流,以源IP、目的IP、源端口、目的端口及协议等五元组的形式存储。(4)计算并显示固定时间间隔内网络连接(双向流)的统计量(如上行与下行的数据包数目,上行与下行的数据量大小等)。在这些统计数
2、据的基础上分析不同网络应用的流量特征。二、实训内容 (1)能够实时抓取网络中的数据包。并实时显示在程序界面上。用户可自定义过滤条件以抓取所需要的数据包。(2)分析各个网络协议格式,能够显示各协议字段的实际意义。例如,能够通过该程序反映TCP三次握手的实现过程。(3)采用Hash链表的形式将网络数据以连接(双向流)的形式存储。(4)计算并显示固定时间间隔内网络连接(双向流)的统计量(如上行与下行的数据包数目,上行与下行的数据量大小等)。例如,抓取一段时间(如30分钟)的网络流量,将该段时间以固定时长(如1分钟)为单位分成若干个时间片,计算网络连接在每一个时间片内的相关统计量。并在上述统计数据的基
3、础上分析不同应用如WEB、DNS、在线视频等服务的流量特征。注意,可根据实际的流量分析需要自己定义相关的统计量。三、主要设备及环境硬件设备:(1)台式计算机或笔记本计算机(含网络适配器)软件设备:(2)Windows操作系统(3)网络数据包捕获函数包,Windows平台为winpcap(4)编程语言选用C/C+。(5)编程环境为codeblocks四、 设计与步骤(1) 定义 mac,以太网帧,IPv4 首部,TCP 首部, UDP 首部与一些用于设置时间的结构体, 回调函数原型 包括哈希表的插入,搜索,初始化。* 6字节的mac地址 */typedef struct mac_address
4、u_char byte1; u_char byte2; u_char byte3; u_char byte4; u_char byte5; u_char byte6; mac_address;/* 以太网帧 */typedef struct ethernet_header mac_address daddr; /目的MAC地址 mac_address saddr; /源MAC地址 u_short etherType /以太网帧类型 ethernet_header;/* IPv4 首部 */typedef struct ip_header u_char ver:4,ihl:4; / 版本 (4
5、bits) + 首部长度 (4 bits) u_char tos; / 服务类型(Type of service) u_short tlen; / 总长(Total length) u_short identification; / 标识(Identification) u_short flags_fo; / 标志位(Flags) (3 bits) + 段偏移量(Fragment offset) (13 bits) u_char ttl; / 存活时间(Time to live) u_char proto; / 协议(Protocol) u_short crc; / 首部校验和(Header
6、checksum) struct in_addr saddr; / 源地址(Source address) struct in_addr daddr; / 目的地址(Destination address) u_int op_pad; / 选项与填充(Option + Padding) ip_header;/* TCP 首部*/typedef struct tcp_header u_short sport; / 源端口(Source port) u_short dport; / 目的端口(Destination port) u_int32_t snumber; /序列号 u_int32_t c
7、number; /确认号 u_short reserve:6, /保留位 tlen:4, /报头长度 /后6位标志位 fin : 1, /关闭连接标志 syn : 1, /请求连接标志 rst : 1, /重置连接标志 psh : 1, /接收方尽快将数据放到应用层标志 ack : 1, /确认序号标志 urg : 1, /紧急指针标志 ece : 1, /拥塞标志位 cwr : 1; /拥塞标志位 u_short window; /窗口 u_short csum; /校验和 u_short urgent; /紧急 u_int op_pad; / 选项与填充(Option + Padding)
8、 tcp_header;/* UDP 首部*/typedef struct udp_header u_short sport; / 源端口(Source port) u_short dport; / 目的端口(Destination port) u_short len; / UDP数据包长度(Datagram length) u_short crc; / 校验和(Checksum) udp_header;/*用于设置时间的结构体*/typedef struct argument pcap_t *adhandle; int time;argument;void crawl_time(void *
9、time_c);/* 回调函数原型 */void packet_handler_mac(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data);void packet_handler_ip(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data);void packet_handler_tcp(u_char *param, const struct pcap_pkthdr *header, const u_char *
10、pkt_data);void packet_handler_udp(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data);void InitHashTable(HashTable* H)/初始化哈希表 int i; H - count = MAXSIZE; H - Table = ( HashNode* )malloc( ( H-count ) * sizeof( HashNode ) ); for(i = 0;i count; i+) H-Tablei.ip_source_address; H-Tab
11、lei.ip_dest_address; H-Tablei.source_port = 0; H-Tablei.dest_port = 0; H-Tablei.sum = NULLKEY; H-Tablei.next = NULL; int Hash(int key) return key % MAXSIZE;int InsertHashTable(HashTable *H,struct in_addr source_address,struct in_addr dest_address,u_int16_t s_port,u_int16_t d_port,int key)/插入哈希表 int
12、addr; addr = Hash(key); if(H-Tableaddr.sum != key & H -Tableaddr.sum != NULLKEY) HashNode *hashnode = (HashNode *)malloc(sizeof(HashNode); hashnode-next = H-Tableaddr.next; hashnode-ip_source_address = source_address; hashnode-ip_dest_address = dest_address; hashnode-sum = key; hashnode-source_port
13、= s_port; hashnode-dest_port = d_port; H-Tableaddr.next = hashnode; addr+; return addr; else if(H-Tableaddr.sum = NULLKEY) H-Tableaddr.sum = key; return addr; bool SerchHashTable(HashTable *H,struct in_addr source_address,struct in_addr dest_address,u_int16_t s_port,u_int16_t d_port,int key)/搜索哈希表 i
14、nt addr; addr = Hash(key); if(H-Tableaddr.sum = key & (inet_ntoa(H-Tableaddr.ip_source_address) = inet_ntoa(source_address) & (inet_ntoa(H-Tableaddr.ip_dest_address) = inet_ntoa(dest_address) & (H-Tableaddr.source_port = s_port) & (H-Tableaddr.dest_port = d_port) return true; HashNode *p = H-Tablead
15、dr.next; while(p != NULL) if(p-sum = key) & (inet_ntoa(p-ip_source_address) = inet_ntoa(source_address) & (inet_ntoa(p-ip_dest_address) = inet_ntoa(dest_address) & (p-source_port = s_port) &(p-dest_port = d_port) return true; else p-next; return false; 2./*获得设备名,检索机器所连接的所有网络适配器,并在屏幕中显示适配器的名称和详细信息,用户
16、可以输入适配器编号选择指定的适配器用来捕获,代码与结果显示如下:*/ if (pcap_createsrcstr(source, PCAP_SRC_IFLOCAL, NULL, NULL, NULL, errbuf) = -1) printf(%sn, errbuf);exit(-1); /* 获得设备列表 */ if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) = -1) fprintf(stderr,Error in pcap_findalldevs: %sn, errbuf); exit(1); /*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络流量 在线 分析 系统 设计 实现
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内