项目概要设计报告.docx

上传人:b****4 文档编号:5021176 上传时间:2023-05-07 格式:DOCX 页数:24 大小:366.62KB
下载 相关 举报
项目概要设计报告.docx_第1页
第1页 / 共24页
项目概要设计报告.docx_第2页
第2页 / 共24页
项目概要设计报告.docx_第3页
第3页 / 共24页
项目概要设计报告.docx_第4页
第4页 / 共24页
项目概要设计报告.docx_第5页
第5页 / 共24页
项目概要设计报告.docx_第6页
第6页 / 共24页
项目概要设计报告.docx_第7页
第7页 / 共24页
项目概要设计报告.docx_第8页
第8页 / 共24页
项目概要设计报告.docx_第9页
第9页 / 共24页
项目概要设计报告.docx_第10页
第10页 / 共24页
项目概要设计报告.docx_第11页
第11页 / 共24页
项目概要设计报告.docx_第12页
第12页 / 共24页
项目概要设计报告.docx_第13页
第13页 / 共24页
项目概要设计报告.docx_第14页
第14页 / 共24页
项目概要设计报告.docx_第15页
第15页 / 共24页
项目概要设计报告.docx_第16页
第16页 / 共24页
项目概要设计报告.docx_第17页
第17页 / 共24页
项目概要设计报告.docx_第18页
第18页 / 共24页
项目概要设计报告.docx_第19页
第19页 / 共24页
项目概要设计报告.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

项目概要设计报告.docx

《项目概要设计报告.docx》由会员分享,可在线阅读,更多相关《项目概要设计报告.docx(24页珍藏版)》请在冰点文库上搜索。

项目概要设计报告.docx

项目概要设计报告

TPMKstandardizationoffice【TPMK5AB-TPMK08-TPMK2C-TPMK18】

 

项目概要设计报告

 

哈尔滨工程大学信息安全研究中心

 

项目概要设计报告

 

编号:

HEUISRC-RDT-014

版本:

1.1

密级:

 

编写:

吕敬辉-郝建波-贺婷

日期:

检查:

日期:

审核:

日期:

批准:

日期:

 

版本

日期

作者

修订要点

1.0

2007-03-20

杨武

文件建立

1.1

2007-03-21

杨武

内容及文档结构修订

 

 

一、引言

1.1编写目的

对网络数据流异常检测系统的整体开发进行概要设计,为系统编程提供基础支持。

1.2项目背景

项目名称网络数据流异常检测,该项目主要对网络数据出现大的流量变化,尤其对syn、fin、ping、端口和主机不可达事件进行异常检测并报警。

1.3术语

缩写、术语

解释

libPcap

捕包库函数

MySQL

数据库

C++builder

界面编程

ODBC

数据库访问接口标准

adsystem

服务器端数据库名

Newadsystem

本地绑定远程数据库的系统数据源变量

1.4参考资料

二、任务概述

2.1系统描述

后台:

1)本系统能够对网络出入口的数据包进行分析,统计出TCP、UDP、ICMP等协议以及TCP-SYN事件、TCP-FIN事件、ICMP_PING事件、ICMP_3.1事件(主机不可达事件)、ICMP_3.3事件(端口不可达事件)的包的数量。

2)通过异常检测算法,对这些统计数量进行异常检测。

根据统计结果用自回归模型对网络数据流量进行预测,当某时刻数据流和预测结果不同时触发报警事件。

数据库:

将统计量、异常信息存入数据库中

前台:

1)进行通讯:

发送给后台登录、检测、关闭的标识;接收后台数据,包括登录标识、流量包统计数及异常报警标识。

2)对数据解析之后,对用户的不同类型检测的要求进行实时动态曲线的描绘;

3)对异常事件进行报警

4)对历史流量及异常信息进行数据库查询

2.2开发与运行环境

Linux操作系统平台

C++builder、MySQL数据库

