[发明专利]一种基于字典树剪枝搜索的协议关键字识别方法有效
申请号: | 201611051833.6 | 申请日: | 2016-11-23 |
公开(公告)号: | CN106713273B | 公开(公告)日: | 2019-08-09 |
发明(设计)人: | 衣龙腾;齐维孔;周钠;李明;刘晓晖 | 申请(专利权)人: | 中国空间技术研究院 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;G06F16/22 |
代理公司: | 中国航天科技专利中心 11009 | 代理人: | 陈鹏 |
地址: | 100194 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种基于字典树剪枝搜索的协议关键字识别方法,首先获取需要识别的数据流,将数据流中数据存入循环队列buffer,对buffer中字符串记进行扫描,生成字典树中分支,在每次字典树中分支生成过程中,当满足剪枝条件时计算各个节点的剪枝阈值进行字典树剪枝,最后获取精炼比例PurifyRate,根据精炼比例PurifyRate得到关键字,完成关键字识别。本发明方法通过引入字典树剪枝算法,解决了使用传统字典树算法进行协议关键字识别时使用的存储空间过大的缺陷,具有提高了计算机的空间利用效率的优点,具有较好的使用价值。 | ||
搜索关键词: | 一种 基于 字典 剪枝 搜索 协议 关键字 识别 方法 | ||
【主权项】:
1.一种基于字典树剪枝搜索的协议关键字识别方法,其特征在于包括如下步骤:(1)获取需要进行协议关键字识别的数据流,建立长度为24的循环队列buffer,将迭代器index定位在数据流第1位,建立变量DataCount记录扫描过的数据流长度,建立变量NodeNum记录字典树中节点数量,建立字典树root, 其中,DataCount的初值为0,NodeNum的初值为0;(2)将以index为起点的数据流中的24位数据存入循环队列buffer,将buffer中存放的数据字符串记为A(a1a2...a24),从a1开始扫描字符串,将当前扫描的字符记为ai,若字典树root中某个节点存放的字符与ai相同,则将当前节点的计数值count加1,并将该字符赋值给当前节点,然后继续扫描字符串A(a1a2...a24),若字典树root中任何节点对应的字符都与ai不同,i=1,2,3…24,则将aiai+1…a24中的字符分别作为24‑i+1个节点,并连接在字符为ai‑1的节点上,包括字符aj的节点的深度depth为j、计数值count为1,NodeNum=NodeNum+(24‑i+1),j=i,i+1,…24,其中,存储字符为a0的节点为根节点;(3)index=index+1,DataCount=DataCount+1;(4)判断变量NodeNum、DataCount,如果NodeNum>MaxNodeNum或者DataCount%CycleTime=0,则转入步骤(5),否则转入步骤(2),直至DataCount+24等于数据流长度,转入步骤(7);其中,符号%代表求模运算;(5)计算得到深度为depth的节点的剪枝阈值MinCountList[depth]=DataCount/(2^depth)*10;(6)从字典树的根节点开始遍历字典树,将当前遍历到的节点temp的深度记为deptht、计数值记为countt,如果countt小于MinCountList[deptht],则将temp节点、temp节点的所有子节点从字典树中删除,否则继续遍历字典树直至遍历完毕,并转入步骤(2);(7)用字符串列表StrList记录协议关键字,获取精炼比例PurifyRate,从根节点开始遍历字典树,将当前遍历到节点记为temp,节点temp的深度记为deptht、计数值记为countt,节点temp的直接父节点记为parent,节点parent深度记为depthp、计数值记为countp,若countt/countp<PurifyRate,则将根节点到节点parent的分支上的所有节点记录的字符组成字符串,加入到StrList中,完成关键字识别。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国空间技术研究院,未经中国空间技术研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201611051833.6/,转载请声明来源钻瓜专利网。