CN113676542B - 一种连接建立方法、系统及装置 - Google Patents
一种连接建立方法、系统及装置 Download PDFInfo
- Publication number
- CN113676542B CN113676542B CN202110970961.5A CN202110970961A CN113676542B CN 113676542 B CN113676542 B CN 113676542B CN 202110970961 A CN202110970961 A CN 202110970961A CN 113676542 B CN113676542 B CN 113676542B
- Authority
- CN
- China
- Prior art keywords
- client
- data packet
- network address
- public network
- address
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 78
- 230000004044 response Effects 0.000 claims abstract description 108
- 238000013507 mapping Methods 0.000 claims description 84
- 238000004891 communication Methods 0.000 claims description 43
- 238000013519 translation Methods 0.000 claims description 25
- 238000007619 statistical method Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 18
- 238000001514 detection method Methods 0.000 claims description 13
- 239000000523 sample Substances 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 14
- 230000035515 penetration Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 101000927946 Homo sapiens LisH domain-containing protein ARMC9 Proteins 0.000 description 6
- 102100036882 LisH domain-containing protein ARMC9 Human genes 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000011664 signaling Effects 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种连接建立方法、系统及装置,应用于第一客户端,上述方法包括:通过服务器向第二客户端发送第一客户端连接的第一网络设备的第一公网地址,并通过服务器获得第二客户端连接的第二网络设备的第二公网地址;确定大于第一路由数且小于第二路由数的第三路由数;基于路由数为第三路由数的跳转路径,向第二公网地址发送第一数据包;通过服务器向第二客户端发送第二数据包;在接收到响应包时,实现与第二客户端成功建立连接。应用本发明实施例提供的方案进行建立连接时,能够提高建立连接的成功率。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种连接建立方法、系统及装置。
背景技术
用户对客户端间进行通信的延时要求越来越高,期望达到实时通信,上述客户端间进行通信可以包括用户通过客户端进行语音通话、视频通话等。为此,客户端与客户端之间通常基于穿透行为建立端到端的连接,从而基于所建立的连接实现实时通信。
具体的,当第一客户端连接的网络设备与第二客户端连接的网络设备不同时,第一客户端可以基于第一客户端连接的网络设备的公网地址向第二客户端发送数据包,当第二客户端能够接收到第一客户端发送的数据包时,表示第一客户端成功穿透第二客户端连接的网络设备;当第一客户端能够接收到第二客户端发送的数据包时,表示第二客户端成功穿透第一客户端连接的网络设备。当双方客户端均成功穿透对方客户端连接的网络设备时,第一客户端与第二客户端之间能够成功建立端到端的连接,从而第一客户端与第二客户端基于所建立的连接能够进行实时通信。
然而,在第一客户端连接的网络设备和第二客户端连接的网络设备中,假设第一客户端连接的网络设备未记录过表征第一客户端向第二客户端发送过数据包的信息时,若第一客户端连接的网络设备接收到第二客户端发送的数据包,会认为第二客户端正在发起尝试穿透行为。由于当第一客户端连接的网络设备检测到第二客户端正在发起尝试穿透行为时,会对第二客户端的公网地址进行短时间的限制,从而导致双方客户端之间连接建立失败。因此,采用现有技术的方案在建立连接时,导致客户端与客户端之间建立连接的成功率较小。
发明内容
本发明实施例的目的在于提供一种连接建立方法、系统及装置,以提高客户端与客户端之间建立连接的成功率。具体技术方案如下:
第一方面,本发明实施例提供了一种连接建立方法,应用于第一客户端,所述方法包括:
通过服务器向第二客户端发送所述第一客户端连接的第一网络设备的第一公网地址,并通过所述服务器获得所述第二客户端连接的第二网络设备的第二公网地址,其中,所述第一网络设备与所述第二网络设备不同;
确定大于第一路由数且小于第二路由数的第三路由数,其中,所述第一路由数为:所述第一客户端向所述第一公网地址发送数据包时数据包经过的路由数,所述第二路由数为:所述第一客户端向所述第二公网地址发送数据包时数据包所经过的路由数;
基于路由数为所述第三路由数的跳转路径,向所述第二公网地址发送第一数据包,以使得所述第一网络设备根据所述第一数据包中所述第一客户端的地址和所述第二客户端的地址,记录所述第一客户端与第二客户端间的映射关系;
通过所述服务器向所述第二客户端发送第二数据包,以使得所述第一网络设备在接收到所述第二客户端发送的针对所述第二数据包的响应包时,基于所述映射关系向所述第一客户端转发所述响应包;
在接收到所述响应包时,实现与所述第二客户端成功建立连接。
本发明的一个实施例中,上述第一路由数为按照以下步骤获得的路由数:
向所述第一公网地址发送探测包;
获得所述第一网络设备反馈的所述探测包所经过的路由数,作为第一路由数。
本发明的一个实施例中,上述第一路由数为按照以下步骤获得的路由数:
获得所述第一客户端向所述第一公网地址发送数据包时数据包所经过的历史路由数;
对所述历史路由数进行统计分析,根据统计分析结果确定所述第一客户端向所述第一公网地址发送数据包时数据包所经过的路由数,作为第一路由数。
本发明的一个实施例中,上述确定大于所述第一路由数且小于第二路由数的第三路由数,包括:
获得由小于第一差值的各正整数形成的路由数范围,其中,所述第一差值为:所述第二路由数与第一路由数之间的差值;
从所述路由数范围中选择目标路由数;
根据所述目标路由数和所述第一路由数,确定所述第三路由数。
本发明的一个实施例中,所述第一网络设备为网络地址转换NAT设备,
在所述通过服务器向第二客户端发送所述第一客户端连接的第一网络设备的第一公网地址,并通过所述服务器获得所述第二客户端连接的第一网络设备的第二公网地址之前,还包括:
获得所述第一客户端连接的第一网络设备的第一公网地址,基于所述第一公网地址,确定所述第一网络设备的网络地址转换NAT类型;
判断所述NAT类型是否为端口受限类型;
若为是,执行所述通过服务器向第二客户端发送所述第一客户端连接的第一网络设备的第一公网地址,并通过所述服务器获得所述第二客户端连接的第一网络设备的第二公网地址的步骤。
第二方面,本发明实施例提供了一种连接建立方法,应用于第二客户端,所述方法包括:
通过服务器向第一客户端发送所述第二客户端连接的第二网络设备的第二公网地址,并通过所述服务器获得所述第一客户端连接的第一网络设备的第一公网地址,其中,所述第一网络设备与所述第二网络设备不同;
通过所述服务器接收所述第一客户端发送的第一数据包,生成针对所述第一数据包的响应包,向所述第一公网地址发送所述响应包,以使得所述第二网络设备根据所述响应包中所述第一客户端的地址和所述第二客户端的地址,记录所述第一客户端与第二客户端间的映射关系;
在接收到所述第一客户端发送的第二数据包时,实现与所述第一客户端成功建立连接。
本发明的一个实施例中,所述第二网络设备为:网络地址转换NAT设备,
在所述通过服务器向第一客户端发送所述第二客户端连接的第二网络设备的第二公网地址,并通过所述服务器获得所述第一客户端连接的第一网络设备的第一公网地址之前,还包括:
获得所述第二客户端连接的第二网络设备的第二公网地址,基于所述第二公网地址,确定所述第二网络设备的网络地址转换NAT类型;
判断所述NAT类型是否为端口受限类型;
若为是,执行所述通过服务器向第一客户端发送所述第二网络设备的第二公网地址,并通过所述服务器获得所述第一网络设备的第一公网地址的步骤。
第三方面,本发明实施例提供了一种连接建立系统,所述系统包括第一客户端、第二客户端、第一客户端连接的第一网络设备、第二客户端连接的第二网络设备以及服务器;其中,
所述第一客户端,用于通过服务器向所述第二客户端发送所述第一客户端连接的第一网络设备的第一公网地址;
所述第二客户端,用于通过服务器向所述第一客户端发送所述第二客户端连接的第二网络设备的第二公网地址;
所述第一客户端,还用于确定大于第一路由数且小于第二路由数的第三路由数,其中,所述第一路由数为:所述第一客户端向所述第一公网地址发送数据包时数据包经过的路由数,所述第二路由数为:所述第一客户端向所述第二公网地址发送数据包时数据包所经过的路由数;
所述第一客户端,还用于基于路由数为所述第三路由数的跳转路径,向所述第二公网地址发送第一数据包;
所述第一网络设备,用于根据所述第一数据包中所述第一客户端的地址和所述第二客户端的地址,记录所述第一客户端与第二客户端间的映射关系;
所述第一客户端,还用于通过所述服务器向所述第二客户端发送第二数据包;
所述第二客户端,还用于通过所述服务器接收所述第二数据包,生成针对所述第二数据包的响应包,并向所述第一公网地址发送所述响应包;
所述第一网络设备,还用于在接收到所述响应包时,基于所述映射关系向所述第一客户端转发所述响应包;
所述第一客户端,还用于在接收到所述响应包时,实现与所述第二客户端成功建立连接;
所述第二客户端,还用于在接收到所述第一客户端发送的第二数据包的情况下,实现与所述第一客户端成功建立连接。
本发明的一个实施例中,上述第一客户端,还用于向所述第一公网地址发送探测包;获得所述第一网络设备反馈的所述探测包所经过的路由数,作为第一路由数。
本发明的一个实施例中,上述第一客户端,还用于获得所述第一客户端向所述第一公网地址发送数据包时数据包所经过的历史路由数;对所述历史路由数进行统计分析,根据统计分析结果确定所述第一客户端向所述第一公网地址发送数据包时数据包所经过的路由数,作为第一路由数。
本发明的一个实施例中,上述第一客户端,还用于获得由小于第一差值的各正整数形成的路由数范围,其中,所述第一差值为:所述第二路由数与第一路由数之间的差值;从所述路由数范围中选择目标路由数;根据所述目标路由数和所述第一路由数,确定所述第三路由数。
本发明的一个实施例中,所述第一网络设备、第二网络设备为网络地址转换NAT设备,
所述第一客户端,还用于获得所述第一客户端连接的第一网络设备的第一公网地址,基于所述第一公网地址,确定所述第一网络设备的网络地址转换NAT类型;判断所述NAT类型是否为端口受限类型;若为是,执行所述通过服务器向第二客户端发送所述第一客户端连接的第一网络设备的第一公网地址,并通过所述服务器获得所述第二客户端连接的第一网络设备的第二公网地址的步骤;
所述第二客户端,还用于获得所述第二客户端连接的第二网络设备的第二公网地址,基于所述第二公网地址,确定所述第二网络设备的网络地址转换NAT类型;判断所述NAT类型是否为端口受限类型;若为是,执行所述通过服务器向第一客户端发送所述第二网络设备的第二公网地址,并通过所述服务器获得所述第一网络设备的第一公网地址的步骤。
第四方面,本发明实施例提供了一种连接建立装置,应用于第一客户端,所述装置包括:
地址发送和获得模块,用于通过服务器向第二客户端发送所述第一客户端连接的第一网络设备的第一公网地址,并通过所述服务器获得所述第二客户端连接的第二网络设备的第二公网地址,其中,所述第一网络设备与所述第二网络设备不同;
路由数确定模块,用于确定大于所述第一路由数且小于第二路由数的第三路由数,其中,所述第一路由数为:所述第一客户端向所述第一公网地址发送数据包时数据包经过的路由数,所述第二路由数为:所述第一客户端向所述第二公网地址发送数据包时数据包所经过的路由数;
第一数据包发送模块,用于基于路由数为所述第三路由数的跳转路径,向所述第二公网地址发送第一数据包,以使得所述第一网络设备网络设备根据所述第一数据包中所述第一客户端的地址和所述第二客户端的地址,记录所述第一客户端与第二客户端间的映射关系;
第二数据包发送模块,用于通过所述服务器向所述第二客户端发送第二数据包,以使得所述第一网络设备在接收到所述第二客户端发送的针对所述第二数据包的响应包时,基于所述映射关系向所述第一客户端转发所述响应包;
连接建立模块,用于在接收到所述响应包时,实现与所述第二客户端成功建立连接。
本发明的一个实施例中,所述装置还包括:路由数获得模块,
所述路由数获得模块,包括:
探测包发送子模块,用于向所述第一公网地址发送探测包;
第一路由数获得子模块,用于获得所述第一网络设备反馈的所述探测包所经过的路由数,作为第一路由数。
本发明的一个实施例中,所述路由数获得模块,还包括:
历史路由数获得子模块,用于获得所述第一客户端向所述第一公网地址发送数据包时数据包所经过的历史路由数;
第二路由数确定子模块,用于对所述历史路由数进行统计分析,根据统计分析结果确定所述第一客户端向所述第一公网地址发送数据包时数据包所经过的路由数,作为第一路由数。
本发明的一个实施例中,上述路由数确定模块,具体用于获得由小于第一差值的各正整数形成的路由数范围,其中,所述第一差值为:所述第二路由数与第一路由数之间的差值;从所述路由数范围中选择目标路由数;根据所述目标路由数和所述第一路由数,确定所述第三路由数。
本发明的一个实施例中,所述第一网络设备为网络地址转换NAT设备,上述装置还包括:
类型确定模块,用于在上述地址发送和获得模块601之前,获得所述第一客户端连接的第一网络设备的第一公网地址,基于所述第一公网地址,确定所述第一网络设备的网络地址转换NAT类型;
类型判断模块,用于判断所述NAT类型是否为端口受限类型;
若为是,触发所述地址发送和获得模块。
第五方面,本发明实施例提供了一种连接建立装置,应用于第二客户端,所述装置包括:
地址发送和获得模块,用于通过服务器向第一客户端发送所述第二客户端连接的第二网络设备的第二公网地址,并通过所述服务器获得所述第一客户端连接的第一网络设备的第一公网地址,其中,所述第一网络设备与所述第二网络设备不同;
响应包发送模块,用于通过所述服务器接收所述第一客户端发送的第一数据包,生成针对所述第一数据包的响应包,向所述第一公网地址发送所述响应包,以使得所述第二网络设备根据所述响应包中所述第一客户端的地址和所述第二客户端的地址,记录所述第一客户端与第二客户端间的映射关系;
连接建立模块,用于在接收到所述第一客户端发送的第二数据包的情况下,实现与所述第一客户端成功建立连接。
本发明的一个实施例中,所述第二网络设备为:网络地址转换NAT设备,上述装置还包括:
类型确定模块,用于在上述地址发送和获得模块701之前,获得所述第二客户端连接的第二网络设备的第二公网地址,基于所述第二公网地址,确定所述第二网络设备的网络地址转换NAT类型;
类型判断模块,用于判断所述NAT类型是否为端口受限类型;
若为是,触发所述地址发送和获得模块。
第六方面,本发明实施例提供了一种终端设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面所述的方法步骤。
第七方面,本发明实施例提供了一种终端设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第二方面所述的方法步骤。
第八方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法步骤。
第九方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第二方面所述的方法步骤。
由以上可见,应用本发明实施例提供的方案进行连接建立时,一方面,由于第一客户端是基于路由数为第三路由数的跳转路径向第二公网地址发送第一数据包的,又由于上述第三路由数大于第一客户端向第一公网地址发送数据包时数据包所经过的第一路由数,因此,能够使得上述第一数据包到达第一客户端连接的第一网络设备,并且上述第一网络设备会向第二公网地址进行转发,在这一过程中,第一网络设备能够根据第一数据包中第一客户端的地址和第二客户端的地址,记录第一客户端与第二客户端间的映射关系。另一方面,由于第一客户端还通过服务器向第二客户端发送第二数据包,从而使得第二客户端能够主动向第一客户端的公网地址发送针对第二数据包的响应包,又由于第一客户端连接的网络设备记录了第一客户端与第二客户端间的映射关系,那么第一客户端连接的网络设备在接收到第二客户端发送的上述响应包时,能够将上述响应包向第一客户端进行转发,当第一客户端接收到了第二客户端发送的响应包时,第一客户端与第二客户端间成功建立了连接。因此,相较于现有技术,提高了建立连接的成功率。
另外,由于第三路由数小于第一客户端向第二公网地址发送数据包时数据包所经过路由的第二路由数,表示上述第一数据包在到达第二公网地址之前被丢弃的可能性较大,也就是上述第一数据包难以到达第二客户端连接的第二网络设备。这样,当第二网络设备未记录第一客户端与第二客户端间的映射关系时,降低了第一客户端被第二网络设备进行限制的可能性,从而进一步提高了第一客户端与第二客户端建立连接的成功率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种连接建立方法的流程示意图;
图2为本发明实施例提供的一种连接建立场景中设备间的连接关系示意图;
图3为本发明实施例提供的另一种连接建立方法的流程示意图;
图4为本发明实施例提供的一种连接建立系统的结构示意图;
图5为本发明实施例提供的一种连接建立方法的信令图;
图6为本发明实施例提供的一种连接建立装置的结构示意图;
图7为本发明实施例提供的另一种连接建立装置的结构示意图;
图8为本发明实施例提供的一种终端设备的结构示意图;
图9为本发明实施例提供的另一种种终端设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
由于现有技术中存在客户端与客户端之间建立连接的成功率较小的问题,为解决这一技术问题,本发明实施例提供了一种连接建立方法、系统与装置。
参见图1,图1为本发明实施例提供的第一种连接建立方法的流程示意图,应用于第一客户端,上述方法包括以下步骤S101-S105。
S101:通过服务器向第二客户端发送第一客户端连接的第一网络设备的第一公网地址,并通过服务器获得第二客户端连接的第一网络设备的第二公网地址,其中,所述第一网络设备与所述第二网络设备不同;
S102:确定大于第一路由数且小于第二路由数的第三路由数,其中,第一路由数为:第一客户端向第一公网地址发送数据包时数据包经过的路由数,第二路由数为:第一客户端向第二公网地址发送数据包时数据包所经过的路由数;
S103:基于路由数为第三路由数的跳转路径,向第二公网地址发送第一数据包,以使得第一网络设备据所述第一数据包中第一客户端的地址和第二客户端的地址,记录第一客户端与第二客户端间的映射关系;
S104:通过服务器向第二客户端发送第二数据包,以使得第一网络设备在接收到第二客户端发送的针对第二数据包的响应包时,基于映射关系向第一客户端转发响应包;
S105:在接收到响应包时,实现与第二客户端成功建立连接。
由以上可见,应用本发明实施例提供的方案进行连接建立时,一方面,由于第一客户端是基于路由数为第三路由数的跳转路径向第二公网地址发送第一数据包的,又由于上述第三路由数大于第一客户端向第一公网地址发送数据包时数据包所经过的第一路由数,因此,能够使得上述第一数据包到达第一客户端连接的第一网络设备,并且上述第一网络设备会向第二公网地址进行转发,在这一过程中,第一网络设备能够根据第一数据包中第一客户端的地址和第二客户端的地址,记录第一客户端与第二客户端间的映射关系。另一方面,由于第一客户端还通过服务器向第二客户端发送第二数据包,从而使得第二客户端能够主动向第一客户端的公网地址发送针对第二数据包的响应包,又由于第一客户端连接的网络设备记录了第一客户端与第二客户端间的映射关系,那么第一客户端连接的网络设备在接收到第二客户端发送的上述响应包时,能够将上述响应包向第一客户端进行转发,当第一客户端接收到了第二客户端发送的响应包时,第一客户端与第二客户端间成功建立了连接。因此,相较于现有技术,提高了建立连接的成功率。
另外,由于第三路由数小于第一客户端向第二公网地址发送数据包时数据包所经过路由的第二路由数,表示上述第一数据包在到达第二公网地址之前被丢弃的可能性较大,也就是上述第一数据包难以到达第二客户端连接的第二网络设备。这样,当第二网络设备未记录第一客户端与第二客户端间的映射关系时,降低了第一客户端被第二网络设备进行限制的可能性,从而进一步提高了第一客户端与第二客户端建立连接的成功率。
在对上述各步骤进行具体说明之前,首先结合图2对本发明实施例的应用场景进行具体说明。
参见图2,图2为本发明实施例提供的一种连接建立场景中设备间的连接关系示意图。
图2中包括服务器、网络设备NS1、网络设备NS2、第一客户端NS11、第一客户端NS12、第一客户端NS13、第二客户端NS21、第二客户端NS22、第二客户端NS23。
具体的,上述服务器可以是信令服务器,信令服务器又称Signal Server。上述信令服务器用于与第一客户端(NS11、NS12、NS13)、第二客户端(NS21、NS22、NS23)建立连接,基于所建立的连接,信令服务器能够与第一客户端(NS11、NS12、NS13)、第二客户端(NS21、NS22、NS23)进行数据交互。
上述网络设备NS1为第一客户端NS11、第一客户端NS12、第一客户端NS13连接的网络设备,上述网络设备NS2为第二客户端NS21、第二客户端NS22、第二客户端NS23连接的网络设备。具体的,上述网络设备(NS1、NS2)可以为NAT(Network Address Translator,网络地址转换)设备、路由器等。
在第一客户端与第二客户端间建立连接时,第一客户端或者第二客户端发送的数据包首先到达对端连接的网络设备,然后上述网络设备基于本地所记录的第一客户端与第二客户端间的映射关系,将数据包向连接该网络设备的客户端转发。
例如:假设网络设备NS1记录了第一客户端NS11与第二客户端NS21之间的映射关系,当第二客户端NS21向第一客户端NS11发送数据包时,由于网络设备NS1记录了第一客户端NS11与第二客户端NS21之间的映射关系,因此,网络设备能够将第二客户端NS21发送的数据包向第一客户端NS11转发;若第二客户端NS22向第一客户端NS11发送数据包时,由于网络设备NS1未记录第一客户端NS11与第二客户端NS22之间的映射关系,网络设备NS1会认为第二客户端NS22是陌生设备,安全性不高,从而网络设备NS1会对第二客户端NS22进行短时间的限制。
由于上述第一客户端(NS11、NS12、NS13)、第二客户端(NS21、NS22、NS23)均连接不同的网络设备,因此,又可以称上述第一客户端(NS11、NS12、NS13)、第二客户端(NS21、NS22、NS23)位于不同的局域网中。
上述第一客户端(NS11、NS12、NS13)、第二客户端(NS21、NS22、NS23)的本机地址为内网地址。上述网络设备(NS1、NS2)的地址为公网地址。
以下对上述步骤S101-S105进行详细说明。
S101:通过服务器向第二客户端发送第一客户端连接的第一网络设备的第一公网地址,并通过服务器获得第二客户端连接的第二网络设备的第二公网地址。
当两个客户端之间需要建立连接时,可以将其中一个客户端作为第一客户端、另一个客户端作为第二客户端。
例如:以音视频通话为例,当用户U1在其所使用的客户端C1向用户U2发起音视频通话、且用户U2同意用户U1所发起的音视频通话请求时,用户U1所使用的客户端C1与用户U2所使用的客户端C2为需要建立连接的两个客户端,可以将客户端C1作为第一客户端,将客户端C2作为第二客户端。
上述服务器可以是信令服务器,上述服务器能够分别与第一客户端、第二客户端建立连接。
上述第一公网地址可以包括第一网络设备的IP地址和端口号,上述第二公网地址可以包括第二网络设备的IP地址和端口号。
上述第一网络设备与第二网络设备不同。当第一网络设备与第二网络设备不同,表示第一客户端所在网络与第二客户端所在网络是不同的。由于不同网络的客户端之间建立连接时,需要基于双方的公网地址建立连接。又由于在建立连接的过程中,处于不同网络的客户端之间是无法直接进行数据交互的,所以第一客户端、第二客户端通过上述服务器交换彼此的公网地址,从而基于所获得的公网地址建立客户端之间的连接。
本发明的一个实施例中,第一客户端可以生成包含上述第一公网地址的信息作为第一客户端的Candidate,通过服务器将上述Candidate向第二客户端发送;同样的,第一客户端也可以通过上述服务器获得第二客户端的Candidate。其中,上述第二客户端的Candidate包括第二网络设备的第二公网地址。
上述客户端的Candidate是用于描述用于和该客户端进行通信的地址相关的信息,上述第一客户端的Candidate可以包括第一客户端连接的第一网络设备的IP地址、第一客户端的IP地址、第一客户端的端口号、第一网络设备的类型等,上述第二客户端的Candidate可以包括第二客户端连接的第二网络设备的IP地址、第二客户端的IP地址、第二客户端的端口号、第二网络设备的类型等。
S102:确定大于第一路由数且小于第二路由数的第三路由数。
上述第一路由数为:第一客户端向第一公网地址发送数据包时数据包经过的路由数。
上述第二路由数为:第一客户端向第二公网地址发送数据包时数据包经过的路由数。
由于第一客户端向第二公网地址发送数据包时,上述数据包首先到达的是第一客户端连接的网络设备,然后第一客户端连接的网络设备再将上述数据包向第二公网地址转发,因此,上述第二路由数必然大于第一路由数。
上述第二路由数可以是由第一客户端所读取的本地存储的第一客户端向第二公网地址发送数据包时数据包所经过的路由数。
上述第二路由数还可以是由第一客户端基于第一路由数所预估的路由数。具体的,可以基于第一公网地址向第二公网地址发送数据包时数据包所经过路由的历史路由数,对各个历史路由数进行统计,如求平均值、求最大值等,得到统计值,计算第一路由数与统计值之间的和值,作为第二路由数。
在确定上述第三路由数时,本发明一个实施例中,可以获得由小于第一差值的各正整数形成的路由数范围,从路由数范围中选择目标路由数;根据目标路由数和第一路由数,确定第三路由数。
上述第一差值为:第二路由数与第一路由数之间的差值。
上述目标路由数可以是从路由数范围中随机选择的,还可以是小于预设路由数阈值的路由数,上述预设路由数阈值可以为2、3等。
在确定第三路由数时,可以计算目标路由数与第一路由数之和,还可以在计算得到上述和值之后,通过预设路由误差数对上述和值进行调整,将调整后的路由数确定为第三路由数。
例如:假设第一路由数为10,第二路由数为20,第二路由数与第一路由数之间的差值为10,可以确定小于上述差值的正整数范围为[1、2、……、9],从上述范围中可以选择一个正整数,如“1”,作为目标路由数,计算目标路由数与第一路由数之和,即10+1=11,作为第三路由数。
这样,由于目标路由数是小于第二路由数与第一路由数之间的第一差值的各正整数形成的路由数范围中选择得到的,能够使得确定得到的第三路由数大于第一路由数且小于第二路由数。
S103:基于路由数为第三路由数的跳转路径,向第二公网地址发送第一数据包,以使得第一网络设备根据第一数据包中第一客户端的地址和第二客户端的地址,记录第一客户端与第二客户端间的映射关系。
上述路由数又可以称为TTL(Time To Live,生存时间值)。
上述基于路由数为第三路由数的跳转路径,向第二公网地址发送第一数据包表示上述第一数据包所经过跳转路径的路由数为第三路由数。
上述第一数据包中携带的源地址为第一客户端的地址,目的地址为第二客户端的地址。上述第一客户端的地址包括第一客户端的IP地址、端口号等通信信息、第二客户端的地址包括第二客户端的IP地址、端口号等通信信息。
上述第一客户端与第二客户端间的映射关系可以包括:第一客户端的本机IP地址与第二客户端的本机IP地址间的映射关系、第一客户端的本机端口号与第二客户端的本机端口号间的映射关系等,并不做具体限制。
由于第一数据包中目的地址是第二客户端的地址,第一客户端是需要通过第一网络设备进行转发,第一网络设备在接收到第一客户端发送的第一数据包后,对第一数据包进行解析,获得源地址参数项的取值和目的地址参数项的取值,记录源地址参数项的取值与目的地址参数项的取值之间的映射关系,并向第二客户端的第二公网地址转发第一数据包。由于第一数据包中源地址参数项的取值为第一客户端的地址,目的地址参数项的取值为第二客户端的地址,所以,第一网络设备可以根据上述第一数据包中第一客户端的地址和第二客户端的地址,记录第一客户端与第二客户端间的映射关系。
由于第一网络设备记录了第一客户端与第二客户端间的映射关系,若上述第一网络设备接收到第二客户端发送的数据包时,能够基于所记录的映射关系将上述数据包向第一客户端转发,从而使得第一客户端与第二客户端成功建立连接。
当第三路由数大于第一路由数时,表示上述第一数据包能够通过第一客户端连接的网络设备向第二公网地址发送,又可以称第一数据包成功穿透第一客户端连接的网络设备。又由于当第一数据包成功穿透第一客户端连接的网络设备时,上述网络设备才能记录第一客户端与第二客户端间的映射关系,因此,上述第三路由数需要大于第一路由数。
又由于第二客户端连接的网络设备可能未记录第一客户端与第二客户端间的映射关系,如果第三路由数等于第二路由数时,第一客户端所发送的第一数据包能够到达第二客户端连接的网络设备,第二客户端连接的网络设备会对第一客户端进行短时间的限制,从而导致连接建立失败。因此,第三路由数需要小于第二路由数,从而保证上述第一数据包在到达第二公网地址之前被丢弃,也就是第一数据包无法到达第二公网地址。
S104:通过服务器向第二客户端发送第二数据包,以使得第一网络设备在接收到第二客户端发送的针对第二数据包的响应包时,基于映射关系向第一客户端转发响应包。
由于上述第二数据包是第一客户端通过服务器向第二客户端发送的,又由于服务器是能够与第一客户端、第二客户端建立连接的,第一客户端通过服务器向第二客户端发送第二数据包时,不会被第二客户端连接的网络设备限制,从而使得第二数据包可以到达第二客户端。
第二客户端在接收到第二数据包之后,第二客户端可以对上述第二数据包进行解析,生成针对上述第二数据包的响应包,并向第一客户端发送响应包,上述响应包在到达第一客户端之前,会先经过第一客户端连接的第一网络设备。又由于在S103中第一网络设备记录了第一客户端与第二客户端间的映射关系,因此,当第一网络设备接收到第二客户端发送的上述响应包时,第一网络设备能够基于所记录的上述映射关系,向第一客户端转发响应包,从而使得第一客户端接收到第二客户端发送的上述响应包。
又由于当第二客户端向第一客户端的第一公网地址发送上述响应包时,第二客户端连接的第二网络设备也会根据上述响应包,记录第一客户端与第二客户端间的映射关系,因此,当第一客户端再向第二客户端的第二公网地址发送数据包时,上述第二客户端连接的网络设备也能够基于所记录的映射关系,将数据包向第二客户端转发。
S105:在接收到响应包时,实现与第二客户端成功建立连接。
当第一客户端成功接收到第二客户端发送的上述响应包的情况下,表示第二客户端发送的响应包能够成功穿透第一客户端连接的网络设备。也就是第一客户端与第二客户端之间成功建立了连接。上述穿透方式又称为ICE穿透,由于上述连接建立过程是基于ICE穿透建立的,可以将上述连接建立的方式为ICE穿透连接方法。
由以上可见,应用本实施例提供的方案进行连接建立时,一方面,由于第一客户端是基于路由数为第三路由数的跳转路径向第二公网地址发送第一数据包的,又由于上述第三路由数大于第一客户端向第一公网地址发送数据包时数据包所经过的第一路由数,因此,能够使得上述第一数据包到达第一客户端连接的第一网络设备,并且上述第一网络设备会向第二公网地址进行转发,在这一过程中,第一网络设备能够根据第一数据包中第一客户端的地址和第二客户端的地址,记录第一客户端与第二客户端间的映射关系。另一方面,由于第一客户端还通过服务器向第二客户端发送第二数据包,从而使得第二客户端能够主动向第一客户端的公网地址发送针对第二数据包的响应包,又由于第一客户端连接的网络设备记录了第一客户端与第二客户端间的映射关系,那么第一客户端连接的网络设备在接收到第二客户端发送的上述响应包时,能够将上述响应包向第一客户端进行转发,当第一客户端接收到了第二客户端发送的响应包时,第一客户端与第二客户端间成功建立了连接。因此,相较于现有技术,提高了建立连接的成功率。
另外,由于第三路由数小于第一客户端向第二公网地址发送数据包时数据包所经过路由的第二路由数,表示上述第一数据包在到达第二公网地址之前被丢弃的可能性较大,也就是上述第一数据包难以到达第二客户端连接的第二网络设备。这样,当第二网络设备未记录第一客户端与第二客户端间的映射关系时,降低了第一客户端被第二网络设备进行限制的可能性,从而进一步提高了第一客户端与第二客户端建立连接的成功率。
上述步骤S102中第一路由数可以按照以下方式实现。
第一种方式,第一客户端可以向第一公网地址发送探测包,获得第一网络设备反馈的所述探测包所经过的路由数,作为第一路由数。
具体的,第一客户端可以基于ICMP(Internet Control Message Protocol,网络控制报文协议)向第一公网地址发送探测包。上述探测包用于探测第一公网地址发送数据包时数据包所经过路由的路由数。
这样,由于第一客户端向第一公网地址发送数据包时数据包所经过的路由数可能是实时变化的,因此,通过发送探测包的方式获得第一路由数,能够提高获得第一路由数的准确率。
第二种方式,第一客户端可以获得第一客户端向第一公网地址发送数据包时数据包所经过的历史路由数;对历史路由数进行统计分析,根据统计分析结果确定第一客户端向第一公网地址发送数据包时数据包所经过的路由数,作为第一路由数。
上述统计分析可以包括计算平均值、中值等。
一种实施方式中,可以将统计分析结果直接确定为第一客户端向第一公网地址发送数据包所经过的路由数。
另一种实施方式中,还可以对统计分析结果进行调整。具体的,可以采用预设路由误差对上述统计分析结果进行调整,将调整后的统计分析结果确定为第一路由数。
这样,由于所确定的第一路由数是基于历史路由数确定的,历史路由数能够较为准确反映第一客户端向第一公网地址发送数据包时数据包所经过的路由数,所以,第一路由数能够准确地反映第一客户端向第一公网地址发送数据包时数据包所经过的路由数。
第三种方式,第一客户端可以读取本地存储的、第一客户端向第一公网地址发送数据包时数据包所经过路由的路由数,作为第一路由数。
具体的,第一客户端可以预先存储第一客户端向第一公网地址发送数据包时数据包所经过路由的路由数,并按照预设时间间隔对上述路由数进行更新。
这样,由于第一客户端可以直接读取本地存储的路由数,从而提高了第一路由数的获得效率。
本发明的一个实施例中,在上述步骤S101之前,还可以包括以下步骤A1-步骤A2。
步骤A1:获得第一客户端连接的第一网络设备的第一公网地址,基于第一公网地址,确定第一网络设备的NAT类型。
一种实施方式中,第一客户端可以通过STUN服务器获得第一客户端的第一公网地址。上述STUN服务器记录了各个客户端的公网地址。
具体的,第一客户端可以向STUN服务器发送用于请求获得第一公网地址的数据包,STUN服务器基于上述数据包向第一客户端发送第一客户端的第一公网地址。
另一种实施方式中,第一客户端还可以读取本地存储的第一公网地址。
具体的,第一客户端可以存储第一公网地址,并对第一网络设备的地址进行监测,按照预设时间间隔对所存储的第一公网地址进行更新。因此,第一客户端可以读取本地存储的第一公网地址。
具体的网络设备的NAT类型的确定方式可以参见现有技术中任意一种方式,在此暂不赘述。
步骤A2:判断NAT类型是否为端口受限类型;若为是,执行上述步骤S101。
具体的,网络设备的NAT类型可以包括:完全圆锥型、受限圆锥型、端口受限圆锥型以及对称型,其中,上述完全圆锥型又可以称为公网类型,端口受限圆锥型又可以称为端口受限型。
当第一网络设备的NAT类型为端口受限类型时,表示第一网络设备记录的第一客户端与第二客户端间的映射关系包括:第一客户端的IP地址与第二客户端的IP地址间的映射关系、以及第一客户端的端口号与第二客户端的端口号间的映射关系。
由于当网络设备的类型为端口受限类型时,相较于其他类型的网络设备采用现有技术的方案进行建立连接的成功率较小,因此,可以采用本实施例提供的方案进行连接建立,从而提高建立连接的成功率。
本发明的一个实施例中,在上述步骤S105中未接收到响应包的情况下,可以按照预设间隔时间,重新向第二公网地址发送第一数据包,并通知服务器向第二客户端发送第二数据包,直至接收到第二客户端发送的针对第二数据包的响应包。
具体的,由于当网络质量较差时,第一客户端可能无法接收到响应包,在这种情况下,可以按照预设间隔时间向第二公网地址发送第一数据包,并通知服务器向第二客户端发送第二数据包。
上述预设间隔时间可以由工作人员根据经验设定,例如:上述预设间隔时间可以为50ms、100ms。
与上述应用于第一客户端的连接建立方法相对应,本发明实施例还提供了一种应用于第二客户端的连接建立方法。
参见图3,图3为本发明实施例提供的第二种连接建立方法的流程示意图,应用于第二客户端,上述方法包括S301-S303。
S301:通过服务器向第一客户端发送第二客户端连接的第二网络设备的第二公网地址,并通过服务器获得第一客户端连接的第一网络设备的第一公网地址。
上述第一网络设备与第二网络设备不同。
上述第二公网地址可以包括第二网络设备的IP地址和端口号,上述第一公网地址可以包括第一网络设备的IP地址和端口号。
本发明的一个实施例中,第二客户端可以生成包含上述第二公网地址的信息,作为第二客户端的Candidate,通过服务器将上述Candidate向第一客户端发送;同样的,第二客户端也可以通过上述服务器获得第一客户端的Candidate。其中,上述第一客户端的Candidate包括第一客户端的第一公网地址。
S302:通过服务器接收第一客户端发送的第一数据包,生成针对第一数据包的响应包,向第一公网地址发送响应包,以使得第二网络设备根据响应包中第一客户端的地址和第二客户端的地址,记录第一客户端与第二客户端间的映射关系。
由于上述第一数据包是第一客户端通过服务器发送的,因此,第二客户端在接收到上述第一数据包时,能够生成针对上述第一数据包的响应包,并且由于在上述S301中获得了第一客户端的第一公网地址,因此,第二客户端能够向上述第一公网地址发送上述响应包。
上述响应包中携带的源地址为第二客户端的地址,目的地址为第一客户端的地址。上述第一客户端的地址包括第一客户端的IP地址、端口号等通信信息、第二客户端的地址包括第二客户端的IP地址、端口号等通信信息。
上述第一客户端与第二客户端间的映射关系可以包括:第一客户端的本机IP地址与第二客户端的本机IP地址间的映射关系、第二客户端的本机端口号与第二客户端的本机端口号间的映射关系等,并不做具体限制。
由于响应包中目的地址是第一客户端的地址,第二客户端是需要通过第二网络设备进行转发,第二网络设备在接收到第二客户端发送的响应包后,对响应包进行解析,获得源地址参数项的取值和目的地址参数项的取值,记录源地址参数项的取值与目的地址参数项的取值之间的映射关系,并向第一客户端的第一公网地址转发响应包。由于响应包中源地址参数项的取值为第二客户端的地址,目的地址参数项的取值为第一客户端的地址,所以,第二网络设备可以根据上述响应包中第一客户端的地址和第二客户端的地址,记录第一客户端与第二客户端间的映射关系。
S303:在接收到第一客户端发送的第二数据包时,实现与第一客户端成功建立连接。
由于第二网络设备记录了第一客户端与第二客户端间的映射关系,因此,当第一客户端向第二客户端的第二公网地址发送第二数据包时,第二网络设备在接收到上述第二数据包时,能够基于所记录的映射关系,向第二客户端转发第二数据包。
当第二客户端接收到第一客户端发送的第二数据包时,表示第二数据包能够穿透第二客户端连接的网络设备,从而实现了第二客户端与第一客户端成功建立连接。上述穿透方式又称为ICE穿透,由于上述连接建立过程是基于ICE穿透建立的,可以将上述连接建立的方式为ICE穿透连接方法。
由以上可见,应用本实施例提供的方案建立连接时,第二客户端通过服务器接收第一客户端发送的第一数据包,向第一客户端的第一公网地址发送所生成的针对第一数据包的响应包,使得第二客户端连接的第二网络设备根据上述响应包记录的第一客户端的地址与第二客户端的地址,记录了第一客户端与第二客户端间的映射关系。这样,第一客户端再向第二客户端发送数据包时,第二网络设备能够基于所记录的映射关系,将上述数据包向第二客户端转发。当第二客户端获得了第一客户端所发送的数据包时,实现了第二客户端与第一客户端成功建立连接。因此,相较于现有技术,应用本实施例提供的方案建立连接,能够提高建立连接的成功率。
本发明的一个实施例中,在上述步骤S301之前,还可以包括以下步骤B1-步骤B2。
步骤B1:获得第二客户端连接的第二网络设备的第二公网地址,基于第二公网地址,确定第二网络设备的NAT类型。
一种实施方式中,第二客户端可以通过STUN服务器获得第二客户端的第二公网地址。上述STUN服务器记录了各个客户端的公网地址。
具体的,第二客户端可以向STUN服务器发送用于请求获得第二公网地址的数据包,STUN服务器基于上述数据包向第二客户端发送第二客户端的第二公网地址。
另一种实施方式中,第二客户端还可以读取本地存储的第二公网地址。具体的,第二客户端可以存储第二公网地址,并对第二客户端连接的网络设备的地址进行监测,按照预设时间间隔对所存储的第二公网地址进行更新。因此,第二客户端可以读取本地存储的第二公网地址。
具体的网络设备的NAT类型的确定方式可以参见现有技术中任意一种方式,在此暂不赘述。
步骤B2:判断NAT类型是否为端口受限类型;若为是,执行上述S301的步骤。
具体的,网络设备的NAT类型可以包括:完全圆锥型、受限圆锥型、端口受限圆锥型以及对称型,其中,上述完全圆锥型又可以称为公网类型,端口受限圆锥型又可以称为端口受限型。
当第二客户端的网络设备的类型为端口受限类型时,表示第二客户端的网络设备记录的第一客户端与第二客户端间的映射关系包括:第二客户端的IP地址与第一客户端连接的网络设备的IP地址间的映射关系、以及第二客户端的端口号与第一客户端连接的网络设备的端口号间的映射关系。
由于当网络设备的类型为端口受限类型时,相较于其他类型的网络设备采用现有技术的方案进行建立连接的成功率较小,因此,可以采用本实施例提供的方案进行连接建立,从而提高建立连接的成功率。
与上述连接建立方法相对应,本发明实施例还提供了一种连接建立系统。
参见图4,图4为本发明实施例提供的一种连接建立系统的结构示意图。上述系统包括第一客户端401、第二客户端402、第一客户端连接的第一网络设备4011、第二客户端连接的第二网络设备4021以及服务器403。
其中,服务器403与上述第一客户端401、第二客户端402、第一网络设备4011、第二网络设备4021均连接。
参见图5,图5为本发明实施例提供的一种连接建立方法的信令图。
S501:第一客户端401通过服务器403向第二客户端402发送第一网络设备4011的第一公网地址。第二客户端402通过服务器403向第一客户端401发送第二网络设备4021的第二公网地址。
S502:第一客户端401确定大于第一路由数且小于第二路由数的第三路由数。
上述第一路由数为:第一客户端向第一公网地址发送数据包时数据包经过的路由数,上述第二路由数为:第一客户端向第二公网地址发送数据包时数据包所经过的路由数。
S503:第一客户端401基于路由数为第三路由数的跳转路径,向第二公网地址发送第一数据包,并通过服务器403向第二客户端402发送第二数据包。第一网络设备4011根据第一数据包中第一客户端的地址和第二客户端的地址,记录第一客户端401与第二客户端402间的映射关系。
S504:第二客户端402通过服务器403接收第一客户端401发送的第二数据包,生成针对第二数据包的响应包,并向第一公网地址发送响应包。第二网络设备4021记录第一客户端401与第二客户端402间的映射关系。
S505:第一客户端401在接收到第二客户端402发送的针对第二数据包的响应包的情况下,实现与第二客户端402成功建立连接。第二客户端402在接收到第一客户端401发送的第二数据包的情况下,实现与第一客户端401成功建立连接。
由以上可见,应用本实施例提供的方案进行连接建立时,一方面,由于第一客户端是基于路由数为第三路由数的跳转路径向第二公网地址发送第一数据包的,又由于上述第三路由数大于第一客户端向第一公网地址发送数据包时数据包所经过的第一路由数,因此,能够使得上述第一数据包到达第一客户端连接的第一网络设备,并且上述第一网络设备会向第二公网地址进行转发,在这一过程中,第一网络设备能够根据第一数据包中第一客户端的地址和第二客户端的地址,记录第一客户端与第二客户端间的映射关系。另一方面,由于第一客户端还通过服务器向第二客户端发送第二数据包,从而使得第二客户端能够主动向第一客户端的公网地址发送针对第二数据包的响应包,又由于第一客户端连接的网络设备记录了第一客户端与第二客户端间的映射关系,那么第一客户端连接的网络设备在接收到第二客户端发送的上述响应包时,能够将上述响应包向第一客户端进行转发,当第一客户端接收到了第二客户端发送的响应包时,第一客户端与第二客户端间成功建立了连接。因此,相较于现有技术,提高了建立连接的成功率。
另外,由于第三路由数小于第一客户端向第二公网地址发送数据包时数据包所经过路由的第二路由数,表示上述第一数据包在到达第二公网地址之前被丢弃的可能性较大,也就是上述第一数据包难以到达第二客户端连接的第二网络设备。这样,当第二网络设备未记录第一客户端与第二客户端间的映射关系时,降低了第一客户端被第二网络设备进行限制的可能性,从而进一步提高了第一客户端与第二客户端建立连接的成功率。
本发明的一个实施例中,上述第一客户端401,还用于向所述第一公网地址发送探测包;获得所述第一网络设备4011反馈的所述探测包所经过的路由数,作为第一路由数。
这样,由于第一客户端向第一公网地址发送数据包时数据包所经过的路由数可能是实时变化的,因此,通过发送探测包的方式获得第一路由数,能够提高获得第一路由数的准确率。
本发明的一个实施例中,上述第一客户端401,还用于获得所述第一客户端401向所述第一公网地址发送数据包时数据包所经过的历史路由数;对所述历史路由数进行统计分析,根据统计分析结果确定所述第一客户端401向所述第一公网地址发送数据包时数据包所经过的路由数,作为第一路由数。
这样,由于所确定的第一路由数是基于历史路由数确定的,历史路由数能够较为准确反映第一客户端向第一公网地址发送数据包时数据包所经过的路由数,所以,第一路由数能够准确地反映第一客户端向第一公网地址发送数据包时数据包所经过的路由数。
本发明的一个实施例中,上述第一客户端401,还用于获得由小于第一差值的各正整数形成的路由数范围,其中,所述第一差值为:所述第二路由数与第一路由数之间的差值;从所述路由数范围中选择目标路由数;根据所述目标路由数和所述第一路由数,确定所述第三路由数。
这样,由于目标路由数是小于第二路由数与第一路由数之间的第一差值的各正整数形成的路由数范围中选择得到的,能够使得确定得到的第三路由数大于第一路由数且小于第二路由数。
本发明的一个实施例中,上述第一客户端401,还用于获得所述第一客户端连接的第一网络设备4011的第一公网地址,基于所述第一公网地址,确定所述第一网络设备4011的网络地址转换NAT类型;判断所述NAT类型是否为端口受限类型;若为是,执行所述通过服务器403向第二客户端402发送所述第一客户端连接的第一网络设备4011的第一公网地址,并通过所述服务器403获得所述第二客户端连接的第二网络设备4012的第二公网地址的步骤;
上述第二客户端402,还用于获得所述第二客户端连接的第二网络设备4021的第二公网地址,基于所述第二公网地址,确定所述第二网络设备4021的网络地址转换NAT类型;判断所述NAT类型是否为端口受限类型;若为是,执行所述通过服务器403向第一客户端401发送所述第二网络设备4021的第二公网地址,并通过所述服务器获得所述第二网络设备4021的第一公网地址的步骤。
由于当网络设备的类型为端口受限类型时,相较于其他类型的网络设备采用现有技术的方案进行建立连接的成功率较小,因此,可以采用本实施例提供的方案进行连接建立,从而提高建立连接的成功率。
与上述应用于第一客户端的连接建立方法相对应,本发明实施例还提供了一种应用于第一客户端的连接建立装置。
参见图6,图6为本发明实施例提供的第一种连接建立装置的结构示意图,应用于第一客户端,上述装置包括601-605。
地址发送和获得模块601,用于通过服务器向第二客户端发送所述第一客户端连接的第一网络设备的第一公网地址,并通过所述服务器获得所述第二客户端连接的第二网络设备的第二公网地址,其中,所述第一网络设备与所述第二网络设备不同;
路由数确定模块602,用于确定大于所述第一路由数且小于第二路由数的第三路由数,其中,所述第一路由数为:所述第一客户端向所述第一公网地址发送数据包时数据包经过的路由数,所述第二路由数为:所述第一客户端向所述第二公网地址发送数据包时数据包所经过的路由数;
第一数据包发送模块603,用于基于路由数为所述第三路由数的跳转路径,向所述第二公网地址发送第一数据包,以使得所述第一网络设备网络设备根据所述第一数据包中所述第一客户端的地址和所述第二客户端的地址,记录所述第一客户端与第二客户端间的映射关系;
第二数据包发送模块604,用于通过所述服务器向所述第二客户端发送第二数据包,以使得所述第一网络设备在接收到所述第二客户端发送的针对所述第二数据包的响应包时,基于所述映射关系向所述第一客户端转发所述响应包;
连接建立模块605,用于在接收到所述响应包时,实现与所述第二客户端成功建立连接。
由以上可见,应用本实施例提供的方案进行连接建立时,一方面,由于第一客户端是基于路由数为第三路由数的跳转路径向第二公网地址发送第一数据包的,又由于上述第三路由数大于第一客户端向第一公网地址发送数据包时数据包所经过的第一路由数,因此,能够使得上述第一数据包到达第一客户端连接的第一网络设备,并且上述第一网络设备会向第二公网地址进行转发,在这一过程中,第一网络设备能够根据第一数据包中第一客户端的地址和第二客户端的地址,记录第一客户端与第二客户端间的映射关系。另一方面,由于第一客户端还通过服务器向第二客户端发送第二数据包,从而使得第二客户端能够主动向第一客户端的公网地址发送针对第二数据包的响应包,又由于第一客户端连接的网络设备记录了第一客户端与第二客户端间的映射关系,那么第一客户端连接的网络设备在接收到第二客户端发送的上述响应包时,能够将上述响应包向第一客户端进行转发,当第一客户端接收到了第二客户端发送的响应包时,第一客户端与第二客户端间成功建立了连接。因此,相较于现有技术,提高了建立连接的成功率。
另外,由于第三路由数小于第一客户端向第二公网地址发送数据包时数据包所经过路由的第二路由数,表示上述第一数据包在到达第二公网地址之前被丢弃的可能性较大,也就是上述第一数据包难以到达第二客户端连接的第二网络设备。这样,当第二网络设备未记录第一客户端与第二客户端间的映射关系时,降低了第一客户端被第二网络设备进行限制的可能性,从而进一步提高了第一客户端与第二客户端建立连接的成功率。
本发明的一个实施例中,所述装置还包括:路由数获得模块,
所述路由数获得模块,包括:
探测包发送子模块,用于向所述第一公网地址发送探测包;
第一路由数获得子模块,用于获得所述第一网络设备反馈的所述探测包所经过的路由数,作为第一路由数。
这样,由于第一客户端向第一公网地址发送数据包时数据包所经过的路由数可能是实时变化的,因此,通过发送探测包的方式获得第一路由数,能够提高获得第一路由数的准确率。
本发明的一个实施例中,所述路由数获得模块,还包括:
历史路由数获得子模块,用于获得所述第一客户端向所述第一公网地址发送数据包时数据包所经过的历史路由数;
第二路由数确定子模块,用于对所述历史路由数进行统计分析,根据统计分析结果确定所述第一客户端向所述第一公网地址发送数据包时数据包所经过的路由数,作为第一路由数。
这样,由于所确定的第一路由数是基于历史路由数确定的,历史路由数能够较为准确反映第一客户端向第一公网地址发送数据包时数据包所经过的路由数,所以,第一路由数能够准确地反映第一客户端向第一公网地址发送数据包时数据包所经过的路由数。
本发明的一个实施例中,上述路由数确定模块602,具体用于获得由小于第一差值的各正整数形成的路由数范围,其中,所述第一差值为:所述第二路由数与第一路由数之间的差值;从所述路由数范围中选择目标路由数;根据所述目标路由数和所述第一路由数,确定所述第三路由数。
这样,由于目标路由数是小于第二路由数与第一路由数之间的第一差值的各正整数形成的路由数范围中选择得到的,能够使得确定得到的第三路由数大于第一路由数且小于第二路由数。
本发明的一个实施例中,所述第一网络设备为网络地址转换NAT设备,上述装置还包括:
类型确定模块,用于在上述地址发送和获得模块601之前,获得所述第一客户端连接的第一网络设备的第一公网地址,基于所述第一公网地址,确定所述第一网络设备的网络地址转换NAT类型;
类型判断模块,用于判断所述NAT类型是否为端口受限类型;
若为是,触发所述地址发送和获得模块601。
由于当网络设备的类型为端口受限类型时,相较于其他类型的网络设备采用现有技术的方案进行建立连接的成功率较小,因此,可以采用本实施例提供的方案进行连接建立,从而提高建立连接的成功率。
与上述应用于第二客户端的连接建立方法相对应,本发明实施例提供了一种应用于第二客户端的连接建立装置。
参见图7,图7为本发明实施例提供的第二种连接建立装置的结构示意图,应用于第二客户端,上述装置包括701-703。
地址发送和获得模块701,用于通过服务器向第一客户端发送所述第二客户端连接的第二网络设备的第二公网地址,并通过所述服务器获得所述第一客户端连接的第一网络设备的第一公网地址,其中,所述第一网络设备与所述第二网络设备不同;
响应包发送模块702,用于通过所述服务器接收所述第一客户端发送的第一数据包,生成针对所述第一数据包的响应包,向所述第一公网地址发送所述响应包,以使得所述第二网络设备根据所述响应包中所述第一客户端的地址和所述第二客户端的地址,记录所述第一客户端与第二客户端间的映射关系;
连接建立模块703,用于在接收到所述第一客户端发送的第二数据包时,实现与所述第一客户端成功建立连接。
由以上可见,应用本实施例提供的方案建立连接时,第二客户端通过服务器接收第一客户端发送的第一数据包,向第一客户端的第一公网地址发送所生成的针对第一数据包的响应包,使得第二客户端连接的第二网络设备根据上述响应包记录的第一客户端的地址与第二客户端的地址,记录了第一客户端与第二客户端间的映射关系。这样,第一客户端再向第二客户端发送数据包时,第二网络设备能够基于所记录的映射关系,将上述数据包向第二客户端转发。当第二客户端获得了第一客户端所发送的数据包时,实现了第二客户端与第一客户端成功建立连接。因此,相较于现有技术,应用本实施例提供的方案建立连接,能够提高建立连接的成功率。
本发明的一个实施例中,所述第二网络设备为:网络地址转换NAT设备,上述装置还包括:
类型确定模块,用于在上述地址发送和获得模块701之前,获得所述第二客户端连接的第二网络设备的第二公网地址,基于所述第二公网地址,确定所述第二网络设备的网络地址转换NAT类型;
类型判断模块,用于判断所述NAT类型是否为端口受限类型;
若为是,触发所述地址发送和获得模块701。
由于当网络设备的类型为端口受限类型时,相较于其他类型的网络设备采用现有技术的方案进行建立连接的成功率较小,因此,可以采用本实施例提供的方案进行连接建立,从而提高建立连接的成功率。
与上述应用于第一客户端的连接建立方法相对应,本发明实施例还提供了一种终端设备。
参见图8,图8为本发明实施例提供的第一种终端设备的结构示意图,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信,
存储器803,用于存放计算机程序;
处理器801,用于执行存储器803上所存放的程序时,实现本发明实施例提供的应用于第一客户端的连接建立方法方法。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
与上述应用于第二客户端的连接建立方法相对应,本发明实施例还提供了一种终端设备。
参见图9,图9为本发明实施例提供的第二种终端设备的结构示意图,包括处理器901、通信接口902、存储器903和通信总线904,其中,处理器901,通信接口902,存储器903通过通信总线904完成相互间的通信,
存储器903,用于存放计算机程序;
处理器901,用于执行存储器903上所存放的程序时,实现本发明实施例提供的应用于第二客户端的连接建立方法方法。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例提供的应用于第一客户端的连接建立方法。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例提供的应用于第二客户端的连接建立方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行时实现本发明实施例提供的应用于第一客户端的连接建立方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行时实现本发明实施例提供的应用于第二客户端的连接建立方法。
由以上可见,应用本实施例提供的方案进行连接建立时,一方面,由于第一客户端是基于路由数为第三路由数的跳转路径向第二公网地址发送第一数据包的,又由于上述第三路由数大于第一客户端向第一公网地址发送数据包时数据包所经过的第一路由数,因此,能够使得上述第一数据包到达第一客户端连接的第一网络设备,并且上述第一网络设备会向第二公网地址进行转发,在这一过程中,第一网络设备能够根据第一数据包中第一客户端的地址和第二客户端的地址,记录第一客户端与第二客户端间的映射关系。另一方面,由于第一客户端还通过服务器向第二客户端发送第二数据包,从而使得第二客户端能够主动向第一客户端的公网地址发送针对第二数据包的响应包,又由于第一客户端连接的网络设备记录了第一客户端与第二客户端间的映射关系,那么第一客户端连接的网络设备在接收到第二客户端发送的上述响应包时,能够将上述响应包向第一客户端进行转发,当第一客户端接收到了第二客户端发送的响应包时,第一客户端与第二客户端间成功建立了连接。因此,相较于现有技术,提高了建立连接的成功率。
另外,由于第三路由数小于第一客户端向第二公网地址发送数据包时数据包所经过路由的第二路由数,表示上述第一数据包在到达第二公网地址之前被丢弃的可能性较大,也就是上述第一数据包难以到达第二客户端连接的第二网络设备。这样,当第二网络设备未记录第一客户端与第二客户端间的映射关系时,降低了第一客户端被第二网络设备进行限制的可能性,从而进一步提高了第一客户端与第二客户端建立连接的成功率。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统、装置、终端设备、计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (16)
1.一种连接建立方法,其特征在于,应用于第一客户端,所述方法包括:
通过服务器向第二客户端发送所述第一客户端连接的第一网络设备的第一公网地址,并通过所述服务器获得所述第二客户端连接的第二网络设备的第二公网地址,其中,所述第一网络设备与所述第二网络设备不同;
确定大于第一路由数且小于第二路由数的第三路由数,其中,所述第一路由数为:所述第一客户端向所述第一公网地址发送数据包时数据包经过的路由数,所述第二路由数为:所述第一客户端向所述第二公网地址发送数据包时数据包所经过的路由数;
基于路由数为所述第三路由数的跳转路径,向所述第二公网地址发送第一数据包,以使得所述第一网络设备根据所述第一数据包中所述第一客户端的地址和所述第二客户端的地址,记录所述第一客户端与第二客户端间的映射关系;
通过所述服务器向所述第二客户端发送第二数据包,以使得所述第一网络设备在接收到所述第二客户端发送的针对所述第二数据包的响应包时,基于所述映射关系向所述第一客户端转发所述响应包;
在接收到所述响应包时,实现与所述第二客户端成功建立连接;
所述确定大于所述第一路由数且小于第二路由数的第三路由数,包括:
获得由小于第一差值的各正整数形成的路由数范围,其中,所述第一差值为:所述第二路由数与第一路由数之间的差值;
从所述路由数范围中选择目标路由数;
根据所述目标路由数和所述第一路由数,确定所述第三路由数。
2.根据权利要求1所述的方法,其特征在于,所述第一路由数为按照以下步骤获得的路由数:
向所述第一公网地址发送探测包;
获得所述第一网络设备反馈的所述探测包所经过的路由数,作为第一路由数。
3.根据权利要求1所述的方法,其特征在于,所述第一路由数为按照以下步骤获得的路由数:
获得所述第一客户端向所述第一公网地址发送数据包时数据包所经过的历史路由数;
对所述历史路由数进行统计分析,根据统计分析结果确定所述第一客户端向所述第一公网地址发送数据包时数据包所经过的路由数,作为第一路由数。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述第一网络设备为网络地址转换NAT设备,
在所述通过服务器向第二客户端发送所述第一客户端连接的第一网络设备的第一公网地址,并通过所述服务器获得所述第二客户端连接的第一网络设备的第二公网地址之前,还包括:
获得所述第一客户端连接的第一网络设备的第一公网地址,基于所述第一公网地址,确定所述第一网络设备的网络地址转换NAT类型;
判断所述NAT类型是否为端口受限类型;
若为是,执行所述通过服务器向第二客户端发送所述第一客户端连接的第一网络设备的第一公网地址,并通过所述服务器获得所述第二客户端连接的第一网络设备的第二公网地址的步骤。
5.一种连接建立方法,其特征在于,应用于第二客户端,所述方法包括:
通过服务器向第一客户端发送所述第二客户端连接的第二网络设备的第二公网地址,并通过所述服务器获得所述第一客户端连接的第一网络设备的第一公网地址,其中,所述第一网络设备与所述第二网络设备不同;
通过所述服务器接收所述第一客户端发送的第一数据包,生成针对所述第一数据包的响应包,向所述第一公网地址发送所述响应包,以使得所述第二网络设备根据所述响应包中所述第一客户端的地址和所述第二客户端的地址,记录所述第一客户端与第二客户端间的映射关系;以使所述第一网络设备基于所述映射关系向所述第一客户端转发所述响应包;
其中,所述第一网络设备记录的所述映射关系为所述第一客户端通过以下步骤记录的:基于路由数为第三路由数的跳转路径,向所述第二公网地址发送第一数据包,以使得所述第一网络设备根据所述第一数据包中所述第一客户端的地址和所述第二客户端的地址,记录所述第一客户端与第二客户端间的映射关系;所述第三路由数通过以下方式确定:获得由小于第一差值的各正整数形成的路由数范围,其中,所述第一差值为:第二路由数与第一路由数之间的差值;从所述路由数范围中选择目标路由数;根据所述目标路由数和所述第一路由数,确定所述第三路由数;所述第一路由数为:所述第一客户端向所述第一公网地址发送数据包时数据包经过的路由数,所述第二路由数为:所述第一客户端向所述第二公网地址发送数据包时数据包所经过的路由数;
在接收到所述第一客户端发送的第二数据包时,实现与所述第一客户端成功建立连接。
6.根据权利要求5所述的方法,其特征在于,所述第二网络设备为:网络地址转换NAT设备,
在所述通过服务器向第一客户端发送所述第二客户端连接的第二网络设备的第二公网地址,并通过所述服务器获得所述第一客户端连接的第一网络设备的第一公网地址之前,还包括:
获得所述第二客户端连接的第二网络设备的第二公网地址,基于所述第二公网地址,确定所述第二网络设备的网络地址转换NAT类型;
判断所述NAT类型是否为端口受限类型;
若为是,执行所述通过服务器向第一客户端发送所述第二网络设备的第二公网地址,并通过所述服务器获得所述第一网络设备的第一公网地址的步骤。
7.一种连接建立系统,其特征在于,所述系统包括第一客户端、第二客户端、第一客户端连接的第一网络设备、第二客户端连接的第二网络设备以及服务器;其中,
所述第一客户端,用于通过服务器向所述第二客户端发送所述第一客户端连接的第一网络设备的第一公网地址;
所述第二客户端,用于通过服务器向所述第一客户端发送所述第二客户端连接的第二网络设备的第二公网地址;
所述第一客户端,还用于确定大于第一路由数且小于第二路由数的第三路由数,其中,所述第一路由数为:所述第一客户端向所述第一公网地址发送数据包时数据包经过的路由数,所述第二路由数为:所述第一客户端向所述第二公网地址发送数据包时数据包所经过的路由数;
所述第一客户端,还用于基于路由数为所述第三路由数的跳转路径,向所述第二公网地址发送第一数据包;
所述第一网络设备,用于根据所述第一数据包中所述第一客户端的地址和所述第二客户端的地址,记录所述第一客户端与第二客户端间的映射关系;
所述第一客户端,还用于通过所述服务器向所述第二客户端发送第二数据包;
所述第二客户端,还用于通过所述服务器接收所述第二数据包,生成针对所述第二数据包的响应包,并向所述第一公网地址发送所述响应包;
所述第一网络设备,还用于在接收到所述响应包时,基于所述映射关系向所述第一客户端转发所述响应包;
所述第一客户端,还用于在接收到所述响应包时,实现与所述第二客户端成功建立连接;
所述第二客户端,还用于在接收到所述第一客户端发送的第二数据包时,实现与所述第一客户端成功建立连接;
所述第一客户端,具体用于获得由小于第一差值的各正整数形成的路由数范围,其中,所述第一差值为:所述第二路由数与第一路由数之间的差值;从所述路由数范围中选择目标路由数;根据所述目标路由数和所述第一路由数,确定所述第三路由数。
8.根据权利要求7所述的系统,其特征在于,
所述第一客户端,还用于向所述第一公网地址发送探测包;获得所述第一网络设备反馈的所述探测包所经过的路由数,作为第一路由数。
9.根据权利要求7所述的系统,其特征在于,
所述第一客户端,还用于获得所述第一客户端向所述第一公网地址发送数据包时数据包所经过的历史路由数;对所述历史路由数进行统计分析,根据统计分析结果确定所述第一客户端向所述第一公网地址发送数据包时数据包所经过的路由数,作为第一路由数。
10.根据权利要求7-9中任一项所述的系统,其特征在于,所述第一网络设备、第二网络设备为网络地址转换NAT设备,
所述第一客户端,还用于获得所述第一客户端连接的第一网络设备的第一公网地址,基于所述第一公网地址,确定所述第一网络设备的网络地址转换NAT类型;判断所述NAT类型是否为端口受限类型;若为是,执行所述通过服务器向第二客户端发送所述第一客户端连接的第一网络设备的第一公网地址,并通过所述服务器获得所述第二客户端连接的第一网络设备的第二公网地址的步骤;
所述第二客户端,还用于获得所述第二客户端连接的第二网络设备的第二公网地址,基于所述第二公网地址,确定所述第二网络设备的网络地址转换NAT类型;判断所述NAT类型是否为端口受限类型;若为是,执行所述通过服务器向第一客户端发送所述第二网络设备的第二公网地址,并通过所述服务器获得所述第二网络设备的第一公网地址的步骤。
11.一种连接建立装置,其特征在于,应用于第一客户端,所述装置包括:
地址发送和获得模块,用于通过服务器向第二客户端发送所述第一客户端连接的第一网络设备的第一公网地址,并通过所述服务器获得所述第二客户端连接的第二网络设备的第二公网地址,其中,所述第一网络设备与所述第二网络设备不同;
路由数确定模块,用于确定大于第一路由数且小于第二路由数的第三路由数,其中,所述第一路由数为:所述第一客户端向所述第一公网地址发送数据包时数据包经过的路由数,所述第二路由数为:所述第一客户端向所述第二公网地址发送数据包时数据包所经过的路由数;
第一数据包发送模块,用于基于路有数为所述第三路由数的跳转路径,向所述第二公网地址发送第一数据包,以使得所述第一网络设备根据所述第一数据包中所述第一客户端的地址和所述第二客户端的地址,记录所述第一客户端与第二客户端间的映射关系;
第二数据包发送模块,用于通过所述服务器向所述第二客户端发送第二数据包,以使得所述第一网络设备在接收到所述第二客户端发送的针对所述第二数据包的响应包时,基于所述映射关系向所述第一客户端转发所述响应包;
连接建立模块,用于在接收到所述响应包时,实现与所述第二客户端成功建立连接;
所述路由数确定模块,具体用于:
获得由小于第一差值的各正整数形成的路由数范围,其中,所述第一差值为:所述第二路由数与第一路由数之间的差值;
从所述路由数范围中选择目标路由数;
根据所述目标路由数和所述第一路由数,确定所述第三路由数。
12.一种连接建立装置,其特征在于,应用于第二客户端,所述装置包括:
地址发送和获得模块,用于通过服务器向第一客户端发送所述第二客户端连接的第二网络设备的第二公网地址,并通过所述服务器获得所述第一客户端连接的第一网络设备的第一公网地址,其中,所述第一网络设备与所述第二网络设备不同;
响应包发送模块,用于通过所述服务器接收所述第一客户端发送的第一数据包,生成针对所述第一数据包的响应包,向所述第一公网地址发送所述响应包,以使得所述第二网络设备根据所述响应包中所述第一客户端的地址和所述第二客户端的地址,记录所述第一客户端与第二客户端间的映射关系;以使所述第一网络设备基于所述映射关系向所述第一客户端转发所述响应包;
其中,所述第一网络设备记录的所述映射关系为所述第一客户端通过以下步骤记录的:基于路由数为第三路由数的跳转路径,向所述第二公网地址发送第一数据包,以使得所述第一网络设备根据所述第一数据包中所述第一客户端的地址和所述第二客户端的地址,记录所述第一客户端与第二客户端间的映射关系;所述第三路由数通过以下方式确定:获得由小于第一差值的各正整数形成的路由数范围,其中,所述第一差值为:第二路由数与第一路由数之间的差值;从所述路由数范围中选择目标路由数;根据所述目标路由数和所述第一路由数,确定所述第三路由数;所述第一路由数为:所述第一客户端向所述第一公网地址发送数据包时数据包经过的路由数,所述第二路由数为:所述第一客户端向所述第二公网地址发送数据包时数据包所经过的路由数;
连接建立模块,用于在接收到所述第一客户端发送的第二数据包时,实现与所述第一客户端成功建立连接。
13.一种终端设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-4任一所述的方法步骤。
14.一种终端设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求5或6所述的方法步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-4任一所述的方法步骤。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求5或6所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110970961.5A CN113676542B (zh) | 2021-08-23 | 2021-08-23 | 一种连接建立方法、系统及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110970961.5A CN113676542B (zh) | 2021-08-23 | 2021-08-23 | 一种连接建立方法、系统及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113676542A CN113676542A (zh) | 2021-11-19 |
CN113676542B true CN113676542B (zh) | 2023-06-02 |
Family
ID=78545394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110970961.5A Active CN113676542B (zh) | 2021-08-23 | 2021-08-23 | 一种连接建立方法、系统及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113676542B (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101651721B (zh) * | 2008-08-14 | 2013-11-27 | 百度在线网络技术(北京)有限公司 | 网络地址转换设备类型的判断方法和系统 |
US20180337886A1 (en) * | 2017-05-18 | 2018-11-22 | Filegear Inc. | Upgrading to direct connection for servers behind a network address translation device |
CN110166574A (zh) * | 2019-06-10 | 2019-08-23 | 深圳梨享计算有限公司 | 一种提高p2p连接率的方法及系统 |
CN113452805B (zh) * | 2019-09-19 | 2022-06-07 | 华为技术有限公司 | 一种nat穿越的方法、设备和系统 |
-
2021
- 2021-08-23 CN CN202110970961.5A patent/CN113676542B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113676542A (zh) | 2021-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8650312B2 (en) | Connection establishing management methods for use in a network system and network systems using the same | |
US20080215669A1 (en) | System and Method for Peer-to-Peer Connection of Clients Behind Symmetric Firewalls | |
US10637831B2 (en) | Method and apparatus for transmitting network traffic via a proxy device | |
US9385925B1 (en) | Anycast route detection | |
US11032122B2 (en) | Multicast delay diagnosis method and apparatus | |
US8254286B2 (en) | Method and system for detection of NAT devices in a network | |
JP6574057B2 (ja) | 自動構成サーバおよび方法 | |
US9001699B2 (en) | Systems and methods for communication setup via reconciliation of internet protocol addresses | |
CN112929241B (zh) | 一种网络测试方法及装置 | |
US9509777B2 (en) | Connection method and management server | |
CN113810288B (zh) | 一种报文回程方法及装置 | |
US7945656B1 (en) | Method for determining round trip times for devices with ICMP echo disable | |
EP2690832B1 (en) | Communication device, communication system, and communication method | |
CN107659436B (zh) | 一种防止业务中断的方法及装置 | |
CN113676542B (zh) | 一种连接建立方法、系统及装置 | |
US9313238B2 (en) | Systems and methods for communication setup via reconciliation of internet protocol addresses | |
CN111600798B (zh) | 一种发送和获取断言报文的方法和设备 | |
CN114598532B (zh) | 连接建立方法、装置、电子设备和存储介质 | |
JP4472651B2 (ja) | ネットワークアクセスシステムおよびネットワークアクセス方法 | |
CN102377834B (zh) | 网络地址转换设备及通信方法 | |
CN110351159A (zh) | 一种跨内网的网络性能测试方法及装置 | |
CN108540343B (zh) | 路径的检测方法及装置 | |
JPWO2009008052A1 (ja) | 中継装置および中継方法 | |
KR100495344B1 (ko) | 명시적 멀티캐스트의 수신성 시험과 도달성 시험을 위한방법 및 장치 | |
JP2002051041A (ja) | ネットワーク障害原因調査通知方法とその方法の実現のために用いられる端末 |
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 |