CN109150962B - 一种通过关键字快速识别http请求头的方法 - Google Patents

一种通过关键字快速识别http请求头的方法 Download PDF

Info

Publication number
CN109150962B
CN109150962B CN201810715513.9A CN201810715513A CN109150962B CN 109150962 B CN109150962 B CN 109150962B CN 201810715513 A CN201810715513 A CN 201810715513A CN 109150962 B CN109150962 B CN 109150962B
Authority
CN
China
Prior art keywords
rule
bitmap
keyword
array
regular
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.)
Active
Application number
CN201810715513.9A
Other languages
English (en)
Other versions
CN109150962A (zh
Inventor
董博
谢正强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING NETEAST TECHNOLOGIES CO LTD
Original Assignee
BEIJING NETEAST TECHNOLOGIES CO LTD
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by BEIJING NETEAST TECHNOLOGIES CO LTD filed Critical BEIJING NETEAST TECHNOLOGIES CO LTD
Priority to CN201810715513.9A priority Critical patent/CN109150962B/zh
Publication of CN109150962A publication Critical patent/CN109150962A/zh
Application granted granted Critical
Publication of CN109150962B publication Critical patent/CN109150962B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种通过关键字快速识别HTTP请求头的方法,所述方法包括:步骤1)建立关键字数组树、规则id表和规则bitmap集合表;步骤2)解析HTTP请求头的字段,得到字段名和字段值;从字段值中获取关键字,依次利用关键字数组树、规则id表和规则bitmap集合表获取到该请求头的规则。在本发明的方法中,如果命中了一条规则,以后不再检查关键字和规则,只解析HTTP字段和值,提高了识别的效率和速度;而且本发明的HTTP请求识别效率极高,不会因为配置规则增多而导致性能下降。

Description

