CN102780619B - 一种处理报文的方法及装置 - Google Patents

一种处理报文的方法及装置 Download PDF

Info

Publication number
CN102780619B
CN102780619B CN201210256444.2A CN201210256444A CN102780619B CN 102780619 B CN102780619 B CN 102780619B CN 201210256444 A CN201210256444 A CN 201210256444A CN 102780619 B CN102780619 B CN 102780619B
Authority
CN
China
Prior art keywords
field
deviation post
characters
request message
http request
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
CN201210256444.2A
Other languages
English (en)
Other versions
CN102780619A (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 Star Net Ruijie Networks Co Ltd
Original Assignee
Beijing Star Net Ruijie Networks 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 Star Net Ruijie Networks Co Ltd filed Critical Beijing Star Net Ruijie Networks Co Ltd
Priority to CN201210256444.2A priority Critical patent/CN102780619B/zh
Publication of CN102780619A publication Critical patent/CN102780619A/zh
Application granted granted Critical
Publication of CN102780619B publication Critical patent/CN102780619B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种处理报文的方法及装置,用以解决现有技术中处理HTTP请求报文的效率较低的问题。该方法要解析HTTP请求报文中的指定字段时,根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定指定字段相对于请求头的起始位置的偏移字符数,并据此在请求头中确定偏移位置,当偏移位置所在的字段为指定字段时,则解析该字段,否则根据该偏移位置所在的字段与指定字段的排序顺序继续查找指定字段并解析。通过上述方法,网络设备可以直接跳过若干个不需要解析的字段对指定字段进行查找,既无需解析请求头中的每个字符,也无需通过匹配算法查找请求头中的所有结束符,因此提高了处理HTTP报文的效率。

Description

一种处理报文的方法及装置
技术领域
本发明涉及通信技术领域,尤其涉及一种处理报文的方法及装置。
背景技术
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是互联网上应用最为广泛的一种网络协议,是万维网(World Wide Web,WWW)的数据通信基础。
终端要向服务器请求资源时,需要向该服务器发送HTTP请求报文,该HTTP请求报文中携带所要请求的资源的统一资源定位符(Uniform ResourceLocator,URL)。服务器则对该HTTP请求报文进行解析,根据其中携带的URL提供相应的资源。
HTTP请求报文的格式如表1所示。
  请求行
  请求头
  空行
  可选消息体
表1
其中,请求行由请求方法、URL和请求版本构成,请求头由若干个字段构成。一般的,将如表1所示的HTTP请求报文中的请求行、请求头以及空行称为HTTP请求报文的报文头。
以下述HTTP请求报文的报文头为例进行说明。
Get/HTTP/1.1\r\n
Accept:*/*\r\n
Accept-Language:zh-cn\r\n
User-agent:Mozilla/4.0(compatible;MSIE8.0;Windows NT5 .1;Trident/4.0;SV1;360SE)\r\n
Accept-Encoding:gzip,deflate\r\n
Host:www.google.com\r\n
Connection:Keep-Alive\r\n
Cookie:PREF=ID=c11fd21e7e22b23a;FF=0;NW=1;TM=1328865869;LM=1328865869;S=c84IF7gVICRQKctm\r\n
\r\n
在上例所示的HTTP请求报文的报文头中,第一行的Get/HTTP/1.1\r\n即为请求行,最后一行的\r\n即为空行,其余部分即为请求头。可见,该HTTP请求报文的报文头中的请求头中包含的字段为:Accept字段、Accept-Language字段、User-agent字段、Accept-Encoding字段、Host字段、Connection字段、Cookie字段。并且,该报文头中的请求行以及请求头中的每个字段都是以结束符/r/n结束的,空行中没有任何字段,因此空行中只包含结束符。
显然,服务器接收到包含如上例所示的报文头的HTTP请求报文之后,需要解析请求行,以确定其中携带的URL地址。但是,在某些应用场景中,在网络中部署的其他网络设备还需要对请求头中包含的某些指定字段进行解析,以完成特定的功能。
例如,当终端访问的网站设置了多个服务器时,为了实现多个服务器的负载均衡,通常要在终端与多个服务器之间部署负载均衡设备。终端发送的HTTP请求报文首先被负载均衡设备所接收,负载均衡设备接收到HTTP请求报文后,需要解析请求头中的Cookie字段,用以进行后续的负载均衡算法,并根据进行负载均衡算法的结果,将该HTTP请求报文发送给某个服务器。
在现有技术中,网络设备解析请求头中的指定字段的方法有两种。
第一种方法是依次解析请求头中的每个字符,直到解析出请求头中的指定字段为止。继续以上例的HTTP请求报文的报文头为例进行说明,采用第一种方法解析请求头中的Cookie字段时,需要先从请求行开始解析,再依次解析请求头中的Accept字段、Accept-Language字段、User-agent字段、Accept-Encoding字段、Host字段、Connection字段,最后才解析到Cookie字段。显然,第一种方法几乎遍历了整个HTTP请求报文的报文头,解析了很多实际上并不需要解析的字段,因此第一种方法处理HTTP请求报文的效率较低。
第二种是查找请求头中的各结束符,根据查找到的各结束符定位请求头中每个字段的位置,在定位的每个字段中查找前几个字符与指定字段的关键字字符匹配的字段,查找到的字段即为指定字段。
继续以上例的HTTP请求报文的报文头为例进行说明,由于每个字段均是以结束符/r/n为结束的,因此采用第二种方法解析请求头中的Cookie字段时,先通过匹配算法查找请求头中的所有结束符。查找到所有的结束符后,即可确定每个字段的位置,如第一个字段的位置为请求头的起始位置到第一个结束符的位置,第二个字段的位置为第一个结束符的位置到第二个结束符的位置。虽然此时已经确定出每个字段所在的位置,但尚不能确定每个位置上的字段具体是什么字段,因此依次判断定位的每个字段的前几个字符是否与指定字段的关键字字符匹配。其中,由于指定字段为Cookie字段,因此指定字段的关键字字符可以为Cookie,共6个字符。在判断时,先从第一个字段开始,第一个字段实际上是Accept字段,可以判断第一个字段的前6个字符是否与关键字字符Cookie匹配,判断结果为否,因此跳过第一个字段,继续对第二个字段进行判断,直到查找到前6个字符与关键字字符Cookie匹配的字段,查找到的字段指定字段Cookie,对查找到的字段进行解析即可。
上述第二种方法虽然不需要对请求头中的每个字符进行解析,但是需要通过匹配算法查找请求头中包含的所有结束符/r/n,以定位每个字段所在的位置,并且需要依次将定位的每个字段的前几个字符与指定字段的关键字字符进行匹配,才能查找到指定字段进行解析,因此第二种方法处理HTTP请求报文的效率仍然较低。
发明内容
本发明实施例提供一种处理报文的方法及装置,用以解决现有技术中处理HTTP请求报文的效率较低的问题。
本发明实施例提供的一种处理报文的方法,包括:
接收超文本传输协议HTTP请求报文,将所述HTTP请求报文的请求头中的第一个字符所在的位置确定为起始位置;
根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定要解析的指定字段相对于所述起始位置的偏移字符数;
基于所述起始位置和确定的所述偏移字符数,在所述HTTP请求报文的请求头中确定偏移位置,判断所述偏移位置所在的字段是否为所述指定字段;
若是,则解析所述偏移位置所在的字段,否则,根据所述偏移位置所在的字段与所述指定字段的排序顺序,查找所述指定字段并解析。
本发明实施例提供的一种处理报文的装置,包括:
接收模块,用于接收超文本传输协议HTTP请求报文,将所述HTTP请求报文的请求头中的第一个字符所在的位置确定为起始位置;
第一确定模块,用于根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定要解析的指定字段相对于所述起始位置的偏移字符数;
第二确定模块,用于基于所述起始位置和确定的所述偏移字符数,在所述HTTP请求报文的请求头中确定偏移位置;
判断解析模块,用于判断所述偏移位置所在的字段是否为所述指定字段,若是,则解析所述偏移位置所在的字段,否则,根据所述偏移位置所在的字段与所述指定字段的排序,查找所述指定字段并解析。
本发明实施例提供的一种网络设备,包括如上所述的处理报文的装置。
本发明实施例提供一种处理报文的方法及装置,该方法要解析HTTP请求报文的请求头中的指定字段时,根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定指定字段相对于请求头的起始位置的偏移字符数,并据此在请求头中确定偏移位置,当偏移位置所在的字段为指定字段时,则解析该字段,当偏移位置所在的字段不是指定字段时,则根据该偏移位置所在的字段与指定字段的排序顺序继续查找指定字段并解析。通过上述方法,网络设备可以直接跳过若干个不需要解析的字段对指定字段进行查找,既无需解析请求头中的每个字符,也无需通过匹配算法查找请求头中的所有结束符,因此提高了处理HTTP报文的效率。
附图说明
图1为本发明实施例提供的处理报文的过程;
图2为本发明实施例提供的网络设备预先针对发送端确定并保存请求头中各字段的字符数以及各字段的排序顺序的过程;
图3为本发明实施例提供的处理报文的装置结构示意图。
具体实施方式
现有技术中的第一种方法需要对HTTP请求报文的请求头中的每个字符进行解析,以对实际需要解析的指定字段进行查找并解析,因此处理HTTP请求报文的效率较低。而第二种方法需要通过匹配算法查找请求头中的所有结束符,以定位每个字段所在的位置,并需要依次判断定位的每个字段是否为指定字段,因此第二种方法进行一次判断后只能跳过一个不需要解析的字段,从而处理HTTP请求报文的效率仍然较低。
在实际应用中,HTTP请求报文的请求头中各字段的排序顺序一般是固定不变的。而且,某些字段的字符数也是固定不变的,例如Connection字段、User-agent字段、Accept-Encoding字段、Accept-Language字段、Accept-charset字段等,另外一些字段的字符数虽然是变化的,但变化的幅度并不是很大。因此,本发明实施例为了提高处理HTTP请求报文的效率,网络设备预先保存了HTTP请求报文的请求头中各字段的字符数以及各字段的排序顺序,当要对请求头中的指定字段进行解析时,根据保存的请求头中各字段的字符数以及各字段的排序顺序,确定指定字段相对于请求头的起始位置的偏移字符数,并基于该起始位置以及偏移字符数,在请求头中确定偏移位置,如果偏移位置所在的字段就是指定字段,则解析该字段,否则,根据该偏移位置所在的字段与指定字段的排序顺序,继续查找指定字段并解析。
下面结合说明书附图,对本发明实施例进行详细描述。
图1为本发明实施例提供的处理报文的过程,具体包括以下步骤:
S101:接收HTTP请求报文,将该HTTP请求报文的请求头中的第一个字符所在的位置确定为起始位置。
在本发明实施例中,网络设备接收到HTTP请求报文后,提取该HTTP请求报文中的请求头,并将请求头中的第1个字符所在的位置确定为起始位置。此时,确定的该起始位置即为请求头的起始位置。
例如,接收到的HTTP请求报文的请求头为:
Accept:*/*\r\n
Accept-Language:zh-cn\r\n
User-agent:Mozilla/4.0(compatible;MSIE8.0;Windows NT5.1;Trident/4.0;SV1;360SE)\r\n
Accept-Encoding:gzip,deflate\r\n
Host:www.google.com\r\n
Connection:Keep-Alive\r\n
Cookie:PREF=ID=c11fd21e7e22b23a;FF=0;NW=1;TM=1328865869;LM=1328865869;S=c84IF7gVICRQKctm\r\n
则该请求头中的第1个字符为Accept字段中的字符A,将该字符A所在的位置确定为起始位置,确定的起始位置也即请求头中的第1个字符所在的位置。
S102:根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定要解析的指定字段相对于起始位置的偏移字符数。
在本发明实施例中,网络设备预先保存了请求头中各字段的字符数以及各字段的排序顺序。在确定指定字段相对于起始位置的偏移字符数时,则可以据此确定排在要解析的指定字段之前的各字段的字符数的和值,将确定的和值作为要解析的指定字段相对于该起始位置的偏移字符数。
例如,假设预先保存的请求头中各字段的字符数如表2所示。
  请求头中的字段   字符数
  Accept字段   12
  Accept-Language字段   23
  User-agent字段   83
  Accept-Encoding字段   30
  Host字段   21
  Connection字段   23
  Cookie字段   90
表2
并且,保存的请求头中各字段的排序顺序从前到后依次为Accept字段、Accept-Language字段、User-agent字段、Accept-Encoding字段、Host字段、Connection字段、Cookie字段,则如果要解析的指定字段为Cookie字段,那么确定排在Cookie字段之前的各字段即为:Accept字段、Accept-Language字段、User-agent字段、Accept-Encoding字段、Host字段、Connection字段。进一步的,排在Cookie字段之前的各字段的字符数的和值为12+23+83+30+21+23=192,因此,Cookie字段相对于起始位置的偏移字符数即为192个。
S103:基于该起始位置和确定的偏移字符数,在该HTTP请求报文的请求头中确定偏移位置。
其中,在确定偏移位置时,可以将位于该起始位置之后、且相对于该起始位置偏移的字符数为确定的该偏移字符数的位置确定为偏移位置。
继续沿用上例,由于确定的起始位置为请求头中第1个字符所在的位置,并且确定的偏移字符数为192,则位于第1个字符之后、且相对于第1个字符所在的位置偏移的字符数为192个字符的位置即为请求头中的第193个字符所在的位置,因此第193个字符所在的位置即为确定的偏移位置。
S104:判断该偏移位置所在的字段是否为指定字段,若是,则执行步骤S105,否则执行步骤S106。
网络设备在判断该偏移位置所在的字段是否为指定字段时,可以在该HTTP报文的请求头中,确定位于该偏移位置之前,且距离该偏移位置最近的结束符,并按照该HTTP请求报文的请求头中个字符的先后顺序,从确定的结束符的下一个字符开始,依次选择第二设定数量的字符,根据选择的第二设定数量的字符中是否包含该指定字段的关键字字符,判断该偏移位置所在的字段是否为指定字段。如果选择的第二设定数量的字符中包含该指定字段的关键字字符,则判断该偏移位置所在的字段就是指定字段,否则判断该偏移位置所在的字段不是指定字段。
继续沿用上例,由于确定的偏移位置为请求头中第193个字符所在的位置,而实际上第193个字符就是请求头中Cookie字段的第1个字符C,因此位于该偏移位置之前,且距离该偏移位置最近的结束符即为Connection字段的结束符\r\n。假设第二设定数量为10,则按照该HTTP请求报文的请求头中个字符的先后顺序,从该Connection字段的结束符\r\n的下一个字符开始,依次选择的10个(第二设定数量)字符即为:Cookie:PRE。选择的第二设定数量的字符也即该偏移位置所在的字段的前第二设定数量个字符。
显然,选择的这10个字符中包含指定字段(Cookie字段)的关键字字符Cookie,因此确定该偏移位置所在的字段就是要解析的指定字段。
而如果预先保存的请求头中各字段的字符数并非如表2所示,则确定的偏移位置所在的字段可能不是指定字段,例如为Host字段,则选择的该偏移位置所在的字段的前第二设定数量个字符中必然不会包含指定字段的关键字字符,因此可以确定该偏移位置所在的字段不是要解析的指定字段。
也即,选择偏移位置所在的字段中的前第二设定数量个字符,判断选择的字符中是否包含指定字段的关键字字符,若包含,则确定该偏移位置所在的字段就为指定字段,否则确定该偏移位置所在的字段不是指定字段。
另外,第二设定数量可以根据指定字段的关键字字符的数量进行设定,具体可以设定为不少于指定字段的关键字字符的数量。上例中指定字段的关键字字符为Cookie,共6个字符,因此第二设定数量可以设定为不少于6。
S105:解析该偏移位置所在的字段。
由于该偏移位置所在的字段即为要解析的指定字段,因此网络设备可以直接对该偏移位置所在的字段进行解析处理。
S106:根据所述偏移位置所在的字段与指定字段的排序顺序,查找指定字段并解析。
如果该偏移位置所在的字段不是要解析的指定字段,则可以根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,继续查找指定字段并解析。
在上述过程中,网络设备在要解析HTTP请求报文的请求头中的指定字段时,可以直接跳过若干个不需要解析的字段对指定字段进行查找并解析,既无需解析请求头中的每个字符,也无需通过匹配算法查找请求头中的所有结束符,因此提高了处理HTTP请求报文的效率。继续沿用上例进行说明,在上例中,网络设备要解析的指定字段为Cookie字段,通过上述方法,网络设备直接跳过了请求头中的Accept字段、Accept-Language字段、User-agent字段、Accept-Encoding字段、Host字段、Connection字段,并查找到了Cookie字段,而不需要对请求头中的每个字符都进行解析,也不需要查找请求头中的所有结束符,因此提高了HTTP请求报文的效率。
在图1所示的步骤S102中,网络设备根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定要解析的指定字段相对于起始位置的偏移字符数的方法还可以为:根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定排在要解析的指定字段之前的各字段的字符数的和值,确定该和值与设定数值的差值,将确定的差值作为要解析的指定字段相对于起始位置的偏移字符数。
仍以预先保存的请求头中各字段的字符数如表2所示为例进行说明。假设要解析的指定字段为Cookie字段,则排在Cookie字段之前的各字段的字符数的和值为12+23+83+30+21+23=192,假设设定数值为5,则该和值与设定数值的差值为192-5=187,因此确定的指定字段相对于起始位置的偏移字符数为187。这是因为请求头中某些字段的字符数是变化的,如果直接按照预先保存的请求头中排在指定字段之前的各字段的字符数的和值查找指定字段,则可能存在偏移位置位于指定字段所在的位置之后、且与指定字段距离较远的情况,因此为了进一步提高处理HTTP请求报文的效率,将保存的请求头中排在指定字段之前的各字段的字符数的和值与设定数值的差值确定为偏移字符数。该设定数值可以根据需要进行设定。
在实际应用中,HTTP请求报文的请求头中各字段的字符数以及各字段的排序顺序通常是由发送该HTTP请求报文的发送端的浏览器设置来决定的,如果两个发送端的浏览器设置不同,则这两个发送端发送的HTTP请求报文的请求头中各字段的字符数以及各字段的排序顺序则可能不同。因此,本发明实施例中为了提高查找请求头中指定字段的准确性,以进一步提高处理HTTP请求报文的效率,在图1所示的步骤S102中,网络设备在根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定要解析的指定字段相对于起始位置的偏移字符数时,首先要确定发送该HTTP请求报文的发送端,再根据预先针对该发送端保存的HTTP请求报文的请求头中各字段的字符数以及各字段的排序顺序,确定要解析的指定字段相对于起始位置的偏移字符数。
也即,网络设备预先针对向自身发送HTTP请求报文的每个发送端,保存了相应的请求头中各字段的字符数以及各字段的排序顺序,在接收到HTTP请求报文时,根据保存的对应于发送该HTTP请求报文的发送端的请求头中各字段的字符数以及各字段的排序顺序,查找并解析指定字段。其中,网络设备预先针对该发送端确定并保存HTTP请求报文的请求头中各字段的字符数以及各字段的排序顺序的方法如图2所示。
图2为本发明实施例提供的网络设备预先针对发送端确定并保存请求头中各字段的字符数以及各字段的排序顺序的过程,具体包括以下步骤:
S201:网络设备在历史记录中记录的接收到的各HTTP请求报文中,提取该发送端发送的第一设定数量的HTTP请求报文。
其中,该第一设定数量可以根据需要进行设定。
例如,假设第一设定数量为5,则网络设备在历史记录中提取该发送端发送的5个HTTP请求报文。具体的,可以提取该发送端最近发送的5个HTTP请求报文。
S202:针对提取的第一设定数量的HTTP请求报文的请求头中的每个字段,确定该字段在提取的第一设定数量的HTTP请求报文的请求头中的平均字符数,并将确定的平均字符数作为该发送端发送的HTTP请求报文的请求头中该字段的字符数保存。
继续沿用上例,针对Accept字段,假设该Accept字段在提取的5个HTTP请求报文的请求头中的字符数分别为n1、n2、n3、n4、n5,则该Accept字段在这5个HTTP请求报文的请求头中的平均字符数为因此,针对该发送端保存的请求头中Accept字段的字符数即为确定的平均字符数具体的,如果确定的平均字符数不是整数,则可以对进行取整处理,将取整值重新作为平均字符数。相应的,可以通过与上述针对该发送端确定请求头中Accept字段的字符数类似的方法,针对该发送端确定请求头中其他字段的字符数并保存。
S203:确定提取的第一设定数量的HTTP请求报文中的任意一个HTTP请求报文的请求头中各字段的排序顺序,将确定的排序顺序作为该发送端发送的HTTP请求报文的请求头中各字段的排序顺序保存。
对于一个发送端而言,在通常情况下发送端的浏览器设置不会经常改变,从而一个发送端发送的HTTP请求报文的请求头中各字段的排序顺序一般是固定不变的,因此可以确定提取的HTTP请求报文中的任意一个HTTP请求报文的请求头中各字段的排序顺序,并作为该发送端发送的HTTP请求报文的请求头中各字段的排序顺序保存。
继续沿用上例,由于提取了该发送端最近发送的5个HTTP请求报文,因此可以确定这5个HTTP请求报文中的任意一个HTTP请求报文的请求头中各字段的排序顺序,将确定的排序顺序作为该发送端发送的HTTP请求报文的请求头中各字段的排序顺序保存。
上述图2所示的步骤S202和步骤S203的执行顺序不分先后。当然,在针对发送端确定请求头中各字段的字符数时,也可以针对每个字段,将该字段在提取的第二设定数量的HTTP请求报文中的最大字符数,作为针对该发送端确定的请求头中该字段的字符数并保存。
采用如图2所示的方法针对发送端确定并保存请求头中各字段的字符数以及各字段的排序顺序时,如果发送端或者网络设备是新加入网络的,则网络设备的历史记录中未记录该发送的任何HTTP请求报文。此时,网络设备在接收到该发送端发送的HTTP请求报文时,可以先按照现有技术中第一种查找HTTP请求报文的请求头中的指定字段的方法,依次解析该HTTP请求报文的请求头中的每个字符,以查找指定字段并解析,并记录该发送端发送的该HTTP请求报文的请求头中各字段的字符数以及各字段的排序顺序。在下一次接收到该发送端发送的HTTP请求报文时,仍然按照现有技术中第一种查找HTTP请求报文的请求头中的指定字段的方法查找指定字段并解析和记录,直至记录的该发送端发送的HTTP请求报文的数量达到第一设定数量为止,采用如图2所示的方法针对该发送端发送的HTTP请求报文的请求头中各字段的字符数和排序顺序进行确定和保存。
在本发明实施例中,当图1所示的步骤S104的判断结果为否,在执行步骤S106时,也即在根据该偏移位置所在的字段与指定字段的排序顺序,继续查找指定字段并解析时,可以分为两种情况,第一种情况是偏移位置所在的字段位于指定字段之前的情况,第二种情况是偏移位置所在的字段位于指定字段之后的情况。下面分别针对这两种情况进行详细说明。
假设网络设备接收到的HTTP请求报文的请求头如下:
Accept:*/*\r\n
Accept-Language:zh-cn\r\n
User-agent:Mozilla/4.0(compatible;MSIE 8.0;Windows NT 5.1;Trident/4.0;SV1;360SE)\r\n
Accept-Encoding:gzip,deflate\r\n
Host:www.google.com\r\n
Connection:Keep-Alive\r\n
Cookie:PREF=ID=c11fd21e7e22b23a;FF=0;NW=1;TM=1328865869;LM=1328865869;S=c84IF7gVICRQKctm\r\n
第一种情况,如果偏移位置所在的字段位于指定字段之前,则网络设备确定该偏移位置所在的字段中的结束符,将确定的结束符的下一个字符所在的位置重新确定为起始位置,根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定排在该偏移位置所在的字段之后,且排在指定字段之前的各字段的字符数的和值,将确定的该和值重新确定为偏移字符数,并在该HTTP请求报文的请求头中,将位于重新确定的起始位置之后、且相对于重新确定的起始位置偏移了重新确定的偏移字符数的位置重新确定为偏移位置,继续判断重新确定的偏移位置所在的字段是否为指定字段,若是,则解析重新确定的偏移位置所在的字段,否则继续根据重新确定的偏移位置所在的字段与指定字段的排序顺序,查找指定字段,直至查找到指定字段为止,并解析查找到的指定字段。
如上例中的HTTP请求报文的报文头,假设要解析的指定字段为Connection字段,偏移位置所在的字段为Accept-Encoding字段,因此该偏移位置所在的字段(Accept-Encoding字段)位于Connection字段之前,则网络设备确定该偏移位置所在的字段中的结束符,也即Accept-Encoding字段中的结束符\r\n。
将该结束符的下一个字符的位置重新确定为起始位置,也即将该偏移位置所在的字段的下一个字段中的第1个字符所在的位置重新确定为起始位置,Accept-Encoding字段的结束符的下一个字符为Host字段中的字符H,则重新确定的起始位置为Host字段中的字符H所在的位置。
由于排在该偏移位置所在的字段(Accept-Encoding字段)之后,且排在指定字段(Connection字段)之前的字段为Host字段,因此根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定的排在该偏移位置所在的字段之后,且排在指定字段之前的各字段的字符数的和值即为该Host字段的字符数,将Host字段的字符数重新确定为偏移字符数。
重新确定了起始位置和偏移字符数之后,则在该HTTP请求报文的请求头中,位于重新确定的起始位置之后、且相对于重新确定的起始位置偏移了重新确定的偏移字符数的位置,也即确定从重新确定的起始位置开始,向后偏移重新确定的偏移字符数的位置,将确定的位置重新确定为偏移位置。后续则可以继续判断重新确定的偏移位置所在的字段是否为指定字段,如果是,则解析该重新确定的偏移位置所在的字段,否则继续查找指定字段,直至查找到指定字段为止。
第二种情况,如果偏移位置所在的字段位于指定字段之后,则网络设备将该偏移位置所在的字段中的第一个字符所在的位置重新确定为起始位置,根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定排在该偏移位置所在的字段之前,且排在指定字段之后的各字段的字符数的和值,将确定的该和值重新确定为偏移字符数,并在该HTTP请求报文的请求头中,将位于重新确定的起始位置之前,且相对于重新确定的起始位置偏移了重新确定的偏移字符数的位置重新确定为偏移位置,继续判断重新确定的偏移位置所在的字段是否为指定字段,若是,则解析重新确定的偏移位置所在的字段,否则继续根据重新确定的偏移位置所在的字段与指定字段的排序顺序,查找指定字段,直至查找到指定字段位置,并解析查找到的指定字段。
如上例中的HTTP请求报文的报文头,假设要解析的指定字段为Host字段,偏移位置所在的字段为Cookie字段,因此该偏移位置所在的字段(Cookie字段)位于Host字段之后,则网络设备确定该偏移位置所在的字段中的第1个字符C所在的位置重新确定为起始位置。
由于确定排在该偏移位置所在的字段(Cookie字段)之前,且排在指定字段(Host字段)之后的字段为Connection字段,因此确定的排在该偏移位置所在的字段之前,且排在指定字段之后的各字段的字符数的和值即为Host字段的字符数,将Host字段的字符数重新确定为偏移字符数。
重新确定了起始位置和偏移字符数之后,则在该HTTP请求报文的请求头中,位于重新确定的起始位置之前、且相对于重新确定的起始位置偏移了重新确定的偏移字符数的位置,也即确定从重新确定的起始位置开始,向前偏移重新确定的偏移字符数的位置,将确定的位置重新确定为偏移位置。后续则可以继续判断重新确定的偏移位置所在的字段是否为指定字段,如果是,则解析该重新确定的偏移位置所在的字段,否则继续查找指定字段,直至查找到指定字段为止。
较佳的,当在HTTP请求报文的请求头中重新确定偏移位置的次数已经达到设定次数,且最后一次重新确定的偏移位置所在的字段仍然不是指定字段时,则说明预先保存的请求头中各字段的字符数或者各字段的排序顺序的准确性较低,因此可以在后续网络设备的负荷较轻时,根据接收到的该HTTP请求报文,修正预先保存的请求头中各字段的字符数以及排序顺序。具体的,当在HTTP请求报文的请求头中重新确定偏移位置的次数已经达到设定次数,且最后一次重新确定的偏移位置所在的字段仍然不是指定字段时,确定该HTTP请求报文的请求头中各字段的字符数以及各字段的排序顺序,根据确定的该HTTP请求报文的请求头中各字段的字符数以及各字段的排序顺序,对预先保存的请求头中各字段的字符数以及各字段的排序顺序进行修正并保存。
其中,确定该HTTP请求报文的请求头中各字段的字符数以及各字段的排序顺序的方法可以采用现有技术中的第一种处理HTTP请求报文的方法,也即将该HTTP请求报文的请求头中的每个字符都进行解析,确定出请求头中各字段的字符数以及排序顺序。
并且,根据该HTTP请求报文的请求头中各字段的字符数以及排序顺序,对预先保存的请求头中各字段的字符数以及各字段的排序顺序进行修正时,对于预先保存的请求头中各字段的排序顺序,则可以根据确定出的该HTTP请求报文的请求头中各字段的排序顺序,直接更新预先保存的请求头中各字段的排序顺序。对于预先保存的请求头中各字段的字符数,则可以针对每个字段,确定预先保存的请求头中该字段的字符数与确定出的该HTTP请求报文的请求头中该字段的字符数的平均字符数,将确定出的平均字符数重新作为请求头中该字段的字符数保存。
当然,在根据该HTTP请求报文的请求头中各字段的字符数,修正预先保存的请求头中各字段的字符数时,针对每个字段,也可以根据预先设定的权值,确定预先保存的请求头中该字段的字符数与确定出的该HTTP请求报文的请求头中该字段的字符数的加权平均值,将确定出的加权平均值重新作为请求头中该字段的字符数保存。
另外,考虑到实际应用中存在一些非正常HTTP请求报文,如某些特殊的HTTP请求报文或者错误的HTTP请求报文等。这些非正常HTTP请求报文的请求头中各字段的字符数以及排序顺序,相比于正常的HTTP请求报文的请求头中各字段的字符数以及排序顺序往往差异较大。因此,采用本发明实施例提供的处理报文的方法解析非正常HTTP请求报文中的指定字段时,就会出现在该非正常HTTP请求报文的请求头中重新确定偏移位置的次数已经达到设定次数,但最后一次重新确定的偏移位置所在的字段仍然不是指定字段的情况。然而,非正常HTTP请求报文并不会经常出现,如果此时根据该非正常HTTP请求报文的请求头中各字段的字符数以及排序顺序,对预先保存的请求头中各字段的字符数以及排序顺序进行修正,那么后续势必会影响对正常HTTP请求报文的处理。
因此,本发明实施例中还可以针对接收到的HTTP请求报文,当在该HTTP请求报文的请求头中重新确定偏移位置的次数已经达到设定次数,且最后一次重新确定的偏移位置所在的字段仍然不是指定字段时,确定接收到的该HTTP请求报文为非正常HTTP请求报文。在确定接收到的非正常HTTP请求报文的数量达到指定数量,或者在确定连续接收到了指定数量的非正常HTTP请求报文时,再对预先保存的各字段的字符数以及各字段的排序顺序进行修正。
基于上述同样的思路,本发明实施例还提供一种处理报文的装置,如图3所示。图3为本发明实施例提供的处理报文的装置结构示意图,具体包括:
接收模块301,用于接收超文本传输协议HTTP请求报文,将所述HTTP请求报文的请求头中的第一个字符所在的位置确定为起始位置;
第一确定模块302,用于根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定要解析的指定字段相对于所述起始位置的偏移字符数;
第二确定模块303,用于基于所述起始位置和确定的所述偏移字符数,在所述HTTP请求报文的请求头中确定偏移位置;
判断解析模块304,用于判断所述偏移位置所在的字段是否为所述指定字段,若是,则解析所述偏移位置所在的字段,否则,根据所述偏移位置所在的字段与所述指定字段的排序,查找所述指定字段并解析。
所述第一确定模块302具体用于,确定发送所述HTTP请求报文的发送端,根据预先针对所述发送端保存的HTTP请求报文的请求头中各字段的字符数以及各字段的排序顺序,确定要解析的指定字段相对于所述起始位置的偏移字符数。
所述第一确定模块302具体用于,在历史记录中记录的接收到的各HTTP请求报文中,提取所述发送端发送的第一设定数量的HTTP请求报文;针对提取的所述第一设定数量的HTTP请求报文的请求头中的每个字段,确定该字段在提取的所述第一设定数量的HTTP请求报文的请求头中的平均字符数,并将确定的平均字符数作为所述发送端发送的HTTP请求报文的请求头中该字段的字符数保存;确定提取的所述第一设定数量的HTTP请求报文中的任意一个HTTP请求报文的请求头中各字段的排序顺序,将确定的排序顺序作为所述发送端发送的HTTP请求报文的请求头中各字段的排序顺序保存。
所述第一确定模块302具体用于,根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定排在要解析的指定字段之前的各字段的字符数的和值,将确定的所述和值作为要解析的指定字段相对于所述起始位置的偏移字符数;或者,根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定排在要解析的指定字段之前的各字段的字符数的和值,确定所述和值与设定数值的差值,将确定的差值作为要解析的指定字段相对与所述起始位置的偏移字符数。
所述判断解析模块304具体用于,在所述HTTP请求报文的请求头中,确定位于所述偏移位置之前,且距离所述偏移位置最近的结束符,按照所述HTTP请求报文的请求头中个字符的先后顺序,从确定的所述结束符的下一个字符开始,依次选择第二设定数量的字符,根据选择的所述第二设定数量的字符中是否包含所述指定的关键字字符,判断所述偏移位置所在的字段是否为所述指定字段。
所述第一确定模块302具体用于,当所述判断解析模块304判断所述偏移位置所在的字段不是所述指定字段,且所述偏移位置所在的字段位于所述指定字段之前时,确定所述偏移位置所在的字段中的结束符,将确定的结束符的下一个字符所在的位置重新确定为起始位置,根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定排在所述偏移位置所在的字段之后,且排在所述指定字段之前的各字段的字符数的和值,将确定的所述和值重新确定为偏移字符数;
所述第二确定模块303具体用于,在所述HTTP请求报文的请求头中,将位于重新确定的位置之后、且相对于重新确定的起始位置偏移了重新确定的偏移字符数的位置重新确定为偏移位置;
所述判断解析模块304具体用于,继续判断重新确定的偏移位置所在的字段是否为所述指定字段,若是,则解析所述重新确定的偏移位置所在的字段,否则继续根据所述重新确定的偏移位置所在的字段与所述指定字段的排序顺序,查找所述指定字段,直至查找到所述指定字段为止,并解析查找到的指定字段。
所述第一确定模块302具体用于,当所述判断解析模块304判断所述偏移位置所在的字段不是所述指定字段,且所述偏移位置所在的字段位于所述指定字段之后时,将所述偏移位置所在的字段的第一个字符所在的位置重新确定为起始位置,根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定排在所述偏移位置之前,且排在所述指定字段之后的各字段的字符数的和值,将确定的所述和值重新确定为偏移字符数;
所述第二确定模块303具体用于,在所述HTTP请求报文的请求头中,将位于重新确定的起始位置之前,且相对于重新确定的起始位置偏移了重新确定的偏移字符数的位置重新确定为偏移位置;
所述判断解析模块304具体用于,继续判断重新确定的偏移位置所在的字段是否为所述指定字段,若是,则解析所述重新确定的偏移位置所在的字段,否则继续根据所述重新确定的偏移位置所在的字段与所述指定字段的排序顺序,查找所述指定字段,直至查找到所述指定字段为止,并解析查找到的指定字段。
所述装置还包括:
修正模块305,用于当在所述HTTP请求报文的请求头中重新确定偏移位置的次数已经达到设定次数,且最后一次重新确定的偏移位置所在的字段不是所述指定字段时,确定所述HTTP请求报文的请求头中各字段的字符数以及各字段的排序顺序,根据确定的所述HTTP请求报文的请求头中各字段的字符数以及各字段的排序顺序,对预先保存的请求头中各字段的字符数以及各字段的排序顺序进行修正。
另外,本发明实施例还提供一种网络设备,包括如上所述的处理报文的装置。
本发明实施例提供一种处理报文的方法及装置,该方法要解析HTTP请求报文的请求头中的指定字段时,根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定指定字段相对于请求头的起始位置的偏移字符数,并据此在请求头中确定偏移位置,当偏移位置所在的字段为指定字段时,则解析该字段,当偏移位置所在的字段不是指定字段时,则根据该偏移位置所在的字段与指定字段的排序顺序继续查找指定字段并解析。通过上述方法,网络设备可以直接跳过若干个不需要解析的字段对指定字段进行查找,既无需解析请求头中的每个字符,也无需通过匹配算法查找请求头中的所有结束符,因此提高了处理HTTP报文的效率。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (17)

1.一种处理报文的方法,其特征在于,包括:
接收超文本传输协议HTTP请求报文,将所述HTTP请求报文的请求头中的第一个字符所在的位置确定为起始位置;
根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定要解析的指定字段相对于所述起始位置的偏移字符数;
基于所述起始位置和确定的所述偏移字符数,在所述HTTP请求报文的请求头中确定偏移位置,判断所述偏移位置所在的字段是否为所述指定字段;
若是,则解析所述偏移位置所在的字段,否则,根据所述偏移位置所在的字段与所述指定字段的排序顺序,查找所述指定字段并解析。
2.如权利要求1所述的方法,其特征在于,根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定要解析的指定字段相对于所述起始位置的偏移字符数,具体包括:
确定发送所述HTTP请求报文的发送端;
根据预先针对所述发送端保存的HTTP请求报文的请求头中各字段的字符数以及各字段的排序顺序,确定要解析的指定字段相对于所述起始位置的偏移字符数。
3.如权利要求2所述的方法,其特征在于,预先针对所述发送端保存HTTP请求报文的请求头中各字段的字符数以及各字段的排序顺序,具体包括:
在历史记录中记录的接收到的各HTTP请求报文中,提取所述发送端发送的第一设定数量的HTTP请求报文;
针对提取的所述第一设定数量的HTTP请求报文的请求头中的每个字段,确定该字段在提取的所述第一设定数量的HTTP请求报文的请求头中的平均字符数,并将确定的平均字符数作为所述发送端发送的HTTP请求报文的请求头中该字段的字符数保存;
确定提取的所述第一设定数量的HTTP请求报文中的任意一个HTTP请求报文的请求头中各字段的排序顺序,将确定的排序顺序作为所述发送端发送的HTTP请求报文的请求头中各字段的排序顺序保存。
4.如权利要求1所述的方法,其特征在于,根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定要解析的指定字段相对于所述起始位置的偏移字符数,具体包括:
根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定排在要解析的指定字段之前的各字段的字符数的和值,将确定的所述和值作为要解析的指定字段相对于所述起始位置的偏移字符数;或者
根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定排在要解析的指定字段之前的各字段的字符数的和值,确定所述和值与设定数值的差值,将确定的差值作为要解析的指定字段相对于所述起始位置的偏移字符数。
5.如权利要求1所述的方法,其特征在于,判断所述偏移位置所在的字段是否为所述指定字段,具体包括:
在所述HTTP请求报文的请求头中,确定位于所述偏移位置之前,且距离所述偏移位置最近的结束符;
按照所述HTTP请求报文的请求头中各字符的先后顺序,从确定的所述结束符的下一个字符开始,依次选择第二设定数量的字符;
根据选择的所述第二设定数量的字符中是否包含所述指定字段的关键字字符,判断所述偏移位置所在的字段是否为所述指定字段。
6.如权利要求1所述的方法,其特征在于,当所述偏移位置所在的字段不是所示指定字段,且所述偏移位置所在的字段位于所述指定字段之前时,根据所述偏移位置所在的字段与所述指定字段的排序顺序,查找所述指定字段并解析,具体包括:
确定所述偏移位置所在的字段中的结束符,将确定的结束符的下一个字符所在的位置重新确定为起始位置;
根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定排在所述偏移位置所在的字段之后,且排在所述指定字段之前的各字段的字符数的和值,将确定的所述和值重新确定为偏移字符数;
在所述HTTP请求报文的请求头中,将位于重新确定的起始位置之后、且相对于重新确定的起始位置偏移了重新确定的偏移字符数的位置重新确定为偏移位置;
继续判断重新确定的偏移位置所在的字段是否为所述指定字段,若是,则解析所述重新确定的偏移位置所在的字段,否则继续根据所述重新确定的偏移位置所在的字段与所述指定字段的排序顺序,查找所述指定字段,直至查找到所述指定字段为止,并解析查找到的指定字段。
7.如权利要求1所述的方法,其特征在于,当所述偏移位置所在的字段不是所述指定字段,且所述偏移位置所在的字段位于所述指定字段之后时,根据所述偏移位置所在的字段与所述指定字段的排序顺序,查找所述指定字段并解析,具体包括:
将所述偏移位置所在的字段的第一个字符所在的位置重新确定为起始位置;
根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定排在所述偏移位置所在的字段之前,且排在所述指定字段之后的各字段的字符数的和值,将确定的所述和值重新确定为偏移字符数;
在所述HTTP请求报文的请求头中,将位于重新确定的起始位置之前,且相对于重新确定的起始位置偏移了重新确定的偏移字符数的位置重新确定为偏移位置;
继续判断重新确定的偏移位置所在的字段是否为所述指定字段,若是,则解析所述重新确定的偏移位置所在的字段,否则继续根据所述重新确定的偏移位置所在的字段与所述指定字段的排序顺序,查找所述指定字段,直至查找到所述指定字段为止,并解析查找到的指定字段。
8.如权利要求6或7所述的方法,其特征在于,所述方法还包括:
当在所述HTTP请求报文的请求头中重新确定偏移位置的次数已经达到设定次数,且最后一次重新确定的偏移位置所在的字段不是所述指定字段时,确定所述HTTP请求报文的请求头中各字段的字符数以及各字段的排序顺序;
根据确定的所述HTTP请求报文的请求头中各字段的字符数以及各字段的排序顺序,对预先保存的请求头中各字段的字符数以及各字段的排序顺序进行修正并保存。
9.一种处理报文的装置,其特征在于,包括:
接收模块,用于接收超文本传输协议HTTP请求报文,将所述HTTP请求报文的请求头中的第一个字符所在的位置确定为起始位置;
第一确定模块,用于根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定要解析的指定字段相对于所述起始位置的偏移字符数;
第二确定模块,用于基于所述起始位置和确定的所述偏移字符数,在所述HTTP请求报文的请求头中确定偏移位置;
判断解析模块,用于判断所述偏移位置所在的字段是否为所述指定字段,若是,则解析所述偏移位置所在的字段,否则,根据所述偏移位置所在的字段与所述指定字段的排序,查找所述指定字段并解析。
10.如权利要求9所述的装置,其特征在于,所述第一确定模块具体用于,确定发送所述HTTP请求报文的发送端,根据预先针对所述发送端保存的HTTP请求报文的请求头中各字段的字符数以及各字段的排序顺序,确定要解析的指定字段相对于所述起始位置的偏移字符数。
11.如权利要求10所述的装置,其特征在于,所述第一确定模块具体用于,在历史记录中记录的接收到的各HTTP请求报文中,提取所述发送端发送的第一设定数量的HTTP请求报文;针对提取的所述第一设定数量的HTTP请求报文的请求头中的每个字段,确定该字段在提取的所述第一设定数量的HTTP请求报文的请求头中的平均字符数,并将确定的平均字符数作为所述发送端发送的HTTP请求报文的请求头中该字段的字符数保存;确定提取的所述第一设定数量的HTTP请求报文中的任意一个HTTP请求报文的请求头中各字段的排序顺序,将确定的排序顺序作为所述发送端发送的HTTP请求报文的请求头中各字段的排序顺序保存。
12.如权利要求9所述的装置,其特征在于,所述第一确定模块具体用于,根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定排在要解析的指定字段之前的各字段的字符数的和值,将确定的所述和值作为要解析的指定字段相对于所述起始位置的偏移字符数;或者,根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定排在要解析的指定字段之前的各字段的字符数的和值,确定所述和值与设定数值的差值,将确定的差值作为要解析的指定字段相对与所述起始位置的偏移字符数。
13.如权利要求9所述的装置,其特征在于,所述判断解析模块具体用于,在所述HTTP请求报文的请求头中,确定位于所述偏移位置之前,且距离所述偏移位置最近的结束符,按照所述HTTP请求报文的请求头中个字符的先后顺序,从确定的所述结束符的下一个字符开始,依次选择第二设定数量的字符,根据选择的所述第二设定数量的字符中是否包含所述指定的关键字字符,判断所述偏移位置所在的字段是否为所述指定字段。
14.如权利要求9所述的装置,其特征在于,所述第一确定模块具体用于,当所述判断解析模块判断所述偏移位置所在的字段不是所述指定字段,且所述偏移位置所在的字段位于所述指定字段之前时,确定所述偏移位置所在的字段中的结束符,将确定的结束符的下一个字符所在的位置重新确定为起始位置,根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定排在所述偏移位置所在的字段之后,且排在所述指定字段之前的各字段的字符数的和值,将确定的所述和值重新确定为偏移字符数;
所述第二确定模块具体用于,在所述HTTP请求报文的请求头中,将位于重新确定的位置之后、且相对于重新确定的起始位置偏移了重新确定的偏移字符数的位置重新确定为偏移位置;
所述判断解析模块具体用于,继续判断重新确定的偏移位置所在的字段是否为所述指定字段,若是,则解析所述重新确定的偏移位置所在的字段,否则继续根据所述重新确定的偏移位置所在的字段与所述指定字段的排序顺序,查找所述指定字段,直至查找到所述指定字段为止,并解析查找到的指定字段。
15.如权利要求9所述的装置,其特征在于,所述第一确定模块具体用于,当所述判断解析模块判断所述偏移位置所在的字段不是所述指定字段,且所述偏移位置所在的字段位于所述指定字段之后时,将所述偏移位置所在的字段的第一个字符所在的位置重新确定为起始位置,根据预先保存的请求头中各字段的字符数以及各字段的排序顺序,确定排在所述偏移位置之前,且排在所述指定字段之后的各字段的字符数的和值,将确定的所述和值重新确定为偏移字符数;
所述第二确定模块具体用于,在所述HTTP请求报文的请求头中,将位于重新确定的起始位置之前,且相对于重新确定的起始位置偏移了重新确定的偏移字符数的位置重新确定为偏移位置;
所述判断解析模块具体用于,继续判断重新确定的偏移位置所在的字段是否为所述指定字段,若是,则解析所述重新确定的偏移位置所在的字段,否则继续根据所述重新确定的偏移位置所在的字段与所述指定字段的排序顺序,查找所述指定字段,直至查找到所述指定字段为止,并解析查找到的指定字段。
16.如权利要求14或15所述的装置,其特征在于,所述装置还包括:
修正模块,用于当在所述HTTP请求报文的请求头中重新确定偏移位置的次数已经达到设定次数,且最后一次重新确定的偏移位置所在的字段不是所述指定字段时,确定所述HTTP请求报文的请求头中各字段的字符数以及各字段的排序顺序,根据确定的所述HTTP请求报文的请求头中各字段的字符数以及各字段的排序顺序,对预先保存的请求头中各字段的字符数以及各字段的排序顺序进行修正。
17.一种网络设备,其特征在于,包括如权利要求9~16任一所述的处理报文的装置。
CN201210256444.2A 2012-07-23 2012-07-23 一种处理报文的方法及装置 Active CN102780619B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210256444.2A CN102780619B (zh) 2012-07-23 2012-07-23 一种处理报文的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210256444.2A CN102780619B (zh) 2012-07-23 2012-07-23 一种处理报文的方法及装置

Publications (2)

Publication Number Publication Date
CN102780619A CN102780619A (zh) 2012-11-14
CN102780619B true CN102780619B (zh) 2015-03-11

Family

ID=47125380

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210256444.2A Active CN102780619B (zh) 2012-07-23 2012-07-23 一种处理报文的方法及装置

Country Status (1)

Country Link
CN (1) CN102780619B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104205742B (zh) 2013-01-29 2017-04-12 华为技术有限公司 报文处理方法和转发设备
CN104184645B (zh) 2013-05-27 2018-05-04 华为技术有限公司 一种生成操作请求的方法、设备及系统
CN104348877B (zh) * 2013-08-06 2018-09-18 腾讯科技(深圳)有限公司 一种发送Http请求消息的方法及装置
CN104811488B (zh) * 2015-04-13 2018-09-25 深信服网络科技(深圳)有限公司 基于负载均衡设备的会话保持方法及系统和负载均衡设备
CN106656783B (zh) * 2016-09-28 2019-11-12 盛科网络(苏州)有限公司 以太网报文替换编辑的方法及系统
CN106506641A (zh) * 2016-11-07 2017-03-15 杭州迪普科技股份有限公司 一种客户端设备的标识值提取方法及装置
CN110120985B (zh) * 2018-02-05 2021-06-29 华为技术有限公司 通信的方法和设备
CN112055020A (zh) * 2020-09-04 2020-12-08 北京明朝万达科技股份有限公司 报文筛选方法、装置及数据传输系统
CN113890904B (zh) * 2021-09-27 2023-10-27 新华三信息安全技术有限公司 一种报文解析的方法、装置、计算机设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7370100B1 (en) * 2003-12-10 2008-05-06 Foundry Networks, Inc. Method and apparatus for load balancing based on packet header content
US7492771B2 (en) * 2005-04-01 2009-02-17 International Business Machines Corporation Method for performing a packet header lookup
CN102253957B (zh) * 2011-04-13 2013-05-29 北京恒光创新科技股份有限公司 一种tcam多模式字符串匹配方法及装置
CN102195977B (zh) * 2011-04-13 2014-07-23 北京恒光创新科技股份有限公司 一种网络协议识别方法及装置

Also Published As

Publication number Publication date
CN102780619A (zh) 2012-11-14

Similar Documents

Publication Publication Date Title
CN102780619B (zh) 一种处理报文的方法及装置
US8601120B2 (en) Update notification method and system
CN104283723B (zh) 网络访问日志处理方法及装置
CN106469044B (zh) 实现页面跳转的方法和装置
CN102739663A (zh) 网页检测方法与扫描引擎
CN105069011A (zh) 用于管理网页收藏夹的方法、装置及系统
US9680719B2 (en) Communication system, client terminal, and server
CN107818046B (zh) 应用程序页面的a/b测试方法及装置
CN106549989B (zh) 一种数据传输方法及其系统、用户终端、应用服务器
CN103207877B (zh) 解码方法及装置
CN103298010A (zh) 一种网络链路状况显示方法和装置
CN102904765A (zh) 数据上报的方法及设备
CN104123125A (zh) 网页资源的获取方法及装置
CN103399871A (zh) 获取一个主域名相关联的二级域名信息的设备和方法
CN103825772A (zh) 识别用户点击行为的方法及网关设备
CN105760550A (zh) 面向大数据存储中心的互联网数据采集系统和采集方法
CN109600381B (zh) 一种接口适配方法、装置及系统
CN103246675A (zh) 一种用于抓取网站数据的方法与设备
US10095791B2 (en) Information search method and apparatus
CN104182402A (zh) 浏览器界面地址栏输入控制方法及系统
CN107517237B (zh) 一种视频识别方法和装置
CN105912573B (zh) 数据更新方法及装置
US20180336278A1 (en) System and method for enabling related searches for live events in data streams
CN107977440B (zh) 一种解析数据文件的方法、装置和系统
US9762727B2 (en) Quality degradation analysis method, quality degradation analysis device, and network system

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