HTTP重定向报文的重写方法及装置
技术领域
本申请涉及通信技术领域,尤其涉及一种HTTP(HyperText Transfer Protocol,超文本传输协议)重定向报文的重写方法及装置。
背景技术
随着互联网的发展,单台服务器提供的网络服务已经越来越不能满足日益增长的访问需求。因此,负载均衡设备应运而生。负载均衡设备可以将多个应用服务器汇聚并对外统一提供服务,而提供服务的网络地址与该多个服务器的网络地址不相同。
当用户访问负载均衡设备时,负载均衡设备可以将该访问负载到某一个服务器上,然后,该服务器可以向用户返回重定向地址(即该服务器的IP地址)以及用户请求的数据。但是,用户和该服务器之间有可能存在路由隔离,此时,该服务器无法将重定向地址以及用户请求的数据发送至用户,从而导致用户访问失败。
为了解决上述问题,在相关技术中,负载均衡设备在将用户的访问负载到某一个服务器后,可以接收到该服务器返回的重定向地址以及用户请求的数据。然后,负载均衡设备可以将上述重定向地址重写后,将重写后的地址以及用户请求的数据发送至用户,从而解决上述用户访问失败的问题。
虽然相关技术解决了上述问题,但负载均衡设备是在应用层对上述重定向地址进行识别和处理,因此,负载均衡设备需要先对数据进行传输层处理以及应用层处理后,才能对上述重定向地址进行重写,因此,相关技术对系统资源的有效利用率低。
发明内容
为克服相关技术中存在的问题,本申请提供了一种HTTP重定向报文的处理方法及装置。
根据本申请实施例的第一方面,提供一种超文本传输协议HTTP重定向报文的重写方法,所述方法应用于负载均衡设备,所述方法包括:
针对接收到的HTTP重定向报文执行网络层解封装后,获取所述报文的传输控制协议TCP数据;
将所述获取到的TCP数据与预设的HTTP重定向特征进行匹配;
当完全匹配时,基于预设的字段内容对所述HTTP重定向报文的头部字段进行重写;
当部分匹配时,将所述获取到的TCP数据与所述报文的下一个报文的TCP数据进行重组,当重组后的TCP数据完全匹配预设的HTTP重定向特征时,基于预设的字段内容对所述报文以及所述报文的下一个报文的头部字段进行重写。
可选的,所述获取所述报文的TCP数据包括:
基于预设的字符数偏移至所述报文的TCP数据部分;
获取所述报文的TCP数据。
可选的,所述预设的字段内容包括接收到的与所述HTTP重定向报文对应的HTTP请求报文的访问地址,所述方法还包括:
将接收到的HTTP请求报文负载到某一服务器后,根据预设的配置规则将所述服务器的IP地址配置为HTTP重定向特征;
保存所述预设的字段内容、所述服务器的IP地址以及所述HTTP重定向特征的对应关系;
所述将所述获取到的TCP数据与预设的HTTP重定向特征进行匹配包括:
基于接收到的所述HTTP重定向报文的源IP地址从上述对应关系中获取对应的HTTP重定向特征;
基于所述HTTP重定向特征与所述获取到的TCP数据进行匹配。
可选的,所述访问地址为访问IP地址或访问域名地址。
可选的,所述方法还包括:
重写所述HTTP重定向报文的头部字段后,如果所述报文的TCP数据长度发生变化,重新计算所述报文的IP校验和、TCP校验和以及长度偏差。
根据本申请实施例的第二方面,提供一种超文本传输协议HTTP重定向报文的重写装置,所述装置应用于负载均衡设备,其特征在于,所述装置包括:
获取单元,用于针对接收到的HTTP重定向报文执行网络层解封装后,获取所述报文的传输控制协议TCP数据;
匹配单元,用于将所述获取到的TCP数据与预设的HTTP重定向特征进行匹配;
重写单元,用于当完全匹配时,基于预设的字段内容对所述HTTP重定向报文的头部字段进行重写,以及当部分匹配时,将所述获取到的TCP数据与所述报文的下一个报文的TCP数据进行重组,当重组后的TCP数据完全匹配预设的HTTP重定向特征时,基于预设的字段内容对所述报文以及所述报文的下一个报文的头部字段进行重写。
可选的,所述获取单元具体用于:
基于预设的字符数偏移至所述报文的TCP数据部分;
获取所述报文的TCP数据。
可选的,所述预设的字段内容包括接收到的与所述HTTP重定向报文对应的HTTP请求报文的访问地址,所述装置还包括:
配置单元,用于将接收到的HTTP请求报文负载到某一服务器后,根据预设的配置规则将所述服务器的IP地址配置为HTTP重定向特征;
保存单元,用于保存所述预设的字段内容、所述服务器的IP地址以及所述HTTP重定向特征的对应关系;
所述匹配单元具体用于:
基于接收到的所述HTTP重定向报文的源IP地址从上述对应关系中获取对应的HTTP重定向特征;
基于所述HTTP重定向特征与所述获取到的TCP数据进行匹配。
可选的,所述访问地址为访问IP地址或访问域名地址。
可选的,所述装置还包括:
计算单元,用于重写所述HTTP重定向报文的头部字段后,如果所述报文的TCP数据长度发生变化,重新计算所述报文的IP校验和、TCP校验和以及长度偏差。
在本申请中,负载均衡设备可以针对接收到的HTTP重定向报文执行网络层解封装后,获取该报文的TCP数据,然后,负载均衡设备可以将获取到的TCP数据与预设的HTTP重定向特征进行匹配,并在完全匹配时,基于预设的字段内容对该HTTP重定向报文的头部字段进行重写,当上述获取到的TCP数据与预设的HTTP重定向特征部分匹配时,负载均衡设备可以将上述获取到的TCP数据与当前报文的下一个报文的TCP数据进行重组,并在重组后的TCP数据完全匹配预设的HTTP重定向特征时,基于预设的字段内容对当前报文以及当前报文的下一个报文的头部字段进行重写。本申请可以通过对HTTP重定向报文执行网络层解封装来完成对该重定向报文的重写,从而解决了相关技术因需要将该重定向报文解封至应用层才能完成对该重定向报文的重写而导致的系统资源有效利用率低的问题。
附图说明
图1是用户访问负载均衡设备的一个示意图;
图2是本申请一实施例示出的一种HTTP重定向报文的重写方法的流程图;
图3是本申请实施例中HTTP重定向报文的重写装置的硬件结构框图;
图4是本申请根据一示例性实施例示出的一种HTTP重定向报文的重写装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
请参见图1,为用户访问负载均衡设备的一个示意图。图1可以包括负载均衡设备以及若干个应用服务器,其中,该若干个应用服务器可以提供相同或相似的网络服务。负载均衡设备可以将该若干个应用服务器进行汇聚,并对外统一提供服务。当负载均衡设备接收到访问请求时,可以根据已配置的均衡策略将该访问请求在上述若干个应用服务器中分发,从而为用户提供服务。
例如,可以假设IP地址为192.168.3.100的用户需要访问IP地址为192.168.3.200的负载均衡设备,则用户可以与负载均衡设备通过三次握手建立TCP连接后,向该负载均衡设备发送HTTP请求报文,其中,该请求报文请求的资源路径可以是http://192.168.3.200/sport。负载均衡设备接收到该请求报文后,可以根据已配置的均衡策略将该请求报文负载到某一应用服务器进行处理,可以假设该应用服务器为服务器1,且服务器1的IP地址为192.168.2.1,则服务器1可以在完成对该请求报文的处理后,向用户返回HTTP响应报文,其中,该响应报文的响应头部中的头部字段及其对应的值可以为Location:http://192.168.2.1:9080/sport/,该响应报文的源IP地址可以为服务器1的IP地址192.168.2.1,该响应报文的目的IP地址可以为用户的IP地址192.168.3.100。用户接收到该响应报文后,可以通过对该响应报文的解析获得请求的数据。
由于在上述过程中,用户访问的IP地址从负载均衡设备的IP地址192.168.3.200重定向为服务器1的IP地址192.168.2.1,因此,当用户需要再次访问http://192.168.2.1:9080/sport/时,可以直接访问服务器1,即向目的IP地址为192.168.2.1的设备发送HTTP请求报文。
然而,上述服务器1与用户之间可能存在路由隔离,此时,用户无法与服务器1建立连接,从而导致用户访问失败。
相关技术中,上述服务器1完成对上述HTTP请求报文的处理后,可以先将与上述请求报文对应的HTTP响应报文发送至负载均衡设备,然后由负载均衡设备将该响应报文发送至用户。而负载均衡设备在将该响应报文发送至用户的过程中,需要将该响应报文的响应头部中的头部字段从Location:http://192.168.2.1:9080/sport/重写为Location:http://192.168.3.200:80/sport/,以防止出现用户因直接访问与其存在路由隔离的服务器1而导致的访问失败的情况。
由上述内容可知,相关技术可以解决因负载均衡设备为用户重定向的IP地址为与用户存在路由隔离的服务器的IP地址而导致的用户访问失败的问题。然而,相关技术中,负载均衡设备在将接收到的HTTP响应报文的响应头部中的头部字段进行修改的过程中,需要先将该响应报文解封至应用层,然后,通过相应的应用程序获取到HTTP特征后,才能对该响应报文的响应头部中的头部字段进行重写。由于将该响应报文解封至应用层的过程需要占用大量的系统资源,而对该响应报文的头部字段进行重写时需要占用的系统资源少,因此,相关技术对系统资源的有效利用率低。
有鉴于此,本申请提供一种HTTP重定向报文的重写方法,来解决相关技术对系统资源的有效利用率低的问题。在本申请中,负载均衡设备可以针对接收到的HTTP重定向报文执行网络层解封装后,获取该报文的TCP数据,然后,负载均衡设备可以将获取到的TCP数据与预设的HTTP重定向特征进行匹配,并在完全匹配时,基于预设的字段内容对该HTTP重定向报文的头部字段进行重写,当上述获取到的TCP数据与预设的HTTP重定向特征部分匹配时,负载均衡设备可以将上述获取到的TCP数据与当前报文的下一个报文的TCP数据进行重组,并在重组后的TCP数据完全匹配预设的HTTP重定向特征时,基于预设的字段内容对当前报文以及当前报文的下一个报文的头部字段进行重写。本申请可以通过对HTTP重定向报文执行网络层解封装来完成对该重定向报文的重写,从而解决了相关技术因需要将该重定向报文解封至应用层才能完成对该重定向报文的重写而导致的系统资源有效利用率低的问题。
请参见图2,为本申请一实施例示出的一种HTTP重定向报文的重写方法的流程图,该实施例应用于负载均衡设备上,包括以下步骤:
步骤201:针对接收到的HTTP重定向报文执行网络层解封装后,获取所述报文的传输控制协议TCP数据。
在本申请中,用户可以基于自身的IP地址访问负载均衡设备。在与负载均衡设备建立了TCP连接后,用户可以向负载均衡设备发送HTTP请求报文。负载均衡设备接收到该请求报文后,可以根据已配置的均衡策略将该请求报文负载到某个与其相连的应用服务器上,其中,负载均衡设备在将该请求报文负载到某个应用服务器的过程中,可以将该请求报文的目的IP地址修改为该应用服务器的IP地址。
在一个实施例中,负载均衡设备接收到HTTP请求报文后,可以基于该请求报文的访问地址生成对应的字段内容,其中,该请求报文的访问地址可以为访问IP地址或访问域名地址。例如,可以假设该请求报文的访问地址为http://192.168.3.200:80/sport/,则此时与该请求报文对应的字段内容可以为http://192.168.3.200:80/sport/;当然,该请求报文的访问地址也可以为http://www.yundongwang.com/sport/,则此时与该请求报文对应的字段内容可以为http://www.yundongwang.com/sport/。
负载均衡设备在将接收到的请求报文负载到某一服务器后,可以根据预设的配置规则将该服务器的IP地址配置为HTTP重定向特征,然后,负载均衡设备可以保存与该请求报文对应的上述字段内容、该服务器的IP地址以及该HTTP重定向特征的对应关系。
在示出的一个实施例中,可以假设用户的IP地址为图1中的192.168.3.100,负载均衡设备的IP地址为图1中的192.168.3.200,当用户向负载均衡设备发送HTTP请求报文时,该报文的部分报文内容可以如表1所示:
表1
其中,表1中的第一行可以表示该请求报文的部分请求行信息,具体地,表1中第一行第一列可以表示该请求报文的请求方法,当该请求报文的请求方法为GET时,可以表示发送该请求报文的用户可以通过该请求报文从对端服务器读取相应的文档;表1中的第一行第二列与表1中的第一行第四列都为空格,可以起到区分不同数据的作用,表1中的第一行第三列可以表示该请求报文请求的对端服务器的目录地址或指令,当该请求报文第一行第三列的值为/sport时,可以表示该请求报文请求访问对端服务器上文件名为sport的文件夹;表1中的第一行第五列可以表示该请求报文使用的协议版本。表1中的第二行可以表示该请求报文的部分请求头部,当该请求报文第二行第一列的内容如表1所示时,可以表示发送该请求报文的用户能够接收对端服务器发送的如表1中的第二行第二列所示的内容类型。
此时,上述用户发送至上述负载均衡设备的HTTP请求报文的五元组信息
可以如表2所示:
源IP地址 |
目的IP地址 |
源端口 |
目的端口 |
传输协议 |
192.168.3.100 |
192.168.3.200 |
1234 |
80 |
TCP |
表2
负载均衡设备接收到上述HTTP请求报文后,可以先根据该请求报文的访问地址生成对应的字段内容,假设该请求报文的访问地址为http://192.168.3.200:80/sport/,则与该请求报文对应的字段内容可以为http://192.168.3.200:80/sport/。然后,负载均衡设备可以根据均衡策略将该请求报文负载至IP地址为192.168.2.1的应用服务器上。其中,负载均衡设备在将该请求报文负载至该应用服务器的过程中,可以将该请求报文的目的IP地址修改为该应用服务器的IP地址,故,该应用服务器接收到的来自负载均衡设备的请求报文的五元组信息可以如表3所示:
源IP地址 |
目的IP地址 |
源端口 |
目的端口 |
传输协议 |
192.168.3.100 |
192.168.2.1 |
1234 |
9080 |
TCP |
表3
负载均衡设备在将上述请求报文负载到该应用服务器后,可以根据预设的配置规则将该服务器的IP地址配置为HTTP重定向特征。当该服务器的IP地址为192.168.2.1,对应的服务端口为9080时,则经过预设的配置规则配置后,对应的HTTP重定向特征可以为Location:http://192.168.2.1:9080。然后,负载均衡设备可以保存与该请求报文对应的字段内容、该服务器的IP地址以及该HTTP重定向特征的对应关系。
在一个实施例中,上述对应关系可以如表4所示:
字段内容 |
服务器IP地址 |
HTTP重定向特征 |
http://192.168.3.200:80/sport/ |
192.168.2.1 |
Location:http://192.168.2.1:9080 |
表4
在本申请中,上述应用服务器接收到修改了目的IP地址的HTTP请求报文后,可以对该请求报文进行对应的处理后,并基于该请求报文向负载均衡设备返回HTTP响应报文。其中,该响应报文的响应头部中的头部字段可以被修改为与该应用服务器的IP地址或域名地址对应的内容、该响应报文的源IP地址可以为该应用服务器的IP地址以及该响应报文的目的IP地址可以为用户的IP地址。
在示出的一个实施例中,该应用服务器接收到如表1和表2所示的该请求报文后,可以基于该请求报文向负载均衡设备返回响应报文,其中,该响应报文的部分报文内容可以如表5所示:
表5
其中,表5中的第一行可以表示该响应报文的部分状态行信息,具体地,表5中第一列第一行可以表示该请求报文使用的协议版本,当然,该响应报文使用的协议版本可以与上述请求报文使用的协议版本保持一致;表5中的第一行第二列与表1中的第一行第四列都为空格,可以起到区分不同数据的作用;表5中的第一行第三列可以表示该响应报文的状态码,当该响应报文的状态码为表5中所示的302时,可以表示该响应报文为重定向报文;表5中的第一行第五列可以表示与上述状态码对应的状态码描述。表5中的第二行可以表示该响应报文的响应头部的部分信息,当该响应报文的第二行内容如表5所示时,可以表示该响应报文为重定向报文,且重定向后的路径可以包含该应用服务器的IP地址和对应的服务端口。
此时,该应用服务器发送至负载均衡设备的响应报文的五元组信息可以如表6所示:
源IP地址 |
目的IP地址 |
源端口 |
目的端口 |
传输协议 |
192.168.2.1 |
192.168.3.100 |
9080 |
1234 |
TCP |
表6
在本申请中,负载均衡设备接收到该响应报文后,可以针对接收到的HTTP重定向报文执行网络层解封装后,获取该响应报文的TCP数据。
在一个实施例中,负载均衡设备可以基于预设的字符数偏移至该响应报文的TCP数据报文,然后,获取该响应报文的TCP数据。其中,上述预设的字符数可以基于IP首部长度以及TCP首部长度计算,而IP首部长度可以根据IP首部长度字段计算,一般情况下为20字节;类似地,TCP首部长度可以根据TCP首部长度字段计算,一般情况下也为20字节。因此,在示出的一个实施例中,负载均衡设备可以偏移40个字节来获取TCP数据。
步骤202:将所述获取到的TCP数据与预设的HTTP重定向特征进行匹配。
步骤203:当完全匹配时,基于预设的字段内容对所述HTTP重定向报文的头部字段进行重写。
在本申请中,负载均衡设备从上述响应报文中获取到TCP数据后,可以将该TCP数据与预设的HTTP重定向特征进行匹配。其中,该预设的HTTP重定向特征可以为负载均衡设备基于接收到的上述响应报文的源IP地址从如表4所示的上述对应关系中获取到的对应的HTTP重定向特征。
在示出的一个实施例中,可以假设上述响应报文的源IP地址,即上述应用服务器的IP地址为192.168.2.1,且对应的服务端口为9080,则负载均衡设备可以基于该IP地址从如表4所示的对应关系中获取到HTTP重定向特征为Location:http://192.168.2.1:9080,假设负载均衡设备从上述响应报文中获取到的TCP数据的部分内容可以如表5所示,则可以得知负载均衡设备获取到的TCP数据可以与预设的HTTP重定向特征完全匹配。此时,负载均衡设备可以根据上述获取到的HTTP重定向特征或者上述响应报文的源IP地址从如表4所示的上述对应关系中获取到对应的预设字段内容http://192.168.3.200:80/sport/,然后基于该预设的字段内容对该HTTP响应报文的头部字段进行重写。此时,由负载均衡设备重写后的响应报文的部分报文内容可以如表7所示:
表7
在本申请中,负载均衡设备重写上述响应报文的头部字段后,可以判断该响应报文的TCP数据的长度是否发生了变化,如果发生了变化,负载均衡设备可以重新计算该响应报文的IP校验和、TCP校验和以及长度偏差等。由于负载均衡设备对报文的IP校验和、TCP校验和以及长度偏差的计算均为现有技术,因此,本申请在此不再赘述。
步骤204:当部分匹配时,将所述获取到的TCP数据与所述报文的下一个报文的TCP数据进行重组,当重组后的TCP数据完全匹配预设的HTTP重定向特征时,基于预设的字段内容对所述报文以及所述报文的下一个报文的头部字段进行重写。
在本申请中,当负载均衡设备从上述响应报文中获取到的TCP数据与预设的HTTP重定向特征部分匹配时,负载均衡设备可以将上述获取到的TCP数据与该响应报文的下一个报文的TCP数据进行重组,当重组后的TCP数据完全匹配预设的HTTP重定向特征时,负载均衡设备可以基于本地IP地址对该响应报文以及该响应报文的下一个报文的头部字段进行重写。
在示出的一个实施例中,可以假设负载均衡设备从上述响应报文中获取到的TCP数据的部分内容如表8所示:
表8
则当负载均衡设备基于上述响应报文的源IP地址从如表4所示的对应关系中获取到HTTP重定向特征为Location:http://192.168.2.1:9080时,负载均衡设备获取到的TCP数据可以与预设的HTTP重定向特征部分匹配。此时,负载均衡可以根据TCP序号的延续性从接收到的其他响应报文中确定上述响应报文的下一个报文,并获取上述响应报文的下一个报文的TCP数据。然后,负载均衡设备可以将上述响应报文的TCP数据与上述响应报文的下一个报文的TCP数据进行重组。可以假设上述响应报文的下一个报文的部分报文内容如表9所示:
表9
则将如表8所示的上述响应报文以及如表9所示的上述响应报文的下一个报文的TCP数据进重组后,可以得到如表10所示的TCP数据:
表10
由如表10所示的TCP数据与预设的HTTP重定向特征完全匹配可知,负载均衡设备可以基于本地IP地址对上述响应报文以及上述响应报文的下一个报文的头部字段进行重写。具体地,负载均衡设备可以先对上述重组后的TCP数据中的头部字段进行重写,然后再根据重写后的重组TCP数据的长度将该重组后的TCP数据分成两个TCP数据,并分别封装在上述响应报文以及上述响应报文的下一个报文中。其中,关于负载均衡设备对上述重组后的TCP数据的头部字段进行重写的过程,本申请已在上述实施例中说明,故本申请在此不再赘述。
在本申请中,负载均衡设备完成对上述响应报文以及上述响应报文的下一个报文的头部字段的重写后,可以判断该响应报文的TCP数据的长度是否发生了变化,如果发生了变化,负载均衡设备可以重新计算该响应报文的IP校验和、TCP校验和以及长度偏差等。由于负载均衡设备对报文的IP校验和、TCP校验和以及长度偏差的计算均为现有技术,因此,本申请在此不再赘述。
在本申请中,负载均衡设备可以针对接收到的HTTP重定向报文执行网络层解封装后,获取该报文的TCP数据,然后,负载均衡设备可以将获取到的TCP数据与预设的HTTP重定向特征进行匹配,并在完全匹配时,基于预设的字段内容对该HTTP重定向报文的头部字段进行重写,当上述获取到的TCP数据与预设的HTTP重定向特征部分匹配时,负载均衡设备可以将上述获取到的TCP数据与当前报文的下一个报文的TCP数据进行重组,并在重组后的TCP数据完全匹配预设的HTTP重定向特征时,基于预设的字段内容对当前报文以及当前报文的下一个报文的头部字段进行重写。本申请可以通过对HTTP重定向报文执行网络层解封装来完成对该重定向报文的重写,从而解决了相关技术因需要将该重定向报文解封至应用层才能完成对该重定向报文的重写而导致的系统资源有效利用率低的问题。
基于与上述方法同一的申请构思,本申请实施例还提供了HTTP重定向报文的重写装置的实施例。
本申请HTTP重定向报文的重写装置可以应用于负载均衡设备。其中,该HTTP重定向报文的重写装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的处理器,将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从应用层面而言,如图3所示,是本申请实施例中HTTP重定向报文的重写装置的硬件结构框图,除了图3所示的处理器、网络接口、内存以及非易失性存储器外,还可以包括其他硬件,如摄像装置、负责处理报文的转发芯片等。
如图4所示,为本申请根据一示例性实施例示出的一种HTTP重定向报文的重写装置的框图。
所述装置应用于负载均衡设备,其中,所述装置包括:
获取单元410,用于针对接收到的HTTP重定向报文执行网络层解封装后,获取所述报文的传输控制协议TCP数据;
匹配单元420,用于将所述获取到的TCP数据与预设的HTTP重定向特征进行匹配;
重写单元430,用于当完全匹配时,基于预设的字段内容对所述HTTP重定向报文的头部字段进行重写,以及当部分匹配时,将所述获取到的TCP数据与所述报文的下一个报文的TCP数据进行重组,当重组后的TCP数据完全匹配预设的HTTP重定向特征时,基于预设的字段内容对所述报文以及所述报文的下一个报文的头部字段进行重写。
在一个可选的实现方式中,所述获取单元410可以具体用于:
基于预设的字符数偏移至所述报文的TCP数据部分;
获取所述报文的TCP数据。
在一个可选的实现方式中,所述预设的字段内容包括接收到的与所述HTTP重定向报文对应的HTTP请求报文的访问地址,所述装置还可以包括(图4中未示出):
配置单元440,用于将接收到的HTTP请求报文负载到某一服务器后,根据预设的配置规则将所述服务器的IP地址配置为HTTP重定向特征;
保存单元450,用于保存所述预设的字段内容、所述服务器的IP地址以及所述HTTP重定向特征的对应关系;
所述匹配单元420可以具体用于:
基于接收到的所述HTTP重定向报文的源IP地址从上述对应关系中获取对应的HTTP重定向特征;
基于所述HTTP重定向特征与所述获取到的TCP数据进行匹配。
在一个可选的实现方式中,所述访问地址为访问IP地址或访问域名地址。
在一个可选的实现方式中,所述装置还可以包括(图4中未示出):
计算单元460,用于重写所述HTTP重定向报文的头部字段后,如果所述报文的TCP数据长度发生变化,重新计算所述报文的IP校验和、TCP校验和以及长度偏差。
在本申请中,负载均衡设备可以针对接收到的HTTP重定向报文执行网络层解封装后,获取该报文的TCP数据,然后,负载均衡设备可以将获取到的TCP数据与预设的HTTP重定向特征进行匹配,并在完全匹配时,基于预设的字段内容对该HTTP重定向报文的头部字段进行重写,当上述获取到的TCP数据与预设的HTTP重定向特征部分匹配时,负载均衡设备可以将上述获取到的TCP数据与当前报文的下一个报文的TCP数据进行重组,并在重组后的TCP数据完全匹配预设的HTTP重定向特征时,基于预设的字段内容对当前报文以及当前报文的下一个报文的头部字段进行重写。本申请可以通过对HTTP重定向报文执行网络层解封装来完成对该重定向报文的重写,从而解决了相关技术因需要将该重定向报文解封至应用层才能完成对该重定向报文的重写而导致的系统资源有效利用率低的问题。
本领域技术人员在考虑说明书及实践这里申请的申请后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。