一种通过关键字快速识别HTTP请求头的方法
技术领域
本发明涉及HTTP内容缓存服务领域,具体涉及一种通过关键字快速识别HTTP 请求头的方法。
背景技术
目前分析HTTP报文头的处理方法,是先解析出HTTP报文头的所有字段,比如解析GET请求时,需要解析出URI,Host,文件扩展名,Refer等,然后按照Host,文件扩展名来确定该请求属于哪个网站哪种应用请求。早期绝大部分网站都能通过Host和扩展名来区分各种类型的请求,因为Host通常是网站域名,格式固定,扩展名字符串也很短,很容易做到高效识别。
但随着网站的变化,越来越多的HTTP请求通过Host和扩展名已经不能识别出该请求属性哪个网站哪种应用了,因为很多请求的Host不是域名而是IP地址,有的请求URI中也没有扩展名。通过其他字段,如URI中的关键字,Refer中的关键字,或URI中的参数等一般能识别这样的请求,但是这些都是普通的字符串,需要在这些字符串中查找关键字,目前的算法效率比较低,一般是解析完HTTP请求的所有字段后,按照事先配置好的关键字规则表,逐条检查能匹配到哪个配置规则,然后根据命中的规则确定这个请求属于哪个网站的哪种应用请求。这种逐条检查关键字规则表的方法效率较低,而且随着规则的增加,处理每个请求所需要的时间会线性增加,处理效率也就线性的降低。
而且目前很多的HTTP请求,只能通过关键字才能识别该请求属于哪个网站的哪种应用。
发明内容
本发明的目的在于针对目前HTTP请求通过关键字识别效率低的问题,提出了一种实现了高效的HTTP关键字识别的方法,以便可以即时处理现网大数据并发的请求,或高效分析web请求数据,而且不会随着关键字规则的增加处理效率降低。
为了实现上述目的,本发明提出了一种通过关键字快速识别HTTP请求头的方法,所述方法包括:
步骤1)建立关键字数组树、规则id表和规则bitmap集合表;
步骤2)解析HTTP请求头的字段,得到字段名和字段值;从字段值中获取关键字,依次利用关键字数组树、规则id表和规则bitmap集合表获取到该请求头的规则。
作为上述方法的一种改进,所述关键字数组树为多个数组组成的树形结构,用于存储配置的关键字数据,每个数组包括若干个节点,每个节点包括三个元素:array、 is_leaf和id;元素array是指向下一个数组的指针,元素is_leaf用于标记该节点是否为叶子节点,元素id是这个关键字的唯一数值型编码。
作为上述方法的一种改进,所述规则id表用于记录关键字所属的规则id和这个关键字要检查的字段名信息;所述规则id表是一个以关键字id作为key的hash表;这个hash表的索引表是一个数组,数组的每个元素接链表的结构;每个元素有两个属性:ruler_id和str_bitmap,ruler_id指明配置规则的id,str_bitmap指明配置的这个关键字在本规则中是要检查HTTP的所属字段。
作为上述方法的一种改进,所述规则bitmap集合表为一个规则bitmap数组;每个规则bitmap,用于指明一个规则需要检查的HTTP的字段;规则bitmap是一个8 字节整型值,以字节的指定bit位代表在HTTP的字段设置关键字检查。
作为上述方法的一种改进,所述步骤1)具体包括:
步骤1-1)创建若干个关键字规则,所述关键字规则,用于定义HTTP请求头中每个字段名包含的关键字;
步骤1-2)读取一条关键字规则,将关键字规则中的每个关键字添加到数组树中,一个关键字添加到数组树中后,会得到一个关键字id,用这个关键字id作为下标,定位到规则id表的索引数组,在这个数组元素下链接一个新节点,为新节点增加两个属性:ruler_id和str_bitmap;
步骤1-3)以ruler_id作为下标,定位到规则bitmap集合表中的一个规则bitmap,设置这个规则bitmap对应的bit值,一个规则有m个关键字,在规则bitmap集合表中对应的规则bitmap有m个bit位被设置。
作为上述方法的一种改进,一个关键字规则包含一个或多个关键字。
作为上述方法的一种改进,所述步骤2)具体包括:
步骤2-1)创建一个与规则bitmap集合表相同的临时bitmap集合表;
步骤2-2)解析HTTP请求头的一个字段,得到字段名和字段值;设置剩余字符串为该字段值的全部字符串;
步骤2-3)将剩余字符串在关键字数组树进行关键字匹配;
步骤2-4)如果匹配到关键字id,返回已检查字符串的个数n,进入步骤2-5);否则,转入步骤2-8);
步骤2-5)根据关键字id在规则id表中找到该关键字所属的规则ruler_id和关键字的str_bitmap;
步骤2-6)用规则ruler_id在临时bitmap集合表中进行定位,得到临时bitmap;如果是第一次使用该临时bitmap处理HTTP请求,将临时bitmap的64个bit位置0;然后用str_bitmap设置临时bitmap的一个bit位为1,否则,直接用str_bitmap设置临时bitmap的一个bit位为1;
步骤2-7)用规则ruler_id在规则bitmap集合表中进行定位,得到规则bitmap;用临时bitmap和规则bitmap比较,如果临时bitmap设置的bit位包含规则bitmap设置的bit位,则匹配该规则;转入步骤2-9);否则,转入步骤2-8);
步骤2-8)将全部的字符串减去已扫描过的n个字符串得到剩余字符串,如果剩余字符串为空,该请求没有匹配任何规则;流程结束;否则,转入步骤2-2);
步骤2-9)匹配的规则为该HTTP请求头对应的规则。
本发明的优势在于:
1、本发明能够通过关键字高效识别HTTP请求属于哪个网站的哪种应用;
2、在本发明的方法中,如果命中了一条规则,以后不再检查关键字和规则,只解析HTTP字段和值,提高了识别的效率和速度;
3、本发明的HTTP请求识别效率极高,原因在于:只对报文进行一次扫描,在解析报文的同时,可检查配置的所有关键字;每个表的查找都是根据已知下标值一步定位;配置规则转化为bitmap,即一个8字节整型,比较规则只是比较一个整型值;
4、本发明的方法不会因为配置规则增多而导致性能下降;原因在于:关键字数组树不需要冲突处理,id表是hash表,一个字符串属于很多ruler的情况在实际使用时很少,id表冲突很小。临时bitmap集合表和规则bitmap集合表实际上都是数组,配置时规则id不重复,表中每个元素都是按照规则id存放在对应的下标位置,所以这两个表在查找时直接定位没有冲突。
附图说明
图1为本发明的实施例1的网络部署结构示意图;
图2为本发明的关键字数组树的结构图;
图3为本发明的规则id表的结构图;
图4为本发明的规则bitmap的示意图;
图5为本发明的通过关键字快速识别HTTP请求头的方法的流程图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细的说明。
实施例1
实施例1是一个web数据分析系统。图1为网络部署结构,用户的HTTP请求数据在经过交换机向外请求时,交换机会复制一份上行数据,发送给数据采集分析服务器,数据采集分析服务器,按照配置好的规则,也就是前面讲的按关键字识别网站及应用的规则,输出结果时,标明每个请求是哪个网站及哪种应用。分析结果会定期上报到报表系统,报表系统根据网站及应用统计应用的请求热度,用户行为等。
采集分析服务器配置标准为:
cpu:Intel(R)Xeon(R)CPU E5-2640v2@2.00GHz,16核心
内存:16G或16G以上
网卡:Intel Corporation 82599ES 10-Gigabit SFI/SFP+Network Connection
混合网络环境下运行,即上行流量为包含HTTP请求,也包含所有其他协议请求,HTTP上行包数占比约为20%,一个网卡可处理8G请求,4个网卡时,可处理 30G请求。
本发明的实施例1提供了一种通过关键字快速识别HTTP请求头的方法,所述方法包括:
首先,在处理HTTP请求报文之前,预先配置好关键字规则,关键字规则定义一个HTTP请求头中,哪些字段包含哪些关键字,则认为这个请求属于哪个网站的哪种应用请求。一个规则可以包含多个关键字,规则配置文件可以是如下形式:
Figure BDA0001717328950000041
这个规则定义了如果请求文件的扩展名为mp4,请求的URI路径中包含关键字“/youku/”,则认为这个请求是优酷的mp4应用请求。
下面介绍一下系统主要的数据结构和配置文件的读取方法。配置好关键字规则后,要将关键字规则读取到一个数据存储结构。称这个结构为关键字数组树,结构图如图2所示:
关键字数组树由多个数组组成的树形结构。使用关键字数组树来存储配置的关键字数据,数组树中的元素array是指向下一个数组的指针,is_leaf标记该节点是否为叶子节点,id是这个关键字的唯一数值型编码。
关键字数组树将一个关键字的每个字符,以字符的值作为数组下标,设置每个字符在关键字字符串中是否存在和所在的位置。比如存放一个关键字“abc”,数组 1以字符“a”的值(97)作为下标,定位到一个数组元素,设置这个元素的array 指针指向数组2,数组2以字符“b”的值(98)作为下标,定位到一个数组元素,设置这个元素的array指针指向数组3,数组3以字符“c”的值(99)作为下标,定位到一个数组元素,设置这个元素的array指针为NULL,因为这是最后一个字符了,最后一个字符要设置is_leaf为1,表示是叶子节点,然后设置id的值,所有关键字的id不可重复。
关键字数组树将配置的关键字读取完后,再需要查找时,以关键字字符串的每个字符作为下标,直接定位到数组元素查看内容,如果元素内容标记不是关键字结尾,即不是叶子节点,再查看array指针指向的数组,如果按照关键字每个字符作为下标,依次逐层查找数组树的元素,能找到一个元素是叶子节点,那么字符串中包含了配置的关键字,可取到该关键字的id。
关键字存放到数组树中后,还要将关键字所属的规则id,和这个关键字要检查的字段名信息存放到规则id表中,规则id表是一个以关键字id作为key的hash 表。规则id表结构如图3所示:
这个hash表的索引表是一个数组,数组的每个元素接链表的结构。一个关键字添加到数组树中后,会得到一个关键字id,用这个关键字id作为下标,定位到规则 id表的索引数组,在这个数组元素下链接一个新节点,这个节点有两个属性, ruler_id和str_bitmap,ruler_id指明配置规则的id,str_bitmap指明配置的这个关键字在本规则中是要检查HTTP的那个字段的。
str_bitmap和下面的规则bitmap,定义和含义都相同,如图4 所示,下面介绍一下规则bitmap的定义:
规则bitmap是一个8字节整型值,以字节的某个bit位代表HTTP某个字段设置了关键字检查。HTTP的每个字段占用4个bit位,也就是每个规则相同的字段名可以配4个关键字。
规则id表中的每个节点的str_bitmap,一定是只有一位被设置为1,因为这个节点只代表一个关键字的信息。
添加完规则id表后,还需要设置规则bitmap集合表,规则bitmap集合表实际就是一个规则bitmap数组。表1结构如下:
规则bitmap集合表
Figure BDA0001717328950000061
规则bitmap集合表的每一个元素,指明一个规则需要检查HTTP哪些字段。
读取一条配置规则时,规则中的每个关键字添加到数组树中,再把这个关键字代表要检查HTTP那个字段的bitmap信息添加到规则id表中,然后以规则id作为下标,定位到规则bitmap集合表中的一个规则bitmap,设置这个规则bitmap对应的bit 值,一个规则有几个关键字,在规则bitmap集合表中对应的规则bitmap就会有几个 bit位被设置。
至此,一个规则如何读取到内存数据结构已经介绍完。下面介绍一个HTTP请求报文头如何快速匹配规则。
在系统运行时,还需要一个临时bitmap集合表,见表2;这个临时bitmap集合表和规则bitmap集合表结构和大小相同。规则bitmap集合表是读取完配置后固定不变的,临时bitmap集合表在运行中动态变化。
临时bitmap集合表
Figure BDA0001717328950000062
根据前面的数据结构和预先配置好的规则,在解析HTTP请求头部的同时,匹配配置的所有关键字,不是先提取完字段的值,再查这个值包含那些关键字,而是只遍历一次值,就检查所有配置的关键字,且每检查到一个关键字,得到关键字的id,以关键字id作为数组下标,一步定位到规则id表的数组元素,检查这个元素链接的所有节点,再以每个节点的ruler_id为下标,定位到临时bitmap集合表中的一个临时bitmap,用str_bitmap的值添加设置临时bitmap,以节点的ruler_id为下标,定位到规则bitmap集合表中的一个规则bitmap,检查临时bitmap被设置的所有bit位是否包含规则bitmap设置的所有bit位,即临时bitmap与规则bitmap作逻辑与运输,如果结果和规则bitmap相等,说明匹配到该规则,如果不相等,不匹配该规则。
如果命中了一条规则,以后不再检查关键字和规则,只解析HTTP字段和值。
在关键字匹配时,可以自动识别HTTP字段的结束符,同时提取出某个字段的值,实现一次扫描HTTP报文头,关键字检查和字段解析同时完成。
下面通过一个具体的实例,来详细说明关键字快速识别HTTP请求头的处理逻辑。
还以上面介绍过的规则配置为例:
Figure BDA0001717328950000071
读取关键字“mp4”,存储到数组树中,设置这个关键字的id值为0,然后以关键字“mp4”的id值为0作为下标,定位到规则id表的元素,在这个元素下挂上一个新节点,这个节点的ruler_id值为0,也就是配置文件中定义的规则id, str_bitmap值为0x10(二进制00010000),因为是ext字段(参照规则bitmap定义),然后以ruler_id值作为下标,在规则bitmap集合表中找到对应的规则bitmap,设置这个规则bitmap值为0x10(二进制0001 0000)。关键字“mp4”读取完成,再读关键字“/youku/”,将“/youku/”同样存放在数组树中,设置这个关键字的id 值为1,以关键字id值1作为下标,定位到规则id表的元素,在这个元素下挂上一个新节点,节点的ruler_id值也为0,str_bitmap值为0x100(二进制0001 0000 0000),设置规则bitmap集合表中对应的规则bitmap值为0x110(二进制0001 0001 0000),即关键字“mp4”的bitmap值和关键字“/youku/”的bitmap值作逻辑或的结果。至此,这个规则配置完成。
下面说明一个HTTP请求解析及快速查找规则的逻辑,收到一个HTTP请求,按照HTTP格式解析字段,在解析字段值时,只扫描一次字符串就可查找所有配置的关键字,因为是在数组树中查找。为了配合上面的配置文件说明,假设一个HTTP请求头是这样的:
GET/youku/bbbbbbbbbbb/cccccccccccccccc/xyy01.mp4
Host:183.199.194.33
在扫描path时,查找关键字数组树,找到了关键字“/youku/”,得到关键字id 值为1,且在解析HTTP时已知找到的这个字段是path类型。得到关键字“/youku/”的id值1后,到规则id表中查找,查找时以关键字id的值1为数组下标,在规则 id表中查找该下标指针元素指向的所有节点,以之前配置为例,会读取到一个节点,这个节点的ruler_id是值是0,str_bitmap值是0x100,然后以这个ruler_id值为下标,到临时bitmap集合表中定位到一个临时bitmap元素,将这个临时bitmap值和在规则id表中找到的那个str_bitmap值作逻辑或运算,运算结果赋值给临时 bitmap,按照举例设置这个临时bitmap值为0x100,再用ruler_id值作为数组下标,在规则bitmap集合表中定位到这个规则bitmap,按照举例这个规则bitmap值为 0x110,再用临时bitmap(0x100)和规则bitmap(0x110)作逻辑与运算,如果运算值和规则bitmap相等,说明匹配到了这个规则。按照目前的举例本次没有匹配。
那么继续扫描剩余字符串,将会匹配到关键字“mp4”,也会解析得知mp4是扩展名,得到该关键字的id值为0,以这个id作为下标,到规则id表中查找到一个节点,得到这个节点的ruler_id值,这里ruler_id值是0,得到str_bitmap值,这里是0x10,用ruler_id值0作为下标,在临时bitmap集合表中找到临时bitmap,这个str_bitmap和临时bitmap作逻辑或运算,运算结果值赋给临时bitmap,按照举例现在临时bitmap值为(0x100|0x10=0x110),再用ruler_id作为下标在规则 bitmap集合表中定位到规则bitmap,按照举例这个规则bitmap值为0x110,临时 bitmap(0x110)与规则bitmap(0x110)做逻辑与运算,结果为0x110,与规则bitmap 值相等,说明本次匹配到了规则,规则的id为0。
之后为了提升性能,解析剩余的HTTP报文时,不再检查规则。
在读配置规则时,将每个关键字转化为一个数值型的id,以关键字id为下标,将这个关键字所属的规则id,和仅这个关键字要检查的bitmap信息存到规则id表中。当扫描字符串匹配到一个中关键字时,根据关键字id定位规则id表,找到规则id和这个关键字的bitmap,规矩规则id定位临时bitmap和规则bitmap,用关键字的str_bitmap与临时bitmap作逻辑或运算,运算结果赋值给临时bitmap,临时bitmap在和规则bitmap作逻辑与运算,运算结果和规则bitmap比较是否相等,相等匹配规则,否则不匹配。综上逻辑,是先查关键字,根据匹配的关键字反查关键字所在的规则,这样只需要检查本关键字所在的规则,避免了所有的规则顺序查找。
关键字查找使用数组树,每个字符一步定位查找,一次扫描字符串可查找所有配置的关键字,保证字符串查找效率,id表查找以字符串id作为下标一步定位,保证查找ruler id和关键字str_bitmap的效率,临时bitmap表和规则bitmap表使用ruler_id为下标一步定位,保证临时bitmap表和规则bitmap表查找效率。即所有查找都是已知数组下标一次定位,提高查询效率。
是否匹配规则,只需临时bitmap和配置bitmap比较,而bitmap都是8个字节的整型数值,保证了bitmap比较效率。字符串形式的关键字规则通过处理,转换为一个整型值,提升规则比较效率。
综上所述,如图5所示,本发明的方法包括如下步骤:
第1步,在解析HTTP请求头的一个字段,得到字段名。
URL中包含:path(文件路径),ext(文件扩展名,有的没有扩展名),param (参数,URL字符串中“?”号后面的部分为参数,有的请求没有参数),这3个值是没有固定的字段名的,是在解析时将它们的字段名规定为path,ext和param。
第2步,字段值的剩余字符串进行关键字匹配,同时解析字段值。
第3步,无论是否匹配到关键字,都会返回已检查字符串的个数;如果匹配到关键字,进入第4步;否则,进入第7步;
第4步,得到关键字的id,根据关键字id在id表中找到该关键字所属的 ruler_id和关键字的str_bitmap。
第5步,用ruler_id定位找到临时bitmap,用str_bitmap添加设置临时bitmap 的值。
第6步,用ruler_id定位到规则bitmap,用临时bitmap和规则bitmap比较,如果临时bitmap设置的bit位包含规则bitmap设置的bit位,则匹配该规则,否则不匹配;
第7步,跳过已扫描过的n个字符串,遍历指针定位到剩余字符串的开始位置。
第8步,检查是否扫描到该字段值结束位置,如果没结束,进入第2步;如果是字段值结束位置,进入第9步;
第9步,查看是否为报文结束位置,如果到了报文结束位置退出,否则解析下一个字段。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (1)

