防辐射服价格-
网络流量监控及分析工具的设计与实现
摘
要
互联网迅速发展的同时,
网络安全问题日益成为人们关注的焦点,病毒、
恶
意攻击、
非法访问等都容易影响网络的正常运行,
多种网络防御技术被综合 应用
到网络安全管理体系中,流量监控系统便是其中一种分析网络状况的有效方法,
它从数据包 流量分析角度,
通过实时地收集和监视网络数据包信息,
来检查是否
有违反安全策略的 行为和网络工作异常的迹象。
在研究网络数据包捕获、
TCP/IP
原理 的基础上,采用面向对象的方法进行
了需求分析与功能设计。该系统在
VisualC++6. 0
环境下进行开发,综合采用了
Socket-Raw
、
注册表编程和
IP
助手
API
等
VC
编程技术,
在系统需求分析的基础
上,
对主要功能的实现方案和技术细节进行了详细分析与设计,并通过测试,最
终实现 了数据包捕获、流量监视与统计主要功能,达到了预定要求,为网络管理
员了解网络运行状态提供了参考 。
关键词
:
网络管理;数据采集;流量统计;
Winsock2
目
录
论文总页数:
22
页
1
引言
................................................. .................................................. ........................................
1
1.1
1.2
1.3
1.4
1.5
2
课题背景
.
............................ .................................................. ............................................
1
网络安全管理的现状与需求
.
.......... .................................................. ..............................
1
网络流量监控的引入
.
....................... .................................................. .............................
1
本文的目的与任务
.
........................ .................................................. ................................
2
论文结构安排
.
.......................... .................................................. ......................................
2
相关的概念与技术
.
........................ .................................................. ........................................
2
2.1
OSI
参考模型与
TCP/IP
体系结构
... .................................................. ............................
2
OSI
参考模型
.............................. .................................................. ...........................
2
TCP/IP
体系结构
.
.................. .................................................. .................................
3
OS I
模型与
TCP/IP
体系结构的区别
................. .................................................. ...
4
2.1.1
2.1.2
2.1.3
2.2
传输层的编程接口
—
Windows
套接字编程技术
.< br>............................................... ...........
4
Windows
套接字的概念
.
........................................... ...............................................
4
套接字类型
.
................. .................................................. ...........................................
5
涉及的几个基本概念
.
............. .................................................. ...............................
5
2.2.1
2.2.2
2.2.3
2.3
3
原始套接字
.
........................... .................................................. .........................................
5
网络数据的采集技术分析
.
........... .................................................. .........................................
6
3.1
3.2
Windows
下原始数据包捕获的实现
.
.......... .................................................. ..................
6
原始数据包捕获的关键函数
.
......................................... .................................................
7
4
网络流量监控系统各模块的设计与实现
.
................................................. .............................
9
4.1
4.2
4.3
4.4
开发背景介绍
.
.. .................................................. .................................................. ............
9
总体结构设计
.
... .................................................. .................................................. ...........
9
流程图设计
.
..... .................................................. .................................................. ...........
1
0
各模块功能概述与实现
.
................................................. ...............................................
11
数据包采集中各类的关系
.
.............. .................................................. ....................
11
数据包捕获与分析模块
.
............................................ ............................................
11
流量获取模块
.
................... .................................................. ...................................
1
3
数据统计模块
.
.......................... .................................................. ............................
1
7
常见攻击分析功能
.
........................ .................................................. ......................
1
8
4.4.1
4.4.2
4.4.3
4.4.4
4.4.5
5
系统测试
.
............................ .................................................. ..................................................
1
9
5.1
测试环境
.
......... .................................................. .................................................. ...........
1
9
硬件环境
.
..... .................................................. .................................................. .......
1
9
5.1.1
5.1.2
5.2
5.3
操作系统及软件运行环境
.
..... .................................................. .............................
1
9
测试步骤
.
............................ .................................................. ..........................................
1
9
测试结果评价
.
............... .................................................. ...............................................
1
9
结
论
.
............................................. .................................................. .........................................
1
9
参考文献
.
................. .................................................. .................................................. ...................
2
0
致
谢
.
.......................... .................................................. .................................................. ..........
2
1
声
明
.
............................... .................................................. .................................................. .....
2
2
1
引言
1.1
课题背景
随着构建网 络基础技术和网络应用的迅速发展以及用户对网络性能要求的
提高,
使得网络管理成为迫切需要 解决的问题,
有效的网络管理能够保证网络的
稳定运行和持续发展,更重要的是,
随着 网络规模的扩大和黑客技术的发展,
入
侵和攻击的案例日益增多,对稳定的网络服务、
信息安全、
互联网秩序都提出了
严峻的挑战,网络安全管理在整个网络管理系统里扮演起更为重 要的角色。
1.2
网络安全管理的现状与需求
目前,
在网络应用不断深入和技术频繁升级的同时,非法访问、
恶意攻击等
安全威 胁也在不断推陈出新,
愈演愈烈。
防火墙、
VPN
、
IDS
、
防病毒、
身份认证、
数据加密、
安全审计等安全防护和管理系统在网络中得 到了广泛应用。
从网络安
全专业管理人员的角度来说,
最直接的需求就是根据分类在统 一的界面中监视网
络中各种运行性能状态,获取相关数据信息、日志信息和报警信息等,
并进行 分
类汇总、分析和审计;同时完成攻击事件报警、响应等功能。因此,用户的网络
管理需要不断 健全整体网络安全管理解决方案,
从统一安全管理平台总体调控配
置到多层面、
分布式 的安全系统,实现对各种网络安全资源的集中监控、策略管
理、
审计及多种安全功能模块之间的 互动,从而有效简化网络安全管理工作,
提
升网络的安全水平和可用性、可控制性、可管理性。
1.3
网络流量监控的引入
网络安全管理体系中,流量监控和统计分析是整个管理的基础。
流量检测主要目的是 通过对网络数据进行实时连续的采集监测网络流量,
对
获得的流量数据进行统计计算,
从而得到网络主要成分的性能指标。
网络管理员
根据流量数据就可以对网络主要成分进行性能分 析管理,
发现性能变化趋势,
并
分析出影响网络性能的因素及问题所在。此外,在网络 流量异常的情况下,
通过
扩展的流量检测报警系统还可以向管理人员报警,
及时发现故 障加以处理。
在网
络流量检测的基础上,
管理员还可对感兴趣的网络管理对象设置审查 值范围及配
置网络性能对象,
监控实时轮询网络获取定义对象的当前值,
若超出审查值 的正
常预定值则报警,
协助管理员发现网络瓶颈,
这样就能实现一定程度上的故障管< br>理。而网络流量检测本身也涉及到安全管理方面的内容。
由此可见,
对于一个 有效的网络安全管理系统来说,
功能的实现都或多或少
的依赖于流量信息的获取。
因此 网络流量信息的采集可以说是网络安全管理系统
得以实现的核心基石。
它的应用可以在一定程度 上检测到入侵攻击,
可以有效地
帮助管理人员进行网络性能管理,
并利用报警机制协助 网管人员采取对应的安全
第
1
页
共
22
页
策略与防护措施,从而减少入侵攻击所造成的损失。
1.4
本文的目的与任务
该网络流量监控及分析工具 主要用途是通过实时连续地采集网络数据并对
其进行统计,得到主要成分性能指标,结合网络流量的理论 ,通过统计出的性能
指数观察网络状态,分析出网络变化趋势,找出影响网络性能的因素。
< br>本设计题目是教师自拟项目,前期任务主要是设计并完成系统的初步框架,
实现网络数据的捕获,
并解决相应问题,
后期主要是通过一些
API
函数完成对各
类数据信 息的统计。
本系统实现以下功能:
(
1
)
采用
Winsock
编写原始套接字
Socket- Raw
对数据包进行采集捕获,
并
可实现分类及自定义范围进行捕获;
(
2
)对捕获的数据包进行一定的解析;
(
3
) 访问操作系统提供的网络性能参数接口,得到网卡总流量、输入流量
和输出流量;
(
4
)系统提供了多种方式显示结果,如曲线图、列表等;
(5
)使用
IP
帮助
API
获取网络统计信息;
(
6
)实现对部分常见威胁的预警,可继续开发扩展其报警功能。
1.5
论文结构安排
本论文围绕
Winso ck
标准套接字网络编程的各项实践内容展开。
具体内容安
排如下:第一章是引言,简 要介绍开发背景、设计任务和论文结构安排;第二章
介绍网络基础理论研究、
数据包捕获与流量 检测的技术原理;
第三章介绍如何使
用原始套接字实现数据捕获;
第四章重点介绍网络 流量监测工具的设计与实现过
程,并且详细阐述了从系统功能总体设计、详细设计、具体实现的全部过程 ;第
五章介绍了软件测试情况。
2
相关的概念与技术
2.1
OSI
参考模型与
TCP/IP
体系结构
2.1.1
OSI
参考模型
开放系统互联参考模型OSI
是由国际标准化组织
ISO
制定的标准化开放式的
计算机网络层次 结构模型
,
其结构如图
1
所示。
可以看出,该结构共有七层,各层主要实现如下功能:
(
1
)物理 层,利用传输介质实现相邻节点间的物理连接,主要对机械、电
气、功能和规程四个方面及信号传输速率 方面进行规定;
(
2
)数据链路层,完成管理数据的传输,提供差错检测和 恢复,并且提供
第
2
页
共
22
页
流量控制,最终实现向上一层提供无差错、高可靠性的传输链路;
(
3)网络层,执行路由算法和流量控制算法,完成数据分组传输,它是通
信子网的最高层;
(
4
)传输层,提供端到端的无差错传输,同时,它也提供属于局通信网络
接 口,比如
SOCKET
;
(
5
)会话层,完成用户之间会话的组织、协调、分配用户名等;
(
6
)表示层,解决数据格式问题,规定编码方式;
(
7
)应用层,
OSI
的最高层,利用应用进程提供网络访问手段。
2.1.2
TCP/IP
体系结构
由于TCP/IP
比其之前的
OSI
模型更具体实现,随着互联网的不断发展,遵循
TCP/IP
结构的网络不断普及,因此现在通常采用
TCP/IP
代 表
Internet
体系
结构。
TCP/IP
的目的是在网络标准不 同的情况下解决互联问题,可以说,网络
互联是
TCP/IP
的核心。
TCP /IP
的体系结构如图
2
所示。
图
2 OSI
参考模型与
TCP/IP
结构
第
3
页
共
22
页
图
1 OSI
参考模型
TCP/IP
在设计时重点并没有放在具体通信 的实现上,所以对最后两层没有
做出具体规定,
同时表明它允许不同类型的通信网络参与通信。
它的四个层次功
能如下。
(
1
)应用层,提供常用的应用 程序及自定义的应用程序,数据传输时用
TCP/IP
协议来进行;
(2
)传输层,提供端到端的应用程序之间的通信,可以使用传输控制协议
TCP
(
Transmission
Control
Protocol
)或用户数据报协议
UDP
(
User
Datagram
Protocol
)
协议,
前者提供可靠传输,
传送单位是报文段,
后者提供不可靠服务,
传输单位是数据报,即分组。此外,传输层 另外一个功能就是区别应用程序;
(
3
)网际层,负责计算机之间的通信, 采用的协议是
IP
协议,数据传送单
位是分组,向上提供不可靠的传输服务;
(
4
)网络接口层,负责接收数据报,并实现发送,或者接收帧,提取
IP< br>数
据报,交给互联网层。
2.1.3
OSI
模型与
TCP/IP
体系结构的区别
从前面的分析 可以看出
OSI
模型和
TCP/IP
体系有许多不同之处,主要体现
在问题的处理上面,例如:
(
1
)
TCP/IP
一开始就 考虑的是异构网络的互联问题,并将
IP
看作是整个
体系的重要组成部分,而
ISO
并没有认识到网际协议
IP
的重要性,导致最后只
能单独划分一个子层 来完成
IP
的作用;
(
2
)
OSI
最开 始只注意到了面向连接的服务,而
TCP/IP
一开始就注意了面
向连接和无连接的并 重。相比起来,
TCP/IP
更注重了数据传输的效率,而
OSI
则注重了传 输的可靠性;
(
4
)
TCP/IP
虽然分层,但是调用关 系并不像
OSI
那样严格,减少了不必要
的开销,提高了传输效率。
2.2
传输层的编程接口—
Windows
套接字编程技术
2.2.1
Windows
套接字的概念
Window s
套接字
—
SOCKET
,是为
Windows
系统开发的 一套标准通用支持网络
协议数据通信的
API
,它是网络通信的基础,即
TC P/IP
的网络编程接口,
1994
年被定为网络编程标准后,主要经历了
W in
sock1.1
和
Win
s
ock2.0
两种版本,它
产生最终目的是可以适应应用程序开发者、
网络服务商的需求,
进程通过套接字
的通信域来完成通信。需要指出的是,套接字主要负责控制数据的输入与输出,
主要在传输层和网络层 ,屏蔽了数据链路层和物理层
。
[2]
第
4
页
共
22
页
2.2.2
套接字类型
根据通信性质把套接字主要分为流式套接 字和数据报套接字两种。
它们的区
别在于流式套接字提供双向、
有序、无重复的数据流 服务,但相对于数据报套接
字来说系统开销较大。
数据报套接字也支持双向数据流,
但 并不注重传输可靠性、
无重复性和有序性,但它保留了记录边界,
由于数据报传输效率较高,< br>所以还是
得到了比较广泛的应用。
2.2.3
涉及的几个基本概念
(
1
)字节顺序,不同的计算机采用不同的自 己顺序存储数据,所以在这些
数据进行通信时需要进行字节顺序的转换,所有传送给网络上套接字函数的
IP
地址和端口号均按照网络顺序安排,
主要由
sockaddr_in这个结构规范。
特别要
注意的是,
应用程序建立地址结构之前,
用户输入 需要将主机序列转换为网络序
列(使用
htons
函数,反之使用
ntohs
函数)
。
(
2
)阻塞与非阻塞,套接字有同步阻塞和异步 非阻塞两种方法,阻塞模式
时,套接字需要等待操作全部完成才结束,
而当套接字处于非阻塞模 式时,
套接
字以是否有新数据到达作为阻塞的标志。
阻塞方式套接字简单、方便,但是 效率
比较低,而非阻塞模式使用复杂点,但效率很高。但是仍需强调一点,
Winsock提供了几种
I/O
模型来解决异步问题,如“选择”
、
“重叠”
、
“事件选择”
、
“异步
选择”等
。
[3]
2.3
原始套接字
从用户的角度来看,
标准的流式套接字和数据报套接字这两类套接字似乎涵
盖了
TCP/IP
应用的全部,
因为基于
TCP/IP
的应用,从协议栈的层次
(如图
3
所
示)
上讲,在传输层的确只可能建立于
TCP
或
UDP
协议 之上,
而流式套接字和数
据报套接字又分别对应于
TCP
和
UDP< br>,所以几乎所有的应用都可以用这两类套接
字实现。
但是,
当需要自定义数据包 发送时或者需要分析所有经过网络的数据包
的时候,就必须面临一种不同于前两者的方式
—Raw
Socket
,即原始套接字,程
序员可以用它来发送和接收
IP
层以上的原始数据包
,
如
ICMP
,
TCP
,
UDP
等,
不仅这样,它还可以实现 如伪装本地
IP
、发送
ICMP
包等功能。
第
5
页
共
22
页
Raw Socket
广泛应用于高级网络编程,也是一种广 泛的黑客手段。著名的
网络
sniffer
、拒绝服务攻击(
DOS
)
、
IP
欺骗等都可以以
Raw
Socket
实现。
Raw
Socket
与标准套接字(
SOCK_STREAM
、
SOCK_DGRAM
)的区别在于前者直接置
< br>根
于操作系统网络核心(
Network
Core
)
,而
SOCK_STREAM
、
SOCK_DGRAM
则“悬浮”
于
TCP
和
UDP
协议的外围,如图
4
所示。
图
4
标准套接与原始套接字的关系
图
3
协议栈层次
3
网络数据的采集技术分析
3.1
Windows
下原始数据包捕获的实现
网络上的数据包捕获机制主要依赖 于所使用的操作系统,
不同的操作系统下
有不同的实现途径。在
Windows
环境下,可通过网络驱动程序接口规范(
NDIS
)
,
WinSock的
SOCK_RAW
或虚拟设备驱动技术(
VxD
)等技术实现网络数据 包的捕获
功能。
前面已经介绍到了,使用原始套接字可以绕过
Socket
提供的功能,对底层
的协议进行使用与开发,
可以根据自己的需要生成想要的数据报文 等,
下面开始
第
6
页
共
22
页
介绍使用原始套接字对数据包捕获进行开发的相关技术知识。
第一,使用套接字前,需要了解网卡接收数据的工作原理:
在正常情况下,
网络接口只响应两种数据帧,
一种是与自己的硬件相匹配的
数据帧,
另一种四向所有计 算机广播的数据帧。在系统中,
数据帧的收发由网卡
完成,
网卡程序接收从网络发来的 数据包,
根据其硬件地址去判断是否与本机的
硬件地址匹配,
若匹配就通知
C PU
产生中断进行响应,
然后调用驱动程序设置的
网卡中断程序地址调用驱动程序接收 数据,
然后放入堆栈进行系统相关处理,
若
不匹配则直接丢弃该数据包
。
对于网络接口,它一般具有
4
种数据接收模式:广播、组播、直接和混杂模式,只有当把接口设置为混杂模式时,
网络接口才能接收所有的数据,
无论地址
是 否匹配,所以在做本设计的时候一定要设置为混杂模式才能实现数据的采集。
第二,需要了解套接字的工作程序和使用方法:
一般来说,采用套接字开发网络程序需要经历以下几个基本步骤:
启动、创建、绑定 、监听(接受连接)
、连接、发送
/
接收数据、关闭、卸载
等。
第三,具体到
Windows
下利用原始套接字捕获网络数据可以这样设计:
(
1
)启动套接字;
(
2
)创建一个原始套接字;
(
3
)将套接字与本地地址绑定;
(
4
)设置操作参数;
(
5
)设置网络接口为混杂模式;
(
6
)启动监听线程,开始接收数据;
(
7
)退出关闭套接字。
[3]
3.2
原始数据包捕获的关键函数
(
1
)启动函数
WSAStartup
int
PASCAL
FAR
WSAStartup
(DWORD
wVersionRequested
,
LPWSADATA
lpWSAData)
;
每一个套接字应用程序都必须调用该函数进行一系 列初始化工作,
并且只有
调用成功返回后,
才能开始使用套接字,
其中参数< br>wVersionRequested
是版本号,
高字节是次版本号、
低字节是 主版本号,
参数
lpWSAData
是指向
WSADATA
结构的< br>指针。
(
2
)套接字创建函数
socket
SOCKET socket (int af , int type , int protocol);
所有的通信在建立之前都必须创建一个套接字,
socket
函数的功能就是创
第
7
页
共
22
页
建套接字,其中参数
af
指协议地址族(
address
fami ly
)
,当建立的套接字是依
赖于
UDP
或
TCP
的话,需要设置
af
为
AF_INET,
表示采用
IP
协议 。参数
type
是
指协议的套接字类型,采用流式套接字时用
SOCK_ST REAM
,采用数据报套接字时
用
SOCK_DGRAM
,采用原始套接字时 用
SOCK_RAW
。参数
protocol
是协议字段,
默
认情况下可直接设置为
0
。
(
3
)绑定函数
bind
int bind ( SOCKET s , struct sockaddr_in* name , int namelen);
成 功创建套接字后的下一步工作就是将本地网络接口与套接字进行绑定,
其
中参数
s是创建的套接字,
参数
name
是需要绑定的通信对象的信息结构体指针,
namelen
是该结构的长度。需要注意的是
sockaddr_in
结构:
struct sockaddr_in{
short
sin_family; //
地址族,设置为
AF_INET
unsigned short
sin_port; //
指定的端口号
struct in_addr
sin_addr; //IP
地址
char
};
由于主机序列与网络 序列的关系,
在程序中需要使用
htons
等函数进行转换
工作。
(
4
)设置接口模式函数
WSAIoctl
int WSAAPI WSAIoctl(SOCKET s, DWORD
dwIoControlCode, LPVOID lpvInBuffer, DWORD
cbInBuffer, LPVOID lpvOutBuffer, DWORD
cbOutBuffer, LPDWORD lpcbBytesReturned,
LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTINE
lpCompletionRoutine);
其中
,
s
为
一个套接
口
的句柄
,
dwIoControlCode
为操作控< br>制代码
,
lpvInBuffer
为
输
入
缓
冲
区
的
地
址
,
cbInBuffer
为
输
入
缓
冲
区
的
大
小
,
lpvOut Buffer
为输出缓冲区的地址,
cbOutBuffer
为输出缓冲区 的大小,
lpcbBytesReturned
为输出实际字节数
的地址,
l pOverlapped
为
WSAOVERLAPPED
结构的地址,
lpC ompletionRoutine
为
一个指向操作结束后调用的例程指针。
调用成功后,
WSAIoctl
函数返回
0
,否则的话,将返回< br>INVALID_SOCKET
错
误,应用程序可通过
WSAGetLastE rror
来获取错误代码。
sin_zero[8];
第
8
页
共
22
页
(
5
)数据接收函数
recv
int recv (SOCKET s , char* buf ,int len , int flags);
4
网络流量监控系统各模块的设计与实现
4.1
开发背景介绍
本设计开发平台采用
Microsoft Visualst udio6.0
,它是目前使用比较广泛
的
Winsock
开发平台,
因此具有较强的适应性,
能够在很多的操作系统平台上运
行,设计后具有直观的简洁的操作界 面,稳定性也比较高。
4.2
总体结构设计
通过收集与分析简单网络流量监控软件的用户需求,总结出以下特征:
(
1
)需要实现对网络接口数据包的尽可能多的捕获,将网卡设置为混杂模
式,然后进行数据包的采 集;
(
2
)数据包的内容要进行一定的解析,对数据包的协议类型、源目地 址、
数据包截获时间、数据包内容需要进行分析;
(
3
)根据用户 不同的要求能够依照特定地址范围、特定协议类型相关包等
条件进行自定义监视;
(
4
)监视结果输出有实时流量图、列表等显示;
(
5
)实现日志记录,便于日后分析;
(
6
)对某些常见的攻击进行发现分析。
总合以上系统要求与综合 分析,本系统总体设计如下,采用
VC++6.0
编写,
系统具有三个主要功能部分: 数据捕获与显示模块、流量信息统计模块、
流量绘
制模块,如图
5
所示。
图
5
系统总体设计结构图
数据采集模块
信息统计模块
流量绘制模块
流量监控分析系统
数据采集模块:完成网络接口数 据的捕获、解析和显示,
可以根据用户定义
条件组合来进行捕获,
如只监视采用
TCP
或
UDP
协议的数据包,
也可以监视用户
希望关注的相关< br>IP
地址的数据包,同时完成数据封包日志记录,提高了系统的
灵活性。
同时, 在对数据包的解析过程中对一些常见入侵攻击特征进行判断,
发
出预警。该模块采用编写原始套 接字开发。
第
9
页
共
22
页
防辐射服价格-
防辐射服价格-
防辐射服价格-
防辐射服价格-
防辐射服价格-
防辐射服价格-
防辐射服价格-
防辐射服价格-
本文更新与2021-01-17 15:59,由作者提供,不代表本网站立场,转载请注明出处:http://www.xapfxb.com/yuer/412755.html