网络流量在线分析报告系统地设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

综合实训报告

题目:网络流量在线分析系统的设计与实现

华中农业大学

正方教务系统

王枫

指导老师:王建勇

信息学院计算机科学系

目录

一、实训目的 (3)

二、实训容 (3)

三、主要设备及环境 (4)

四、设计与步骤 (5)

五、整理与小结 (17)

六、参考文献 (18)

一、实训目的

设计并实现一个网络流量的分析系统。该系统具有以下功能:(1)实时抓取网络数据。(2)网络协议分析与显示。(3)将网络数据包聚合成数据流,以源IP、目的IP、源端口、目的端口及协议等五元组的形式存储。(4)计算并显示固定时间间隔网络连接(双向流)的统计量(如上行与下行的数据包数目,上行

与下行的数据量大小等)。在这些统计数据的基础上分析不同网络应用的流量特征。

二、实训容

(1)能够实时抓取网络中的数据包。并实时显示在程序界面上。用户可自定义过滤条件以抓取所需要的数据包。

(2)分析各个网络协议格式,能够显示各协议字段的实际意义。例如,能够通过该程序反映TCP三次握手的实现过程。

(3)采用Hash链表的形式将网络数据以连接(双向流)的形式存储。

(4)计算并显示固定时间间隔网络连接(双向流)的统计量(如上行与下行的数据包数目,上行与下行的数据量大小等)。例如,抓取一段时间(如30分钟)的网络流量,将该段时间以固定时长(如1分钟)为单位分成若干个时间片,计算网络连接在每一个时间片的相关统计量。并在上述统计数据的基础上分析不同应用如WEB、DNS、在线视频等服务的流量特征。注意,可根据实际的流量分析需要自己定义相关的统计量。

三、主要设备及环境

硬件设备:

(1)台式计算机或笔记本计算机(含网络适配器)

软件设备:

(2)Windows操作系统

(3)网络数据包捕获函数包,Windows平台为winpcap (4)编程语言选用C/C++。

(5)编程环境为codeblocks

四、设计与步骤

(1)定义 mac,以太网帧,IPv4 首部,TCP 首部, UDP 首部

与一些用于设置时间的结构体,回调函数原型包括哈希表的插入,搜索,初始化。

* 6字节的mac地址 */

typedef struct mac_address

{

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 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 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 umber; //确认号

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) } tcp_header;

/* UDP 首部*/

相关文档
最新文档