获取客户端ip地址的数据调用方法、数据传输方法

文档序号:10555711阅读:290来源:国知局
获取客户端ip地址的数据调用方法、数据传输方法
【专利摘要】本发明提供了一种获取客户端IP地址的数据调用方法、数据传输方法以及驱动模块。本发明在使用代理服务器的情况下,基于TCP,在代理服务器转发的请求信息中加入提取的客户端IP地址以及端口,目标服务器在请求信息的TCP报头中读取客户端IP地址以及端口,并存储在目标服务器,应用程序通过API调用存储在目标服务器的客户端IP地址以及端口。
【专利说明】
获取客户端IP地址的数据调用方法、数据传输方法
技术领域
[0001]本发明涉及计算机数据交互领域,尤其涉及使用代理服务器进行数据交互时,数据传输及调用的方法。
【背景技术】
[0002]代理服务器的功能就是代理网络用户去取得网络信息,形象的说:它是网络信息的中转站。使用代理服务器能够显著提高浏览速度和效率。更重要的是:代理服务器实现了重要的服务器安全功能。通常,代理服务器接收客户端发送的数据,并将数据转发至目标服务器,目标服务器接收数据并对数据进行处理后,将处理数据发送至代理服务器,由代理服务器转发回客户端。
[0003]然而,现有技术中存在一个问题,由于使用代理服务器,目标服务器仅能获得代理服务器的IP地址,不能获取客户端的真实IP地址,因此导致基于客户端的真实IP地址的一些安全策略以及统计等业务无法实施。

【发明内容】

