一种基于dns和包长组合的应用识别方法

文档序号:9491857阅读:425来源:国知局
一种基于dns和包长组合的应用识别方法
【技术领域】
[0001] 本发明涉及网络应用技术领域,具体地讲,是涉及一种基于DNS和包长组合的应 用识别方法。
【背景技术】
[0002] 目前,基于网络的终端应用程序越来越多,当用户在同一终端上同时开启多种应 用程序时,如何对各种网络应用程序有效地分配网络带宽,保障各种网络应用程序高效正 常地运行成了一种新的用户需求。要想实现这种用户需求的首先任务是在网络中识别这些 应用程序,因此快速准确地识别应用程序至关重要。
[0003] 当前存在的网路应用识别方法主要为端口识别技术和基于报文内容的深度识别 技术: 端口识别技术是通过分析网络数据包的端口信息来分析HTTP协议,因此端口识别技 术只能对基础的基于http协议的应用进行识别,而现在很多的应用都是采用了 P2P协议, 其所要占用的通信端口都是不确定的、动态变更的,端口识别技术在此就显得无能为力了, 无法实现对这些应用的识别,如此导致其在基于互联网层面上对各种应用的识别率非常 低,误判率高; 基于报文内容的深度识别技术耗费时间比较长,其在每次建立新连接时都需要对报文 内容进行深度识别,识别计算量大,导致其识别效率低下,无法满足对实时性要求高的应用 场景。
[0004] 综上所述,现有技术中的应用识别方法存在识别率低、误判率高、实时性低的缺 点。

【发明内容】

