信息技术 信息技术
摘要:通过对网络流量的监测,及时发现企业局域网内流量异常的主机,
从而更好的保护正常业务对网络带宽的需求。
关键词:网络流量 监测 实现
1 网络流量监测的现实意义
企业局域网的广泛应用为广大企业带来了快速的信息响应、办
公效率的大幅提升、经营成本的降低等众多好处。但同时,随着网络
技术突飞猛进的发展,网络应用五花八门,企业也不得不面对越来越
多的恶意网络攻击与黑客入侵。目前,企业局域网网络安全综合应
用了防火墙、入侵监测、漏洞扫描、补丁分发等安全产品,致力于建设
集访问控制、流量监测、带宽管理及终端管理等功能与一体的安全管
理平台。通过对网络流量的监测,及时发现企业局域网内流量异常
的主机,或者根据系统设置的阈值提前预警,从而更好的保护正常业
务对网络带宽的需求。所以,网络流量监测是实现对企业局域网运
行状况掌握与管理的有效手段。
2 编程实现的基础
本文编程实现网络流量监测是基于 MFC的Windows 应用程
序实现的,采用 VC++ 具体编码。由于MFC采用的面向对象的思想
来组织与实现应用程序,其封装了大量的基类,供我们继承,极大地
实现了代码的复用,缩短了开发时间。
3 具体实现过程
3.1 监测工作过程概述 首先在消息处理处理函数中,启动监测
用户界面线程,进入监测界面,然后在消息处理函数中启动后台捕获
数据包的工作线程,开始进行数据包的捕获与
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
。同时,监测人员
还可以控制工作线程的运行状态,包括最后的释放资源退出监测。
3.2 线程的创建与启动 在 MFC程序中创建一个线程,宜调用
AfxBeginThread()函数。该函数因参数不同而具有两种重载版本,分
别对应工作者线程和用户接口(UI)线程。
3.2.1 UI线程 创建用户界面线程时,必须首先从 CWinThread
派生类,并使用 DECLARE_DYNCREATE 和 IMPLEMENT_DYN-
CREATE 宏声明此类。
启动 UI线程的 AfxBeginThread()函数的原型为:
CWinThread *AfxBeginThread(
//从 CWinThread派生的类的 RUNTIME_CLASS
CRuntimeClass *pThreadClass ,
int nPriority = THREAD_PRIORITY_NORMAL, // 线程的优
先级
UINT nStackSize = 0, //线程的堆栈大小
DWORD dwCreateFlags = 0, //线程的创建标志
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL ); // 线
程安全属性
3.2.2 Worker线程 工作者线程编程比较简单,我们只需编写
线程函数和启动线程即可。
启动Worker线程的 AfxBeginThread()函数的原型为:
CWinThread *AfxBeginThread(
AFX_THREADPROC pfnThreadProc, //线程函数
LPVOID pParam, //传递给控制函数的参数
……其余与 UI线程相同……);
本系统中,监测用户界面线程的启动如下:
在消息处理函数中添加语句
AfxBeginThread(RUNTIME_CLASS(CSuperviseThread));
其中:CSuperviseThread 为从 CWinThread 派生来的线程类,
添加成员变量对话框类 CSuperviseDlg 的对象 supervis ing_dlg,并
且重写该线程类的虚成员函数 BOOL CSuperviseThread::InitIn-
s tance();在里面创建并显示模态对话框,生成我们的监测界面。
在监测界面上的“开始”按钮的消息处理函数中启动工作线程:
pWorkerThread_Sniff=AfxBeginThread (Sniffing_Super-
vies ing_Flux,this );
其中,Sniffing_Supervies ing_Flux线程函数名;this 是当前对话
框对象的指针,作为参数传递给线程函数,以便线程函数能够操纵对
话框上的控件以显示监测信息。
3.3 数据包捕获及分析的具体实现
3.3.1 用Winpcap 驱动器实现对数据包的抓取
①用到的数据结构:Packet.dll用到的数据结构定义在 pack-
et32.h 中,主要包括 PACKET、ADAPTER、PACKET_OID_DATA、
bpf_program、bpf_hdr、bpf_s tat、NetType 八个数据结构,其中
PACKET和 ADAPTER是Windows 环境下捕获驱动器特有的。我
们在程序中主要用到三个数据结构 PACKET、ADAPTER 和
bpf_hdr。②我们还要用到 winpcap的一些函数,如:Packet.dll提供
了一个函数集。我们将要用到的函数如下:ULONG PacketGe-
tAdapterNames (PTSTR pStr,PULONG BufferSize);LPADAPTER
PacketOpenAdapter(LPTSTR AdapterName);等等,这里就不赘述
了。③Winpcap 驱动器所捕获的数据包的
格式
pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载
:驱动器通过 Pack-
etReceivePacket()函数来抓取的数据包的数量一般是未知的,它与
实际存储在驱动器缓存区的数据包的数量、数据包的大小和应用程
序缓存区的大小有关。图 1显示了驱动器交给应用程序的数据包的
格式。数据包存储在结构 lpPacket PACKET 中的
缓存区中,每个数据包包含一个头。头是 bpf_hdr
结构,包含数据包的长度和时戳,有效数据是以太
帧。在数据之后是填充(padding)字段,用来与字边
界对齐。而结构 bpf_hdr 中的 bh_datalen 和
bh_hdrlen 字段用来从缓存区中提取数据。④遇到
的问题:当用 PacketGetAdapterNames ()函数取得
适配器的名字时,经过实验发现,会有好几个,其中
有一个是真实的,其余的是虚拟网卡的名字;这样
问题就出现了:用哪一个进行数据包的捕获呢?经过分析,采用一个
循环逐个的试各个网卡名字,以单一个网卡能够捕获到真实有效的
数据,那就接受此网卡,认定它是真实的;否则,会收到空包,设定一
个阈值,一旦受到空包的计数值超过此阈值,就放弃该“网卡”,继续
试探下一个名字,直到找到能够接收到有效数据的网卡为止。
3.3.2 数据包的过滤与分析 将数据包抓来之后,按照 winpcap
的数据包的格式,即可提取出有效数据(以太帧),根据以太帧的头部
格式,我们可以取出 IP 数据报,然后再对 IP 头部进行分析,便可提
取出传输层的数据及其相关信息。
为分析数据包,我们需要根据 IP、TCP 及 UDP 协议头部格式定
义相关的首部结构。定义完这些结构,我们就可以对其进行分析以获
得数据包的各种信息。由于混杂模式的网卡捕获所有到达它的数据
包,但我们并不需要所有的包,因此要将没用的去掉。首先,我们只要
取得 IPv4数据包,可以通过判断以太帧中头部的类型字段来获得,
携带 IPv4的以太帧的类型字段值为 0x0800。其次,由于广播包的目
的物理地址全为 1,很容易将其滤掉;组播包的 IP 地址的第一个字
节的大于等于 224,因此,也很容易滤掉组播包。最后,根据 IP 首部
中的协议字段,可以滤掉 ICMP 和 IGMP,只保留 TCP 和 UDP 的数
据包,因为我们主要依靠这两种协议包来通信。
3.3.3 统计出各主机与外网的信息流量 为了保存所有主机的
流量信息,需要定义一个结构数组。其中该结构定义如下:
typedef s truct info_to_show
{
uns igned long IP_Address ;
uns igned long In_Data_Size_Sum;
uns igned long Out_Data_Size_Sum;
uns igned long Total_Data_Size_Sum;
}Info_To_Show;
网络流量监测的实现
李翔 (黑龙江省烟草专卖局)
295
摘要:在分布式数据库系统中采用当前比较流行的 P2P(Peer- to- Peer)
技术后,可以解决 C/S模式中的瓶颈等问题,提高数据库中的各种资源利用率
和查询的效率。文中介绍了 P2P技术、现有 P2P系统的特点、数据库中的信息
查询以及 P2P技术在数据库系统中的应用等问题。
关键词:P2P 分布式数据库 查询
0 引言
在当今,分布式数据库已广泛应用于各行各业,如各大企业,集
团,公司,银行等。分布式数据库系统就是把这些组织中的数据信息
联系在一起,提供桥梁的作用。下面主要介绍了分布式数据库系统中
如何使用 P2P 技术以及怎样高效的实现数据的查询。
1 P2P 技术
P2P 是(Peer- to- Peer)缩写,意为点对点,对等网络计算,或称
为对等联网。简单说,P2P 就是点对点通信。可以定义为网络中的各
计算机之间通过直接交换信息共享计算机资源和服务,对等计算机
兼有客户机和服务器的功能。在这种网络中每个节点的计算机地位
相同,可直接互连实现各种资源的共享,不需要依赖集中式服务器支
持。近来 P2P 技术正日益受到重视,在大型分布式数据库中采用此
技术比采用 C/S 技术具有很多的优点,如节省投资,更高的文件共
享率等。
如今,对等网络技术正逐渐成为计算机网络的一个热门。随着互
联网的普及和宽带技术的飞速发展,P2P 技术在加强网络上人们的
交流、信息交换、分布计算等方面大有前途。网络上现有的许多服务
都采用了 P2P 的技术,它越来越受到网络用户的关注和喜爱。比如
即时通信系统 ICQ、MSN 以及国内广泛使用的 QQ 是最流行的
P2P 应用。每年都有新的 P2P 软件出现,吸引网络用户的使用。在人
们的使用中,其实最多的还是对数据信息的查询,采用 P2P 技术,是
网络的计算模式从集中式向分布式偏移,处理的数据从中央服务器
转向各个终端客户机。即使某个或某些节点的数据库出现问题,也不
会影响其它节点间的通信。
2 基于 P2P 技术的数据库系统
最初的分布式数据库管理都是基于客户服务器架构的,通过一
个功能强大的服务器为组织内成员提供协作。而现在的大型数据库
系统采用 P2P 技术,让人们通过互联网直接交互,人们在网络上进
行信息的沟通更直接、更实时。网络中如果各节点间的数据服务是对
等的,就构成了 P2P 数据系统。
传统的 C/S、B/S 模式,采用的是一种集中的手段,所有数据资
料都存放在大型服务器上,每台客户机都要被动地从服务器上读取
信息,并且客户机之间不具有直接交互能力。在这样的集中式数据库
中,对服务器配置的要求很高;一旦服务器或者某个终端出现问题,
将有可能影响整个网络的运行。其实,C/S 模式下的数据查询完全依
赖于中心节点服务器,没有服务器,网络就没有任何意义。而在对等
网络中, 每个节点的地位都是相同的,具备客户端和服务器双重特
性,可以同时作为服务使用者和服务提供者。这使人们在 Internet 上
的共享行为被提到了一个更高的层次,使人们以更主动深刻的方式
参与到网络中去,每个人都能为网络的资源和功能扩展做出自己的
贡献。总之,P2P 的技术在数据传输与文件共享,分布式运算等方面
应用很广泛。
当今企业,尤其是那些地理位置分散而管理又需集中的大集团,
使用分布式数据库系统符合它们的管理思想和经营方式。在这些全
国或全球性的公司,数据通常就已经是分布了。这种情况下,对于处
理复杂大型的问题可以分别由各终端的部门完成,最后再汇总。然而
整个信息是分离的,需要解决信息的共享问题。P2P 技术的出现使企
业中各部门信息的通信变得更容易了。
3 数据库中的查询问题
随着网络技术的飞速发展,对数据通信也提出了更高的要求。在
人们使用网络的过程中,应用最多的其实就是信息查询。归根结底,
就是对数据库中的数据进行查询。数据库中使用 P2P 技术可以使数
据更有效地分布到网络边缘,提高资源利用率。由于传统数据库系统
的资源利用率低,各节点是静态定义的,它们的数据虽然可以共享,
但没有预先的规则,而且扩展性、灵活性较差,这给查询带来了一定
的困难。
在数据库系统中引入 P2P 技术不需要功能强大的中心服务器
的支持,而是对等点之间通过直接互连实现信息资源、处理器资源、
存储资源的全面共享。
P2P 网络结构基本可分为纯 P2P 系统、中心文件目录 /分布式
文件系统、有中间服务器三种不同的结构。P2P 技术是一种基于网络
环境的技术,所以针对这一特性,主要考虑以下几个方面的问题。首
先,P2P 应用是对于互联网上众多计算机的,所以要考虑那些低端的
不具备服务器那样强的联网能力的普通个人电脑。其次,在 P2P 技
术中需要有关于数据描述和交换的协议。第三,构造一个合适的网络
拓扑结构能快速准确地发现对等点。如何从网络中的海量数据库信
息中快速地查找到需要的信息是一个看似简单其实很困难的事情。
P2P 网络模式中节点之间的动态对等关系是高效搜索信息的有力
保证。它可以保证搜索的实时性,达到令人惊叹的搜索深度。除了以
上三点,还有数据库的管理机制、数据的安全等问题。
不妨将整个的查询过程简洁地用两个步骤四个字来概括,即“搜
索”,“定位”。搜索中尽量减少经过的节点数可以提高速度;同时引导
数据流向“有用的区域”。这里所说的“有用”是相对的,不同的信息搜
索“有用的区域”也不一样。根据不同的情况,可不同程度的采用宽度
优先或深度优先的策略。高效的搜索方法可以减少请求服务和信息处
理的时间。查询也有很多方式,最常见的是关键字查询。对普通的计算
机用户而言,上网的过程中经常使用这个方法。合适的关键字对查询
结果起到决定性的作用。其实,合适的关键字可以引导查询走向“有用
的区域”。对于专业的编程技术人员,在程序中对数据库进行信息查询
使用最多的就是查询语言了,比如结构化查询语言 SQL(Structured
Query Language)。SQL是一种数据库查询和程序设计语言,用于存
取数据以及查询、更新和管理关系数据库系统。SQL同时也是数据库
脚本文件的扩展名。由于它的嵌入性,在程序中使用的非常多。
4 总结
把 P2P 技术引进传统的分布式系统,很好地克服了传统分布式
系统的部分缺点,在数据查询中可以向相邻节点发送查询请求,减少
中心节点开销,避免服务器带来的瓶颈问题,但也存在一些缺陷,如
怎样避免数据库中大量数据的冗余,网络出现问题时的数据一致性
等方面还有待进一步的研究。
参考文献:
[1]陈建荣.分布式数据库设计导论[M].北京:清华大学出版社,1992.
[2]黄营.P2P技术应用于分布式数据库的研究探讨.通信技术.Vol.42. No.
07.2009.
[3]李晓戈,杨寿宝.对等网络中搜索策略的研究[J].计算机科学.2003.30(9).
[4]Manoj Parameswearan,Anjana Susarla,Andrew B Whins ton.P2P
networking:An Information- Sharing Alternative[J ].Computer 2001 34(7).
[5]周鹏,鱼滨.基于 P2P分布式数据库实时更新.Vol.17.No.5.May 2007.
浅谈分布式数据库中 P2P技术的使用
刘晓天 顾大明 (盐城纺织职业技术学院)
信息技术 信息技术
我们只监测本局域网的主机的流量,并且我们也只对本网主机
与外网主机的通信感兴趣,对本网内部的通信没兴趣。所以捕获到
一个数据包之后,要对其 IP 地址进行分析,看看是否是本网内的主
机与外网的主机通信的数据包。如何实现呢?解决方法是用函数
DWORD GetAdapters Info (PIP_ADAPTER_INFO pAdapterInfo,
PULONG pOutBufLen)获取本网的子网掩码和网络 ID,然后,将捕
获到的数据包的 IP 地址于子网掩码逻辑与,然后将结果与网络 ID
相比较,自然就可以判断了。
(上接第 295页)
296