[0004]针对以上现有技术中的问题,本发明的目的在于提供一种获取客户端IP地址的数据传输及调用方法,在使用代理服务器的情况下,也能够容易地获取客户端的真实IP地址。
[0005]根据本发明的一个方面,提供一种获取客户端IP地址的数据调用方法,包括步骤:目标服务器基于传输控制协议接收来自代理服务器的第一请求数据,第一请求数据中包括客户端IP地址以及端口;目标服务器提取第一请求数据中的客户端IP地址以及端口,并将客户端IP地址以及端口保存在目标服务器;目标服务器的应用程序使用保存在目标服务器的客户端IP地址以及端口进行应用程序处理。
[0006]根据本发明的另一个方面,提供一种获取客户端IP地址的数据传输方法,其特征在于包括步骤:代理服务器接收来自客户端的第二请求数据,代理服务器提取第二请求数据对应的客户端IP地址以及端口,代理服务器根据第二请求数据,基于传输控制协议生成第一请求数据,第一请求数据包括客户端IP地址以及端口,代理服务器将第二请求数据发送至目标服务器。
[0007]根据本发明的第三个方面,提供一种获取客户端IP地址的驱动模块,驱动模块安装在目标服务器,使得目标服务器执行上述的数据调用方法。
[0008]本发明中,代理服务器基于传输控制协议(TCP)生成第一请求数据并发送给目标服务器,由于第一请求数据中的TCP报头中包括客户端IP地址以及端口,从而目标服务器通过解析TCP报头获得客户端IP地址。相对于基于IP协议生成第一请求数据,本发明基于TCP生成第一请求数据,稳定性以及保障性更高。
[0009]目标服务器的应用程序通过API使用上述获得的客户端IP地址以及端口,从而便捷地实现了应用程序获取客户端IP地址。由于通过API实现,因此对于不同的应用程序具有通用性,不再需要对不同的应用程序使用不同编码用于获取客户端IP地址。
【附图说明】
[0010]以下结合附图和具体实施例对本发明的技术方案进行详细的说明,以使本发明的特性和优点更为明显。
[0011]图1为本发明的各主体间数据流向的示意图;
[0012]图2为代理服务器实施本发明方法的一个实例的流程示意图;
[0013]图3为目标服务器的内核实施本发明方法的一个实例的流程示意图;
[0014]图4为目标服务器的应用程序以及内核实施本发明方法的一个实例的流程示意图。
【具体实施方式】
[0015]以下将对本发明的实施例给出详细的说明。尽管本发明将结合一些【具体实施方式】进行阐述和说明,但需要注意的是本发明并不仅仅只局限于这些实施方式。相反,对本发明进行的修改或者等同替换,均应涵盖在本发明的权利要求范围当中。
[0016]—些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
[0017]应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元或是数据,但是这些单元或数据不应当受这些术语限制。使用这些术语仅仅是为了将一个数据与另一个数据进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一数据可以被称为第二数据,并且类似地第二数据可以被称为第一数据。
[0018]图1为本发明的各主体间数据流向的示意图。如图1所示,在代理模式下的数据交互过程中,参与的各方主体包括客户端101,代理服务器201以及目标服务器301。客户端101发送请求数据,目标服务器301是指真正处理客户端101请求的服务器,目标服务器301可以是某具体的服务器,也可以是云环境下的由一群松散耦合的计算机集组成的一个超级虚拟服务器。代理服务器201不真正处理客户端101的请求,仅是对客户端101发出的请求数据进行转发,即将客户端101发出的请求信息经加工后转发给目标服务器301。通常,目标服务器301与代理服务器201由不同的主体运营,目标服务器301向客户端101提供应用服务,代理服务器201向目标服务器301提供代理服务。需要注意的是,一般请求数据通过代理服务器201转发至目标服务器301,但在一些情况下,也存在设置部分请求数据直接从客户端101发送至目标服务器301。
[0019]在使用代理服务器的情况下,为了解决目标服务器301难以获得客户端IP地址以及端口的问题,曾考虑基于超文本传输协议(HTTP),在代理服务器201转发的请求信息中加入提取的客户端IP地址以及端口,然而HTTP协议只能用于WEB类应用程序,对于非WEB类应用程序不能采用。
[0020]在不断地实践中发现,基于HTTP的调用方法,每个应用程序需要使用客户端IP地址时,都需要进行特别编程或是修改,对于不同应用程序需要进行不同编码,没有通用性,实施维护困难。基于以上的过程,提出了是否可以找到一种对不同应用程序通用的调用客户端IP地址的方法的问题。
[0021]下面通过附图具体介绍本发明的解决上述技术问题的方法。
[0022]图2为代理服务器实施本发明方法的一个实例的流程示意图,结合图1与图2,下面具体说明代理服务器201实施本发明的数据调用方法的过程。
[0023]客户端101发送第二请求数据401后,如步骤SlOl,代理服务器201接收来自客户端101的第二请求数据401。接着,如步骤S102,代理服务器201基于IP协议在第二请求数据401中提取第二请求数据401所对应的客户端IP地址以及端口。
[0024]如步骤S103,代理服务器201基于TCP生成第一请求数据501。具体而言,代理服务器201在TCP的报头的opt1n字段中加入步骤S102提取的客户端IP地址以及端口。代理服务器201同时在opt1n字段中添加标识符,用于标识第一请求数据501中包括客户端IP地址以及端口。
[0025]如步骤S104,代理服务器201向目标服务器301发送第一请求数据501的TCP握手包(SYN)0
[0026]如步骤S105,当目标服务器301确认TCP SYN后,目标服务器301会向代理服务器201返回应答包(SYN+ACK),代理服务器201接收SYN+ACK。
[0027]如步骤S106,代理服务器201在接收到SYN+ACK后,代理服务器201向目标服务器回复确认包(ACK),从而完成TCP的三次握手过程。
[0028]图3为目标服务器的内核实施本发明方法的一个实例的流程示意图,结合图1以及图3,下面具体说明目标服务器301实施本发明的数据传输方法的过程。
[0029]首先如步骤S201,目标服务器301接收代理服务器201在步骤S104中发送的第一请求数据501的SYN。如步骤S202,目标服务器301读取请求数据报头。如步骤S203,当目标服务器301获取标识符时,则判断目标服务器301接收来自代理服务器201的第一请求数据,接着进行步骤S204;当目标服务器301未获取标识符时,则表明请求数据直接来自客户端101,接着直接进行步骤S205。
[0030]如步骤S204,目标服务器301提取客户端IP地址以及端口,目标服务器301在内核302构建连接跟踪数据结构,并将客户端IP地址以及端口保存在连接跟踪数据结构中。连接跟踪数据结构可采用现有所公知的数据结构。
[0031]如步骤S205,目标服务器301向代理服务器201或客户端101返回SYN+ACK。在代理服务器201或客户端101收到SYN+ACK后,代理服务器201或客户端101会如步骤S106向目标服务器301返回ACK。
[0032]最后如步骤S206目标服务器301接收ACK,完成TCP的三次握手过程。
[0033]通过以上描述可知,本发明的数据传输过程基于TCP,相较于IP协议更为稳定。因为,如果基于IP协议,可能发生数据包被丢弃的情况,而基于TCP,则不会发生这样的情况,从而保证数据传输可靠性。
[0034]图4为目标服务器的应用程序以及内核实施本发明方法的一个实例的流程示意图,结合图1以及图4,下面具体说明目标服务器301的应用程序实施本发明的数据调用方法使用客户端IP地址以及端口的过程。
[0035]如步骤S301,当目标服务器301的应用程序303需要使用客户端IP地址以及端口时,应用程序303调用在内核302中的应用程序编程接口(API)。
[0036]接着如步骤S302,API查找连接跟踪数据结构,如步骤S302当查找具有连接跟踪数据结构时,则请求数据来自代理服务器201,接着进行步骤S304,当查找不到连接跟踪数据结构时,则请求数据来自客户端101,接着进行步骤S305。
[0037]如步骤S304,API在连接跟踪数据结构中提取客户端IP地址以及端口。如步骤S305,API基于IP协议在请求数据中读取IP地址以及端口。
[0038]最后如步骤S306,API将IP地址以及端口返回应用程序303。
[0039]通过这样的调用方法,使得应用程序303简单地获得所需要的客户端IP地址以及端口。
[0040]需要注意的是,由于应用程序303对于客户端IP地址以及端口的获取是通过API调用实现的,因此应用程序本身不再需要为了获取客户端IP地址以及端口而特别编程或是修改。由于不同应用程序303可调用同一个API,因此实现了多个应用程序303的通用性,避免了类似基于HTTP的获取客户端IP地址以及端口的方式中,每一个应用程序需要各自采用不同的编码实现。
[0041 ]在具体实施时,在原有目标服务器301的基础上,只需要提供驱动模块,将驱动模块安装在目标服务器301的内核302中,就能使目标服务器301实施上述的数据调用方法,对于应用程序303则不需做修改,部署方便快速。
[0042]由于本发明所提供的方法是基于TCP,因此对于非WEB类的应用程序也同样适用,只需要网络支持TCP即可。
[0043]需要说明的是,本发明是计算机在数据交互领域的一种应用。在本发明的实现过程中,会涉及到多个软件功能模块的应用。如在仔细阅读申请文件、准确理解本发明的实现原理和发明目的以后,在结合现有公知技术的情况下,本领域技术人员完全可以运用其掌握的软件编程技能实现本发明。前述软件功能模块包括但不限于:代理服务、代理定向关联模块等,凡本发明申请文件提及的均属此范畴,
【申请人】不再一一列举。
[0044]以上仅是本发明的具体应用范例,对本发明的保护范围不构成任何限制。除上述实施例外,本发明还可以有其它实施方式。凡采用等同替换或等效变换形成的技术方案,均落在本发明所要求保护的范围之内。
【主权项】
1.一种获取客户端IP地址的数据调用方法,其特征在于包括步骤: 目标服务器基于传输控制协议接收来自代理服务器的第一请求数据,所述第一请求数据中包括客户端IP地址以及端口; 所述目标服务器提取所述第一请求数据中的客户端IP地址以及端口,并将所述客户端IP地址以及端口保存在所述目标服务器; 目标服务器的应用程序使用保存在所述目标服务器的客户端IP地址以及端口进行应用程序处理。2.如权利要求1所述的数据调用方法,其特征在于, 所述第一请求数据由代理服务器在接收来自客户端的第二请求数据的基础上生成,所述代理服务器基于传输控制协议在所述第一请求数据中添加所述第二请求数据所对应的客户端IP地址以及端口。3.如权利要求2所述的数据调用方法,其特征在于, 所述第二请求数据所对应的客户端IP地址以及端口由所述代理服务器基于IP协议在所述第二请求数据中提取。4.如权利要求3所述的数据调用方法,其特征在于, 所述代理服务器在所述第一请求数据的传输控制协议的报头中加入所述第二请求数据所对应的客户端IP地址以及端口,并添加标识符进行标识。5.如权利要求4所述的数据调用方法,其特征在于, 所述客户端IP地址、端口以及所述标识符存储在传输控制协议的报头的opt1n字段中。6.如权利要求4所述的数据调用方法,其特征在于, 所述目标服务器基于传输控制协议接收来自代理服务器的第一请求数据的步骤包括: 所述目标服务器解析所接收到的请求数据的传输控制协议的报头,当所述目标服务器获取所述标识符时,则判断所述目标服务器接收来自代理服务器的第一请求数据。7.如权利要求1所述的数据调用方法,其特征在于, 所述目标服务器的应用程序使用保存在所述目标服务器的客户端IP地址以及端口进行应用程序处理的步骤包括: 所述目标服务器的应用程序调用应用程序编程接口,应用程序编程接口读取保存在所述目标服务器中的所述客户端IP地址以及端口,并将所述客户端IP地址以及端口反馈给所述应用程序。8.如权利要求7所述的数据调用方法,其特征在于, 当应用程序编程接口未在所述目标服务器中找到所述客户端IP地址以及端口时,所述应用程序编程接口在目标服务器所接收到的请求数据中读取IP地址以及端口。9.如权利要求7所述的数据调用方法,其特征在于, 所述目标服务器构建连接跟踪数据结构,并将所述从第一请求数据中提取的客户端IP以及端口保存在所述连接跟踪数据结构中,所述连接跟踪数据结保存在所述目标服务器内核中。10.一种获取客户端IP地址的数据传输方法,其特征在于包括步骤: 代理服务器接收来自客户端的第二请求数据, 所述代理服务器提取所述第二请求数据对应的客户端IP地址以及端口, 所述代理服务器根据所述第二请求数据,基于传输控制协议生成第一请求数据,所述第一请求数据包括所述客户端IP地址以及端口, 所述代理服务器将所述第二请求数据发送至目标服务器。11.如权利要求10所述的数据传输方法,其特征在于, 所述代理服务器在所述第一请求数据的传输控制协议的报头中加入所述第二请求数据所对应的客户端IP地址以及端口,并添加标识符进行标识。12.一种获取客户端IP地址的驱动模块,其特征在于, 所述驱动模块安装在目标服务器,使得所述目标服务器执行如权利要求1-9所述的数据调用方法。
【文档编号】H04L29/08GK105915658SQ201610517593
【公开日】2016年8月31日
【申请日】2016年7月4日
【发明人】白惊涛, 方勇
【申请人】上海优刻得信息科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1