数据包网络分析(共9篇)
数据包网络分析 篇1
目前,网络安全问题变得越来越严重,对网络安全的研究也越来越重要。为了对网上的攻击进行有效的预防,需要捕获网络中的数据包,并分析其特征,以应用于网络测试、网络安全的监视、监测网络负载及有效预防网络攻击等。网络数据包捕获及分析系统是为了给企业提供一个更安全的网络环境而设计的。在局域网的服务器上装上系统后,可以简单、快捷的实现网络安全检测,实时报警。
一、 系统研究过程
1、 总体规划
根据系统需求确定系统的总体规划,因为此系统为网络数据包捕获及分析系统,系统主要是对网络上传输的数据包进行操作,主要包括数据包捕获,协议分析,数据存储,内容检索,实时响应等。根据系统需要完成的任务和角色划分系统用例图如图1所示。其中数据包捕获包括数据包的获取,存储,分类管理;协议分析包括对链路层协议、网络层协议、传输层协议和应用层协议分析;数据存储主要指的是文本内容存储;内容检索包括获取用户输入得敏感信息,数据库查询,返回查询结果;实时响应:包括报警,查找出敏感信息具体位置。
2、 设计流程
功能需求分析方面包括文本检索和及时响应,前者包括SMTP协议内容检索、FTP协议内容检索、HTTP协议内容检索,后者主要指的是由于硬件的限制,系统用弹出警告框来代替报警。在进行功能需求分析之后进行系统设计,本研究的总体设计流程如图2所示:
五个模块功能解析如下:
(1)网络数据包捕获模块:主要功能就是从以太网中捕获数据包。
(2)网络协议解析模块:网络协议解析模块对捕获到的数据包进行协议分析,检测出每个数据包的类型和特征。这是此系统的核心部分。
(3)存储模块:存储模块就是把协议分析后的结果存储起来,供事后分析。
(4)检测模块:检测模块就是根据规则来检测入侵特征。
(5)响应模块:响应模块是对检测的结果进行实时响应。
3、 系统总体结构图
根据系统的总体流程图,设计了系统的整体框架图,如图3所示。
4、处理流程设计
系统最终目的是为了让用户,输入自己认为敏感的信息来对应用层协议内容进行检索,如果发现敏感信息进行及时报警。此因下面给出了检索响应这两个模块的详细流程图,如图4所示:
二、 系统各功能模块的分析与设计
1、 数据包捕获模块
Libnids使用了Libpcap(数据包捕获开发包),所以它具有捕获数据包的功能,利用Libnids可以轻松的实现对数据包的捕获,并对其进行分析。因此该模块主要是利用Libpcap捕获数据包。在初始化完毕后,应用程序利用Libpcap的pcap_dispatch()或pcap_loop捕获数据链路层的数据包。
2、 协议分析模块
捕获数据包后,对所有数据包进行分析,从链路层开始分析,然后分析网络层,再分析传输层,最后分析应用层。系统主要是分析应用层协议中的HTTP协议、FTP协议和SMTP协议的内容,并且根据应用层协议的不同,把数据包保存到不同的文本文件中。该模块中利用Libnids提供的TCP数据流重组功能,非常方便的对基于TCP协议的应用层协议进行分析,对他们的操作过程以及传输的数据内容进行分析,获取敏感信息,如账号和密码等。
3、 存储模块
实现数据的存储,在协议分析模块中,已经根据应用层协议的类型把相关数据包保存到文本文件中,此模块就是实现把文本文件的内容保存到数据库中,以备响应模块查询用。
4、 检索模块
根据用户输入的敏感信息,对数据库的文本内容进行检索。该检索模块使用BMGJ算法进行文本内容的匹配。
5、 响应模块
根据用户输入的敏感信息,检索数据库,做出相应的响应。
6、 帮助模块
该模块主要以文档形式提供系统使用说明,应注意事项等。
三、 结束语
入侵检测作为一种积极主动地安全防护技术,受到人们的高度重视,迫切需要具有自主版权的入侵检测产品。网络数据包捕获及分析系统采用自顶向下的分析方法实现了网络安全检测,实时报警的目的,满足了在设计时网络安全管理者提出的内容检索,及时响应的要求。
参考文献
[1]刘文涛,网络安全开发包详解[M].北京:电子工业出版社,2005年1月.
[2]曹学武,易国良,六利军.基于协议分析的邮件安全监控系统实现[J].计算机工程,2005年1月.
[3]赵新辉,李祥.捕获网络数据包的方法[J].计算机应用技术,2004年8月.
数据包网络分析 篇2
一、输入的问题
1、原始套接口可以接收到任何TCP或UDP报文。
2、要想接收到原始套接口,首先要接收的数据包必须有一个完整的、正确的IP头,否则不能通过ip_rcv中的包头检查和检验和验证。
3、在原始套接口接收的数据包过程中,内核会对接收的IP包进行校验和验证,但不会对IP包以后的任何字段进行检测和验证。如,我们创建原始套接口时,所指定的protocol参数为IPPROTO_TCP,内核也不会进行TCP校验和验证,而是直接把IP头中协议字段为TCP的所有数据包都复制一份,提交给该原始套接口。
4、用原始套接口接收到的TCP包都是进行了IP重组以后,TCP排序以前的报文。
5、如果在创建原始套接口时,所指定的protocol参数不为零,(socket的第三个参数),则接收到的数据报的协议字段应该与之匹配。否则该数据报不传递给该套接口。
6、如果此原始套接口上绑定了一个本地IP地址,那么接收到的数据报的目的IP地址应该与该绑定的IP地址相匹配,否则该数据包将不传递到该套接口。
7、如果此原始套接口通过connect指定了一个对方IP地址,那么接收到的数据包的源IP地址应与该以连接地址相匹配,否则该数据包不传递给该套接口。
8、如果一个原始套接口以protocol参数为0的方式创建,并且未调用connect或bind,那么对于内核传递给原始套接口的每一个原始数据报,该套接口都会收到一份拷贝。
9、原始套接口接收不到任何的ARP或RARP协议类型的套接口,因为net_rx_action会把ARP或RARP协议类型的数据包传递给ARP的接收函数类处理,不会传递给IP层的接收函数ip_rcv()。
10、原始套接口并不是可以接收到任何的ICMP类型的数据包,因为有些ICMP类型的数据包在传递给原始套接口之前已经被系统所响应,并不再向上层传递。
11、如果对方的数据包分片了,由于原始套接口的接收是在IP上层,所以会接收到重组以后的原始IP包,
二、输出的问题
1、普通输出通常通过sendto或sendmsg并指定目的IP地址来完成,如果套接口已经连接,也可以调用write、writev或send。
2、如果IP_HDRINCL选项未设置,则内核写的数据起始地址是IP头部之后的第一个字节。因为这种情况下,内核将构造IP头部,并将它安在来自进程数据之前。内核将IPv4头部的协议字段设置成用户在调用socket函数时所给的第三个参数。
3、如果IP_HDRINCL选项已设置,则内核写的数据其实地址是IP头部的第一个字节。用户所提供的数据必须包括IP头部。此时进程构造除了以下两项以外的整个IP头部:IPv4标示字段可以设为0,要求内核设置该值。而且仅当该字段为0时,内核才为其设置,IPv4头部校验和由内核来计算和存储。
4、如果创建原始套接口时指定了协议类型,即第三个参数protocol,那也并不是说只能发该类型的数据包。如,即使将protocol指定为IPPROTO_TCP,也可以发送用户自己组装的UDP报文,不过此时如果IP_HDRINCL选项未设置,那么内核将会在IP头的协议字段指明后面的报文为TCP报文(不过此时却为UDP报文)。等数据包发送到对方TCP层,一般说来会因为找不到合适的TCP套接口接收该数据包而被丢弃。不过该包可以在目标主机的原始套接口上接收到。
5、正如前面所述,任何时候,IP头的校验和都是由内核来设置的。
6、内核任何时候那会都不会对IP包以后的字段进行校验和验证。如,即使我们指定第三个参数protocol为IPPROTO_TCP,在数据发送时内核也不会对进行TCP校验和计算和验证。
7、如果IP_HDRINCL选项已设置,按照常规,我们应该组建自己的IP头,但是即使我们没有组建IP头,用sendto或sendmsg并指定目的IP地址来发送数据是照样可以完成的。但是这样的数据包在目标机上用原始套接口是接收不到的,因为在ip_rcv()中要对IP头进行验证,并且要分析校验和,所以该包会被丢弃,不过在链路层应该能够接收到该数据包。
8、如果设置了IP_HDRINCL选项,并且数据包超长,那么数据会被丢弃,并会返回出错码EMSGSIZE。如果未设置IP_HDRINCL选项,并且数据包超长,那么数据包会被分片。
数据包网络分析 篇3
(上海海事大学 物流工程学院,上海 201306)
0 引 言
在现代海军发展中,测磁与消磁已经成为关系到舰艇生存的重要技术.港口消磁站的建设也已成为海军舰艇基地的重要项目.在港口消磁站测量的信号中除舰艇的磁场外还包含地磁场和其他环境或铁磁物质的信号,因此要进行信号分析降噪,才能准确地得到所需的磁场信号.
在现代地磁测量中,有不少可行的降噪方法在地震电磁检测站得到实际应用[1],其中比较有效的为小波降噪算法.然而在现有的港口消磁站测磁环节研究中,还没有如何降噪的应用算法.
本文在研究小波算法与小波包算法[2]的异同和优点后,对消磁监测站测量的舰船磁场原始信号运用小波包降噪算法进行分析,分离出地磁日变干扰磁场及港口消磁站附近日常作业产生的干扰磁场,从而得到平稳的地磁测量信号.
1 测量实验平台
在港口测磁过程中采用磁通门传感器[3]阵列采集磁场信号.磁通门传感器利用材料的B-H饱和特性进行弱磁场测量,其测量范围在10-11~10-2T,能够有效捕捉极弱磁场的特征信号.在港口测磁过程中,磁通门采用多传感器(皆为三分量传感器)阵列方式,Z轴平行于地磁Z轴方向.
实际测量磁场存在干扰,因此需要进行数据处理滤除干扰磁场.
磁场实测值=被测对象磁场+人为干扰磁场+背景地磁场
人为干扰磁场=港口日常作业的干扰磁场+港口船只出入的信号瞬变干扰磁场
背景地磁场=本地地磁磁场+地磁日变磁场
地磁日变磁场基本可分为地磁每日都存在的地磁静日变化和地磁扰日变化,其中:地磁静日变化为具有周期性的连续磁场变化;地磁扰日变化为无周期性的随机磁场变化,不是恒定值.因此在实际测量中,将背景地磁场中的地磁日变磁场作为干扰量.本地地磁磁场为由地壳以下地核场、地壳场与本地周围固定建筑群的磁场之和,为测量时基本固定的本地环境磁场.因此,实际测量中的干扰磁场为人为干扰磁场与地磁日变磁场之和.
在实际测量中干扰信号一直存在,因此先对无舰船时的环境磁场进行测量和分析.在实际测量中对环境中的地磁日变磁场以及正常运行的港口附近高压电、电机等干扰磁场进行25 h不间断监测.数据由磁通门传感器阵列采集,采样时间自第一天10:40起至次日11:40结束,每分钟采样6次,得到磁通门传感器阵列磁场数据.
2 干扰磁场分析
2.1 地磁日变磁场
地磁日变磁场为一个太阳日中主要由固体地球外部原因引起的、叠加在地球基本磁场之上的各种短期的地磁变化.按照成因不同,变化磁场可分为平静变化和干扰变化两大类.[4]前者的基本成因是电离层在地磁场中运动产生较为稳定的电流体系;后者的基本成因是太阳风与地磁场相互作用,在磁层和电离层中形成各种短暂的电流体系.地球外部的各种电流体系,都能在固体地球内部感应出相应的内部电流体系.每一种地磁变化都是外部电流体系与内部电流体系产生的磁场之和,一般前者约占总和的70%,后者约占30%.静日变化Sq虽然依赖于当地太阳时, 并以一个太阳日为周期, 但它在时空分布特征上是有差异的, 而且纬度不同的地区静日变化规律不同.静日变化的日变曲线在形态上基本一致,白昼起伏大,夜间相对稳定,极大值和极小值主要出现在白天.扰日变化为无规律的随机磁场变化,虽然在地磁日变磁场中仅占小部分,即使在地磁活动十分平静期间,也或多或少地存在扰日变化.图1为测点附近地磁日变曲线示例,数据来源于测点附近地磁监测站公示的地磁日变采样数据,横坐标为测试地点的时间(当地时)轴,且对应的每3 h的Kp指数值均≤2.图中所示的磁场为:在测试地点周围区域存在铁磁性物质,但测试期间无铁磁性物质在附近移动及所在区域无强电供应的情况下测量得到的磁场.由Kp指数可以看出,图中所示测试时段内,测点附近的地磁变化的主要影响因素为静日变化,扰日变化虽然存在但相对较为平静.图中的磁场随时间进行着缓慢、平稳的变化,总体变化趋势具有一定的规律,短时变化为无规律的、幅值≤±10 nT的、随机变化的白噪声.
图1 测点附近地磁日变曲线示例
2.2 港口测磁点附近港口作业产生的干扰磁场
港口测磁点附近各种设施的运作所用的高压电由岸电供应.由港口作业大型机械、岸电供电站、岸电供电线路、港口行车轨道、大地形成电流回路.在港口行车轨道与大地不完全绝缘时,会造成电流部分泄漏.这部分泄漏电流本身会产生磁场且供电电路中电流不平衡会形成磁场.而磁传感器的安装位置离港口只有几公里,因此测量时会受到港口磁场的影响.图2为一组从早上10:40开始测量的25 h三分量磁场数据图,横坐标为采样序列,每分钟采样6次.从图中可以看出,在三分量磁传感器中,在上午10:40至午夜12:00磁场幅值波动强烈,虽然Z分量磁场还是依照日变曲线的变化规律浮动,但是其幅值振荡无规律,其振幅比午夜12:00至早上6:00扩大十几倍,X与Y分量受到附近电磁干扰影响较小.磁场变化特征符合日常港口作业时间特点.因此可以断定,消磁站附近的日常作业产生的电磁干扰是存在且明显的.
(a)X分量磁场
(b)Y分量磁场
(c)Z分量磁场
2.3 消磁站附近港口船只出入瞬变干扰
港口日常作业时,会不时有船只进出港.船只靠近磁传感器时势必会引起磁场的异变,其特征为瞬变、幅值大、时间短,在数据图上表现为一个突变峰值,很容易识别和抑制处理.在本次实验中,临时禁止任何船只进出港口,使港口船只出入引起的瞬变干扰得到完全抑制.
3 小波包降噪
3.1 小波包分析重构
小波包变换由小波变换发展而来,可以视为普通小波函数的线性组合.小波变换从空间(时间)和频率的局部变换中提取信号中有用的信息.[5]小波变换的本质是低通滤波,然而其直接滤除高频信号的特点会使一些有用的高频信号细节丢失.小波包变换在处理信号时同时分解高频与低频部分,因此更具有灵活性.因此,对含噪信号进行小波包变换,对其小波包系数进行阈值操作,然后进行重构,得到的消噪后信号优于小波变换的处理结果[6].
小波包降噪步骤为:信号的小波包分解、确定最佳小波包基、小波包分解系数的阈值量化、小波包信号重构.图3为小波包分解树,其中:S为原信号,f为信号频率,A代表低频段,D代表高频段.由图3可以看出,原信号S可以进行多层分解,直到其分解的小波包能够满足分析需求.第1层分解为尺度参数为1的互不重叠的高频D((fl+fh)/2,fh)与低频A(fl,(fl+fh)/2)两部分,原信号S的完整尺度(fl,fh)被分割.第2层分解得到尺度参数为2的4个频率范围AA(fl, (fl+fh)/4),AD((fl+fh)/4, (fl+fh)/2),DA((fl+fh)/2, 3(fl+fh)/4),DD(3(fl+fh)/4,fh).如果进行n层分解,可以得到尺度参数为n的、2n个节点的小波包分解树.图3中进行的2层分解仅用于演示说明,实际分解层数需按信号计算得到最佳分解树才能确定.
图3 小波包分解树状图
信号以f(c)正交小波分解的公式[7]为
Pj-1f(t)=Pjf(t)+Djf(t)
(1)
(2)
(3)
小波包的重构公式为
(4)
3.2 阈值的选取
阈值如何选择、小波包系数如何进行阈值量化一直是小波包降噪算法核心中的核心,直接关系到信号去噪的品质.一般数据的数组序列中,xi=fi+ei(i=1,2,3,…,n),其中,fi为信号序列部分,ei为高斯噪声序列,且ei与fi互不相关.xi的性质可用它的小波包系数描述.小波包系数反映信号的能量,因此通常将小波包系数看作“能量元”,其系数大小代表其携带能量的多少.[8]噪声中信号信息的小波包系数值一般小于fi小波包系数值.噪声小波“能量元”在经过正交镜像滤波分解后,变成在整个小波包系数轴的均匀分布.[9]因此,可以选择一个阈值,滤除所有等于或小于阈值的小波包系数,保留所有大于阈值的小波包系数,用以重构信号.[10]在选取阈值的过程中,阈值太大不仅会滤除噪声信息而且会滤除有效的原有信号细节部分,使重构得到的信号损失部分特征甚至完全失真;阈值太小会使噪声信号得不到滤除,无法达到预期的降噪效果.[11]由此可见,不同阈值所形成的信噪比截然不同,因此阈值的选取至关重要,需在实验中不断尝试,得到最优阈值后再进行降噪处理.
小波包信号阈值去噪方法通常有:固定阈值、自适应阈值、混合型阈值和最小最大准则阈值.实际工程中,软阈值和硬阈值应用最多.[12]软阈值模型为
(5)
硬阈值模型为
(6)
式中:λ为阈值;ω为原信号节点能量元.
本文采用一种新的阈值函数,并用MATLAB进行新阈值函数下的小波包信号去噪运算[13].
(7)
为衡量上述3种阈值消噪的效果,通常采用信噪比和均方差作为衡量标准.信噪比
(8)
均方差
(9)
式中:I和Id分别为原始信号和消噪后的信号.
表1 3种阈值消噪的θ和ρ
表1列出上述实验中降噪后信号的信噪比θ以及原始信号与消噪后的信号之间的均方差ρ.由表1可以看出,改进方案的降噪效果明显比单纯的软阈值或硬阈值方法好,从而验证改进方案的有效性.
3.3 小波包MATLAB实现
MATLAB小波包程序[14]如下:
>>save mag.mat S;%将地磁数据信号S存储在mag.mat文件中;
>>load mag;%将文件装载到matlab环境中;
>>S=A(1:8860);%将信号的8860个数据给变量S;
>>wpt = wpdec(S,3,‘db1’, ‘user’) ;%使用db1小波包对S进行3层分解;
>>wpt = wpsplt(wpt,[3 0]); %分解小波包节点(3,0);
>>cfs = wpcoef(wpt,[3 0]); %读取小波包(3,0)的系数;
>> s130=wprcoef(wpt,[3,0]); %重构节点(3,0);
…
>> s137=wprcoef(wpt,[3,7]); %重构节点(3,7);
>> subtlot(311);tlot(a1);
上述程序中的S为对每个节点系数设置阈值后得到保留的有用系数.
4 数据处理结果
图4为采用软、硬阈值方法去噪后的Z分量磁场数据.图5为采用新阈值方法去噪后的三分量磁场数据.比较图4和5的Z分量数据可知,新阈值方法比普通软阈值和硬阈值方法降噪效率更好,能得到更好的信噪比.从图5可以看出,滤波后的信号在保持地磁的日变形态基本不变的同时,大幅降低由港口正常作业引起的电磁干扰幅度.图6为理想无干扰Z分量磁场数据图,数据来源于当日地磁站公示的日变磁场查表数据.从图5和6中可以得出,降噪处理后的数据基本符合理想实测数据,说明小波包降噪能在有效降噪的同时,比较完整地保留原始数据中的有效数据.图7为从处理后数据中任意截取的50 min地磁数据图.从图7中可以看出,地磁日变的白噪声可以控制在5 nT之内.因此可以得出结论:小波包降噪算法能够较为有效地抑制人为干扰,并且能对地磁日变干扰磁场起到一定的抑制效果.
(a) 软阈值方法
(b) 硬阈值方法
(a) X分量磁场
(b) Y分量磁场
(c) Z分量磁场
图6 理想状态下的Z分量磁场数据
图7 50 min磁场数据
5 结 论
小波包分解重构算法在实际应用中对港口正常作业所引起的干扰磁场的抑制效果比较明显,对测量舰艇信号,降低由地磁日变磁场、港口正常作业所引起的地磁干扰起到积极作用.不过小波包算法对信号进行降噪处理时计算量较大,具有一定的延迟,如何实现高度实时性还需在以后的研究中继续探索.
参考文献:
[1]刘宗尧. 地磁信号检测系统设计及误差补偿研究[D]. 南京: 南京理工大学, 2011.
[2]李凤阁, 李鹏. 基于小波和小波包的信号消噪方法分析[J]. 山西科技, 2010, 25(4): 70-73.
[3]郭爱煌. 磁通门技术及其应用[J]. 传感器技术, 2000, 19(4): 1-4.
[4]卞光浪, 边刚, 于波, 等. 基于多分辨率分析地磁日变信号去噪方法[C]//中国测绘学会第十八届海洋测绘综合性学术研讨会论文集. 2010: 66-68.
[5]韩朝晖. 利用小波包分析提取信号分量[C]//2006北京地区高校研究生学术交流会——通信与信息技术会议论文集(上). 2006: 582-589.
[6]MALLAT S G. A theory for multiresolution signal decomposition: the wavelet representation[J]. Pattern Anal & Machine Intelligence, IEEE Trans, 1989, 11(7): 674-693.
[7]ZHANG Xuming, XIONG Youlun. Impulse noise removal using directional difference based noise detector and adaptive weighted mean filter[J]. Signal Processing Letters, IEEE, 2009, 16(4): 295-298.
[8]CHUI C K, LIAN J. A study of orthonormal multi-wavelets[J]. Appl Numerical Math, 1996, 20(3): 273-298.
[9]任大男, 任韧. 自适应小波包正交性系统研究[J]. 应用光学, 2010, 31(S): 61-65.
[10]YUAN Jing, HE Zhengjia, ZI Yanyang,etal. Adaptive multiwavelets via two-scale similarity transforms for rotating machinery fault diagnosis[J]. Mech Systems & Signal Processing, 2009, 23(5): 1490-1508.
[11]孙洁娣, 靳世久. 基于小波包能量及高阶谱的特征提取方法[J]. 天津大学学报, 2010, 43(6): 562-566.
[12]鲁怀伟, 杜三山. 一种小波包去噪自适应阈值算法[J]. 兰州铁道学院学报: 自然科学版, 2001, 20(6): 11-15.
[13]曲国庆, 党亚民, 章传银, 等. 小波包消噪方法分析及改进[J]. 大地测量与地球动力学, 2008, 28(4): 102-106.
数据包网络分析 篇4
在计算机网络的日常维护中,我们经常会遇到各种类型的网络故障。排除故障的方法常用的有观察法、隔离法、替代法等。这里介绍的是通过捕获网络数据包并分析的手法对网络故障进行诊断,这种分析方法往往能取得出人意料的良好效果。
1 数据包捕获方式
数据包的捕获方式很多,最常见的利用工具软件实现是协议分析仪。它是针对OSI模型2~7层设计的,能够在2~7层上进行解码,解释450多种网络协议,采用剥洋葱方式,从低层开始,一直到第七层,甚至对ORACLE数据库、SYBASE数据库都可以进行协议分析。协议分析仪有硬件和软件相结合的专门产品,也有纯软件产品。
协议分析仪主要功能如下:
(1) 分析从硬件分析仪中捕捉的数据包,具有完整的七层包捕捉、过滤和解码能力。
(2) 实时监测网络利用率和误码率、帧大小分布、协议分布、最多发送者/接收者、对话矩阵、VLAN 流量分析、应用程序响应时间分析等。
(3) 智能专家故障分析、诊断功能在监测实时流量时自动发现错误、快速指出问题所在并给出修改建议。
(4) 支持本地和远程网络分析。
(5) 支持特殊的协议:Extreme EDP、ESRP 以及 Cisco CDP 和 VTP等。
(6) 停止并保存捕捉会话、发送一个 SNMP 陷阱、发送 Email 或寻呼通知等。
(7) 在日志文件中保存告警消息、启动一个应用程序和过滤等。
(8) 协议分析仪上的功能延展就是加入网管功能、自动网络信息搜集功能等。
协议分析仪是一种复杂的测试工具。它要求操作人员具有较高的技术水平,否则无法有效使用。它能检测很多复杂的网络故障,如:服务器响应慢,TCP/IP 帧校验系列错误,TCP/IP 快速复传,TCP/IP 窗口冻结,TCP/IP 确认超时和 TCP/IP SYN 攻击非法源MAC地址,广播/多播风暴和物理层错误等。面对网络问题,用户必须清楚自己需要仪器提供哪种类型信息,并知道如何利用这些信息解决问题。
协议分析仪所具有的对数据包捕捉和解码能力使得它在解决复杂、罕见的问题时非常有效,故特别适用于其它便携式测试工具无效的场合,如应用软件的错误查找。另外,由于不同厂商协议分析仪所能提供数据层次的差别导致帮助解决网络问题的能力也有差别。
2 数据包捕获的工作原理
通常在同一个网段的所有网络接口都有访问在物理媒体上传输的所有数据的能力, 而每个网络接口都还应该有一个硬件地址, 该硬件地址不同于网络中存在的其他网络接口的硬件地址, 同时, 每个网络还有广播地址(代表所有的接口地址)。在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧: 帧的目标区域具有和本地网络接口相匹配的硬件地址以及帧的目标区域具有“广播地址”。
在接收到上面两种情况的数据包时, 网卡通过CPU产生一个硬件中断, 该中断能引起操作系统注意, 然后将帧中所包含的数据传送给系统进一步处理。而Sniffer 就是一种能将本地网卡状态设成混杂(Promiscuous)模式状态的工具软件, 当网卡处于这种“混杂”方式时, 该网卡具备对遭遇到的每一个帧都产生一个硬件中断,以便提醒操作系统处理流经该物理媒体上的每一个报文包(绝大多数的网卡具备Promiscuous方式的能力)。
3 应用数据包分析排除故障实例
3.1 交换机端口锁死
(1) 故障现象
交换机的某一端口联接了一个HUB,HUB上面有DNS及WEB服务器。在没有任何征兆的情况下,交换机的这一端口突然出现故障,端口上的所有设备不能联网。
(2) 故障检查
① 换交换机另一个好的端口,约几分钟后重复上述故障。
② 怀疑连接交换机的HUB有物理故障,换了一个好的以后,过一段时间后故障仍然存在,可以确定不是HUB故障引起的。
③ 关掉交换机电源,重新加电后,原来出故障的端口恢复正常,但过一段时间后故障再次出现。由此判断端口故障很可能是因某种原因锁死,并非烧坏。依此,初步判断故障是由DNS或WEB服务器的硬件或软件异常引起的。
④ 使用Sniffer协议分析仪接入该网段,测试后发现,DNS通过HUB接入一个好的交换机端口后,很快产生了几个广播风暴,之后交换机的端口就锁死。广播风暴是造成交换机端口锁死的直接原因。
⑤ 通过解读捕捉到的数据包内容,可以看到,广播风暴产生的原因,是本地DNS(主)服务器,与一台远程DNS(从)服务器之间产生了大量通信,通信内容是远程DNS服务器向本地DNS服务器查询一个主机的名字解析,而本地DNS服务器没有设置该主机所在域的DNS服务器地址,从而造成异常的通信过程。
从协议分析仪还可以看出,在1秒钟内,2台DNS之间有1155个这样的包来回,这种数据包产生了一个广播风暴,造成了交换机端口锁死。
(3) 故障排除
将www.wlgc.net所在域的DNS服务器的地址定义在本地DNS上,故障排除。
在这个例子中,远程DNS向本地DNS查询www.wlgc.net的地址解释,本地DNS答复找不到以后,理论上远程DNS不应再发出查询请示,但由于软件BUG的问题,造成了DNS系统异常,产生了一个广播风暴,使交换机出现了故障。
3.2 广域网传输极慢
(1) 故障现象
在64Kbps的DDN线路上,正常情况下Ping一个远端的IP,回包时间从三十几毫秒到几百毫秒。有一次回包时间达到3000~5000毫秒之间,远程访问速度极慢。
(2) 故障检查
按经验,这种情况是由于DDN线路有大文件在传输的缘故。将Sniffer协议分析仪接入广域口,可以看到上行带宽被占用了50%,下行带宽被占用了近100%。再分析捕捉到的包内容,发现大部分的包的交换是在地址192.128.96.23和192.3.54.133之间进行,协议主要是HTTP。从一台PC浏览192.3.54.133,发现是一个个人网站,上面有大量游戏程序,192.128.96.23用户正是使用了NetAnts在该网页上下载大量的游戏程序,造成了线路堵塞。
(3) 故障排除
在路由器上用访问控制列表将该个人游戏网站过滤,禁止任何用户通过路由器对该网站进行HTTP访问,通信恢复正常。
3.3 局域网广播风暴故障
(1) 故障现象
局域网任意两台主机之间互相PING时,掉包非常严重,访问各种服务器非常缓慢。
(2) 故障检查及排除
① 查看局域网中心交换机的CPU使用率,竟高达99%(平时<10%),说明其负载非常重。
② 将Sniffer接入网络中,发现平均的带宽利用率达20%(平时<5%),说明网络的的数据流量非常大。
③ 什么原因造成了如此巨大的流量?通过Sniffer捕捉数据包分析,可以明显看到有一台主机发出大量的IPX的数据包,每秒大约1000个包(如下),这显然是不正常的。
651013.00E04C393C2E 70001600.002E0C00235F 23l BROWSER:Announce Host HGF
651013.00E04C393C2E 70001600.002E0C00235F 23l BROWSER:Announce Host HGF
651013.00E04C393C2E 70001600.002E0C00235F 23l BROWSER:Announce Host HGF
④ 该主机为何会发出IPX数据包呢?对数据包的详细解码发现,该主机发出的都是SMB(ServerMessageBlock)协议的数据包,数据包的源地址和目的地址都相同,且为IPX地址,数据包的内容是不断地向网络宣告该计算机名(“HGF”)。SMB协议用于实现局域网中计算机之间文档、打印设备和其他计算机资源的共享,它可以用在TCP/IP协议之上,也可以用在IPX和NetBEUI之上。在SMB协议中,计算机为了访问网络资源,就需要了解网络上存在的资源列表,这个机制称为浏览,维护网络中当前资源列表的任务由网络上的几个特殊计算机完成的,这些计算机被称为Browser。SMB协议的Browser通过广播方式了解当前的网络资源情况。由此判断,该主机可能有基于IPX协议的一些应用,且被当作Browser。
⑤ 查找到主机,发现只是一台用于办公,没有任何复杂的应用和程序。但在网络协议处发现安装了“IPX/SPX/NetBIOS兼容传输协议”,该协议的错误配置使得主机被当作SMB协议中的Browser,并不断向外发出大量的广播包,导致整个局域网的拥塞。
⑥ 卸载该主机的“IPX/SPX/NetBIOS兼容传输协议”,经20多分钟后(广播包在网络中会存在一定时间),局域网恢复正常。
4 结束语
在网络故障排除过程中,我们发现不仅协议的错误配置会造成网络无法使用,应用程序设置不当同样会造成严重后果,如:一些使用组播技术的应用程序配置不当也会造成整个网络的广播风暴。排除这些故障,只要将Sniffer接入网络中,问题基本一目了然。
从上面的例子可以看出,数据包分析诊断网络故障,往往是传统的技术手段无法做到的。
摘要:网络故障种类繁多,诊断方法也是多种多样。介绍了一种通过捕获网络数据包,并对其进行分析来排除一些复杂型的网络故障的方法,列举了相应的实例。
关键词:数据包捕获,数据包分析,复杂型网络故障,网络故障,故障诊断
参考文献
[1]Greg Tomsho.网络维护和故障诊断指南[M].北京:清华大学出版,2003.
[2]Robert J shimonski.网络优化及故障检修[M].北京:电子工业出版社,2004.
[3]许源,廖凯炜.利用协议分析仪进行网络故障诊断[J].广东公安科技,2003(3):42-47.
[4]张业陵,王绍棣.网络性能测试工具浅析[J].计算机工程与应用,2002,21:179-180,204.
数据包网络分析 篇5
1 诊断方案
设备间的通信数据包, 可通过数据流经的网元节点进行采集, 然而从网络节点进行采集, 由于流经节点的数据量庞大, 数据采集和分析难度大, 且对系统性能要求高。安卓是一个以Linux为基础的开源移动设备操作系统。它提供了一种在终端上采集监听数据流的方法。这种方式采集到的数据流少, 有效降低分析问题难度, 适用于分析接入不受终端使用者控制的无线网络环境 (如3G/4G等环境) 的问题。
1.1 数据包采集
安卓终端进行数据包采集需要获取系统ROOT权限, 安装抓包工具tcpdump及调试工具adb。采集时, 终端通过USB调试模式接入电脑, 执行指令进行数据包采集, 运行安卓终端上的应用软件产生网络数据流, 将抓包结果保存至数据文件供后续分析。
1.2 数据包分析
数据包分析需要对业务及其所使用的协议有深入理解, 并结合实践工作经验, 进行问题挖掘和定位。TCP/IP是当前Internet最基本的协议, 它是数据包分析的理论基础。通过数据包分析对终端及服务器之前的数据通信包进行解析, 分析问题出现的IP地址, 从而挖掘出问题节点。
2 案例分析
移动应用商场 (Mobile Market, 以下简称MM) 是安卓手机应用下载商店, 本案例针对MM下载应用软件的问题进行分析, 介绍如何通过数据包分析进行问题定位及故障诊断。
2.1 问题描述
用户反馈在广州4G环境MM下载软件速率为1mbps, 而同终端同环境下竞品的下载速率可达2~3mbps。
2.2 问题分析
分析同一手机下MM与竞品的对比, 可以排除手机及无线网络的原因, 缩小问题范围集中到MM手机应用及服务器之间的通信交互上。因此通过在手机终端上对MM下载过程进行抓包分析。
在对数据包进行分析前, 需要了解终端下载应用的流程及涉及的网元。一个典型的下载流程可简化为手机终端应用软件 (MM) 通过网络 (4G) 与服务器 (内容提供商) 建立通信机制, 采用网络协议 (HTTP) 进行数据传输。在实际应用过程, 为了提升下载速度, 服务器端会通过内容分发网络 (Content Delivery Network, 以下简称CDN) 进行扩展, 满足终端用户就近接入及提速的需求。同时, 运营商通过引入本地缓存来达到内容加速的目的。因此实际下载过程经过运营商及内容提供商的扩展及优化, 复杂度直线上升, 给问题和故障定位带来了不确定性。针对这种不确定性, 若从中间网元入手, 需要排查的网元包括运营商DNS、运营商缓存服务器、CDN提供商的边缘服务器、MM服务器, 涉及范围广且排查效率低。而从手机终端采用抓包的方式, 可迅速准确定位问题涉及的网元, 从而大大提升排查问题的效率。
问题排查步骤:
(1) MM进行下载测试, 安卓手机通过tcpdump进行数据包采集, 获取下载过程的完整的数据包; (2) 使用包分析软件Wireshark对抓取的网络数据包进行分析, 结合协议迅速定位到DNS请求和响应包。通过这个包获取终端使用的DNS服务器IP地址、DNS请求的域名 (本例为apk.mmarket.com) 及响应IP地址; (3) 通过DNS服务器返回的IP地址, 继续寻找手机下一步访问的具体服务器IP, 根据IP地址可判断本次访问, 终端是与运营商缓存服务器还是与CDN提供商边缘服务器进行通信 (本例apk.mmarket.com的域名经DNS解析返回了北京的CDN边缘节点地址, 而实际上广东本地有CDN边缘节点, 这个指向不符合就近接入的原则) ; (4) 通过分析包中客户端与服务器间TCP/IP通信过程, 进一步挖掘通信过程的速度影响因素 (本例中由于广州的用户使用了北京的CDN节点, 存在着跨地域的访问, 不但增加了不必要的骨干网传输负荷, 当骨干网繁忙时必然导致传输速度有所下降) ; (5) 经过包分析, 锁定问题出现在DNS服务器上, 于是针对DNS服务器的请求策略, 调整DNS配置, 使域名apk.mmarket.com的解析结果返回广东本地CDN节点, 问题得到解决, MM下载速度明显提升。
2.3 小结
本案例对安卓手机应用在4G下载速度慢的问题, 通过基于数据包的分析手段, 快速定位到问题的网元。案例分析和排查过程, 对类似的问题提供一种借鉴思路。
3 结语
本文介绍基于数据包分析的网络故障诊断的方法和思路, 同时结合一个具体的案列, 探讨了包分析的步骤和要点。实践证明, 在复杂网络环境下, 数据包分析已经成为一种重要的问题分析和排查手段。这种方法大大提升了维护人员对网络故障诊断和定位的准确性, 有效缩短系统排障时间。
摘要:安卓应用软件网络故障由于其接入的网络环境复杂, 往往故障定位困难, 排查难度大, 给网络及软件维护人员带来极大的挑战。本文介绍了一种基于数据包分析的方法来进行安卓应用软件网络故障诊断, 并结合案例详细探讨了诊断的手段及问题的定位步骤。实践证明此方法大大提升效率, 取得较好的实践效果, 可作为类似的问题的排障思路。
关键词:数据包分析,安卓应用软件
参考文献
[1]Wireshark.www.wireshark.org.
数据包网络分析 篇6
1 网络流量分析技术的应用
当前社会环境对通信网络的要求越来越高, 尤其是在工业环境中更是如此。数据的传输不仅仅在准确率方面有着极高要求, 同时在可靠性以及实时性等方面的要求也呈现出显著的攀升。与此同时另一个方面, 网络的融合, 直接导致IP流量成为网络管理的重要基础, 同时也是网络环境恶意攻击的重要目标。在这样的背景之下, 通过对于IP数据包展开网络流量的分析, 能够有效帮助网络管理工作人员发现多种恶意攻击, 同时支持对攻击源进行追溯和定位, 进一步对网络环境以及其中的设备和终端展开有效保护, 此种工作方式对于当前网络保护, 尤其是局域网的保护有着毋庸置疑的积极价值。
在实际工作中, 网络流量分析技术的应用体现在多个细节之中。首先, 流量分析能够为网络出口互联链路的设置提供良好的支持性信息, 从而实现设置方面的优化。通过流量分析, 可以更为深入地获取到局域网环境内部用户数据传输需求, 以及网络边界上数据的交换状况, 从而合理选择链路设置以及与运营商的互联方式, 优化费用和流量使用。其次, 流量分析技术能够帮助网络管理工作人员更为深入地掌握网络状况。这不仅仅意味着能够更为客观地实现对于分支网络的成本和价值的评价, 了解网络环境中不同细节对于带宽的占用情况, 优化网络运营成本, 还意味着能够有效发现网络异常通信, 尤其是对于防范分布式拒绝服务 (DDo S, Distributed Denial of Service) 攻击以及大规模蠕虫发作有着积极价值。最后, 流量分析技术对于识别局域网环境内部组织工作特征, 和不同数据节点的传输行为同样发挥着重要的支持作用。通过网络流量分析工作的展开, 能够进一步为基于数据生命周期的识别提供依据, 同时从侧面提供必要证据用于面向工作流程的网络环境优化, 甚至于在某些特殊情况之下, 实现工作流程自身的优化也会利用到相关数据。
2 基于IP包流量分析的研究
鉴于IP包流量分析对于通信网络自身优化工作极为重要的价值, 相关领域中一直都将其列为关注的重点对待。实际工作中, IP包流量分析的主要方法是通过实时连续地采集网络数据并对其进行统计, 计算得到主要成分性能指标, 结合网络流量的原理, 通过统计出的性能指数观察网络状态, 分析出网络流量变化的趋势, 找出影响网络性能的因素。
在实际的网络数据传输过程中, 用户需求的满足需要网络相关设备完成多个动作才能实现, 其中包括网络对于用户主机相关信息, 诸如IP地址、MAC地址、主机名以及子网掩码等相关信息的获取, 并且还需要对流入流出网卡的数据包进行检测获取流量数据, 除此以外, 网络还需要对数据包进行捕获和解析, 获取到诸如源地址、源端口、目的地址、目的端口、数据包的协议类型、数据包大小以及数据等相关信息在内的所有数据。因此在进行流量分析的过程中, 这些数据都可以作为重要的基础数据加以参考和统计。
就目前的状况而言, 一个相对成熟的IP数据包流量分析系统, 从功能上应当包括三个方面, 即基本信息的获取和处理、网络流量监控以及IP数据包解析功能。其中基本信息的获取和统计, 包括了对于数据包发送端的相关数据统计。这一类的数据统计用于实现网络环境中不同主机的身份确定, 对于局域网环境下的流量分析而言, 这一环节的任务用以实现对于数据流的身份识别。
而网络流量监控职能, 则需要用于实现面向局域网环境中的网络流量进行监控并且实现统计。此种功能的本质在于对流入和流出网卡的数据包进行检测, 考察单位时间内通过的字节数, 借以实现对于网络环境中整体流量的估计。相关的管理人员则可以通过这些数据来对网络环境中总体流量的变化进行统计和估算, 并且进一步对相关参数进行优化, 考察网络环境中是否存在异常流量。同时对于不同的用户端主机而言, 也可以利用此种功能实现对于自身网络流量使用的优化, 并且实现对于自身主机健康状况的一个侧面判断。
最后, IP数据包解析功能主要实现对于传输过程中数据包的来源和目标进行考察和统计, 同时对相关数据包自身的大小以及协议等状况进行记录。从根本上看, IP数据包解析功能的本质在于网络嗅探器以及相关技术的成熟。实际工作中, 可以利用网络嗅探器将网卡设置成为混杂模式, 并可实现对网络上传输的数据包的捕获与分析。而从安全的角度看, 网络嗅探器能够进一步实现面向传输过程中的数据包实现侦测, 分析其传输行为, 从而帮助实现整体网络环境的安全。
3 结论
基于IP数据包的流量分析, 对于整个局域网环境正常发展的各个方面都有积极价值。网络结构在投入使用之后, 必然会从客观上要求与组织环境内部的工作体系一同成长, 而只有对通信特征有一个准确的判断, 才能确定未来的发展方向, 同时也是当前网络容量优化利用的根本。
参考文献
[1]周小勇.基于数据流的实时网络流量分析系统设计与实现[J].计算机应用研究, 2007 (10) :295-297.
数据包网络分析 篇7
传统的网络数据捕获大都使用如:Windows SDK方法、套接字方法等, 这些方法的缺点是与操作系统类型和版本密切相关, 使用这些方法开发的软件通用性不强;且原始套接字操作复杂, 只能捕获到IP层的数据包, 不能捕获数据链路层的信息, 特别是不能对ARP数据包进行处理。相比之下Win Pcap提供了一组功能强大且与操作系统和适配器无关的函数, 能捕获正在网络上传输的原始数据包, 可以获得原始MAC帧的拷贝, 并且Win Pcap具有两级缓存机制, 几乎不可能出现丢包的情况;在网络数据的捕获和分析方面Win Pcap有很大的优势。
1 Win Pcap概述
1.1 Win Pcap简介
Win Pcap是Politecnico di Torino的Net Group小组开发的[2]基于Win32平台的数据包捕获和网络分析的基础构架, 从UNIX下的Libpcap库移植而来, 用于用户层次的数据包捕获工作, 由一系列开源的网络数据包捕获函数构成。它为底层网络监控编程提供了一个易于移植的应用框架。Win Pcap库和Libpcap一样, 采用内核过滤机制, 并且只支持BPF (Ber Keley分帧过滤器, Win Pcap下称为NPF[3]) 接口的内核过滤。如果主机上没有BPF机制则所有的效据包都必须读取到用户空间后, 才能在Win Pcap库中进行过滤处理, 这样就会增加额外的处理负担, 导致性能的下降。目前市面上有不少软件是用Win Pcap开发[4]的, 其中比较著名的包括Ethereal[5]和Win Dump, 这两者都是免费的网络协议分析软件。
1.2 Win Pcap内部基本结构
Win Pcap主要由三个模块构成[6], 包括内核级的数据包监听设备驱动程序、低级动态链接库 (Packet.dl1) 和高级系统无关库 (Wpcap.d11) , 其基本结构如图1所示。
Win Pcap三个模块的作用:
第一个模块NPF (Netgroup Packet Filter) , 是一个虚拟设备驱动程序文件, 工作在网卡驱动的上面, 是Win Pcap架构的核心。它的功能是过滤数据包, 并把这些数据包原封不动地传给用户态模块。
第二个模块Packet.dll是一个用户级动态链接库, 为Win32平台提供了一个公共的接口, 不同版本的Windows系统都有自己的内核模块和用户层模块。Packet.dll直接映射了内核的调用, 运行在用户层, 把应用程序和数据包监听设备驱动程序隔离开, 使应用程序可以不加修改地在不同版本的Windows系统上运行。
第三个模块Wpcap.dll[7]也是一个用户级动态连接库, 工作在Packet.dll之上, 和应用程序链接在一起, 使用下层Packet.dll提供的服务, 向应用程序提供完善的监听接口和更加友好、功能更加强大的函数调用。Wpcap.dll模块与Unix系统下的BSD截获架构提供的Libpcap库完全兼容。它提供了一组功能强大而且跨平台的函数, 利用这些函数, 可以不去关心适配器和操作系统的类型。
1.3 Win Pcap的两级缓存机制
Win Pcap提供两级缓存机制[7], 分别是内核级缓存和用户级缓存。NPF捕获到的数据报文首先在内核中缓存下来, 等到缓存满或超时后再一起拷贝到用户级缓存, 以减少CPU在内核级和用户级之间进行上下文切换的次数, 提高效率。同时Win Pcap提供设置内核级缓存和用户级缓存的API函数, 以满足不同应用的需求。内核级缓存的大小默认为1Mbit, 可用pcap_setbuff () 函数进行修改;用户级缓存默认大小为256kbit, 在Wpcap.dll中必须通过修改pcap_open_live () 函数的源代码, 然后重新编译才能调整用户级缓存的大小, 但是在Packet.dll中直接通过Packet Init Packet () 函数就可以调整用户级缓存的大小。具有两级缓存机制, Win Pcap在数据的捕获过程中就能有效的降低丢包的几率, 使Win Pcap捕获所有的数据包成为可能。
2 基于Win Pcap捕获数据包的原理
2.1网络数据包捕获[8]的机制
共享式以太网采用的是广播信道, 也就是说每台主机所发出的报文都会被整个网络内的所有主机接收到。在一个实际网络的系统中, 接收主机对帧的处理是根据网卡的工作模式来实现的。一般网卡具有以下4种工作模式:广播模式、多播模式、直播模式和混杂模式 (监听模式) 。网卡缺省的工作模式是工作在广播和直播模式下的, 即只能接收发送给自己的和广播的帧。
网络数据的收发由网络适配器 (网卡) 完成, 网卡接收到传输来的数据帧, 由网卡内的数据处理程序对接收数据帧的目的MAC地址进行判断, 若等于自己的MAC地址或是广播MAC地址, 则提交给上层处理程序, 否则丢弃此数据包。当网卡处于混杂模式时, 它不作任何判断直接把接收到的所有帧交给上层处理程序。
数据包捕获作为一种网络通讯程序, 也是通过对网卡的编程来实现网络通讯。因此, 网络数据包捕获的基本原理是让网卡接收一切它所能接收的数据。
2.2 基于Win Pcap捕获数据的机理
运用以太网数据捕获的原理使得信息捕获系统能够拦截到我们所要的信息, 这是捕获数据包的物理基础。
在网络数据包的捕获过程中, 首先, 数据包捕获系统必须绕过操作系统的协议栈来访问在网络上传输的原始数据包, 这就要求一部分程序要运行在操作系统核心内部, 直接与网络接口驱动交互。这个部分是系统依赖的, 在Win Pcap的解决方案里它是由内核级的数据包监听设备驱动程序NPF实现的。Win Pcap开发小组针对不同版本的Windows操作系统提供了不同的驱动。这些驱动不仅提供了基本的特性, 例如抓包和injection;还有更高级的特性, 例如可编程的过滤器系统和监视引擎等。
其次, 数据包捕获系统必须有用户级的程序接口, 通过这些接口, 用户程序可以利用内核驱动提供的高级特性。在Win Pcap的解决方案中是由两个不同的库:Packet.dll和Wpcap.dll库来实现的。Win Pcap的优势在于提供了一套标准的抓包接口与libpcap兼容, 可使得原来许多UNIX平台下的网络分析工具快速移植过来便于开发各种网络分析工具, 充分考虑了各种性能和效率的优化, 包括对于NPF内核层次上的过滤器支持, 支持内核态的统计模式, 提供了发送数据包的能力。前者提供了一个底层API, 伴随着一个独立于Windows操作系统的编程接口, 这些API可以直接用来访问驱动的函数;后者导出了一组更强大的与libpcap一致的高层抓包函数库 (capture primitives) 。这些函数使得Win Pcap在数据包的捕获过程中可以以一种与网络硬件和操作系统无关的方式进行。
3 基于Win Pcap捕获数据包的过程
网络监控技术的关键在于监听网络数据流, 并将收到的数据包经过重组、分析成为用户可见的应用层信息。在利用Win Pcap捕获分析网络数据时, 主要是调用Packet.dll和Wpcap.dll中提供的API函数进行操作。以下是基于Win Pcap的网络数据包捕获流程及相应的Win Pcap库函数, 如图2所示。
3.1 获得网络驱动列表
利用Win Pcap捕获数据包的第一步是要获得本地的网络适配器 (网卡) 列表。Win Pcap提供Pcap_findalldevs () 和Pcap_findalldev_ex () 这两个函数来实现些功能, 这两个API函数都返回一个pcap_if结构列表, 列表的每项内容都含有全面的网卡信息, 尤其是字段名字和含有名字的描述以及有关驱动器的易读信息。同样, Win Pcap也提供其他的高级信息, 特别是pcap_findalldevs () 这个函数返回的每个pcap_if结构体都同包含一个pcap_addr结构的列表, 它包含:一个地址列表, 一个掩码列表, 一个广播地址列表和一个目的地址列表。
在C++中编程实现的代码如下:
3.2 打开网卡捕获数据包
获得网卡的信息之后, 下一步, 就是打开网卡并准备捕获数据包, 使用函数Pcap_open () 或者Pcap_open_line () 。函数有三个参数snaplen、promisc、to_ms。snaplen用于指定要捕获数据包的长度, 最大为65535, 如果设定一个值, 则捕获到大于这个设定值的数据时, 后面的数据会被截断掉。Promisc表示是否把网卡设置为混杂模式, 如果是1表示设为混杂模式, 在通常情况下网卡只接受发往它的数据包而忽略发往其他主机的数据包。但网卡处于混杂模式时它将接收所有的流经它的数据包, 这就意味着在共享介质的情况下我们可以捕获到其它主机的数据包;大部分的数据包捕获程序都将混杂模式设为默认。to_ms参数指定读数据的超时控制, 超时以毫秒计算, 当在超时时间内网卡上没有数据到来时对网卡的读操作将返回。
在C++中编程实现代码如下:
3.3 数据包的过滤
如果想捕获特定的网络数据包, 就需要使用过滤规则, Win Pcap最强大的功能之一就是对数据包的过滤。Win Pcap使用的过滤规则兼容Tcpdump的过滤规则, 它提供一种高效的方法来捕获网络数据包的某些数据, 且常和系统的捕获机制相集成。函数Pcap_compile () 和Pcap_setfilter () 用来实现过滤数据的功能。Pcap_compile () 来编译一个过滤设备, 它通过一个高层的boolean型变量和字串产生一系列的能够被底层驱动所解释的二进制编码。boolean表示语法能够在这个文件的过滤表示语法中找到。pcap_setfilter () 用来联系一个在内核驱动上过滤的过滤器, 这时所有网络数据包都将流经过滤器, 并拷贝到应用程序中。
在C++中编程实现代码如下:
3.4 进行数据包捕获
一旦网卡被打开, 就可以调用Pcap_next () , Pacp_next_ex () 或Pcap_loop () 进行数据包的捕获, 这几个函数的功能十分相似。不同的是Pcap_next () 和Pacp_next_ex () 表示捕获一个可用数据包就返回;而Pcap_loop () 表示捕获多个数据包, 可以循环捕获数据包, 直到出现错误为止。它们各有用途, 最多最常用的是Pcap_loop () , 它可以循环捕获数据包。这三个函数都有返回的参数, Pcap_next () 返回一个指向Pcap_pkthdr结构的指针。另一个具有相似的功能但更加强大的函数Pcap_next_ex () , 不过它只在win32环境下运行, 因为他不是原始的Libpcap API中的一部分。Pcap_loop () 函数同样返回一个指向Pcap_pkthdr结构的指针。
3.5 Win Pcap捕获数据包结束
得到捕获的数据包后, Win Pcap调用pcap_dump () 将数据存储到文件;解析数据包由回调函数packet_handler () 来实现。最后Win Pcap通过使用Pcap_close () 函数来关闭相关文件并释放对应资源。
4 结束语
数据包捕获技术是网络监管的关键技术, Win Pcap系统是一个功能强大的用于网络数据获取的开发包, 它直接和网卡打交道, 获取数据链层的数据, 能捕获数据链路层的所有数据包。Win Pcap在Win32平台的高性能网络捕包封包过滤应用中, 已经被证明是网络捕包一个成功的选择, 为windows平台下的网络安全应用提供了方便高效的开发手段。期望本文的探讨能给相关领域感兴趣的技术人员一点帮助。
摘要:WinPcap[1]系统是一个功能强大的用于网络数据获取的开发包, 为程序员提供了一套标准的网络数据包捕获接口, 它直接作用于网卡, 获取数据链路层的数据, 能捕获数据链路层的所有数据包。该文概述了WinPcap的内部结构, 简要介绍了WinPcap捕获数据包的实现原理, 详细分析了实现WinPcap捕获数据包的过程。
关键词:WinPcap,数据包捕获,NPF,Libpcap
参考文献
[1]Fulvio Bisso, Lofts Degiarmi.Development of a11 Architecture for Packet Capture and Network Trafic Analysis[DB/OL].http://netgroup-serv.polito.it/WinPcap.
[2]胡晓元, 史涪山.WinPcap包截获系统的分析及其应用[J].计算机工程, 2005, 31 (2) :96-98.
[3]Risso.F, Degioanni.L.An Architecture for Higt Performance Network Analysis.Computer and Communications, 2001.Proceedings.sixthIEEE Symposium on, 2001.7 (5) :686-693
[4]Richrd Blum.网络性能开源工具包[M].梁金昆, 译.北京:清华大学出版社, 2005, (35) .
[5]Etheral-Interactively dump and analyze network traffic[DB/OL].http://www.ethereal.com/docs/man-pages/ethereal.1.html, 2006.
[6]陈辉, 陶洋.基于WinPcap实现对ARP欺编的检测和恢复[J].计算机应用, 2004, 24 (10) :67-68.
[7]The WinPcap Team.WinPcap internals[EB/OL].http://www.WinPcap.org/docs/docs31/html/group-interrials.html, 2006-06-10.
一种网络数据包的智能分类方法 篇8
无论在计算机网络实验室, 还是在家中, 只要有网络的地方, 未成年人总是经受不住网络游戏的诱惑, 现在的网络游戏运营商虽然推出了网络游戏防沉溺系统, 但是并没能够杜绝该现象的存在。网游防沉溺系统只在服务器端根据客户端联机时间的长短限制用户, 但可以有各种方法逃避监管。如果能在客户端或者网络设备上判断包的类别, 然后采取相应的措施, 比如丢包。可以阻止用户沉溺于游戏, 但又不影响其正常上网。
1数据包的采集和划分
网卡有4种接收模式[1]。广播模式:网卡能接收网络中的广播包;组播模式:网卡能接收网络中的组播包;直接方模式:只有目的网卡才能接收到数据;混杂模式:能接收通过它的一切数据。采用混杂模式, 每隔一定时间接收通过它的所有数据包, 为包划分和分类做准备。
前面接收到的数据包是杂乱无规律的, 先进行初步划分。
过滤:去除原地址和目的地址都不包含本机地址的数据包。
划分规则:按照接收的先后顺序把接收到的原地址和发出去的目的地址相同的包划分到一起。
2样本特征向量——地址偶对和端口偶对
数据包分类正确与否在很大程度上取决于特征向量的选择。在没有其它先验知识的这种数据包模式识别中, 特征向量的选择是困难的。网络游戏的实质是互动, 而互动的控制则由服务器和客户端协同完成。网络游戏中角色的各种属性及重要资料都存放在服务器上, 在客户端只是显示角色的状态。客户端向服务器发出某些请求, 服务器会按照既定的程序把相关的信息反馈给客户端。服务器和客户端不断地互换数据包交换控制和状态信息, 使游戏得以持续进行。交换信息的数据包会成对地出现, 也即原地址为服务器地址 (目的地址为本机地址) 与原地址为本机地址 (目的地址为游戏服务器地址) 的数据包基本成对出现, 其它网络行为产生的包不明显具有该特点。把相邻两个原地址和目的地址交换的包称为一个地址偶对, 相等数量的包中, 网络游戏包的地址偶对数较大。这一特征能区分大多数不同类型的包, 但是当网速很慢的时候下载资料包和游戏包分类的正确率就比较低, 为此, 找到了另外一个特征:端口偶对。若相邻两个包的源端口或目的端口相等, 把这两个包叫做一个端口偶对, 相等数量的游戏包中的端口偶对数较大。统计这两类偶对的时候, 包都不能重复统计。
2.1地址偶对的线性拟合
令xi=50 (i+1) (i=0, 1, 2, …, m) 为收到的包个数, yi (i=0, 1, 2, …, m) 为收到的包的地址偶对数, 统计分析筛选后的数据, 得到若干数据点 (xi, yi) (i=0, 1, 2, …, m) , 求拟合函数P (x) , 使误差ri=P (xi) -yi的平方和最小, 即
设P (x) =
I=
式 (2) 是关于a0, a1, …, an的线性方程组, 用矩阵表示为
从式 (3) 中解出ak (k=0, 1, …, n) , 从而可得多项式P (x) 。从统计的角度来看, 客户端收到相等数量的包中, 相邻包的源和目的地址发生交换的数量大致相等, 所以上面的yi与xi成线性关系, yi=a1xi+a0。
2.2地址偶对仿真实验
下面是网络游戏以及文件下载和传输时, 经筛选后取前350个包中地址偶对数的线性拟合和偶对曲线图。分别取了10次包, 每个图中有10条拟合直线。
可以看到, 在该实验中, 网络游戏的10条拟合直线的斜率a1>0.4, 文件下载和传输的10条拟合直线的斜率都<0.4, 不同的网络环境该值有所不同, 但呈现明显的差别。
2.3端口偶对的线性拟合
与地址偶对的线性拟和类似, 令xi=50 (i+1) (i=0, 1, 2, …, m) 为收到的包个数, yi (i=0, 1, 2, …, m) 为收到的包的端口偶对数, 统计分析筛选后的数据, 得到若干数据点 (xi, yi) (i=0, 1, 2, …, m) , 求拟合函数P (x) , 使误差ri=P (xi) -yi的平方和最小, 即
设P (x) =
I=
与地址偶对的线性拟合类似, 解线性方程组 (5) , 我们依然对端口偶对做线性拟合, 得到直线yi=a1xi+a0。
2.4端口偶对的仿真实验
下面是网络游戏以及文件下载和传输时, 经筛选分类后取前350个包中端口偶对数的线性拟合和偶对曲线图。分别取了10次包, 每个图中有10条拟合直线。
可以看到, 在该实验中, 网络游戏的10条拟合直线的斜率a1>0.4, 文件下载和传输的10条拟合直线的斜率都<0.4, 不同的网络环境该值有所不同, 但呈现明显的差别。
根据实验得知:网络速度越慢, 不同类型的包地址偶对和端口偶对拟合后的斜率越大, 但网络游戏包的斜率更大, 用地址偶对和端口偶对拟合的斜率作为模式的特征, 可以实现网络数据包线性可分。
3两类线性分类器
假设有一个包含n个样本的集合, x1, x2, …, xn, 一些标记为ω1 (网络游戏包) , 另一些标记为ω2 (非网络游戏包) 。线性判别函数为
g (X) =wtxi+w0。
我们希望用这些样本来确定判别函数的权向量w, 也即寻找一个能将所有这些样本正确分类的权向量。对于一个样本xi, 如果有wtxi+w0>0就标记为w1, 如果wtxi+w0<0就标记为w2, 这样, 就用一种规范化操作来简化两类样本的训练过程, 也就是说对属于w2的样本, 用负号表示而不是标记w2。
3.1LMSE分类算法
LMSE以最小均方差作为准则, 均方误差为
E{[ri (X) -wTiX]2}, 准则函数为[5]
ri (X) -WTiX=0时得J (Wi, X) 的最小值。准则函数对Wi的偏导数为
Wi (K+1) =Wi (k) +αkX (k) {ri[X (k) -WTiX (k) ]}M
类问题应该有M个权函数方程, 对每一个权函数方程来说, X (k) ∈ωi, ri[X (k) ]=1, 否则
rj[X (k) ]=0 j=1, 2, …, M, j≠i。
3.2算法实现
(1) 设各个权矢量的初值为0。
(2) 输入第K次样品X (K) , 计算di (k) =WTiX (k) 。
(3) 若X (k) ∈ωi, 则ri[X (k) ]=1, 否则ri[X (k) ]=0。
(4) 计算Wi (K+1) =Wi (k) +αkX (k) {ri[X (k) -WTiX (k) ]}, 其中,
(5) 循环执行第 (2) 步, 直到属于ωi的所有样品都满足条件di (X) >dj (X) , ∀j≠i。
表5显示了用LMSE算法对网络数据流量很大的3类网络行为产生的包进行分类的实验结果。实验先取50次包作为训练样品, 每次取350个包, 每类随机取10次, 再对新包进行分类。
4结论
通过实际截获的网络包, 分析不同类别网络包地址偶对和端口偶对线性拟合系数的差别, 从而发现了代表网络游戏包的特征, 用这两个特征构造出一个线性分类器实现了网络游戏包和非网络游戏包的两类划分, 在复杂的环境中其正确率可以达到90%以上。该方法不需要游戏服务器的IP地址等任何先验知识, 完全根据客户端捕获的包进行分类, 能适应各种不同的网络环境, 还能根据不同的情况进行自我训练。下一步工作要提高包筛选的速度, 希望获得更多的特征分量, 提高识别率。
参考文献
[1]车绣梅.基于WINDOWS环境下数据包截获的设计与实现.电脑开发与应用, 2004;17 (12) :22—23
[2]余承健.基于神经网络的上网行为识别的研究.电脑知识与技术, 2005;36 (27) :65—66
[3]高黎, 卜淮原, 胡曙.一种医疗智能诊断推理机的设计与实现.计算机应用与软件, 2002;6 (11) :44—46
[4]李春艳.利用决策树实现包过滤的关键技术.计算机工程, 2004;30 (1) :45—47
[5]杨淑莹.图像模式识别-VC++技术实现.北京:清华大学出版社, 2005
数据包网络分析 篇9
关键词:Linux内核,数据包采集,PFRING
1 引言
随着网络速度的快速提升,以及IPv6网络应用的推广,传统的网络数据包处理,由于从网卡到内核再到用户空间的数据包拷贝非常耗费时间,在网络流量较大时,成为系统的瓶颈。因此消除无用的数据拷贝是提升系统整体性能的关键步骤。
零拷贝是指在某节点的报文的收发过程中不会出现任何内存间的拷贝,零拷贝通常的做法是通过修改网卡驱动来完成:首先利用技术将网络数据报直接传递到系统内核预先分配的地址空间中,避免CPU的参与,同时将系统内核中存储数据报的内存区域映射到检测程序的应用程序空间[1]。但是由于零拷贝需要修改网卡驱动,大大降低了其可移植性和通用型。PF_RING是零拷贝的一种实现方式,它不需要修改网卡驱动,具有较强的通用性和可移植性。
2 传统的数据包采集技术
Libpcap是Unix/Linux平台下的网络数据包捕获函数包,大多数网络监控软件都以它为基础。Libpcap提供的接口函数主要实现和封装了与数据包截获有关的过程。这个库为不同的平台提供了一致的编程接口,在安装了libpcap的平台上,以libpcap为接口写的程序能够自由地跨平台使用[2]。
Libpcap采集数据包经过了内核协议栈,内核协议栈包括链路层、网络层、传输层以及BSD套接口层,数据包的接收过程经过了这些层,耗费了很多CPU时间片[3]。在面对现代高速网络时也越来越难以应付,特别是在快于千兆的网络环境中,常常因为来不及处理导致丢包相当严重。
3 基于PF_RING的数据包采集技术与实现
3.1 PF_RING原理介绍
传统的网络数据包采集方式是网卡接收数据包后经过内核函数处理,然后逐层(TCP/IP)上传,一直到应用层接口socket。PF_RING基本原理是将网卡接收的数据包存储在一个环状缓存,这个环状缓存有两个接口,一个供网卡向其中写数据包,另一个为应用层程序提供读取数据包的接口,读取数据包的接口通过mmap实现[4]。PF_RING的逻辑结构见图1。
3.2 PF_RING协议簇
在Linux内核里,PF_RING采用27号协议族[5]。PF_RING定义了7种基本操作,分别是ring_release、ring_bind、ring_mmap、ring_poll、ring_setsockopt、ring_ioctl、ring_recvmsg,如图2。
其中,ring_create负责创建一个PF_RING类型的套接口。ring_bind就是用户空间使用PF_RING套接口时的bind函数,ring_recvmsg会被用户空间的recv/revfrom调用,而ring_setsockopt会被用户空间的setsockopt所调用。
3.3 PF_RING环状缓存
每当有数据包被网卡接收时,利用add_skb_to_ring将sk_buff插入到环状缓存。PF_RING的环状缓存随着socket的分配和释放而分配和释放,不同的PF_RING类型的socket不共用环状缓存。当PF_RING类型socket被绑定在网卡上时,网卡一直处于只读模式,直到socket被销毁。当一个数据包被网卡接收,驱动将通过netif_rx或netif_receive_skb函数将数据包传递给内核中的更高层,但是对于PF_RING类型的socket,网卡接收的每个数据包将被拷贝进PF_RING的环状缓存。若环状缓存充满则丢弃数据包。
用户空间的应用程序通过打开PF_RING类型的套接口描述符,获取其环状缓存的读取指针,然后通过mmap来访问PF_RING的环状缓存。应用程序读取数据包以后将移动缓存的读取指针。
3.4 PF_RING的libpcap接口
PF_RING并不直接将与内核模块相交互的任务交给libpcap,而是通过在socket层先封装几个函数替代通用的socket、bind、recv/recvfrom等函数,再在libpcap中将socket层封装好的函数进行二次封装。第一层封装,PF_RING为socket层提供了一个对象结构体pfring,该结构体用于描述socket层的PF_RING。PF_RING在socket层封装了7个函数用于完成与内核中的ring模块进行交互的工作。第二层封装,这层封装主要体现在PF_RING对libpcap的pcap结构体和pcap_open_live,pcap_read_packet的重写上。前者在struct pcap最后添加了pfring*ring,这一子结构体专门处理使用PF_RING协议簇的情况;后者修改了libpcap默认的建立套接口和接收数据包的方式。
3.5 使用PF_RING捕获数据包
与通常的libpcap编程方法一致,PF_RING编程一般也是先查找网络接口,然后打开网络接口,设置cluster_id,编译和设置过滤规则,循环调用dummyProcesssPacket,最后关闭pfring。
4 高速网络IPv6数据包采集测试
测试平台的主要配置如下:双至强CPU 3.00GHz,4GB内存,千兆网卡(Intel 82546GB)。使用Linux的版本号为2.625。在IPv6网络环境下使用martbit 6000C测试。
(1)使用libpcap的情况,得到结果如下:在100MB带宽的流量下,1208字节的捕包率为86.06%,512字节的捕包率为84.75%。
(2)使用PF_RING的情况,在100MB带宽的流量下,各种长度数据包的捕包率均为100%;在1000MB带宽的流量下,IPv6数据包采集的测试结果如表1。
5 结语
通过上面的数据可以看出,相比传统数据包采集造成大量数据包丢失,使用了PF_RING机制大大提高了数据包的捕获率,CPU占用率也明显改善,PF_RING的性能良好。在数据中我们也看到PF_RING在高速网络下对小数据包的捕获效率还不是很理想。出现丢包主要是由于CPU负荷过高,这和内核的处理机制有关,在采集小数据包的处理中ksoftirqd内核线程占有CPU过高成为瓶颈。接下来的优化方向是在采用PF_RING技术的基础上,针对CPU占有率过高的瓶颈进行优化。
参考文献
[1]张宇雷,黄皓.基于网络处理器的零拷贝技术[J].计算机应用,2007,01.
[2]刘文涛.网络安全开发包详解.[M]2005.
[3]宋佳,谢湘楠,冉蜀阳.TCP_IP协议的零拷贝和简化实现[J].中国测试技术,2007,01.
[4]L.Deri.Improving passive packet capture:beyond device polling.[J/OL]http://luca.ntop.org/Ring.pdf,2005,10.