CN106470238A - 应用于服务器负载均衡中的连接建立方法及装置 - Google Patents

应用于服务器负载均衡中的连接建立方法及装置 Download PDF

Info

Publication number
CN106470238A
CN106470238A CN201510516359.9A CN201510516359A CN106470238A CN 106470238 A CN106470238 A CN 106470238A CN 201510516359 A CN201510516359 A CN 201510516359A CN 106470238 A CN106470238 A CN 106470238A
Authority
CN
China
Prior art keywords
message
client
link information
confirmation
self
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.)
Pending
Application number
CN201510516359.9A
Other languages
English (en)
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201510516359.9A priority Critical patent/CN106470238A/zh
Priority to TW105107224A priority patent/TWI677222B/zh
Priority to JP2018508649A priority patent/JP6858749B2/ja
Priority to EP16837932.9A priority patent/EP3338396B1/en
Priority to PCT/US2016/047876 priority patent/WO2017031460A1/en
Priority to US15/242,419 priority patent/US20170054640A1/en
Publication of CN106470238A publication Critical patent/CN106470238A/zh
Pending legal-status Critical Current

Links

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/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1671Details of the supervisory signal the supervisory signal being transmitted together with control information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • 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/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • 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/56Provisioning of proxy services
    • H04L67/563Data redirection of data network streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • 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/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

本申请公开了一种应用于服务器负载均衡中的连接建立方法及装置,所述方法包括:负载均衡服务器接收客户端发送的同步报文;根据同步报文中的客户端连接信息,计算得到序列值;向客户端回复写入真实服务器连接信息的同步确认报文,并将所述序列值作为同步确认报文中的序列号;接收客户端回复的确认报文,并根据确认报文中的确认号,计算得到客户端连接信息;构建写入客户端连接信息的自定义报文;将自定义报文发送至真实服务器,以便于真实服务器从自定义报文中解析获得客户端连接信息;根据客户端连接信息实现与客户端传输控制协议TCP连接的建立。本申请实施例降低了连接建立过程中的资源消耗,能够有效防御攻击者攻击。

Description

