网络流量在线分析报告系统地设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 首部*/