CN111314447A - 代理服务器及其处理访问请求的方法 - Google Patents
代理服务器及其处理访问请求的方法 Download PDFInfo
- Publication number
- CN111314447A CN111314447A CN202010079216.7A CN202010079216A CN111314447A CN 111314447 A CN111314447 A CN 111314447A CN 202010079216 A CN202010079216 A CN 202010079216A CN 111314447 A CN111314447 A CN 111314447A
- Authority
- CN
- China
- Prior art keywords
- message
- client
- access request
- proxy server
- server
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1458—Denial of Service
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling 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)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
Abstract
本公开提供一种代理服务器,布置在一个或多个客户机和一个或多个网络服务器之间,所述代理服务器包括:报文修改组件,修改来自任意一个客户机的指向任意一个网络服务器的访问请求报文;存储单元,存储所述访问请求报文对应的会话结构体,所述结构体中记录所述访问请求报文的客户机请求发送序列号;以及报文发送组件,将修改后的访问请求报文作为针对所述访问请求报文的访问响应报文反馈给客户机。
Description
技术领域
本公开涉及一种代理服务器建立网络连接的技术,尤其是涉及一种能够防止网络攻击的代理服务器及其处理访问请求的方法。
背景技术
代理服务器(Proxy Server)是代理网络客户机访问网络服务器或其他客户机以网络信息。形象地说,它是网络信息的中转站,是个人网络和英特网服务商之间的中间代理机构,其负责转发合法的网络信息,对转发进行控制和登记。代理服务器作为连接英特网的桥梁,在实际应用中除了发挥着最基本的连接功能外,还包括安全性、缓存、内容过滤、访问控制管理等功能。更重要的是,代理服务器是英特网链路级网关所提供的一种重要的安全功能。通过代理服务器,可以防止网络服务器受到访问请求泛洪(SYN Flood)攻击。客户端通过代理服务器请求与受保护的网络服务器建立连接时,代理服务器首先验证客户端的请求是否为访问请求泛洪攻击,验证通过后客户端和服务器之间才能建立TCP连接,从而避免服务器受到攻击。
在现有技术中,代理服务器伪装成网络服务器使用Linux用户态socket跟客户机完成三次握手,从而建立TCP连接,并在代理服务器再次收到客户端发往服务器的数据报文时,再与服务器端完成三次握手,建立TCP连接,将报文转发到网络服务器。随后,随后重复如下步骤完成数据交互过程:当网络服务器的数据回复报文到达代理服务器,代理服务器将报文转发至客户端;以及在客户机收到网络服务器的报文进行回复时,再次将报文发送至代理服务器,代理端使用Linux用户态socket将报文转发至服务器端。
很显然,尽管网络服务器由于代理服务器的隔离而避免了网络服务器由于访问请求泛洪(SYN Flood)攻击而陷于瘫痪的情形,但是,现有技术中,一方面,一条客户机发向网络服务器的TCP连接,需要代理服务器建立两条TCP连接才能实现正常的通信(一条模拟服务器端跟客户端建立连接,一条模拟客户端跟服务器端建立连接),这就极大地浪费了代理服务器的资源;另一方面,如果客户机通过发起大量访问请求泛洪攻击发送大量请求建立TCP连接的访问请求报文,而不回应代理服务器伪装成网络服务器反馈的“网络服务器访问响应报文”,同样会导致代理服务器的本地上建立了大量的TCP半连接,从而达到耗费代理服务器资源,影响代理服务器的转发性能,使代理服务器无法找到可用的TCP连接和Linux用户态socket,从而导致代理服务器瘫痪。
因此,本领域技术人员期望获得一种代理服务器,能够消除代理服务器在面对请求泛洪攻击时,出现大量的半连接请求导致代理服务器资源浪费甚至瘫痪的情形出现。
发明内容
本公开的示例性实施例的目的在于克服现有技术中的上述的和/或其他的问题。因此,根据本公开的一个方面,提供了1.一种代理服务器,布置在一个或多个客户机和一个或多个网络服务器之间,所述代理服务器包括:报文修改组件,修改来自任意一个客户机的指向任意一个网络服务器的访问请求报文;存储单元,存储所述访问请求报文对应的会话结构体,所述结构体中记录所述访问请求报文的客户机请求发送序列号;以及报文发送组件,将修改后的访问请求报文作为针对所述访问请求报文的访问响应报文反馈给客户机。
根据本公开的代理服务器,还包括报文发送组件,其中所述存储单元还存储所述客户机针对所述访问响应报文的客户机确认报文的客户机确认发送序列号,所述报文修改组件将所述客户机确认报文修改为所述访问请求报文,以及所述报文发送组件将所述访问请求报文转发给所述网络服务器。
根据本公开的代理服务器,其中,所述报文修改组件将所述网络服务器针对所述访问请求报文的网络服务器访问响应报文修改为所述客户机确认报文,以及所述报文发送组件将所述客户机确认报文转发给所述网络服务器。
根据本公开的代理服务器,其中所述会话结构体中将在所述报文发送组件将所述客户机确认报文转发给所述网络服务器之前来自所述客户机的与所述客户机确认报文对应的数据请求报文缓存在一个报文缓存队列。
根据本公开的代理服务器,其中所述报文发送组件在将所述客户机确认报文转发给所述网络服务器之后,查询与所述会话结构体中对应的缓存队列,并按照先进先出的规则向所述网络服务器转发所述报文缓存队列中的数据请求报文。
根据本公开的代理服务器,还包括:报文统计组件,用于统计所述会话结构体的报文缓存队列中的数据请求报文的数量;以及连接切断组件,用于在同一对客户机与网络服务器之间的连接下的所有会话结构体中的所有包换缓存队列中所排列的数据请求报文的数量大于预定值时,切断该对客户机与网络服务器之间的连接。
根据本公开的代理服务器,其中所述报文修改组件通过将访问请求报文中的源IP地址和目的IP地址进行互换、将所述客户机请求发送序列号修改为确认序列号以及基于修改后的信息更新IP层和TCP层的校验和,以便将所述访问请求报文修改为所述访问响应报文。
根据本公开的代理服务器,其中所述报文修改组件通过将所述客户机确认报文中的客户机确认发送序列号修改为存储在所述存储单元中的所述客户机请求发送序列号以及基于修改后的信息更新IP层和TCP层的校验和,以便将所述客户机确认报文修改为所述访问请求报文。
根据本公开的代理服务器,其中所述报文修改组件通过将网络服务器访问响应报文中的源IP地址和目的IP地址进行互换,将所述网络服务器访问响应报文的确认序列号修改为存储在所述存储单元中的所述客户机确认发送序列号以及基于修改后的信息更新IP层和TCP层的校验和,以便将所述网络服务器访问响应报文修改为所述客户机确认报文。
根据本公开的代理服务器,其中所述存储单元还存储所述客户机发送来的访问请求报文的IP层和TCP层的校验和以及客户机确认报文的IP层和TCP层的校验和,并且所述报文修改组件通过直接获取所存储的IP层和TCP层的校验和来进行更新。
根据本公开的代理服务器,其中所述报文修改组件在所述访问请求报文的IP标识符缺省或为0时,将其IP标识符修改为1。
根据本公开的另一个方面,提供了一种代理服务器处理访问请求的方法,包括:接收客户机发出的目的地为网路服务器的访问请求报文;创建所述访问请求报文对应的会话结构体,所述结构体中记录所述访问请求报文的客户机请求发送序列号;通过报文修改组件修改来自客户机的指向网络服务器所述访问请求报文;以及通过报文发送组件将修改后的访问请求报文作为针对所述访问请求报文的访问响应报文反馈给客户机。
根据本公开的代理服务器处理访问请求的方法,还包括:接收所述客户机针对所述访问响应报文的客户机确认报文并存储所述客户机确认报文的客户机确认发送序列号;以及通过所述报文修改组件将所述客户机确认报文修改为所述访问请求报文,并通过报文发送组件将所述访问请求报文转发给所述网络服务器。
根据本公开的代理服务器处理访问请求的方法,还包括:接收所述网络服务器针对所述访问请求报文的网络服务器访问响应报文;通过所述报文修改组件将所述网络服务器访问响应报文修改为所述客户机确认报文;以及通过所述报文发送组件将所述客户机确认报文转发给所述网络服务器。
根据本公开的代理服务器处理访问请求的方法,还包括:所述会话结构体中将在所述报文发送组件将所述客户机确认报文转发给所述网络服务器之前来自所述客户机的与所述客户机确认报文对应的数据请求报文缓存在一个报文缓存队列。
根据本公开的代理服务器处理访问请求的方法,还包括:所述报文发送组件在将所述客户机确认报文转发给所述网络服务器之后,查询与所述会话结构体中对应的缓存队列,并按照先进先出的规则向所述网络服务器转发所述报文缓存队列中的数据请求报文。
根据本公开的代理服务器处理访问请求的方法,还包括:统计所述会话结构体的报文缓存队列中的数据请求报文的数量;以及在同一对客户机与网络服务器之间的连接下的所有会话结构体中的所有包换缓存队列中所排列的数据请求报文的数量大于预定值时,切断该对客户机与网络服务器之间的连接。
根据本公开的代理服务器处理访问请求的方法,其中通过所述访问请求报文修改为所述访问响应报文包括:将访问请求报文中的源IP地址和目的IP地址进行互换;将所述客户机请求发送序列号修改为确认序列号;以及基于修改后的信息更新IP层和TCP层的校验和。
根据本公开的代理服务器处理访问请求的方法,其中所述将所述客户机确认报文修改为所述访问请求报文包括:将所述客户机确认报文中的客户机确认发送序列号修改为存储在所述存储单元中的所述客户机请求发送序列号;以及基于修改后的信息更新IP层和TCP层的校验和。
根据本公开的代理服务器处理访问请求的方法,其中所述将所述网络服务器访问响应报文修改为所述客户机确认报文包括:将网络服务器访问响应报文中的源IP地址和目的IP地址进行互换;将所述网络服务器访问响应报文的确认序列号修改为存储在所述存储单元中的所述客户机确认发送序列号;以及基于修改后的信息更新IP层和TCP层的校验和。
根据本公开的代理服务器处理访问请求的方法,还包括:存储所述客户机发送来的访问请求报文的IP层和TCP层的校验和以及客户机确认报文的IP层和TCP层的校验和;以及基于修改后的信息更新IP层和TCP层的校验和通过直接获取所存储的IP层和TCP层的校验和来进行。
根据本公开的代理服务器处理访问请求的方法,还包括:在所述访问请求报文的IP标识符缺省时,通过所述报文修改组件将其IP标识符修改为1。
通过根据本公开的代理服务器,其针对所有来自客户机的访问请求报文,都不是进行缓存处理,而是直接将访问请求报文修改为访问响应报文发送给客户机。因此,即使客户机产生了泛洪访问请求攻击,即客户机发送了大量的访问请求,那么代理服务器无需占用任何资源,可以立即处理按照上述修改方式进行处理。由于这些泛洪访问请求通常不会就代理服务器的访问响应报文作出确认,因此,代理服务器就不会做出任何后续处理,从而阻止这些泛洪访问请求攻击报文,由此既保护了代理服务器,也有效地保护了网络服务器的安全。
附图说明
通过结合附图对于本公开的示例性实施例进行描述,可以更好地理解本公开,在附图中:
图1所示的是根据本公开实施例的代理服务器原理示意图;
图2所示的是根据本公开的代理服务器与客户机和网络服务器之间通讯的时序图;
图3所示的是根据本公开的代理服务器与客户机和网络服务器之间通讯的另一个时序图;以及
图4所示的是根据本公开的代理服务器处理访问请求报文的流程图。
具体实施方式
以下将描述本公开的具体实施方式,需要指出的是,在这些实施方式的具体描述过程中,为了进行简明扼要的描述,本说明书不可能对实际的实施方式的所有特征均作详尽的描述。应当可以理解的是,在任意一种实施方式的实际实施过程中,正如在任意一个工程项目或者设计项目的过程中,为了实现开发者的具体目标,为了满足系统相关的或者商业相关的限制,常常会做出各种各样的具体决策,而这也会从一种实施方式到另一种实施方式之间发生改变。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本公开公开的内容相关的本领域的普通技术人员而言,在本公开揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本公开的内容不充分。
除非另作定义,权利要求书和说明书中使用的技术术语或者科学术语应当为本公开所属技术领域内具有一般技能的人士所理解的通常意义。本公开专利申请说明书以及权利要求书中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“一个”或者“一”等类似词语并不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现在“包括”或者“包含”前面的元件或者物件涵盖出现在“包括”或者“包含”后面列举的元件或者物件及其等同元件,并不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,也不限于是直接的还是间接的连接。
图1所示的是根据本公开实施例的代理服务器原理示意图。如图1所示,代理服务器100布置在一个或多个客户机和一个或多个网络服务器之间。所述代理服务器100包括:报文接收组件110、报文过滤组件120、报文修改组件130、存储单元140以及报文发送组件150。图1中显示了报文发送组件150-1以及报文发送组件150-2。尽管显示为两个,但是实际上其可以是用一个报文发送组件150。此处显示为两个,仅仅是为了图示绘制的方便而采取的适应性措施。需要指出的是,也可以直接设置两个不同的报文发送组件150,以便一个面对客户机,一个面对网络服务器。这种设置也在本公开的保护范围之内。尽管本公开描述了报文接收组件110和报文过滤组件120,但是仅仅是为了描述而提及,本公开提及报文接收组件110和报文过滤组件120所采用的是现有代理服务器中的常规设置,因此对本公开所涉及的技术方案不是必需的。尤其是报文过滤组件120也并不是必须的,对于本公开而言,报文过滤组件120尽管可以基于报文过滤策略过滤一些不合法的报文,但是本公开在没有报文过滤组件120的情况下,也可以解决现有技术存在的上述问题。
在代理服务器100接收到任意一个客户机对网络服务访问连接请求时,例如图1中的客户机01对网络服务器01的访问请求报文SYN时,存储单元140会在基于所述访问请求报文SYN创建的会话结构体中记录所述访问请求报文SYN的客户机请求发送序列号。可选择地,还可以在机构体中存储所述访问请求报文SYN的IP校验和和TCP校验和。同时,所述报文修改组件130会对访问请求报文SYN进行修改。具体而言,所述报文修改组件130会将来自客户机的访问请求报文SYN修改成对针对访问请求报文SYN的访问响应报文SYN+ACK。具体而言,所述报文修改组件130首先将访问请求报文中的源IP地址和目的IP地址进行互换。通过将两者互换,形成使得该报文在网络层上(即IP层上)路由方向发生逆转,以便后面的报文发送组件150在对该报文路由时将该修改后的报文基于其修改后目的地IP地址在网络层上路由到客户机方向。相应于源IP地址和目的地IP地址的修改,所述报文修改组件130将该访问请求报文中的传输层(TCP)源端口和目的地端口也互换。从而使得修改后的报文能够被后面的报文发送组件150正确地路由到与发送所述访问请求报文的客户机所连接的代理服务器的端口,从而报文发送组件150能够将修改后的访问请求报文当作网络服务器对该访问请求报文的访问响应报文SYN+ACK发送到正确的客户机。需要指出的是,由于访问请求报文的IP源IP地址和目的地IP地址以及源TCP端口和目的地TCP端口互换改变,因此其IP校验和和TCP校验和也需要适应性改变。为此,所述报文修改组件130基于修改后的源IP地址和目的地IP地址以及源TCP端口和目的地TCP端口,重新计算该作为访问响应报文SYN+ACK的IP校验和以及TCP校验和,从而最后成为完整的访问响应报文SYN+ACK。此后报文发送组件150-1在收到经过访问请求报文SYN修改成的访问响应报文SYN+ACK时,会直接将其作为网络服务器反馈来的访问响应报文SYN+ACK,从而按照其修改后的IP地址以及TCP端口反发送到对应的客户机。
通过上述方式,一方面代理服务器本地并没有缓存访问请求报文SYN本身来等待客户机确认报文,而是直接将访问请求报文SYN修改为访问响应报文SYN+ACK反馈给客户机,因此消除在出现大量泛洪访问请求时耗尽代理服务器缓存资源的情形,从而使得代理服务器100的资源能够得到合理有效的使用。另一方面,使得期望通过在代理服务器100处在瞬间形成大量缓存的访问请求报文半连接而导致代理服务器100瘫痪的可能性消除掉。
在客户机正常发送访问请求报文SYN的情况下,客户机会对代理服务器100的报文发送组件150-1反馈的访问响应报文SYN+ACK生成正常的确认报文ACK,并发送到代理服务器100。此时,代理服务器100已经完成了与客户机的三次握手,将会启动正常的代理报文的转发。此时,如果客户机在确认TCP连接握手已经完成的情况下,会直接基于所建立的TCP网络连接向网络服务器发送数据报文,但是此时代理服务器100还没有与网络服务器建立TCP连接。为此,存储单元140会将所接收到的数据报文缓存在对应结构体的数据报文缓存队列中。
在代理服务器100接收组件110接收到来自客户机的确认报文ACK时,存储单元130会将该将所述客户机针对所述访问响应报文SYN+ACK的客户机确认报文ACK的客户机确认发送序列号存储在对应的会话结构体中。同时,所述报文修改组件130将所述客户机确认报文ACK修改为起初收到的所述访问请求报文SYN。具体而言,所述报文修改组件130首先只需要将客户机确认报文ACK的确认发送序列号修改为之前收到的访问请求报文SYN中的存储在会话结构体中的客户机请求发送序列号,并基于该序列号的修改重新计算客户机确认报文ACK的IP校验和以及TCP校验和,从而使得该客户机确认报文ACK完全修改成访问请求报文SYN。可选择地,如果在存储单元140中的会话结构体中预先存储了初始访问请求报文SYN的IP校验和以及TCP校验和,则所述报文修改组件130直接将客户机确认报文ACK的IP校验和以及TCP校验和替换为所存储的在会话结构体中的IP校验和以及TCP校验和即可。通过上述修改,报文发送组件150-2能够将修改后的客户机确认报文ACK当作客户机发送到网络服务器的初始访问请求报文SYN转发到网络服务器,开启与网络服务器的三次握手过程。由于客户机确认报文ACK与访问请求报文SYN具有相同的IP地址和TCP端口参数,因此不需要对IP地址和TCP端口参数进行修改。
网络服务器在接收到报文发送组件150-2发送来的访问请求报文SYN之后,同样会向对应的客户机反馈网络服务器的访问响应报文SYN+ACK。所述代理服务器的所述报文修改组件130在经由报文接收组件110接收到网络服务器的访问响应报文SYN+ACK之后,会将该网络服务器的访问响应报文SYN+ACK直接修改成客户机的确认报文ACK。随后报文发送组件150-2将修改成的客户机确认报文ACK反馈到对应的网络服务器。
具体而言,所述报文修改组件130首先将网络服务器的访问响应报文SYN+ACK中的源IP地址和目的IP地址进行互换。通过将两者互换,使得该报文在网络层上(即IP层上)路由方向发生逆转,以便报文发送组件150-2在对该报文路由时将该修改获得的客户机确认报文ACK基于其修改后目的地IP地址在网络层上路由到网络服务器方向。相应于源IP地址和目的地IP地址的修改,所述报文修改组件130将该报文中的传输层(TCP)源端口和目的地端口也互换,从而使得修改后的报文能够被后面的报文发送组件150-2正确地路由到与发送所述客户机确认报文ACK的网络服务器所连接的代理服务器的端口,从而报文发送组件150-2能够将修改后的客户机确认报文ACK当作客户机对网络服务器的访问响应报文SYN+ACK的客户机确认报文发送到正确的网络服务器。需要指出的是,由于网络服务器的访问响应报文SYN+ACK的IP源IP地址和目的地IP地址以及源TCP端口和目的地TCP端口互换改变,因此其IP校验和和TCP校验和也需要适应性改变。为此,所述报文修改组件130基于修改后的源IP地址和目的地IP地址以及源TCP端口和目的地TCP端口,重新计算该作为客户机确认报文ACK的IP校验和以及TCP校验和,从而最后成为完整的客户机确认报文ACK。此后报文发送组件150-2在收到经过网络服务器的访问响应报文SYN+ACK修改成的客户机确认报文ACK时,会直接将其作为客户机反馈来的客户机确认报文ACK,从而按照其修改后的IP地址以及TCP端口反发送到对应的网络服务器。可选择地,如果在存储单元140中的会话结构体中预先存储了客户机确认报文ACK的IP校验和以及TCP校验和,则所述报文修改组件130直接将网络服务器的访问响应报文SYN+ACK的IP校验和以及TCP校验和替换为所存储的在会话结构体中的IP校验和以及TCP校验和即可。通过上述修改,报文发送组件150-2能够将修改后的客户机确认报文ACK当作客户机发送到网络服务器的初始客户机确认报文ACK转发到网络服务器,从而结束代理服务器与网络服务器的三次握手过程。
相对于现有技术而言,在根据本公开的代理服务器100与网络服务器进行三次握手过程中,不需要缓存客户机发送来的客户机确认报文ACK,也不需要缓存网络服务器的访问响应报文SYN+ACK,是直接将网络服务器的访问响应报文SYN+ACK修改为客户机确认报文ACK反馈给网络服务器,因此在三次握手过程中节省了代理服务器缓存资源也不占用TCP连接的资源,相应地也节省了系统资源。
在根据本公开的代理服务器与客户机以及网络服务器分别完成TCP三次握手之后,此后报文发送组件150会直接将来自客户机的数据报文转发到网络服务器以及同样将网络服务器的数据报文转发到客户机。
进一步,在代理服务器100的接收组件110接收到客户机的初始客户机确认报文ACK之后以及报文转发组件150-2向网络服务器转发修改获得的客户机确认报文ACK之前,如果接收组件110接收到了客户机发送来的数据报文,则将该数据报文缓存在存储单元140中的对应的会话结构体中的数据报文缓存队列中。如图1所示,每个代理服务器100与客户机之一之间可能会存在多个TCP连接,每个服务器100与客户机之间TCP连接会包含多个会话结构体。为了解决客户机发送数据报文过快的情形,本公开的代理服务器100中每个会话结构体中形成数据报文缓存队列。如果一个客户机在与代理服务器100建立TCP连接后短时间内发送大量的数据报文,这意味着该客户机发起了数据报文的泛洪攻击。为此,根据本公开的代理服务器100还包括数据报文统计组件160,其统计同一个TCP连接下的所有会话结构体中在预定时间内缓存在个各个数据报文缓存队列中数据报文的数量。当所统计的数量超过预定阈值时,则判断该客户机发起了数据报文的泛洪攻击。由此,网络连接切断组件170则就有该判断切断该TCP连接。
图2所示的是根据本公开的代理服务器与客户机和网络服务器之间通讯的时序图。如图2所示,首先在步骤S201处,客户机向代理服务器100发送目的地为网络服务器的访问请求报文SYN。随后在步骤S202处,代理服务器100将所接收到的客户机访问请求报文SYN修改为访问响应报文SYN+ACK,之后在步骤S203处将修改获得的访问响应报文SYN+ACK反馈到客户机。在步骤S204客户机对所收到的访问响应报文SYN+ACK作出确认并发送目的地为网络服务器的确认报文ACK到代理服务器100。代理服务器100在步骤S205处将确认报文ACK修改为初始的访问请求报文SYN,并在步骤S206处将修改获得访问请求报文SYN转发到网络服务器。网络服务器在步骤S207处这对所接收到的访问请求报文SYN作出网络服务器的访问响应报文SYN+ACK并反馈到代理服务器100。代理服务器100在步骤S208处将网络服务器的访问响应报文SYN+ACK修改为客户机初始的确认报文ACK,并在步骤S209处将修改获得确认报文ACK转发到网络服务器。由此完成客户机与代理服务器100之间的TCP连接三次握手以及代理服务器100与网络服务器之间TCP连接三次握手。
图3所示的是根据本公开的代理服务器与客户机和网络服务器之间通讯的另一个时序图。其基本上与图2所示相似,不同的是在步骤S207之后以及S209之前就接收到了客户机发送来的数据报文,即步骤S210快于步骤S209。此时,由于代理服务器100与网络服务器之间的TCP连接还没有完成三次握手,因此无法之间将数据报文转发到网络服务器,因此,代理服务器在步骤S214处将所接收到的数据报文缓存在对应的会话结构体中的数据报文缓存队列中。尽管图3中显示了步骤S210快速到在步骤S207之后以及S208之前,其也可能快速到在步骤S204之后和步骤S206之前,也可以在在步骤S206之后和步骤S207之前。此时,代理服务器100与网络服务器之间的TCP连接还没有完成三次握手,因此无法之间将数据报文转发到网络服务器,因此,代理服务器会将在这些时间段内收到的数据报文缓存在对应的会话结构体中的数据报文缓存队列中。
图4所示的是根据本公开的代理服务器处理访问请求报文的流程图。如图4所示,在步骤S301处,代理服务器100接收并过滤客户机的访问请求报文SYN。随后在S302处,代理服务器100将访问请求报文SYN修改为访问响应报文SYN+ACK并反馈给客户机。在步骤S303,代理服务器100会接收客户机的确认报文ACK。随后代理服务器100在执行步骤S304的之前或同时在步骤S306-1处判断接收到客户机发送的新的报文是否为数据报文,如果是,则在步骤S307-1处将数据报文缓存到会话结构体数据报文队列中,并进入步骤S304。在步骤S304处,代理服务器将确认报文ACK修改为访问请求报文SYN并转发到网络服务器,并进入步骤S305。接着代理服务器100在执行步骤S305之前或同时在步骤S306-2处判断接收到客户机发送的新的报文是否为数据报文,如果是,则在步骤S307-2处将数据报文缓存到会话结构体数据报文队列中,并进入步骤S305。在步骤S305处,代理服务器接收网络服务器向客户机反馈的访问响应报文SYN+ACK,并进入步骤S308。随后,接着代理服务器100在执行步骤S308之前或同时在步骤S306-3处判断接收到客户机发送的新的报文是否为数据报文,如果是,则在步骤S307-3处将数据报文缓存到会话结构体数据报文队列中。尽管上述的步骤S306-1、S306-2以及S306-3是分开描述,但这并不意味着这些步骤分三次进行,而是可以一次完成,采用这种图示或描述仅仅是为了说明的方便。换句话说,所有步骤S306-1、S306-2以及S306-3仅仅表示在步骤S303之后和步骤308之前判断代理服务器100从客户机接收到的所有数据报文中的每一个是否为对应在步骤S303处所接收到的客户机的确认报文ACK的数据报文,如果是,则进行缓存处理,直到步骤S308结束后为止。接着代理服务器100在步骤S308处,将从网络服务器接收到访问响应报文SYN+ACK修改为来自客户机的确认报文ACK并反馈到网络服务器。最后,代理服务器在完成上述与客户机的TCP联机连接的三次握手以及与网络服务器的TCP连接的三次握手后之后,在步骤S309处,开始常规转发收到的数据报文或会话结构体中缓存的数据报文队列中的数据报文到网络服务器。代理服务器在转发完所有数据报文并且在一定时间内没有进一步的客户机数据报文时,会通过四次挥手操作断开所建立的TCP连接。
以上尽管采用按照处于客户机与网络服务器之间的方式描述本公开的代理服务器,但是网络服务器本身也可以是一个被访问的客户机。
综上所述,由于根据本公开的代理服务器针对所有来自客户机的访问请求报文,都不是进行缓存处理,而是直接将访问请求报文修改为访问响应报文发送给客户机。因此,即使客户机产生了泛洪访问请求攻击,即客户机发送了大量的访问请求,那么代理服务器无需占用任何资源,可以立即处理按照上述修改方式进行处理。由于这些泛洪访问请求通常不会就代理服务器的访问响应报文作出确认,因此,代理服务器就不会做出任何后续处理,从而阻止这些泛洪访问请求攻击报文,由此既保护了代理服务器,也有效地保护了网络服务器的安全。根据本公开的代理服务器一方面将TCP透明代理和包过滤结合,增加了TCP透明代理使用的多样性和精准性,另一方面在内核态直接进行TCP透明代理的处理,提高了转发设备的性能。而且,根据本公开的代理服务器通过修改TCP三次握手的相关报文的IP头和TCP头的信息后,进行转发,不缓存三次握手的报文和不占用TCP连接的资源,节省了系统资源。进一步,由于根据本公开的代理服务器缓存非常少量的TCP数据报文入队,且TCP入队队列的查找时间复杂度为O(1),节省了查找时间,提高了转发设备的性能。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,对本领域的普通技术人员而言,能够理解本公开的方法和装置的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本公开的说明的情况下运用他们的基本编程技能就能实现的。
因此,本公开的目的还可以通过在任何计算装置上运行一个程序或者一组程序来实现。所述计算装置可以是公知的通用装置。因此,本公开的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本公开,并且存储有这样的程序产品的存储介质也构成本公开。显然,所述存储介质可以是任何公知的存储介质或者将来所开发出来的任何存储介质。
还需要指出的是,在本公开的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (22)
1.一种代理服务器,布置在一个或多个客户机和一个或多个网络服务器之间,所述代理服务器包括:
报文修改组件,修改来自任意一个客户机的指向任意一个网络服务器的访问请求报文;
存储单元,存储所述访问请求报文对应的会话结构体,所述结构体中记录所述访问请求报文的客户机请求发送序列号;以及
报文发送组件,将修改后的访问请求报文作为针对所述访问请求报文的访问响应报文反馈给客户机。
2.根据权利要求1所述的代理服务器,其中所述存储单元还存储所述客户机针对所述访问响应报文的客户机确认报文的客户机确认发送序列号,所述报文修改组件将所述客户机确认报文修改为所述访问请求报文,以及所述报文发送组件将所述访问请求报文转发给所述网络服务器。
3.根据权利要求2所述的代理服务器,其中所述报文修改组件将所述网络服务器针对所述访问请求报文的网络服务器访问响应报文修改为所述客户机确认报文,以及所述报文发送组件将所述客户机确认报文转发给所述网络服务器。
4.根据权利要求3所述的代理服务器,其中所述会话结构体中将在所述报文发送组件将所述客户机确认报文转发给所述网络服务器之前来自所述客户机的与所述客户机确认报文对应的数据请求报文缓存在一个报文缓存队列。
5.根据权利要求4所述的代理服务器,其中所述报文发送组件在将所述客户机确认报文转发给所述网络服务器之后,查询与所述会话结构体中对应的缓存队列,并按照先进先出的规则向所述网络服务器转发所述报文缓存队列中的数据请求报文。
6.根据权利要求5所述的代理服务器,还包括:
报文统计组件,用于统计所述会话结构体的报文缓存队列中的数据请求报文的数量;以及
连接切断组件,用于在同一对客户机与网络服务器之间的连接下的所有会话结构体中的所有包换缓存队列中所排列的数据请求报文的数量大于预定值时,切断该对客户机与网络服务器之间的连接。
7.根据权利要求1所述的代理服务器,其中所述报文修改组件通过将访问请求报文中的源IP地址和目的IP地址进行互换、将所述客户机请求发送序列号修改为确认序列号以及基于修改后的信息更新IP层和TCP层的校验和,以便将所述访问请求报文修改为所述访问响应报文。
8.根据权利要求2所述的代理服务器,其中所述报文修改组件通过将所述客户机确认报文中的客户机确认发送序列号修改为存储在所述存储单元中的所述客户机请求发送序列号以及基于修改后的信息更新IP层和TCP层的校验和,以便将所述客户机确认报文修改为所述访问请求报文。
9.根据权利要求3所述的代理服务器,其中所述报文修改组件通过将网络服务器访问响应报文中的源IP地址和目的IP地址进行互换,将所述网络服务器访问响应报文的确认序列号修改为存储在所述存储单元中的所述客户机确认发送序列号以及基于修改后的信息更新IP层和TCP层的校验和,以便将所述网络服务器访问响应报文修改为所述客户机确认报文。
10.根据权利要求8或9所述的代理服务器,其中所述存储单元还存储所述客户机发送来的访问请求报文的IP层和TCP层的校验和以及客户机确认报文的IP层和TCP层的校验和,并且所述报文修改组件通过直接获取所存储的IP层和TCP层的校验和来进行更新。
11.根据权利要求7所述的代理服务器,其中所述报文修改组件在所述访问请求报文的IP标识符缺省时,将其IP标识符修改为1。
12.一种代理服务器处理访问请求的方法,包括:
接收客户机发出的目的地为网路服务器的访问请求报文并创建所述访问请求报文对应的会话结构体,所述结构体中记录所述访问请求报文的客户机请求发送序列号;
通过报文修改组件修改来自客户机的指向网络服务器所述访问请求报文;以及
通过报文发送组件将修改后的访问请求报文作为针对所述访问请求报文的访问响应报文反馈给客户机。
13.根据权利要求12所述的代理服务器处理访问请求的方法,还包括:
接收所述客户机针对所述访问响应报文的客户机确认报文并存储所述客户机确认报文的客户机确认发送序列号;以及
通过所述报文修改组件将所述客户机确认报文修改为所述访问请求报文,并通过报文发送组件将所述访问请求报文转发给所述网络服务器。
14.根据权利要求13所述的代理服务器处理访问请求的方法,还包括:
接收所述网络服务器针对所述访问请求报文的网络服务器访问响应报文;
通过所述报文修改组件将所述网络服务器访问响应报文修改为所述客户机确认报文;以及
通过所述报文发送组件将所述客户机确认报文转发给所述网络服务器。
15.根据权利要求14所述的代理服务器处理访问请求的方法,还包括:
所述会话结构体中将在所述报文发送组件将所述客户机确认报文转发给所述网络服务器之前来自所述客户机的与所述客户机确认报文对应的数据请求报文缓存在一个报文缓存队列。
16.根据权利要求15所述的代理服务器处理访问请求的方法,还包括:
所述报文发送组件在将所述客户机确认报文转发给所述网络服务器之后,查询与所述会话结构体中对应的缓存队列,并按照先进先出的规则向所述网络服务器转发所述报文缓存队列中的数据请求报文。
17.根据权利要求16所述的代理服务器处理访问请求的方法,还包括:
统计所述会话结构体的报文缓存队列中的数据请求报文的数量;以及
在同一对客户机与网络服务器之间的连接下的所有会话结构体中的所有包换缓存队列中所排列的数据请求报文的数量大于预定值时,切断该对客户机与网络服务器之间的连接。
18.根据权利要求12所述的代理服务器处理访问请求的方法,其中通过所述访问请求报文修改为所述访问响应报文包括:
将访问请求报文中的源IP地址和目的IP地址进行互换;
将所述客户机请求发送序列号修改为确认序列号;以及
基于修改后的信息更新IP层和TCP层的校验和。
19.根据权利要求13所述的代理服务器处理访问请求的方法,其中所述将所述客户机确认报文修改为所述访问请求报文包括:
将所述客户机确认报文中的客户机确认发送序列号修改为存储在所述存储单元中的所述客户机请求发送序列号;以及
基于修改后的信息更新IP层和TCP层的校验和。
20.根据权利要求14所述的代理服务器处理访问请求的方法,其中所述将所述网络服务器访问响应报文修改为所述客户机确认报文包括:
将网络服务器访问响应报文中的源IP地址和目的IP地址进行互换;
将所述网络服务器访问响应报文的确认序列号修改为存储在所述存储单元中的所述客户机确认发送序列号;以及
基于修改后的信息更新IP层和TCP层的校验和。
21.根据权利要求19或20所述的代理服务器处理访问请求的方法,还包括:
存储所述客户机发送来的访问请求报文的IP层和TCP层的校验和以及客户机确认报文的IP层和TCP层的校验和;以及
基于修改后的信息更新IP层和TCP层的校验和通过直接获取所存储的IP层和TCP层的校验和来进行。
22.根据权利要求18所述的代理服务器处理访问请求的方法,还包括:
在所述访问请求报文的IP标识符缺省时,通过所述报文修改组件将其IP标识符修改为1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010079216.7A CN111314447B (zh) | 2020-02-03 | 2020-02-03 | 代理服务器及其处理访问请求的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010079216.7A CN111314447B (zh) | 2020-02-03 | 2020-02-03 | 代理服务器及其处理访问请求的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111314447A true CN111314447A (zh) | 2020-06-19 |
CN111314447B CN111314447B (zh) | 2023-01-31 |
Family
ID=71147023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010079216.7A Active CN111314447B (zh) | 2020-02-03 | 2020-02-03 | 代理服务器及其处理访问请求的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111314447B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113992749A (zh) * | 2021-10-08 | 2022-01-28 | 浪潮云信息技术股份公司 | 一种基于go语言的http反向代理方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1469591A (zh) * | 2002-07-18 | 2004-01-21 | ��Ϊ��������˾ | 一种防御网络传输控制协议同步报文泛滥攻击的方法 |
CN101282209A (zh) * | 2008-05-13 | 2008-10-08 | 杭州华三通信技术有限公司 | 防范dns请求报文泛洪攻击的方法及设备 |
CN102291441A (zh) * | 2011-08-02 | 2011-12-21 | 杭州迪普科技有限公司 | 一种防范SYN Flood攻击的方法及安全代理装置 |
CN102780688A (zh) * | 2012-04-26 | 2012-11-14 | 华为技术有限公司 | 在传输控制协议tcp下防止攻击的方法和装置 |
US20180302434A1 (en) * | 2015-11-24 | 2018-10-18 | Wangsu Science & Technology Co., Ltd. | Processing method, device and system for tcp connection |
-
2020
- 2020-02-03 CN CN202010079216.7A patent/CN111314447B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1469591A (zh) * | 2002-07-18 | 2004-01-21 | ��Ϊ��������˾ | 一种防御网络传输控制协议同步报文泛滥攻击的方法 |
CN101282209A (zh) * | 2008-05-13 | 2008-10-08 | 杭州华三通信技术有限公司 | 防范dns请求报文泛洪攻击的方法及设备 |
CN102291441A (zh) * | 2011-08-02 | 2011-12-21 | 杭州迪普科技有限公司 | 一种防范SYN Flood攻击的方法及安全代理装置 |
CN102780688A (zh) * | 2012-04-26 | 2012-11-14 | 华为技术有限公司 | 在传输控制协议tcp下防止攻击的方法和装置 |
US20180302434A1 (en) * | 2015-11-24 | 2018-10-18 | Wangsu Science & Technology Co., Ltd. | Processing method, device and system for tcp connection |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113992749A (zh) * | 2021-10-08 | 2022-01-28 | 浪潮云信息技术股份公司 | 一种基于go语言的http反向代理方法及系统 |
CN113992749B (zh) * | 2021-10-08 | 2024-05-14 | 浪潮云信息技术股份公司 | 一种基于go语言的http反向代理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111314447B (zh) | 2023-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6950947B1 (en) | System for sharing network state to enhance network throughput | |
JP4921569B2 (ja) | オフロードユニットを使用したtcp接続のためのデータ処理 | |
US7826487B1 (en) | Coalescing acknowledgement responses to improve network communications | |
US8190960B1 (en) | Guaranteed inter-process communication | |
US7596802B2 (en) | Method and system for providing connection handling | |
KR100255501B1 (ko) | 전송 제어 프로토콜 글루를 통한 세션 및 전송 계층 프록시 개선 방법 | |
US20070025374A1 (en) | TCP normalization engine | |
WO2021063147A1 (zh) | 异构网络的报文转发方法及装置 | |
US20060029000A1 (en) | Connection establishment in a proxy server environment | |
KR20080015422A (ko) | 긴 지연 링크를 통한 http의 성능을 향상시키는 방법및 장치 | |
US11689564B2 (en) | Method and apparatus for processing data in cleaning device | |
EP3135016B1 (en) | Managing sequence values with added headers in computing devices | |
JP2013243694A (ja) | 少なくとも1つのtcpデータセグメントストリームをインラインコンテンツ解析にサブミットするための方法及びデバイス、その方法を実施するための1つ又は複数の命令シーケンスを保持するコンピュータ可読媒体、並びにコンピュータプログラム製品 | |
JP6444988B2 (ja) | Httpを利用する通信システム | |
US20150373135A1 (en) | Wide area network optimization | |
JP2017118545A5 (zh) | ||
CN112165449B (zh) | web应用实时权限的控制方法、电子装置和存储介质 | |
JP2017538335A (ja) | プロトコルスタックがないモードにおけるtcpの中間者処理方法 | |
CN111314447B (zh) | 代理服务器及其处理访问请求的方法 | |
EP3059924B1 (en) | Devices and methods for performing tcp handshakes | |
JP4506430B2 (ja) | アプリケーションモニタ装置 | |
US20070147376A1 (en) | Router-assisted DDoS protection by tunneling replicas | |
CN109688085B (zh) | 传输控制协议代理方法、存储介质及服务器 | |
CN112583935A (zh) | 缓冲区窗口调整方法、网关设备及存储介质 | |
CN108243196B (zh) | Netfilter架构下引入TCP协议栈的方法及系统、中间设备、介质 |
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 |