应用于服务器负载均衡中的连接建立方法及装置
技术领域
本申请属于通信技术领域,具体地说,涉及一种应用于服务器负载均衡中的连接建立方法及装置。
背景技术
服务器负载均衡是指由负载均衡服务器将客户端的访问流量均衡到多个后端的真实服务器的技术,以实现对真实服务器负载的均衡效果。
在进行负载均衡时,由于加入了负载均衡服务器,客户端发送的请求报文需要经由负载均衡服务器转发给真实服务器,因此,报文处理的流程也发生了变化。在现有的一种服务器负载均衡模式中,报文处理流程是客户端将请求报文发送至负载均衡服务器,再由负载均衡服务器将客户端请求报文转发至调用的真实服务器,然后真实服务器直接向客户端回复应答报文。
而在发送请求报文之前,需要先建立客户端与服务端的传输控制协议(英文全称:Transmission Control Protocol,简称:TCP)连接,现有技术中,按照TCP的协议规定,TCP连接建立需要经过三次握手,在上述提供的现有服务器负载均衡模式中,TCP连接建立过程为:
客户端发送同步(英文全称:Synchronous,简称:SYN)报文至负载均衡服务器,同步报文中的选项字段携带待协商的客户端连接信息;
负载均衡服务器将所述同步报文转发至真实服务器,真实服务器创建数据区保存客户端连接信息,建立与客户端的TCP半连接;
真实服务器向所述客户端回复同步确认(英文全称:SynchronousAcknowledgement,简称:SYN+ACK)报文,同步确认报文中携带待协商的真实服务器连接信息;
客户端回复确认(英文全称:Acknowledgement,简称:ACK)报文给负载均衡服务器;
负载均衡服务器将确认报文转发至真实服务器;
真实服务器接收到客户端的确认报文时,将与客户端建立的TCP半连接转换为TCP连接。
但是,现有的这种TCP连接建立过程,攻击者容易利用协议缺陷进行攻击。如果攻击者大量发送同步报文,就会造成服务器创建多个数据区,建立大量TCP半连接消耗系统资源,导致正常的请求无法得到处理,影响系统服务。
发明内容
有鉴于此,本申请提供了应用于服务器负载均衡中的连接建立方法及装置,用以解决存在攻击时,系统资源消耗较多,导致正常的请求无法得到处理,影响系统服务的技术问题。
为了解决上述技术问题,本申请公开了一种应用于服务器负载均衡中的连接建立方法,包括:
负载均衡服务器接收客户端发送的同步SYN报文;
根据所述同步报文中的客户端连接信息,计算得到序列值;
向所述客户端回复写入真实服务器连接信息的同步确认同步确认报文,并将所述序列值作为所述同步确认报文中的序列号;
接收客户端回复的确认确认报文,并根据所述确认报文中的确认号,计算得到所述客户端连接信息;
构建写入所述客户端连接信息的自定义报文;
将所述自定义报文发送至所述真实服务器,以便于所述真实服务器从所述自定义报文中解析获得所述客户端连接信息;根据所述客户端连接信息实现与所述客户端传输控制协议TCP连接的建立。
优选地,所述构建写入所述客户端连接信息的自定义报文包括:
在所述客户端回复的确认报文中添加建连标识符,以及将所述客户端连接信息写入所述确认报文中,获得构建的自定义报文;所述建连标识符用于识别所述自定义报文。
优选地,所述自定义报文为自定义同步报文;
所述构建写入所述客户端连接信息的自定义报文包括:
将所述客户端的同步报文中的序列号作为所述自定义同步报文的序列号;
将所述负载均衡服务器的同步确认报文中的序列号作为所述自定义同步报文的确认号;
将所述客户端连接信息写入所述自定义同步报文中,并在所述自定义同步报文中添加自定义字段以写入所述负载均衡服务器的地址;
所述将所述自定义报文发送至所述真实服务器,以便于所述真实服务器从所述自定义报文中解析获得所述客户端连接信息;根据所述客户端连接信息实现与所述客户端TCP连接的建立包括:
将所述自定义同步报文发送至所述真实服务器,以便于所述真实服务器根据所述自定义同步报文中的客户端连接信息,建立与客户端的TCP半连接,并根据所述负载均衡服务器地址向所述负载均衡服务器回复同步确认报文,其中,所述真实服务器回复的同步确认报文的序列号为所述自定义同步报文的确认号;
接收到真实服务器回复的所述同步确认报文之后,将所述客户端回复的所述确认报文发送至所述真实服务器,以便于所述真实服务器将所述TCP半连接转换为TCP连接。
优选地,所述接收客户端回复的确认报文,并根据所述确认报文中的确认号,计算得到所述客户端连接信息包括:
接收客户端回复的携带请求数据的确认报文,并根据所述确认报文中的确认号,计算得到所述客户端连接信息;
所述构建写入所述客户端连接信息的自定义报文包括:
构建写入所述客户端连接信息,且携带所述请求数据的自定义报文;
所述将所述自定义报文发送至所述真实服务器,以便于所述真实服务器从所述自定义报文中解析获得所述客户端连接信息;根据所述客户端连接信息实现与所述客户端TCP连接的建立包括:
将所述自定义报文发送至所述真实服务器,以便于所述真实服务器从所述自定义报文中解析获得所述客户端连接信息以及所述请求数据;根据所述客户端连接信息实现与所述客户端TCP连接的建立;基于所述TCP连接,向所述客户端回复所述请求数据的应答报文。
优选地,所述根据所述同步报文中的客户端连接信息,计算得到序列值包括:
将所述同步报文中的客户端连接信息,采用同步cookie技术的cookie处理函数进行处理,将计算得到的cookie值作为序列值;
所述接收客户端回复的确认报文,并根据所述确认报文中的确认号,计算得到所述客户端连接信息包括:
接收客户端回复的确认报文,并根据所述确认报文中的确认号,计算得到所述cookie值;
对所述cookie值进行校验,并在校验通过之后,获得所述客户端连接信息。
一种应用于服务器负载均衡中的连接建立方法,包括:
客户端向负载均衡服务器发送携带所述客户端连接信息的同步报文;
接收所述负载均衡服务器回复的同步确认报文;其中,所述同步确认报文的序列号为所述负载均衡服务器根据所述同步报文中的客户端连接信息,计算得到的序列值;所述同步确认报文携带真实服务器连接信息;
向所述负载均衡服务器回复确认报文,以便于所述负载均衡服务器根据所述确认报文中的确认号,计算得到所述客户端连接信息;构建写入所述客户端连接信息的自定义报文;将所述自定义报文发送至所述真实服务器,由所述真实服务器从所述自定义报文中解析获得所述客户端连接信息;根据所述客户端连接信息实现与所述客户端TCP连接的建立。
一种应用于服务器负载均衡中的连接建立方法,包括:
真实服务器接收负载均衡服务器发送的自定义报文,所述自定义报文按照如下方式获得:所述负载均衡服务器接收客户端发送的同步报文;根据所述同步报文中的客户端连接信息,计算得到序列值;向所述客户端回复写入真实服务器连接信息的同步确认报文,并将所述序列值作为所述同步确认报文中的序列号;接收客户端回复的确认报文,并根据所述确认报文中的确认号,计算得到所述客户端连接信息;构建写入所述客户端连接信息的自定义报文;
从所述自定义报文中解析获得所述客户端连接信息;
根据所述客户端连接信息实现与所述客户端TCP连接的建立。
一种应用于服务器负载均衡中的连接建立装置,包括:
第一接收模块,用于接收客户端发送的同步报文;
计算模块,用于根据所述同步报文中的客户端连接信息,计算得到序列值;
第一回复模块,用于向所述客户端回复写入真实服务器连接信息的同步确认报文,并将所述序列值作为所述同步确认报文中的序列号;
第二接收模块,用于接收客户端回复的确认报文,并根据所述确认报文中的确认号,计算得到所述客户端连接信息;
构建模块,用于构建写入所述客户端连接信息的自定义报文;
第一发送模块,用于将所述自定义报文发送至所述真实服务器,以便于所述真实服务器从所述自定义报文中解析获得所述客户端连接信息;根据所述客户端连接信息实现与所述客户端TCP连接的建立。
优选地,所述构建模块具体用于:
在所述客户端回复的确认报文中添加建连标识符,以及将所述客户端连接信息写入所述确认报文中,获得构建的自定义报文;所述建连标识符用于识别所述自定义报文。
优选地,所述构建模块具体用于:
将所述客户端的同步报文中的序列号作为所述自定义同步报文的序列号;将所述负载均衡服务器的同步确认报文中的序列号作为所述自定义同步报文的确认号;将所述客户端连接信息写入所述自定义同步报文中,并在所述自定义同步报文中添加自定义字段写入所述负载均衡服务器的地址;
所述第一发送模块包括:
第一发送子模块,用于将所述自定义同步报文发送至所述真实服务器,以便于所述真实服务器根据所述自定义同步报文中的客户端连接信息,建立与客户端的TCP半连接;
第二发送子模块,用于接收到真实服务器根据所述负载均衡服务器地址发送的同步确认报文之后,将所述客户端回复的所述确认报文发送至所述真实服务器,以便于所述真实服务器将所述TCP半连接转换为TCP连接,其中,所述真实服务器回复的同步确认报文的序列号为所述自定义同步报文的确认号。
优选地,所述第二接收模块具体用于:
接收客户端回复的携带请求数据的确认报文,并根据所述确认报文中的确认号,计算得到所述客户端连接信息;
所述构建模块具体用于:
构建写入所述客户端连接信息,且携带所述请求数据的自定义报文;
所述第一发送模块具体用于:
将所述自定义报文发送至所述真实服务器,以便于所述真实服务器接收到所述自定义报文之后,解析获得所述客户端连接信息以及请求数据;并根据所述客户端连接信息建立与所述客户端的TCP连接,基于所述TCP连接,向所述客户端回复所述请求数据的应答报文。
优选地,所述计算模块具体用于:
将所述同步报文中的客户端连接信息,采用同步cookie技术中的cookie处理函数进行处理,计算得到cookie值,作为序列值;
所述第二接收模块包括:
接收子模块,用于接收客户端回复的确认报文,并根据所述确认报文中的确认号,计算得到所述cookie值;
校验子模块,用于对所述cookie值进行校验,并在校验通过之后,获得所述客户端连接信息。
一种应用于服务器负载均衡中的连接建立装置,包括:
第二发送模块,用于向负载均衡服务器发送携带所述客户端连接信息的同步报文;
第三接收模块,用于接收所述负载均衡服务器回复的同步确认报文,其中,所述同步确认报文的序列号为所述负载均衡服务器根据所述SYN报文中的客户端连接信息,计算得到的序列值;所述同步确认报文携带真实服务器连接信息;
第二回复模块,用于向所述负载均衡服务器回复确认报文,以便于所述负载均衡服务器根据所述确认报文中的确认号,计算得到所述客户端连接信息;构建写入所述客户端连接信息的自定义报文;将所述自定义报文发送至所述真实服务器,由所述真实服务器从所述自定义报文中解析获得所述客户端连接信息;根据所述客户端连接信息实现与所述客户端TCP连接的建立。
一种应用于服务器负载均衡中的连接建立装置,包括:
第四接收模块,用于接收负载均衡服务器发送的自定义报文,所述自定义报文按照如下方式获得:所述负载均衡服务器接收客户端发送的同步报文;根据所述同步报文中的客户端连接信息,计算得到序列值;向所述客户端回复写入真实服务器连接信息的同步确认报文,并将所述序列值作为所述同步确认报文中的序列号;接收客户端回复的确认报文,并根据所述确认报文中的确认号,计算得到所述客户端连接信息;构建写入所述客户端连接信息的自定义报文;
解析模块,用于从所述自定义报文中解析获得所述客户端连接信息;
连接建立模块,用于根据所述客户端连接信息实现与所述客户端TCP连接的。
与现有技术相比,本申请可以获得包括以下技术效果:
负载均衡服务器将客户端发送的同步报文中的客户端连接信息,保存在回复的同步确认的序列号中,无需创建数据区保存,不会消耗过多的系统资源,从而在负载均衡服务器即可以有效防御攻击者的攻击,不会导致系统资源消耗殆尽,使得能够处理正常的请求,降低了对系统服务的影响,且负载均衡服务器可以通过构建自定义报文将客户端回复的确认报文中的客户端连接信息发送至真实服务器,真实服务器即可以建立与客户端的TCP连接,保证了TCP连接的正常建立。
当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请实施例的一种应用于服务器负载均衡中的连接建立方法一个实施例的流程图;
图2是本申请实施例的一种应用于服务器负载均衡中的连接建立方法又一个实施例的信令图;
图3是本申请实施例的一种应用于服务器负载均衡中的连接建立方法又一个实施例的信令图;
图4是本申请实施例的一种应用于服务器负载均衡中的连接建立装置一个实施例的结构示意图;
图5是本申请实施例的一种应用于服务器负载均衡中的连接建立装置又一个实施例的结构示意图;
图6是本申请实施例的一种应用于服务器负载均衡中的连接建立装置又一个实施例的结构示意图;
图7是本申请实施例的一种连接建立系统一个实施例的结构示意图。
具体实施方式
以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
图1为本申请实施例提供的一种应用于服务器负载均衡中的连接建立方法一个实施例的流程图,该方法可以包括以下几个步骤:
101:负载均衡服务器接收客户端发送的同步(英文全称:Synchronous,简称:SYN)报文。
102:根据所述SYN报文中的客户端连接信息,计算得到序列值。
103:向所述客户端回复写入真实服务器连接信息的同步确认(英文全称:Synchronous Acknowledgement,简称:SYN+ACK)报文,并将所述序列值作为所述SYN+ACK报文中的序列号。
104:接收客户端回复的确认(英文全称:Acknowledgement,简称:ACK)报文,并根据所述ACK报文中的确认号,计算得到所述客户端连接信息。
确认号即为所述SYN+ACK报文中的序列号加1,因此将确认号减1即得到根据客户端连接信息计算得到的序列值,根据序列值,即可以获得客户端连接信息。
105:构建写入所述客户端连接信息的自定义报文。
106:将所述自定义报文发送至所述真实服务器,以便于所述真实服务器从所述自定义报文中解析获得所述客户端连接信息;根据所述客户端连接信息实现与所述客户端传输控制协议(英文全称:Transmission ControlProtocol,简称:TCP)连接的建立。
本申请实施例中,负载均衡服务器利用SYN中的客户端连接信息,计算得到一个序列值,该序列值作为负载均衡服务器回复的SYN+ACK的序列号,从而避免了创建数据区保存客户端连接信息,降低了对资源的消耗。即便存在攻击,由于未创建数据区,因此不会导致资源消耗殆尽,有效实现了攻击防御。
且本申请实施例在负载均衡服务器中即实现了攻击防御,增加了防御性能。且将客户端连接信息保存在SYN+ACK的序列号中,在接收到ACK报文时,完成了类似三次握手协商的过程,负载均衡服务器通过构建自定义报文可以将客户端连接信息发送至真实服务器,且负载均衡服务器已将真实服务器的连接信息发送至客户端,因此,真实服务器即可以建立与客户端的TCP连接,保证了TCP连接的正常建立。。
基于建立的TCP连接,按照服务器负载均衡模式,客户端即可以将请求报文发送至负载服务器,由负载服务器转发至真实服务器,真实服务器即可以直接向客户端回复应答报文。
在实际应用中,TCP报文的头部结构通常包括源端口、目的端口、序列号、确认号、预留位、TCP选项、窗口、校验和、紧急指针等字段。
源端口为发送报文的端口或进程,目的端口为接收报文的端口或进程。
序列号用于标识每个报文段,使目的主机可确认已收到的报文段中的数据。在建立连接时,双方都提供一个初始序列号。本申请实施例中,SYN+ACK中的序列号即为一个初始序列号,该初始序列号,利用客户端的连接信息计算得到,使得将客户端连接信息保存在了序列号中,无需创建数据区进行保存,可以减少资源占用。
确认号用于确定某个或几个报文已被接收,确认号等于顺序接收到的最后一个报文的序列号加1。
因此根据客户端回复的ACK报文中的确认号,将其减去1,即可以得到根据客户端连接信息计算得到的序列值,进而可以获得客户端连接信息。
连接信息写入TCP选项中,因此负载均衡服务器可以从SYN报文的TCP选项中解析获得客户端连接信息,客户端可以从SYN+ACK的TCP选项中解析获得真实服务器连接信息。该自定义报文中,客户端连接信息具体写入到自定义报文的TCP选项中。
其中,负载均衡服务器回复的SYN+ACK报文的TCP选项写入的是真实服务器连接信息,真实服务器连接信息可以由负载均衡服务器与真实服务器协商获得。
在现有技术中,攻击者可以利用TCP的协议漏洞,发送大量的SYN报文进行攻击,也即SYN洪水(英文全称:Synchronous flood,简称:SYN flood)攻击,而导致创建大量的数据区,使得资源大量消耗,导致正常的请求,也即正常的报文无法得到处理,影响系统服务。
SYN flood攻击是一种广为人知的拒绝服务攻击(英文全称:Denialof Service,简称:DoS)与分布式拒绝服务攻击(英文全称:DistributedDenial of Service,简称:DDoS)的方式之一,采用使得被攻击方资源耗尽,如CPU满负荷或内存不足的攻击方式。。
而通过本申请实施例,由于负载均衡服务器回复SYN+ACK报文,客户端连接信息保存在了负载均衡器的SYN+ACK报文的序列号中,因此无需创建数据区,不会造成资源大量消耗,在负载均衡服务器即实现了对SYN flood攻击的有效防御,提高了防御性能,且降低了对资源消耗,使得正常请求可以得到处理。
本申请的服务器负载均衡模式中,请求流量经由负载均衡服务器,而应答流量不经过负载均衡服务器,真实服务器可以向客户端直接回复应答报文,降低了负载均衡服务器的负担,负载均衡服务器也不会成为出口带宽的瓶颈。
其中,TCP选项中的连接信息可以包括:
mss:Maxitum Segment Size,最大报文段长度,表示T C P传往另一端的最大块数据的长度
wscale:Window Scale Option,TCP窗口缩放选项,是用来增加TCP接收窗口的大小而超过65536字节
timestamp:时间戳选项,使发送方在每个报文段中放置一个时间戳值。接收方在确认中返回这个数值,从而允许发送方为每一个收到的A C K计算RT T
SACK:Selective Acknowledgment,选择性确认选项,使TCP只重新发送丢失的包,不用发送后续所有的包,而且提供相应机制使接收方能告诉发送方哪些数据丢失,哪些数据重发了,哪些数据已经提前收到等
其中,构建写入客户端连接信息的自定义报文可以有多种可能的实现方式:
在一种可能的实现方式中,可以直接将客户端回复的ACK报文进行修改,可以将客户端连接信息写入ACK报文的TCP选项,同时在ACK报文中设置一个建连标识符,以便于区分该ACK报文,从而即可以构建得到自定义报文。
该建立标识符可以设置在ACK报文的预留位中,可以取预留位中的一位写入建立标识,保留三位。
真实服务器接收到根据ACK报文构建的自定义报文时,根据建连标识符,可以确定该ACK报文为自定义报文,从而解析出其TCP选项中的客户端连接信息,真实服务器的连接信息已发送至客户端,因此即可以建立与客户端的TCP连接。
该自定义报文的序列号与ACK报文一致,因此可以保证客户端、负载服务器以及真实服务器的通行没有序列号的偏差。
在具体建立过程中,解析获得客户端连接信息之后,申请套接字(英文全称:socket,用于描述地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信)数据结构,初始化socket的相关成员变量,设置socket的TCP状态为已建立(英文全称:Established,在TCP状态机中代表双向通讯已建立),调用系统的socket创建函数创建socket,从而即可以完成TCP连接。
作为另一种可能的实现方式,仍然采用三次握手的方式,该自定义报文为自定义SYN报文;
该自定义SYN报文中,序列号为客户端发送的SYN报文的序列号,确认号为负载均衡服务器回复的SYN+ACK报文中的序列号,使得真实服务器回复的SYN+ACK报文中的序列号即为该自定义SYN报文的确认号,也即负载均衡服务器回复的SYN+ACK报文中的序列号;从而保证客户端、负载服务器以及真实服务器的通行没有序列号的偏差。
TCP选项中写入客户端连接信息;另外还携带负载均衡服务器地址,具体可以通过在自定义SYN报文中添加自定义的TCP选项字段,以用来写入负载均衡服务器地址。
真实服务器接收到该自定义SYN报文之后,解析获得客户端连接信息,根据所述客户端连接信息实现与所述客户端TCP连接的建立包括建立TCP半连接,以及将TCP半连接转换为TCP连接。
具体过程可以是:
基于TCP协议,首先建立与客户端的TCP半连接。
自定义SYN报文的区分可以通过是否携带负载均衡服务器地址来确定,具体可以是通过是否存在自定义TCP选项确定。
基于TCP协议,根据所述负载均衡服务器地址,真实服务器向负载均衡服务器回复SYN+ACK报文,从而负载均衡服务器即可以将所述客户端回复的所述ACK报文发送至所述真实服务器,真实服务器即可以将TCP半连接转换为TCP连接。
由于在负载均衡服务器进行了攻击防御,将SYN报文中的客户端连接信息保存在了SYN+ACK报文的序列号中,负载均衡服务器接收到客户端的ACK报文之后,向真实服务器发起自定义SYN报文;因此真实服务器接收到的SYN报文可以认为是合法的SYN报文,可以进行正常的处理。
当真实服务器接收到自定义SYN报文之后,识别出自定义SYN报文中的自定义TCP选项,建立TCP半连接,并根据自定义TCP选项中的负载均衡服务器地址,向负载均衡服务器回复SYN+ACK报文。
由于负载均衡服务器保存的连接信息中不包含负载均衡服务器的本地地址,而查找连接需要用到客户端地址、端口和真实服务器地址、端口,所以回复的SYN+ACK报文中需要携带这些信息,真实服务器回复的SYN+ACK报文可以通过IPIP隧道(英文全称:IPIP tunnel)方式发送,以保存这些信息。IPIP隧道是将网络协议(英文全称:Internet Protocol,简称:IP)包封装在附加的IP包头中,通过IP网络传送的简单协议)
下面结合图2所示的信令图,对本申请实施例的应用于服务器负载均衡中的连接建立方法的又一个实施例进行描述,该方法应用在客户端、负载均衡服务器以及真实服务器构成的负载均衡系统中,可以包括以下几个步骤:
201:客户端向负载均衡服务器发送SYN报文。
所述SYN报文的TCP选项携带客户端连接信息。
202:负载均衡服务器根据所述SYN报文中的客户端连接信息,计算得到序列值。
具体的,序列值可以采用同步cookie(英文全称:Synchronous cookie,简称:SYN cookie)技术,利用cookie处理函数对SYN报文中的客户端连接信息进行处理,计算出一个cookie值,将计算得到的cookie值,作为序列值。SYN cookie技术是用来防范SYN flood攻击的一种技术手段。它的原理即是在收到TCP报文包并返回SYN+ACK报文时,不分配一个专门的数据区,而是根据这个SYN报文计算出一个cookie值。
假设,Saddr是客户端源地址,daddr是访问目标地址,sport是客户端源端口,dport是访问目标端口,则cookie值的计算过程如下所述:
1、A=cookie_hash(saddr,daddr,sport,dport,0,0),hash函数使用crc32算法;
2、B=客户端的SYN包的序列号;
3、C=jiffies/(HZ*60),jiffies是系统的当前时钟计数,HZ为1秒钟系统的时钟计数,C的单位为分钟;
4、D=cookie_hash(saddr,daddr,sport,dport,C,1);
5、E=保存的tcp选项值,分布:[21][20][19-16][15-0],21位为SACK选项,20位为timestamp选项,19-16位为wscale选项,15-0位为mss选项;
6、cookie=A+B+(C《24)+((D+E)&0x00FFFFFF)。
203:负载均衡服务器向所述客户端回复写入真实服务器连接信息的SYN+ACK报文,并将所述序列值作为所述SYN+ACK报文中的序列号。
204:客户端向所述负载均衡服务器回复ACK报文。
所述ACK报文中的确认号根据所述SYN+ACK报文中的序列号得到,具体的ACK报文的确认号为SYN+ACK报文中的序列号加1。
205:负载均衡服务器根据所述ACK报文中的确认号,计算得到所述客户端连接信息。
其中,负载均衡服务器将确认号减1,可以到序列值,在序列值为cookie值时,通过对cookie值进行校验,在校验通过之后,得到客户端连接信息;
校验过程可以如下所述:
1、cookie值为ACK报文的确认序列号–1;
2、cookie=Cookie-A-B(见上文);
3、C1=jiffies/(HZ*60),这里的jiffies已经随着时间推进往上增;
4、Diff=C1-(Cookie》24)=C1–C,得到时间的差值,大于预设阈值则判断不合法;
5、C=C1-Diff,D=cookie_hash(saddr,daddr,sport,dport,C,1);
6、E=(cookie–D)&0x00FFFFFF,得到保存的tcp option选项;
7、校验解析得到的选项是否是合法值;
8、校验通过,返回解析得到的选项值。
若检验未通过,则可以直接结束流程,不对客户端报文进行处理。
206:负载均衡服务器在所述客户端回复的ACK报文中添加建连标识符,以及将所述客户端连接信息写入所述ACK报文中,获得构建的自定义报文。
所述建连标识符用于识别所述自定义报文,该建连标识符可以写入ACK报文头部的预留位中。客户端连接信息写入ACK报文的TCP选项中。
207:将自定义报文发送至真实服务器。
208:真实服务器解析获得所述客户端连接信息,根据所述客户端连接信息建立与所述客户端的TCP连接。
其中,客户端回复的ACK报文中可以携带请求数据,或者所述ACK报文为携带确认标识的请求报文。
因此在构建的自定义报文中也携带所述请求数据。
真实服务器建立TCP连接之后,还可以基于该TCP连接,针对所述请求数据,向客户端回复应答报文。
在本实施例中,客户端连接信息保存在负载均衡服务器回复的SYN+ACK报文中,无需创建数据区存储,不占用系统资源,因此即便存在SYN flood攻击,在负载均衡服务器有效进行了攻击防御,不会影响正常请求的处理,不会影响系统服务。
下面结合图3所示的信令图,对本申请实施例的应用于服务器负载均衡中的连接建立方法的又一个实施例进行描述,该方法应用在客户端、负载均衡服务器以及真实服务器构成的负载均衡系统中,可以包括以下几个步骤:
301:客户端向负载均衡服务器发送SYN报文。
所述SYN报文的TCP选项携带客户端连接信息。
302:负载均衡服务器根据所述SYN报文中的客户端连接信息,计算得到序列值。
其中,具体的,可以采用SYN cookie技术,利用cookie处理函数对客户端连接信息进行处理,将计算得到的cookie值作为序列值。
303:负载均衡服务器向所述客户端回复写入真实服务器连接信息的SYN+ACK报文,并将所述序列值作为所述SYN+ACK报文中的序列号。
304:客户端向所述负载均衡服务器回复ACK报文。
所述ACK报文中的确认号根据所述SYN+ACK报文中的序列号得到,具体的ACK报文的确认号为所述SYN+ACK报文中的序列号加1。
305:负载均衡服务器根据所述ACK报文中的确认号,计算得到所述客户端连接信息。
其中,负载均衡服务器将确认号减1,可以得到序列值,在序列值为cookie值时,通过对cookie值进行校验,在校验通过之后,得到客户端连接信息。
Cookie值的计算和校验,可以参见上述实施例中所述,在此不再赘述。
306:负载均衡服务器将所述客户端的SYN报文中的序列号作为自定义SYN报文的序列号;将所述负载均衡服务器的SYN+ACK报文中的序列号作为所述自定义SYN报文的确认号;将所述客户端连接信息写入所述自定义SYN报文中,并在所述自定义SYN报文中添加自定义字段写入所述负载均衡服务器的地址。
307:负载均衡服务器将所述自定义SYN报文发送至所述真实服务器。
308:真实服务器根据所述自定义SYN报文中的客户端连接信息,建立与客户端的TCP半连接。
309:真实服务器根据所述负载均衡服务器地址,向所述负载均衡服务器回复SYN+ACK报文。
真实服务器回复的SYN+ACK报文的序列号为所述自定义SYN报文的确认号。
310:负载均衡服务器接收到所述真实服务器回复的SYN+ACK报文之后,将所述客户端回复的所述ACK报文发送至所述真实服务器。
311:真实服务器建立与所述客户端的TCP连接。
其中,客户端回复的ACK报文中可以携带请求数据,或者所述ACK报文为携带确认标识的请求报文。真实服务器接收到客户端的ACK报文之后,基于该TCP连接,针对所述请求数据,向客户端回复应答报文。
在本实施例中,客户端连接信息保存在SYN+ACK报文中,无需创建数据区存储,不会消耗系统资源,即便存在SYN flood攻击,由于没有创建半连接,因此也不会导致系统资源消耗殆尽,不会影响正常请求的处理。由于在负载均衡服务器已进行了有效的攻击防御,真实服务器接收到的SYN报文可以认为是合法报文,可以正常进行处理。
图4为本申请实施例提供的应用于服务器负载均衡中的连接建立装置一个实施例的结构示意图,该装置具体应用于负载均衡服务器中,该装置可以包括:
第一接收模块401,用于接收客户端发送的SYN报文;
计算模块402,用于根据所述SYN报文中的客户端连接信息,计算得到序列值;
第一回复模块403,用于向所述客户端回复写入真实服务器连接信息的SYN+ACK报文,并将所述序列值作为所述SYN+ACK报文中的序列号;
第二接收模块404,用于接收客户端回复的ACK报文,并根据所述ACK报文中的确认号,计算得到所述客户端连接信息;
构建模块405,用于构建写入所述客户端连接信息的自定义报文;
第一发送模块406,用于将所述自定义报文发送至所述真实服务器,以便于所述真实服务器从所述自定义报文中解析获得所述客户端连接信息;根据所述客户端连接信息实现与所述客户端TCP连接的建立。
本申请实施例中,利用SYN报文中的客户端连接信息,计算得到一个序列值,该序列值作为负载均衡服务器回复的SYN+ACK的序列号,从而避免了需要创建数据区保存客户端连接信息,即便存在攻击,由于未创建数据区,因此不会导致资源浪费。
且本申请实施例在负载均衡服务器即实现了攻击防御,使得增加了防御性能。
且负载均衡服务器接收到客户端的ACK报文之后,向真实服务器发送了携带客户端连接信息的自定义报文,使得真实服务器建立与客户端的TCP连接,保证了TCP连接的正常建立。
其中,作为一种可能的实现方式中,该构建模块405可以具体用于:
在所述客户端回复的ACK报文中添加建连标识符,以及将所述客户端连接信息写入所述ACK报文中,获得构建的自定义报文;所述建连标识符用于识别所述自定义报文。
也即可以直接将客户端回复的ACK报文进行修改,根据TCP协议的规定,ACK报文的TCP选项为空,因此可以将客户端连接信息写入ACK报文的TCP选项,同时在ACK报文中设置一个建连标识符,从而即可以构建得到自定义报文。
该建立标识符可以设置在ACK报文的预留位中,可以取预留位中的一位写入建立标识,保留三位。
真实服务器接收到根据ACK报文构建的自定义报文时,根据建连标识符,可以确定该ACK报文为自定义报文,从而解析出其TCP选项中的客户端连接信息,真实服务器的连接信息已发送至客户端,因此即可以建立与客户端的TCP连接。
该自定义报文的序列号与ACK报文一致,因此可以保证客户端、负载服务器以及真实服务器的通行没有序列号的偏差。
在具体建立过程中,解析获得客户端连接信息之后,申请socket数据结构,初始化socket的相关成员变量,设置socket的TCP状态为Established,调用系统的socket创建函数创建socket,从而即可以完成TCP连接。
在另一种可能的实现方式中,该构建模块405可以具体用于:
将所述客户端的SYN报文中的序列号作为所述自定义SYN报文的序列号;将所述负载均衡服务器的SYN+ACK报文中的序列号作为所述自定义SYN报文的确认号;将所述客户端连接信息写入所述自定义SYN报文中,并在所述自定义SYN报文中添加自定义字段写入所述负载均衡服务器的地址;
在该可能实现方式中,所述第一发送模块406可以包括:
第一发送子模块,用于将所述自定义SYN报文发送至所述真实服务器,以便于所述真实服务器根据所述自定义SYN报文中的客户端连接信息,建立与客户端的TCP半连接;
第二发送子模块,用于接收到真实服务器根据所述负载均衡服务器地址发送的SYN+ACK报文之后,将所述客户端回复的所述ACK报文发送至所述真实服务器,以便于所述真实服务器将所述TCP半连接转换为TCP连接。
由于采用了三次握手方式,自定义SYN报文可以触发建立TCP连接,真实服务器接收到该ACK报文之后,再将TCP半连接转换为TCP连接,客户端即可以进行请求报文的发送。
由于在负载均衡服务器已经进行了攻击防御;因此真实服务器接收到SYN报文可以认为是合法的SYN报文,可以进行正常的处理。
其中,客户端回复的ACK报文中可以携带请求数据。因此在该自定义报文中也携带所述请求数据。真实服务器建立TCP连接之后,还可以基于该TCP连接,针对所述请求数据,向客户端回复应答报文。
因此,本申请实施例中第二接收模块404可以具体用于:
接收客户端回复的携带请求数据的ACK报文,并根据所述ACK报文中的确认号,计算得到所述客户端连接信息;
构建模块405可以具体用于:
构建写入所述客户端连接信息,且携带所述请求数据的自定义报文;
第一发送模块406发送至真实服务器的自定义报文,用于触发所述所述真实服务器接收到所述自定义报文之后,解析获得所述客户端连接信息以及请求数据;并根据所述客户端连接信息实现与所述客户端的TCP连接,根据所述请求数据,基于所述TCP连接向所述客户端回复应答报文。
其中,可以采用SYN cookie技术,利用cookie处理函数对客户端连接信息进行处理,将计算得到的cookie值作为序列值。因此所述计算模块可以具体用于:
将所述SYN报文中的客户端连接信息,采用SYN cookie技术中的cookie处理函数进行处理,将计算得到的cookie值作为序列值。
所述第二接收模块可以包括:
接收子模块,用于接收客户端回复的ACK报文,并根据所述ACK报文中的确认号,计算得到所述cookie值;
校验子模块,用于对所述cookie值进行校验,并在校验通过之后,获得所述客户端连接信息。
将确认号减1,可以到序列值,在序列值为cookie值时,通过对cookie值进行校验,在校验通过之后,得到客户端连接信息。
Cookie值的计算和校验,可以参见上述方法实施例的描述中所述,在此不再赘述。
如图5所示,为本申请实施例提供的应用于服务器负载均衡中的连接建立装置的又一个实施例,该装置具体应用于客户端中,可以包括:
第二发送模块501,用于向负载均衡服务器发送携带所述客户端连接信息的SYN报文。
第三接收模块502,用于接收所述负载均衡服务器回复的SYN+ACK报文,其中,所述SYN+ACK报文的序列号为所述负载均衡服务器根据所述SYN报文中的客户端连接信息,计算得到的序列值;,所述SYN+ACK报文携带真实服务器连接信息。
第二回复模块503,用于向所述负载均衡服务器回复ACK报文,以便于所述负载均衡服务器根据所述ACK报文中的确认号,计算得到所述客户端连接信息;构建写入所述客户端连接信息的自定义报文;将所述自定义报文发送至所述真实服务器,由所述真实服务器从所述自定义报文中解析获得所述客户端连接信息;根据所述客户端连接信息实现与所述客户端TCP连接的建立。
其中,该第二回复模块回复的ACK报文中可以携带请求数据,从而负载均衡服务器可以将请求数据携带在自定义报文中,真实服务器建立TCP连接之后,可以基于该TCP连接,向该装置回复所述请求数据的应答报文。
如图6所示,为本申请实施例提供的应用于服务器负载均衡中的连接建立装置的又一个实施例,该装置具体应用于真实服务器中,该真实服务器为负载均衡服务器调用的后端服务器,可以包括:
第四接收模块601,用于接收负载均衡服务器发送的自定义报文,所述自定义报文按照如下方式获得:所述负载均衡服务器接收客户端发送的SYN报文;根据所述SYN报文中的客户端连接信息,计算得到序列值;向所述客户端回复写入真实服务器连接信息的SYN+ACK报文,并将所述序列值作为所述SYN+ACK报文中的序列号;接收客户端回复的ACK报文,并根据所述ACK报文中的确认号,计算得到所述客户端连接信息;构建写入所述客户端连接信息的自定义报文;
解析模块602,用于从所述自定义报文中解析获得所述客户端连接信息;
连接建立模块603,用于根据所述客户端连接信息实现与所述客户端TCP连接的建立。
其中,当该自定义报文是在所述客户端回复的ACK报文中添加建连标识符,以及将所述客户端连接信息写入所述ACK报文中获得的时,该解析模块602具体是在检测到携带建连标识符ACK报文时,从所述ACK报文中获得所述客户端连接信息,并触发连接建立模块603根据所述客户端连接信息建立与所述客户端的TCP连接。
当该自定义报文为自定义的SYN报文时,该自定义SYN报文的序列号为所述客户端发送的SYN报文中的序列号;确认号为所述负载均衡服务器回复的SYN+ACK报文中的序列号;TCP选项写入的是客户端连接信息,还包括写入所述负载均衡服务器的地址的自定义字段。
该自定义字段具体是自定义的TCP选项。
基于TCP协议,此时连接建立模块603根据所述客户端连接信息实现与所述客户端TCP连接的建立包括TCP半连接建立以及TCP半连接到TCP连接的转换。
解析模块602具体是在接收到携带自定义字段的所述自定义SYN报文时,解析获得所述客户端连接信息,触发所述连接建立模块建立与所述客户端的TCP半连接。
该装置还可以包括:
第三回复模块,用于根据所述负载均衡服务器地址,向所述负载均衡服务器回复SYN+ACK报文。
所述第四节接收模块还用于负载均衡服务器接收到真实服务器回复的SYN+ACK报文之后,发送所述客户端回复的所述ACK报文。
从而所述连接建立模块即可以将TCP半连接转换为TCP连接。
客户端回复的ACK报文中还可以携带请求数据。
此时该装置还可以用于针对所述请求数据,基于所述TCP连接向所述客户端回复应答报文。
本申请实施例还提供了一种连接建立系统,如图7所示,该系统可以包括客户端701、负载均衡服务器702以及真实服务器703。
客户端701,用于向负载均衡服务器702发送SYN报文;接收到负载均衡服务器702回复的SYN+ACK报文之后,向所述负载均衡服务器702回复ACK报文;
负载均衡服务器702,用于根据所述SYN报文中的客户端连接信息,计算得到序列值;向所述客户端701回复写入真实服务器连接信息的SYN+ACK报文,并将所述序列值作为所述SYN+ACK报文中的序列号;根据客户端701所述ACK报文中的确认号,计算得到所述客户端连接信息;构建写入所述客户端连接信息的自定义报文;将所述自定义报文发送至所述真实服务器703;
真实服务器703,用从所述自定义报文中解析获得所述客户端连接信息,并根据所述客户端连接信息实现与所述客户端TCP连接的建立。
本申请实施例,负载均衡服务器将SYN报文中的客户端连接信息,保存在SYN+ACK报文的序列号中,无需创建数据区保存,避免了对系统资源的消耗,在负载均衡服务器即实现了攻击防御,提高了防御性能。且通过自定义报文可以将客户端连接信息发送至真实服务器,从而真实服务器在接收到所述自定义报文之后,即可以建立TCP连接,包括了TCP连接的建立。
本申请实施例既保证了TCP连接的建立,同时可以有效防御SYN flood攻击,无需创建数据区保存客户端发送的SYN报文中的客户端连接信息,不会使得系统资源消耗殆尽,可以处理正常的请求,不会影响系统服务。
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述申请构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。

