CN111800518B - 客户端ip地址插入方法及装置 - Google Patents

客户端ip地址插入方法及装置 Download PDF

Info

Publication number
CN111800518B
CN111800518B CN202010844730.5A CN202010844730A CN111800518B CN 111800518 B CN111800518 B CN 111800518B CN 202010844730 A CN202010844730 A CN 202010844730A CN 111800518 B CN111800518 B CN 111800518B
Authority
CN
China
Prior art keywords
address
message
client
data
messages
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
CN202010844730.5A
Other languages
English (en)
Other versions
CN111800518A (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.)
Hangzhou DPTech Technologies Co Ltd
Original Assignee
Hangzhou DPTech Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou DPTech Technologies Co Ltd filed Critical Hangzhou DPTech Technologies Co Ltd
Priority to CN202010844730.5A priority Critical patent/CN111800518B/zh
Publication of CN111800518A publication Critical patent/CN111800518A/zh
Application granted granted Critical
Publication of CN111800518B publication Critical patent/CN111800518B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • 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/06Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Library & Information Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开涉及一种客户端IP地址插入方法、装置、电子设备及计算机可读介质。该方法包括:负载均衡设备和客户端建立TCP连接,并接收来自客户端的请求报文;基于所述TCP连接获取SYN报文中的剩余字节数;获取所述客户端的IP地址的字节数;在所述IP地址的字节数大于所述SYN报文中的剩余字节数时,将所述IP地址插入SYN报文、ACK报文、负载包中的一个或多个中并依次发送报文。本公开涉及的客户端IP地址插入方法、装置、电子设备及计算机可读介质,能够解决由于TCP Option剩余的可用字节数过小,无法在Option中成功插入客户端真实IP地址的技术难题。

Description

