网络协议分析是指通过程序分析网络数据包的协议头和尾,从而了解信息和相关的数据包在产生和传输过程中的行为。包含该程序的软件和设备就是协议分析器。
当前市面上存在多种协议分析器,基本上分两类:手提式和分布式。
是一种单机设备或者说 PC 机软件。它能够捕获数据、实时控制和重操作数据分析。手提式协议分析器的零售价一般在数百到数万美元左右,这主要取决于各个供应商以及网络监视和数据分析的实现效果(以太网、千兆位以太网、光纤广域网链路等等)。手提式协议分析器一般应用于小型公司或者大型公司的现场工程师等。佳文公司推出的数据包分析器是一种手提式协议分析器。
主要由两部分组成:一个是各网络点上的监视探测器,另一个是网络操作中心 (NOC)的控制台。大型企业一般采用该装置实现中心监控网络运行。分布式协议分析器的零售价一般在数千美元到数百万美元左右。除了上述实现功能外,分布式探测器还能用来收集和分析 SNMP 和 RMON 数据,以全面了解网络情况。
手提式协议分析器的主要供应商有:Network General 公司、Agilent Technologies 公司、Wildpackets 公司和 Javvin Technologies 公司等;分布式协议分析器的主要供应商有:Network General 公司、Netscout 公司等。
此外,网络协议分析器(Network Protocol Analyzer)还被称为网络嗅探器(Sniffer)、数据包分析器(Packet Analyzer)、网络嗅听器(Network Sniffing Tool)、网络分析器(Network Analyzer)等。
网络协议分析器网络协议分析器Ethereal 是目前最好的、开放源码的、获得广泛应用的网络协议分析器,支持Linux 和windows 平台。在该系统中加入新的协议解析器十分简单,自从1998年发布最早的Ethereal 0.2版本发布以来,志愿者为Ethereal 添加了大量新的协议解析器,如今Ethereal 已经支持五百多种协议解析。其原因是Ehereal 具有一个良好的可扩展性的设计结构,这样才能适应网络发展的需要不断加入新的协议解析器。
Ethereal 抓包后的界面有三个部分,上部为报文列表窗口,显示的是对抓到的每个数据报文进行分析后的总结型信息,包括编号、时间、源地址、目标地址、协议、信息。中部为协议树窗口,显示的是数据报文的协议信息。在报文列表窗口选择不同条目则协议树窗口的内容随之改变为相应的协议信息。下部为16 进制报文窗口,可以显示报文在物理层的数据形式。
在抓包完成后,显示过滤器可以用来找到你感兴趣的包,也可根据协议、是否存在某个域、域值、域值之间的关系来查找你感兴趣的包。
* 可以从不同类别的网络硬件抓包,如Ethernet、 Token Ring、ATM 等;
* 停止抓包时不同的触发器相似:如抓获数据的总数、抓包时间,抓获包的数目;
* 抓包过程中同时显示编译后(解析)的包。
* 根据包过滤器的条件,从抓获的全部数据中进行过滤,减去符合条件的包。
使用Ethereal 进行网络协议分析时应当注意:必须有管理员权限才能开始抓包过程;必须选择正确的网络接口来抓获包数据;必须在网络的正确的位置抓包才能看到想看到的业务流量。
协议分析器既能用于合法网络管理也能用于窃取网络信息。网络运作和维护都可以采用协议分析器:如监视网络流量、分析数据包、监视网络资源利用、执行网络安全操作规则,鉴定分析网络数据以及诊断并修复网络问题,等等。
类型1、磁分析器包括单聚焦型和双聚焦型。经加速后的离子束在磁场作用下飞行轨道发生不同程度的弯曲而分离。双聚焦质谱仪的分辨率可达150000;2、飞行时间分析器飞行时间分析器被加速的离子按不同的的时间经...
库伦水分仪又名微量水分测定仪电极污染及保养,电极是微量水分测定仪的关键部件,要避免微量水分测定仪电极污染及保养就尤为重要;微量水分测定仪电极表面的污染可直接导致灵敏度降低,有些电极长期应用于油质样品的...
有三种 HART协议,布朗协议,FF总线协议型号上第一个字母E是HART d是布朗 另一种是FF 不是所有都是HART
协议分析器是一种用于监督和跟踪网络活动的诊断工具。它们可以是计算机上运行的软件,也可以是包含特殊线路板和软件的特殊单元设备。协议分析器通常是可以被网络技术人员携带到不同地点的便携式设备。下面列出它们可以处理的一些任务:
1.显示网络上传输信息分组的类型信息。你可以监督这些分组以监督安全性,确定失效情况,或监督和优化一个网络。
2.在一个互联网络上查询所有结点,或在任何一个特定结点与所有其它结点之间进行点对点通信检测。
确定整个互联网络的配置。
3.从一个或所有结点分析关键数据,或根据预先定义的一组阈值报告不正常的活动。
4.显示性能数据,例如通信量和被服务的分组。
5.提供关于网络有效性、网络性能、可能的硬件错误、噪音问题和应用软件问题的一些有用信息。
针对当前私家车辆剧增,交通问题日益严重,本系统采用J2EE技术以Java CV开源计算机视觉库技术为基础,设计并完成一套在流媒体图像中定位行驶过程中的车辆牌照,并将其从图像中提取出来,实现在流媒体中进行车牌检索的功能,并具有车辆流量分析功能的系统。
陶瓷环高阻膜作为简镜分析器避免边缘电场效应的重要部件,其质量对电子能量分析器的性能有很大影响,本文介绍了在陶瓷环上采用适当地分层蒸镀Cr膜和老化处理,制成时间稳定和温度稳定的高阻膜,经测试性能良好,并已实用于俄歇电子谱仪中。
Ethereal是一个开放源码的网络分析系统,也是是目前最好的开放源码的网络协议分析器,支持Linux和windows平台。Ethereal起初由Gerald Combs开发,随后由一个松散的Etheral团队组织进行维护开发。它目前所提供的强大的协议分析功能完全可以媲美商业的网络分析系统,自从1998年发布最早的0.2版本至今,大量的志愿者为Ethereal添加新的协议解析器,如今Ethereal已经支持五百多种协议解析。很难想象如此多的人开发的代码可以很好的融入系统中;并且在系统中加入一个新的协议解析器很简单,一个不了解系统的结构的新手也可以根据留出的接口进行自己的协议开发。这都归功于Ehereal良好的设计结构。事实上由于网络上各种协议种类繁多,各种新的协议层出不穷。一个好的协议分析器必需有很好的可扩展性和结构。这样才能适应网络发展的需要不断加入新的协议解析器。
1 Ethereal的捕包平台
网络分析系统首先依赖于一套捕捉网络数据包的函数库。这套函数库工作在在网络分析系统模块的最底层。作用是从网卡取得数据包或者根据过滤规则取出数据包的子集,再转交给上层分析模块。从协议上说,这套函数库将一个数据包从链路层接收,至少将其还原至传输层以上,以供上层分析。
在Linux系统中, 1992年Lawrence Berkeley Lab的Steven McCanne和Van Jacobson提出了包过滤器的一种的实现,BPF(BSD Packet Filter)。Libpcap是一个基于BPF的开放源码的捕包函数库。现有的大部分Linux捕包系统都是基于这套函数库或者是在它基础上做一些针对性的改进。
在window系统中,意大利人Fulvio Risso和Loris Degioanni提出并实现了Winpcap函数库,作者称之为NPF。由于NPF的主要思想就是来源于BPF,它的设计目标就是为windows系统提供一个功能强大的开发式数据包捕获平台,希望在Linux系统中的网络分析工具经过简单编译以后也可以移植到windows中,因此这两种捕包架构是非常相似的。就实现来说提供的函数调用接口也是一致的。
Ethereal网络分析系统也需要一个底层的抓包平台,在Linux中是采用Libpcap函数库抓包,在windows系统中采用winpcap函数库抓包。
2 层次化的数据包协议分析方法
取得捕包函数捕回的数据包后就需要进行协议分析和协议还原工作了。由于OSI的7层协议模型,协议数据是从上到下封装后发送的。对于协议分析需要从下至上进行。首先对网络层的协议识别后进行组包还原然后脱去网络层协议头。将里面的数据交给传输层分析,这样一直进行下去直到应用层。
Ip
| \
Tcp udp
| \
HTTP TFTP
由于网络协议种类很多,就Ethereal所识别的500多种协议来说,为了使协议和协议间层次关系明显。从而对数据流里的各个层次的协议能够逐层处理。Ethereal系统采用了协议树的方式。上图就是一个简单的协议树。如果协议A的所有数据都是封装在协议B里的,那么这个协议A就是协议B是另外一个协议的儿子节点。我们将最低层的无结构数据流作为根接点。那么具有相同父节点的协议成为兄弟节点。那么这些拥有同样父协议兄弟节点协议如何互相区分了?Ethereal系统采用协议的特征字来识别。每个协议会注册自己的特征字。这些特征字给自己的子节点协议提供可以互相区分开来的标识。比如tcp协议的port字段注册后。 Tcp.port=21就可以认为是ftp协议, 特征字可以是协议规范定义的任何一个字段。比如ip协议就可以定义proto字段为一个特征字。
在Ethereal中注册一个协议解析器首先要指出它的父协议是什么。另外还要指出自己区别于父节点下的兄弟接点协议的特征。比如ftp协议。在Ethereal中他的父接点是tcp协议,它的特征就是tcp协议的port字段为21。
这样当一个端口为21的tcp数据流来到时。首先由tcp协议注册的解析模块处理,处理完之后通过查找协议树找到自己协议下面的子协议,判断应该由那个子协议来执行,找到正确的子协议后,就转交给ftp注册的解析模块处理。这样由根节点开始一层层解析下去。
由于采用了协议树加特征字的设计,这个系统在协议解析上由了很强的扩展性,增加一个协议解析器只需要将解析函数挂到协议树的相应节点上即可。
3 基于插件技术的协议分析器
所谓插件技术,就是在程序的设计开发过程中,把整个应用程序分成宿主程序和插件两个部分,宿主程序与插件能够相互通信,并且,在宿主程序不变的情况下,可以通过增减插件或修改插件来调整应用程序的功能。运用插件技术可以开发出伸缩性良好、便于维护的应用程序。它著名的应用实例有:媒体播放器winamp、微软的网络浏览器ie等。
由于现在网络协议种类繁多,为了可以随时增加新的协议分析器,一般的协议分析器都采用插件技术,这样如果需要对一个新的协议分析只需要开发编写这个协议分析器并调用注册函数在系统注册就可以使用了。通过增加插件使程序有很强的可扩展性,各个功能模块内聚。
在协议分析器中新增加一个协议插件一般需要插件安装或者注册,插件初始化,插件处理3个步骤,下面以Ethereal为例进行分析如何利用插件技术新增加一个协议分析模块。
Ethereal由于采用插件技术,一个新加入开发的程序员开发一种新的协议分析模块的时候不需要了解所有的代码,他只需要写好这个协议模块的函数后,写一个格式为proto_reg_handoff_XXX的函数,在函数内调用注册函数告诉系统在什么时候需要调用这个协议模块。比如
你事先写好了一个名为dissect_myprot的协议解析模块,它是用来解析tcp协议端口为250的数据。可以利用这些语句来将这个解析器注册到系统中
proto_reg_handoff_myprot(void)
{
dissector_handle_t myprot_handle;
myprot_handle = create_dissector_handle(dissect_myprot,
proto_myprot);
dissector_add("tcp.port", 250, myprot_handle);
}
这段代码告诉系统当tcp协议数据流端口为250的时候要调用dissect_myprot这个函数模块。
在Ethereal中有一个脚本专门来发现开发者定义的类式proto_reg_handoff_xxx这样的注册函数名,然后自动生成调用这些注册函数的代码。这样开发者不需要知道自己的注册函数如何被调用的。这样一个新的协议分析模块就加入到系统中了。
由于采用了插件方式,Ethereal良好的结构设计让开发者只需要关系自己开发的协议模块,不需要关心整个系统结构,需要将模块整合进系统只需要写一个注册函数即可,连初始化时调用这个注册函数都由脚本自动完成了。正是因为有很好的体系结构,这个系统才能够开发出如此多的协议解析器。
尽管Ethereal是目前最好的开放源码的网络分析系统,但Ethereal仍然有一些可以改进的地方,一个优秀的网络分析器,尽可能的正确分析出数据协议和高效的处理数据是两个重要的指标。在协议识别方面Ethereal大多采用端口识别,有少量协议采用内容识别。这就让一些非标准端口的协议数据没有正确解析出来。比如ftp协议如果不是21端口的话,Ethereal就无法识别出来,只能作为tcp数据处理。另外对于内容识别式。Ethereal是将所以内容识别的函数组成一张入口表。每次协议数据需要内容识别时,按字母顺序逐个调用表里的每个识别函数。比如对于识别yahoo massanger协议。主要是看数据前几个字节是不是'ymsg'.由于协议名为y开头。所以当识别出协议时已经把所有内容识别函数调用了一遍。这些都是由于Ethereal没有实现tcp协议栈,无法做到流级别的识别。导致在协议识别方面有点缺陷。