一种网络应用层协议识别的方法和系统的制作方法

文档序号:9754632阅读:194来源:国知局
一种网络应用层协议识别的方法和系统的制作方法
【技术领域】
[0001]本发明属于互联网技术领域,特别涉及一种网络应用层协议识别的方法和系统。
【背景技术】
[0002]随着互联网应用技术的快速发展,互联网应用已经极大丰富,越来越多的网络应用使用了私有协议,这些网络协议没有公开可以得到的协议规范文档,这给网络协议分类和精确识别带来了新的挑战。比较典型的是点对点(P2P)传输协议、音视频应用和各种加密通信工具。
[0003]传统的客户端-服务器通信模型中,一个典型的通信过程是客户端向服务器发起请求,服务器进行接收请求并进行应答,大多数的会话请求是由客户端发起的。对于传统的网络协议识别技术主要包括:端口检测技术和DPI (深度包检测)技术。
[0004]P2P技术广泛应用之后,在点对点网络模型中,没有了服务器和客户端的概念,只有平等的同级节点,同时对网络上的其它节点充当服务器和客户端。传统的基于端口检测技术识别速度特别快,但由于许多协议并没有固定的传输层端口,某些协议甚至采用动态端口或者伪装端口技术,基于端口的识别方法准确率不能满足当前的需求。传统的基于深度包检测技术,通过识别精确的特征字符串可以达到较准确的识别效果,但识别速度较慢,对于一些加密协议识别效果较差。

【发明内容】

