计算机网络测量与行为的分析研究与应用.docx
《计算机网络测量与行为的分析研究与应用.docx》由会员分享,可在线阅读,更多相关《计算机网络测量与行为的分析研究与应用.docx(10页珍藏版)》请在冰豆网上搜索。
计算机网络测量与行为的分析研究与应用
计算机网络测量与行为分析的研究与应用
计算机科学与技术专业03王霏霏
指导教师辛忠
摘要
随着互联网的发展,理解网络行为对于网络管理、规划和发展都有重要的意义,网络流量测量是研究网络行为的基础。
论文详细介绍了网络监测器的设计和实现。
该软件的功能实现分为三个部分:
网络流量监控部分、数据包抓取部分和局域网消息发送部分。
网络流量部分通过Windows注册表相关系统性能接口的访问和定时刷新绘制出连续的网络流量图;数据包抓取部分通过将网卡设置为混杂模式而实现数据包的截取功能;局域网消息发送部分则通过调用应用程序netsend实现局域网内的消息发送功能。
最后,本文在上述理论和实践的基础上分别在模拟的广域网和局域网环境下对网络监测器进行了测试,并分析了测试的结果。
关键词:
网络测量;网络行为分析;网络侦听
Abstract
DuetothedevelopmentofInternet,itisveryimportantforthenetworkmanagement,plans,andthedevelopmenttounderstandthenetwork,behavior,sothenetworktrafficmeasurementhasbeenbecomingthebasicofnetworkbehaviorresearch.Thedesignandrealizationofthenetworkmonitorhavebeenintroducedinthispaper.Therealizationofthissoftwareisdividedintothreeparts:
Thenetworkcurrentcapacity,thedatapacketcaptureandthelocalareanetworknewstransmission.ThepartofthenetworktrafficmeasurementdrawsupthecontinualnetworkcurrentcapacitypictureandthroughvisitingtheWINDOWSregistrationtablesystem-relatedperformanceandrefreshinginfixedtime.ThepartofdatapacketcapturehasrealizedthefunctionthroughestablishingthenetcardasPromiscuousmode.ThenewstransmissioninlocalareanetworkrealizesthefunctionthroughtransferringtheapplicationoftheprocedureNETSEND.Intheend,thenetworkmonitorhasbeentestedinthesimulationoftheWideareanetworkandthelocalnetworkwhichbaseonthetheoryandpractice,andtheresultofthetesthasbeenanalyzedinthispaper.
KEYWORDS:
Networkmeasurement。
Networkbehavioranslysis。
Networkinterception.
1、概述
互联网是上亿台计算机互联成的全球性网络,虽然相关的组网与管理技术在不断地完善,但人们对它在局部和整体范围内所体现出的行为特征依然没有一个正确和完整的认识。
掌握Internet的行为是网络规划、网络管理和网络安全、新网络协议和网络应用设计等诸多研究工作的重要前提,近年来对大规模互联网络行为的研究成为该领域被关注的热点目标。
通过测量分析可以掌握网络行为的基本特征(base-line>。
有助于寻找网络行为变化的规律,构造并验证网络行为的数学模型[1]。
所以,针对网络行为的测量分析方法展开系统性的研究将对Internet行为学方面的研究取得理论突破具有重要的意义。
2、网络监测器的设计与实现
网络监测器是一种应用程序,它只需在网络中的一台机器上运行,即可侦听到网络中所有报文。
网络监测器利用的是共享式的网络传输介质。
共享即意味着网络中的一台机器可以侦听到传递给所有机器的报文[2]。
例如,最常见的以太网就是一种共享式的网络技术。
以太网卡收到报文后,通过对目的地址进行检查,来判断是否是传递给自己,如果是,则把报文传递给操作系统;否则,将报文丢弃,不进行处理。
网卡存在一种特殊的工作模式,在这种工作模式下,网卡不对目的地址进行判断,而直接将它收到的所有报文都传递给操作系统处理。
这种特殊的工作模式,就称之为混杂模式(Promiscuousmode>。
网络监测器就是通过将网卡设置为混杂模式,来实现对网络的侦听。
目前网络中的绝大部分信息都是以明文形式传送的,所以如果使用了网络监测器,就可以对网络中传输的所有信息一目了然。
由此可见,网络监测器是网络中功能非常强大的一种工具,一方面,网络管理员可以利用它实现对网络流量的监测和分析,从而及时发现网上的不安全因素;另一方而,黑客也可以利用它,获得网络中他人的信息,造成严重的后果。
1.网络监测器的功能框架:
网络监测器设计为三个功能模块,如下图所示:
图2-1网络监测器的功能框架图
图2-1显示的是网络监测器的功能框架图,其中第一部分为网络监测器的网络流量监控部分,中间说明的是数据包截取部分,第三部分说明的是局域网内发送消息功能部分。
本文将对以上三部分的设计与实现作以详细的阐述。
2、网络流量监控部分的实现
<1)主程序结构和流程
网络流量监控程序的本质是对流入和流出网卡的数据包进行测量,在单位时间里的流入量实际上就是在单位时间里流入网卡的数据包的字节数。
而总流量就是流入量和流出量之和。
网络流量监控程序的思想是:
对流入和流出网卡的数据包进行检测并对数据包的长度进行累加,从而得到流量数据。
而实际编程时,由于WindowsNT/2000/XP提供了一个系统性能的接口(注册表>所以需要做的就是访问这个接口,得到数据流量。
根据这个想法,设计出一个程序NetTraffic,NetTraffic所需要的模块如下:
网络模块:
负责对注册表进行访问,遍历相关接口类型得到流量数据。
窗口模块:
由于需要将网络流量的数据图绘制在窗口中,而应用程序本身是基于对话框的,所以考虑将流量图绘制在一个继承于Cbutton类的按钮对象中。
在本对话框窗口中有3个按钮,一个负责总流量的绘制,一个负责输入流量的绘制,还有一个负责输出流量的绘制。
主框架模块:
负责框架窗口消息处理和映射。
<2)结构设计
本例创建的是基于对话框的VC++工程工程,包括以下的一些文件。
其中窗体部分为NetTraffiButtonDlg.h/NetTrafficButtonDlg.cpp显示主窗体界面,窗口消息处理。
网络部分包括MFNetTraffic.h/MFCNetTrafficButton.cpp,通过访问注册表得到数据流量的性能数据。
统计数据的图像显示部分包括MFCTrafficButton.cpp,通过button来绘制流量数据的统计图:
MemDC.h/MenDC.cpp为按钮的绘制,构造相关位图和设备句柄。
全局信息数据Globals.h放置定时器,绘制相关的全局信息。
2、数据包截获部分的实现
<1)实现原理
在以太网中,所有的通信都是广播的,也就是说通常在同一个网段的所有网络接口都可以访问在物理媒体上传输的所有的数据,在正常的情况下,一个网络接口应该只响应两种数据帧:
与自己硬件地址相匹配的数据帧;发向所有计算机的广播数据帧。
在一个实际的系统中,数据的收发是由网卡来完成的,网卡接受到传输来的数据,网卡内的程序接收数据帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU,认为不该接收就丢掉不管,所以不该接收的数据就被网卡截断了,计算机根本就不知道。
CPU得到中断信号产生中断,操作系统就根据网卡的驱动程序设置的网卡中断程序地址调用去定程序接收数据,驱动程序接收数据后放入信号堆栈让操作系统处理。
而对于网卡来说一般有4种接收模式[3]:
广播方式:
该模式下的网卡能够接收网络中的广播信息;
组播方式:
该模式下的网卡能够接收组播数据;
直接方式:
该模式,只有目的网卡才能接收数据;
混杂模式:
该模式下的网卡能够接收一切通过它的数据,而不管数据是否是传给它的。
现在总结一下,首先,在以太网中是基于广播方式传送数据的,也就是说,所有的物理信号都要经过“我的计算机”,再次,网卡可以置为混杂模式这实际上就是sniff工作的基本原理:
让网卡接收一切所能接收的数据。
这样一来要实现一个sniff程序应做下面几件事:
a、把网卡置为混杂模式;
b、捕获数据包;
c、分析数据包。
<2)实例实现
用AppWizard生成一个基于对话框的工程IPMon
a、添加资源:
添加一个ListControl控件,负责显示sniffer的结果,添加一个“查看”按钮负责激活开始监听和终止监听。
b、sniffer的实现
①在IpMonDlg.h中,首先定义一些相关的结构和宏,另外还会申明一个线程函数为友函数,负责监听网络数据报。
②在IpMonDlg.cpp中首先定义一些协议名城的数组和一个得到协议名称的函数。
③对话框的初始化函数OnInitDialog。
④OnLookUp“查看”按钮的消息响应函数,OnOk“确定”的消息响应函数。
⑤当调用WSAIoctl函数控制Socket模式的时候有一些需要注意的事项。
为了能够让Socket接收网络上所有的IP包,传给WSAIoctl函数的Socket句柄必须设置成AF_INET地址簇。
Soket_RAW的Soket类型和IpPROTO_Ip协议,而且这个Socket应该显式地绑定到本地的一个端口。
3、局域网内消息发送部分的实现
①实现原理
在Windows2000操作系统中有一个应用程序netsend。
它可以发送消息给其他的用户、计算机或者网络上的消息名。
而接收方必须运行信使服务以接收消息。
当然netsend只能够把消息发送到网络的活动节点。
在命令窗口模式下调用netsend命令就可以使用这个服务对本地局域网内发送消息。
通过调用MFC的命令参数函数,创建一个命令窗口,并且设置该窗口的属性为不可见的,然后将文本编辑框内所获得的消息和目标地址加入到要发送的命令参数中去格式为netsendUSERNAMEMESSAGE。
在开通信使服务的情况下就可以通过这个命令将消息发送出去。
这个程序的实现只需要调用一个API-CreateProcess,这是一个创建进程的函数。
程序只要能够调用起操作系统提供的NetSend命令行即可。
为了使用户在使用此方法时不陷入因为网络阻塞或网络延迟问题影响而出现的一直等待的状态,所以在使用的过程中实际上使用了多线程的机制,也就是对于发送命令设置单独的线程,一旦调用此方法的命令时就创建一个线程去完成发送消息的整个过程的工作,而不会使得系统资源被发送消息这个工作全部占用,那么,用户在发送消息的同时就可以不用等待发送结果而去完成其它的工作。
3、网络监测器的测试
在本章内容中,将介绍对软件的一个简单测试并分析测试的结果。
1.测试器材
交换机两台S1和S2、路由器两台R1和R2、串口线两根、主机四台A1、A2、B1、B2。
2.测试环境
我们主要是搭建一个广域网的环境,由主机A1、主机A2、交换机S1、路由器R1组成局域网1;由主机B1、主机B2、交换机S2、路由器R2组成局域网2;然后两台路由器之间用串口线相连,构成一个简单的广域网的环境。
首先,我们利用超级终端对交换机S1、S2和路由器R1、R2进行初始化处理;然后对主机和路由器分配IP和子网掩码如下所示:
A1:
10.10.10.10255.255.255.0B1:
10.10.20.10255.255.255.0
A2:
10.10.10.20255.255.255.0B2:
10.10.20.20255.255.255.0
R1:
R2:
S0:
10.10.30.1255.255.255.0S0:
10.10.30.2255.255.255.0
E0:
10.10.10.1255.255.255.0E0:
10.10.20.1255.255.255.0
IP这样分配的目的主要是让两个局域网处于不同的网段,让其相互访问时的情况。
我们连接的广域网的整体架构图如下所示:
图3-1测试环境搭建示意图
在B1的主机上建立FTP服务器,从而实现文件传输的操作。
<3)局域网环境测试
让B2访问B1上的FTP服务器,进行传输文件的操作,并在B1和B2上各放置一个网络测量器,其操作如下图所示:
图3-2局域网访问示意图
经过测量得知,我们可以在两台主机上抓取用户名和密码,以及用户登陆时访问的文件夹和其访问的权限,其中在FTP上抓包的效果图如下所示:
图4-3局域网环境下抓包示意图
由图4-3我们看到,当B2访问FTP服务器时,我们抓到了B2登陆名和密码,以及源IP地址和目的IP地址,因为同在一个局域网中,所以交换机只是进行转发,故可以抓到。
<4)广域网环境测试
让局域网中的主机A2远程登录FTP服务器,分别在A1、A2、B1、B2上分别放置网络监测器,主要是看抓包的情况,其中在FTP服务器上的抓包情况如下图所示:
图4-4广域网环境下抓包示意图
由图4-4可见,我们抓到其用户名为caicai,密码为000000,源IP是10.10.10.20,目的IP是10.10.20.10。
<5)局域网内消息发送功能测试
最后,我们测试的模块就是消息的发送,我们可以针对局域网中的某台主机发送消息,也可以对整个网段上的主机发送消息。
但是这种消息是广播形式的消息,不能够进行某种交流,只能通知事情。
而且如果在某台主机上的消息的服务选项被禁止的话,那么消息的发送和接收就不能够进行,因为我们就是通过调用这个服务来实现的。
4、结束语
本课题研究了一种网络监测工具—网络监测器的设计与实现,并在不同环境中对软件进行了测试。
网络监测器实现了网络流量监控、数据包截获、局域网内消息发送的功能。
如果将网络监测器放置在自己的电脑上,则测量的是通过个人电脑网卡的网络流量,同时,可以抓到所有到达本机网卡的数据包<包括广播包和发往本机网卡的数据包)。
倘若通过本机网卡的数据包出现异常,则本机附近的网络很有可能出现了问题,此时可以向局域网中所有的用户主机发送警告消息。
如果将网络监测器放置在代理服务器上,则可以监视整个局域网上用户主机的运行情况,当发现某一台或几台用户主机出现异常情况时,可向出现问题的用户主机发送警告消息。
网络测量与行为分析研究的意义越来越受到人们的重视,并且越来越多地应用于实际的网络管理和维护中,我们的设计正是基于此开发的,虽然取得了一定的成果,但在与实际应用结合方面仍有许多地方需要改进和完善,这是下一步所要进行的工作。
参考文献
[1]程光,龚俭,丁伟.网络测量与行为分析学综述.计算机工程与应用.2004.
[2]王英龙,王连海.网络侦听以及反侦听的原理和实现.计算机应用研究.2001,2.
[3]EricA.Hall,著,张金辉,译.Internet核心协议权威指南.北京:
中国电力出版社,2002.