[0005] 为克服现有技术中的上述问题,本发明提供一种构思新颖、设计巧妙、能够快速准 确地对应用识别的基于DNS和包长组合的应用识别方法。
[0006] 为了实现上述目的,本发明采用的技术方案如下: 一种基于DNS和包长组合的应用识别方法,包括如下步骤: (SlO)当终端通过某应用与外网建立网络连接时,在网络设备中创建对应的连接跟踪 表,用以分配每个经过该连接的数据包,形成相应的连接记录项; (S20 )通过快速查找表对所述连接跟踪表进行特征匹配,若匹配成功,命中快速查找表 内已有的记录,则完成识别,否则进行下一步; (S30)通过DNS检测模块判断该连接是否命中DNS应用识别库,若命中,则标记该连接 完成识别,否则进行下一步; (S40)通过包长检测模块对经过该连接的构成会话序列的多个数据包进行特征匹配, 判断是否命中包长应用识别库,若命中,则匹配成功,标记该连接完成识别,否则识别失败, 不再匹配; 其中,所述快速查找表、DNS应用识别库和包长应用识别库存储于网络设备中。DNS (Domain Name System,域名系统)。
[0007] 进一步地,为了提高识别速度,该基于DNS和包长组合的应用识别方法,还包括: (S50)将所有完成识别的连接及其特征加入快速查找表中缓存。
[0008] 具体地,所述步骤(SlO)中连接跟踪表记录的特征包括该连接的状态、地址和端 口,以及该连接所采用的协议。
[0009] 为了保证快速查找表的匹配速度,所述快速查找表的老化基于时长或者命中次 数。所述基于时长有两种方式,其一是快速查找表中保存的特征数据信息在一设定时间内 没有命中则失效,其二是将快速查找表内信息按命中时间排序,当快速查找表的储存容量 达上限又有新的特征信息加入时,排序最末即未命中时间最久的信息失效;所述基于命中 次数有两种方式,其一是快速查找表中保存的特征数据信息超过命中次数阀值则失效,其 二是将快速查找表内信息按命中次数高低排序,当快速查找表的储存容量达上限又有新的 特征信息加入时,排序最末即命中次数最少的信息失效。为了更合理更有效地利用快速查 找表,优选采用基于时长和命中次数相结合的方式。
[0010] 为了实现DNS识别,所述步骤(S30)中判断是否命中的方法如下: (531) 所述DNS应用识别库内预先存储有域名与应用的对应表信息,根据建立该网络 连接时的DNS响应报文中携带的IP地址与域名的对应表信息,获得并存储该IP地址、域名 和应用的三元对应表; (532) 判断该连接的目的IP地址是否存在于所述三元对应表,若是,则命中,由此获得 该连接对应的域名以及对应的应用,否则未命中。
[0011] 为了保持识别的准确性和及时性,所述DNS应用识别库和包长应用识别库均由云 服务器定期更新。
[0012] 为了进一步提高应用识别的准确度,所述步骤(S40)中,依次对同一会话序列中的 每个所述数据包进行匹配,其具体过程如下: (541) 获取当前数据包传输的方向; (542) 将该数据包的负载长度作为对象通过包长检测模块进行匹配,筛选出命中的应 用识别号,若未命中,则标记该方向检测结束,反之则记录命中的应用识别号形成命中记录 表,并进入步骤(S43); (543) 将当前命中记录表与本方向上此前的命中记录表取交集,获得命中交集表,若 存在本方向的上一次命中交集表,所述当前命中记录表与本方向上一次的命中交集表取交 集;若当前命中记录表为本方向第一次记录,则将该命中记录表作为命中交集表; (544) 判断命中交集表是否为空,若是,则标记该方向检测结束,否则进入步骤(S45); (545) 判断该数据包是否为叶子节点,若是,则将该命中交集表作为本方向记录表并进 入步骤(S46),否则跳转到步骤(S41)对下一个数据包进行匹配; (546) 再按步骤(S41)~(S45)的方法获取该会话序列中其方向与所述本方向记录表相 对的反方向记录表,若获得,则进入步骤(S47),反之则未命中包长应用识别库,识别失败; (547) 对所述本方向记录表和反方向记录表取交集,若为空,则未命中包长应用识别 库,识别失败,反之则命中包长应用识别库,完成识别,记录相应的应用识别号; 其中,所述叶子节点是指该会话序列中每一个方向上的最后一个数据包,所述应用识 别号是网络设备内部对各应用预设的身份编码。
[0013] 为进一步提高包长检测的准确度,所述步骤(S42)中,当匹配命中有应用识别号时 还通过DPI检测模块对该数据包负载进行深度报文检测,若DPI未命中,则标记该方向检测 结束,反之则记录命中的应用识别号形成命中记录表。
[0014] DPI (Deep Packet Inspection,深度包检测),DPI技术是现有较为成熟的技术, 本发明中不再赘述。
[0015] 更进一步地,为考虑到一些特殊情况的筛选,所述步骤(S42)或(S44)中,当标记 该方向检测结束时,跳转到步骤:(S48)判断包长检测模块是否设置有单方向识别模块,若 是,则进入步骤(S49),否则识别失败; (S49 )获取反方向的数据包,并按步骤(S41)~(S45 )的方法对所述反方向的数据包进 行匹配,若获得对应的反方向记录表,则识别成功,记录相应的应用识别号,反之则识别失 败; 其中,所述单方向识别模块是指仅判断会话序列中一个方向的数据包即确定唯一应用 识别号的模块。
[0016] 更进一步地,所述步骤(S45)中,在确定本方向记录表之后,在进入步骤(S46)之 前,插入对本方向数据包进行单方向识别的判断:跳转到步骤(S48')判断包长检测模块是 否设置有单方向识别模块,若是,则通过单方向识别模块确定应用识别号,完成识别,记录 相应的应用识别号,否则进入步骤(S46)。
[0017] 具体地,所述步骤(S42)中,包长检测模块将数据包负载长度对比包长应用识别库 判断是否命中来进行匹配筛选。
[0018] 为了加快识别速度,对于TCP协议,忽略syn报文的检测,对于TCP和UCP协议,忽 略负载长度为〇的数据包检查。
[0019] 与现有技术相比,本发明具有以下有益效果: (1)本发明通过终端联网时在中间网络设备上创建的连接跟踪表来识别相应的应用, 并利用DNS识别和数据包包长及DPI识别相结合的方式,提前排除干扰因素,大大提高了对 终端应用识别的效率,而且由于设置
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1