[0005]本发明所要解决的技术问题是如何对多种类型的应用层协议进行快速和准确的识别。
[0006]针对该技术问题本发明提供了一种网络应用层协议识别的方法,包括:
[0007]S1:获取通信过程的特征信息,所述特征信息包括以下至少一种或其组合:通信过程的IP地址、主特征码、协议端口、通信过程中的数据包的长度;
[0008]S2:根据预先设置的IP地址哈希表、主特征码哈希表、协议端口哈希表和数据包的长度哈希表中的任一哈希表,或预设的识别插件对所述通信过程进行识别,若识别出所述通信过程,获取所述通信过程的协议ID,否则,标记所述通信过程的协议为未定义。
[0009]优选地,在所述步骤SI之前还包括:
[0010]获取已知通信过程的IP地址,对IP地址进行哈希运算得到第一初始哈希值,将第一初始哈希值和IP地址相应的已知通信过程的协议ID关联存储生成所述IP地址哈希表;[0011 ]获取已知通信过程的主特征码,对主特征码进行哈希运算得到第二初始哈希值,将第二初始哈希值和主特征码相应的已知通信过程的协议ID关联存储生成主特征码哈希表;
[0012]获取已知通信过程的协议端口,对协议端口进行哈希运算得到第三初始哈希值,将第三初始哈希值和协议端口相应的已知通信过程的协议ID关联存储生成协议端口哈希表;
[0013]获取已知通信过程的数据包的长度,对数据包的长度进行哈希运算得到第四初始哈希值,将第四初始哈希值和数据包的长度相应的已知通信过程的协议ID关联存储生成数据包的长度哈希表。
[0014]优选地,所述步骤S2包括:
[0015]S21:根据所述IP地址哈希表对所述通信过程进行识别,若识别出所述通信过程,获取所述通信过程的协议ID,否则,进入步骤S22;
[0016]S22:根据所述主特征码哈希表对所述通信过程进行识别,若识别出所述通信过程,获取所述通信过程的协议ID,否则,进入步骤S23;
[0017]S23:根据所述协议端口哈希表对所述通信过程进行识别,若识别出所述通信过程,获取所述通信过程的协议ID,否则,进入步骤S24;
[0018]S24:根据所述数据包的长度哈希表对所述通信过程进行识别,若识别出所述通信过程,获取所述通信过程的协议ID,否则,进入步骤S25;
[0019]S25:通过设置在目的协议端口或者源协议端口的识别插件对所述通信过程进行识别,若识别出所述通信过程,获取所述通信过程的协议ID,否则,标记所述通信过程的协议为未定义。
[0020]优选地,所述步骤S21包括:
[0021]S211:通过所述IP地址中的目的IP地址进行哈希运算得到第一哈希值,在IP地址哈希表中查询与第一哈希值对应的哈希桶的链表头,遍历链表头对应的链表判断是否存在与所述第一哈希值匹配的第一节点,若存在,校验所述通信过程的目的协议端口,若通过校验,获取所述第一节点对应的协议ID;
[0022]S212:若链表中不存在与所述第一哈希值匹配的节点或者目的协议端口未通过校验,通过所述IP地址中的源IP地址进行哈希运算得到第二哈希值,在IP地址哈希表中查询与第二哈希值对应的哈希桶的链表头,遍历链表头对应的链表判断是否存在与所述第二哈希值匹配的第二节点,若存在,校验所述通信过程的源协议端口,若通过校验,获取所述第二节点对应的协议ID。
[0023]优选地,所述步骤S22包括:
[0024]S221:遍历主特征码的偏移量数组,循环从所述数组中取出偏移量;
[0025]S222,对取出的偏移量对应的数据包内容进行哈希运算得到第三哈希值,根据第三哈希值查询对应的哈希桶的链表头,判断链表头对应的链表是否为空,若不为空,遍历链表头对应的链表判断是否存在与所述第三哈希值匹配的第三节点,若存在,对所述通信过程的子特征码进行校验,若通过校验,获取所述点节点对应的协议ID;
[0026]S223:若链表头对应的哈希桶链表为空,或链表中不存在第三节点,或所述子特征码未通过校验,返回步骤S221取出下一偏移量。
[0027]优选地,所述步骤S23包括:
[0028]S231:通过所述协议端口中的目的协议端口进行哈希运算得到第四哈希值,在协议端口哈希表中查询与第四哈希值对应的哈希桶的链表头,遍历链表头对应的链表判断是否存在与所述第四哈希值匹配的第四节点,若存在,校验所述通信过程的子特征码,若通过校验,获取所述第四节点对应的协议ID;
[0029]S232:若链表中不存在与所述第四哈希值匹配的节点,或者子特征码未通过校验,通过所述协议端口中的源协议端口进行哈希运算得到第五哈希值,在协议端口哈希表中查询与第五哈希值对应的哈希桶的链表头,遍历链表头对应的链表判断是否存在与所述第五哈希值匹配的第五节点,若存在,校验所述通信过程的子特征码,若通过校验,获取所述第五节点对应的协议ID。
[0030]优选地,所述步骤S24包括:
[0031]S241:通过所述通信过程中的数据包的长度进行哈希运算得到第六哈希值,在数据包的长度哈希表中查询与第六哈希值对应的哈希桶的链表头,遍历链表头对应的链表判断是否存在与所述第六哈希值匹配的第六节点,若存在,判断在所述第六节点对应的所有数据包长度值的序列中,所述通信过程中的数据包的长度值是否位于所述序列的最后,若是,获取所述第六节点对应的协议ID;
[0032]S242:若遍历链表头对应的链表不存在与所述第六哈希值匹配的节点或者在所述第六节点对应的所有数据包长度值的序列中,所述通信过程中的数据包的长度值不是位于所述序列的最后,进入步骤S25。
[0033]优选地,所述步骤SI之前还包括:
[0034]获取所述通信过程的四元组信息,根据所述四元组信息在四元组哈希表中查询对应的节点,若能查询到对应的节点,判断该节点处的协议ID是否有定义,若有,获取所述节点对应的协议ID作为所述通信过程的协议ID;
[0035]若在四元组哈希表中未查询到节点或者查询到的节点对应的协议ID未定义,根据所述四元组信息中的三元组信息在预设三元组哈希表中查询对应的节点,若能查询到对应的节点,根据所述通信过程的信息将所述三元组信息补充为四元组信息,把该节点从三元组哈希表中转移到四元组哈希表中,获取该节点对应的协议ID作为所述通信过程的协议ID;
[0036]若在四元组哈希表和三元组哈希表中都未查询到节点,根据所述四元组信息创建一个新的节点添加到所述四元组哈希表中,标记该通信过程的协议ID为未定义,进入步骤Sl0
[0037]优选地,还包括:
[0038]若识别出所述通信过程的协议,获取所述通信过程的协议ID,并将该通信过程的协议ID关联存储到所述四元组哈希表中该通信过程对应的节点,然后对所述通信过程的应用层协议进行解码,判断其返回值中是否存在所述通信过程的预测通信过程信息,若存在,则判断所述预测通信过程的四元组信息是否完整,若完整,则将该四元组信息和相应的协议ID关联存储至所述四元组哈希表中,否则,将三元组信息和相应的协议ID关联存储至所述三元组哈希表中;
[0039]若所述通信过程的协议为未定义,判断所述通信过程的识别次数是否超过阈值,若是,则不再对所述通信过程进行识别,并将所述通信过程的协议标记为未知协议,否则,继续识别所述通信过程。
[0040]另一方面,本发明提供了一种网络应用层协议识别的系统,通过上述网络应用层协议识别的方法对通信过程进行识别。
[0041]本发明提供的网络应用层协议识
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1