Claims (14)

1.一种应用于服务器负载均衡中的连接建立方法,其特征在于,包括:
负载均衡服务器接收客户端发送的同步报文;
根据所述同步报文中的客户端连接信息,计算得到序列值;
向所述客户端回复写入真实服务器连接信息的同步确认报文,并将所述序列值作为所述同步确认报文中的序列号;
接收客户端回复的确认报文,并根据所述确认报文中的确认号,计算得到所述客户端连接信息;
构建写入所述客户端连接信息的自定义报文;
将所述自定义报文发送至所述真实服务器,以便于所述真实服务器从所述自定义报文中解析获得所述客户端连接信息,根据所述客户端连接信息实现与所述客户端传输控制协议TCP连接的建立。
2.如权利要求1所述的方法,其特征在于,所述构建写入所述客户端连接信息的自定义报文包括:
在所述客户端回复的确认报文中添加建连标识符,以及将所述客户端连接信息写入所述确认报文中,获得构建的自定义报文;所述建连标识符用于识别所述自定义报文。
3.如权利要求1所述的方法,其特征在于,所述自定义报文为自定义同步报文;
所述构建写入所述客户端连接信息的自定义报文包括:
将所述客户端的同步报文中的序列号作为所述自定义同步报文的序列号;
将所述负载均衡服务器的同步确认报文中的序列号作为所述自定义同步报文的确认号;
将所述客户端连接信息写入所述自定义同步报文中,并在所述自定义同步报文中添加自定义字段以写入所述负载均衡服务器的地址;
所述将所述自定义报文发送至所述真实服务器,以便于所述真实服务器从所述自定义报文中解析获得所述客户端连接信息;根据所述客户端连接信息实现与所述客户端TCP连接的建立包括:
将所述自定义同步报文发送至所述真实服务器,以便于所述真实服务器根据所述自定义同步报文中的客户端连接信息,建立与客户端的TCP半连接,并根据所述负载均衡服务器地址向所述负载均衡服务器回复同步确认报文,其中,所述真实服务器回复的同步确认报文的序列号为所述自定义同步报文的确认号;
接收到真实服务器回复的所述同步确认报文之后,将所述客户端回复的所述确认报文发送至所述真实服务器,以便于所述真实服务器将所述TCP半连接转换为TCP连接。
4.如权利要求1所述的方法,其特征在于,所述接收客户端回复的确认报文,并根据所述确认报文中的确认号,计算得到所述客户端连接信息包括:
接收客户端回复的携带请求数据的确认报文,并根据所述确认报文中的确认号,计算得到所述客户端连接信息;
所述构建写入所述客户端连接信息的自定义报文包括:
构建写入所述客户端连接信息,且携带所述请求数据的自定义报文;
所述将所述自定义报文发送至所述真实服务器,以便于所述真实服务器从所述自定义报文中解析获得所述客户端连接信息;根据所述客户端连接信息实现与所述客户端TCP连接的建立包括:
将所述自定义报文发送至所述真实服务器,以便于所述真实服务器从所述自定义报文中解析获得所述客户端连接信息以及所述请求数据;根据所述客户端连接信息实现与所述客户端TCP连接的建立;基于所述TCP连接,向所述客户端回复所述请求数据的应答报文。
5.如权利要求1~4任一项所述的方法,其特征在于,所述根据所述同步报文中的客户端连接信息,计算得到序列值包括:
将所述同步报文中的客户端连接信息,采用同步cookie技术的cookie处理函数进行处理,将计算得到的cookie值作为序列值;
所述接收客户端回复的确认报文,并根据所述确认报文中的确认号,计算得到所述客户端连接信息包括:
接收客户端回复的确认报文,并根据所述确认报文中的确认号,计算得到所述cookie值;
对所述cookie值进行校验,并在校验通过之后,获得所述客户端连接信息。
6.一种应用于服务器负载均衡中的连接建立方法,其特征在于,包括:
客户端向负载均衡服务器发送携带所述客户端连接信息的同步报文;
接收所述负载均衡服务器回复的同步确认报文;其中,所述同步确认报文的序列号为所述负载均衡服务器根据所述同步报文中的客户端连接信息,计算得到的序列值;所述同步确认报文携带真实服务器连接信息;
向所述负载均衡服务器回复确认报文,以便于所述负载均衡服务器根据所述确认报文中的确认号,计算得到所述客户端连接信息;构建写入所述客户端连接信息的自定义报文;将所述自定义报文发送至所述真实服务器,由所述真实服务器从所述自定义报文中解析获得所述客户端连接信息,根据所述客户端连接信息实现与所述客户端TCP连接的建立。
7.一种应用于服务器负载均衡中的连接建立方法,其特征在于,包括:
真实服务器接收负载均衡服务器发送的自定义报文,所述自定义报文按照如下方式获得:所述负载均衡服务器接收客户端发送的同步报文;根据所述同步报文中的客户端连接信息,计算得到序列值;向所述客户端回复写入真实服务器连接信息的同步确认报文,并将所述序列值作为所述同步确认报文中的序列号;接收客户端回复的确认报文,并根据所述确认报文中的确认号,计算得到所述客户端连接信息;构建写入所述客户端连接信息的自定义报文;
从所述自定义报文中解析获得所述客户端连接信息;
根据所述客户端连接信息实现与所述客户端TCP连接的建立。
8.一种应用于服务器负载均衡中的连接建立装置,其特征在于,包括:
第一接收模块,用于接收客户端发送的同步报文;
计算模块,用于根据所述同步报文中的客户端连接信息,计算得到序列值;
第一回复模块,用于向所述客户端回复写入真实服务器连接信息的同步确认报文,并将所述序列值作为所述同步确认报文中的序列号;
第二接收模块,用于接收客户端回复的确认报文,并根据所述确认报文中的确认号,计算得到所述客户端连接信息;
构建模块,用于构建写入所述客户端连接信息的自定义报文;
第一发送模块,用于将所述自定义报文发送至所述真实服务器,以便于所述真实服务器从所述自定义报文中解析获得所述客户端连接信息;根据所述客户端连接信息实现与所述客户端TCP连接的建立。
9.如权利要求8所述的装置,其特征在于,所述构建模块具体用于:
在所述客户端回复的确认报文中添加建连标识符,以及将所述客户端连接信息写入所述确认报文中,获得构建的自定义报文;所述建连标识符用于识别所述自定义报文。
10.如权利要求8所述的装置,其特征在于,所述构建模块具体用于:
将所述客户端的同步报文中的序列号作为所述自定义同步报文的序列号;将所述负载均衡服务器的同步确认报文中的序列号作为所述自定义同步报文的确认号;将所述客户端连接信息写入所述自定义同步报文中,并在所述自定义同步报文中添加自定义字段写入所述负载均衡服务器的地址;
所述第一发送模块包括:
第一发送子模块,用于将所述自定义同步报文发送至所述真实服务器,以便于所述真实服务器根据所述自定义同步报文中的客户端连接信息,建立与客户端的TCP半连接;
第二发送子模块,用于接收到真实服务器根据所述负载均衡服务器地址发送的同步确认报文之后,将所述客户端回复的所述ACK报文发送至所述真实服务器,以便于所述真实服务器将所述TCP半连接转换为TCP连接,其中,所述真实服务器回复的同步确认报文的序列号为所述自定义同步报文的确认号。
11.如权利要求8所述的装置,其特征在于,所述第二接收模块具体用于:
接收客户端回复的携带请求数据的确认报文,并根据所述确认报文中的确认号,计算得到所述客户端连接信息;
所述构建模块具体用于:
构建写入所述客户端连接信息,且携带所述请求数据的自定义报文;
所述第一发送模块具体用于:
将所述自定义报文发送至所述真实服务器,以便于所述真实服务器接收到所述自定义报文之后,解析获得所述客户端连接信息以及请求数据;并根据所述客户端连接信息建立与所述客户端的TCP连接,基于所述TCP连接,向所述客户端回复所述请求数据的应答报文。
12.如权利要求8~11任一项所述的装置,其特征在于,所述计算模块具体用于:
将所述同步报文中的客户端连接信息,采用同步cookie技术中的cookie处理函数进行处理,计算得到cookie值,作为序列值;
所述第二接收模块包括:
接收子模块,用于接收客户端回复的确认报文,并根据所述确认报文中的确认号,计算得到所述cookie值;
校验子模块,用于对所述cookie值进行校验,并在校验通过之后,获得所述客户端连接信息。
13.一种应用于服务器负载均衡中的连接建立装置,其特征在于,包括:
第二发送模块,用于向负载均衡服务器发送携带所述客户端连接信息的同步报文;
第三接收模块,用于接收所述负载均衡服务器回复的同步确认报文,其中,所述同步确认报文的序列号为所述负载均衡服务器根据所述同步报文中的客户端连接信息,计算得到的序列值;所述同步确认报文携带真实服务器连接信息;
第二回复模块,用于向所述负载均衡服务器回复确认报文,以便于所述负载均衡服务器根据所述确认报文中的确认号,计算得到所述客户端连接信息;构建写入所述客户端连接信息的自定义报文;将所述自定义报文发送至所述真实服务器,由所述真实服务器从所述自定义报文中解析获得所述客户端连接信息;根据所述客户端连接信息实现与所述客户端TCP连接的建立。
14.一种应用于服务器负载均衡中的连接建立装置,其特征在于,包括:
第四接收模块,用于接收负载均衡服务器发送的自定义报文,所述自定义报文按照如下方式获得:所述负载均衡服务器接收客户端发送的同步报文;根据所述同步报文中的客户端连接信息,计算得到序列值;向所述客户端回复写入真实服务器连接信息的同步确认报文,并将所述序列值作为所述同步确认报文中的序列号;接收客户端回复的确认报文,并根据所述确认报文中的确认号,计算得到所述客户端连接信息;构建写入所述客户端连接信息的自定义报文;
解析模块,用于从所述自定义报文中解析获得所述客户端连接信息;
连接建立模块,用于根据所述客户端连接信息实现与所述客户端TCP连接的。
CN201510516359.9A 2015-08-20 2015-08-20 应用于服务器负载均衡中的连接建立方法及装置 Pending CN106470238A (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN201510516359.9A CN106470238A (zh) 2015-08-20 2015-08-20 应用于服务器负载均衡中的连接建立方法及装置
TW105107224A TWI677222B (zh) 2015-08-20 2016-03-09 應用於伺服器負載均衡中的連接建立方法及裝置
JP2018508649A JP6858749B2 (ja) 2015-08-20 2016-08-19 負荷平衡システムにおいて接続を確立するデバイス及び方法
EP16837932.9A EP3338396B1 (en) 2015-08-20 2016-08-19 Device and method for establishing connection in load-balancing system
PCT/US2016/047876 WO2017031460A1 (en) 2015-08-20 2016-08-19 Device and method for establishing connection in load-balancing system
US15/242,419 US20170054640A1 (en) 2015-08-20 2016-08-19 Device and method for establishing connection in load-balancing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510516359.9A CN106470238A (zh) 2015-08-20 2015-08-20 应用于服务器负载均衡中的连接建立方法及装置

Publications (1)

Publication Number Publication Date
CN106470238A true CN106470238A (zh) 2017-03-01

Family

ID=58052026

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510516359.9A Pending CN106470238A (zh) 2015-08-20 2015-08-20 应用于服务器负载均衡中的连接建立方法及装置

Country Status (6)

Country Link
US (1) US20170054640A1 (zh)
EP (1) EP3338396B1 (zh)
JP (1) JP6858749B2 (zh)
CN (1) CN106470238A (zh)
TW (1) TWI677222B (zh)
WO (1) WO2017031460A1 (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107547620A (zh) * 2017-06-22 2018-01-05 新华三信息安全技术有限公司 一种响应时间获取方法及装置
CN109587275A (zh) * 2019-01-08 2019-04-05 网宿科技股份有限公司 一种通信连接的建立方法及代理服务器
CN109587163A (zh) * 2018-12-27 2019-04-05 网宿科技股份有限公司 一种dr模式下的防护方法和装置
CN109729104A (zh) * 2019-03-19 2019-05-07 北京百度网讯科技有限公司 客户端源地址获取方法、装置、服务器和计算机可读介质
CN109818912A (zh) * 2017-11-22 2019-05-28 北京金山云网络技术有限公司 防范泛洪攻击的方法、装置、负载均衡设备和存储介质
CN109936543A (zh) * 2017-12-18 2019-06-25 中国移动通信集团辽宁有限公司 ACK Flood攻击的防护方法、装置、设备及介质
CN110572438A (zh) * 2019-08-14 2019-12-13 北京天融信网络安全技术有限公司 一种网络连接建立方法、装置、网络设备和存储介质
CN110784464A (zh) * 2019-10-24 2020-02-11 新华三信息安全技术有限公司 泛洪攻击的客户端验证方法、装置、系统及电子设备
CN111049754A (zh) * 2019-12-18 2020-04-21 上海众源网络有限公司 数据通信方法、装置、设备和计算机可读存储介质
CN111193756A (zh) * 2018-11-14 2020-05-22 中移(杭州)信息技术有限公司 一种vxlan隧道负载均衡方法及相关设备
CN111800499A (zh) * 2020-06-30 2020-10-20 北京百度网讯科技有限公司 一种数据传输方法、装置及电子设备
CN112242934A (zh) * 2019-07-16 2021-01-19 北京华耀科技有限公司 一种tcp连接的rtt计算方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020537211A (ja) * 2017-10-13 2020-12-17 ホアウェイ・テクノロジーズ・カンパニー・リミテッド アプリケーション管理方法および端末
CN110198298B (zh) * 2018-10-11 2021-08-27 腾讯科技(深圳)有限公司 一种信息处理方法、装置及存储介质
CN109088892B (zh) * 2018-10-19 2021-02-12 网宿科技股份有限公司 数据传输方法、系统以及代理服务器
US11223567B2 (en) * 2019-01-18 2022-01-11 Cisco Technology, Inc. Transmission control protocol session mobility

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1954545A (zh) * 2003-03-03 2007-04-25 思科技术公司 利用tcp认证ip源地址
CN103139672A (zh) * 2013-02-01 2013-06-05 北京邮电大学 无源光网络中支持有线无线混合环境的网络编码方法
US9027129B1 (en) * 2012-04-30 2015-05-05 Brocade Communications Systems, Inc. Techniques for protecting against denial of service attacks

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6587438B1 (en) * 1999-12-22 2003-07-01 Resonate Inc. World-wide-web server that finds optimal path by sending multiple syn+ack packets to a single client
US7853781B2 (en) * 2001-07-06 2010-12-14 Juniper Networks, Inc. Load balancing secure sockets layer accelerator
US7058718B2 (en) * 2002-01-15 2006-06-06 International Business Machines Corporation Blended SYN cookies
US7337470B2 (en) * 2002-08-23 2008-02-26 International Business Machines Corporation Method for minimizing denial of service attacks on network servers
US7290050B1 (en) * 2002-09-20 2007-10-30 Blue Coat Systems, Inc. Transparent load balancer for network connections
CN1315298C (zh) * 2003-07-01 2007-05-09 智邦科技股份有限公司 同步封包处理系统与方法
US7519954B1 (en) * 2004-04-08 2009-04-14 Mcafee, Inc. System and method of operating system identification
US8145908B1 (en) * 2004-10-29 2012-03-27 Akamai Technologies, Inc. Web content defacement protection system
FI20050412A0 (fi) * 2005-04-21 2005-04-21 Nokia Corp Menetelmä yhteyksien muodostamiseksi tietoliikennejärjestelmässä
US7921282B1 (en) * 2007-08-20 2011-04-05 F5 Networks, Inc. Using SYN-ACK cookies within a TCP/IP protocol
CN102209023B (zh) * 2010-03-31 2015-01-21 华为数字技术(成都)有限公司 一种建立FCoE通信连接的方法、装置、名字服务器和系统
US9338192B1 (en) * 2012-12-28 2016-05-10 Juniper Networks, Inc. Connection management using connection request transfer protocol
US9560172B2 (en) * 2013-05-06 2017-01-31 Alcatel Lucent Stateless recognition of keep-alive packets
US20150189010A1 (en) * 2013-12-30 2015-07-02 Alcatel-Lucent Canada Inc. Communication network with load balancing functionality
US8984635B1 (en) * 2014-01-06 2015-03-17 Cloudflare, Inc. Authenticating the identity of initiators of TCP connections

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1954545A (zh) * 2003-03-03 2007-04-25 思科技术公司 利用tcp认证ip源地址
US9027129B1 (en) * 2012-04-30 2015-05-05 Brocade Communications Systems, Inc. Techniques for protecting against denial of service attacks
CN103139672A (zh) * 2013-02-01 2013-06-05 北京邮电大学 无源光网络中支持有线无线混合环境的网络编码方法

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107547620A (zh) * 2017-06-22 2018-01-05 新华三信息安全技术有限公司 一种响应时间获取方法及装置
CN109818912B (zh) * 2017-11-22 2021-11-26 北京金山云网络技术有限公司 防范泛洪攻击的方法、装置、负载均衡设备和存储介质
CN109818912A (zh) * 2017-11-22 2019-05-28 北京金山云网络技术有限公司 防范泛洪攻击的方法、装置、负载均衡设备和存储介质
CN109936543A (zh) * 2017-12-18 2019-06-25 中国移动通信集团辽宁有限公司 ACK Flood攻击的防护方法、装置、设备及介质
CN111193756A (zh) * 2018-11-14 2020-05-22 中移(杭州)信息技术有限公司 一种vxlan隧道负载均衡方法及相关设备
CN111193756B (zh) * 2018-11-14 2023-04-07 中移(杭州)信息技术有限公司 一种vxlan隧道负载均衡方法及相关设备
CN109587163A (zh) * 2018-12-27 2019-04-05 网宿科技股份有限公司 一种dr模式下的防护方法和装置
CN109587275A (zh) * 2019-01-08 2019-04-05 网宿科技股份有限公司 一种通信连接的建立方法及代理服务器
CN109729104A (zh) * 2019-03-19 2019-05-07 北京百度网讯科技有限公司 客户端源地址获取方法、装置、服务器和计算机可读介质
CN112242934B (zh) * 2019-07-16 2022-10-11 北京华耀科技有限公司 一种tcp连接的rtt计算方法
CN112242934A (zh) * 2019-07-16 2021-01-19 北京华耀科技有限公司 一种tcp连接的rtt计算方法
CN110572438A (zh) * 2019-08-14 2019-12-13 北京天融信网络安全技术有限公司 一种网络连接建立方法、装置、网络设备和存储介质
CN110784464B (zh) * 2019-10-24 2022-09-09 新华三信息安全技术有限公司 泛洪攻击的客户端验证方法、装置、系统及电子设备
CN110784464A (zh) * 2019-10-24 2020-02-11 新华三信息安全技术有限公司 泛洪攻击的客户端验证方法、装置、系统及电子设备
CN111049754A (zh) * 2019-12-18 2020-04-21 上海众源网络有限公司 数据通信方法、装置、设备和计算机可读存储介质
CN111049754B (zh) * 2019-12-18 2023-01-10 上海众源网络有限公司 数据通信方法、装置、设备和计算机可读存储介质
CN111800499B (zh) * 2020-06-30 2022-04-15 北京百度网讯科技有限公司 一种数据传输方法、装置及电子设备
CN111800499A (zh) * 2020-06-30 2020-10-20 北京百度网讯科技有限公司 一种数据传输方法、装置及电子设备

Also Published As

Publication number Publication date
JP6858749B2 (ja) 2021-04-14
US20170054640A1 (en) 2017-02-23
EP3338396A1 (en) 2018-06-27
EP3338396B1 (en) 2021-09-22
TW201713093A (zh) 2017-04-01
EP3338396A4 (en) 2018-08-08
JP2018528679A (ja) 2018-09-27
WO2017031460A1 (en) 2017-02-23
TWI677222B (zh) 2019-11-11

Similar Documents

Publication Publication Date Title
CN106470238A (zh) 应用于服务器负载均衡中的连接建立方法及装置
CN105075216B (zh) 识别原始ip地址以及客户端端口连接
CN109391560A (zh) 网络拥塞的通告方法、代理节点及计算机设备
CN104717105B (zh) 一种基于ISA100.11a标准的工业传感网数据重复检测方法
CN107079017A (zh) 一种报文转换方法及装置
CN104025550B (zh) 从数据项获得信息的方法及装置
CN101771695A (zh) Tcp连接的处理方法、系统及syn代理设备
CN102217251A (zh) 一种数据转发方法、数据处理方法、系统以及相关设备
CN107342906A (zh) 一种大象流的检测方法、设备及系统
CN106416199A (zh) 用于性能增强代理的混合方式
CN104660592B (zh) 一种基于安全套接层协议特征的负载分发方法
CN107154917A (zh) 数据传输方法及服务器
CN105933325A (zh) 一种基于NFSoRDMA的内核态RPC通信加速方法
CN112436998B (zh) 一种数据传输方法及电子设备
CN101873324A (zh) 穿越防火墙的方法
CN101909011A (zh) 报文传输方法、系统、客户端和代理网关
US10447599B2 (en) Packet forwarding method, system, and apparatus
CN104219160B (zh) 生成输入参数的方法及设备
CN102412924B (zh) 路径最大传输单元的探测方法和装置
CN107332839B (zh) 一种报文传输方法及装置
CN114125080A (zh) 一种报文链终端协议栈构建方法和解析方法、装置及终端
WO2016184079A1 (zh) 一种处理系统日志报文的方法和装置
CN105471839A (zh) 一种判断路由器数据是否被窜改的方法
CN108282454A (zh) 用于使用内联模式匹配加速安全检查的装置、系统和方法
CN106209666A (zh) 一种基于负载均衡器的链路复用方法及系统

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20170301