一种适用于家庭网关的应用层协议解析方法

文档序号:7554097阅读:327来源:国知局
专利名称:一种适用于家庭网关的应用层协议解析方法
技术领域
本发明涉及应用层协议解析,具体说是一种适用于家庭网关的应用层协议解析方法。
背景技术
随着光纤入户的普及,PON上行的家庭网关也逐渐取代LAN上行的网关。用户开通的各种业务和应用也都集成在家庭网关上面。目前,随着网络应用层出不穷,P2P、网络游戏、网络视频等新兴业务,占用了互联网80%以上的带宽。而在我国宽带不限时包月资费模式下,网络绝大部分带宽被少量用户所占用,而这些用户并未支付相应的费用,却影响了其他大部分用户的网络质量。为了提高运营利润,运营商需要对用户使用一种有效的控制和区分手段,来实现不同业务的识别,给不同用户提供不同的服务质量、服务等级的保证,将业务增量转化为收益增量。如何深度感知网络应用,提供网络业务控制和管理手段,构建可以运营、可以管理的和谐网络,在接入网终端设备家庭网关上实现对网络上兴起的各种业务和应用的协议解析,成为迫切需要解决的问题。

发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种适用于家庭网关的应用层协议解析方法,可精确解析应用层协议,减少了对内核程序的影响,能更好的保持设备的稳定性。为达到以上目的,本发明采取的技术方案是:—种适用于家庭网关的应用层协议解析方法,其特征在于:通过Netfilter框架实现网关上网数据的捕获,使用Netlink通信机制将数据包trap到用户态程序,在用户态程序中对应用层协议进行解析,具体包括以下步骤:步骤I,在Netfilter框架中抓取数据包:通过Netfilter框架在内核处挂载钩子点,网关数据到达钩子处即进入钩子函数,根据配置的规则要求在钩子函数中拷贝指定的数据包,步骤2,使用Netlink通信机制将数据包从内核态传输到用户态:使用Netlink通信方式将数据包trap到用户态进程,步骤3,在用户态完成协议解析的过程:在用户态进程中,分别针对不同类型的数据流进行协议解析并获得协议的五元组信息,步骤4,根据步骤3中获取的数据流五元组信息建立哈希表对数据流进行管理,通过对不同应用协议的业务数据流进行整形操作,从而来实现家庭网关的服务质量保障和防火墙功能。在上述技术方案的基础上,步骤3中所述的协议解析至少包括:HTTP协议解析、頂协议解析、邮件协议解析以及P2P协议解析,具体步骤为:
(A)获取数据包的五元组,包括源地址,源端口,目标地址,目标端口,协议五个基本信息;(B)判断数据包的类型是否为TCP协议,是则跳转到(C),否则跳转到(Cl);(C)判断目标端口是否为80或者433,是则跳转到(D),否则跳转到(Dl);(Cl)判断数据包类型是否为ICMP协议,是则icmp数据包计数加1,否则跳转到(E);(D) HTTP 协议解析;(Dl)判断目标端口是否为25,是则跳转到(F),否跳转到(Fl);(E)判断数据包的类型是否为UDP协议,是则跳转到(J),否则跳转到(Q);(F)发邮件解析;(Fl)判断源端口是否为110,是则跳转到(G),否则跳转到(Gl);(G)收邮件解析;(Gl)判断源端口是否为1863,是则跳转到(H),否则跳转到(Hl);(H) MSN 登录解析;(HI)判断目标端口是否为1863,是则跳转到(I),否则跳转到(Il);(I) MSN 退出解析;(Il)判断是否有QQ报文特征,其特征的判断条件为:(1)报文长度〈120的TCP/UDP包;(2)报文的Data域以0x020x00开头,是则跳转到(J),否则跳转到(Jl);(J) QQ 解析;(Jl)判断目标端口是否为16000,是则跳转到(K),否则跳转到(Kl);(K)阿里旺旺解析;(Kl)判断目标端口是否为5225,是则跳转到(L),否则跳转到(LI);(L) Sina 微博解析;(LI)判断目标端口是否为443,是则跳转到(M),否则跳转到(Ml);(M) QQ游戏解析;(Ml)判断是否有QQ语音报文特征,其特征判断条件为:报文的Data域以0x05开头,是则跳转到(N),否则跳转到(NI);(N) QQ语音解析;(NI)判断是否有视频报文,其具体方案为:根据迅雷看看WEB,PPLive Web,PPStream Web网页点击的特征连接,记录连接的五元组信息,监听源地址为80的报文,如有符合相应五元组信息的报文即为返回的页面信息:首先对返回流进行gzip解码,再提取报文中的title域值,即为用户观看的节目名称,是则跳转到(0),否则跳转到(01);(O)视频解析;(01)判断是否有P2P报文特征,是则跳转到(P),否则跳转到(Q);(P) P2P 解析;(Q)返回。在上述技术方案的基础上,在进行P2P解析时,利用各种P2P软件默认的端口号,进行P2P流量检测。在上述技术方案的基础上,在进行P2P解析时,使用应用层特征检测法,每种应用的分组中都携带有特定的报文信息,对5种常见的P2P协议特征的分析,提取出其特征信息,然后根据特征信息对收集到的分组进行模式匹配操作,从而判断出该分组是否属于某一类P2P应用分组,所述5 种常见的 P2P 协议为 KaZaA, Gnutella, eDonkey, DirectConnect 以及BitTorrent0在上述技术方案的基础上,QQ、QQ语音、QQ游戏这三种应用的退出采用定时检测包计数来判断::每隔两分钟检测一次,当检测时如果包计数超过规定的最低限度,认为还未退出,包计数清零;低于最低限度或为O时,认为已经退出。本发明所述的适用于家庭网关的应用层协议解析方法,可精确解析应用层协议,减少了对内核程序的影响,能更好的保持设备的稳定性。


