HK40036282B - 数据处理方法、装置、相关设备及存储介质 - Google Patents

数据处理方法、装置、相关设备及存储介质 Download PDF

Info

Publication number
HK40036282B
HK40036282B HK42021025382.9A HK42021025382A HK40036282B HK 40036282 B HK40036282 B HK 40036282B HK 42021025382 A HK42021025382 A HK 42021025382A HK 40036282 B HK40036282 B HK 40036282B
Authority
HK
Hong Kong
Prior art keywords
client
gateway
access address
connection
address
Prior art date
Application number
HK42021025382.9A
Other languages
English (en)
Other versions
HK40036282A (zh
Inventor
张鹏
李剑
李晓锋
Original Assignee
腾讯科技(深圳)有限公司
Filing date
Publication date
Application filed by 腾讯科技(深圳)有限公司 filed Critical 腾讯科技(深圳)有限公司
Publication of HK40036282A publication Critical patent/HK40036282A/zh
Publication of HK40036282B publication Critical patent/HK40036282B/zh

Links

Description

数据处理方法、装置、相关设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、装置、相关设备及存储介质。
背景技术
点对点传输(Peer-to-Peer,或者Point-to-Point,P2P)是指实现处于不同私有网络的两个客户端之间的传输,由于客户端所属的私有网络不同,那么这两个处于不同私有网络的客户端之间的传输,只能依赖公有网络进行,即在处于不同私有网络的客户端需要进行数据传输时,需要由公有网络进行数据的转发。为了提升点对点传输的效率,还可采用打洞技术使得处于不同私有网络的客户端直接相连,但当前的打洞技术成功连接两个处于不同私有网络的客户端的成功率较低,因此,如何提升处于不同私有网络的客户端之间的通信连接成功率成为了当前的研究热点。
发明内容
本发明实施例提供了一种数据处理方法、装置、相关设备及存储介质,可提升为处于私有网络的客户端之间建立通信连接的成功率。
一方面,本发明实施例提供了一种数据处理方法,包括:
当需要在第一客户端与第二客户端之间建立通信连接时,接收所述第一客户端发送的连接测试包,所述连接测试包中携带所述第二客户端的访问地址;所述第一客户端属于第一私有网络,所述第二客户端属于第二私有网络,所述第一私有网络设有第一网关,所述第二私有网络设有第二网关;
确定所述连接测试包携带的所述第二客户端的访问地址,并存储所述第二客户端的访问地址;
当接收到所述第一客户端发送至所述第二客户端的连接数据包时,若已接收到所述第二网关发送的地址存储通知消息,则通过所述第二网关将所述连接数据包发送至所述第二客户端,以使得所述第一客户端和所述第二客户端根据所述连接数据包建立通信连接;其中,所述地址存储通知消息是所述第二网关在存储了所述第一客户端的访问地址后发送的。
再一方面,本发明实施例提供了一种数据处理方法,包括:
当需要在第一客户端与第二客户端之间建立通信连接时,将连接测试包发送给第一网关,所述连接测试包携带所述第二客户端的访问地址,以使所述第一网关确定所述连接测试包携带的所述第二客户端的访问地址,并存储所述第二客户端的访问地址;所述第一客户端属于第一私有网络,所述第二客户端属于第二私有网络,所述第一私有网络设有所述第一网关,所述第二私有网络设有第二网关;
若已接收到所述第二网关发送的地址存储通知消息,则将发送至所述第二客户端的连接数据包发送给所述第一网关,以使所述第一网关通过所述第二网关将所述连接数据包发送至所述第二客户端,从而使得所述第一客户端和所述第二客户端根据所述连接数据包建立通信连接;其中,所述地址存储通知消息是所述第二网关在存储了所述第一客户端的访问地址后发送的。
再一方面,本发明实施例提供了一种数据处理装置,包括:
接收单元,用于当需要在第一客户端与第二客户端之间建立通信连接时,接收所述第一客户端发送的连接测试包,所述连接测试包中携带所述第二客户端的访问地址;所述第一客户端属于第一私有网络,所述第二客户端属于第二私有网络,所述第一私有网络设有第一网关,所述第二私有网络设有第二网关;
确定单元,用于确定所述连接测试包携带的所述第二客户端的访问地址;
存储单元,用于存储所述第二客户端的访问地址;
发送单元,用于当接收到所述第一客户端发送至所述第二客户端的连接数据包时,若已接收到所述第二网关发送的地址存储通知消息,则通过所述第二网关将所述连接数据包发送至所述第二客户端,以使得所述第一客户端和所述第二客户端根据所述连接数据包建立通信连接;其中,所述地址存储通知消息是所述第二网关在存储了所述第一客户端的访问地址后发送的。
再一方面,本发明实施例提供了一种数据处理装置,包括:
发送单元,用于当需要在第一客户端与第二客户端之间建立通信连接时,将连接测试包发送给第一网关,所述连接测试包携带所述第二客户端的访问地址,以使所述第一网关确定所述连接测试包携带的所述第二客户端的访问地址,并存储所述第二客户端的访问地址;所述第一客户端属于第一私有网络,所述第二客户端属于第二私有网络,所述第一私有网络设有所述第一网关,所述第二私有网络设有第二网关;
所述发送单元,还用于若已接收到所述第二网关发送的地址存储通知消息,则将发送至所述第二客户端的连接数据包发送给所述第一网关,以使所述第一网关通过所述第二网关将所述连接数据包发送至所述第二客户端,从而使得所述第一客户端和所述第二客户端根据所述连接数据包建立通信连接;其中,所述地址存储通知消息是所述第二网关在存储了所述第一客户端的访问地址后发送的。
再一方面,本发明实施例提供了一种网关设备,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如下步骤:
当需要在第一客户端与第二客户端之间建立通信连接时,接收所述第一客户端发送的连接测试包,所述连接测试包中携带所述第二客户端的访问地址;所述第一客户端属于第一私有网络,所述第二客户端属于第二私有网络,所述第一私有网络设有第一网关,所述第二私有网络设有第二网关;
确定所述连接测试包携带的所述第二客户端的访问地址,并存储所述第二客户端的访问地址;
当接收到所述第一客户端发送至所述第二客户端的连接数据包时,若已接收到所述第二网关发送的地址存储通知消息,则通过所述第二网关将所述连接数据包发送至所述第二客户端,以使得所述第一客户端和所述第二客户端根据所述连接数据包建立通信连接;其中,所述地址存储通知消息是所述第二网关在存储了所述第一客户端的访问地址后发送的。
再一方面,本发明实施例提供了一种终端设备,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如下步骤:
当需要在第一客户端与第二客户端之间建立通信连接时,将连接测试包发送给第一网关,所述连接测试包携带所述第二客户端的访问地址,以使所述第一网关确定所述连接测试包携带的所述第二客户端的访问地址,并存储所述第二客户端的访问地址;所述第一客户端属于第一私有网络,所述第二客户端属于第二私有网络,所述第一私有网络设有所述第一网关,所述第二私有网络设有第二网关;
若已接收到所述第二网关发送的地址存储通知消息,则将发送至所述第二客户端的连接数据包发送给所述第一网关,以使所述第一网关通过所述第二网关将所述连接数据包发送至所述第二客户端,从而使得所述第一客户端和所述第二客户端根据所述连接数据包建立通信连接;其中,所述地址存储通知消息是所述第二网关在存储了所述第一客户端的访问地址后发送的。
再一方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有第一程序指令和第二程序指令,所述第一程序指令被处理器执行时,用于执行如第一方面所述的数据处理方法,所述第二程序指令被处理器执行时,用于执行如第二方面所述的数据处理方法。
在本发明实施例中,第一网关可在确定需要在第一客户端和第二客户端之间建立通信连接时,接收该第一客户端发送的连接测试包,从而基于该连接测试的包头文件得到该第二客户端的访问地址,并存储该第二客户端的访问地址,进一步地,该第一网关可确定该第二网关也已存储第一客户端的访问地址时,将第一客户端发送到第二客户端的连接数据包,通过第二网关发送到第二客户端,以使得该第一客户端和该第二客户端之间可基于该连接数据包建立通信连接。由于该第一网关和第二网关中已预先存储了对方客户端的访问地址,因此,连接数据包可顺利通过该第一网关和第二网关进行转发,从而可在第一客户端和第二客户端之间建立通信连接,并由于该连接数据包被第一网关或第二网关丢弃的概率较低,也就可以提升在第一客户端和第二客户端之间建立通信连接的成功率。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的一种数据处理方法的系统架构图;
图1b是本发明实施例提供的一种打洞使得第一客户端和第二客户端建立通信连接的示意图;
图1c是本发明实施例提供的一种第一客户端和第二客户端,以及代理服务器的交互示意图;
图1d是本发明实施例提供的一种打洞使得第一客户端和第二客户端建立通信连接的示意图;
图2是本发明实施例提供的一种数据处理方法的示意流程图;
图3a是本发明实施例提供的一种客户端连接多个网关的示意图;
图3b是本发明实施例提供的一种打洞成功率的对比图;
图3c是本发明实施例提供的一种打洞成功率的示意图;
图4是本发明实施例提供的一种数据处理方法的示意流程图;
图5是本发明实施例提供的一种第一客户端确定目标路由次数的示意图;
图6是本发明实施例提供的一种数据处理装置的示意性框图;
图7是本发明实施例提供的一种数据处理装置的示意性框图;
图8是本发明实施例提供的一种网关设备的示意性框图;
图9是本发明实施例提供的一种终端设备的示意性框图。
具体实施方式
为了在处于不同私有网络的第一客户端和第二客户端之间建立通信连接,并有效提升在该第一客户端和第二客户端之间建立通信连接的成功率,本发明实施例提出了一种数据处理方法,该第一客户端的第一网关和第二客户端的第二网关可分别预先存储对方客户端的访问地址,那么基于该第一网关和第二网关对对方客户端的访问地址的记录,使得该第一网关和该第二网关在获取到用于指示在该第一客户端和第二客户端之间建立通信连接的连接数据包时,可实现对该连接数据包的成功转发,也就提升了对建立第一客户端和第二客户端的通信连接时的成功率。在一个实施例中,对方客户端是和当前客户端处于不同私有网络的客户端,如图1a所示,该第一客户端可以属于如图1a中由10标记的第一私有网络,该第二客户端例如可以属于如图1a中由11标记的第二私有网络,其中,该第一客户端可以是第一私有网络10中由101标记的客户端,该第二客户端则可以是第二私有网络11中由102标记的客户端,在一个实施例中,该第一客户端101可通过第一网关实现对公有网络的访问,该第二客户端102可通过第二网关实现对公有网络的访问,其中,该第一网关例如可以是如图1a中由103标记的网关,该第二网关例如可以是如图1a中由104标记的网关。其中,需要说明的是,该第一网关103和第二网关104所属的网络类型不做划分,可以是属于私有网络,也可以属于公有网络,本发明实施例不做限定。其中,该第一网关和第二网关均是一种应用程序接口(Application Programming Interface,API)网关,所以,该第一网关也可称为第一接口网关,该第二网关也可称为第二接口网关。
在一个实施例中,该第一网关和该第二网关均属于外网网关,外网网关是配置有网络地址转换(Net Address Transport,NAT)协议的网关,该网络地址转换协议用于将位于私有网络的客户端访问私有网络的客户端地址,映射为进行公有网络访问的访问地址,以及将公有网络中发送到位于私有网络的客户端的访问信息对应的访问地址转换为对应的私有地址(即客户端地址),并转发到对应的客户端,从而使得处于私有网络的客户端基于网关中部署的网络地址转换协议,可实现和公有网络之间的交互。其中,根据NAT进行地址转换的方式,可将部署有NAT协议的网关划分为全锥形NAT,限制锥形NAT,端口限制锥形NAT,对称型NAT和动态型NAT,其中,本发明实施例所提出的数据处理方法,以使得处于不同私有网络的第一客户端和第二客户端建立通信,主要应用于该第一客户端的第一网关和该第二客户端的第二网关均为动态型NAT时实施的,但是在该第一网关或该第二网关存在不是动态NAT类型的网关时,也可采用本发明实施例。或者,在该第一网关或该第二网关存在不是动态NAT类型的网关时,也可采用反向链接技术,或者生日攻击技术,或者端口预测技术实现在第一客户端和第二客户端之间建立通信连接。
在一个实施例中,反向链接技术是第一客户端和第二客户端对应不同的部署有NAT的网关,如果第一客户端想要和第二客户端通信,则可通过代理服务器向第二客户端发送连接请求,并同时向第二客户端的访问地址发送连接数据包,在第二客户端接收到代理服务器转发的连接请求后,则可向第一客户端的访问地址发送连接数据包,从而实现第一客户端和第二客户端的通信。生日攻击技术主要用在对应网关部署的NAT为端口限制型NAT和对称型NAT的连接问题中,由于对称型NAT的外部端口是随机变化的,端口限制型NAT需要预测对称型NAT的外部端口,往对称型NAT的随机端口发包,对称型NAT使用不同的套接字(socket)往端口限制型NAT发包。其中,该反向链接技术是让动态型NAT主动发起打洞的技术,如图1b所示,具体可包括如下步骤:
s11,第一客户端通过代理服务器向第二客户端发送连接请求;
s12,第二客户端接收到该连接请求后,通过代理服务器向第一客户端发送连接请求;
s13,第二客户端给第一客户端发送连接数据包,该连接数据包可能被第一客户端的第一网关(静态NAT网关)丢弃,因为第一客户端还没有和第二客户端直接通信过,此时,可使得第二客户端的第二网关(动态NAT网关)记录下了第一客户端的访问地址;
s14,第一客户端直接给第二客户端发送连接数据包,由于第二客户端的第二网关中记录了第一客户端的访问地址,所以该连接数据包可以通过该第二网关,此时第一客户端的第一网关中记录了第二客户端的访问地址;
s15,第二客户端接收到第一客户端发送的连接数据包后,给第一客户端发送确认信息,这个确认信息可以通过网关并到达该第一客户端,从而实现在第一客户端和第二客户端之间的打洞。其中,打洞是指使得处于不同私有网络的客户端创建连接,该私有网络例如可以是传输控制协议/互联网络协议(transmission Control Protocol/InternetProtocol,TCP/IP)网络。
虽然采用反向链接技术可解决动态型NAT网关和静态NAT网关的打洞,从而实现对不同私有网络的客户端建立通信连接,但在该第一客户端和第二客户端对应的网关中NAT的类型均为动态类型时,由于动态型NAT在对方客户端主动连接该动态型NAT所在的网关时,该网关中部署的NAT表现为锥形NAT,其中,锥形NAT把外部端口映射为固定端口,以使部署有动态型NAT的网关可成功将从公有网络接收的通信消息转发到对应客户端;而如果对方客户端请求主动连接该部署有动态型NAT的网关,该网关中部署的NAT则表现为动态型NAT,由于动态型NAT将外部端口为随机端口,所以使得该动态型NAT的网关在接收到对方客户端发送的通信消息(如请求通信连接的连接数据包)后,无法成功转发到对应客户端(或转发到对应客户端的成功率较低),由此可见,部署有动态型NAT的网关只有主动发起连接才能连接成功。反向链接技术就是通过让部署有动态型NAT的网关主动发起连接,从而实现了对部署动态型NAT网关的客户端和部署非动态型NAT网关的客户端之间的通信连接问题。但是在第一客户端和第二客户端对应网关部署的NAT均为动态型时,由于由任意一个客户端对应的网关主动连接,都会使得对方客户端的网关中的NAT为动态类型,从而使得任意一个客户端对应的网关均无法将对方客户端通过网关发送用于请求通信连接的连接数据包进行正确转发,从而导致第一客户端和第二客户端之间通信连接失败,也就是说,在第一客户端和第二客户端对应网关中部署的NAT均为动态型时,难以实现第一客户端和第二客户端之间的互通。
为了解决两个客户端对应的网关中NAT的类型均为动态类型时的客户端互通问题,本发明实施例提出了一种数据处理方法,用于解决两个客户端对应的网关中NAT的类型均为动态类型时的客户端互通问题。其中,本发明实施例所提出的数据处理方法,为了在第一客户端和第二客户端之间建立通信连接,该第一客户端和该第二客户端可分别向对应的第一网关和第二网关发送具备存活时间(Time To Live,TTL)的连接测试包,该连接测试包记录了对方客户端的访问地址(即对方客户端的外部访问地址),基于该存活时间,使得该连接测试包恰好到达本端客户端的网关,而不会到达对方客户端的网关,从而实现在本端客户端的网关中记录下对方客户端的访问地址,因此可实现部署的动态类型NAT的网关在接收到对方客户端发送的请求通信连接的连接数据包后,不将该外部端口映射为随机端口,从而实现对接收到的连接数据包的正确转发,以使该第一客户端和该第二客户端建立通信连接。具体地,该第一客户端和该第二客户端可先分别确定出本客户端访问公有网络时的访问地址,其中,该第一客户端和该第二客户端均是采用的网络穿透协议确定出本客户端进行公有网络访问时的访问地址的,其中,该网络穿透协议例如可以是一种NAT的穿透打洞标准(Session Traversal Utilities for NAT,STUN)协议。由于该第一客户端和该第二客户端是属于不同私有网络的客户端,因此,该第一客户端和该第二客户端无法实现直接通信,但第一客户端为了将该第一客户端的访问地址发送到第二客户端,并获取到该第二客户端的访问地址,则该第一客户端和第二客户端可通过代理服务器将本端的访问地址发送到对方客户端,其中,该第一客户端,第二客户端和代理服务器之间的连接关系可如图1c所示,该代理服务器为如图1c中由105标记的服务器,则第一客户端101在确定出该第一客户端的访问地址后,通过代理服务器105将该第一客户端的访问地址发送到第二客户端102,该第二客户端102在确定出该第二客户端的访问地址后,则通过该代理服务器105将该第二客户端的访问地址发送到第一客户端101,从而使得第一客户端和第二客户端分别确定出对方客户端的访问地址。
在第一客户端和该第二客户端分别确定出对方客户端的访问地址后,该第一客户端可向第一网关发送携带有第二客户端的访问地址的连接测试包,其中,该第一客户端在向第一网关发送携带该第二客户端的访问地址的连接测试包时,会在该连接测试包的包头文件中记录源地址信息和目的地址信息,源地址信息即是该第一客户端的内网地址(或客户端地址),目标地址信息即是第二客户端的访问地址,可以理解的是,该第二客户端的访问地址是该第二客户端通过第二网关进行公有网络访问的外网地址,也即是该第二网关的网关地址,那么第一网关在接收到该连接测试包后,则可基于该包头文件中记录的源地址信息和目的地址信息,确定该第二客户端的访问地址,从而使得第一网关实现对第二客户端的访问地址的存储,在该第一网关接收到来自第二网关的连接数据包时,由于第一网关中已记录第二网关的网关地址(即第二客户端的访问地址),所以在接收到来自该第二网关的连接数据包后,该第一网关将基于存储的信息将该连接数据包成功转发到该第一客户端。
同样的,该第二客户端也可向第二网关发送携带有第一客户端的访问地址的连接测试包,从而使得第二网关存储该连接测试包的包头文件中记录的源地址信息和目的地址信息,使得第二网关实现对第一客户端的访问地址的存储,在该第二网关接收到第一网关的连接数据包时,也就同样可实现将该连接数据包成功转发到第二客户端。在具体实现中,如图1d所示,在该第一客户端的第一网关和第二客户端的第二网关均为动态型网关时,在第一客户端和第二客户端之间建立通信连接具体执行如下步骤:
s21,第一客户端通过代理服务器给第二客户端发送建立通信连接的请求;
s22,同时第一客户端向第二客户端发送连接测试包,该连接测试包刚好到达第一网关,且在到达该第一网关后该连接测试包的存活时间为0,因此,该第一网关接收到该连接测试包后不再转发该连接测试包到第二客户端,因此,该第二客户端不会接收到该连接测试包。在第一网关接收到该连接测试包后,该第一网关将记录该连接测试包携带的第二客户端的访问地址;
s23,第二客户端在接收到该连接请求后,也可向第二网关发送连接测试包,该连接测试包也恰好到达第二网关,并不再向外转发,该第二网关在接收到该连接测试包后,也将记录该连接测试包携带的第一客户端的访问地址;
s24,第二客户端在向第二网关发送连接测试包后,该动态型的第二网关就可以实现接收第一客户端的数据包了,因此,该第二客户端可通过代理服务器向第一客户端发送地址存储通知消息,以告知第一客户端(或第一网关)该第二网关已存储该第一客户端的访问地址;
s25,第一客户端在接收到该地址存储通知消息后,则可向第二客户端发送连接数据包,该连接数据包可顺利通过第一网关和第二网关,并到达第二客户端;
s26,在第二客户端接收到该第一客户端发送的连接数据包后,可向第一客户端返回接收成功的确认信息,从而实现在第一客户端和第二客户端之间建立通信连接。
请参见图2,是本发明实施例提出的一种数据处理方法的示意流程图,该方法可应用在上述的第一客户端的第一网关中,如图2所示,该方法可包括:
S201,当需要在第一客户端与第二客户端之间建立通信连接时,接收所述第一客户端发送的连接测试包,所述连接测试包中携带所述第二客户端的访问地址。
在一个实施例中,所述第一客户端属于第一私有网络,所述第二客户端属于第二私有网络,所述第一私有网络设有第一网关,所述第二私有网络设有第二网关,所述第一网关和所述第二网关均为外网网关;所述外网网关部署有网络地址转换协议,所述网络地址转换协议用于将客户端访问私有网络时的客户端地址转换为进行公有网络访问的访问地址,在所述第一客户端访问公有网络时,所述第一网关将所述第一客户端访问所述第一私有网络的客户端地址转换为所述第一客户端的访问地址;所述第二客户端访问所述公有网络时,第二网关将所述第二客户端访问所述第二私有网络的客户端地址转换为所述第二客户端的访问地址。在需要在该第一客户端和第二客户端之间建立通信连接时,该第一网关还可先确定在该第一网关中和第二网关中分别部署的网络地址转换协议的类型,其中,该网络地址转换协议的类型包括动态类型和静态类型,静态类型的网络地址转换协议将内网地址(即客户端地址)转换为固定的外网的访问地址,而动态类型的网络地址转换协议则在进行地址转换时,可能随机映射成不同的访问地址。
在一个实施例中,该第一客户端可先确定所述第一网关中网络地址转换协议的第一协议类型,以及所述第二网关中网络地址转换协议的第二协议类型,如果所述第一协议类型和所述第二协议类型均属于动态类型,则触发执行从所述第一客户端接收连接测试包的步骤,但是,在该第一协议类型或第二协议类型存在不是动态类型的协议时,也可采用本发明实施例。其中,动态类型的网络地址转换协议的协议特性包括:如果包括该网络地址转换协议的网关中未存储来源客户端的访问地址,那么在接收到来自未存储的来源客户端发送的连接数据包后,在转发该连接数据包时使用的是映射的随机端口,基于随机端口的映射就会存在连接数据包被丢弃的风险,从而导致第一客户端和第二客户端之间打洞失败。为了避免包括动态类型的网络转换地址的网关(即动态类型的NAT网关)在接收到连接数据包后抛弃该连接数据包,从而实现对接收到的连接数据包进行正确转发,可通过在该包括动态类型的网络转换地址的网关中预先存储对方客户端的访问地址进行实现,其中,若第一客户端的第一网关和该第二客户端的第二网关均为包括动态类型的网络转换地址的网关,那么为了保证第一客户端和第二客户端打洞成功,则可先在该第一网关中存储第二客户端的访问地址,以及在该第二网关中存储第一客户端的访问地址,从而实现在包括动态类型的网络转换地址的网关中存储对方客户端的访问地址,也就可以保证该第一网关和该第二网关在接收到第一客户端发送至第二客户端(或第二客户端发送至第一客户端)的连接数据包时,可将该连接数据包转发到对方客户端,从而实现第一客户端和第二客户端之间的通信连接。
在一个实施例中,该第一网关为了存储该第二客户端的访问地址,可在接收该第一客户端发送携带了第二客户端的访问地址的连接测试包后,从该连接测试包中确定出第二客户端的访问地址,并存储该第二客户端的访问地址,即转而执行步骤S202;那么同样可以理解的是,该第二网关也可从第二客户端中获取携带了第一客户端的访问地址的连接测试包,并从该连接测试包中确定出该第一客户端的访问地址,并存储该第一客户端的访问地址。其中,该第二客户端的访问地址是第一客户端预先从代理服务器获取的,而该代理服务器获取的第二客户端的访问地址则是该第二客户端采用网络穿透协议(如上述STUN协议)确定的,该第一客户端生成携带第二客户端的访问地址的连接测试包的具体方式为:该第二客户端在确定出该第二客户端的访问地址后,通过代理服务器将该第二客户端的访问地址发送给该第一客户端;该第一客户端接收该第二客户端的访问地址,并将该第二客户端的访问地址添加到该连接测试包中,以及将添加了该第二客户端的访问地址的连接测试包发送给该第一网关。
S202,确定所述连接测试包携带的所述第二客户端的访问地址,并存储所述第二客户端的访问地址。
S203,当接收到所述第一客户端发送至所述第二客户端的连接数据包时,若已接收到所述第二网关发送的地址存储通知消息,则通过所述第二网关将所述连接数据包发送至所述第二客户端,以使得所述第一客户端和所述第二客户端根据所述连接数据包建立通信连接;其中,所述地址存储通知消息是所述第二网关在存储了所述第一客户端的访问地址后发送的。
在步骤S202和步骤S203中,该第一网关在接收到第一客户端发送的连接测试包后,由于该连接测试包的包头文件中将记录该连接测试包对应的源地址信息和目的地址信息,那么该第一网关在接收到该连接测试包后,则可基于包头文件的记录确定第二客户端的访问地址,其中,该第一网关和该第一客户端可同属于同一终端设备,或者,该第一网关也可以是独立于该第一客户端所属终端设备的独立设备,在本发明实施例中,对第一网关和第一客户端所属设备之间的关系不做限定。在一个实施例中,该第一网关在确定出该第二客户端的访问地址后,将不再对继续转发该连接测试包,也就是说,该连接测试包仅从第一客户端到达该第一网关即停止,由于该第二网关未存储该第一客户端的访问地址,因此如果该第一网关将该连接测试包继续转发到第二网关,该第二网关将判定该来自第一客户端的连接测试包为陌生连接测试包,并将第一客户端的访问地址拉黑,所以,为了避免该第二网关拉黑第一客户端的访问地址,并使得该第一网关存储该第二客户端的访问地址,该第一网关可为该连接测试包设置目标路由次数,以使得该连接测试包从该第一客户端出发,恰好到达第一网关即停止转发。
在一个实施例中,所述目标路由次数用于指示所述连接测试包从所述第一客户端出发,并到达所述第一网关经过的内网网关的个数,且每到达一个内网网关,所述目标路由次数则执行减一处理,当该目标路由次数执行减一处理,并到达0时,则停止转发连接数据包。如图3a所示,该第一客户端为如图3a中30标记的客户端,第一网关为如图3a中由34标记的网关,图3a中由31,32和33标记的网关则均为内网网关,那么该第一客户端30在为第一网关34发送连接测试包时,则可先确定需要经过的内网网关的个数,若该第一客户端30所需经过的内网网关的个数为3个,则该第一客户端为连接测试包所设置的目标路由次数则为4,使得该第一客户端30可将连接测试包恰好发送到第一网关34,该第一网关34在接收到该连接测试包后,该目标路由次数将减为0,则该第一网关在接收到该连接测试包后,基于该连接测试包的包头文件可确定出该第二网关的访问地址,并在存储该第二网关的访问地址后,直接丢弃该连接测试包。
在一个实施例中,第一网关在存储该第二客户端的访问地址后,如果接收到该第一客户端发送到第二客户端的连接数据包,其中,该连接数据包用于指示在第一客户端和第二客户端之间建立通信连接,该第一网关在接收到该第一客户端发送到第二客户端的连接数据包后,可先判断第二网关是否已存储该第一客户端的访问地址,其中,第一网关可通过获取该第二网关发送的地址存储通知消息,判断该第二网关是否已存储该第一客户端的访问地址。在一个实施例中,若该第一网关接收到该第二网关发送的地址存储通知消息,则可确定该第二网关已存储该第一客户端的访问地址,而如果该第一网关未接收到该第二网关发送的地址存储通知消息,则可确定该第二网关未存储该第一客户端的访问地址,其中,所述地址存储通知消息是所述第二网关在存储了所述第一客户端的访问地址后发送的。如果该第一网关确定接收到该第二网关发送的地址存储通知消息,则可通过该第二网关将获取的连接数据包发送给第二客户端,以使得该第一客户端和该第二客户端基于该连接数据包建立通信连接。
在该第一客户端和该第二客户端基于该连接数据包建立通信连接时,该第一网关在通过第二网关将该连接数据包发送到第二客户端后,该第二客户端可在确定接收到该连接数据包后,向第一客户端发送确认接收到该连接数据包的确认消息,至此,该第一客户端和第二客户端完成通信连接。需要说明的是,也可由该第二网关发起第一客户端和第二客户端的通信连接的创建,即是在第二网关存储该第一客户端的访问地址后,从第一网关接收该第一网关已存储该第二客户端的访问地址的通知消息,并进一步将指示在第一客户端和第二客户端之间建立通信连接的连接数据包发送到第一客户端,从而使得第一客户端和第二客户端基于该连接数据包建立通信连接。
在本发明实施例中,第一网关可在确定需要在第一客户端和第二客户端之间建立通信连接时,接收该第一客户端发送的连接测试包,从而基于该连接测试的包头文件得到该第二客户端的访问地址,并存储该第二客户端的访问地址,进一步地,该第一网关可确定该第二网关也已存储第一客户端的访问地址时,将第一客户端发送到第二客户端的连接数据包,通过第二网关发送到第二客户端,以使得该第一客户端和该第二客户端之间可基于该连接数据包建立通信连接。由于该第一网关和第二网关中已预先存储了对方客户端的访问地址,因此,连接数据包可顺利通过该第一网关和第二网关进行转发,从而可在第一客户端和第二客户端之间建立通信连接,并由于该连接数据包被第一网关或第二网关丢弃的概率较低,也就可以提升在第一客户端和第二客户端之间建立通信连接的成功率。
在一个实施例中,将采用本发明实施例提出用于实现在第一客户端和第二客户端之间建立通信连接的数据处理方法,和现有的建立第一客户端和第二客户端之间通信连接的方法相比,如图3b所示,若采用现有技术建立第一客户端和第二客户端的通信连接,如图3b中由301标记的测试结果可知,使得该第一客户端和该第二客户端成功建立通信连接的概率仅为33%,而采用本发明实施例提出的方法成功建立第一客户端和第二客户端的通信连接的概率则为94%,由此可见,采用本发明实施例提出的数据处理方法,可有效提升第一客户端和第二客户端建立通信连接的成功率。此外,如图3c所示,本发明实施例提出的数据处理方法,还可应用在该第一客户端和第二客户端的网关均为动态NAT时,在该第一客户端和第二客户端之间建立通信连接,且成功建立通信连接的概率为99%,由此可见,采用本发明实施例提出的数据处理方法,可有效提升为第一客户端和第二客户端建立通信连接的成功率。
请参见图4,是本发明实施例提出的一种数据处理方法的示意流程图,该方法可应用在上述的第一客户端中,如图4所示,该方法可包括:
S401,当需要在第一客户端与第二客户端之间建立通信连接时,将连接测试包发送给第一网关,所述连接测试包携带所述第二客户端的访问地址,以使所述第一网关确定所述连接测试包携带的所述第二客户端的访问地址,并存储所述第二客户端的访问地址。
在一个实施例中,第一客户端在将连接测试包发送给第一网关时,可先通过代理服务器获取所述第二客户端的访问地址,所述第二客户端的访问地址是所述第二客户端采用网络穿透协议确定并发送到所述代理服务器的,在获取到该第二客户端的访问地址后,该第一客户端则可将所述第二客户端的访问地址添加到连接测试包中,并将添加了所述第二客户端的访问地址的连接测试包发送给所述第一网关,其中,该第一客户端属于所述第一私有网络,所述第二客户端属于所述第二私有网络,该第一私有网络设有所述第一网关,所述第二私有网络设有第二网关,即可以理解,该第一客户端通过该第一网关和公有网络进行通信连接,该第二客户端通过该第二网关和公有网络进行通信连接。
同样的,该第二客户端也在该第一客户端与第二客户端需要建立通信连接时,将包括了第一客户端的访问地址的连接测试包发送给第二网关,以使得该第二网关基于连接测试包确定存储该第一客户端的访问地址,从而使得该第一网关和第二网关均实现对对方客户端的访问地址的存储。在一个实施例中,第一客户端在向第一网关发送连接测试包时,该第一客户端可先确定目标路由次数,所述目标路由次数用于指示所述连接测试包从所述第一客户端出发,并到达所述第一网关经过的内网网关的个数,在该第一客户端确定出该目标路由次数后,可将所述目标路由次数添加到所述连接测试包中,其中,所述连接测试包每到达一个内网网关,所述目标路由次数则执行减一处理,在所述目标路由次数执行减一处理并取得目标值时到达所述第一网关,其中,该目标值例如可以是0。
任一数据包从所述第一客户端出发,并到达所述第一客户端的第一网关至少经过一个内网网关,该第一客户端在为该连接测试包设置目标路由次数时,可先为连接请求包设置初始路由次数,并根据所述初始路由次数将所述连接请求包发送到目标网关,其中,该连接请求包为一个数据包;进一步地,该第一客户端可从所述目标网关中获取所述目标网关的网关地址,并判断所述网关地址是否为所述第一客户端的访问地址;若确定所述网关地址为所述第一客户端的访问地址,则将所述初始路由次数作为所述目标路由次数。在一个实施例中,若第一客户端确定所述网关地址不是所述第一客户端的访问地址,则对所述初始路由次数执行加一处理;按照加一处理后的初始路由次数转发所述连接请求包,直至获取到所述第一客户端的访问地址,并确定获取到所述第一客户端的访问地址时执行的加一处理的次数;根据执行的加一处理的次数更新所述初始路由次数,并将更新后的初始路由次数作为所述目标路由次数。
具体地,如图5所示,该第一客户端先为该连接请求包设置的路由次数用于指示该连接请求包的存活时间(TTL),若为该连接请求包设置的初始路由次数为1,即TTL=1,那从该第一客户端出发,该连接请求包仅能到达内网网关1,对应的,该第一客户端可从内网网关1中获取到该内网网关1的网关地址1,该网关地址1是该内网网关1确定接收到该连接请求包后反馈给第一客户端的,该第一客户端获取到该网关地址1后,可将该网关地址1和该第一客户端的访问地址进行匹配,由于该网关地址1和该第一客户端的访问地址不同,那么第一客户端确定在目标路由次数为1时,无法将连接请求包发送到连接公有网络的第一网关。进而对该初始路由次数执行加一处理,得到初始路由次数为2,即TTL=2,那么从该第一客户端出发,每经过一个内网网关,该初始路由次数(即TTL)将进行减一处理,那么可知在TTL=2时,该第一客户端可将该连接请求包发送给内网网关2,并获取到由内网网关2反馈的网关地址2,由于该第一客户端确定该网关地址2依然不是该第一客户端的访问地址,则进一步对该初始路由次数进行加一处理,此时的初始路由次数为3,即TTL=3,那么从该第一客户端出发在TTL=3时,该第一客户端可将该连接请求包发送给第一网关,并获取到由第一网关反馈的该第一网关的的网关地址3,由于该第一网关的网关地址3为该第一客户端的访问地址,则第一客户端确定到达第一客户端的第一网关的目标路由次数为3。
S402,若已接收到所述第二网关发送的地址存储通知消息,则将发送至所述第二客户端的连接数据包发送给所述第一网关,以使所述第一网关通过所述第二网关将所述连接数据包发送至所述第二客户端,从而使得所述第一客户端和所述第二客户端根据所述连接数据包建立通信连接。
在一个实施例中,该第一客户端将连接测试包发送给第一网关,以使该第一网关存储第二客户端的访问地址后,该第一客户端可通过是否接收到第二网关发送的地址存储通知消息,确定出该第二网关是否存储该第一客户端的访问地址,其中,所述地址存储通知消息是所述第二网关在存储了所述第一客户端的访问地址后发送的。如果该第一客户端确定已接收到该第二网关发送的地址存储通知消息,则可将需要发送给第二客户端的连接数据包发送给第一网关,以使得该第一网关将该连接数据包转发给第二网关,并最后使得第二客户端接收到该连接数据包,从而使得该第一客户端和该第二客户端基于该连接数据包建立通信连接。
在本发明实施例中,第一客户端在需要第一客户端和第二客户端之间建立通信连接时,可将携带有第二客户端的访问地址的连接测试包发送给第一网关,以使该第一网关从该连接测试包获取到该第二客户端的访问地址,并存储该第二客户端的访问地址,从而将第二客户端的访问地址存储到该第一网关中,进一步地,若第一客户端确定第二网关也已存储该第一客户端的访问地址,则可将连接数据包通过该第一网关和第二网关发送到第二客户端,以使得该连接数据包可顺利通过该第一网关和第二网关,并到达第二客户端,使得第一客户端和第二客户端实现基于该连接数据包建立通信连接,并提升了在第一客户端和第二客户端之间创建通信连接的成功率。
基于上述数据处理方法实施例的描述,本发明实施例还提出了一种数据处理装置,该数据处理装置可以是运行于上述第一网关中的一个计算机程序(包括程序代码)。该数据处理装置可用于执行如图2所述的数据处理方法,请参见图6,该数据处理装置包括:接收单元601,确定单元602,存储单元603和发送单元604。
接收单元601,用于当需要在第一客户端与第二客户端之间建立通信连接时,接收所述第一客户端发送的连接测试包,所述连接测试包中携带所述第二客户端的访问地址;所述第一客户端属于第一私有网络,所述第二客户端属于第二私有网络,所述第一私有网络设有第一网关,所述第二私有网络设有第二网关;
确定单元602,用于确定所述连接测试包携带的所述第二客户端的访问地址;
存储单元603,用于存储所述第二客户端的访问地址;
发送单元604,用于当接收到所述第一客户端发送至所述第二客户端的连接数据包时,若已接收到所述第二网关发送的地址存储通知消息,则通过所述第二网关将所述连接数据包发送至所述第二客户端,以使得所述第一客户端和所述第二客户端根据所述连接数据包建立通信连接;其中,所述地址存储通知消息是所述第二网关在存储了所述第一客户端的访问地址后发送的。
在一个实施例中,所述第二客户端的访问地址是所述第二客户端采用网络穿透协议确定的;
所述第二客户端用于在确定出所述第二客户端的访问地址后,通过代理服务器将所述第二客户端的访问地址发送给所述第一客户端;
所述第一客户端用于接收所述第二客户端的访问地址,并将所述第二客户端的访问地址添加到所述连接测试包中,以及将添加了所述第二客户端的访问地址的连接测试包发送给所述第一网关。
在一个实施例中,所述第一网关和所述第二网关均为外网网关;
所述外网网关部署有网络地址转换协议,所述网络地址转换协议用于将客户端访问私有网络时的客户端地址转换为进行公有网络访问的访问地址;
其中,在所述第一客户端访问公有网络时,所述第一网关将所述第一客户端访问所述第一私有网络的客户端地址转换为所述第一客户端的访问地址;所述第二客户端访问所述公有网络时,所述第二网关将所述第二客户端访问所述第二私有网络的客户端地址转换为所述第二客户端的访问地址。
在一个实施例中,所述确定单元602,还用于确定所述第一网关中网络地址转换协议的第一协议类型,以及所述第二网关中网络地址转换协议的第二协议类型;
所述接收单元601,还用于若所述第一协议类型和所述第二协议类型均属于动态类型,则触发执行接收所述第一客户端发送的连接测试包的步骤。
在一个实施例中,所述第一客户端为所述连接测试包设置有目标路由次数,所述目标路由次数用于指示所述连接测试包从所述第一客户端出发,并到达所述第一网关经过的内网网关的个数。
在本发明实施例中,接收单元601可在确定需要在第一客户端和第二客户端之间建立通信连接时,接收该第一客户端发送的连接测试包,从而该确定单元602基于该连接测试的包头文件得到该第二客户端的访问地址,使得存储单元603存储该第二客户端的访问地址,进一步地,确定单元602可确定该第二网关也已存储第一客户端的访问地址时,发送单元604将第一客户端发送到第二客户端的连接数据包,通过第二网关发送到第二客户端,以使得该第一客户端和该第二客户端之间可基于该连接数据包建立通信连接。由于该第一网关和第二网关中已预先存储了对方客户端的访问地址,因此,连接数据包可顺利通过该第一网关和第二网关进行转发,从而可在第一客户端和第二客户端之间建立通信连接,并由于该连接数据包被第一网关或第二网关丢弃的概率较低,也就可以提升在第一客户端和第二客户端之间建立通信连接的成功率。
基于上述数据处理方法实施例的描述,本发明实施例还提出了一种数据处理装置,该数据处理装置可以是运行于上述第一客户端中的一个计算机程序(包括程序代码)。该数据处理装置可用于执行如图4所述的数据处理方法,请参见图7,该数据处理装置包括:发送单元701。
发送单元701,用于当需要在第一客户端与第二客户端之间建立通信连接时,将连接测试包发送给第一网关,所述连接测试包携带所述第二客户端的访问地址,以使所述第一网关确定所述连接测试包携带的所述第二客户端的访问地址,并存储所述第二客户端的访问地址;所述第一客户端属于第一私有网络,所述第二客户端属于第二私有网络,所述第一私有网络设有所述第一网关,所述第二私有网络设有第二网关;
所述发送单701,还用于若已接收到所述第二网关发送的地址存储通知消息,则将发送至所述第二客户端的连接数据包发送给所述第一网关,以使所述第一网关通过所述第二网关将所述连接数据包发送至所述第二客户端,从而使得所述第一客户端和所述第二客户端根据所述连接数据包建立通信连接;其中,所述地址存储通知消息是所述第二网关在存储了所述第一客户端的访问地址后发送的。
在一个实施例中,所述发送单元701,具体用于:
通过代理服务器获取所述第二客户端的访问地址,所述第二客户端的访问地址是所述第二客户端采用网络穿透协议确定并发送到所述代理服务器的;
将所述第二客户端的访问地址添加到连接测试包中,并将添加了所述第二客户端的访问地址的连接测试包发送给第一网关。
在一个实施例中,所述装置还包括:确定单元702和添加单元703。
确定单元702,用于确定目标路由次数,所述目标路由次数用于指示所述连接测试包从所述第一客户端出发,并到达所述第一网关经过的内网网关的个数;
添加单元703,用于将所述目标路由次数添加到所述连接测试包中,其中,所述连接测试包每到达一个内网网关,所述目标路由次数则执行减一处理,所述连接测试包在所述目标路由次数执行减一处理后取得目标值时到达所述第一网关。
在一个实施例中,任一数据包从所述第一客户端出发,并到达所述第一客户端的第一网关至少经过一个内网网关,所述装置还包括:设置单元704和判断单元705。
设置单元704,用于为连接请求包设置初始路由次数,并根据所述初始路由次数将所述连接请求包发送到目标网关,所述连接请求包为一个数据包;
判断单元705,用于从所述目标网关中获取所述目标网关的网关地址,并判断所述网关地址是否为所述第一客户端的访问地址;
所述确定单元702,还用于若确定所述网关地址为所述第一客户端的访问地址,则将所述初始路由次数作为所述目标路由次数。
在一个实施例中,所述装置还包括:执行单元706和更新单元707。
所述执行单元706,用于若确定所述网关地址不是所述第一客户端的访问地址,则对所述初始路由次数执行加一处理;
所述发送单元701,还用于按照加一处理后的初始路由次数转发所述连接请求包,直至获取到所述第一客户端的访问地址,并确定获取到所述第一客户端的访问地址时执行的加一处理的次数;
更新单元707,用于根据执行的加一处理的次数更新所述初始路由次数,并将更新后的初始路由次数作为所述目标路由次数。
在本发明实施例中,在需要第一客户端和第二客户端之间建立通信连接时,发送单元701可将携带有第二客户端的访问地址的连接测试包发送给第一网关,以使该第一网关从该连接测试包获取到该第二客户端的访问地址,并存储该第二客户端的访问地址,从而将第二客户端的访问地址存储到该第一网关中,进一步地,确定第二网关也已存储该第一客户端的访问地址,则发送单元701可将连接数据包通过该第一网关和第二网关发送到第二客户端,以使得该连接数据包可顺利通过该第一网关和第二网关,并到达第二客户端,使得第一客户端和第二客户端实现基于该连接数据包建立通信连接,并提升了在第一客户端和第二客户端之间创建通信连接的成功率。
请参见图8,是本发明实施例提供的一种网关设备的结构示意性框图,其中,该网关设备为上述的第一网关,其中,该网关设备可以是服务器,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。或者,该网关设备也可以是终端设备。如图8所示的本实施例中的网关设备可包括:一个或多个处理器801;一个或多个输入设备802,一个或多个输出设备803和存储器804。上述处理器801、输入设备802、输出设备803和存储器804通过总线805连接。存储器804用于存储计算机程序,所述计算机程序包括程序指令,处理器801 用于执行所述存储器804存储的程序指令。
所述存储器804可以包括易失性存储器(volatile memory),如随机存取存储器(random-access memory,RAM);存储器804也可以包括非易失性存储器(non-volatilememory),如快闪存储器(flash memory),固态硬盘(solid-state drive,SSD)等;存储器804还可以包括上述种类的存储器的组合。
所述处理器801可以是中央处理器(central processing unit,CPU)。所述处理器801还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)等。该PLD可以是现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)等。所述处理器801也可以为上述结构的组合。
本发明实施例中,所述存储器804用于存储计算机程序,所述计算机程序包括程序指令,处理器801用于执行存储器804存储的程序指令,用来实现上述如图2中相应方法的步骤。
在一个实施例中,所述处理器801被配置调用所述程序指令,用于执行:
当需要在第一客户端与第二客户端之间建立通信连接时,接收所述第一客户端发送的连接测试包,所述连接测试包中携带所述第二客户端的访问地址;所述第一客户端属于第一私有网络,所述第二客户端属于第二私有网络,所述第一私有网络设有第一网关,所述第二私有网络设有第二网关;
确定所述连接测试包携带的所述第二客户端的访问地址,并存储所述第二客户端的访问地址;
当接收到所述第一客户端发送至所述第二客户端的连接数据包时,若已接收到所述第二网关发送的地址存储通知消息,则通过所述第二网关将所述连接数据包发送至所述第二客户端,以使得所述第一客户端和所述第二客户端根据所述连接数据包建立通信连接;其中,所述地址存储通知消息是所述第二网关在存储了所述第一客户端的访问地址后发送的。
在一个实施例中,所述第二客户端的访问地址是所述第二客户端采用网络穿透协议确定的;
所述第二客户端用于在确定出所述第二客户端的访问地址后,通过代理服务器将所述第二客户端的访问地址发送给所述第一客户端;
所述第一客户端用于接收所述第二客户端的访问地址,并将所述第二客户端的访问地址添加到所述连接测试包中,以及将添加了所述第二客户端的访问地址的连接测试包发送给所述第一网关。
在一个实施例中,所述第一网关和所述第二网关均为外网网关;
所述外网网关部署有网络地址转换协议,所述网络地址转换协议用于将客户端访问私有网络时的客户端地址转换为进行公有网络访问的访问地址;
其中,在所述第一客户端访问公有网络时,所述第一网关将所述第一客户端访问所述第一私有网络的客户端地址转换为所述第一客户端的访问地址;所述第二客户端访问所述公有网络时,所述第二网关将所述第二客户端访问所述第二私有网络的客户端地址转换为所述第二客户端的访问地址。
在一个实施例中,所述处理器801被配置调用所述程序指令,用于执行:
确定所述第一网关中网络地址转换协议的第一协议类型,以及所述第二网关中网络地址转换协议的第二协议类型;
若所述第一协议类型和所述第二协议类型均属于动态类型,则触发执行从所述第一客户端获取连接测试包的步骤。
在一个实施例中,所述第一客户端为所述连接测试包设置有目标路由次数,所述目标路由次数用于指示所述连接测试包从所述第一客户端出发,并到达所述第一网关经过的内网网关的个数。
请参见图9,是本发明实施例提供的一种终端设备的结构示意性框图,该终端设备为上述的第一客户端。如图9所示的本实施例中的终端设备可包括:一个或多个处理器901;一个或多个输入设备902,一个或多个输出设备903和存储器904。上述处理器901、输入设备902、输出设备903和存储器904通过总线905连接。存储器904用于存储计算机程序,所述计算机程序包括程序指令,处理器901 用于执行所述存储器904存储的程序指令。
所述存储器904可以包括易失性存储器(volatile memory),如随机存取存储器(random-access memory,RAM);存储器904也可以包括非易失性存储器(non-volatilememory),如快闪存储器(flash memory),固态硬盘(solid-state drive,SSD)等;存储器904还可以包括上述种类的存储器的组合。
所述处理器901可以是中央处理器(central processing unit,CPU)。所述处理器901还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)等。该PLD可以是现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)等。所述处理器901也可以为上述结构的组合。
本发明实施例中,所述存储器904用于存储计算机程序,所述计算机程序包括程序指令,处理器901用于执行存储器904存储的程序指令,用来实现上述如图4中相应方法的步骤。
在一个实施例中,所述处理器901被配置调用所述程序指令,用于执行:
当需要在第一客户端与第二客户端之间建立通信连接时,将连接测试包发送给第一网关,所述连接测试包携带所述第二客户端的访问地址,以使所述第一网关确定所述连接测试包携带的所述第二客户端的访问地址,并存储所述第二客户端的访问地址;所述第一客户端属于第一私有网络,所述第二客户端属于第二私有网络,所述第一私有网络设有所述第一网关,所述第二私有网络设有第二网关;
若已接收到所述第二网关发送的地址存储通知消息,则将发送至所述第二客户端的连接数据包发送给所述第一网关,以使所述第一网关通过所述第二网关将所述连接数据包发送至所述第二客户端,从而使得所述第一客户端和所述第二客户端根据所述连接数据包建立通信连接;其中,所述地址存储通知消息是所述第二网关在存储了所述第一客户端的访问地址后发送的。
在一个实施例中,所述处理器901被配置调用所述程序指令,用于执行:
通过代理服务器获取所述第二客户端的访问地址,所述第二客户端的访问地址是所述第二客户端采用网络穿透协议确定并发送到所述代理服务器的;
将所述第二客户端的访问地址添加到连接测试包中,并将添加了所述第二客户端的访问地址的连接测试包发送给第一网关。
在一个实施例中,所述处理器901被配置调用所述程序指令,用于执行:
确定目标路由次数,所述目标路由次数用于指示所述连接测试包从所述第一客户端出发,并到达所述第一网关经过的内网网关的个数;
将所述目标路由次数添加到所述连接测试包中,其中,所述连接测试包每到达一个内网网关,所述目标路由次数则执行减一处理,所述连接测试包在所述目标路由次数执行减一处理后取得目标值时到达所述第一网关。
在一个实施例中,任一数据包从所述第一客户端出发,并到达所述第一客户端的第一网关至少经过一个内网网关,所述处理器901被配置调用所述程序指令,用于执行:
为连接请求包设置初始路由次数,并根据所述初始路由次数将所述连接请求包发送到目标网关,所述连接请求包为一个数据包;
从所述目标网关中获取所述目标网关的网关地址,并判断所述网关地址是否为所述第一客户端的访问地址;
若确定所述网关地址为所述第一客户端的访问地址,则将所述初始路由次数作为所述目标路由次数。
在一个实施例中,所述处理器901被配置调用所述程序指令,用于执行:
若确定所述网关地址不是所述第一客户端的访问地址,则对所述初始路由次数执行加一处理;
按照加一处理后的初始路由次数转发所述连接请求包,直至获取到所述第一客户端的访问地址,并确定获取到所述第一客户端的访问地址时执行的加一处理的次数;
根据执行的加一处理的次数更新所述初始路由次数,并将更新后的初始路由次数作为所述目标路由次数。
本发明实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述如图2或图4所示的方法实施例。其中,所述的计算机可读存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明的局部实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或局部流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。

Claims (15)

1.一种数据处理方法,其特征在于,所述方法包括:
当需要在第一客户端与第二客户端之间建立通信连接时,接收所述第一客户端发送的连接测试包,所述连接测试包中携带所述第二客户端的访问地址;所述第一客户端属于第一私有网络,所述第二客户端属于第二私有网络,所述第一私有网络设有第一网关,所述第二私有网络设有第二网关;
确定所述连接测试包携带的所述第二客户端的访问地址,并存储所述第二客户端的访问地址;
当接收到所述第一客户端发送至所述第二客户端的连接数据包时,若已接收到所述第二网关发送的地址存储通知消息,则通过所述第二网关将所述连接数据包发送至所述第二客户端,以使得所述第一客户端和所述第二客户端根据所述连接数据包建立通信连接;其中,所述地址存储通知消息是所述第二网关在存储了所述第一客户端的访问地址后发送的。
2.根据权利要求1所述的方法,其特征在于,所述第二客户端的访问地址是所述第二客户端采用网络穿透协议确定的;
所述第二客户端用于在确定出所述第二客户端的访问地址后,通过代理服务器将所述第二客户端的访问地址发送给所述第一客户端;
所述第一客户端用于接收所述第二客户端的访问地址,并将所述第二客户端的访问地址添加到所述连接测试包中,以及将添加了所述第二客户端的访问地址的连接测试包发送给所述第一网关。
3.根据权利要求1所述的方法,其特征在于,所述第一网关和所述第二网关均为外网网关;
所述外网网关部署有网络地址转换协议,所述网络地址转换协议用于将客户端访问私有网络时的客户端地址转换为进行公有网络访问的访问地址;
其中,在所述第一客户端访问公有网络时,所述第一网关将所述第一客户端访问所述第一私有网络的客户端地址转换为所述第一客户端的访问地址;所述第二客户端访问所述公有网络时,所述第二网关将所述第二客户端访问所述第二私有网络的客户端地址转换为所述第二客户端的访问地址。
4.根据权利要求3所述的方法,其特征在于,所述接收所述第一客户端发送的连接测试包之前,所述方法还包括:
确定所述第一网关中网络地址转换协议的第一协议类型,以及所述第二网关中网络地址转换协议的第二协议类型;
若所述第一协议类型和所述第二协议类型均属于动态类型,则触发执行接收所述第一客户端发送的连接测试包的步骤。
5.根据权利要求1所述的方法,其特征在于,所述第一客户端为所述连接测试包设置有目标路由次数,所述目标路由次数用于指示所述连接测试包从所述第一客户端出发,并到达所述第一网关经过的内网网关的个数。
6.一种数据处理方法,其特征在于,包括:
当需要在第一客户端与第二客户端之间建立通信连接时,将连接测试包发送给第一网关,所述连接测试包携带所述第二客户端的访问地址,以使所述第一网关确定所述连接测试包携带的所述第二客户端的访问地址,并存储所述第二客户端的访问地址;所述第一客户端属于第一私有网络,所述第二客户端属于第二私有网络,所述第一私有网络设有所述第一网关,所述第二私有网络设有第二网关;
若已接收到所述第二网关发送的地址存储通知消息,则将发送至所述第二客户端的连接数据包发送给所述第一网关,以使所述第一网关通过所述第二网关将所述连接数据包发送至所述第二客户端,从而使得所述第一客户端和所述第二客户端根据所述连接数据包建立通信连接;其中,所述地址存储通知消息是所述第二网关在存储了所述第一客户端的访问地址后发送的。
7.根据权利要求6所述的方法,其特征在于,所述将连接测试包发送给第一网关,包括:
通过代理服务器获取所述第二客户端的访问地址,所述第二客户端的访问地址是所述第二客户端采用网络穿透协议确定并发送到所述代理服务器的;
将所述第二客户端的访问地址添加到连接测试包中,并将添加了所述第二客户端的访问地址的连接测试包发送给第一网关。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
确定目标路由次数,所述目标路由次数用于指示所述连接测试包从所述第一客户端出发,并到达所述第一网关经过的内网网关的个数;
将所述目标路由次数添加到所述连接测试包中,其中,所述连接测试包每到达一个内网网关,所述目标路由次数则执行减一处理,所述连接测试包在所述目标路由次数执行减一处理后取得目标值时到达所述第一网关。
9.根据权利要求8所述的方法,其特征在于,任一数据包从所述第一客户端出发,并到达所述第一客户端的第一网关至少经过一个内网网关,所述方法还包括:
为连接请求包设置初始路由次数,并根据所述初始路由次数将所述连接请求包发送到目标网关,所述连接请求包为一个数据包;
从所述目标网关中获取所述目标网关的网关地址,并判断所述网关地址是否为所述第一客户端的访问地址;
若确定所述网关地址为所述第一客户端的访问地址,则将所述初始路由次数作为所述目标路由次数。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
若确定所述网关地址不是所述第一客户端的访问地址,则对所述初始路由次数执行加一处理;
按照加一处理后的初始路由次数转发所述连接请求包,直至获取到所述第一客户端的访问地址,并将获取到所述第一客户端的访问地址时的初始路由次数作为所述目标路由次数。
11.一种数据处理装置,其特征在于,所述装置包括:
接收单元,用于当需要在第一客户端与第二客户端之间建立通信连接时,接收所述第一客户端发送的连接测试包,所述连接测试包中携带所述第二客户端的访问地址;所述第一客户端属于第一私有网络,所述第二客户端属于第二私有网络,所述第一私有网络设有第一网关,所述第二私有网络设有第二网关;
确定单元,用于确定所述连接测试包携带的所述第二客户端的访问地址;
存储单元,用于存储所述第二客户端的访问地址;
发送单元,用于当接收到所述第一客户端发送至所述第二客户端的连接数据包时,若已接收到所述第二网关发送的地址存储通知消息,则通过所述第二网关将所述连接数据包发送至所述第二客户端,以使得所述第一客户端和所述第二客户端根据所述连接数据包建立通信连接;其中,所述地址存储通知消息是所述第二网关在存储了所述第一客户端的访问地址后发送的。
12.一种数据处理装置,其特征在于,所述装置包括:
发送单元,用于当需要在第一客户端与第二客户端之间建立通信连接时,将连接测试包发送给第一网关,所述连接测试包携带所述第二客户端的访问地址,以使所述第一网关确定所述连接测试包携带的所述第二客户端的访问地址,并存储所述第二客户端的访问地址;所述第一客户端属于第一私有网络,所述第二客户端属于第二私有网络,所述第一私有网络设有所述第一网关,所述第二私有网络设有第二网关;
所述发送单元,还用于若已接收到所述第二网关发送的地址存储通知消息,则将发送至所述第二客户端的连接数据包发送给所述第一网关,以使所述第一网关通过所述第二网关将所述连接数据包发送至所述第二客户端,从而使得所述第一客户端和所述第二客户端根据所述连接数据包建立通信连接;其中,所述地址存储通知消息是所述第二网关在存储了所述第一客户端的访问地址后发送的。
13.一种网关设备,其特征在于,包括处理器、输入设备、输出设备和存储器,所述处理器、所述输入设备、所述输出设备和所述存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1~5任一项所述的方法。
14.一种终端设备,其特征在于,包括处理器、输入设备、输出设备和存储器,所述处理器、所述输入设备、所述输出设备和所述存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求6~10任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括第一程序指令和第二程序指令,所述第一程序指令当被处理器执行时使所述处理器执行如权利要求1~5任一项所述的方法,所述第二程序指令当被处理器执行时使所述处理器执行如权利要求6~10任一项所述的方法。
HK42021025382.9A 2021-02-08 数据处理方法、装置、相关设备及存储介质 HK40036282B (zh)

Publications (2)

Publication Number Publication Date
HK40036282A HK40036282A (zh) 2021-05-28
HK40036282B true HK40036282B (zh) 2021-09-10

Family

ID=

Similar Documents

Publication Publication Date Title
US10630730B2 (en) NAT traversal for media conferencing
US8689307B2 (en) System and method for providing a virtual peer-to-peer environment
CN111294399B (zh) 一种数据传输方法和装置
US20080215669A1 (en) System and Method for Peer-to-Peer Connection of Clients Behind Symmetric Firewalls
US20250310231A1 (en) Data processing method and apparatus, related device, and storage medium
US20090147795A1 (en) TCP Traversal Through Network Address Translators (NATS)
CN112073545B (zh) 使用dns来传送服务器设备的mp-tcp能力
WO2024021714A1 (zh) 一种网络地址转换nat穿越的方法、设备和系统
CN104683493A (zh) 穿透网络地址转换的方法与连线中介系统
Srirama et al. Tcp hole punching approach to address devices in mobile networks
JP6293902B2 (ja) ブラウザ発信プロシージャのためのモバイルデバイスベースのプロキシ
HK40036282A (zh) 数据处理方法、装置、相关设备及存储介质
HK40036282B (zh) 数据处理方法、装置、相关设备及存储介质
CN112019641B (zh) 数据传输方法和装置
US20190141009A1 (en) Session moderator for turn-pattern tcp-packet relay with websocket instantiation
CN115883644A (zh) 一种信息处理方法及装置、存储介质
CN114466008B (zh) 一种云边通信系统、方法、装置、电子设备及存储介质
Abela How the Internet Works
Cohrs Implementation and Evaluation of the Peer-to-Peer-Protocol (P2PP) for P2PSIP
CN118764461A (zh) 网络地址转换类型的确定方法、装置及电子设备
HK40035471A (zh) 数据传输方法和装置
HK40035471B (zh) 数据传输方法和装置