提供各种端口扫描的机器

2.2.1开发环境的配置

类别

标准配置

最低配置

计算机硬件

计算机软件

Linux、Windows操作系统、mysql数据库管理工具、c++builder前台开发工具

网络通信

ODBC

其它

2.2.2运行环境的配置

类别

标准配置

最低配置

计算机硬件

计算机软件

Linux、Windows操作系统、mysql数据库管理工具

网络通信

ODBC

其它

2.2.3测试环境的配置

计算机软件:

Linux、Windows操作系统、mysql数据库管理工具

网络通信:

ODBC

2.3需求概述

用户登录:

用户输入服务器地址、用户名、密码访问,验证用户权限是否正确

用户其他操作:

用户的其他操作需要并行进行。

包括四个部分,介绍如下:

1、动态实时曲线描绘:

1)配置信息,用户可自己配置流量统计时间间隔,根据不同的流量类型,设置曲线图的数据显示高度,同时可设置曲线图的显示宽度(辅助设计);

2)对于各项值,需要提供默认值,尤其数据显示高度,需根据以往的数据流量值给出一个不同类型协议或事件的参考值;

3)完成信息的配置,启动检测,则在设置的时间间隔内开始描点;

4)曲线的描绘:

曲线为动态波动、有规律进行的。

2、异常检测:

当后台检测到异常时,立即发出警报提示。

3、历史流量数据的查询:

用户可根据协议/事件类型及检测的时间范围完成历史流量查询。

4、异常流量信息查询:

用户可根据协议/事件类型及检测的时间范围完成异常流量信息查询。

2.4条件与限制

三、总体设计

3.1系统设计原则

在linux环境下进行系统后台的编程,用libcap库函数进行抓包,并对包进行分析,统计出TCP、UDP、ICMP等协议以及TCP-SYN事件、TCP-FIN事件、ICMP_PING事件、ICMP_3.1事件(主机不可达事件)、ICMP_3.3事件(端口不可达事件)的包的数量。

统计完成后将数据传递给异常检测算法和数据库,异常检测算法根据初始统计的正常数据包数量对以后到达的数据包进行预测分析,出现异常时调用socket函数传递给前台一个异常信号,c++building来进行异常报警。

另外pcap统计的包的数量也要传递给前台来建立一个正常流量模型。

其中向前台传递正常数据和异常信息分别用一个分线程,还有一个分线程用来接收前台的命令。

3.2系统网络结构

系统网络结构如图3.1所示:

图3.1系统网络结构图

3.3实现框架与处理流程

1、系统总体设计流程如图3.2所示:

图3.2系统总体设计流程图

2、前台业务流程如图3.3所示:

图3.3前台业务流程图

3.4结构模块设计

结构模块如图3.4所示:

图3.4系统结构模块

模块一览表

模块名称

标识符

模块功能

模块性能要求

登录模块

Login

与后台进行连接通讯;判断字符是否合法;判断登录,登录成功,开启主线程。

能够及时返回用户登录信息,提供登录或重登录信息。

用户操作模块

Configuration

对数据库操作:

保存配置信息,提供检测启动标识;查看历史流量信息;查看异常流量信息。

能快速的对数据库进行操作,返回用户查询信息

多线程模块

TCommunicationThread

接收后台数据,判断数据类型,解析数据,启动曲线描绘函数及异常警报线程。

当用户进行检测时,应及时的、有规律的描绘出曲线

数据包捕获

PCAP

在网络数据流里捕获数据包并对数据包进行统计,提取出相关的数据信息进行分析并存储于数据库中。

对TCP、UDP、ICMP等数据流量进行统计,检测出相关数据流量的异常。

异常检测

Anomalydetection

检测异常数据流

对不符合捕获数据包正常流量的进行检测并报警

通讯

communication

进行前后台的通信

将统计得数据包数量直接输送到前台进行显示以及异常检测的显示。