本发明有如下附图:·
图1是Netfilter框架结构图;图2是Netlink通彳目流程图;图3是应用层协议解析实现结构图;图4是应用层协议解析实现流程图;图5是HTTP协议请求方向的报文处理流程图;图6是HTTP协议应答方向的报文处理流程图。
具体实施例方式以下结合附图对本发明作进一步详细说明。应用层协议解析,就是在对底层协议进行解析的基础上,主要对应用层的协议进行分析。并且不止是针对某一个数据包,而主要针对由某些数据包组成的应用层会话,对这些组成各应用层会话的数据包根据它们所属的会话进行重组,然后分析每个应用层会话,将会话的交互过程以及其中传递的数据内容部分以一种比较友好直观的方式显示或保存。这里的会话定义为一个应用从开始对话到结束对话的整个过程。本发明中的应用层协议精确解析方法是通过Netfilter、Netlink和DPI技术来进行实现的。以下先对本发明涉及到的Netfilter、Netlink和DPI技术进行简单介绍。Netfilter 框架Linux内核包含了一个强大的网络子系统,名为Netfilter。Netfilter位于Linux网络层和防火墙内核模块之间。为了实现用户上网行为分析中的数据采集,本发明采用了Linux下提供的Netfilter机制。Netfilter是Linux2.4以上版本的内核实现数据包过滤/数据包处理/NAT等的功能框架,它主要分为三个部分:1、为每种网络(IPv4、IPv6等)定义了一套钩子函数,这些钩子函数在数据报流过协议栈的几个关键点被调用。在这几个点中,协议栈将把数据报及钩子函数标号作为参数调用Netfilter框架。2、内核的任何模块可以对每种协议的一个或多个钩子进行注册,实现挂接,这样当某个数据包被传递给Netfilter框架时,内核能检测到是否有任何模块对该协议和钩子进行了注册。若注册了,则调用该模块的注册时使用的回调函数,这样这些模块就有机会检查(可能还会修改)该数据包、丢弃该数据包及指示Netfilter将该数据包传入用户空间的队列。3、那些排队的数据包将被传递给用户空间进行异步处理。一个用户进程能检查数据包,修改数据包,甚至可以重新将该数据包通过离开内核的同一个钩子函数注入到内核中。Netfilter机制提供了 5个钩子函数,如图1所示,分别是:NF_IP_PRE_ROUTING、NF_IP_L0CAL_IN、NF_IP_F0RWARD、NF_IP_P0ST_R0UTING 和 NF_IP_L0CAL_0UT,分别对应了其中的第一检查点1、第二检查点2、第三检查点3、第四检查点4和第五检查点5。数据包从左边进入系统,进行IP校验以后,数据包经过第一检查点I的钩子函数NF_IP_PRE_ROUTING进行处理;然后就进入路由代码,其决定该数据包是需要转发还是发给本机的;若该数据包是发被本机的,则该数据经过第二检查点2的钩子函数NF_IP_L0CAL_IN处理以后然后传递给上层协议;若该数据包应该被转发则它被第三检查点3的钩子函数NF_IP_F0RWARD处理;经过转发的数据报经过第四检查点4的钩子函数NF_IP_P0ST_R0UTING处理以后,再传输到网络上。如果数据包为本机发出的数据包,则首先经过第五检查点5的钩子函数NF_IP_L0CAL_0UT处理,然后通过路由,再交给第四检查点4的钩子函数NF_IP_P0ST_R0UTING处理,最后传输到网络上。Netlink 通信机制在Linux2.4版以后版本的内核中,几乎全部的中断过程与用户态进程的通信都是使用Netlink套接字实现的,无疑它是Linux用户态与内核态交流的主要方法之一。它的通信依据是一个对应于进程的标识,一般定为该进程的ID。当通信的一端处于中断过程时,该标识为O。当使用Netlink套接字进行通信,通信的双方都是用户态进程,则使用方法类似于消息队列。但通信双方有一端是中断过程,使用方法则不同。Netlink套接字的最大特点是对中断过程的支持,它在内核空间接收用户空间数据时不再需要用户自行启动一个内核线程,而是通过另一个软中断调用用户事先指定的接收函数。这里使用了软中断而不是内核线程来接收数据,这样就可以保证数据接收的实时性。当Net I ink套接字用于内核空间与用户空间的通信时,在用户空间的创建方法和一般套接字使用类似,但内核空间的创建方法则不同。Netlink套接字实现此类通信时创建过程见图2。首先,使用netlink_kernel_create()创建套接字,并指明接收函数;然后,用户空间进程创建套接字,并将进程ID发送到内核空间;再然后,接收函数收到用户空间进程ID ;此时,用户空间可以与内核空间通信。DPI (Deep Pack Inspection,深度包检测)DPI是一种基于应用层的流量检测和控制技术,当IP数据包、TCP或UDP数据流通过基于DPI技术的带宽管理系统时,该系统通过深入读取IP包载荷的内容来对OSI七层协议中的应用层信息进行重组,从而得到整个应用程序的内容,然后按照系统定义的管理策略对流量进行整形操作。针对不同的协议类型,DPI识别技术可划分为以下三类:第一类是特征字的识别技术:不同的应用通常会采用不同的协议,而各种协议都有其特殊的指纹,这些指纹可能是特定的端口、特定的字符串或者特定的Bit序列。基于特征字的识别技术,正是通过识别数据报文中的指纹信息来确定业务所承载的应用。根据具体检测方式的不同,基于特征字的识别技术又可细分为固定特征位置匹配、变动特征位置匹配和状态特征字匹配三种分支技术。通过对指纹信息的升级,基于特征字的识别技术可以方便的扩展到对新协议的检测。第二类是应用层网关识别技术:在业务中,有一类的控制流和业务流是分离的,如与7号信令相关的业务,其业务流没有任何特征,应用层网管识别技术针对的对象就是此类业务,首先由应用层网管识别出控制流,并根据控制流协议选择特定的应用层网关对业务流进行解析,从而识别出相应的业务流。对于每一个协议,需要不同的应用层网关对其进行分析。例如:H323、SIP等协议,就属于此类,其通过信令交互过程,协商得到其数据通道,一般是RTP格式封装的语音流,纯粹检测RTP流并不能确定这条RTP流是通过那种协议建立起来的,即判断其是何种业务,只有通过检测SIP或H232的协议交互,才能得到其完整的分析。第三类是行为模式识别技术:在实施行为模式技术之前,运营商首先必须先对终端的各种行为进行研究,并在此基础上建立行为识别模型,基于行为识别模型,行为模式识别技术即根据客户已经实施的行为,判断客户正在进行的动作或者即将实施的动作。行为模式识别技术通常用于那些无法由协议本身就能判别的业务,例如:从电子邮件的内容看,垃圾邮件和普通邮件的业务流两者间根本没有区别,只有进一步分析,具体根据发送邮件的大小、频率,目的邮件和源邮件地址、变化的频率和被拒绝的频率等综合分析,建立综合识别模型,才能判断是否为垃圾邮件。本发明的核心思想是:通过Netfilter框架实现网关上网数据的捕获,使用Netlink通信机制将数据包trap到用户态程序,在用户态程序中对应用层协议进行解析,从而实现保障服务质量和加强防火墙功能,使家庭网关为运营商提供了增值服务。并且,由于目前家庭网关已大量投入使用,要在现网的设备上扩展上述功能实现应用层协议解析方法,就要求该方法易移植,易部署,易配置,并且不影响网关设备原有的功能,对网关的性能影响很小或将对网关的性能影响降到最低。本发明正是综合这几方面的特点而特别针对家庭网关设计的应用层协议解析方法。如图3、4所示,本发明所述的适用于家庭网关的应用层协议解析方法,包括以下步骤:步骤I,在Netfilter (Iinux内核中的网络子系统)框架中抓取数据包:通过Netfilter框架在内核处挂载钩子点,网关数据到达钩子处即进入钩子函数,根据配置的规则要求在钩子函数中拷贝指定的数据包,所述配置的规则要求根据指定的需要解析的应用层协议确定,需要解析的应用层协议包括但不限于=HTTP协议,QQ、MSN等頂的协议,邮件客户端收发邮件协议,BT、迅雷等P2P软件的协议,网游、语音、视频等软件的协议,步骤2,使用Netlink (—种内核态与用户态进程通信方式)通信机制将数据包从内核态传输到用户态:使用Netlink通信方式将数据包trap (捕捉传输)到用户态进程,步骤3,在用户态完成协议解析的过程:在用户态进程中,分别针对不同类型的数据流进行协议解析(目前已经可以识别的协议包括HTTP协议,QQ、MSN等頂的协议,邮件客户端收发邮件协议,BT、迅雷等P2P软件的协议,网游、语音、视频等软件的协议)并获得协议的五元组信息(源地址、源端口、目标地址、目标端口、协议),
步骤4,根据步骤3中获取的数据流五元组信息建立哈希表对数据流进行管理,通过对不同应用协议的业务数据流进行整形操作,从而来实现家庭网关的服务质量保障(QoS)和防火墙功能。在上述技术方案的基础上,步骤3中所述的协议解析至少包括:HTTP协议解析、頂协议解析、邮件协议解析以及P2P协议解析,参见图4,具体步骤为:(A)获取数据包的五元组,包括源地址,源端口,目标地址,目标端口,协议五个基本信息;(B)判断数据包的类型是否为TCP协议,是则跳转到(C),否则跳转到(Cl);(C)判断目标端口是否为80或者433,是则跳转到(D),否则跳转到(Dl);(Cl)判断数据包类型是否为ICMP协议,是则icmp数据包计数加1,否则跳转到(E);(D) HTTP 协议解析;(Dl)判断目标端口是否为25,是则跳转到(F),否跳转到(Fl);(E)判断数据包的类型是否为UDP协议,是则跳转到(J),否则跳转到(Q);(F)发邮件解析;(Fl)判断源端口是否为110,是则跳转到(G),否则跳转到(Gl);(G)收邮件解析;(Gl)判断源端口是否为1863,是则跳转到(H),否则跳转到(Hl);(H) MSN 登录解析;(HI)判断目标端口是否为1863,是则跳转到(I),否则跳转到(Il);(I) MSN 退出解析;(Il)判断是否有QQ报文特征,其特征的判断条件为:(1)报文长度〈120的TCP/UDP包;(2)报文的Data域以0x020x00开头,是则跳转到(J),否则跳转到(Jl);(J) QQ 解析;(Jl)判断目标端口是否为16000,是则跳转到(K),否则跳转到(Kl);(K)阿里旺旺解析;(Kl)判断目标端口是否为5225,是则跳转到(L),否则跳转到(LI);(L) Sina 微博解析;(LI)判断目标端口是否为443,是则跳转到(M),否则跳转到(Ml);(M) QQ游戏解析;(Ml)判断是否有QQ语音报文特征,其特征判断条件为:报文的Data域以0x05开头,是则跳转到(N),否则跳转到(NI);(N) QQ语音解析;(NI)判断是否有视频报文,其具体方案为:根据迅雷看看WEB,PPLive Web,PPStream Web网页点击的特征连接,记录连接的五元组信息,监听源地址为80的报文,如有符合相应五元组信息的报文即为返回的页面信息:首先对返回流进行gzip解码,再提取报文中的title域值,即为用户观看的节目名称,是则跳转到(0),否则跳转到(01);(O)视频解析;(01)判断是否有P2P报文特征,是则跳转到(P),否则跳转到(Q);
(P) P2P 解析;(Q)返回。通过上述步骤3,本发明中应用层协议解析的主要实现,包括但不局限于以下功倉泛:(I) HTTP 协议解析;(2) QQ, MSN等頂的协议解析;(3)邮件客户端收发邮件协议解析;(4) BT、迅雷等P2P软件的协议解析;(5)网游、语音、视频等软件的协议解析。在上述技术方案的基础上,步骤(D)的具体步骤为:当实现HTTP协议解析时,HTTP协议解析针对目标端口为80或433的数据报文,获取其中GET/P0ST/H0ST的值,协议解析分请求和应答两个方向来进行,HTTP的协议请求方向F1DU (Protocol Data Unit,协议数据单元)中主要包含两部分,“头” (header)和“消息体”(msgbody),二者通过分隔符(“\r\n\r\n”或者“\r\r”或者“\n\n”)。头中是以行组织的,每行以行结束符(“\r\n”或者“\r”或者在很少情况下用“\n”)结尾,每行的类型或是“方法”(method),或是“头定义域”(header fielddefinition)。具体处理流程可以参见图5。HTTP的协议应答方向rou中仍然包含两部分,“头”(header)和“消息体”(msgbody),二者通过分隔符(“\r\n\r\n”或者“\r\r”或者“\n\n”)。头中是以行组织的,每行以行结束符(“\r\n”或者“\r”或者在很少情况下用“\n”)结尾,每行的类型或是“状态行”(status line),或是“头定义域”(header fielddefinition),而且状态行在大多数情况下出现在rou的第一行。具体处理流程可以参见图6。在上述技术方案的基础上,步骤(F)、(G)的具体步骤为:邮件收发正常使用的是SMTP、POP3协议,其中:用SMTP收发邮件的过程为:建立TCP连接(服务端口号25),传送邮件,释放连接;用POP3取邮件的过程为:建立TCP连接(服务端口号110),取邮件,释放连接;传送邮件的命令:如果DATA命令被接收,接收方返回一个354Intermediate应答,并认定以下的各行都是信件内容。当信件结尾收到并存储后,接收者发送一个2500K应答。因为邮件是在传送通道上发送,因此必须指明邮件内容结尾,以便应答对话可以重新开始。SMTP通过在最后一行仅发送一个句号来表示邮件内容的结束,在接收方,一个对用户透明的过程将此符号过滤掉,以不影响正常的数据。邮件协议的识别可以通过默认端口号和获取特征字段的方式来进行。在上述技术方案的基础上,步骤(H)、(I)的具体步骤为:MSN软件协议解析针对所有源端口或目标端口为1863的包进行解析,根据抓包分析的MSN登录和退出的包特征解析出登录和退出的状态及账户信息。在上述技术方案的基础上,步骤(J)的具体步骤为:QQ软件协议解析针对所有m)P包报文开始为0x02的进行解析,根据抓包分析的QQ登录和退出的包特征解析出登录和退出的状态及账户信息。
在上述技术方案的基础上,步骤(K)的具体步骤为:阿里旺旺软件协议解析针对所有源端口和目标端口为16000的包进行解析,根据抓包分析的ALI登录和退出的包特征解析出登录和退出的状态及账户信息。在上述技术方案的基础上,步骤(L)的具体步骤为:新浪微博登录退出报文目的端口均为5222,其登录特征值为diu,登录报文特征值为:0xl70x030x010x000x20,据此获取新浪微博登录和退出的具体信息。在上述技术方案的基础上,步骤(M)的具体步骤为:QQ游戏报的特征为目标端口为443的报文,只有在登录后才会有持续的出现目标端口为443的,包特征关键字为:{0x2d,0x00,0x00,0x00},报文中包含 QQ 号码。在上述技术方案的基础上,步骤(N)的具体步骤为:QQ语音报的特征为data域第一个字节为 0x05,特征值为:{0x05, Oxxx, Oxxx, 0x00, Oxxx, Oxxx, 0x00,0x00,0x00}。在上述技术方案的基础上,步骤(O)的具体步骤为:对视频节目的提取,是通过对用户访问过的html页面中title域的提取,title域在页面比较靠前部分。用户访问某个页面,返回的页面数据中是Gzip编码流,在驱动程序中,提取包含title域的Gzip流,传递给应用层进行解析。Gzip的特征关键字为::{0x6e,0x67,0x57,0x7a,0x69,0x70}。在上述技术方案的基础上,步骤(01)、(P)的具体步骤为:各种P2P软件都自默认的端口号,利用这些端口信息,可以进行P2P流量检测。如早期的eDonkey采用4661和4662端口,BT采用6881-6890端口。通过检测网络流量所使用的端口是否属于典型P2P的端口即可判断是否属于P2P数据包。该方法简单、有效、正确率高,由于算法简单,利用信息少,是所有方法中的空间和时间复杂度最小。但是误报和漏报率偏高,无法检测低端口传输的P2P数据,不能准确地检测大于1024端口传输的P2P数据;若端口随机变换无法检测出;端口控制粒度太粗,容易出错。其次,可以使用应 用层特征检测法。每种应用的分组中都携带有特定的报文信息,对 5 种常见的 P2P 协议(KaZaA, Gnutella, eDonkey, DirectConnect 以及 BitTorrent)特征的分析,提取出其特征信息,然后根据特征信息对收集到的分组进行模式匹配操作,从而判断出该分组是否属于某一类P2P应用分组。在上述技术方案的基础上,QQ、QQ语音、QQ游戏这三种应用的退出无法通过特征值来处理,故采用定时检测包计数来判断:每隔两分钟检测一次,当检测时如果包计数超过规定的最低限度,认为还未退出,包计数清零;低于最低限度或为O时,认为已经退出。在钩子函数中对每个包进行检测时,会对相应需要进行包计数应用在五元组或帐号匹配的情况下自增。上述协议解析的功能实现全部用Iinux下的c实现的,不依赖其他非glibc库和不受内核版本限制。通过交叉编译可以应用到不同类型的家庭网关软件平台上。另外,应用层协议解析技术的适用范围并不局限于服务质量保障和加强防火墙等方面。在垃圾邮件过滤、网络数据审计监测、入侵防御、防病毒等多个方面也有适用性。以上所述仅为本发明的较佳实施例,并不用于限制本发明,凡在本发明精神和原则之内所做的任何修改、等同替换和改进等,均含于本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
权利要求
1.一种适用于家庭网关的应用层协议解析方法,其特征在于:通过Netfilter框架实现网关上网数据的捕获,使用Netlink通信机制将数据包trap到用户态程序,在用户态程序中对应用层协议进行解析,具体包括以下步骤: 步骤1,在Netfilter框架中抓取数据包:通过Netfilter框架在内核处挂载钩子点,网关数据到达钩子处即进入钩子函数,根据配置的规则要求在钩子函数中拷贝指定的数据包, 步骤2,使用Netlink通信机制 将数据包从内核态传输到用户态:使用Netlink通信方式将数据包trap到用户态进程, 步骤3,在用户态完成协议解析的过程:在用户态进程中,分别针对不同类型的数据流进行协议解析并获得协议的五元组信息, 步骤4,根据步骤3中获取的数据流五元组信息建立哈希表对数据流进行管理,通过对不同应用协议的业务数据流进行整形操作,从而来实现家庭网关的服务质量保障和防火墙功能。
2.如权利要求1所述的适用于家庭网关的应用层协议解析方法,其特征在于,步骤3中所述的协议解析至少包括=HTTP协议解析、IM协议解析、邮件协议解析以及P2P协议解析,具体步骤为: (A)获取数据包的五元组,包括源地址,源端口,目标地址,目标端口,协议五个基本信息; (B)判断数据包的类型是否为TCP协议,是则跳转到(C),否则跳转到(Cl); (C)判断目标端口是否为80或者433,是则跳转到(D),否则跳转到(Dl); (Cl)判断数据包类型是否为ICMP协议,是则icmp数据包计数加1,否则跳转到(E); (D)HTTP协议解析; (Dl)判断目标端口是否为25,是则跳转到(F),否跳转到(Fl); (E)判断数据包的类型是否为UDP协议,是则跳转到(J),否则跳转到(Q); (F)发邮件解析; (Fl)判断源端口是否为110,是则跳转到(G),否则跳转到(Gl); (G)收邮件解析; (Gl)判断源端口是否为1863,是则跳转到(H),否则跳转到(Hl); (H)MSN登录解析; (Hl)判断目标端口是否为1863,是则跳转到(I),否则跳转到(Il); (I)MSN退出解析; (Il)判断是否有QQ报文特征,其特征的判断条件为:(1)报文长度〈120的TCP/UDP包;(2)报文的Data域以0x020x00开头,是则跳转到(J),否则跳转到(Jl); (J) QQ解析; (Jl)判断目标端口是否为16000,是则跳转到(K),否则跳转到(Kl); (K)阿里旺旺解析; (Kl)判断目标端口是否为5225,是则跳转到(L),否则跳转到(LI); (L) Sina微博解析; (LI)判断目标端口是否为443,是则跳转到(M),否则跳转到(Ml);(M) QQ游戏解析; (Ml)判断是否有QQ语音报文特征,其特征判断条件为:报文的Data域以0x05开头,是则跳转到(N),否则跳转到(NI); (N) QQ语音解析; (NI)判断是否有视频报文,其具体方案为:根据迅雷看看WEB,PPLive Web,PPStreamWeb网页点击的特征连接,记录连接的五元组信息,监听源地址为80的报文,如有符合相应五元组信息的报文即为返回的页面信息:首先对返回流进行gzip解码,再提取报文中的title域值,即为用户观看的节目名称,是则跳转到(0),否则跳转到(01); (0)视频解析; (01)判断是否有P2P报文特征,是则跳转到(P),否则跳转到(Q); (P) P2P 解析; (Q)返回。
3.如权利要求2所述的适用于家庭网关的应用层协议解析方法,其特征在于,在进行P2P解析时,利用各种P2P软件默认的端口号,进行P2P流量检测。
4.如权利要求2所述的适用于家庭网关的应用层协议解析方法,其特征在于,在进行P2P解析时,使用应用层特征检测法,每种应用的分组中都携带有特定的报文信息,对5种常见的P2P协议特征的分析,提取出其特征信息,然后根据特征信息对收集到的分组进行模式匹配操作,从而判断出该分组是否属于某一类P2P应用分组, 所述 5 种常见的 P2P 协议为 KaZaA, Gnutella, eDonkey, DirectConnect 以及BitTorrent0
5.如权利要求2所述的适用于家庭网关的应用层协议解析方法,其特征在于,QQ、QQ语音、QQ游戏这三种应用的退出 采用定时检测包计数来判断::每隔两分钟检测一次,当检测时如果包计数超过规定的最低限度,认为还未退出,包计数清零;低于最低限度或为O时,认为已经退出。
全文摘要
本发明涉及一种适用于家庭网关的应用层协议解析方法,在Netfilter框架中抓取数据包,使用Netlink通信机制将数据包从内核态传输到用户态,在用户态完成协议解析的过程,分别针对不同类型的数据流进行协议解析并获得协议的五元组信息,根据获取的数据流五元组信息建立哈希表对数据流进行管理,通过对不同应用协议的业务数据流进行整形操作,从而来实现家庭网关的服务质量保障和防火墙功能。本发明所述的适用于家庭网关的应用层协议解析方法,可精确解析应用层协议,减少了对内核程序的影响,能更好的保持设备的稳定性。
文档编号H04L29/08GK103139315SQ20131009939
公开日2013年6月5日 申请日期2013年3月26日 优先权日2013年3月26日
发明者杨柳, 柳安意 申请人:烽火通信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1