1.一种通过关键字快速识别HTTP请求头的方法,所述方法包括:
步骤1)建立关键字数组树、规则id表和规则bitmap集合表;
步骤2)解析HTTP请求头的字段,得到字段名和字段值;从字段值中获取关键字,依次利用关键字数组树、规则id表和规则bitmap集合表获取到该请求头的规则;
所述关键字数组树为多个数组组成的树形结构,用于存储配置的关键字数据,每个数组包括若干个节点,每个节点包括三个元素:array、is_leaf和id;元素array是指向下一个数组的指针,元素is_leaf用于标记该节点是否为叶子节点,元素id是这个关键字的唯一数值型编码;
所述规则id表用于记录关键字所属的规则id和这个关键字要检查的字段名信息;所述规则id表是一个以关键字id作为key的hash表;这个hash表的索引表是一个数组,数组的每个元素接链表的结构;每个元素有两个属性:ruler_id和str_bitmap,ruler_id指明配置规则的id,str_bitmap指明配置的这个关键字在本规则中要检查HTTP的所属字段;
所述规则bitmap集合表为一个规则bitmap数组;每个规则bitmap,用于指明一个规则需要检查的HTTP的字段;规则bitmap是一个8字节整型值,以字节的指定bit位代表在HTTP的字段设置关键字检查;
所述步骤1)具体包括:
步骤1-1)创建若干个关键字规则,所述关键字规则,用于定义HTTP请求头中每个字段名包含的关键字;
步骤1-2)读取一条关键字规则,将关键字规则中的每个关键字添加到数组树中,一个关键字添加到数组树中后,会得到一个关键字id,用这个关键字id作为下标,定位到规则id表的索引数组,在这个数组元素下链接一个新节点,为新节点增加两个属性:ruler_id和str_bitmap;
步骤1-3)以ruler_id作为下标,定位到规则bitmap集合表中的一个规则bitmap,设置这个规则bitmap对应的bit值,一个规则有m个关键字,在规则bitmap集合表中对应的规则bitmap有m个bit位被设置;
一个关键字规则包含一个或多个关键字;
所述步骤2)具体包括:
步骤2-1)创建一个与规则bitmap集合表相同的临时bitmap集合表;
步骤2-2)解析HTTP请求头的一个字段,得到字段名和字段值;设置剩余字符串为该字段值的全部字符串;
步骤2-3)将剩余字符串在关键字数组树进行关键字匹配;
步骤2-4)如果匹配到关键字id,返回已检查字符串的个数n,进入步骤2-5);否则,转入步骤2-8);
步骤2-5)根据关键字id在规则id表中找到该关键字所属的规则ruler_id和关键字的str_bitmap;
步骤2-6)用规则ruler_id在临时bitmap集合表中进行定位,得到临时bitmap;如果是第一次使用该临时bitmap处理HTTP请求,将临时bitmap的64个bit位置0;然后用str_bitmap设置临时bitmap的一个bit位为1,否则,直接用str_bitmap设置临时bitmap的一个bit位为1;
步骤2-7)用规则ruler_id在规则bitmap集合表中进行定位,得到规则bitmap;用临时bitmap和规则bitmap比较,如果临时bitmap设置的bit位包含规则bitmap设置的bit位,则匹配该规则;转入步骤2-9);否则,转入步骤2-8);
步骤2-8)将全部的字符串减去已扫描过的n个字符串得到剩余字符串,如果剩余字符串为空,该请求没有匹配任何规则;流程结束;否则,转入步骤2-2);
步骤2-9)匹配的规则为该HTTP请求头对应的规则。
CN201810715513.9A 2018-07-03 2018-07-03 一种通过关键字快速识别http请求头的方法 Active CN109150962B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810715513.9A CN109150962B (zh) 2018-07-03 2018-07-03 一种通过关键字快速识别http请求头的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810715513.9A CN109150962B (zh) 2018-07-03 2018-07-03 一种通过关键字快速识别http请求头的方法