3.5功能需求与程序模块的关系

需求代码

捕包模块

异常检测模块

通讯

登录模块

用户操作模块

前台多线程模块

获取原始数据流

异常数据检测

存储数据

查询数据库

接收数据

发送数据

显示结果

3.6尚未解决的问题

四、接口设计

4.1外部接口

4.2内部接口

4.2.1MySQL数据库和前台c++builder的连接

1)连接步骤

第一步:

使用ODBC数据库访问接口标准,绑定服务器adsystem数据库建立一个数据源Newadsystem;

第二步:

使用Databasesource(一个能和远端资料库透过BDE进行连结的元件),绑定数据源Newadsystem,可以储存登入资料库所需的身分认证资料,包括用户名密码,确保以后的数据库操作中,不在需要确认;

第三步:

使用Query数据库存取元件,绑定Databasesource;

第四步:

使用Datasource传递元件,将Query取得的值传递给显示元件;

第五步:

使用StringGrid元件,将获取到的数据显示。

2)数据库连接及数据存取示意图

如图4.1所示:

图4.1数据库连接及数据存取示意图

4.2.2MySQL数据库和后台Linux的连接

主要是调用API函数,先用mysql_init初始化一个sql描述符m_sql,再用mysql_real_connect去连接服务器上的mysql,然后用mysql_query对数据库进行读写操作,其中读数据库操作还要mysql_query和mysql_fetch_row来读出和存储数据库中的值。

4.2.3后台Linux与前台界面的socket连接

套接字有两套,分别为后台作为socket服务器端前台作为socket客户端和后台作为socket客户端前台作为socket服务器端。

也是调用相关的API函数来实现套接字连接与通信,其中服务器端先用socket函数初始化一个socket描述符sock_fd,对sockaddr_in结构体的成员变量进行赋值,其中sin_family为AF_INET,sin_port=为4005,地址是本地地址,完了以后用bzero函数将结构体其余空间清零,然后用bind函数进行端口与本地地址绑定,用listen函数来监听是否用连接,用连接是用accept函数生成一个连接socket描述符new_fd,用recv函数来接受前台传来的数据。

五、数据结构设计

5.1逻辑结构设计

1)后台

TCP…………………

typedefstructtcp_node//存储TCP流量的循环链表,结构体初始化

{

intvalue;//TCP流量大小

structtcp_node*next;//定义指针

}tcp_node;

tcp_node*head,*tail;//TCP循环链表头尾指针

typedefstructtcpsyn_node//存储TCPSYN流量的循环链表,结构体初始化

{

intvalue;//TCPSYN流量大小

structtcpsyn_node*next;//定义指针

}tcpsyn_node;

tcpsyn_node*head,*tail;//TCPSYN循环链表头尾指针

typedefstructtcpfin_node//存储TCPFIN流量的循环链表,结构体初始化

{

intvalue;//TCPFIN流量大小

structtcpfin_node*next;//定义指针

}tcpfin_node;

tcpfin_node*head,*tail;//TCPFIN循环链表头尾指针

typedefstructudp_node//存储UDP流量的循环链表,结构体初始化

{

intvalue;//UDP流量大小

structudp_node*next;//定义指针

}tcpudp_node;

udp_node*head,*tail;//UDP循环链表头尾指针

typedefstructicmp_node//存储ICMP流量的循环链表,结构体初始化

{

intvalue;//ICMP流量大小

structicmp_node*next;//定义指针

}icmp_node;

icmp_node*head,*tail;//ICMP循环链表头尾指针

typedefstructicmpping_node//存储ICMPPING流量的循环链表,结构体初始化

{

intvalue;//ICMPPING流量大小

structicmpping_node*next;//定义指针

}icmpping_node;

icmpping_node*head,*tail;//ICMPPING循环链表头尾指针

typedefstructicmp31_node//存储ICMP31流量的循环链表,结构体初始化

