免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1385 | 回复: 0
打印 上一主题 下一主题

网络捕包分析系统及其协议分析研究 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-30 20:28 |只看该作者 |倒序浏览
摘要:本文介绍了在liunx和windows平台下网络捕包平台的异同,介绍了成熟的捕包分析系统的体系结构并给出了一个实例分析――互联网上的开源捕包项目Ethereal。在此基础上指出了现有的网络捕包分析技术在
协议
识别上的缺陷,并给出了基于内容的
协议
识别改进方案。
  关键词:网络分析捕包sniffer
协议
识别
协议
分析
  作者:staring (
协议
分析论坛斑竹)
  摘要:本文介绍了在liunx和windows平台下网络捕包平台的异同,介绍了成熟的捕包分析系统的体系结构并给出了一个实例分析――互联网上的开源捕包项目Ethereal。在此基础上指出了现有的网络捕包分析技术在
协议
识别上的缺陷,并给出了基于内容的
协议
识别改进方案。
  关键词:网络分析捕包sniffer
协议
识别
协议
分析
  1引言
  网络分析(Networkanalysis)是指捕捉网络流动的数据包并通过查看包内部数据来发现网络中出现的问题。一个好的网络分析器(networkanalyzer)可以有:将网络数据转换为可读格式;发现并修理网络中的问题;分析网络性能并发现瓶颈;进行网络入侵检测;记录网络流量日志和痕迹保留;分析应用软件操作;发现失效的网卡等硬件;检测DOS攻击和间谍软件;
协议
学习和网络程序调试的工具等多种用途。一个系统管理员、网络工程师、安全工程师、程序员甚至系统操作员都可能需要这种分析系统。而对于入在系统实现上,一个网络分析器通常由五个部分组成――硬件、捕包驱动、包缓冲区、实时
协议
分析、解码器。事实上现在的主流的防火墙、入侵检测系统基本上也是采用和捕包分析系统相同的架构。
  2网络分析系统的体系结构
  2.1不同系统下的捕包平台
  网络分析系统首先依赖于一套捕捉网络数据包的函数库。这套函数库工作在在网络分析系统模块的最底层。作用是从网卡取得数据包或者根据过滤规则取出数据包的子集,再转交给上层分析模块。从
协议
上说,这套函数库将一个数据包从链路层接收,至少将其还原至传输层以上,以供上层分析。
  在xiux系统中,1992年LawrenceBerkeleyLab的StevenMcCanne和VanJacobson在其经典文献[3]中提出了包过滤器的一种的实现,BPF(BSDPacketFilter)。Libpcap是一个基于BPF的开放源码的捕包函数库。现有的大部分xiux捕包系统都是基于这套函数库或者是在它基础上做一些针对性的改进
  在window系统中,意大利人FulvioRisso和LorisDegioanni提出并实现了Winpcap函数库,作者称之为NPF。由于NPF的主要思想就是来源于BPF,它的设计目标就是为windows
  系统提供一个功能强大的开发式数据包捕获平台,希望在xuix系统中的网络分析工具经过简单编译以后也可以移植到windows中,因此这两种捕包架构是非常现实的。就实现来说提供的函数调用接口也是一致的。文献【1】专门分析了这2种架构的异同之处
  2.2层次化的数据包
协议
分析方法
  再取得捕包函数捕回的数据包后就需要进行
协议
分析和
协议
还原工作了。由于OSI的7层
协议
模型,
协议
数据是从上到下封装后发送的。对于
协议
分析需要从下至上进行。首先对网络层的
协议
识别后进行组包还原然后脱去网络层
协议
头。将里面的数据交给传输层分析,这样一直进行下去直到应用层
  2.3基于插件技术的
协议
分析器
  所谓插件技术,就是在程序的设计开发过程中,把整个应用程序分成宿主程序和插件两个部分,宿主程序与插件能够相互通信,并且,在宿主程序不变的情况下,可以通过增减插件或修改插件来调整应用程序的功能。运用插件技术可以开发出伸缩性良好、便于维护的应用程序。它著名的应用实例有:媒体播放器winamp、微软的网络浏览器ie等。
  由于现在网络
协议
种类繁多,为了可以随时增加新的
协议
分析器,一般的
协议
分析器都采用插件技术,这样如果需要对一个新的
协议
分析只需要开发编写这个
协议
分析器并调用注册函数在系统注册就可以使用了。通过增加插件使程序有很强的可扩展性,各个功能模块内聚。
  在
协议
分析器中新增加一个
协议
插件一般需要插件安装或者注册,插件初始化,插件处理3个步骤,下面以著名的开源
协议
分析器Ethereal为例进行分析如何利用插件技术新增加一个
协议
分析模块。
  Ethereal是一个开放源码
协议
分析器,支持window和xiux,从1998年开始到现在,最高版本为1.0.4已经可以支持五百多种
协议
。由于采用插件技术,一个新加入开发的程序员开发一种新的
协议
分析模块的时候不需要了解所有的代码,他只需要写好这个
协议
模块的函数后,然后调用注册函数proto_register_protocol将其函数名注册就行了。同时调用proto_reg_handoff_myprot函数告诉系统在什么时候需要调用这个
协议
模块。比如
  proto_reg_handoff_myprot(void)
  {
  dissector_handle_tmyprot_handle;
  myprot_handle=create_dissector_handle(dissect_myprot,
  proto_myprot);
  dissector_add("tcp.port",250,myprot_handle);
  }
  这段代码告诉系统当tcp
协议
数据流端口为250的时候要调用这个函数模块。这样一个新的
协议
分析模块就加入到系统中了。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/11897/showart_59508.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP