CN110198251A - 一种获得客户端地址的方法及装置 - Google Patents

一种获得客户端地址的方法及装置 Download PDF

Info

Publication number
CN110198251A
CN110198251A CN201910261947.0A CN201910261947A CN110198251A CN 110198251 A CN110198251 A CN 110198251A CN 201910261947 A CN201910261947 A CN 201910261947A CN 110198251 A CN110198251 A CN 110198251A
Authority
CN
China
Prior art keywords
address
client
client address
intermediate server
packet
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
Application number
CN201910261947.0A
Other languages
English (en)
Other versions
CN110198251B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910261947.0A priority Critical patent/CN110198251B/zh
Publication of CN110198251A publication Critical patent/CN110198251A/zh
Application granted granted Critical
Publication of CN110198251B publication Critical patent/CN110198251B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • 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/22Parsing or analysis of headers

Landscapes

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

Abstract

本发明实施例提供了一种获得客户端地址的方法及装置,涉及数据传输技术领域,该方法包括:监测网络接口接收的数据流,根据过滤规则从数据流中确定目标数据包,目标数据包是由所述中间服务器转发的。在目标数据包为网络连接请求包时,解析网络连接请求包首部的TOA字段,获得客户端地址,从而避免因中间服务器隐藏客户端地址,使得业务服务器无法直接获得客户端地址的问题。其次,由于监测业务服务器的网络接口获得数据流,从数据流中获得目标数据包,故获得客户端地址的流程独立于业务服务器实际的业务流程,不需要改变业务服务器的业务逻辑,从而不影响正常业务的运行。另外也不需要对底层协议栈进行深度改造,对***没有依赖性。

Description

一种获得客户端地址的方法及装置
技术领域
本发明实施例涉及数据传输技术领域,尤其涉及一种获得客户端地址的方法及装置。
背景技术
目前,很多网络服务商需要获取客户端的真实互联网协议地址(InternetProtocol Address,简称IP地址)和端口(Port),用于对业务策略进行制定以及优化。另外,客户端的IP和Port信息作为基本的统计数据,对线上业务运营的监控和评估具有非常重要的意义。业务服务器可以通过应用程序编程接口(Application Programming Interface,简称API)直接获取客户端地址,但是当业务服务器前侧添加了代理服务器,代理服务器会将客户端地址隐藏,然后将代理服务器的地址发送至业务服务器,此时采用API直接获取的代理服务器地址,而不是客户端地址。
发明内容
由于当代理服务器转发客户端的数据包时,隐藏了客户端地址,导致业务服务器无法直接获取客户端地址的问题,本发明实施例提供了一种获得客户端地址的方法及装置。
一方面,本发明实施例提供了一种获得客户端地址的方法,包括:
监测网络接口接收的数据流;
根据过滤规则从所述数据流中确定目标数据包,所述目标数据包是由所述中间服务器转发的;
在所述目标数据包为网络连接请求包时,解析所述网络连接请求包首部的TOA字段,获得客户端地址。
一方面,本发明实施例提供了一种获得客户端地址的装置,包括:
监测模块,用于监测网络接口接收的数据流;
过滤模块,用于根据过滤规则从所述数据流中确定目标数据包,所述目标数据包是由所述中间服务器转发的;
解析模块,用于在所述目标数据包为网络连接请求包时,解析所述网络连接请求包首部的TOA字段,获得客户端地址。
可选地,还包括控制模块;
所述控制模块,用于从所述目标数据包中获取中间服务器的地址;以所述中间服务器的地址为索引,将所述中间服务器的地址和所述客户端地址对应保存至哈希表中。
可选地,所述控制模块还用于,接收查询指令,所述查询指令携带中间服务器的地址;
根据所述中间服务器的地址查询所述哈希表,获得对应的客户端地址;
将获得的客户端地址发送至查询端。
可选地,所述控制模块还用于,在所述目标数据包为网络断开请求包时,以所述中间服务器的地址为索引,查询获得所述哈希表中对应的客户端地址;
删除查询获得的客户端地址。
可选地,所述控制模块还用于,以所述中间服务器的地址为索引,将所述中间服务器的地址和所述客户端地址的时间信息保存至老化表中。
可选地,所述控制模块还用于,定期扫描所述老化表中每个客户端地址的时间信息;
针对每个客户端地址,当所述客户端地址的时间信息不满足预设条件时,从所述老化表中删除所述客户端地址的时间信息以及对应保存的中间服务器的地址;
以所述中间服务器的地址为索引,删除所述哈希表中对应保存的客户端地址。
一方面,本发明实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现获得客户端地址的方法的步骤。
一方面,本发明实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行获得客户端地址的方法的步骤。
通过监测网络接口接收的数据流,从数据流中过滤出目标数据包,在目标数据包为网络连接请求包时,解析网络连接请求包首部的TOA字段,获得客户端地址,从而避免因中间服务器隐藏客户端地址,使得业务服务器无法直接获得客户端地址的问题。其次,由于监测业务服务器的网络接口获得数据流,从数据流中获得目标数据包,故获得客户端地址的流程独立于业务服务器实际的业务流程,不需要改变业务服务器的业务逻辑,从而不影响正常业务的运行。另外也不需要对***的底层协议栈进行深度改造,对***没有依赖性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种应用场景示意图;
图2为本发明实施例提供的一种获得客户端地址的方法的流程示意图;
图3为本发明实施例提供的一种业务服务器的***架构图;
图4为本发明实施例提供的一种获得客户端地址的装置的结构示意图;
图5为本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了方便理解,下面对本发明实施例中涉及的名词进行解释。
TOA字段:TOA字段存在于数据包的TCP首部的可选域中。
SYN:同步序列编号(Synchronize Sequence Numbers),是TCP/IP建立连接时使用的握手信号。在客户端和服务器之间建立正常的TCP网络连接时,客户端首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户端和服务器之间才能建立起可靠的TCP连接,数据才可以在客户端和服务器之间传递。
FIN:表示结束客户端和服务器之间的TCP/IP连接。
RST:表示复位,用来异常的关闭连接。
在具体实践过程中,本发明的发明人发现,对于客户端和服务器之间添加了代理服务器的网络架构来说,代理服务器在转发客户端的数据包时,往往会将客户端的地址隐藏,然后在数据包上添加代理服务器的地址。因此,服务器在接收到客户端的数据包时,从数据包头中直接读取的地址为代理服务器的地址,而不是客户端的地址。
通过分析可知,代理服务器一般将客户端地址隐藏在数据包的TOA字段中,其中,TOA字段位于数据包的TCP首部的可选域中。另外,大部分代理服务器转发SYN包时,在TOA字段添加客户端地址,其他代理服务器可能会转发每个数据包时,在TOA字段添加客户端地址。鉴于此,本发明实施例提供了一种获得客户端地址的方法,监测业务服务器的网络接口接收的数据流,然后根据过滤规则从数据流中确定目标数据包,在目标数据包为网络连接请求包时,解析网络连接请求包首部的TOA字段,获得客户端地址,其中网络连接请求包可以是SYN包。
通过监测网络接口接收的数据流,从数据流中过滤出目标数据包,在目标数据包为网络连接请求包时,解析网络连接请求包首部的TOA字段,获得客户端地址,从而避免因中间服务器隐藏客户端地址,使得业务服务器无法直接获得客户端地址的问题。其次,由于监测业务服务器的网络接口获得数据流,从数据流中获得目标数据包,故获得客户端地址的流程独立于业务服务器实际的业务流程,不需要改变业务服务器的业务逻辑,也不需要修改业务服务器的操作***内核,从而一方面避免了影响业务服务器的业务流程,另一方面简化了获取客户端地址的过程。
本发明实施例中的获得客户端地址的方法可以应用于如图1所示的应用场景,在该应用场景中包括客户端101、中间服务器102以及业务服务器103。
客户端101是具备网络通信能力的电子设备,该电子设备可以是智能手机、平板电脑或便携式个人计算机等。客户端101上安装有应用程序,比如游戏类应用程序、社交类应用程序等。用户在使用客户端101的应用程序时,比如启动游戏应用程序打游戏时,客户端101发送数据包至中间服务器102,由中间服务器102将数据包转发至业务服务器103。业务服务器103通过中间服务器102返回响应数据包至客户端101。客户端101通过无线网络与中间服务器102连接,中间服务器102通过无线网络与业务服务器103连接。业务服务器103是一台服务器或若干台服务器组成的服务器集群或云计算中心。获得客户端地址的装置可以位于业务服务器103中,也可以独立于业务服务器103。获得客户端地址的装置监测业务服务器的网络接口接收的数据流,然后根据过滤规则从数据流中确定目标数据包,在目标数据包为网络连接请求包时,解析网络连接请求包首部的TOA字段,获得客户端地址。
基于图1所示的应用场景图,本发明实施例提供了一种获得客户端地址的方法的流程,该方法的流程可以由获得客户端地址的装置执行,如图2所示,包括以下步骤:
步骤S201,监测网络接口接收的数据流。
具体地,网络接口可以是业务服务器中的网卡,通过winpcap监测网卡接收的数据流,获取网络卡上的所有数据流。数据流包括业务数据以及其他非业务数据。
步骤S202,根据过滤规则从数据流中确定目标数据包,目标数据包是由中间服务器转发的。
过滤规则根据实际需求预先设置,本发明实施例至少提供以下两种设置过滤规则的实施方式:
在一种可能的实施方式中,根据目标数据包的属性设置过滤规则。
示例性地,当目标数据包为SYN包时,获取SYN包的标识字段,然后将过滤规则设置为过滤出包含SYN包的标识字段的数据包。
在一种可能的实施方式中,根据目标数据包的属性、业务服务器对外提供服务的地址设置过滤规则。
示例性地,当目标数据包为SYN包时,获取SYN包的标识字段。确定业务服务器与客户端建立TCP/IP连接时,业务服务器对外提供服务器的IP地址和端口地址。将过滤规则设置为:先根据业务服务器对外提供服务器的IP地址和端口地址筛选数据流,然后再从筛选后的数据流中过滤出包含SYN包的标识字段的数据包。
步骤S203,在目标数据包为网络连接请求包时,解析网络连接请求包首部的TOA字段,获得客户端地址。
网络连接请求包可以是建立TCP/IP连接时,客户端发送至业务服务器的SYN包。中间服务器在转发SYN包时,在SYN包的TOA字段中添加客户端地址,获得客户端地址的装置过滤出SYN包时,对SYN包的TOA字段进行解析,可以获得客户端地址。客户端地址包括客户端的IP地址和端口地址。
通过监测网络接口接收的数据流,从数据流中过滤出目标数据包,在目标数据包为网络连接请求包时,解析网络连接请求包首部的TOA字段,获得客户端地址,从而避免因中间服务器隐藏客户端地址,使得业务服务器无法直接获得客户端地址的问题。其次,由于监测业务服务器的网络接口获得数据流,从数据流中获得目标数据包,故获得客户端地址的流程独立于业务服务器实际的业务流程,不需要改变业务服务器的业务逻辑,从而不影响正常业务的运行。另外也不需要对底层协议栈进行深度改造,对***没有依赖性。
可选地,在获得客户端地址后,可以从目标数据包中获取中间服务器的地址,然后以中间服务器的地址为索引,将中间服务器的地址和客户端地址对应保存至哈希表中。
具体实施中,中间服务器的地址和客户端地址可以采用key-value键值对的形式保存在哈希表中。由于中间服务器在转发不同客户端的数据包时,采用不同IP地址和/或端口地址,因此,在哈希表中,不同的客户端地址对应的中间服务器的地址是不相同的。
示例性地,哈希表如表1所示,设定中间服务器在转发客户端1的数据包时,采用的IP地址为:192.169.1.0,端口地址为80,则根据IP地址192.169.1.0和端口地址80生成key1,以客户端1的地址为value1,将key1和value1组成的键值对保存在哈希表中。中间服务器在转发客户端2的数据包时,采用的IP地址为:192.169.1.0,端口地址为90,则根据IP地址192.169.1.0和端口地址90生成key2,以客户端2的地址为value2,然后将key2和value2组成的键值对保存在哈希表中。
表1.
key value
key1:IP地址192.169.1.0和端口地址80 value1:客户端1的地址
key2:IP地址192.169.1.0和端口地址90 value2:客户端2的地址
哈希表中的数据可供外界实时查询,在一种可能的实施方式中,当获得客户端地址的装置独立于业务服务器时,获得客户端地址的装置接收查询指令,查询指令携带中间服务器的地址,然后根据中间服务器的地址查询哈希表,获得对应的客户端地址,之后再将获得的客户端地址发送至查询端。
具体地,查询端可以是业务服务器的应用层,也可以是业务服务器以外的需要获得客户端地址的其他端,查询端可以根据需求在任意时间查询哈希表获得客户端地址。示例性地,业务服务器的应用层在建立TCP连接时获得中间服务器的地址为:IP地址192.169.1.0和端口地址80。业务服务器的应用层发送查询指令至获得客户端地址的装置,查询指令中包括中间服务器的地址,获得客户端地址的装置根据IP地址192.169.1.0和端口地址80生成key1,然后采用key1查询哈希表,获得客户端1的地址。
在一种可能的实施方式中,当获得客户端地址的装置位于业务服务器时,业务服务器的应用层可以直接根据中间服务器的地址查询哈希表,获得对应的客户端地址。
示例性地,业务服务器的应用层在建立通信时获得中间服务器的地址为:IP地址192.169.1.0和端口地址90。业务服务器的应用层根据IP地址192.169.1.0和端口地址90生成key2,然后采用key2查询哈希表,获得客户端2的地址。
由于在获得客户端地址后,先将客户端地址和中间服务器的地址对应保存在哈希表中,当查询端需要获取客户端地址时,根据建立TCP连接时或者传输数据包时获得的中间服务器的地址查询哈希表,获得对应的客户端地址,从而一方面便于管理客户端地址,另一方面方便查询客户端地址。
可选地,由于TCP连接是有生命周期的,当TCP连接失效时,客户端的端口地址可能被回收用于其他连接上,哈希表中的客户端地址也需要对应更新。为此,获得客户端地址的装置在目标数据包为网络断开请求包时,以中间服务器的地址为索引,查询获得哈希表中对应的客户端地址,删除查询获得的客户端地址。
网络断开请求包可以是FIN包或RST包。示例性地,当目标数据包为FIN包时,从FIN包中获得中间服务器的地址为:IP地址192.169.1.0和端口地址90,然后根据IP地址192.169.1.0和端口地址90生成key2,采用key2查询哈希表,获得客户端2的地址,然后从哈希表中删除客户端2的地址。
由于在网络连接失效导致客户端地址被回收时,更新哈希表中的客户端地址,从而保证了查询端获取的客户端地址为有效地址,避免因失效的客户端地址对业务策略制定带来影响。
为了避免在网络断开请求包丢失时,哈希表一直保存失效的客户端地址,导致资源残留,本发明实施例中至少提供以下两种清除失效的客户端地址的实施方式:
在一种可能的实施方式中,以中间服务器的地址为索引,将中间服务器的地址和客户端地址的时间信息保存至老化表中。
客户端地址的时间信息可以是客户端地址在哈希表中的初始缓存时间,老化表中保存中间服务器的地址以及客户端地址的初始缓存时间,中间服务器的地址和客户端地址的初始缓存时间可以采用key-value键值对的形式进行保存。
示例性地,老化表如2所示,设定中间服务器的地址为:IP地址192.169.1.0和端口地址80,对应的客户端地址为客户端1的地址,客户端1的地址的初始缓存时间为2019-1-2117:30,根据IP地址192.169.1.0和端口地址80生成key1,以初始缓存时间2019-1-21 17:30为value3,然后将key1和value3组成的键值对保存在老化表中。中间服务器的地址为:IP地址192.169.1.0和端口地址90,对应的客户端地址为客户端2的地址,客户端2的地址的初始缓存时间为2019-1-21 19:30,根据IP地址192.169.1.0和端口地址90生成key2,以初始缓存时间2019-1-21 19:30为value4,然后将key2和value4组成的键值对保存在老化表中。
表2.
key value
key1:IP地址192.169.1.0和端口地址80 value3:2019-1-21 17:30
key2:IP地址192.169.1.0和端口地址90 value4:2019-1-21 19:30
进一步地,定期扫描老化表中每个客户端地址的时间信息。针对每个客户端地址,当客户端地址的时间信息不满足预设条件时,从老化表中删除客户端地址的时间信息以及对应保存的中间服务器的地址,然后以中间服务器的地址为索引,删除哈希表中对应保存的客户端地址。
具体实施中,启动缓存定时器,当缓冲定时器达到定时时间时,遍历老化表,根据客户端地址的初始缓存时间以及定时时间计算每个客户端地址的缓存时间。当客户端地址的缓存时间大于老化阈值时,删除老化表中该客户端地址的初始缓存时间对应的键值对。同时,从老化表中获得该客户端地址的初始缓存时间对应的中间服务器的地址,然后以中间服务器的地址为索引,查询哈希表获得客户端地址,删除哈希表中该客户端地址对应的键值对。
示例性地,设定定时器的时间间隔为1小时,老化阈值为24小时,当定时器到达定时时间2019-1-22 18:00时,遍历表2所示的老化表,计算得到value3中客户端地址的缓存时间为24.5小时,value4中客户端地址的缓存时间为22.5小时,由于value3中客户端地址的缓存时间大于老化时间,因此删除键老化表中的键值对key1-value3。然后采用key1:IP地址192.169.1.0和端口地址80查询表1所示的哈希表,获得value1:客户端1的地址,之后再删除哈希表中的键值对key1-value1。
由于设置老化表保存客户端地址的初始缓存时间,然后定时遍历老化表确定每个客户端地址的缓存时间,当客户端地址的缓存时间大于老化阈值时,删除老化表和哈希表中保存的客户端地址的相关信息,从而避免残留失效的客户端地址。其次,单独设置老化表保存客户端地址的初始缓存时间和中间服务器的地址,故每次到达定时时间时,不需要都访问哈希表,防止访问哈希表的频率过高。
在一种可能的实施方式中,以中间服务器的地址为索引,将中间服务器的地址和客户端地址的时间信息保存至哈希表中。
示例性地,哈希表如表3所示,设定中间服务器在转发客户端1的数据包时,采用的IP地址为:192.169.1.0,端口地址为80,则根据IP地址192.169.1.0和端口地址80生成key1,以客户端1的地址和客户端1的地址的初始缓存时间2019-1-21 17:30为value1,将key1和value1组成的键值对保存在哈希表中。中间服务器在转发客户端2的数据包时,采用的IP地址为:192.169.1.0,端口地址为90,则根据IP地址192.169.1.0和端口地址90生成key2,以客户端2的地址和客户端2的地址的初始缓存时间2019-1-21 19:30为value2,然后将key2和value2组成的键值对保存在哈希表中。
表3.
进一步地,定期扫描哈希表中每个客户端地址的时间信息。针对每个客户端地址,当客户端地址的时间信息不满足预设条件时,从哈希表中删除客户端地址的时间信息、客户端地址以及对应保存的中间服务器的地址。
示例性地,设定定时器的时间间隔为1小时,老化阈值为24小时,当定时器到达定时时间2019-1-22 18:00时,遍历表3所示的哈希表,计算得到value 1中客户端地址的缓存时间为24.5小时,value2中客户端地址的缓存时间为22.5小时,由于value1中客户端地址的缓存时间大于老化时间,因此删除键哈希表中的键值对key1-value1。
通过在哈希表中保存客户端地址和客户端地址的初始缓存时间,定时遍历哈希表中客户端地址的初始缓存时间确定客户端地址是否老化,在客户端地址老化时将哈希表中客户端地址对应的键值对删除,避免哈希表残留失效的客户端地址。
为了更好的解释本发明实施例,下面结合具体的实施场景描述本发明实施例提供的一种获得客户端地址的方法,该方法由获得客户端地址的装置执行,获得客户端地址的装置服可以是图1所示的业务器,业务服务器的***架构如图3所示,业务服务器中包括网络接口301、应用层302、旁路线程303、缓存定时器304、哈希表305以及老化表306。
应用层302根据业务服务器的网卡信息以及对外服务的IP地址和端口地址,创建旁路线程303,旁路线程303启动网卡监听服务,设置数据流的过滤规则和老化阈值,初始化哈希表和老化表,启动缓冲定时器304。业务服务器通过网络接口301接收数据流,并将数据流发送至应用层302。旁路线程303监听网络接口301接收的数据流,然后采用过滤规则从数据流中过滤出目标数据包,目标数据包包括SYN包、FIN包和RST包。当目标数据包为SYN包时,旁路线程303解析SYN包首部的TOA字段,获得客户端地址。从SYN包中获取中间服务器的地址,以中间服务器的地址为索引,将中间服务器的地址和客户端地址对应保存至哈希表305中。获取当前时间戳作为客户端地址的初始缓存时间,然后以中间服务器的地址为索引,将客户端地址的初始缓存时间和中间服务器的地址保存在老化表306中。当目标数据包为FIN包或RST包时,旁路线程303从FIN包或RST包中获取中间服务器的地址,然后以中间服务器的地址为索引,查询获得哈希表305中对应的客户端地址,之后再删除中间服务器的地址和查询获得的客户端地址。另外,以中间服务器的地址为索引,查询老化表306中对应的客户端地址的初始缓存时间,之后再删除中间服务器的地址和查询获得的客户端地址的初始缓存时间。缓存定时器304达到定时时间时,旁路线程303遍历老化表306,然后根据每个客户端地址的初始缓存时间和定时时间确定每个客户端地址的缓存时间。当客户端地址的缓存时间大于老化阈值时,删除老化表中客户端地址的初始缓存时间和中间服务器的地址。以中间服务器的地址查询哈希表305,确定对应的客户端地址,然后删除哈希表305中的客户端地址和中间服务器的地址。应用层302在需要获取客户端地址时,从建立TCP连接时或传输数据时接收的数据包中获得中间服务器的地址,然后以中间服务器的地址为索引查询哈希表,获得客户端地址。
通过监测网络接口接收的数据流,从数据流中过滤出目标数据包,在目标数据包为网络连接请求包时,解析网络连接请求包首部的TOA字段,获得客户端地址,从而避免因中间服务器隐藏客户端地址,使得业务服务器无法直接获得客户端地址的问题。其次,由于监测业务服务器的网络接口获得数据流,从数据流中获得目标数据包,故获得客户端地址的流程独立于业务服务器实际的业务流程,不需要改变业务服务器的业务逻辑,从而不影响正常业务的运行。另外也不需要对底层协议栈进行深度改造,对***没有依赖性。
基于相同的技术构思,本发明实施例提供了一种获得客户端地址的装置,如图4所示,该装置400包括:
监测模块401,用于监测网络接口接收的数据流;
过滤模块402,用于根据过滤规则从所述数据流中确定目标数据包,所述目标数据包是由所述中间服务器转发的;
解析模块403,用于在所述目标数据包为网络连接请求包时,解析所述网络连接请求包首部的TOA字段,获得客户端地址。
可选地,还包括控制模块404;
所述控制模块404,用于从所述目标数据包中获取中间服务器的地址;以所述中间服务器的地址为索引,将所述中间服务器的地址和所述客户端地址对应保存至哈希表中。
可选地,所述控制模块404还用于,接收查询指令,所述查询指令携带中间服务器的地址;
根据所述中间服务器的地址查询所述哈希表,获得对应的客户端地址;
将获得的客户端地址发送至查询端。
可选地,所述控制模块404还用于,在所述目标数据包为网络断开请求包时,以所述中间服务器的地址为索引,查询获得所述哈希表中对应的客户端地址;
删除查询获得的客户端地址。
可选地,所述控制模块404还用于,以所述中间服务器的地址为索引,将所述中间服务器的地址和所述客户端地址的时间信息保存至老化表中。
可选地,所述控制模块404还用于,定期扫描所述老化表中每个客户端地址的时间信息;
针对每个客户端地址,当所述客户端地址的时间信息不满足预设条件时,从所述老化表中删除所述客户端地址的时间信息以及对应保存的中间服务器的地址;
以所述中间服务器的地址为索引,删除所述哈希表中对应保存的客户端地址。
基于相同的技术构思,本发明实施例提供了一种计算机设备,如图5所示,包括至少一个处理器501,以及与至少一个处理器连接的存储器502,本发明实施例中不限定处理器501与存储器502之间的具体连接介质,图5中处理器501和存储器502之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
在本发明实施例中,存储器502存储有可被至少一个处理器501执行的指令,至少一个处理器501通过执行存储器502存储的指令,可以执行前述的获得客户端地址的方法中所包括的步骤。
其中,处理器501是计算机设备的控制中心,可以利用各种接口和线路连接终端设备的各个部分,通过运行或执行存储在存储器502内的指令以及调用存储在存储器502内的数据,从而获得客户端地址。可选的,处理器501可包括一个或多个处理单元,处理器501可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器501中。在一些实施例中,处理器501和存储器502可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器501可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器502作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器502可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器502是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本发明实施例中的存储器502还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
基于相同的技术构思,本发明实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行获得客户端地址的方法的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种获得客户端地址的方法,其特征在于,包括:
监测网络接口接收的数据流;
根据过滤规则从所述数据流中确定目标数据包,所述目标数据包是由所述中间服务器转发的;
在所述目标数据包为网络连接请求包时,解析所述网络连接请求包首部的TOA字段,获得客户端地址。
2.如权利要求1所述的方法,其特征在于,还包括:
从所述目标数据包中获取中间服务器的地址;
以所述中间服务器的地址为索引,将所述中间服务器的地址和所述客户端地址对应保存至哈希表中。
3.如权利要求2所述的方法,其特征在于,还包括:
接收查询指令,所述查询指令携带中间服务器的地址;
根据所述中间服务器的地址查询所述哈希表,获得对应的客户端地址;
将获得的客户端地址发送至查询端。
4.如权利要求2所述的方法,其特征在于,还包括:
在所述目标数据包为网络断开请求包时,以所述中间服务器的地址为索引,查询获得所述哈希表中对应的客户端地址;
删除查询获得的客户端地址。
5.如权利要求2所述的方法,其特征在于,还包括:
以所述中间服务器的地址为索引,将所述中间服务器的地址和所述客户端地址的时间信息保存至老化表中。
6.如权利要求5所述的方法,其特征在于,还包括:
定期扫描所述老化表中每个客户端地址的时间信息;
针对每个客户端地址,当所述客户端地址的时间信息不满足预设条件时,从所述老化表中删除所述客户端地址的时间信息以及对应保存的中间服务器的地址;
以所述中间服务器的地址为索引,删除所述哈希表中对应保存的客户端地址。
7.一种获得客户端地址的装置,其特征在于,包括:
监测模块,用于监测网络接口接收的数据流;
过滤模块,用于根据过滤规则从所述数据流中确定目标数据包,所述目标数据包是由所述中间服务器转发的;
解析模块,用于在所述目标数据包为网络连接请求包时,解析所述网络连接请求包首部的TOA字段,获得客户端地址。
8.如权利要求1所述的方法,其特征在于,还包括控制模块;
所述控制模块,用于从所述目标数据包中获取中间服务器的地址;以所述中间服务器的地址为索引,将所述中间服务器的地址和所述客户端地址对应保存至哈希表中。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1~6任一权利要求所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行权利要求1~6任一所述方法的步骤。
CN201910261947.0A 2019-04-02 2019-04-02 一种获得客户端地址的方法及装置 Active CN110198251B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910261947.0A CN110198251B (zh) 2019-04-02 2019-04-02 一种获得客户端地址的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910261947.0A CN110198251B (zh) 2019-04-02 2019-04-02 一种获得客户端地址的方法及装置

Publications (2)

Publication Number Publication Date
CN110198251A true CN110198251A (zh) 2019-09-03
CN110198251B CN110198251B (zh) 2022-08-02

Family

ID=67751880

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910261947.0A Active CN110198251B (zh) 2019-04-02 2019-04-02 一种获得客户端地址的方法及装置

Country Status (1)

Country Link
CN (1) CN110198251B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113014693A (zh) * 2021-03-31 2021-06-22 贵州航天电子科技有限公司 一种多客户端温控组合服务器
CN113098727A (zh) * 2019-12-23 2021-07-09 上海云盾信息技术有限公司 一种数据包检测处理方法与设备
CN113315849A (zh) * 2020-04-10 2021-08-27 阿里巴巴集团控股有限公司 数据处理方法、装置、设备和存储介质
CN113676540A (zh) * 2021-08-23 2021-11-19 北京奇艺世纪科技有限公司 一种连接建立方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101321171A (zh) * 2008-07-04 2008-12-10 北京锐安科技有限公司 一种检测分布式拒绝服务攻击的方法及设备
CN102752303A (zh) * 2012-07-05 2012-10-24 北京锐安科技有限公司 一种基于旁路的数据获取方法及***
US20130297824A1 (en) * 2010-12-30 2013-11-07 The Pla Information Engineering University Method of aggregation of source address bunches, and network routing system
CN104115526A (zh) * 2012-02-16 2014-10-22 皇家飞利浦有限公司 通信网络中高效的代理表管理
CN104243344A (zh) * 2014-10-11 2014-12-24 网宿科技股份有限公司 一种有效数据包捕获方法及请求重定向服务器
CN105915658A (zh) * 2016-07-04 2016-08-31 上海优刻得信息科技有限公司 获取客户端ip地址的数据调用方法、数据传输方法
CN107465666A (zh) * 2017-07-12 2017-12-12 北京潘达互娱科技有限公司 一种客户端ip获取方法与装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101321171A (zh) * 2008-07-04 2008-12-10 北京锐安科技有限公司 一种检测分布式拒绝服务攻击的方法及设备
US20130297824A1 (en) * 2010-12-30 2013-11-07 The Pla Information Engineering University Method of aggregation of source address bunches, and network routing system
CN104115526A (zh) * 2012-02-16 2014-10-22 皇家飞利浦有限公司 通信网络中高效的代理表管理
CN102752303A (zh) * 2012-07-05 2012-10-24 北京锐安科技有限公司 一种基于旁路的数据获取方法及***
CN104243344A (zh) * 2014-10-11 2014-12-24 网宿科技股份有限公司 一种有效数据包捕获方法及请求重定向服务器
CN105915658A (zh) * 2016-07-04 2016-08-31 上海优刻得信息科技有限公司 获取客户端ip地址的数据调用方法、数据传输方法
CN107465666A (zh) * 2017-07-12 2017-12-12 北京潘达互娱科技有限公司 一种客户端ip获取方法与装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113098727A (zh) * 2019-12-23 2021-07-09 上海云盾信息技术有限公司 一种数据包检测处理方法与设备
CN113315849A (zh) * 2020-04-10 2021-08-27 阿里巴巴集团控股有限公司 数据处理方法、装置、设备和存储介质
CN113014693A (zh) * 2021-03-31 2021-06-22 贵州航天电子科技有限公司 一种多客户端温控组合服务器
CN113014693B (zh) * 2021-03-31 2023-05-26 贵州航天电子科技有限公司 一种多客户端温控组合服务器
CN113676540A (zh) * 2021-08-23 2021-11-19 北京奇艺世纪科技有限公司 一种连接建立方法及装置