{

intvalue;//ICMP31流量大小

structicmp31_node*next;//定义指针

}icmp31_node;

Icmp31_node*head,*tail;//ICMP31循环链表头尾指针

typedefstructicmp33_node//存储ICMP33流量的循环链表,结构体初始化

{

intvalue;//ICMP33流量大小

structicmp33_node*next;//定义指针

}icmp33_node;

Icmp33_node*head,*tail;//ICMP33循环链表头尾指针

2)前台

实现登录功能,创建的类函数,主要完成用户登录及通讯。

classTLoginForm:

publicTForm

{

__published:

···系统自定义的控件

private:

//Userdeclarations

public:

//Userdeclarations

__fastcallTLoginForm(TComponent*Owner);//登录表单的构造函数

AnsiStringJudgement(AnsiStringEditContent);//非法字符判断函数

AnsiStringGetLLtime;//保存获取到的系统时间的变量

AnsiStringServiesAddress;//保存服务器地址的变量

};

实现流量检测,包括异常流量报警,正常流量曲线模型的绘制;实现历史流量及异常流量的历史数据查询操作,对数据库进行取操作。

classTConfigurationForm:

publicTForm

{

__published:

···//声明系统的控件及方法函数

private:

//Userdeclarations

public:

//Userdeclarations

__fastcallTConfigurationForm(TComponent*Owner);//配置窗口的构造函数

int__fastcallconnect_database1(AnsiStringIp);//Socket通讯函数

AnsiStringPotocolType;//记录时间间隔值

intwWidth;//坐标宽度变量

intWHight;//坐标高度变量

voidDrawDot(intDotValue,intcount);//描绘曲线函数函数

intTCtime;//保存配置信息时间差

intSummitMessage;//保存配置完成标识符

voidCheckHistoryDatabass();//历史流量数据库查询函数

AnsiStringHistoryType;//所需查询的历史流量类型

intSumCount;//记录从历史流量表查询到的记录数

intAERecordCount;//记录从异常流量数据库中获取到的记录数

intsock_fd,numbytes;//通讯端口使用的全局变量

charrecvbuf[100];//接收后台数据

charsendbuf[100];//发送数据

charcommand[20];//发送关闭值

};

主线程类函数,用于保持接收后台数据,并且进行数据解析,曲线绘制函数的调用及异常报警线程的调用。

classTCommunication:

publicTThread

{

private:

protected:

void__fastcallExecute(void);//线程的执行方法函数

//intCommunicationSelect;

public:

__fastcallTCommunication();//线程的构造函数

AnsiString__fastcallConnect();//连接函数

};

从线程类函数,用于实现异常报警。

classTWarningThread:

publicTThread

{

private:

protected:

void__fastcallExecute(void);//报警线程的执行方法函数

public:

__fastcallTWarningThread();//报警线程的构造函数

//AnsiStringTempMessage;

};

5.2物理结构设计

5.3数据结构与程序代码的关系

结构代码

捕包模块

异常检测模块

数据库模块

前台

structether_header

structin_addr

structarp_header

structip_header

structudp_header

structtcp_header

structicmp_header

structLinklist

classTLoginForm

classTConfigurationForm

classTCommunication

classTWarningThread

六、数据库设计

6.1异常信息表

a_yichang(对异常时间段内异常包的信息进行统计)。

其中Yprotocol表示包出现异常的协议类型,Yevent表示包出现异常的事件类型,Ytime表示统计异常事件发生的时间,Ynumber表示异常事件还有此类型事件的个数。

表6.2异常信息表(a_yichang)

字段含义

字段名称

数据类型

长度

备注

ID

ID

Int

11

主键,自增

协议类型

Yprotocol

Varchar

10

时间类型

Yevent

Varchar

10

检测时间

Ytime

Datatime

异常包个数

Ynumber

Int

10

6.2流量表

a_liuliang(对包中的tcp等协议流量以及tcp-syn等事件流量进行统计)。