Publications (2)

Publication Number Publication Date
CN109150962A CN109150962A (zh) 2019-01-04
CN109150962B true CN109150962B (zh) 2021-03-02

Family

ID=64799687

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810715513.9A Active CN109150962B (zh) 2018-07-03 2018-07-03 一种通过关键字快速识别http请求头的方法

Country Status (1)

Country Link
CN (1) CN109150962B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109936624B (zh) * 2019-01-31 2022-03-18 平安科技(深圳)有限公司 Http请求报文头的适配方法、装置和计算机设备
CN109857958B (zh) * 2019-02-13 2020-11-24 杭州孝道科技有限公司 一种http输入点查找的方法
CN111581215B (zh) * 2020-05-07 2020-12-15 钟士平 数组树数据储存方法、快速查找方法及可读储存介质
CN113688289B (zh) * 2020-05-19 2023-11-24 中移(成都)信息通信科技有限公司 数据包关键字段匹配方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102664935A (zh) * 2012-04-06 2012-09-12 北京锐安科技有限公司 一种web类用户行为和用户信息的关联输出方法及系统
CN106708956A (zh) * 2016-11-29 2017-05-24 中国人民解放军国防科学技术大学 一种基于多url规则集的http数据匹配方法
CN108205577A (zh) * 2016-12-20 2018-06-26 阿里巴巴集团控股有限公司 一种数组构建、数组查询的方法、装置及电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7103708B2 (en) * 2002-08-10 2006-09-05 Cisco Technology, Inc. Performing lookup operations using associative memories optionally including modifying a search key in generating a lookup word and possibly forcing a no-hit indication in response to matching a particular entry

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102664935A (zh) * 2012-04-06 2012-09-12 北京锐安科技有限公司 一种web类用户行为和用户信息的关联输出方法及系统
CN106708956A (zh) * 2016-11-29 2017-05-24 中国人民解放军国防科学技术大学 一种基于多url规则集的http数据匹配方法
CN108205577A (zh) * 2016-12-20 2018-06-26 阿里巴巴集团控股有限公司 一种数组构建、数组查询的方法、装置及电子设备

