CN100530182C - 一种通信系统中字符串匹配信息的处理方法 - Google Patents
一种通信系统中字符串匹配信息的处理方法 Download PDFInfo
- Publication number
- CN100530182C CN100530182C CNB2006100631790A CN200610063179A CN100530182C CN 100530182 C CN100530182 C CN 100530182C CN B2006100631790 A CNB2006100631790 A CN B2006100631790A CN 200610063179 A CN200610063179 A CN 200610063179A CN 100530182 C CN100530182 C CN 100530182C
- Authority
- CN
- China
- Prior art keywords
- character string
- match
- information
- many
- matching
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种通信系统中字符串匹配信息的处理方法,包括以下步骤:A、确定字符串的匹配类型为精确匹配或多通配符匹配;B、构造不同的匹配结构体:若为精确匹配则提取所述字符串的长度信息,并构造精确匹配结构体;若为多通配符匹配则提取所述字符串的各子字符串,并构造与其一一对应的多通配符结构体;C、为所述字符串构造对应的匹配信息描述符,若为精确匹配:其包含指向所述精确匹配结构体的指针,且将其链入具有相同字符串长度信息的精确匹配散列索引链表;若为多通配符匹配:其包含指向所述各多通配符结构体的指针,且将其链入多通配符匹配的单链表。本发明所述方法同时支持字符串的精确匹配和多通配符匹配并满足其实时匹配要求。
Description
技术领域
本发明涉及一种字符串匹配信息的处理方法,尤其是一种通信系统中字符串匹配信息的处理方法。
背景技术
目前查找字符串的方法比较多,比较经典的是BM(boyer-moore,坡艺尔-摩尔)算法和状态机法。这两种算法的共同特点都是对待查找的字符串P进行预处理,生成各自的辅助目标P’,然后利用P’进行字符串的查找。
BM算法根据待查找的字符串P生成滑动跨度P’,如图1所示,其查找方法如下:把P中的字符和文本字符串T中的字符按从后往前的顺序进行比较,先把P中的末尾字符和T中的字符进行比较,如果相同,再比较P中的前一个字符和T中的前一个字符。如果相同,根据比较的结果读取响应字符的滑动跨度,按照滑动跨度往后滑动,这样,如果字符串P得不到匹配,P就会往后滑动,直到在文本字符串T中找到待查找的字符串P。这种方法适合查找字符串P比较长,查找过程中往后滑动的平均跨度相对较长,效率较高;但是对于较短的字符串效率较低。
状态机方法构建的P’是一个状态机,由状态机来进行字符串的匹配。例如要寻找的字符串是P:AABC,那么要构建的状态机如图2所示。
状态机是根据P作出来的,输入的文本字符串是T,可以看出,当状态到达最后一个“×”时,也就是字符串匹配成功了。输入字符串的次数就是所找字符在字符串中的位置。可以利用这种方法编写一个函数实现状态机,函数的入参是要匹配的字符串P和要输入的文本字符串T,每次匹配时动态创建一个状态机。这种方法的缺点是当要匹配的字符串P比较长时,状态机的生成相对比较麻烦。如果m表示P的字符个数,那么状态机的复杂度是以m的平方增加的。
这两种方法都能在给定的文本字符串T中找到要查找的字符串P,且效率比较高,但是却不能对于P字符串中若干关键子字符串同时进行匹配。这需要对字符串P进行更详细的处理,达到能匹配P中多个关键子字符串的功能。
目前关键字查找方法中,美国的斯蒂尔.P.尼克额尔在专利号为90107971.5的《具有部分关键字分支的前缀检索树》中提出的关键字查找算法将前缀关键字节点构成前缀索引树,用这种方法可以从正文中查找出多个关键字,但该种方法无法同时支持字符串的精确匹配。
发明内容
本发明要解决的技术问题是提供一种能在通信系统中同时实现字符串精确匹配和多通配符匹配的匹配信息的处理方法。
本发明解决其技术问题所采用的技术方案是:
一种通信系统中字符串匹配信息的处理方法,包括以下步骤:
A、按照是否需要支持多通配符匹配确定字符串的匹配类型为精确匹配或者多通配符匹配;
B、根据所述字符串的匹配类型,构造不同类型的匹配结构体:
若为精确匹配类型,则:
B1、提取所述字符串的长度信息,并构造精确匹配结构体;
若为多通配符匹配类型,则:
B2、提取所述字符串所需要匹配的各子字符串,并构造与所述各子字符串一一对应的多通配符结构体;
C、为所述字符串构造对应的匹配信息描述符,
若为精确匹配类型,则:
C1、所述匹配信息描述符包含指向所述精确匹配结构体的指针,根据所述字符串的长度信息,将所述匹配信息描述符链入具有相同字符串长度信息的精确匹配散列索引链表;
若为多通配符匹配类型,则:
C2、所述匹配信息描述符包含指向所述各多通配符结构体的指针,且将所述匹配信息描述符链入多通配符匹配的单链表。
所述步骤B1中生成的精确匹配结构体包含所述字符串的长度信息和所述字符串的原型信息。
所述步骤B2中生成的多通配符匹配结构体包含相应的子字符串的长度信息、ASIC码和所述ASIC码对应的滑动跨度信息;所述滑动跨度信息为利用坡艺尔-摩尔算法计算得到。
所述匹配信息描述符中指向各多通配符结构体的指针与所述字符串中的各子字符串一一对应;所述步骤C中生成的匹配信息描述符还包括所述字符串的匹配类型信息以及所述字符串中包含的子字符串数量信息。
本发明的有益效果主要表现在:本发明所述的匹配信息处理方法能同时支持字符串的精确匹配和多通配符匹配,对精确匹配的情况,采用HASH(散列)管理,主动提取字符串的相关信息,提高了查找速度;对多通配符匹配的情况,则将字符串转化为多个子字符串的组合,采用经典BM算法,效率优于状态机算法。总的说来,本发明所述方法可满足通信系统在精确匹配和多通配符匹配情况下的实时匹配要求。
附图说明
图1是应用BM算法在文本字符串T中查找字符串P的示意图;
图2是寻找字符串AABC时需构建的状态机示意图;
图3网络数据包七层过滤设备在应用中的位置示意图;
图4网络数据包七层过滤设备实现方法框图;
图5过滤规则更新示意图;
图6匹配信息描述符示意图;
图7精确匹配结构体组织框图;
图8多通配符匹配结构体组织框图;
图9网络数据包七层过滤时匹配信息的组织结构示意图。
具体实施方式
图1、图2已在背景技术中进行过描述,此处不再赘述。
进行字符串匹配信息的处理时,
A、按照是否需要支持多通配符匹配确定字符串的匹配类型为精确匹配或者多通配符匹配;
B、根据所述字符串的匹配类型,构造不同类型的匹配结构体:
若为精确匹配类型,则:
B1、提取所述字符串的长度信息,并构造精确匹配结构体;
若为多通配符匹配类型,则:
B2、提取所述字符串的各子字符串,并构造与所述各子字符串一一对应的多通配符结构体;
C、为所述字符串构造对应的匹配信息描述符,
若为精确匹配类型,则:
C1、所述匹配信息描述符包含指向所述精确匹配结构体的指针,根据所述字符串的长度信息,将所述匹配信息描述符链入具有相同字符串长度信息的精确匹配散列索引链表;
若为多通配符匹配类型,则:
C2、所述匹配信息描述符包含指向所述各多通配符结构体的指针,且将所述匹配信息描述符链入多通配符匹配的单链表。
将本发明所述方法应用于网络数据包七层过滤中时:
如图3所示,过滤系统位于局域网和公网链路之间,过滤局域网和公网的分组域报文交互。过滤报文时,把报文的URI看作字符串处理基础。对URI进行多通配符的报文过滤,支持多通配符匹配和精确匹配两种类型。
如图4,本过滤方法需要包括以下三个模块:过滤器输入模块、过滤规则处理模块和URI过滤器。后台进行URI配置,并传送配置后的数据到前台过滤器处理模块,过滤器处理模块对过滤规则进一步处理转换为URI过滤器能够识别的过滤规则。
过滤规则更新流程如图5所示。过滤器处理模块首先区分字符串的匹配类型是精确匹配还是多通配符匹配。对于精确匹配,提取字符串有效信息,主要包括URI的长度和URI的域名,构造精确匹配结构体;对于多通配符匹配,分析每个子字符串,将多通配转化为多个单通配的情况,并按照BM算法,对各个子字符串进行处理,得到子字符串对应的滑动跨度信息,从而构造多匹配符结构体。并且,为前述字符串构造匹配信息描述符,对于精确匹配,匹配信息描述符的结构体指针指向前述精确匹配结构体,并按照域名和URI的长度将匹配信息描述符将匹配信息描述符挂入精确匹配散列链表;对于多通配符匹配,匹配信息描述符的各结构体指针指向前述各多匹配符结构体,并将匹配信息描述符挂入多通配符匹配单链表。
图6是匹配信息描述符的组织结构,下面是匹配信息描述符的成员说明。
601“匹配类型”:匹配类型标识了字符串的匹配类型属性,每一字符串预处理后得到一种匹配类型,如下列表所示:
RULE_C
RULE_WC
RULE_CW
RULE_CWC
RULE_WCW
RULE_WCWC
RULE_CWCW
RULE_CWCWC
这些标志把过滤规则分成了两类:精确匹配和多通配符匹配。其中RULE_C代表精确匹配,比如“http://www.sina.com.cn”,其它规则代表多通配符匹配,比如RULE_CWC代表类型“www.*.net”,RULE_WC代表类型“*.sina.com”。规则中W和C分别代表的含义是通配符号和字符串C:char W:wildcard。C和W的位置直观的标识通配匹配中通配符的位置。
602“子字符串数量”,标识匹配中子字符串的数量。若为精确匹配,则子字符串数量为1,表示只有一个字符串;对于多通配符匹配,该字符串表示预处理后的子字符串的数量,比如“www.*.net/*.jpg”,预处理后分成“www”“.net/”“.jpg”三个字符串,成员“子字符串数量”就是3。
603“基于BM查找算法的匹配结构体指针”,该指针指向一个结构体,这个结构体用来存放匹配信息,参看图7与图8。这个指针并不一定都有效,指针有效个数与“子字符串数量”相同,各指针与各子字符串一一对应。这里只给出了需要匹配的子字符串最多为三个的情况,当然,也可以根据实际扩展到N个指针的情况。
604“NEXT”,指向下一个匹配信息描述符的指针,用来构成单向链表。
图7、图8为匹配结构体组织框图。
对于精确匹配结构体,如图7所示:
701“精确匹配字符串的长度”。
702“精确匹配字符串的原型”,为精确匹配字符串的ASIC码。
精确匹配类型RULE_C,比如,“www.sina.com.cn”,701的长度为15。702存放这个字符串的ASIC码。
对于多通配符匹配结构体,如图8所示:
801“子字符串长度”,为处理得到的子字符串的字符长度。
802“子字符串ASIC码”,为处理得到的子字符串的ASIC码。
803“子字符串ASIC码对应的滑动跨度”,为处理得到的子字符串进行BM算法处理后得到的滑动跨度。
比如“www.*.net/*.jpg”中第一个字符串“www.”801是4,802是这个字符串的ASIC码,803是这个字符串经过BM算法处理后得到的滑动跨度。
当进行网络数据包七层过滤时,匹配信息通过上述字符串匹配信息的处理方法得到如图9所示的网络数据包七层过滤时匹配信息的组织结构示意图。
901按照URI特性,比如域名对URI进行分类得到的HASH键值,将相同URI特性的报文统一管理。
902精确匹配HASH索引指针。
903多通配符匹配单链表指针。
904如图6所述匹配信息描述符。
905如图7所述精确匹配结构体信息。
906如图8所述多通配符匹配结构体信息。
对于给定的报文,首先进行精确匹配,主动提取该报文的相关信息,然后以提取信息为键值进行HASH运算,得到相同键值的HASH链表,如果HASH后的精确匹配无法实现匹配,则进行多通配符匹配。
Claims (4)
1、一种通信系统中字符串匹配信息的处理方法,其特征在于包括以下步骤:
A、按照是否需要支持多通配符匹配确定字符串的匹配类型为精确匹配或者多通配符匹配;
B、根据所述字符串的匹配类型,构造不同类型的匹配结构体:
若为精确匹配类型,则:
B1、提取所述字符串的长度信息和原型信息,并构造精确匹配结构体;
若为多通配符匹配类型,则:
B2、提取所述字符串的各子字符串的长度信息、ASIC码和所述ASIC码对应的滑动跨度信息,并构造与所述各子字符串一一对应的多通配符结构体;
C、为所述字符串构造对应的匹配信息描述符,
若为精确匹配类型,则:
C1、所述匹配信息描述符包含指向所述精确匹配结构体的指针,根据所述字符串的长度信息,将所述匹配信息描述符链入具有相同字符串长度信息的精确匹配散列索引链表;
若为多通配符匹配类型,则:
C2、所述匹配信息描述符包含指向各多通配符结构体的指针,且将所述匹配信息描述符链入多通配符匹配的单链表。
2、如权利要求1所述的通信系统中字符串匹配信息的处理方法,其特征在于:所述滑动跨度信息为利用坡艺尔-摩尔算法计算得到。
3、如权利要求1所述的通信系统中字符串匹配信息的处理方法,其特征在于:所述匹配信息描述符中指向各多通配符结构体的指针与所述字符串中的各子字符串一一对应。
4、如权利要求3所述的通信系统中字符串匹配信息的处理方法,其特征在于:所述步骤C中生成的匹配信息描述符还包括所述字符串的匹配类型信息以及所述字符串中包含的子字符串数量信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100631790A CN100530182C (zh) | 2006-10-17 | 2006-10-17 | 一种通信系统中字符串匹配信息的处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100631790A CN100530182C (zh) | 2006-10-17 | 2006-10-17 | 一种通信系统中字符串匹配信息的处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101165681A CN101165681A (zh) | 2008-04-23 |
CN100530182C true CN100530182C (zh) | 2009-08-19 |
Family
ID=39334380
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100631790A Expired - Fee Related CN100530182C (zh) | 2006-10-17 | 2006-10-17 | 一种通信系统中字符串匹配信息的处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100530182C (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101960469B (zh) * | 2008-10-20 | 2014-03-26 | 王强 | 快速特征码扫描 |
CN101420440B (zh) * | 2008-12-05 | 2011-08-24 | 华为技术有限公司 | 字符串匹配处理方法及装置 |
CN101807184B (zh) * | 2009-02-16 | 2013-05-01 | 阿尔卡特朗讯 | 用于检索包含通配符的字符串的方法和系统 |
CN101873199B (zh) * | 2010-06-29 | 2014-11-05 | 中兴通讯股份有限公司 | 码字的匹配方法和装置 |
CN102063510B (zh) * | 2011-01-17 | 2012-08-29 | 珠海全志科技股份有限公司 | 字符串的匹配查找方法 |
CN105678090A (zh) * | 2016-01-15 | 2016-06-15 | 杭州数梦工场科技有限公司 | 数据处理方法和系统 |
CN106559420A (zh) * | 2016-11-07 | 2017-04-05 | 杭州迪普科技股份有限公司 | 一种报文的过滤方法及装置 |
CN111309988B (zh) * | 2020-02-03 | 2023-05-02 | 北京字节跳动网络技术有限公司 | 基于编码的字符串检索方法、装置及电子设备 |
CN112632343B (zh) * | 2020-12-30 | 2023-12-26 | 深圳大普微电子科技有限公司 | 一种字符串匹配方法、装置、设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1316696A (zh) * | 2000-04-06 | 2001-10-10 | 国际商业机器公司 | 用于网络处理器的全匹配搜索方法和设备 |
CN1404591A (zh) * | 2000-12-22 | 2003-03-19 | 三星电子株式会社 | 执行高速互联网协议路由查找和管理路由选择/转发表的装置和方法 |
US6556990B1 (en) * | 2000-05-16 | 2003-04-29 | Sun Microsystems, Inc. | Method and apparatus for facilitating wildcard searches within a relational database |
CN1475930A (zh) * | 2002-08-15 | 2004-02-18 | 联想(北京)有限公司 | 基于状态检测的链路层资源定位信息过滤的方法 |
CN1573714A (zh) * | 2003-06-04 | 2005-02-02 | 英特尔公司 | 比较多个字节的数据与已存储的字符串段的方法及系统 |
-
2006
- 2006-10-17 CN CNB2006100631790A patent/CN100530182C/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1316696A (zh) * | 2000-04-06 | 2001-10-10 | 国际商业机器公司 | 用于网络处理器的全匹配搜索方法和设备 |
US6556990B1 (en) * | 2000-05-16 | 2003-04-29 | Sun Microsystems, Inc. | Method and apparatus for facilitating wildcard searches within a relational database |
CN1404591A (zh) * | 2000-12-22 | 2003-03-19 | 三星电子株式会社 | 执行高速互联网协议路由查找和管理路由选择/转发表的装置和方法 |
CN1475930A (zh) * | 2002-08-15 | 2004-02-18 | 联想(北京)有限公司 | 基于状态检测的链路层资源定位信息过滤的方法 |
CN1573714A (zh) * | 2003-06-04 | 2005-02-02 | 英特尔公司 | 比较多个字节的数据与已存储的字符串段的方法及系统 |
Non-Patent Citations (2)
Title |
---|
带通配符的模式匹配算法及其数据结构. 袁鹤龄,张玉君.湖南大学学报,第20卷第3期. 1993 |
带通配符的模式匹配算法及其数据结构. 袁鹤龄,张玉君.湖南大学学报,第20卷第3期. 1993 * |
Also Published As
Publication number | Publication date |
---|---|
CN101165681A (zh) | 2008-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100530182C (zh) | 一种通信系统中字符串匹配信息的处理方法 | |
CN101401090B (zh) | 深度包过滤器及深度包过滤方法 | |
US7240048B2 (en) | System and method of parallel pattern matching | |
CN110245951B (zh) | 一种基于树形结构的联盟链主从多链共识方法 | |
CN101453424B (zh) | 一种网络信息资源访问控制方法和系统 | |
CN102129479B (zh) | 一种基于概率潜在语义分析模型的万维网服务发现方法 | |
CN106055452B (zh) | 创建交换机日志模板的方法和装置 | |
CN110727760B (zh) | 一种对大规模知识图谱进行分布式正则路径查询的方法 | |
KR100960117B1 (ko) | 시그니처 패턴 매칭방법과 그 시스템 및 시그니처 패턴이기록된 기록매체 | |
Shevertalov et al. | A reverse engineering tool for extracting protocols of networked applications | |
CN105045808B (zh) | 一种复合规则集匹配方法和系统 | |
CN101558405A (zh) | 将主机系统数据库转换为开放系统数据库的转换装置和方法 | |
CN109933800A (zh) | 数据机构体系的创建方法、信息查询方法及装置 | |
CN105426474A (zh) | 统一资源定位符url匹配的方法及装置 | |
CN105808262A (zh) | 一种基于json格式数据的命名匹配方法 | |
US6976025B2 (en) | Database and method for storing a searchable set of keywords | |
CN103365934A (zh) | 复杂命名实体抽取方法及装置 | |
CN103929499A (zh) | 一种物联网异构标识识别方法和系统 | |
CN103927367A (zh) | 基于事件的微博采集系统及方法 | |
CN108549679B (zh) | 用于url分析系统的文件扩展名快速匹配方法和装置 | |
CN110377700A (zh) | 一种专业知识语义检索系统 | |
CN109710860A (zh) | 一种url分类匹配的方法及装置 | |
CN109086064A (zh) | 基于自定义标签语言的http协议要素通用抽取方法 | |
Inenaga et al. | Counting parameterized border arrays for a binary alphabet | |
CN112000970A (zh) | 一种基于部件关联图的文本无载体隐写方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090819 Termination date: 20151017 |
|
EXPY | Termination of patent right or utility model |