客户端IP地址插入方法及装置
技术领域
本公开涉及计算机信息处理领域,具体而言,涉及一种客户端IP地址插入方法、装置、电子设备及计算机可读介质。
背景技术
随着互联网技术的飞速发展,普及程度不断升高,IPv4地址资源越来越短缺。在这种背景下NAT技术应用的更加频繁。这会导致服务器收到的设备网络信息都是NAT设备之后的五元组信息,在这种情况下,服务器无法获取客户端的真实IP。
在某些场景下,为了满足业务需求,客户端与服务器之间需要添加多台负载均衡设备,如图1。客户端经过四层负载均衡设备之后,服务器收到的设备网络信息则变为负载均衡设备做了源NAT之后的IP地址,真实的客户端IP则无法保留,在某些情况下,客户向服务器发送的请求为HTTPS时,则无法通过添加http头部插入客户端的IP信息。现有的技术方案是在客户端报文进入第一个负载均衡设备时,将客户端IP地址插入到TCP Option中。在报文从最后一个与服务器连接的负载均衡设备发出之前,从TCP Option中提取插入的IP地址。通过获取的客户端真实IP地址,将报文发送到指定的服务器上。达到负载均衡的效果。
如图2所示,TCP头部可携带的TCP Option字段的最大长度为40字节,由于需要4字节对其,再包含Option固定的标识字段以及长度字段,本身TCP Option可携带的数据更加有限。现有获取客户端IP的方案是将客户端IP插入到syn、ack以及负载报文的TCP Option中。若要插入的内容过长(如IPv6地址),在syn包、ack包、get请求中,要插入的IPv6字符长度大于option剩余可插入的长度。则插入就会失败。对于此连接则不会获取到其真正的客户端IP。
在所述背景技术部分公开的上述信息仅用于加强对本公开的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
有鉴于此,本公开提供一种客户端IP地址插入方法、装置、电子设备及计算机可读介质,能够解决由于TCP Option剩余的可用字节数过小,无法在Option中成功插入客户端真实IP地址的技术难题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一方面,提出一种客户端IP地址插入方法,可用于负载均衡设备,该方法包括:负载均衡设备和客户端建立TCP连接,并接收来自客户端的请求报文;基于所述TCP连接获取SYN报文中的剩余字节数;获取所述客户端的IP地址的字节数;在所述IP地址的字节数大于所述SYN报文中的剩余字节数时,将所述IP地址插入SYN报文、ACK报文、负载包中的一个或多个中并依次发送报文。
在本公开的一种示例性实施例中,还包括:在所述IP地址的字节数小于等于所述SYN报文中的剩余字节数时,将所述IP地址插入SYN报文中并发送报文。
在本公开的一种示例性实施例中,将所述IP地址插入SYN报文、ACK报文、负载包中的一个或多个中并依次发送报文,包括:裁剪所述IP地址生成第一IP地址数据和第二IP地址数据;将所述第二IP地址数据插入SYN报文中的TCP Option中并发送报文。
在本公开的一种示例性实施例中,将所述IP地址插入SYN报文、ACK报文、负载包中的一个或多个中并依次发送报文,还包括:在所述第一IP地址数据大于ACK报文中的剩余字节数时;裁剪所述第一IP地址数据生成第三IP地址数据和第四IP地址数据;将所述第四IP地址数据插入ACK报文中的TCP Option中并发送报文。
在本公开的一种示例性实施例中,将所述IP地址插入SYN报文、ACK报文、负载包中的一个或多个中并依次发送报文,还包括:在所述第一IP地址数据小于等于ACK报文中的剩余字节数时;将所述第一IP地址数据插入ACK报文中的TCP Option中并发送报文。
在本公开的一种示例性实施例中,将所述IP地址插入SYN报文、ACK报文、负载包中的一个或多个中并依次发送报文,还包括:在所述第三IP地址数据大于负载包中的剩余字节数时;裁剪所述第三IP地址数据生成第五IP地址数据和第六IP地址数据;将所述第六IP地址数据插入负载包中的TCP Option中并发送报文。
在本公开的一种示例性实施例中,将所述IP地址插入SYN报文、ACK报文、负载包中的一个或多个中并依次发送报文,还包括:在所述第三IP地址数据小于等于负载包中的剩余字节数时;将所述第三IP地址数据插入负载包中的TCP Option中并发送报文。
在本公开的一种示例性实施例中,还包括:负载均衡设备获取SYN报文、ACK报文、负载包中的一个或多个报文数据;由所述报文数据中获取至少一个IP地址数据;将所述至少一个IP地址数据进行拼接生成客户端IP地址;基于所述客户端IP地址为客户端确定目标服务器;将所述报文数据发送至所述目标服务器以进行处理。
在本公开的一种示例性实施例中,由所述报文数据中获取至少一个IP地址数据,包括:在所述负载均衡设备的下一级设备为服务器时,由所述报文数据中获取至少一个IP地址数据。
在本公开的一种示例性实施例中,基于所述客户端IP地址为客户端确定目标服务器,包括:基于调度算法和所述客户端IP地址为客户端确定目标服务器。
根据本公开的一方面,提出一种客户端IP地址插入装置,可用于负载均衡设备,该装置包括:连接模块,用于负载均衡设备和客户端建立TCP连接,并接收来自客户端的请求报文;字节模块,用于基于所述TCP连接获取SYN报文中的剩余字节数;地址模块,用于获取所述客户端的IP地址的字节数;插入模块,用于在所述IP地址的字节数大于所述SYN报文中的剩余字节数时,将所述IP地址插入SYN报文、ACK报文、负载包中的一个或多个中并依次发送报文。
在本公开的一种示例性实施例中,还包括:报文模块,用于负载均衡设备获取SYN报文、ACK报文、负载包中的一个或多个报文数据;提取模块,用于由所述报文数据中获取至少一个IP地址数据;拼接模块,用于将所述至少一个IP地址数据进行拼接生成客户端IP地址;目标模块,用于基于所述客户端IP地址为客户端确定目标服务器;发送模块,用于将所述报文数据发送至所述目标服务器以进行处理。
根据本公开的一方面,提出一种电子设备,该电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上文的方法。
根据本公开的一方面,提出一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上文中的方法。
根据本公开的客户端IP地址插入方法、装置、电子设备及计算机可读介质,负载均衡设备和客户端建立TCP连接,并接收来自客户端的请求报文;基于所述TCP连接获取SYN报文中的剩余字节数;获取所述客户端的IP地址的字节数;在所述IP地址的字节数大于所述SYN报文中的剩余字节数时,将所述IP地址插入SYN报文、ACK报文、负载包中的一个或多个中并依次发送报文的方式,能够解决由于TCP Option剩余的可用字节数过小,无法在Option中成功插入客户端真实IP地址的技术难题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
通过参照附图详细描述其示例实施例,本公开的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本公开的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中的报文转发系统框图。
图2是现有技术中的客户端IP地址插入流程图。
图3是根据一示例性实施例示出的一种客户端IP地址插入方法的流程图。
图4是根据一示例性实施例示出的一种客户端IP地址插入方法的流程图。
图5是根据另一示例性实施例示出的一种客户端IP地址插入方法的流程图。
图6是根据一示例性实施例示出的一种客户端IP地址插入装置的框图。
图7是根据另一示例性实施例示出的一种客户端IP地址插入装置的框图。
图8是根据一示例性实施例示出的一种电子设备的框图。
图9是根据一示例性实施例示出的一种计算机可读介质的框图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本公开概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本公开所必须的,因此不能用于限制本公开的保护范围。
本公开涉及的名称解释如下:
TCP Option:TCP头部除了固定的20字节外,还设置了Option字段用于存储自定义的数据。Option字段最大长度为40字节。Option的内容格式为(标识字段-长度-数据)格式。一般采取4字节对齐存储。
负载均衡,即将访问流量或者说任务均衡地引导至多个服务器或网络设备上进行处理,以此达到提高设备和服务器的带宽、增加吞吐量、增强数据处理能力、提高服务的可用性和稳定性的目的。
NAT(Network Address Translation,网络地址转换)技术是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在专用网内使用的专用地址),但现在又想和因特网上的主机通信时,可使用NAT方法。本质上是一种允许在互联网的不同地方重复使用相同的IP地址集的机制。
图3是根据一示例性实施例示出的一种客户端IP地址插入方法的流程图。客户端IP地址插入方法30至少包括步骤S302至S310。
如图3所示,在S302中,负载均衡设备和客户端建立TCP连接,并接收来自客户端的请求报文。
在S304中,基于所述TCP连接获取SYN报文中的剩余字节数。
在S306中,获取所述客户端的IP地址的字节数。
在S308中,在所述IP地址的字节数大于所述SYN报文中的剩余字节数时,将所述IP地址插入SYN报文、ACK报文、负载包中的一个或多个中并依次发送报文。
在S310中,在所述IP地址的字节数小于等于所述SYN报文中的剩余字节数时,将所述IP地址插入SYN报文中并发送报文。
在一个实施例中,可例如裁剪所述IP地址生成第一IP地址数据和第二IP地址数据;将所述第二IP地址数据插入SYN报文中的TCP Option中并发送报文。
在一个实施例中,还可例如,在所述第一IP地址数据大于ACK报文中的剩余字节数时;裁剪所述第一IP地址数据生成第三IP地址数据和第四IP地址数据;将所述第四IP地址数据插入ACK报文中的TCP Option中并发送报文。在所述第一IP地址数据小于等于ACK报文中的剩余字节数时;将所述第一IP地址数据插入ACK报文中的TCP Option中并发送报文。
在一个实施例中,还可例如,在所述第三IP地址数据大于负载包中的剩余字节数时;裁剪所述第三IP地址数据生成第五IP地址数据和第六IP地址数据;将所述第六IP地址数据插入负载包中的TCP Option中并发送报文。在所述第三IP地址数据小于等于负载包中的剩余字节数时;将所述第三IP地址数据插入负载包中的TCP Option中并发送报文。
应清楚地理解,本公开描述了如何形成和使用特定示例,但本公开的原理不限于这些示例的任何细节。相反,基于本公开公开的内容的教导,这些原理能够应用于许多其它实施例。
图4是根据另一示例性实施例示出的一种客户端IP地址插入方法的流程图。图4所示的流程40是对图2所示的流程的补充描述。
如图4所示,在S402中,负载均衡设备获取SYN报文、ACK报文、负载包中的一个或多个报文数据。
在S404中,由所述报文数据中获取至少一个IP地址数据。更具体的,在所述负载均衡设备的下一级设备为服务器时,执行本步骤,在负载均衡设备的下一级设备不为服务器时,直接转发报文。
在S406中,将所述至少一个IP地址数据进行拼接生成客户端IP地址。在到达服务器的前一个负载均衡设备中,收集收到的SYN,ACK,以及负载报文中TCP Option插入的客户端IP的字节,将这些字节合并转换成客户端的IP地址。
在S408中,基于所述客户端IP地址为客户端确定目标服务器。更具体的,可基于调度算法和所述客户端IP地址为客户端确定目标服务器。
在S410中,将所述报文数据发送至所述目标服务器以进行处理。
根据本公开的客户端IP地址插入方法,负载均衡设备和客户端建立TCP连接,并接收来自客户端的请求报文;基于所述TCP连接获取SYN报文中的剩余字节数;获取所述客户端的IP地址的字节数;在所述IP地址的字节数大于所述SYN报文中的剩余字节数时,将所述IP地址插入SYN报文、ACK报文、负载包中的一个或多个中并依次发送报文的方式,能够解决由于TCP Option剩余的可用字节数过小,无法在Option中成功插入客户端真实IP地址的技术难题。
图5是根据另一示例性实施例示出的一种客户端IP地址插入方法的流程图。图5所示的流程50是对本公开内容的详细描述。
如图5所示,在S501中,负载均衡设备1接收客户端发送的SYN、ACK、负载报文。
在S502中,获取客户端IP地址,获取报文TCP Option可插入字节数。
在S503中,判断客户端是否有剩余IP地址字符需要插入到报文的TCP Option。
在S504中,发送报文。
在S505中,按报文可插入TCP Option字节数插入剩余客户端IP地址。
在S506中,发送负载报文之前是否完成插入客户端IP地址。
在S507中,发送报文。
在S508中,将报文分包,插入在每个包的TCP Option中插入客户端IP地址。
在S509中,发送报文。
在S510中,负载均衡设备2接收报文。
在S511中,判断报文中是否存在对应TCP Option。
在S512中,从SYN、ACK、负载报文中获取TCP Option的IP地址字节内容。
在S513中,判断是否完成客户端IP地址的接收。
在S514中,将从TCP Option中获取的客户端IP字符串转换为IP地址。
在S515中,判断获取的IP地址是否合法。
在S516中,通过客户端IP地址发送负载报文到指定服务器。
在S517中,根据调度算法选择服务器发送负载报文。
1、客户端与负载均衡设备虚拟服务建立连接并发起请求,首先查看在TCP的SYN报文中。Option剩余可用的字节数。插入一个option字段必须添加对应的类型和长度,两个字节,和要插入的数据加一起的总字节数也需要4字节对齐。最终确定在SYN报文中TCPOption中最多可插入的字节数。此时查看客户端IP的总字节数。若地址类型为IPv4则为4字节,若为IPv6地址,客户端的IP字节长度则为16字节。对于IPv6类型的客户端地址不能成功插入到TCP报文的Option中的概率更大,对比TCP Option中最多可插入的字节数与客户端IP地址字节数。若客户端的IP地址字节数小于可插入的数据字节数,则可将客户端IP地址与类型字节、长度字节构造成TCP Option插入到SYN报文中。若客户端的IP地址字节数大于可插入的数据字节数。则获取客户端IP地址的可插入的字节数,构造TCP Option。插入SYN报文中。
2、判断客户端发送给负载均衡设备虚拟服务的ACK报文中TCP Option最多可插入的字节数,与客户端IP剩余未插入的字节数对比。若ACK报文中TCP Option最多可插入的字节数大于客户端IP剩余未插入字节数,则将剩余的客户端IP字节插入ACK报文的TCPOption中。若客户端IP剩余字节数,仍然大于ACK报文中可插入的TCP Option数据,则按可插入的TCP Option字节数构造TCP Option,插入ACK报文。
3、按照上述步骤1、2的规律,将客户端IP字节按SYN、ACK报文中可插入的数据字节数拆分插入到报文的TCP Option中,若还未将所有客户端IP字节插入,则遵循此规律,将剩余字节插入到负载包中,当一个负载报文无法完成客户端IP地址的插入操作,则可将负载包分包发送,并且在每个包中插入对应的客户端IP字节。
4、在到达服务器的前一个负载均衡设备中,收集收到的SYN,ACK,以及负载报文中TCP Option插入的客户端IP的字节,将这些字节合并转换成客户端的IP地址,此负载均衡器通过还原的客户端IP地址将请求发送到指定的服务器上。
在本公开的客户端IP地址插入方法中,通过判断SYN、ACK以及负载包中可插入的TCP Option字节数,将客户端IP地址拆分为若干部分,分别插入到插入SYN、ACK以及负载包。保证到达与服务器连接的负载均衡设备的请求中,都有客户端的IP地址,防止了由于TCP报文由于可插入的TCP Option字节数少而使服务器无法获取客户端IP的请求。
本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本公开提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
此外,需要注意的是,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
图6是根据一示例性实施例示出的一种客户端IP地址插入装置的框图。如图6所示,客户端IP地址插入装置60包括:连接模块602,字节模块604,地址模块606,插入模块608。
连接模块602用于负载均衡设备和客户端建立TCP连接,并接收来自客户端的请求报文;
字节模块604用于基于所述TCP连接获取SYN报文中的剩余字节数;
地址模块606用于获取所述客户端的IP地址的字节数;
插入模块608用于在所述IP地址的字节数大于所述SYN报文中的剩余字节数时,将所述IP地址插入SYN报文、ACK报文、负载包中的一个或多个中并依次发送报文。
图7是根据另一示例性实施例示出的一种客户端IP地址插入装置的框图。如图7所示,客户端IP地址插入装置70包括:报文模块702,提取模块704,拼接模块706,目标模块708,发送模块710。
报文模块702用于负载均衡设备获取SYN报文、ACK报文、负载包中的一个或多个报文数据;
提取模块704用于由所述报文数据中获取至少一个IP地址数据;
拼接模块706用于将所述至少一个IP地址数据进行拼接生成客户端IP地址;
目标模块708用于基于所述客户端IP地址为客户端确定目标服务器;
发送模块710用于将所述报文数据发送至所述目标服务器以进行处理。
根据本公开的客户端IP地址插入装置,负载均衡设备和客户端建立TCP连接,并接收来自客户端的请求报文;基于所述TCP连接获取SYN报文中的剩余字节数;获取所述客户端的IP地址的字节数;在所述IP地址的字节数大于所述SYN报文中的剩余字节数时,将所述IP地址插入SYN报文、ACK报文、负载包中的一个或多个中并依次发送报文的方式,能够解决由于TCP Option剩余的可用字节数过小,无法在Option中成功插入客户端真实IP地址的技术难题。
图8是根据一示例性实施例示出的一种电子设备的框图。
下面参照图8来描述根据本公开的这种实施方式的电子设备800。图8显示的电子设备800仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图8所示,电子设备800以通用计算设备的形式表现。电子设备800的组件可以包括但不限于:至少一个处理单元810、至少一个存储单元820、连接不同系统组件(包括存储单元820和处理单元810)的总线830、显示单元840等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元810执行,使得所述处理单元810执行本说明书上述电子处方流转处理方法部分中描述的根据本公开各种示例性实施方式的步骤。例如,所述处理单元810可以执行如图3,图4,图5中所示的步骤。
所述存储单元820可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)8201和/或高速缓存存储单元8202,还可以进一步包括只读存储单元(ROM)8203。
所述存储单元820还可以包括具有一组(至少一个)程序模块8205的程序/实用工具8204,这样的程序模块8205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备800也可以与一个或多个外部设备800’(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备800交互的设备通信,和/或与使得该电子设备800能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口850进行。并且,电子设备800还可以通过网络适配器860与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器860可以通过总线830与电子设备800的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,如图9所示,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述方法。
所述软件产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该计算机可读介质实现如下功能:负载均衡设备和客户端建立TCP连接,并接收来自客户端的请求报文;基于所述TCP连接获取SYN报文中的剩余字节数;获取所述客户端的IP地址的字节数;在所述IP地址的字节数大于所述SYN报文中的剩余字节数时,将所述IP地址插入SYN报文、ACK报文、负载包中的一个或多个中并依次发送报文。
本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施例的方法。
以上具体地示出和描述了本公开的示例性实施例。应可理解的是,本公开不限于这里描述的详细结构、设置方式或实现方法;相反,本公开意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。

Claims (12)

1.一种客户端IP地址插入方法,可用于负载均衡设备,其特征在于,包括:
负载均衡设备和客户端建立TCP连接,并接收来自客户端的请求报文;
基于所述TCP连接获取SYN报文中的剩余字节数;
获取所述客户端的IP地址的字节数;
在所述IP地址的字节数大于所述SYN报文中的剩余字节数时,将所述IP地址插入SYN报文、ACK报文、负载包中的多个中并依次发送报文。
2.如权利要求1所述的方法,其特征在于,还包括:
在所述IP地址的字节数小于等于所述SYN报文中的剩余字节数时,将所述IP地址插入SYN报文中并发送报文。
3.如权利要求1所述的方法,其特征在于,将所述IP地址插入SYN报文、ACK报文、负载包中的多个中并依次发送报文,包括:
裁剪所述IP地址生成第一IP地址数据和第二IP地址数据;
将所述第二IP地址数据插入SYN报文中的TCP Option中并发送报文。
4.如权利要求3所述的方法,其特征在于,将所述IP地址插入SYN报文、ACK报文、负载包中的多个中并依次发送报文,还包括:
在所述第一IP地址数据大于ACK报文中的剩余字节数时;
裁剪所述第一IP地址数据生成第三IP地址数据和第四IP地址数据;
将所述第四IP地址数据插入ACK报文中的TCP Option中并发送报文。
5.如权利要求4所述的方法,其特征在于,将所述IP地址插入SYN报文、ACK报文、负载包中的多个中并依次发送报文,还包括:
在所述第一IP地址数据小于等于ACK报文中的剩余字节数时;
将所述第一IP地址数据插入ACK报文中的TCP Option中并发送报文。
6.如权利要求4所述的方法,其特征在于,将所述IP地址插入SYN报文、ACK报文、负载包中的多个中并依次发送报文,还包括:
在所述第三IP地址数据大于负载包中的剩余字节数时;
裁剪所述第三IP地址数据生成第五IP地址数据和第六IP地址数据;
将所述第六IP地址数据插入负载包中的TCP Option中并发送报文。
7.如权利要求6所述的方法,其特征在于,将所述IP地址插入SYN报文、ACK报文、负载包中的多个中并依次发送报文,还包括:
在所述第三IP地址数据小于等于负载包中的剩余字节数时;
将所述第三IP地址数据插入负载包中的TCP Option中并发送报文。
8.如权利要求1所述的方法,其特征在于,还包括:
负载均衡设备获取SYN报文、ACK报文、负载包中的一个或多个报文数据;
由所述报文数据中获取至少一个IP地址数据;
将所述至少一个IP地址数据进行拼接生成客户端IP地址;
基于所述客户端IP地址为客户端确定目标服务器;
将所述报文数据发送至所述目标服务器以进行处理。
9.如权利要求8所述的方法,其特征在于,由所述报文数据中获取至少一个IP地址数据,包括:
在所述负载均衡设备的下一级设备为服务器时,由所述报文数据中获取至少一个IP地址数据。
10.如权利要求8所述的方法,其特征在于,基于所述客户端IP地址为客户端确定目标服务器,包括:
基于调度算法和所述客户端IP地址为客户端确定目标服务器。
11.一种客户端IP地址插入装置,可用于负载均衡设备,其特征在于,包括:
连接模块,用于负载均衡设备和客户端建立TCP连接,并接收来自客户端的请求报文;
字节模块,用于基于所述TCP连接获取SYN报文中的剩余字节数;
地址模块,用于获取所述客户端的IP地址的字节数;
插入模块,用于在所述IP地址的字节数大于所述SYN报文中的剩余字节数时,将所述IP地址插入SYN报文、ACK报文、负载包中的多个中并依次发送报文。
12.如权利要求11所述的装置,其特征在于,还包括:
报文模块,用于负载均衡设备获取SYN报文、ACK报文、负载包中的多个报文数据;
提取模块,用于由所述报文数据中获取至少一个IP地址数据;
拼接模块,用于将所述至少一个IP地址数据进行拼接生成客户端IP地址;
目标模块,用于基于所述客户端IP地址为客户端确定目标服务器;
发送模块,用于将所述报文数据发送至所述目标服务器以进行处理。
CN202010844730.5A 2020-08-20 2020-08-20 客户端ip地址插入方法及装置 Active CN111800518B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010844730.5A CN111800518B (zh) 2020-08-20 2020-08-20 客户端ip地址插入方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010844730.5A CN111800518B (zh) 2020-08-20 2020-08-20 客户端ip地址插入方法及装置

Publications (2)

Publication Number Publication Date
CN111800518A CN111800518A (zh) 2020-10-20
CN111800518B true CN111800518B (zh) 2023-02-07

Family

ID=72833800

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010844730.5A Active CN111800518B (zh) 2020-08-20 2020-08-20 客户端ip地址插入方法及装置

Country Status (1)

Country Link
CN (1) CN111800518B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115242888A (zh) * 2021-04-02 2022-10-25 深圳市锐速云计算有限公司 四层tcp/udp协议转发真实ip方法及系统
CN113794703A (zh) * 2021-08-31 2021-12-14 上海弘积信息科技有限公司 一种负载均衡系统中获取客户端ip的方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006013911A (ja) * 2004-06-25 2006-01-12 Nippon Telegr & Teleph Corp <Ntt> ストリームデータ転送方法、装置、プログラム、および記録媒体
CN103297552A (zh) * 2012-03-02 2013-09-11 百度在线网络技术(北京)有限公司 传递客户端IPv4地址及端口至后端服务器的方法及装置
CN103297407A (zh) * 2012-03-02 2013-09-11 百度在线网络技术(北京)有限公司 传递客户端IPv6地址及端口至后端服务器的方法及装置
CN107465666A (zh) * 2017-07-12 2017-12-12 北京潘达互娱科技有限公司 一种客户端ip获取方法与装置
CN110661894A (zh) * 2018-06-29 2020-01-07 中兴通讯股份有限公司 用户ip地址的分配方法、网络设备和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006013911A (ja) * 2004-06-25 2006-01-12 Nippon Telegr & Teleph Corp <Ntt> ストリームデータ転送方法、装置、プログラム、および記録媒体
CN103297552A (zh) * 2012-03-02 2013-09-11 百度在线网络技术(北京)有限公司 传递客户端IPv4地址及端口至后端服务器的方法及装置
CN103297407A (zh) * 2012-03-02 2013-09-11 百度在线网络技术(北京)有限公司 传递客户端IPv6地址及端口至后端服务器的方法及装置
CN107465666A (zh) * 2017-07-12 2017-12-12 北京潘达互娱科技有限公司 一种客户端ip获取方法与装置
CN110661894A (zh) * 2018-06-29 2020-01-07 中兴通讯股份有限公司 用户ip地址的分配方法、网络设备和存储介质

Also Published As

Publication number Publication date
CN111800518A (zh) 2020-10-20

Similar Documents

Publication Publication Date Title
CN110708393B (zh) 用于传输数据的方法、装置和系统
CN111131037B (zh) 基于虚拟网关的数据传输方法、装置、介质与电子设备
US8009672B2 (en) Apparatus and method of splitting a data stream over multiple transport control protocol/internet protocol (TCP/IP) connections
US10735373B2 (en) Communications over multiple protocol interfaces in a computing environment
CN111800518B (zh) 客户端ip地址插入方法及装置
CN110581812A (zh) 一种数据报文的处理方法和装置
CN113691589B (zh) 报文传输方法、装置及系统
CN114828140B (zh) 业务流量报文转发方法及装置、存储介质及电子设备
EP3790239A1 (en) Network access method and device for edge router
CN110177047B (zh) 报文发送方法、装置、电子设备和计算机可读存储介质
CN110719215A (zh) 虚拟网络的流信息采集方法及装置
CN110545230B (zh) 用于转发vxlan报文的方法和装置
US6950873B2 (en) Apparatus and method for port sharing a plurality of server processes
CN108574733A (zh) 网络代理方法及装置、存储介质和电子设备
CN114827239A (zh) 基于8583协议的双向会话保持方法和装置
CN113179317A (zh) 内容重写设备的测试系统及方法
WO2017135254A1 (ja) 端末、中継装置選択装置、通信方法、中継装置選択方法、及びプログラム
CN109005250B (zh) 用于访问服务端的方法和装置
CN114157640B (zh) 用于区块链通信系统的方法、控制器与代理装置
CN114143079B (zh) 包过滤策略的验证装置及方法
CN114650271B (zh) 全局负载dns邻居站点学习方法及装置
CN113114565B (zh) 数据报文转发方法及装置、存储介质及电子设备
CN117061454A (zh) 算力服务路由方法、装置、电子设备及存储介质
CN116208544A (zh) 报文发送方法、系统、装置、设备及存储介质
CN118075206A (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
GR01 Patent grant
GR01 Patent grant