电力系统网络监管技术的研究与实现(2)

来源:网络(转载) 作者:朱小川 发表于:2011-08-15 13:46  点击:
【关健词】电力系统;数据包监听;IPv6 WinPcap
2 IPv6下的数据包监听的技术方案 2.1 实验环境 硬件设备:基于X86的3台PC机、传统以太网卡、集线器等; 主要软件:Microsoft Windows xp(Service Pack 2版本) 、APACHE服务器安装软件、APACHE服务器IPv6补丁及各种必

  2 IPv6下的数据包监听的技术方案
  2.1 实验环境
  硬件设备:基于X86的3台PC机、传统以太网卡、集线器等;
  主要软件:Microsoft Windows xp(Service Pack 2版本) 、APACHE服务器安装软件、APACHE服务器IPv6补丁及各种必备文件。
  2.2 技术方案
  依照我们的前期分析和全面探讨,根据IPv6的特点,我们尝试提出一个可行的解决方案,这套方案更多的是站在基于端的数据包监听的角度。
  根据以上的介绍,提出的设计思路是:
  基于WinPcap捕获MAC数据帧,相对WinPcap的实现机制来讲,如果用WinSocket编程,使用套接字“Raw Socket”实现监听比较简单,但有个缺点就是只能截获IP层以上的包,数据包头不含帧信息,对一些特殊的要求就不能满足了,尤其是在IPv6网络中。
  采用动态链表存放捕获的数据(为每一个捕获到的数据包分配一个链表节点,将数据包中的关键信息存放在节点中)。采用动态链表能使应用程序根据网络流量随时间的变化而动态的分配内存,从而合理地利用了内存,避免了不必要的内存浪费或内存溢出等一些问题,使应用程序达到最佳性能。
  使用多线程处理数据包,我们可以在程序实现的设计中使用三类线程进行操作:一类线程只进行捕获MAC数据帧,并把获得的数据包添加到链表的尾部;另一类线程进行过滤操作,它检查新到的链表尾的数据包,检查其是否满足过滤条件,如果不满足则将其删除出链表;最后一类线程进行数据包处理操作,比如流量分析、数据包分析等。
  上面三类线程中,考虑尽可能不丢失数据包的条件,设置捕获操作线程的优先级最高。动态链表节点设计为:
  struct datainfo {
  int Hour; // 捕获数据的时间(小时)
  int Minute; // 捕获数据的时间(分)
  int Second; // 捕获数据的时间(秒)
  u-char IPaddr[17] ; // 捕获数据包中的 IP地址(也支持 IPv4)
  int Haddr[6] ; // 捕获数据包中的MAC地址
  char * proto; // 捕获数据包的上层协议类型
  int Port; // 捕获数据包中的端口号
  char portName[15] ; // 捕获数据包中的端口号对应名字
  char flag [4] ; // 针对 TCP数据包 ,数据包连接标识符
  ULONG caplen; // 捕获数据包的长度
  struct datainfo * next;}; // 下一节点
  对于存放流入数据的链表,节点中的IPaddr项存放数据包中源IP地址、Haddr项存放数据包中源MAC地址(如是网外数据包,则该项为最后一个路由器的MAC地址)、Port项存放数据包中源端口号、portName项存放数据包中源端口名;相应的,对于存放流出数据的链表,节点中的IPaddr项存放数据包中目的IP地址、Haddr项存放数据包中目的MAC地址(如是网外数据包,则该项为第一个路由器的MAC地址)、Port项存放数据包中目的端口号、portName项存放数据包中目的端口名。
  在TCP数据包头中,端口域用16位表示。因此,每台主机有65535个可能的端口号,其中0~1023是常用端口号,ICANN为0~1023端口各命名了一个端口名,1023以上端口未加以命名。我们可以通过调用函数void getportname(int portn ,char portch[] ,char * protocol)来获取端口号对应的端口名 ,以便进一步了解数据包的高层协议类型。
  2.3 主程序的设计流程
  以下为主程序流程以及相应的WinPcap库函数:
  1) 调用pcap_findalldevs()函数获取系统中所有可用的网络接口卡信息链表。
  2) 从上一步得到的结果中选择欲使用的网卡,用pcap_open_live()函数将其设置为混杂模式以捕获网络数据。
  3) 通过pcap_datalink()函数判断链路层协议类型是否为程序所支持(即是否提供了相应链路层协议的识别解析函数)。
  4) 调用pcap_compile()函数编译封包过滤表达式。
  5) 使用上一步的编译结果通过pcap_setfilter()函数设置过滤器。
  6) 创建接收线程,pcap_next_ex()函数用于获取下一个有效的封包数据。
  7) 添加封包处理代码。
  8) 后期处理。
  9) 进一步完善为防火墙系统或者是入侵检测系统。
  3 总结
  随着Internet技术的不断发展,网络中出现的不安全因素越来越多,从病毒的出现到人为的恶意攻击,网络中的合法用户受到的危害越来越大,网络管理及安全越来越为人们所重视,网络技术人员开始对网络的安全管理进行研究,在抵御网络上的病毒和恶意攻击中,网络监听成为网管人员必须掌握的技术。监听(sniffer),指利用计算机网络接口截获目的地为其他计算机的数据报文的技术,它为网络管理员提供一类管理工具,使用这类工具可以监视网络的状态、数据流动情况以及网络上传输的信息并利用这些信息来排除网络故障、发现病毒、检测恶意攻击等等。而电力系统网络IPv6的出现和发展提供了一个重要的机遇,现已成为不可阻挡的发展趋势IPv6代表着未来一代的互联网协议,是电力系统网络的核心技术,其发展前景巨大,但随之而来的网络安全和网络维护的问题也将越来越重要,基于新型数据包监听的网络防护和网络维护是我们必须要重视的。
  参考文献:
  [1] Deering S,Hinden R.Internet Protocol,Version 6(IPv6)SpecificationM/CD.RFC2460,1998.
  [2] Ulvio Risso, Loris Degioanni .An architecture for high per-formance network analysis.Proceedings of the 6th IEEE Symposium on Computers and Communications (ISCC 2001),Hammamet,Tunisia,July, 2001.http://staffpolito.it/-risso/pubs/isccOl-wpcap.pdf.
  [3] Relatori Candidato Ing. Development of an architecture for packet capture and network traffic analysis.Mario Baldi Loris Degioanni Prof. Marco Mezzalama ,Turin, Italy, Mar,2000.http://winpcap.polito.it/docs/thes degio.zip.
  [4] 李津生,洪佩琳.下一代Internet的网络技术[M]. 北京:人民邮电出版社,2001.
  [5] 潘爱民.Visual C++技术内幕[M].北京: 清华大学出版社,1999.
 

(责任编辑:南粤论文中心)转贴于南粤论文中心: http://www.nylw.net(南粤论文中心__代写代发论文_毕业论文带写_广州职称论文代发_广州论文网)
顶一下
(0)
0%
踩一下
(0)
0%


版权声明:因本文均来自于网络,如果有版权方面侵犯,请及时联系本站删除.