其中Ltcp表示单位时间内捕获的tcp协议的包的数量,Ludp表示单位时间内捕获的udp协议的包的数量,Licmp表示单位时间内捕获的icmp协议的包的数量,Lsyn表示单位时间内捕获的含有syn事件的包的数量,Lfin表示单位时间内捕获的含有fin事件的包的数量,Lping表示单位时间内捕获的含有ping事件的包的数量,Lzhu表示单位时间内捕获的含有主机不可达事件的包的数量,Lduan表示单位时间内捕获的含有端口不可达事件的包的数量。

表6.1流量表(a_liuliang)

字段含义

字段名称

数据类型

长度

备注

ID

ID

Int

11

主键,自增

Tcp包数量

Ltcp

Int

10

Udp包数量

Ludp

Int

10

Icmp包数量

Licmp

Int

10

Syn包数量

Lsyn

Int

10

Fin包数量

Lfin

Int

10

Ping包数量

Lping

Int

10

Icmp_3.1包数量

Lzhu

Int

10

Icmp_3.2包数量

Lduan

Int

10

检测时间

Ltime

Datatime

6.3配置信息表

a_configuration(前台给后台配置时间窗口大小)。

Ctime表示前台给后台传的的捕包的窗口大小。

表6.2配置信息表(a_configuration)

字段含义

字段名称

数据类型

长度

备注

ID

ID

Int

11

主键,自增

统计流量时间差

Ctime

Varchar

10

6.4用户表

表6.4用户表(a_user)

字段含义

字段名称

数据类型

长度

备注

ID

ID

Int

11

主键,自增

用户名

Uusername

Varchar

10

密码

Upassword

Varchar

10

七、用户界面设计

7.1登录页界面设计

登录页如下图7.1所示,服务器地址部分有非法字符判断,如果每个字段超过3个字符,或者所填的不是数字字符,将有提示框进行提示,并取消此字母的输入。

界面的编辑框及登录设置按钮有tab键的排序,可轻松跳格。

窗体的大小固定,不能进行放大、缩小。

图7.1登录页

7.2信息配置及曲线描绘页设计

信息配置及曲线描绘页设计如下图7.2所示:

1)曲线描绘设置

在配置信息中可以由用户根据需要设置窗口的高度和宽度,以及曲线描绘图的标题(由下拉框中的类型决定标题),当提交时,描绘框口的各个部分将进行相应的改变。

在坐标中的纵坐标代表的包个数,横轴代表第几个时间间隔。

2)默认设置

配置信息中设置了默认设置,根据以往的测试获得的参数,选取的一个较为合适的值作为默认参数。

3)时间间隔代表的是在多长时间间隔内统计一次流量,并将其显示在曲线描绘窗口中,以一个点的形式出现。

图7.2信息配置及曲线描绘页

7.3历史流量查看页设计

历史流量查看如下图7.3及7.4所示:

1)查询历史流量是根据查询类型的不同,所具有的字段数量不同,如图7.2为查询单个类型协议/事件时,结果显示窗口的设计;图7.3为查看所有类型的数据时,结果显示窗口的设计。

2)在历史流量查看窗口中,用户可选择自己想要查看的协议/事件类型,也可以查看所有的类型的流量数据,同时可设置所要查询的数据所检测的时间范围,从而使得操作更具有灵活性。

图7.3单个类型历史流量查看图

图7.4全部历史流量查看图

 

7.4异常流量查看页设计

异常流量查看如下图7.5所示,其设计与历史流量查看的设计相似,不进行赘述。

图7.5异常流量查看图

八、出错处理设计

8.1出错输出信息

错误分类

子项及其编码

错误名称

错误代码

备注

8.2出错处理对策

九、安全保密设计

9.1数据传输安全性设计

9.2应用系统安全性设计

9.3数据存储安全性设计

十、维护设计

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2