发明内容
本发明针对现有技术不足,提出一种基于DPI的应用协议分析方法,能够达到对数据包进行快速应用协议分析,提高分析效率和准确性。
本发明所采用的技术方案:
一种基于DPI的应用协议分析方法,采用抓包工具获取各种应用软件数据包,然后通过下述步骤确定获取的应用软件属于哪一类或哪一种应用软件,
1)在tcp/ip协议栈中加入应用协议分析层;
2)通过基于DPI的应用协议深度分析算法来建立拥有多模匹配算法的应用协议匹配模型;
3)获取网络数据包并分析数据包的特征应用,得到网络数据包的应用协议信息,然后以拥有多模式匹配算法的应用协议匹配模型进行协议匹配,确定所属的协议类型属于哪一类或哪一种应用软件。
所述的基于DPI的应用协议分析方法,在步骤1)中,应用协议分析层以虚拟函数的方式加入tcp/ip协议栈中,在完整的ip数据报文到达tcp/ip协议栈先校验数据包是否正常,如果数据包正常,那么下一步数据包将进入应用协议分析层,进行数据包的分析处理,输出相应的应用协议信息,最后再将报文发送出去。应用协议分析层由虚拟函数的方式加入协议栈中,并单独实现此函数功能模块,增加其独立性。
所述的基于DPI的应用协议分析方法,在步骤2)中,采用基于数据包特征匹配的应用协议深度分析算法,对各种应用软件所使用的协议特征进行分析,并将其记录为特定格式特征字符串文本存储起来,建立应用协议匹配模型;特定格式的特征字符串由ip,端口,以及包括数据特征字符串信息组成。
所述的基于DPI的应用协议分析方法,在步骤3)中,初始化应用协议匹配模型,读取特征字符串,对特征字符串建立为树的结构进行存储;编写多模式匹配算法,根据偏移量进行断点特征字符串的预处理;在多模式匹配算法中进行树的遍历达到匹配数据包是否含有应用特征串确定数据包协议类型。
将特征串以树的模式建立,主要是利用多模匹配进行数据包的一次性匹配而作准备,不会对一个数据包进行一条一条特征串匹配浪费时间。多模匹配算法主要就是先建立模式树进行预处理,并实现匹配,但是不能对通配符进行处理,在本步骤中主要是编写优化预处理功能,根据偏移量字段进行处理,从而实现对特种串的通配符进行预处理。数据包到达应用协议层时主要的就是此步,对数据包的匹配,进行树的遍历查找,并对数据包进行标记。
所述的基于DPI的应用协议分析方法,在应用协议匹配模型中加入连接跟踪记录的存储,为匹配到的协议数据包信息记录,为相同的连接进行标记,以减少每个数据包都需进行匹配的时间;最后对ip及所用协议类型进行输出,并将数据包交付协议栈进行最终的发送处理。
所述的基于DPI的应用协议分析方法,连接跟踪记录的存储采用记录表方式,所述记录表包括字段:源端口、目的端口、源ip、目的ip、协议类型,在特征模式树和连接跟踪记录表初始化后,应用协议层自动生效,数据包从而进入该分析层进行数据包的处理:首先判断此数据包的信息是否在该连接记录表中,如果有那么就直接返回协议栈发送出去,如果没有,那么建立连接记录进行数据包协议检测,对ip及所用协议类型进行输出,并将数据包交付协议栈进行最终的发送处理。
连接跟踪记录主要是为了记录一条连接信息,每个到来的数据包都会先进行连接的查找,如果有记录并已经记录到此连接已经被标记为某种应用类型,那么就将数据包直接返回到协议栈发送,即步骤7)中,减少对相同连接的数据包再次匹配,达到快速处理的目的。
本发明的有益积极效果:
1、应用协议一般以固定的数据填充在数据包中,或者以固定的端口,固定的ip等作为特征,本发明DPI七层应用协议深度分析方法,以抓包工具进行各种应用软件数据包的获取,并进行分析得到特征字符串来进行特征收集,并以高效的拥有多模式匹配算法的DPI深度包检测技术进行协议匹配,能够达到对数据包进行快速应用协议分析,提高分析效率和准确性。
2、本发明通过在Tcp/ip协议栈中加入应用协议分析层,来达到数据包的截获,分析;在tcp/ip协议栈中默认处理数据包完毕后得到完整的ip数据报文,判断应用协议层模块是否存在,如果存在则进入其分析层进行数据包的分析处理,如果不存在则直接发送,不影响网络数据。
具体实施方式
实施例一:应用协议一般以固定的数据填充在数据包中,或者以固定的端口,固定的ip等作为特征,本发明基于DPI的七层应用协议深度分析方法,以抓包工具进行各种应用软件数据包的获取,并进行分析得到特征字符串来进行特征收集,并以高效的拥有多模式匹配算法的DPI深度包检测技术进行协议匹配。参见图1,在Tcp/ip协议栈中加入应用协议分析层,来达到数据包的截获,分析;在tcp/ip协议栈中默认处理数据包完毕后得到完整的ip数据报文,判断应用协议层模块是否存在,如果存在则进入其分析层进行数据包的分析处理,如果不存在则直接发送,不影响网络数据。参见图2,设计应用协议分析层独立模块,具体的实现应用协议层的功能;其中连接跟踪记录表包括字段(源端口,目的端口,源ip,目的ip,协议类型),在特征模式树和连接跟踪记录表初始化后,那么应用协议层就会自动生效,数据包从而进入该分析层进行数据包的处理:首先判断此数据包的信息是否在该连接记录表中,如果有那么就直接返回协议栈发送出去,如果没有,那么建立连接记录进行数据包协议检测,完毕后返回协议栈发送出去。
实施例二:参见图1、图2,本实施例基于DPI的七层应用协议深度分析方法,具体方案由以下步骤实现:
1)在tcp/ip协议栈中加入应用协议分析层,在完整的ip数据报文到达协议栈中后由系统本身进行默认处理,进而转入应用协议分析层进行应用协议的分析,输出相应的应用协议信息,最后再将报文发送出去;应用协议分析层由虚拟函数的方式加入协议栈中,并单独实现此函数功能模块,增加其独立性。
2)深度包协议分析是基于数据包特征匹配的,对各种应用软件所使用的协议特征进行分析,并将其记录为特定格式特征字符串文本存储起来;特征串以ip,端口,数据特征串(包括以通配符的多字段特征)信息组成。
3)应用协议匹配模型初始化,读取特征字符串,对特征串建立为树的结构进行存储;将特征串以树的模式建立,主要是利用多模匹配进行数据包的一次性匹配而作准备,不会对一个数据包进行一条一条特征串匹配浪费时间。
4)编写优化多模匹配算法,根据偏移量进行断点特征串的预处理;多模匹配算法主要就是先建立模式树进行预处理,并实现匹配,但是不能对通配符进行处理,在这部中主要是编写优化预处理功能,根据偏移量字段进行处理,从而实现对特种串的通配符进行预处理。
5)在多模匹配中进行树的遍历达到匹配数据包是否含有应用特征串确定数据包协议类型;数据包到达应用协议层时主要的就是此步,对数据包的匹配,进行树的遍历查找,并对数据包进行标记。
6)在模型中加入连接跟踪记录的存储,为匹配到的协议数据包信息记录,为相同的连接进行标记,减少每个数据包都需进行匹配的时间;连接跟踪记录主要是为了记录一条连接信息,每个到来的数据包都会先进行连接的查找,如果有记录并已经记录到此连接已经被标记为某种应用类型,那么就将数据包直接返回到协议栈发送,即步骤7)中,减少对相同连接的数据包再次匹配,达到快速处理的目的。
7)对ip及所用协议类型进行输出,并将数据包交付协议栈进行最终的发送处理。
实施例三:参见图1、图2,本实施例的基于DPI七层应用协议深度分析方法,采用抓包工具获取各种应用软件数据包,然后通过下述步骤确定获取的应用软件属于哪一类或哪一种应用软件,
1)在tcp/ip协议栈中加入应用协议分析层;
2)通过深度包分析算法来建立拥有多模式匹配算法的应用协议匹配模型;
3)获取网络数据包并分析数据包的特征应用,得到网络数据包的应用协议信息,然后以拥有多模式匹配算法的应用协议匹配模型进行协议匹配,确定所属的协议类型属于哪一类或哪一种应用软件。
实施例四:参见图1、图2,本实施例基于DPI的应用协议分析方法,与实施例三不同的是:在步骤1)中,应用协议分析层以虚拟函数的方式加入tcp/ip协议栈中,在完整的ip数据报文到达tcp/ip协议栈先校验数据包是否正常,如果数据包正常,那么下一步数据包将进入应用协议分析层,进行数据包的分析处理,输出相应的应用协议信息,最后再将报文发送出去;在步骤2)中,采用基于数据包特征匹配的应用协议深度分析算法,对各种应用软件所使用的协议特征进行分析,并将其记录为特定格式特征字符串文本存储起来,建立应用协议匹配模型;特定格式的特征字符串由ip,端口,以及包括数据特征字符串信息组成。
实施例五:参见图1、图2,本实施例基于DPI的应用协议分析方法,与实施例四不同的是:在步骤3)中,初始化应用协议匹配模型,读取特征字符串,对特征串建立为树的结构进行存储;编写多模式匹配算法,根据偏移量进行断点特征串的预处理;进行树的遍历达到匹配数据包是否含有应用特征串确定数据包协议类型。
本发明基于DPI的应用协议分析方法,在应用协议匹配模型中加入连接跟踪记录的存储,为匹配到的协议数据包信息记录,为相同的连接进行标记,以减少每个数据包都需进行匹配的时间;最后对ip及所用协议类型进行输出,并将数据包交付协议栈进行最终的发送处理。
连接跟踪记录的存储采用记录表方式,所述记录表包括字段:源端口、目的端口、源ip、目的ip、协议类型,在特征模式树和连接跟踪记录表初始化后,应用协议层自动生效,数据包从而进入该分析层进行数据包的处理:首先判断此数据包的信息是否在该连接记录表中,如果有那么就直接返回协议栈发送出去,如果没有,那么建立连接记录进行数据包协议检测,对ip及所用协议类型进行输出,并将数据包交付协议栈进行最终的发送处理。
本发明基于DPI的应用协议分析方法,实现的系统包括下述模块:
数据包捕获模块,用于获取数据包并进行数据包的解析,捕获数据包通常以驱动模式进行网络钩子的注册来获取数据包,本发明采用在tcp/ip协议栈中加入数据捕获代码来达到获取数据包;
协议预处理模块,用于处理已经定义好的协议特征,此模块将定义好的协议特征读入并进行分类建立模式树,为匹配做准备;
协议处理模块,进行应用协议的分析,此模块将数据包捕获模块所分析到的信息与协议预处理模块所建立的模式树进行信息匹配,得出所属应用协议类型;协议处理模块,采用多模式匹配算法,首先由协议预处理模块进行协议特征的模式树建立,其次在获取的数据包中查找模式树中存在的特征,以达到一次性匹配多种协议特征,从而提高匹配效率;
应用协议信息输出模块,用于将所得到的应用协议信息输出,包括ip,此ip所使用协议等信息。