Also Published As

Publication number Publication date
CN109150962A (zh) 2019-01-04

Similar Documents

Publication Publication Date Title
CN109150962B (zh) 一种通过关键字快速识别http请求头的方法
US9171153B2 (en) Bloom filter with memory element
US9336203B2 (en) Semantics-oriented analysis of log message content
CA1291574C (en) Data retrieval system
US7013304B1 (en) Method for locating digital information files
US6963868B2 (en) Multi-bit Patricia trees
CN105704041A (zh) 使用硬件辅助散列表的ccn路由
CN103365992B (zh) 一种基于一维线性空间实现Trie树的词典检索方法
EP3292481B1 (en) Method, system and computer program product for performing numeric searches
CN111984835B (zh) 一种IPv4掩码五元组规则存储压缩方法及装置
CN112131356B (zh) 一种基于tcam的报文关键字匹配方法和装置
US20090171936A1 (en) System, Method, and Computer Program Product for Accelerating Like Conditions
CN111858678A (zh) 基于Redis的key值删除方法、计算机设备、装置和存储介质
US20030023584A1 (en) Universal information base system
US8051060B1 (en) Automatic detection of separators for compression
CN116126997B (zh) 一种文献去重存储方法、系统、设备及存储介质
CN111061972B (zh) 一种用于url路径匹配的ac查找优化方法和装置
CN115495462A (zh) 批量数据更新方法、装置、电子设备和可读存储介质
US6792428B2 (en) Method of storing and flattening a structured data document
CN116126864A (zh) 索引构建方法、数据查询方法及相关设备
CN106250440B (zh) 文档管理方法和装置
CN113163027B (zh) 数据标识的生成方法、装置、设备及存储介质
WO2002059726A2 (en) Method of performing a search of a numerical document object model
CN111782914B (zh) 一种Web服务器防护方法、装置和网络设备
US9851902B2 (en) Searching memory for a search key

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant