CN110266828A - 一种建立端到端网络连接的方法、装置及网络系统 - Google Patents
一种建立端到端网络连接的方法、装置及网络系统 Download PDFInfo
- Publication number
- CN110266828A CN110266828A CN201910501933.1A CN201910501933A CN110266828A CN 110266828 A CN110266828 A CN 110266828A CN 201910501933 A CN201910501933 A CN 201910501933A CN 110266828 A CN110266828 A CN 110266828A
- Authority
- CN
- China
- Prior art keywords
- node
- super
- nat
- data packet
- nat type
- 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.)
- Pending
Links
Classifications
-
- 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
- H04L61/2575—NAT traversal using address mapping retrieval, e.g. simple traversal of user datagram protocol through session traversal utilities for NAT [STUN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/72—Routing based on the source address
-
- 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/2514—Translation of Internet protocol [IP] addresses between local and global IP addresses
-
- 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/2517—Translation of Internet protocol [IP] addresses using port numbers
-
- 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/255—Maintenance or indexing of mapping tables
- H04L61/2553—Binding renewal aspects, e.g. using keep-alive messages
-
- 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
-
- 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
- H04L61/2589—NAT traversal over a relay server, e.g. traversal using relay for network address translation [TURN]
-
- 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
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W40/00—Communication routing or communication path finding
- H04W40/02—Communication route or path selection, e.g. power-based or shortest path routing
- H04W40/12—Communication route or path selection, e.g. power-based or shortest path routing based on transmission quality or channel quality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W40/00—Communication routing or communication path finding
- H04W40/02—Communication route or path selection, e.g. power-based or shortest path routing
- H04W40/22—Communication route or path selection, e.g. power-based or shortest path routing using selective relaying for reaching a BTS [Base Transceiver Station] or an access point
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供了一种建立端到端网络连接的方法及装置。其中,该方法包括:第一节点从服务器获取超级节点信息;然后,利用超级节点获取自身的NAT类型,以及,从服务器获取待连接的第二节点的NAT类型;然后,根据自身的NAT类型和第二节点的NAT类型确定是否使用中继节点,并从超级节点中选取中继节点与第二节点建立连接。由此,该方案实现了任意网络环境下的终端设备在不需要使用服务器进行数据中转的情况下建立网络连接和数据传输,无需维护用于数据中转的服务器,避免维护服务器所需额外投入的带宽等成本;并且,该方案可以通过选取大量的超级节点承担数据中继作用,使超级节点的网络资源得到充分利用,提高网络资源利用率。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种建立端到端网络连接的方法、装置及网络系统。
背景技术
随着互联网、智能硬件和物联网等相关技术的发展,接入到互联网中的终端设备的数量迅速增加,预计到2020年,互联网中在线的终端设备将会达到250亿台以上。理想状态下,为了便于终端设备的互联,每个终端设备都可以拥有自己的公网互联网协议(internet protocol,IP)地址。但是,随着在线设备数量的增加,在当前广泛采用互联网通信协议第四版(internet protocol version 4,IPv4)下,可分配的公网IP地址的数量严重不足。
为了解决公网IP地址紧缺的问题,互联网中引入了网络地址转换(networkaddress translation,NAT)技术。NAT是一种在数据包通过路由器或防火墙时重写其来源IP地址或目的IP地址的技术,具体利用NAT设备将多个网络设备置于一个私有的内网环境中,根据互联网工程任务小组(internet engineering task force,IETF)发布的请求意见稿(request for comments,RFC)1918私有网络地址分配(address allocation forprivate internets)协议定义的内网IP地址空间,为内网环境中的每个设备分配内网IP地址,并用通过内网IP地址到外网IP地址的映射,使位于内网环境中的网络设备通过同一个公网IP地址接入互联网,由此解决IPv4地址短缺的问题。
NAT技术在解决IPv4地址短缺的问题的同时,也带来了网络设备之间连接受限的问题。按照NAT对网络连接的限制条件,NAT可以分为完全圆锥型NAT(full cone NAT)、受限圆锥型NAT(address-restricted cone NAT)、端口受限圆锥型NAT(Port-Restricted coneNAT)和对称型NAT(Symmetric NAT)。其中,除完全圆锥型NAT以外,另外三种类型的NAT都只允许内网设备主动向外部发起连接,不接受来自外部的主动连接,因此,在没有建立连接的情况下,来自外部设备连接请求会被NAT设备拒绝,导致内网设备无法与外部设备建立连接。
二了解网络设备在任意NAT类型下的连接问题,NAT穿越(NAT traversal)技术得到广泛应用。目前的NAT穿越大多基于STUN(session traversal utilities for NAT,NAT会话穿越应用程序)协议和/或TURN(traversal using relay NAT)协议,使用中继服务器处理NAT环境中的网络设备之间的连接,其中,作为数据交互双方的网络设备需要分别与中继服务器建立连接,并将数据发送给中继服务器,由中继服务器将数据转发给双方的网络设备。上述NAT穿越技术中,网络设备之间的连接质量会受到中继服务器的性能、负载和网络环境等因素的影响而存在波动,并且中继服务器的维护也通常需要投入大量的带宽成本。
发明内容
本申请实施例提供了一种建立端到端网络连接的方法、装置及网络系统,能够实现任意网络环境下的终端设备在不需要使用中继服务器进行数据中转的情况下建立网络连接和数据传输。
第一方面,本申请实施例提供了一种建立端到端网络连接的方法。该方法包括:第一节点从服务器获取超级节点信息,超级节点是服务器确定的、网络地址转换NAT类型是圆锥型NAT的节点,或者,具有公网互联网协议IP地址的节点;第一节点向超级节点发送数据包,并根据超级节点返回的数据包确定自身的NAT类型;第一节点从服务器获取待连接的第二节点的NAT类型;第一节点根据自身的NAT类型和第二节点的NAT类型确定是否使用中继节点;当第一节点确定使用中继节点时,第一节点从超级节点中选取节点作为中继节点,并使用中继节点与第二节点建立连接。
本申请实施例提供的方法,第一节点从服务器获取超级节点信息;然后,利用超级节点获取自身的NAT类型,以及,从服务器获取待连接的第二节点的NAT类型;然后,根据自身的NAT类型和第二节点的NAT类型确定是否使用中继节点,并在需要使用中继节点时,从超级节点中选取中继节点与第二节点建立连接。由此,该方法实现了任意网络环境下的终端设备在不需要使用服务器进行数据中转的情况下建立网络连接和数据传输,从而无需维护用于数据中转的服务器,避免维护服务器所需额外投入的带宽等成本;并且,由于任何NAT类型满足要求的终端设备都可以作为超级节点,因此,超级节点可以大量分布在网络系统中,承担数据中继作用,使超级节点的网络资源得到充分利用,提高网络资源利用率。
在一种可选择的实现方式中,第一节点向至少两个超级节点发送数据包;第一节点根据是否接收到超级节点返回的数据包,以及,超级节点返回的数据包的参数确定自身的NAT类型。由此,第一节点可以在不依靠服务器的情况下,确定自身的NAT类型,为确定与第二节点连接是否使用中继节点提供依据。
在一种可选择的实施方式中,第一节点从超级节点中选取第一超级节点和第二超级节点;第一节点向第一超级节点发送第一数据包,使第一超级节点获取第一数据包的源IP地址和源端口,并指示第二超级节点向第一数据包的源IP地址和源端口发送第二数据包;第一节点如果接收到第二数据包,则确定自身的NAT类型是完全圆锥型NAT。由此,借助第一超级节点和第二超级节点,第一节点能够确定自身NAT类型是否是完全圆锥型NAT。
在一种可选择的实施方式中,第一节点如果未接收到第二数据包,向第二超级节点发送第三数据包,使第二超级节点获取第三数据包的源IP地址和源端口,并分析第一数据包的源端口和第三数据包的源端口是否相同;如果第一数据包的源端口和第三数据包的源端口不同,第一节点确定自身的NAT类型是对称型NAT。由此,第一节点在确定自身的NAT类型不是完全圆锥型NAT的情况下,借助第二超级节点,进一步确定自身NAT类型是否是对称型NAT。
在一种可选择的实施方式中,如果第一数据包的源端口和第三数据包的源端口相同,第一节点分析是否接收到第四数据包,第四数据包是第二超级节点向第三数据包的源IP地址和源端口发送的,第二超级节点发送第四数据包使用的公网端口与第三数据包的目的端口不同;第一节点如果接收到第四数据包,则确定自身的NAT类型是受限圆锥型NAT;第一节点如果未接收到第四数据包,则确定自身的NAT类型是端口受限圆锥型NAT。由此,第一节点在确定自身的NAT类型不是完全圆锥型NAT或者对称型NAT的情况下,借助第二超级节点,能够进一步确定自身NAT类型是否是受限圆锥型NAT或端口受限圆锥型NAT。
在一种可选择的实施方式中,第一节点获取每个超级节点的链路质量,并根据链路质量选取第一超级节点和第二超级节点。由此,保证第一节点与第一超级节点和第二超级节点形成低延时且稳定的通信,提高第一节点确定自身NAT类型的速度和准确性。
在一种可选择的实施方式中,第一节点确定超级节点信息中是否包含历史选取过的超级节点,如果包含历史选取过的超级节点,则从历史选取过的超级节点中选取第一超级节点和第二超级节点。由此,第一节点不需要获取每个超级节点的链路质量,就可以选取第一超级节点和第二超级节点,提高选取速度。
在一种可选择的实施方式中,第一节点从服务器获取在线节点信息;第一节点根据用户指令从在线节点信息中确定第二节点的节点身份标识(identity,ID);第一节点向服务器发送携带第二节点的节点ID的查询指令;第一节点接收服务器根据第二节点的节点ID查询到的第二节点的NAT类型。由此,第一节点从服务器获取第二节点的NAT类型,为是否使用中继节点与第二节点建立连接提供判断依据。
在一种可选择的实施方式中,当第一节点和/或第二节点的NAT类型为完全圆锥型NAT时,或者,当第一节点和/或第二节点具有公网IP地址时,第一节点确定不需要使用中继节点。由此,利用完全圆锥型NAT下的节点和具有公网IP地址的节点能够被任何节点访问的特点,当第一节点和第二节点中的任何一个的NAT类型为完全圆锥型NAT,或者,任何一个具有公网IP地址时,第一节点可以与第二节点直连,从而不需要使用中继节点。
在一种可选择的实施方式中,当第一节点和第二节点的NAT类型为受限圆锥型NAT或端口受限圆锥型NAT时,或者,当第一节点和第二节点满足一个节点的NAT类型为对称型NAT,另一个节点的NAT类型为受限圆锥型NAT时,第一节点确定使用中继节点,中继节点用于第一节点和第二节点进行UDP(user datagram protocol,用户数据报协议)打洞(holepunch)。
在一种可选择的实施方式中,当第一节点和第二节点满足一个节点的NAT类型为对称型NAT,另一个节点的NAT类型为端口受限圆锥型NAT时,第一节点确定使用中继节点,中继节点用于第一节点和第二节点进行端口预测。
在一种可选择的实施方式中,当第一节点和第二节点的NAT类型同时为对称型NAT时,第一节点确定使用中继节点,中继节点用于在第一节点和第二节点之间转发数据。
在一种可选择的实施方式中,第一节点获取每个超级节点的链路质量,并根据链路质量从超级节点中选取中继节点。由此,保证中继节点与第一节点和第二节点通过中继节点的数据转发形成低延时且稳定的通信。
在一种可选择的实施方式中,第一节点、第二节点和超级节点包括位于广域网(wide area network,WAN),和/或,局域网(local area network,LAN)中的终端设备。
在一种可选择的实施方式中,服务器位于广域网WAN,和/或,局域网LAN中;服务器具有公网IP地址,或者,服务器的NAT类型是圆锥型NAT。由此,保证任何一个终端设备都能主动访问到该服务器,并与该服务器建立连接。
在一种可选择的实施方式中,第一节点使用中继节点与第二节点进行即时通信(instant messaging,IM),即时通信包括语音通信、视频通信、图像传输、文本传输和/或文件传输中的至少一种形式。
第二方面,本申请实施例还提供一种建立端到端网络连接的装置。该装置包括:收发器、存储器和处理器;其中,存储器包括有程序指令,程序指令被处理器运行时,使得装置用于执行如下步骤:从服务器获取超级节点信息,超级节点是服务器确定的、网络地址转换(network address translation,NAT)类型是圆锥型NAT的节点,或者,具有公网互联网协议(internet protocol,IP)地址的节点;向超级节点发送数据包,并根据超级节点返回的数据包确定自身的NAT类型;从服务器获取待连接的第二节点的NAT类型;根据自身的NAT类型和第二节点的NAT类型确定是否使用中继节点;当确定使用中继节点时,从超级节点中选取节点作为中继节点,并使用中继节点与第二节点建立连接。
本申请实施例提供的装置,用于从服务器获取包含超级节点的超级节点信息;然后,利用超级节点获取自身的NAT类型,以及,从服务器获取待连接的第二节点的NAT类型;然后,根据自身的NAT类型和第二节点的NAT类型确定是否使用中继节点,并在需要使用中继节点时,从超级节点中选取中继节点与第二节点建立连接。由此,该方法实现了任意网络环境下的终端设备在不需要使用服务器进行数据中转的情况下建立网络连接和数据传输,无需维护用于数据中转的服务器,从而避免维护服务器所需额外投入的带宽等成本;并且,由于任何NAT类型满足要求的终端设备都可以作为超级节点,因此,超级节点可以大量分布在
中,承担数据中继作用,使超级节点的网络资源得到充分利用,提高网络资源利用率。
进一步地,本申请实施例提供的装置,还可以执行前述第一方面的其他实施方式。
第三方面,本申请实施例还提供一种网络系统。包括:节点和服务器;服务器,用于向第一节点发送超级节点信息,超级节点是服务器确定的NAT类型是圆锥型NAT的节点,或者,具有公网IP地址的节点;第一节点,用于向超级节点发送数据包,并根据超级节点返回的数据包确定自身的NAT类型;服务器,还用于响应第一节点的请求,向第一节点发送第二节点的NAT类型,第二节点是第一节点选取的待连接的节点;第一节点,还用于根据自身的NAT类型和第二节点的NAT类型确定是否使用中继节点;第一节点,还用于所当确定使用中继节点时,从超级节点中选取节点作为中继节点,并使用中继节点与第二节点建立连接。
本申请实施例提供的系统,第一节点从服务器获取包含超级节点的超级节点信息;然后,利用超级节点获取自身的NAT类型,以及,从服务器获取待连接的第二节点的NAT类型;然后,根据自身的NAT类型和第二节点的NAT类型确定是否使用中继节点,并在需要使用中继节点时,从超级节点中选取中继节点与第二节点建立连接。由此,该方法实现了任意网络环境下的终端设备在不需要使用服务器进行数据中转的情况下建立网络连接和数据传输,从而无需维护用于数据中转的服务器,避免维护服务器所需额外投入的带宽等成本;并且,由于任何NAT类型满足要求的终端设备都可以作为超级节点,因此,超级节点可以大量分布在网络系统中,承担数据中继作用,使超级节点的网络资源得到充分利用,提高网络资源利用率。
进一步地,本申请实施例提供的系统中的第一节点,还可以执行前述第一方面的其他实施方式。
第四方面,本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的方法。
第五方面,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面的方法。
第六方面,本申请实施例还提供了一种芯片系统,该芯片系统包括处理器,用于支持上述装置或系统实现上述方面中所涉及的功能,例如,生成或处理上述方法中所涉及的信息。
附图说明
图1示出了一个典型的NAT应用场景;
图2是完全圆锥型NAT的示意图;
图3是受限圆锥型NAT的示意图;
图4是端口受限圆锥型NAT的示意图;
图5是对称型NAT的示意图;
图6为目前的NAT穿越技术的示意图;
图7为本申请实施例提供的一种网络系统的结构示意图;
图8为本申请实施例提供的一种建立端到端网络连接的方法的流程图;
图9示出了使用中继节点进行UDP打洞的示意图;
图10示出了使用中继节点进行端口预测直连的示意图;
图11示出了第一节点确定自身NAT类型的流程图;
图12为第一节点确定自身NAT类型的第一阶段示意图;
图13为第一节点确定自身NAT类型的第二阶段示意图;
图14为第一节点确定自身NAT类型的第三阶段示意图;
图15是本申请实施例提供的一种建立端到端网络连接的方法步骤S103的流程图;
图16为本申请实施例提供的一种建立端到端网络连接的装置的结构示意图;
图17为本申请实施例提供的另一种建立端到端网络连接的装置的结构示意图;
图18为本申请实施例提供的一种计算机可读存储介质示意图;
图19为本申请实施例提供的芯片系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述。在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本申请实施例中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或两个以上。
在对本申请实施例的技术方案进行阐述说明之前,首先对本申请实施例的技术方案涉及到的技术背景和应用场景做具体说明。
互联网协议IP地址可以包括公网地址和内网地址。其中,公网地址是指在因特网Internet中唯一的IP地址,例如广域网(wide area network,WAN)的IP地址,公网地址可以在公网中路由;内网地址是指在内部网络,例如局域网(local area network,LAN)的IP地址,内网地址无法在公网中路由。根据RFC 1918私有网络地址分配协议,内网IP地址可以包括三个范围不同的互联网通信协议第四版(internet protocol version 4,IPv4)地址空间,用于不同规模的企业内网或者专用内网使用,如下:
10.0.0.0-10.255.255.255,共约1677万个IP地址。
172.16.0.0-172.31.255.255,共约104万个IP地址。
92.168.0.0-192.168.255.255,共约65536个IP地址。
由于内网中的网络设备通常数量有限,因此在IPv4和RFC 1918中,内网IP地址的数量能够满足使用需求。而对于公网来说,由于接入到互联网中的网络设备的数量越来越多,IPv4协议的IP地址数量正在出现紧缺甚至耗尽情况,为了解决IPv4地址紧缺的问题,当前互联网中引入了网络地址转换(network address translation,NAT)技术。NAT是一种在数据包通过NAT设备(路由器或防火墙)时重写其来源IP地址或目的IP地址的技术,具体利用NAT设备将多个网络设备置于一个私有的内网环境中,根据RFC 1918私有网络地址分配(address allocation for private internets)协议定义的内网IP地址空间,为内网环境中的每个设备分配内网IP地址,并用通过内网IP地址到外网IP地址的映射,使位于内网环境中的网络设备通过同一个公网IP地址接入互联网,由此解决IPv4地址短缺的问题。
图1示出了一个典型的NAT应用场景。如图1所示,在一个典型的配置中,一个专用网络包括具有内网地址空间(比如192.168.x.x或10.x.x.x)的专用内网和连接在这个内网的一个路由器(作为NAT设备)。这个路由器占有这个网络地址空间的一个内网地址(比如10.76.100.1),同时它还通过一个或多个因特网服务提供商(internet serviceprovider,ISP)提供的公网IP地址连接到公网。当数据包由内网向公网传递时,数据包的源地址(源IP和源端口)从内网地址(内网IP和内网端口)转换为公网地址(公网IP和公网端口)。并且,路由器跟踪每个连接上的目的地址(目的IP和目的端口),当有数据包返回路由器时,它通过输出阶段记录的连接跟踪数据来决定该转发给内网中的哪个网络设备。
NAT技术在解决IPv4地址短缺的问题的同时,也带来了网络设备之间的连接受限的问题。按照NAT对网络连接的限制条件,NAT可以分为完全圆锥型NAT(full cone NAT)、受限圆锥型NAT(address-restricted cone NAT)、端口受限圆锥型NAT(Port-Restrictedcone NAT)和对称型NAT(Symmetric NAT)。下面结合附图对上述四种NAT类型做具体说明:
图2是完全圆锥型NAT的示意图。如图2所示,当内网主机内建立一个网络嵌套字socket(LocalIP:LocalPort(内网IP地址:内网端口)),并通过该socket第一次向外部主机发送数据包时,NAT设备会为其分配一个(PublicIP:PublicPort(公网IP地址:公网端口)),以后该内网主机使用这个socket向外部任何主机发送的数据包都会使用这个(PublicIP:PublicPort)。并且,任何外部主机都可以通过这个(PublicIP:PublicPort)将数据包发送给该内网主机。
图3是受限圆锥型NAT的示意图。如图3所示,当内网主机内建立一个网络嵌套字socket(LocalIP:LocalPort),并通过该socket第一次向外部主机发送数据包时,NAT设备会为其分配一个(PublicIP:PublicPort),以后该内网主机使用这个socket向外部任何主机发送的数据包都会使用这个(PublicIP:PublicPort)。此外,外网主机想要向内网主机发送数据包需要满足两个条件:第一,内网主机曾经通过该socket向某个外网主机(IP-1:Port-1)发送过数据包;该外网主机使用(IP-1:任意Port)向(PublicIP:PublicPort)发送数据包;如果不满足这两个条件,内网主机无法接收到该外网主机的数据包。
图4是端口受限圆锥型NAT的示意图。如图4所示,当内网主机内建立一个网络嵌套字socket(LocalIP:LocalPort),并通过该socket第一次向外部主机发送数据包时,NAT设备会为其分配一个(PublicIP:PublicPort),以后该内网主机使用这个socket向外部任何主机发送的数据包都会使用这个(PublicIP:PublicPort)。此外,外网主机想要向内网主机发送数据包需要满足两个条件:第一,内网主机曾经通过该socket向某个外网主机(IP-1:Port-1)发送过数据包;该外网主机使用(IP-1:Port-1)向(PublicIP:PublicPort)发送数据包;如果不满足这两个条件,内网主机无法接收到该外网主机的数据包。
图5是对称型NAT的示意图。如图5所示,当内网主机内建立一个网络嵌套字socket(LocalIP:LocalPort),并通过该socket第一次向外部主机1发送数据包时,NAT设备会为其分配一个(PublicIP-1:Port-1),如果该内网主机还使用这个socket第一次向外部主机2发送数据包,NAT设备还会为其分配一个(PublicIP-2:Port-2),如果NAT设备有多于一个公网IP地址,则PublicIP-1和PublicIP-2可能不同,如果NAT设备只有一个公网IP地址,则Port-1和Port-2一定不同。此外,任何外部主机如果想要发送数据给这个内网主机,那么它首先应该接收到这个内网主机发送给他的数据,否则即使外部主机知道内网主机的一个(PublicIP:Port),也不能发送数据给这个内网主机。
由此可见,由于一些NAT类型只允许内网主机主动向外部主机发起连接,不接受来自外部主机的主动连接,因此,在没有建立连接的情况下,来自外部设备连接请求会被NAT设备拒绝,导致内网设备无法与外部设备建立连接。
为了解网络设备在任意NAT类型下的连接问题,NAT穿越(NAT traversal)技术得到的广泛应用。图6为目前的NAT穿越技术的示意图。如图6所示,目前的NAT穿越大多基于STUN(session traversal utilities for NAT,NAT会话穿越应用程序)协议和/或TURN(traversal using relay NAT)协议,使用中继服务器来处理网络设备之间的连接。其中,该中继服务器是一个公共服务器,使用的是一个众所周知的、从全球任何地方都能访问得到的公网IP地址,内网中的网络设备首先主动与中继服务器建立并保持连接,当通信双方的网络设备进行数据交互时,将数据包发送给中继服务器,由中继服务器负责将数据包转发给对方的网络设备。
示例地,如图6所示,设备A、B、C分别与中继服务器建立连接。当位于局域网内的设备A想要发送一张图片给位于另一个局域网内的设备B时,设备A需要首先将图片发送给中继服务器,中继服务器接收到设备A发送的图片后,再将图片转发给设备B;当位于公网中的设备C想要发送一张图片给位于局域网中的设备A时,设备C也需要首先将图片发送给中继服务器,中继服务器接收到设备C发送的图片后,再将图片转发给设备A。
由此可见,在目前的NAT穿越技术中,中继服务器需要转发所有设备产生的数据,由此会带来严重的带宽开销,带宽投入成本高,中继服务器维护成本高。并且,由于中继服务器的性能、负载和网络环境等会存在波动,网络设备之间的连接质量也会受到影响。
本申请实施例提供了一种建立端到端网络连接的方法。该方法可以应用到图7示出的网络系统中。如图7所示,该网络系统包括服务器和节点。其中,节点根据在本申请实施例中的网络作用不同被命名为普通节点和超级节点,普通节点和超级节点除网络作用不同以外没有本质区别,一个节点既可以是普通节点也可能是超级节点。普通节点和超级节点可以是位于广域网(wide area network,WAN),和/或,局域网(local area network,LAN)中的终端设备,例如:手机、个人电脑、工作站、平板电脑、智能穿戴设备、智能家居设备、物联网设备等。节点可以安装有客户端程序,拥有特定账号的用户可以在客户端程序中使用账号登录到服务器,使节点与服务器建立长连接。服务器可以位于广域网WAN,和/或,局域网LAN中;并且服务器应当具有公网IP地址,或者,服务器的NAT类型是圆锥型NAT,使任何一个终端设备都能主动访问到该服务器,并与该服务器建立连接。
图8为本申请实施例提供的一种建立端到端网络连接的方法的流程图。该方法用于两个节点建立端到端的网络连接,实现两个节点之间的端到端通信,比如即时通信,例如:语音通信、视频通信、图像传输、文本传输和文件传输等。为便于描述,本申请实施例将这两个节点称为第一节点和第二节点,其中,第一节点为发起连接的节点,第二节点为响应连接的节点。如图8所示,该方法可以包括以下步骤:
步骤S101,第一节点从服务器获取超级节点信息,超级节点是服务器确定的、网络地址转换NAT类型是圆锥型NAT的节点,或者,具有公网互联网协议IP地址的节点。
互联网协议IP地址可以包括公网IP地址和内网IP地址。其中,公网IP地址是指在因特网Internet中唯一的IP地址,例如广域网(wide area network,WAN)的IP地址,公网IP地址可以在公网中路由;内网IP地址是指在内部网络,例如局域网(local area network,LAN)的IP地址,内网IP地址无法在公网中路由。
具体地,当第一节点登录到服务器时,服务器根据用户账号和公钥等信息对第一节点进行登录验证,如果第一节点登录验证通过,则第一节点与服务器建立长连接,并且向第一节点发送超级节点信息。超级节点信息可以包括超级节点的节点身份标识(identity,ID)、IP地址(包括IPv4地址和/或IPv6地址)、端口(包括公网端口和内网端口(如果存在NAT))和在线状态等信息。其中,节点ID可以是任何用于确定节点身份的信息,例如节点编号、节点的MAC地址、节点的硬件识别码或节点的唯一标识符(unique identifier,UID)等。
在一个实施例中,超级节点信息如表1所示可以是超级节点列表。
| 节点ID | IP地址 | 端口 | 在线状态 |
| 1 | 116.138.177.20 | 49153 | 在线 |
| 2 | 139.215.187.111 | 50995 | 在线 |
| 3 | 2001:DB8:2de::e13 | 60125 | 在线 |
| 4 | 2001:0DB8::1428:57ab | 54230 | 离线 |
表1超级节点列表
在一个实施例中,在网络系统建立初期,服务器可能还没有从连接的节点中确定超级节点,或者,还没有确定出足够数量的超级节点,此时,服务器可以将自身确定为超级节点,当网络系统具有多个服务器时,可以确定其中的一部分服务器为超级节点。
在一个实施例中,如果服务器确定了多个超级节点,可以选择仅向第一节点发送其中一部分超级节点信息,例如:根据第一节点的地理位置,仅发送第一节点附近的超级节点信息。
作为一种可选择的实施方式,服务器可以从第一节点发送的数据包中获取第一节点的公网IP地址,根据该公网IP地址确定第一节点的地理位置信息,例如:位于A市;然后,服务器可以从已确定的超级节点中选取位于A市的超级节点信息发送给第一节点。
作为一种可选择的实施方式,第一节点可以通过内置的GPS模块等获取自身的地理位置信息,并在登录到服务器时,将自身的地理位置信息发送给服务器,使服务器根据第一节点的地理位置信息选择第一节点附近的超级节点信息,并发送给第一节点。
作为一种可选择的实施方式,服务器可以根据第一节点的公网IP地址获取第一节点的因特网服务提供商ISP信息,然后选择与第一节点具有相同ISP的超级节点信息发送给第一节点。示例地,如果服务器根据第一节点的公网IP地址确定第一节点的ISP为中国电信,则服务器会选择ISP同为中国电信的超级节点信息发送给第一节点。
由此,服务器通过向第一节点发送附近的超级节点信息或相同ISP的超级节点信息,能够保证第一节点和超级节点之间具有较低的连接延迟和稳定的连接速度。
本申请实施例要求超级节点能够接收到其他节点主动发起的连接请求,并与发起连接请求的节点建立连接。因此,为了满足上述要求,根据目前NAT类型的限制规则,超级节点可以是NAT类型是圆锥型NAT的节点,或者具有公网IP地址的节点。目前,由于IPv4地址短缺,ISP通常不会为节点分配IPv4的公网地址,而IPv6可分配的IP地址数量巨大,无需担心地址短缺问题,因此,当ISP支持IPv6时,ISP通常会为每个节点分配唯一的公网IPv6地址,从而这些具有IPv6地址的节点可作为超级节点。
步骤S102,第一节点向超级节点发送数据包,并根据超级节点返回的数据包确定自身的NAT类型。
在一个实施例中,第一节点可以选定至少两个超级节点确定自身的NAT类型,具体可以包括向至少两个超级节点发送数据包,超级节点接收到数据包后,根据规则响应并返回数据包,然后,第一节点可以根据是否接收到超级节点返回的数据包,以及,超级节点返回的数据包的源IP地址和源端口等参数确定自身的NAT类型。步骤S102中的第一节点选定至少两个超级节点确定自身的NAT类型的具体实现过程,将结合图11-图14做进一步阐述说明。
在一个实施例中,每个节点在每次登录到服务器之后,都会根据获取的超级节点确定自身的NAT类型,并上报给服务器,使服务器记录所有登录过节点的NAT类型,并根据节点最新上报的NAT类型对超级节点信息进行更新维护。例如,如果一个节点之前未被确定为超级节点,但是它在T0时刻最新上报的NAT类型为完全圆锥型NAT,则服务器可以在T0时刻将它确定为超级节点;如果一个节点已经被确定为超级节点,但是它在T1时刻最新上报的NAT类型为对称型NAT,则服务器可以在T1时刻确定它为普通节点。
步骤S103,第一节点从服务器获取待连接的第二节点的NAT类型。
第一节点在登录到服务器之后,可以从服务器同步获取在线节点,并通过客户端呈现给用户;然后,用户可以通过在客户端执行选择操作,从在线节点中确定第二节点;然后,第一节点根据用户确定的第二节点向服务器发起获取第二节点的NAT类型的请求;服务器响应第一节点的请求,查询得到第二节点的NAT类型,并返回给第一节点。步骤S103,即第第一节点从服务器获取待连接的第二节点的NAT类型的具体实现过程,将结合图15做进一步阐述说明。
步骤S104,第一节点根据自身的NAT类型和第二节点的NAT类型确定是否使用中继节点。
本申请实施例中,中继节点的NAT类型为圆锥型NAT,或者,具有公网互联网协议(internet protocol,IP)地址,中继节点可以分别与第一节点和第二节点建立连接。当第一节点和第二节点需要建立连接和进行数据通信时,可以根据自身的NAT类型借助中继节点建立连接,可以通过中继节点的数据中转建立间接连接。当第一节点和第二节点通过中继节点建立间接连接时,第一节点和第二节点之间的数据通信都通过中继节点的转发送达。
步骤S105,当第一节点确定使用中继节点时,第一节点从超级节点中选取节点作为中继节点,并使用中继节点与第二节点建立连接。
表2示出了节点的NAT类型和连接方式的对应关系。
表2节点的NAT类型和连接方式
在一个实施例中,当第一节点和/或第二节点的NAT类型为完全圆锥型NAT,或者第一节点和/或第二节点具有公网IP地址时,第一节点和第二节点可以通过“直连”的方式建立连接,不需要使用中继节点。目前,ISP为节点分配的IPv6地址均为公网IP地址,因此,如果第一节点和/或第二节点具有IPv6地址,则可以通过“直连”的方式建立连接,不需要使用中继节点。
在一个实施例中,当第一节点和第二节点的NAT类型为受限圆锥型NAT或者端口受限圆锥型NAT时,第一节点和第二节点可以通过“穿越后直连”的方式建立连接。“穿越后直连”具体包括第一节点和第二节点首先利用中继节点进行UDP打洞(UDP holepunch),打洞成功后,建立直连。当一个节点的NAT类型为对称性NAT,另一个节点的NAT类型为受限圆锥型NAT时;第一节点和第二节点也可以通过“穿越后直连”的方式建立连接。
图9示出了使用中继节点进行UDP打洞的示意图。如图9所示,第一节点A位于NAT设备N1下,第二节点B位于NAT设备N2下,NAT设备N1拥有公网IP地址P1,NAT设备N2拥有公网IP地址P2,C1为中继节点。本申请实施例使用中继节点进行UDP打洞,以建立第一节点A和第二节点B之间的直接连接,包括以下步骤:
步骤一:第一节点A和第二节点B分别和中继节点C1建立UDP连接;NAT设备N1和N2创建UDP转换状态,NAT设备N1为第一节点A分配公网端口X,NAT设备N2为第二节点B分配公网端口Y。
步骤二,第一节点A向中继节点C1发送UDP包,以将第一节点A期望与第二节点B建立连接的请求告知中继节点C1。
步骤三,中继节点C1向第二节点B发送UDP包,以将第一节点A期望与第二节点B建立连接的请求和第一节点A的公网IP地址和公网端口(P1:X)告知第二节点B。
步骤四,如果第二节点B接受了第一节点A的连接请求,则向第一节点A的公网IP地址和公网端口(P1:X)发送UDP包。第二节点B发送的UDP包被NAT设备N1收到后不会转发给第一节点A,而是被丢弃,因为第一节点A之前未向第二节点B发送过数据包。
步骤五,第一节点A向第二节点B的公网IP地址和公网端口(P2:Y)发送UDP包,其中,(P2:Y)可由中继节点C1告知第一节点A。由于第二节点B之前向第一节点A发送过UDP包,因此,NAT设备N2会将该数据包转发给第二节点B,使第二节点B能够接收到第一节点A的UDP包。
至此,第一节点A和第二节点B打洞成功,建立直连通信。
在一个实施例中,当第一节点和第二节点中的其中一个节点为对称型NAT,另一个节点为端口受限圆锥型NAT时,第一节点和第二节点可以通过“端口预测直连”的方式建立连接,“端口预测直连”的方式至少需要借助两个中继节点来实现。
图10示出了使用中继节点进行端口预测直连的示意图。如图10所示,第一节点A位于NAT设备N1下,第二节点B位于NAT设备N2下,NAT设备N1拥有公网IP地址P1,NAT设备N2拥有公网IP地址P2,C1和C2为中继节点。
进一步结合图10,当第一节点A为对称型NAT,第二节点B为端口受限圆锥型NAT时,第一节点A和第二节点B使用“端口预测直连”建立直接连接,可以包括以下步骤:
步骤一,第一节点A向中继节点C1发送数据包,使中继节点C1获得NAT设备N1为第一节点A分配的公网端口X1。
步骤二,中继节点C1将公网端口X1反馈给第一节点A。
步骤三,第一节点A向中继节点C2发送数据包,该数据包括中继节点C1反馈的公网端口X1等信息,使中继节点C2获得NAT设备N1两次为第一节点A分配的公网端口X1和X2。
步骤四,第二节点B向C2发送数据包,使中继节点C2获得NAT设备N2为第二节点B分配的公网端口Y。
步骤五,中继节点C2基于获取的公网端口X1和X2,对NAT设备N1分配的端口进行预测,并将预测结果发送给第二节点B,以及将公网端口Y反馈给第一节点A,预测结果中可以包括多个预测的端口。
步骤六,第二节点B以预测的端口作为目标端口,向第一节点A发送大量数据包。
步骤七,第一节点A以端口Y为目标端口,向第二节点B发送大量数据包,随后转入接收模式。
如果预测的端口命中了NAT设备N1在步骤七为第一节点A分配的公网端口,则第二节点B能够接收到第一节点A向端口Y发送的数据包,第一节点A能够接收到第二节点B向命中端口发送的数据包。至此,第一节点A和第二节点B端口预测成功,建立直连通信。
在一个实施例中,如果第一节点和第二节点的NAT类型均为对称型NAT,则第一节点和第二节点可以通过中继节点转发数据建立通信。具体包括:第一节点和第二节点分别和中继节点建立连接,第一节点和第二节点之间需要传输的数据均发送给中继节点,由中继节点转发给对方节点。
在一个实施例中,第一节点可以对每个已知的超级节点执行tranceroute操作或者ping操作,以获取第一节点与每个超级节点之间的路由追踪信息(路由跳数、路线)、通信耗时和/或丢包率等能够体现链路质量的指标信息,然后,根据至少一种指标信息选取链路质量较好的一个超级节点作为中继节点。
例如:选取通信耗时最低的超级节点作为中继节点;或者,当通信耗时接近时,选取丢包率最低的超级节点最为中继节点;当通信耗时和丢包率两种指标信息都接近时,选取路由跳数最少的超级节点作为中继节点。
由此,保证中继节点与第一节点和第二节点形成低延时且稳定的通信。
在一个实施例中,如果第一节点曾经选取过中继节点,则第一节点判断曾经选取过的中继节点是包含在超级节点信息中,如果包含,则将曾经选取过的中继节点重新确定为中继节点。
由此,第一节点不需要获取每个超级节点的链路质量,提高中继节点的选取速度。
本申请实施例提供的方法,第一节点从服务器获取超级节点信息;然后,利用超级节点获取自身的NAT类型,以及,从服务器获取待连接的第二节点的NAT类型;然后,根据自身的NAT类型和第二节点的NAT类型确定是否使用中继节点,并在需要使用中继节点时,从超级节点中选取中继节点与第二节点建立连接。由此,该方法实现了任意网络环境下的终端设备在不需要使用服务器进行数据中转的情况下建立网络连接和数据传输,从而无需维护用于数据中转的服务器,避免维护服务器所需额外投入的带宽等成本;并且,由于任何NAT类型满足要求的终端设备都可以作为超级节点,因此,超级节点可以大量分布在网络系统中,承担数据中继作用,使超级节点的网络资源得到充分利用,提高网络资源利用率。
图11示出了第一节点确定自身NAT类型的流程图。
如图11所示,在一个实施例中,步骤S102,即第一节点向超级节点发送数据包,并根据超级节点返回的数据包确定自身的NAT类型包括以下步骤:
步骤S201,第一节点从超级节点中选取第一超级节点和第二超级节点。
在一个实施例中,第一节点可以对每个已知的超级节点执行tranceroute操作或者ping操作,以获取第一节点与每个超级节点之间的路由追踪信息(路由跳数、路线)、通信耗时和/或丢包率等能够体现链路质量的指标信息,然后,根据至少一种指标信息选取链路质量较好的两个超级节点作为第一超级节点和第二超级节点。
例如:选取通信耗时最低的两个节点作为第一超级节点和第二超级节点;或者,当通信耗时接近时,选取丢包率最低的两个节点作为第一超级节点和第二超级节点;当通信耗时和丢包率两种指标信息都接近时,选取路由跳数最少的两个节点作为第一超级节点和第二超级节点。
由此,保证第一节点与第一超级节点和第二超级节点形成低延时且稳定的通信,提高第一节点确定自身NAT类型的速度和准确性。
在一个实施例中,如果第一节点曾经使用过超级节点获取自身的NAT类型,则第一节点判断曾经选取过的超级节点是包含在超级节点信息中,如果包含,则将曾经选取过的超级节点重新确定为第一超级节点和第二超级节点。
由此,第一节点不需要获取每个超级节点的链路质量,就可以选取第一超级节点和第二超级节点,提高选取速度。
图12为第一节点确定自身NAT类型的第一阶段示意图。第一阶段包含步骤S202和步骤S203,能够确定第一节点是否为完全圆锥型NAT。
步骤S202,第一节点向第一超级节点发送第一数据包。
如图12所示,第一节点A向第一超级节点S1发送第一数据包D1;第一超级节点S1接收第一数据包D1,并从解析获取第一数据包D1的源IP地址和源端口(P1:X1),(P1:X1)即为NAT设备为第一节点A分配的公网IP地址和公网端口。第一数据包D1还包含有指令,该指令用于指示第一超级节点S1将(P1:X1)告知给第二超级节点S2,以及指示第二超级节点S2向(P1:X1)发送第二数据包D2。
步骤S203,第一节点如果接收到第二数据包,则确定自身的NAT类型是完全圆锥型NAT。
由于完全圆锥型NAT不对外部主机的数据包进行限制,因此,如果第一节点A在未向第二超级节点S2发送过数据包的情况下,能够接收到第二超级节点S2的数据包,则说明自身的NAT类型是完全圆锥型NAT。
由此,借助第一超级节点和第二超级节点,第一节点可以通过一次数据包的发送和接收动作确定自身的NAT类型是否是完全圆锥型NAT。
图13为第一节点确定自身NAT类型的第二阶段示意图。第二阶段包含步骤S204和步骤S205,能够确定第一节点是否为对称型NAT。
步骤S204,第一节点如果未接收到第二数据包,向第二超级节点发送第三数据包。
在一个实施例中,第一节点可以预设时长Tn,第一节点在Ts时刻向第一超级节点发送第一数据包之后,即等待接收第二数据包,如果第一节点直到Ts+Tn时刻也没有接收到第二数据包,则可以认为“未接收到第二数据包”。
如图13所示,第一节点A向第二超级节点S2发送第三数据包D3;第二超级节点S2接收第三数据包D3,并解析获取第三数据包D3的源IP地址和源端口(P3:X3),(P3:X3)即为NAT设备为第一节点A分配的公网IP地址和公网端口;然后,第二超级节点S2分析第一数据包的源端口X1和第三数据包的源端口X3是否相同,然后将分析结果发送通过(P3:X3)发送给第一节点A。
步骤S205,如果第一数据包的源端口和第三数据包的源端口不同,第一节点确定自身的NAT类型是对称型NAT。
由于对称型NAT会为内网主机的向不同外部设备发起的连接分配不同的公网端口,因此,如果源端口X1和源端口X3不同,则说明第一节点的NAT类型是对称型NAT。
图14为第一节点确定自身NAT类型的第三阶段示意图。第三阶段包含步骤S206至步骤S208,能够确定第一节点是受限圆锥型NAT还是端口受限圆锥型NAT。
步骤S206,如果第一数据包的源端口和第三数据包的源端口相同,第一节点分析是否接收到第四数据包。
其中,第四数据包D4是第二超级节点S2在确定源端口X1和源端口X3相同的情况下向(P3:X3)发送的。第二超级节点S2发送第四数据包D4使用的公网端口与第三数据包D3的目的端口不同。
步骤S207,第一节点如果接收到第四数据包,则确定自身的NAT类型是受限圆锥型NAT。
由于受限圆锥型NAT不对外部主机发送的数据包的源端口进行限制,如果第一节点A接收到第四数据包D4,则说明NAT类型是受限圆锥型NAT。
步骤S208,第一节点如果未接收到第四数据包,则确定自身的NAT类型是端口受限圆锥型NAT。
在一个实施例中,第一节点可以预设时长Tm,第一节点在Tr时刻向第二超级节点发送第三数据包之后,即等待接收第四数据包,如果第一节点直到Tm+Tr时刻也没有接收到第四数据包,则可以认为“未接收到第四数据包”。
由于受限圆锥型NAT对外部主机发送的数据包的源端口进行限制,如果第一节点A未接收到第四数据包D4,则说明NAT类型是端口受限圆锥型NAT。
由此,第一节点利用超级节点,通过至多三个阶段的数据包收发和判断,即可确定自身的NAT类型,为是否使用中继节点与第二节点建立连接提供判断依据。
图15是本申请实施例提供的一种建立端到端网络连接的方法步骤S103的流程图。
在一个实施例中,如图15所示,步骤S103即第一节点从服务器获取待连接的第二节点的NAT类型,包括以下步骤:
步骤S301,第一节点从服务器获取在线节点信息,在线节点信息包含在线节点的节点ID,在线节点包括已经与服务器建立了连接的节点。
每个节点登录到服务器之后,都会与服务器建立长连接以保持在线状态,因此服务器可以将已连接的节点信息进行汇总,得到在线节点信息。在一个实施例中,在线节点信息可以是在线节点列表,该在线节点列表可以包含在线节点的节点ID和节点绑定的用户名、头像等信息。第一节点在登录到服务器之后,可以向服务器发送同步请求,使服务器向第一节点发送在线节点信息,例如:服务器可以直接向第一节点发送在线节点列表。此外,服务器也可以主动向第一节点发送在线节点信息,从而不需要第一节点向服务器发送请求。
步骤S302,第一节点根据用户指令和在线节点信息确定第二节点的节点ID;
第一节点获取在线节点信息之后,可以通过可视化或语音信息等形式将在线节点信息展示给用户。使用户通过可视化操作或语音操作等方式选择第二节点。
示例地,当第一节点是带有屏幕的移动终端时,移动终端安装的客户端程序生成用于选择第二节点的可操作界面,并显示在屏幕中。可操作界面可以显示每个在线节点绑定的用户名和头像等信息。因此,持有移动终端的用户可以通过触摸和按键等方式选择任意一个在线节点作为第二节点。在用户做出选择之后,第一节点即可以确定第二节点的节点ID。
步骤S303,第一节点向服务器发送携带第二节点的节点ID的查询指令。
服务器接收到查询指令后,根据查询指令携带的节点ID查询第二节点的NAT类型。由于节点每次登录后都会向服务器上报自身的NAT类型,因此,服务器维护的各个节点的NAT类型可以保持最新,从而第一节获取的第二节点的NAT类型也是最新的。
步骤S304,第一节点从服务器接收第二节点的NAT类型。
由此,第一节点从服务器获取第二节点的NAT类型,为是否使用中继节点与第二节点建立连接提供判断依据。
上述本申请实施例提供的实施例中,对本申请实施例提供的建立端到端网络连接的方法各方案进行了介绍。可以理解的是,第一节点为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
图16为本申请实施例提供的一种建立端到端网络连接的装置的结构示意图。在一个实施例中,所述建立端到端网络连接的装置用作第一节点并通过图16示出的硬件装置结构实现相应的功能。如图16所示,该建立端到端网络连接的装置包括:收发器401、存储器402和处理器403。
在一个实施例中,处理器403可以包括一个或多个处理单元,例如:处理器403可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphicsprocessing unit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
存储器402与处理器403耦合,用于存储各种软件程序和/或多组指令。在一些实施例中,存储器402可包括高速随机存取的存储器,并且也可包括非易失性存储器。存储器402可以存储操作系统,例如ANDROID,IOS,WINDOWS,或者LINUX等嵌入式操作系统。
在一个实施例中,收发器401为网络接口控制器(英语:network interfacecontroller,NIC),包括双绞线接口(例如:RJ45)或光纤接口,使该装置能够通过有线连接方式接入局域网LAN或广域网WAN。
在一个实施例中,收发器401包括天线404和移动通信模块405,使该装置能够接入到蜂窝移动网络(cellular network)。其中,天线404用于发射和接收电磁波信号;移动通信模块405可以提供该装置上的包括全球移动通讯系统(global system for mobilecommunications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code division multiple access,CDMA),宽带码分多址(wideband codedivision multiple access,WCDMA),时分码分多址(time-division code divisionmultiple access,TD-SCDMA),长期演进(long term evolution,LTE),第五代移动通信技术(5th generation mobile networks new radio,5G NR)等无线通信的解决方案。移动通信模块405可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noiseamplifier,LNA)等。移动通信模块405可以由天线404接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块405还可以对经调制解调处理器调制后的信号放大,经天线404转为电磁波辐射出去。在一些实施例中,移动通信模块405的至少部分功能模块可以被设置于处理器403中。在一些实施例中,移动通信模块405的至少部分功能模块可以与处理器403的至少部分模块被设置在同一个器件中。
在一个实施例中,收发器401包括天线404和无线通信模块406,使该装置能够接入到无线局域网(Wireless local area networks,WLAN),例如:无线热点Wi-Fi。无线通信模块406经由天线404接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器403。无线通信模块406还可以从处理器403接收待发送的信号,对其进行调频,放大,经天线404转为电磁波辐射出去。
当存储器402中的软件程序和/或多组指令被处理器403运行时,使得装置用于执行如下步骤:从服务器获取超级节点信息,超级节点是服务器确定的、网络地址转换(network address translation,NAT)类型是圆锥型NAT的节点,或者,具有公网互联网协议(internet protocol,IP)地址的节点;向超级节点发送数据包,并根据超级节点返回的数据包确定自身的NAT类型;从服务器获取待连接的第二节点的NAT类型;根据自身的NAT类型和第二节点的NAT类型确定是否使用中继节点;当确定使用中继节点时,从超级节点中选取节点作为中继节点,并使用中继节点与第二节点建立连接。
本申请实施例提供的装置,能够从服务器获取超级节点信息;然后,利用超级节点获取自身的NAT类型,以及,从服务器获取待连接的第二节点的NAT类型;然后,根据自身的NAT类型和第二节点的NAT类型确定是否使用中继节点,并在需要使用中继节点时,从超级节点中选取中继节点与第二节点建立连接。由此,该方法实现了任意网络环境下的终端设备在不需要使用服务器进行数据中转的情况下建立网络连接和数据传输,从而无需维护用于数据中转的服务器,避免维护服务器所需额外投入的带宽等成本;并且,由于任何NAT类型满足要求的终端设备都可以作为超级节点,因此,超级节点可以大量分布在网络系统中,承担数据中继作用,使超级节点的网络资源得到充分利用,提高网络资源利用率。
在一个实施例中,当存储器402中的软件程序和/或多组指令被处理器403运行时,还使得装置用于执行如下步骤,以实现向超级节点发送数据包,并根据超级节点返回的数据包确定自身的NAT类型:向至少两个超级节点发送数据包;根据是否接收到超级节点返回的数据包,以及,超级节点返回的数据包的参数确定自身的NAT类型。由此,第一节点可以在不依靠服务器的情况下,确定自身的NAT类型,为确定与第二节点连接是否使用中继节点提供依据。
在一个实施例中,当存储器402中的软件程序和/或多组指令被处理器403运行时,还使得装置用于执行如下步骤,以实现向超级节点发送数据包,并根据超级节点返回的数据包确定自身的NAT类型:从超级节点中选取第一超级节点和第二超级节点;向第一超级节点发送第一数据包,使第一超级节点获取第一数据包的源IP地址和源端口,并指示第二超级节点向第一数据包的源IP地址和源端口发送第二数据包;如果接收到第二数据包,则确定自身的NAT类型是完全圆锥型NAT。由此,借助第一超级节点和第二超级节点,第一节点能够确定自身NAT类型是否是完全圆锥型NAT。
在一个实施例中,当存储器402中的软件程序和/或多组指令被处理器403运行时,还使得装置用于执行如下步骤:如果未接收到第二数据包,向第二超级节点发送第三数据包,使第二超级节点获取第三数据包的源IP地址和源端口,并分析第一数据包的源端口和第三数据包的源端口是否相同;如果第一数据包的源端口和第三数据包的源端口不同,确定自身的NAT类型是对称型NAT。由此,该装置在确定第一节点的NAT类型不是对称型NAT的情况下,借助第二超级节点,能够进一步确定第一节点的NAT类型是否是受限圆锥型NAT或端口受限圆锥型NAT。
在一个实施例中,当存储器402中的软件程序和/或多组指令被处理器403运行时,还使得装置用于执行如下步骤::如果第一数据包的源端口和第三数据包的源端口相同,分析是否接收到第四数据包,第四数据包是第二超级节点向第三数据包的源IP地址和源端口发送的,第二超级节点发送第四数据包使用的公网端口与第三数据包的目的端口不同;如果接收到第四数据包,则确定自身的NAT类型是受限圆锥型NAT;如果未接收到第四数据包,则确定自身的NAT类型是端口受限圆锥型NAT。由此,该装置在确定第一节点的NAT类型不是完全圆锥型NAT或者对称型NAT的情况下,借助第二超级节点,能够进一步确定第一节点NAT类型是否是受限圆锥型NAT或端口受限圆锥型NAT。
在一个实施例中,当存储器402中的软件程序和/或多组指令被处理器403运行时,还使得装置用于执行如下步骤,以实现从超级节点中选取第一超级节点和第二超级节点:获取每个超级节点的链路质量,并根据链路质量选取第一超级节点和第二超级节点。由此,该装置不需要获取每个超级节点的链路质量,就可以选取第一超级节点和第二超级节点,提高选取速度。
在一个实施例中,当存储器402中的软件程序和/或多组指令被处理器403运行时,还使得装置用于执行如下步骤,以实现从超级节点中选取第一超级节点和第二超级节点:确定超级节点信息中是否包含历史选取过的超级节点,如果包含历史选取过的超级节点,则从历史选取过的超级节点中选取第一超级节点和第二超级节点。由此,该装置不需要获取每个超级节点的链路质量,就可以选取第一超级节点和第二超级节点,提高选取速度。
在一个实施例中,当存储器402中的软件程序和/或多组指令被处理器403运行时,还使得装置用于执行如下步骤,以实现从服务器获取待连接的第二节点的NAT类型:从服务器获取在线节点信息;根据用户指令从在线节点信息中确定第二节点的节点身份标识(identity document,ID);向服务器发送携带第二节点的节点ID的查询指令;接收服务器根据第二节点的节点ID查询到的第二节点的NAT类型。由此,该装置根据用户的指令确定第二节点,并从服务器获取第二节点的NAT类型,为第一节点是否使用中继节点与第二节点建立连接提供判断依据。
在一个实施例中,当存储器402中的软件程序和/或多组指令被处理器403运行时,还使得装置用于执行如下步骤,以实现根据自身的NAT类型和所述第二节点的NAT类型确定是否使用中继节点:当所述装置和/或所述第二节点的NAT类型为完全圆锥型NAT时,或者,当所述装置和/或所述第二节点具有公网IP地址时,确定不需要使用所述中继节点。由此,利用完全圆锥型NAT下的节点和具有公网IP地址的节点能够被任何节点访问的特点,当第一节点和第二节点中的任何一个的NAT类型为完全圆锥型NAT,或者,任何一个具有公网IP地址时,第一节点可以与第二节点直连,从而不需要使用中继节点。
在一个实施例中,当存储器402中的软件程序和/或多组指令被处理器403运行时,还使得装置用于执行如下步骤,以实现根据自身的NAT类型和第二节点的NAT类型确定是否使用中继节点:当装置和第二节点的NAT类型为受限圆锥型NAT或端口受限圆锥型NAT时,或者,当装置和第二节点满足其中一个的NAT类型为对称型NAT,另一个的NAT类型为受限圆锥型NAT时,确定使用中继节点,中继节点用于装置和第二节点进行UDP(user datagramprotocol,用户数据报协议)打洞(holepunch)。
在一个实施例中,当存储器402中的软件程序和/或多组指令被处理器403运行时,还使得装置用于执行如下步骤,以实现根据自身的NAT类型和第二节点的NAT类型确定是否使用中继节点:当装置和第二节点满足其中一个的NAT类型为对称型NAT,另一个的NAT类型为端口受限圆锥型NAT时,确定使用中继节点,中继节点用于装置和第二节点进行端口预测。
在一个实施例中,当存储器402中的软件程序和/或多组指令被处理器403运行时,还使得装置用于执行如下步骤,以实现根据自身的NAT类型和第二节点的NAT类型确定是否使用中继节点:当装置和第二节点的NAT类型同时为对称型NAT时,确定使用中继节点,中继节点用于在装置和第二节点之间转发数据。由于中继节点可以从超级节点中选取,因此,本申请实施例无需维护用于数据中转的服务器,避免维护服务器所需额外投入的带宽等成本;并且,由于任何NAT类型满足要求的终端设备都可以作为超级节点,因此,超级节点可以大量分布在网络系统中,利用自身的带宽资源承担数据中继作用,有利于充分利用各个节点的网络资源,提高网络资源利用率。
在一个实施例中,当存储器402中的软件程序和/或多组指令被处理器403运行时,还使得装置用于执行如下步骤,以实现从超级节点中选取节点作为中继节点:获取每个超级节点的链路质量,并根据链路质量从超级节点中选取中继节点。由此,保证中继节点与第一节点和第二节点通过中继节点的数据转发形成低延时且稳定的通信。
图17为本申请实施例提供的另一种建立端到端网络连接的装置的结构示意图。在一个实施例中,第一节点通过图17示出的软件模块实现相应的功能,该建立端到端网络连接的装置包括:接收模块501,从服务器获取超级节点信息,超级节点是服务器确定的、NAT类型是圆锥型NAT的节点,或者,具有公网IP地址的节点;发送模块502,用于向超级节点发送数据包;接收模块501,还用于接收超级节点返回的数据包;处理模块503,还用于根据超级节点返回的数据包确定第一节点的NAT类型;接收模块501,还用于从服务器获取待连接的第二节点的NAT类型;处理模块503,还用于根据第一节点的NAT类型和第二节点的NAT类型确定是否使用中继节点;处理模块503,还用于当确定使用中继节点时,从超级节点中选取节点作为中继节点,使第一节点使用中继节点与第二节点建立连接。
本申请实施例提供的装置,能够从服务器获取超级节点信息;然后,利用超级节点获取自身的NAT类型,以及,从服务器获取待连接的第二节点的NAT类型;然后,根据自身的NAT类型和第二节点的NAT类型确定是否使用中继节点,并在需要使用中继节点时,从超级节点中选取中继节点与第二节点建立连接。由此,该方法实现了任意网络环境下的终端设备在不需要使用服务器进行数据中转的情况下建立网络连接和数据传输从而无需维护用于数据中转的服务器,避免维护服务器所需额外投入的带宽等成本;并且,由于任何NAT类型满足要求的终端设备都可以作为超级节点,因此,超级节点可以大量分布在网络系统中,承担数据中继作用,使超级节点的网络资源得到充分利用,提高网络资源利用率。
如图18所示,本申请实施例还提供一种计算机可读存储介质601,计算机可读存储介质601中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面的方法。
本申请实施例还提供了一种芯片系统,图19为该芯片系统的结构示意图。该芯片系统包括处理器701,用于支持上述装置实现上述方面中所涉及的功能,例如,生成或处理上述方法中所涉及的信息。在一种可能的设计中,芯片系统还包括存储器702,用于保存建立端到端网络连接的装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
以上的具体实施方式,对本申请实施例的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本申请实施例的具体实施方式而已,并不用于限定本申请实施例的保护范围,凡在本申请实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请实施例的保护范围之内。
Claims (32)
1.一种建立端到端网络连接的方法,其特征在于,包括:
第一节点从服务器获取超级节点信息,所述超级节点是所述服务器确定的、网络地址转换(network address translation,NAT)类型是圆锥型NAT的节点,或者,具有公网互联网协议(internet protocol,IP)地址的节点;
所述第一节点向所述超级节点发送数据包,并根据所述超级节点返回的数据包确定自身的NAT类型;
所述第一节点从所述服务器获取待连接的第二节点的NAT类型;
所述第一节点根据自身的NAT类型和所述第二节点的NAT类型确定是否使用中继节点;
当所述第一节点确定使用中继节点时,所述第一节点从所述超级节点中选取节点作为中继节点,并使用所述中继节点与所述第二节点建立连接。
2.根据权利要求1所述的方法,其特征在于,所述第一节点向所述超级节点发送数据包,并根据所述超级节点返回的数据包确定自身的NAT类型,包括:
所述第一节点向至少两个所述超级节点发送数据包;
所述第一节点根据是否接收到所述超级节点返回的数据包,以及,所述超级节点返回的数据包的参数确定自身的NAT类型。
3.根据权利要求1所述的方法,其特征在于,所述第一节点向所述超级节点发送数据包,并根据所述超级节点返回的数据包确定自身的NAT类型,包括:
所述第一节点从所述超级节点中选取第一超级节点和第二超级节点;
所述第一节点向所述第一超级节点发送第一数据包,使所述第一超级节点获取所述第一数据包的源IP地址和源端口,并指示所述第二超级节点向所述第一数据包的源IP地址和源端口发送第二数据包;
所述第一节点如果接收到所述第二数据包,则确定自身的NAT类型是完全圆锥型NAT。
4.根据权利要求3所述的方法,其特征在于,还包括:
所述第一节点如果未接收到所述第二数据包,向所述第二超级节点发送第三数据包,使所述第二超级节点获取所述第三数据包的源IP地址和源端口,并分析所述第一数据包的源端口和所述第三数据包的源端口是否相同;
如果所述第一数据包的源端口和所述第三数据包的源端口不同,所述第一节点确定自身的NAT类型是对称型NAT。
5.根据权利要求4所述的方法,其特征在于,还包括:
如果所述第一数据包的源端口和所述第三数据包的源端口相同,所述第一节点分析是否接收到第四数据包,所述第四数据包是所述第二超级节点向所述第三数据包的源IP地址和源端口发送的,所述第二超级节点发送所述第四数据包使用的公网端口与所述第三数据包的目的端口不同;
所述第一节点如果接收到所述第四数据包,则确定自身的NAT类型是受限圆锥型NAT;
所述第一节点如果未接收到所述第四数据包,则确定自身的NAT类型是端口受限圆锥型NAT。
6.根据权利要求3所述的方法,其特征在于,所述第一节点从所述超级节点中选取第一超级节点和第二超级节点,包括:
所述第一节点确定所述超级节点信息中是否包含历史选取过的所述超级节点,如果包含历史选取过的所述超级节点,则从历史选取过的所述超级节点中选取所述第一超级节点和所述第二超级节点。
7.根据权利要求3所述的方法,其特征在于,所述第一节点从所述超级节点中选取第一超级节点和第二超级节点,包括:
所述第一节点获取每个所述超级节点的链路质量,并根据所述链路质量选取所述第一超级节点和所述第二超级节点。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述第一节点从所述服务器获取待连接的第二节点的NAT类型,包括:
所述第一节点从所述服务器获取在线节点信息;
所述第一节点根据用户指令从所述在线节点信息中确定所述第二节点的节点身份标识(identity,ID);
所述第一节点向所述服务器发送携带所述第二节点的节点ID的查询指令;
所述第一节点接收所述服务器根据所述第二节点的节点ID查询到的所述第二节点的NAT类型。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述第一节点根据自身的NAT类型和所述第二节点的NAT类型确定是否使用中继节点,包括:
当所述第一节点和/或所述第二节点的NAT类型为完全圆锥型NAT时,或者,当所述第一节点和/或所述第二节点具有公网IP地址时,所述第一节点确定不需要使用所述中继节点。
10.根据权利要求1-8任一项所述的方法,其特征在于,所述第一节点根据自身的NAT类型和所述第二节点的NAT类型确定是否使用中继节点,包括:
当所述第一节点和所述第二节点的NAT类型为受限圆锥型NAT或端口受限圆锥型NAT时,或者,当所述第一节点和所述第二节点满足一个节点的NAT类型为对称型NAT,另一个节点的NAT类型为受限圆锥型NAT时,所述第一节点确定使用中继节点,所述中继节点用于所述第一节点和所述第二节点进行UDP(user datagram protocol,用户数据报协议)打洞(holepunch)。
11.根据权利要求1-8任一项所述的方法,其特征在于,所述第一节点根据自身的NAT类型和所述第二节点的NAT类型确定是否使用中继节点,包括:
当所述第一节点和所述第二节点满足一个节点的NAT类型为对称型NAT,另一个节点的NAT类型为端口受限圆锥型NAT时,所述第一节点确定使用中继节点,所述中继节点用于所述第一节点和所述第二节点进行端口预测。
12.根据权利要求1-8任一项所述的方法,其特征在于,所述第一节点根据自身的NAT类型和所述第二节点的NAT类型确定是否使用中继节点,包括:
当所述第一节点和所述第二节点的NAT类型同时为对称型NAT时,所述第一节点确定使用中继节点,所述中继节点用于在所述第一节点和所述第二节点之间转发数据。
13.根据权利要求1-12任一项所述的方法,其特征在于,所述第一节点从所述超级节点中选取节点作为中继节点,包括:
所述第一节点获取每个所述超级节点的链路质量,并根据所述链路质量从所述超级节点中选取所述中继节点。
14.根据权利要求1-13任一项所述的方法,其特征在于,所述第一节点、所述第二节点和所述超级节点包括位于广域网(wide area network,WAN),和/或,局域网(local areanetwork,LAN)中的终端设备。
15.根据权利要求1-13任一项所述的方法,其特征在于,所述服务器位于广域网WAN,和/或,局域网LAN中;所述服务器具有公网IP地址,或者,所述服务器的NAT类型是圆锥型NAT。
16.根据权利要求1-13任一项所述的方法,其特征在于,所述第一节点使用所述中继节点与所述第二节点建立连接,还包括:
所述第一节点使用所述中继节点与所述第二节点进行即时通信(instant messaging,IM),所述即时通信包括语音通信、视频通信、图像传输、文本传输和/或文件传输中的至少一种形式。
17.一种建立端到端网络连接的装置,用作第一节点,其特征在于,所述装置包括:收发器、存储器和处理器;其中,所述存储器包括有程序指令,所述程序指令被所述处理器运行时,使得所述装置用于执行如下步骤:
从服务器获取超级节点信息,所述超级节点是所述服务器确定的、网络地址转换(network address translation,NAT)类型是圆锥型NAT的节点,或者,具有公网互联网协议(internet protocol,IP)地址的节点;
向所述超级节点发送数据包,并根据所述超级节点返回的数据包确定自身的NAT类型;
从所述服务器获取待连接的第二节点的NAT类型;
根据自身的NAT类型和所述第二节点的NAT类型确定是否使用中继节点;
当确定使用中继节点时,从所述超级节点中选取节点作为中继节点,并使用所述中继节点与所述第二节点建立连接。
18.根据权利要求17所述的装置,其特征在于,所述程序指令还使得所述装置执行如下步骤,以实现向所述超级节点发送数据包,并根据所述超级节点返回的数据包确定自身的NAT类型:
向至少两个所述超级节点发送数据包;
根据是否接收到所述超级节点返回的数据包,以及,所述超级节点返回的数据包的参数确定自身的NAT类型。
19.根据权利要求17所述的装置,其特征在于,所述程序指令还使得所述装置执行如下步骤,以实现向所述超级节点发送数据包,并根据所述超级节点返回的数据包确定自身的NAT类型:
从所述超级节点中选取第一超级节点和第二超级节点;
向所述第一超级节点发送第一数据包,使所述第一超级节点获取所述第一数据包的源IP地址和源端口,并指示所述第二超级节点向所述第一数据包的源IP地址和源端口发送第二数据包;
如果接收到所述第二数据包,则确定自身的NAT类型是完全圆锥型NAT。
20.根据权利要求19所述的装置,其特征在于,所述程序指令还使得所述装置执行如下步骤:
如果未接收到所述第二数据包,向所述第二超级节点发送第三数据包,使所述第二超级节点获取所述第三数据包的源IP地址和源端口,并分析所述第一数据包的源端口和所述第三数据包的源端口是否相同;
如果所述第一数据包的源端口和所述第三数据包的源端口不同,确定自身的NAT类型是对称型NAT。
21.根据权利要求20所述的装置,其特征在于,所述程序指令还使得所述装置执行如下步骤:
如果所述第一数据包的源端口和所述第三数据包的源端口相同,分析是否接收到第四数据包,所述第四数据包是所述第二超级节点向所述第三数据包的源IP地址和源端口发送的,所述第二超级节点发送所述第四数据包使用的公网端口与所述第三数据包的目的端口不同;
如果接收到所述第四数据包,则确定自身的NAT类型是受限圆锥型NAT;
如果未接收到所述第四数据包,则确定自身的NAT类型是端口受限圆锥型NAT。
22.根据权利要求19所述的装置,其特征在于,所述程序指令还使得所述装置执行如下步骤,以实现从所述超级节点中选取第一超级节点和第二超级节点:
确定所述超级节点信息中是否包含历史选取过的所述超级节点,如果包含历史选取过的所述超级节点,则从历史选取过的所述超级节点中选取所述第一超级节点和所述第二超级节点。
23.根据权利要求19所述的装置,其特征在于,所述程序指令还使得所述装置执行如下步骤,以实现从所述超级节点中选取第一超级节点和第二超级节点:
获取每个所述超级节点的链路质量,并根据所述链路质量选取所述第一超级节点和所述第二超级节点。
24.根据权利要求17-23任一项所述的装置,其特征在于,所述程序指令还使得所述装置执行如下步骤,以实现从所述服务器获取待连接的第二节点的NAT类型:
从所述服务器获取在线节点信息;
根据用户指令从所述在线节点信息中确定所述第二节点的节点身份标识(identity,ID);
向所述服务器发送携带所述第二节点的节点ID的查询指令;
接收所述服务器根据所述第二节点的节点ID查询到的所述第二节点的NAT类型。
25.根据权利要求17-24任一项所述的装置,其特征在于,所述程序指令还使得所述装置执行如下步骤,以实现根据自身的NAT类型和所述第二节点的NAT类型确定是否使用中继节点:
当所述装置和/或所述第二节点的NAT类型为完全圆锥型NAT时,或者,当所述装置和/或所述第二节点具有公网IP地址时,确定不需要使用所述中继节点。
26.根据权利要求17-24任一项所述的装置,其特征在于,所述程序指令还使得所述装置执行如下步骤,以实现根据自身的NAT类型和所述第二节点的NAT类型确定是否使用中继节点:
当所述装置和所述第二节点的NAT类型为受限圆锥型NAT或端口受限圆锥型NAT时,或者,当所述装置和所述第二节点满足其中一个的NAT类型为对称型NAT,另一个的NAT类型为受限圆锥型NAT时,确定使用中继节点,所述中继节点用于所述装置和所述第二节点进行UDP(user datagram protocol,用户数据报协议)打洞(holepunch)。
27.根据权利要求17-24任一项所述的装置,其特征在于,所述程序指令还使得所述装置执行如下步骤,以实现根据自身的NAT类型和所述第二节点的NAT类型确定是否使用中继节点:
当所述装置和所述第二节点满足其中一个的NAT类型为对称型NAT,另一个的NAT类型为端口受限圆锥型NAT时,确定使用中继节点,所述中继节点用于所述装置和所述第二节点进行端口预测。
28.根据权利要求17-24任一项所述的装置,其特征在于,所述程序指令还使得所述装置执行如下步骤,以实现根据自身的NAT类型和所述第二节点的NAT类型确定是否使用中继节点:
当所述装置和所述第二节点的NAT类型同时为对称型NAT时,确定使用中继节点,所述中继节点用于在所述装置和所述第二节点之间转发数据。
29.根据权利要求17-28任一项所述的装置,其特征在于,所述程序指令还使得所述装置执行如下步骤,以实现从所述超级节点中选取节点作为中继节点:
获取每个所述超级节点的链路质量,并根据所述链路质量从所述超级节点中选取所述中继节点。
30.一种网络系统,其特征在于,包括:节点和服务器;
所述服务器,用于向第一节点发送超级节点信息,所述超级节点是所述服务器确定的、网络地址转换(network address translation,NAT)类型是圆锥型NAT的节点,或者,具有公网互联网协议(internet protocol,IP)地址的节点;
所述第一节点,用于向所述超级节点发送数据包,并根据所述超级节点返回的数据包确定自身的NAT类型;
所述服务器,还用于响应所述第一节点的请求,向所述第一节点发送第二节点的NAT类型,所述第二节点是所述第一节点选取的待连接的节点;
所述第一节点,还用于根据自身的NAT类型和所述第二节点的NAT类型确定是否使用中继节点;
所述第一节点,还用于所当确定使用中继节点时,从所述超级节点中选取节点作为中继节点,并使用所述中继节点与所述第二节点建立连接。
31.根据权利要求30所述的网络系统,其特征在于,
所述第一节点,用于向至少两个所述超级节点发送数据包;
所述超级节点,用于响应来自所述第一节点的数据包,向所述第一节点返回发送数据包;
所述第一节点,还用于根据是否接收到所述超级节点返回的数据包,以及,所述超级节点返回的数据包的参数确定自身的NAT类型。
32.根据权利要求30所述的网络系统,其特征在于,
所述服务器,用于向所述第一节点发送在线节点信息;
所述第一节点,用于根据用户指令从所述在线节点信息中确定所述第二节点的节点ID;
所述第一节点,还用于向所述服务器发送携带所述第二节点的节点ID的查询指令;
所述服务器,还用于响应所述查询指令,根据所述第二节点的节点ID查询所述第二节点的NAT类型,并将所述第二节点的NAT类型发送给所述第一节点。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201910501933.1A CN110266828A (zh) | 2019-06-11 | 2019-06-11 | 一种建立端到端网络连接的方法、装置及网络系统 |
| US17/618,123 US12058096B2 (en) | 2019-06-11 | 2020-06-09 | Method and apparatus for establishing end-to-end network connection, and network system |
| EP20822695.1A EP3958534B1 (en) | 2019-06-11 | 2020-06-09 | Method and apparatus for establishing end-to-end network connection, and network system |
| PCT/CN2020/095045 WO2020248963A1 (zh) | 2019-06-11 | 2020-06-09 | 一种建立端到端网络连接的方法、装置及网络系统 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201910501933.1A CN110266828A (zh) | 2019-06-11 | 2019-06-11 | 一种建立端到端网络连接的方法、装置及网络系统 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN110266828A true CN110266828A (zh) | 2019-09-20 |
Family
ID=67917620
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201910501933.1A Pending CN110266828A (zh) | 2019-06-11 | 2019-06-11 | 一种建立端到端网络连接的方法、装置及网络系统 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US12058096B2 (zh) |
| EP (1) | EP3958534B1 (zh) |
| CN (1) | CN110266828A (zh) |
| WO (1) | WO2020248963A1 (zh) |
Cited By (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112019641A (zh) * | 2020-10-19 | 2020-12-01 | 腾讯科技(深圳)有限公司 | 数据传输方法和装置 |
| WO2020248963A1 (zh) * | 2019-06-11 | 2020-12-17 | 华为技术有限公司 | 一种建立端到端网络连接的方法、装置及网络系统 |
| CN112367388A (zh) * | 2020-10-30 | 2021-02-12 | 北京北信源软件股份有限公司 | 服务器与客户端并发通信的方法及装置 |
| CN113067911A (zh) * | 2020-01-02 | 2021-07-02 | 中国移动通信有限公司研究院 | 一种nat穿越方法、装置、电子设备和存储介质 |
| CN113507153A (zh) * | 2021-07-12 | 2021-10-15 | 四川智汇同盟信息技术有限公司 | 一种新能源汽车广义电池管理系统及方法 |
| CN114449027A (zh) * | 2021-12-20 | 2022-05-06 | 北京网神洞鉴科技有限公司 | 远程取证方法、装置、电子设备及存储介质 |
| CN116094821A (zh) * | 2023-01-29 | 2023-05-09 | 中国联合网络通信集团有限公司 | 一种路由配置方法及装置 |
| CN120200871A (zh) * | 2025-03-24 | 2025-06-24 | 杭州视向科技有限公司 | 远程临时连接搭建方法、系统、装置、设备和存储介质 |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11356296B1 (en) * | 2021-07-30 | 2022-06-07 | Quantum Networks (SG) Pte. Ltd. | System and method for independent binding of virtual networks overlay using a physical network topology |
| CN118435699A (zh) * | 2021-12-22 | 2024-08-02 | 环球城市电影有限责任公司 | 双向cbrs通信系统和方法 |
| CN114374667B (zh) * | 2021-12-28 | 2024-04-16 | 中国电信股份有限公司 | 一种分配nat ip的方法、装置及存储介质 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101083565A (zh) * | 2006-05-29 | 2007-12-05 | 腾讯科技(深圳)有限公司 | 一种检测网络类型的方法及系统 |
| CN101217536A (zh) * | 2007-12-28 | 2008-07-09 | 腾讯科技(深圳)有限公司 | 穿越网络地址转换设备/防火墙的方法、系统及客户端 |
| CN101282302A (zh) * | 2008-05-29 | 2008-10-08 | 腾讯科技(深圳)有限公司 | 数据中转方法、系统、客户端及服务器 |
| EP3413520A1 (en) * | 2016-02-02 | 2018-12-12 | NTT Communications Corporation | Terminal, relay device selection device, communication method, relay device selection method, and program |
Family Cites Families (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20030145106A1 (en) | 2002-01-31 | 2003-07-31 | Sun Microsystems, Inc. | System and method for directing wireless data packet traffic |
| GB0303192D0 (en) * | 2003-02-12 | 2003-03-19 | Saviso Group Ltd | Methods and apparatus for traffic management in peer-to-peer networks |
| US7788378B2 (en) * | 2005-04-22 | 2010-08-31 | Microsoft Corporation | Apparatus and method for community relay node discovery |
| CN1863157A (zh) | 2005-10-28 | 2006-11-15 | 华为技术有限公司 | 穿越nat实现网络通信的方法及装置 |
| US8165091B2 (en) * | 2008-06-27 | 2012-04-24 | Nix John A | Efficient handover of media communications in heterogeneous IP networks using LAN profiles and network handover rules |
| CN101820382B (zh) * | 2009-02-28 | 2013-02-27 | 华为技术有限公司 | 一种通告网络地址转换设备信息的方法、装置和系统 |
| US8751500B2 (en) | 2012-06-26 | 2014-06-10 | Google Inc. | Notification classification and display |
| CN103139349A (zh) | 2013-03-06 | 2013-06-05 | 广东欧珀移动通信有限公司 | 一种移动终端信息通知方法、装置及移动终端 |
| US10237236B2 (en) * | 2015-06-25 | 2019-03-19 | Microsoft Technology Licensing, Llc | Media Session |
| CN105610999A (zh) * | 2016-03-30 | 2016-05-25 | 上海斐讯数据通信技术有限公司 | 一种通过穿透nat实现p2p通信的方法、设备、服务器及系统 |
| US11238855B1 (en) * | 2017-09-26 | 2022-02-01 | Amazon Technologies, Inc. | Voice user interface entity resolution |
| CN109495599B (zh) | 2018-11-16 | 2023-09-19 | 深圳市网心科技有限公司 | 数据传输方法和系统、电子装置及计算机可读存储介质 |
| CN109660637B (zh) | 2018-11-16 | 2024-01-19 | 深圳市网心科技有限公司 | P2p打洞传输方法和系统、电子装置及计算机可读存储介质 |
| CN109831547B (zh) * | 2019-03-14 | 2022-02-22 | 腾讯科技(深圳)有限公司 | Nat穿透方法、装置、设备及存储介质 |
| CN110266828A (zh) | 2019-06-11 | 2019-09-20 | 华为技术有限公司 | 一种建立端到端网络连接的方法、装置及网络系统 |
-
2019
- 2019-06-11 CN CN201910501933.1A patent/CN110266828A/zh active Pending
-
2020
- 2020-06-09 WO PCT/CN2020/095045 patent/WO2020248963A1/zh not_active Ceased
- 2020-06-09 EP EP20822695.1A patent/EP3958534B1/en active Active
- 2020-06-09 US US17/618,123 patent/US12058096B2/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101083565A (zh) * | 2006-05-29 | 2007-12-05 | 腾讯科技(深圳)有限公司 | 一种检测网络类型的方法及系统 |
| CN101217536A (zh) * | 2007-12-28 | 2008-07-09 | 腾讯科技(深圳)有限公司 | 穿越网络地址转换设备/防火墙的方法、系统及客户端 |
| CN101282302A (zh) * | 2008-05-29 | 2008-10-08 | 腾讯科技(深圳)有限公司 | 数据中转方法、系统、客户端及服务器 |
| EP3413520A1 (en) * | 2016-02-02 | 2018-12-12 | NTT Communications Corporation | Terminal, relay device selection device, communication method, relay device selection method, and program |
Non-Patent Citations (1)
| Title |
|---|
| 贾姗姗: "基于SIP协议的VoIP系统中NAT穿越方案的研究与实现", 《中国优秀硕士学位论文 信息科技辑 2010年》 * |
Cited By (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2020248963A1 (zh) * | 2019-06-11 | 2020-12-17 | 华为技术有限公司 | 一种建立端到端网络连接的方法、装置及网络系统 |
| US12058096B2 (en) | 2019-06-11 | 2024-08-06 | Huawei Technologies Co., Ltd. | Method and apparatus for establishing end-to-end network connection, and network system |
| CN113067911A (zh) * | 2020-01-02 | 2021-07-02 | 中国移动通信有限公司研究院 | 一种nat穿越方法、装置、电子设备和存储介质 |
| CN112019641A (zh) * | 2020-10-19 | 2020-12-01 | 腾讯科技(深圳)有限公司 | 数据传输方法和装置 |
| CN112367388A (zh) * | 2020-10-30 | 2021-02-12 | 北京北信源软件股份有限公司 | 服务器与客户端并发通信的方法及装置 |
| CN112367388B (zh) * | 2020-10-30 | 2024-05-24 | 北京北信源软件股份有限公司 | 服务器与客户端并发通信的方法及装置 |
| CN113507153A (zh) * | 2021-07-12 | 2021-10-15 | 四川智汇同盟信息技术有限公司 | 一种新能源汽车广义电池管理系统及方法 |
| CN114449027A (zh) * | 2021-12-20 | 2022-05-06 | 北京网神洞鉴科技有限公司 | 远程取证方法、装置、电子设备及存储介质 |
| CN116094821A (zh) * | 2023-01-29 | 2023-05-09 | 中国联合网络通信集团有限公司 | 一种路由配置方法及装置 |
| CN116094821B (zh) * | 2023-01-29 | 2024-05-14 | 中国联合网络通信集团有限公司 | 一种路由配置方法及装置 |
| CN120200871A (zh) * | 2025-03-24 | 2025-06-24 | 杭州视向科技有限公司 | 远程临时连接搭建方法、系统、装置、设备和存储介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| EP3958534A1 (en) | 2022-02-23 |
| EP3958534A4 (en) | 2022-06-08 |
| EP3958534B1 (en) | 2024-08-21 |
| WO2020248963A1 (zh) | 2020-12-17 |
| US12058096B2 (en) | 2024-08-06 |
| US20220286425A1 (en) | 2022-09-08 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN110266828A (zh) | 一种建立端到端网络连接的方法、装置及网络系统 | |
| US9094462B2 (en) | Simultaneous packet data network (PDN) access | |
| US8631155B2 (en) | Network address translation traversals for peer-to-peer networks | |
| US20130058256A1 (en) | Port mapping method and apparatus, and communication system | |
| CN114363410B (zh) | 应用访问方法、云端代理及节点代理组件、设备、介质 | |
| US9549435B1 (en) | Mobile wide area network IP translation configuration | |
| US9049122B2 (en) | Bandwidth probing messages | |
| WO2016134624A1 (zh) | 路由方法、装置及系统、网关调度方法及装置 | |
| CN103227787B (zh) | 一种基于ARP代理的4over6隧道自动建立方法 | |
| WO2011157126A2 (zh) | 一种报文转发方法和网间路由装置 | |
| WO2021008591A1 (zh) | 数据传输方法、装置及系统 | |
| JP5930449B2 (ja) | データ対話方法、装置、およびシステム | |
| EP2675117A1 (en) | Routing method and device for host in multi-homing site | |
| CN100521663C (zh) | 点对点通信中穿越网络地址转换的方法 | |
| JP6386166B2 (ja) | IPv4とIPv6との間の翻訳方法及び装置 | |
| CN107547690B (zh) | Nat中的端口分配方法、装置、nat设备及存储介质 | |
| KR101124635B1 (ko) | IPv4/IPv6 연동 게이트웨이 | |
| CN104935677B (zh) | 一种nat64资源获取方法及获取/分配装置 | |
| WO2024114022A1 (zh) | 会话控制方法、系统及smf网元 | |
| CN108337331B (zh) | 网络穿透方法、装置、系统及网络连通性检查方法 | |
| EP3264724B1 (en) | Method and apparatus for sending, transferring and acquiring capability | |
| CN114205301A (zh) | Mptcp负载均衡方法、介质及设备 | |
| Jin et al. | Provide IPv4 Service Using Pure IPv6 Servers with Stateless NAT64 Translator | |
| Hsieh et al. | A network address translation approach to the inbound session problem in private networks | |
| JP2003244213A (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 | ||
| RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190920 |
|
| RJ01 | Rejection of invention patent application after publication |