Also Published As

Publication number Publication date
CN110198251B (zh) 2022-08-02

Similar Documents

Publication Publication Date Title
CN110198251A (zh) 一种获得客户端地址的方法及装置
EP3116178B1 (en) Packet processing device, packet processing method, and program
CN108965007B (zh) Api网关接口配置更新方法及装置
US8627448B2 (en) Selective invalidation of packet filtering results
US8082290B2 (en) Intelligent establishment of peer-to-peer communication
RU2425449C2 (ru) Отслеживание данных изменения состояния для того, чтобы содействовать безопасности вычислительной сети
CN108737333A (zh) 一种数据检测方法以及装置
TW201824047A (zh) 攻擊請求的確定方法、裝置及伺服器
US20180217852A1 (en) System service reloading method and apparatus
JP2020113924A (ja) モニタリングプログラム,プログラマブルデバイス及びモニタリング方法
US20150312296A1 (en) Method and device for pushing multimedia resource and display terminal
CN107544837B (zh) 云服务设备性能数据采集***、方法和装置
CN111338806B (zh) 一种业务控制方法及装置
CN112434039A (zh) 数据的存储方法、装置、存储介质以及电子装置
CN109547524A (zh) 基于物理网的用户行为存储方法、装置、设备及存储介质
CN109377383A (zh) 产品数据同步方法、装置、计算机设备及存储介质
EP3887995A1 (en) Method and system for reducing the size of a blockchain
CN109889625B (zh) 访问服务器的方法、记账节点、服务器及计算机可读存储介质
CN115826444A (zh) 基于dns解析的安全访问控制方法、***、装置及设备
CN110380981B (zh) 一种流量分发方法及设备
CN108377211B (zh) 基于报文内容感知的动态规则链式递归触发方法及其***
CN113467718B (zh) 一种数据处理方法、装置、电子设备及存储介质
EP3800833A1 (en) Deep packet inspection application classification systems and methods
CN111866005A (zh) 基于区块链的arp欺骗攻击防御方法、***及装置
CN106454419A (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