CN106878474A - 一种p2p连接建立的方法和装置 - Google Patents
一种p2p连接建立的方法和装置 Download PDFInfo
- Publication number
- CN106878474A CN106878474A CN201710273936.5A CN201710273936A CN106878474A CN 106878474 A CN106878474 A CN 106878474A CN 201710273936 A CN201710273936 A CN 201710273936A CN 106878474 A CN106878474 A CN 106878474A
- Authority
- CN
- China
- Prior art keywords
- nat
- local terminal
- opposite end
- client
- address information
- 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
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
- H04L67/1046—Joining mechanisms
Abstract
本申请提供一种P2P连接建立的方法和装置,应用于NAT客户端。所述方法包括:获取通过NAT服务端确定的本端的NAT类型;以及,获取本端的外网地址信息和所述NAT服务端分配的转发地址信息;将本端NAT类型、外网地址信息以及转发地址信息发送至NAT服务端,以由所述NAT服务端将本端NAT类型、外网地址信息以及转发地址信息转发至对端客户端,并接收所述NAT服务端发送的对端客户端的NAT类型、外网地址信息以及转发地址信息;基于本端NAT类型和对端客户端的NAT类型,通过P2P连接算法确定本端与对端间的连接方式,并基于所述连接方式与对端建立P2P连接。采用本申请提供的技术方案,可以加快本端客户端与对端客户端成功建立连接的速度。
Description
技术领域
本申请涉及网络通信技术领域,特别涉及一种P2P连接建立的方法和装置。
背景技术
P2P是指对等网络中的设备之间可以互相通信和共享资源,网络中大部分设备位于NAT后,若要成功建立P2P连接,都需要进行NAT穿越。
在现有技术中,位于NAT后的客户端需要与对端客户端建立P2P连接时,本端客户端可以与服务端建立连接,然后通过服务端获取本端的外网地址信息、服务端为本端分配的转发地址信息,以及服务端转发的对端客户端的外网地址信息、内网地址信息、服务端为对端分配的转发地址信息。本端客户端可以将本端的内网地址信息作为源地址信息,将对端客户端的内网地址信息作为目的地址信息,与对端尝试建立连接。当尝试建立连接的时间超过预设的时间后,本端客户端可以将本端的外网地址信息作为源地址信息,将对端客户端的外网地址信息作为目的地址信息,与对端客户端尝试建立连接。当尝试建立连接的时候再次超过预设的时间后,本端客户端可以将服务端作为中继服务端,基于所述服务端为本端和对端分配的转发地址信息,由所述NAT服务端实现本端客户端与对端客户端间的间接连接。
由于本端客户端与对端客户端在建立连接时无法确定成功建立两端间连接的连接方式,因此本端客户端和对端客户端需要尝试性连接,从而导致本端客户端与对端客户端成功建立连接的响应时长太长。
发明内容
有鉴于此,本申请提供一种P2P连接建立的方法和装置,应用于NAT客户端,采用本申请提出的技术方法,可以加快P2P连接的建立。
具体地,本申请是通过如下技术方案实现的:
一种P2P连接建立的方法,应用于NAT客户端,其中,NAT服务端具有检测NAT类型的功能,所述客户端加载了P2P连接算法,所述P2P连接算法为基于本端和对端客户端的NAT类型确定两端间的连接方式,包括:
获取通过NAT服务端确定的本端的NAT类型;以及,获取本端的外网地址信息和所述NAT服务端分配的转发地址信息;
将本端NAT类型、外网地址信息以及转发地址信息发送至NAT服务端,以由所述NAT服务端将本端NAT类型、外网地址信息以及转发地址信息转发至对端客户端,并接收所述NAT服务端发送的对端客户端的NAT类型、外网地址信息以及转发地址信息;
基于本端NAT类型和对端客户端的NAT类型,通过P2P连接算法确定本端与对端间的连接方式,并基于所述连接方式与对端建立P2P连接。
一种P2P连接建立的装置,应用于NAT客户端,其中,NAT服务端具有检测NAT类型的功能,所述客户端加载了P2P连接算法,所述P2P连接算法为基于本端和对端客户端的NAT类型确定两端间的连接方式,包括:
获取单元,用于获取通过NAT服务端确定的本端的NAT类型;以及,获取本端的外网地址信息和所述NAT服务端分配的转发地址信息;
发接单元,用于将本端NAT类型、外网地址信息以及转发地址信息发送至NAT服务端,以由所述NAT服务端将本端NAT类型、外网地址信息以及转发地址信息转发至对端客户端,并接收所述NAT服务端发送的对端客户端的NAT类型、外网地址信息以及转发地址信息;
确定单元,用于基于本端NAT类型和对端客户端的NAT类型,通过P2P连接算法确定本端与对端间的连接方式,并基于所述连接方式与对端建立P2P连接。
本申请提出的技术方法中,由于本端客户端和对端客户端可以通过NAT服务端的NAT类型检测功能确定各端的NAT类型,并可以通过所述NAT服务端将本端的NAT类型转发至对端客户端,以及获取到所述NAT服务端转发至本端的对端的NAT类型。
其次,本端客户端与对端客户端分别向所述NAT服务端发送访问请求后,本端客户端和对端客户端在接收到所述NAT服务端返回的响应消息中,可以获取到各自的外网地址信息,以及服务端为各端分配的转发地址信息。
此外,本端客户端将本端的外网地址信息以及转发地址信息,通过所述NAT服务端转发至对端客户端,以及接收所述NAT服务端转发至本端的对端客户端的外网地址信息以及转发地址信息。
本端客户端确定本端和对端的NAT类型后,可以基于预设的P2P连接算法计算确定出两端间的连接方式,并根据本端的外网地址信息和转发地址信息,对端客户端的外网地址信息和转发地址信息,按照计算确定出的两端间的连接方式建立相应的连接,因此可以节省两端尝试性连接时消耗的时间,从而可以缩短两端成功建立连接时的响应时长。
附图说明
图1为本申请实施例示出的一种P2P连接建立的网络架构示意图;
图2为本申请实施例示例性示出的一种P2P连接建立的方法流程图;
图3为本申请实施例示出的NAT客户端获取外网地址信息以及转发地址信息的示意图;
图4为本申请一种P2P连接建立的装置所在NAT客户端的一种硬件结构图;
图5为本申请实施例示例性示出的一种P2P连接建立的装置。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在网络中,分别位于不同的NAT后的两个NAT客户端需要建立P2P连接时,各NAT客户端均需要穿越对端的NAT后才能与对端客户端成功建立P2P连接。
在现有技术中,当本端客户端需要与对端客户端建立连接时,其中,此时本端客户端与对端客户端均不确定是否分别位于不同的NAT后,本端客户端可以与所述NAT服务端建立连接,然后向NAT服务端发送访问请求;其中所述访问请求中携带获取本端客户端的外网地址信息与为本端分配的转发地址信息的命令。当所述NAT服务端接收到所述访问请求后,向本端客户端返回响应消息;其中,所述响应消息中携带本端客户端的外网地址信息以及为本端分配的转发地址信息。
当本端客户端接收到所述响应消息时,可以从所述响应消息中获取本端客户端的外网地址信息以及转发地址信息。本端客户端可以将本端的内网地址信息、外网地址信息,以及转发地址信息,通过所述NAT服务端转发至对端客户端。同样地,对端客户端也会完成同样的操作,将对端的内网地址信息、外网地址信息,以及转发地址信息,通过所述NAT服务端转发至本端客户端。
本端客户端和对端客户端在不确定是否分别位于不同的NAT后,以及是否在同一个局域网内的情况下,本端客户端可以基于本端的内网地址信息、外网地址信息、转发地址信息,以及对端的内网地址信息、外网地址信息,转发地址信息,与对端客户端进行尝试性连接。
本端客户端可以将本端的内网地址信息作为源地址信息,将对端客户端的内网地址信息作为目的地址信息,与对端尝试建立连接。当尝试建立连接的时间超过预设的时间后,本端客户端可以将本端的外网地址信息作为源地址信息,将对端客户端的外网地址信息作为目的地址信息,与对端客户端尝试建立连接。当尝试建立连接的时候再次超过预设的时间后,本端客户端可以将服务端作为中继服务端,基于所述服务端为本端和对端分配的转发地址信息,由所述NAT服务端实现本端客户端与对端客户端间的间接连接。
其中,本端客户端与对端客户端尝试性连接时,本端客户端会根据需要可以通过转发地址信息优先与对端客户端尝试间接连接,未成功后之后再进行其它方式的连接。各客户端与对端客户端尝试性连接时,尝试各连接方式的先后顺序根据需要可以调整。
综上所述,可以看出,由于本端客户端与对端客户端需要建立连接时,进行尝试性连接,因此本端客户端与对端客户端成功建立连接的响应时长太长。
为了解决现有技术中的问题,本申请提供了一种P2P连接建立的方法,应用于NAT客户端,其中,NAT服务端具有检测NAT类型的功能,所述客户端加载了P2P连接算法,所述P2P连接算法为基于本端和对端客户端的NAT类型确定两端间的连接方式,所述方法包括:获取通过NAT服务端确定的本端的NAT类型;以及,获取本端的外网地址信息和所述NAT服务端分配的转发地址信息;将本端NAT类型、外网地址信息以及转发地址信息发送至NAT服务端,以由所述NAT服务端将本端NAT类型、外网地址信息以及转发地址信息转发至对端客户端,并接收所述NAT服务端发送的对端客户端的NAT类型、外网地址信息以及转发地址信息;基于本端NAT类型和对端客户端的NAT类型,通过P2P连接算法确定本端与对端间的连接方式,并基于所述连接方式与对端建立P2P连接。
本申请提出的技术方法中,由于本端客户端和对端客户端可以通过NAT服务端的NAT类型检测功能确定各端的NAT类型,并可以通过所述NAT服务端将本端的NAT类型转发至对端客户端,以及获取到所述NAT服务端转发至本端的对端的NAT类型。
其次,本端客户端与对端客户端分别向所述NAT服务端发送访问请求后,本端客户端和对端客户端在接收到所述NAT服务端返回的响应消息中,可以获取到各自的外网地址信息,以及服务端为各端分配的转发地址信息。
此外,本端客户端将本端的外网地址信息以及转发地址信息,通过所述NAT服务端转发至对端客户端,以及接收所述NAT服务端转发至本端的对端客户端的外网地址信息以及转发地址信息。
本端客户端确定本端和对端的NAT类型后,可以基于预设的P2P连接算法计算确定出两端间的连接方式,并根据本端的外网地址信息和转发地址信息,对端客户端的外网地址信息和转发地址信息,按照计算确定出的两端间的连接方式建立相应的连接,因此可以节省两端尝试性连接时消耗的时间,从而可以缩短两端成功建立连接时的响应时长。
以下通过具体的实施例和示意图对本申请提出的技术方法进行描述。
请参见图1,图1为本申请实施例示出的一种P2P连接建立的网络架构示意图。
其中,所述NAT网关用于隔离外网资源和内网资源,防止外网用户窃取内网资源,从而保护内网资源。当内网用户访问外网资源时,所述NAT网关可以将内网用户的内网地址转换成外网地址,从而为内网用户提供访问外网资源的途径,同时所述NAT网关会保存该内网地址与该外网地址的映射关系。
所述服务端为STUN服务器、TURN服务器、ICE服务器、NAT类型检测服务器等服务器组成的服务器集群。其中所述ICE服务器具有所述STUN服务器和所述TURN服务器的功能,通常所述服务端会同时配置所述STUN服务器和所述TURN服务器,或者单独配置ICE服务器。其中,上述STUN服务器用于接收和转发各NAT客户端的外网地址信息。上述TURN服务器作为中继服务器,用于接收和转发各NAT客户端的外网地址信息和数据报文。
如果需要建立P2P连接的两个NAT客户端位于同一个局域网,比如图1中的NAT客户端A和NAT客户端B,在这样的情况下,所述两个NAT客户端通过二层网络就可以实现通信。
如果需要建立P2P连接的两个NAT客户端分别位于不同的局域网,比如图1中的NAT客户端A和NAT客户端B,在这样的情况下,所述两个NAT客户端需要分别穿越对端的NAT后才能与对端建立连接。
其中,NAT包括非对称型NAT和对称型NAT。分别位于不同NAT后的两个NAT客户端建立连接时,如果所述两个NAT客户端的NAT类型均为非对称型,那么所述两个NAT客户端可以通过本端与对端的外网地址直接建立连接,也可以通过TURN服务器或者ICE服务器实现两端间的间接连接。如果所述两个NAT客户端中任一端的NAT类型为对称型,那么所述两个NAT客户端只能通过TURN服务器或者ICE服务器实现两端间的间接连接
因此,所述两个NAT客户端建立连接时,只有三种情况:1)、同一局域网内的连接;2)、所述两个NAT客户端的NAT类型均为非对称型时的连接;3)、所述两个NAT客户端中任一端的NAT类型为对称型时的连接。
请参见图2,图2为本申请实施例示例性示出的一种P2P连接建立的方法流程图,应用于NAT客户端,具体执行以下步骤:
步骤201:获取通过NAT服务端确定的本端的NAT类型;以及,获取本端的外网地址信息和所述NAT服务端分配的转发地址信息;
在本申请中,本端客户端可以通过所述NAT服务端确定本端的NAT类型,并获取本端的外网地址信息、转发地址信息和内网地址信息。本端客户端将本端的NAT类型和这三个地址信息发送至所述NAT服务端,并由所述NAT服务端转发至对端客户端,同样地,本端客户端也会接收到所述NAT服务端转发的对端客户端的NAT类型和对端的三个地址信息。最后,根据预设的P2P连接算法对本端和对端的NAT类型进行计算并确定出连接方式,基于所述连接方式实现两端间的连接。
其中,上述NAT服务端具有检测NAT类型的功能。NAT客户端可以通过所述NAT服务端来确定本端的NAT类型。在实现时,所述服务端的STUN服务器、TURN服务器、ICE服务器均具备检测NAT类型的功能,然而这些服务器在检测NAT类型时操作复杂,同时会增加这些服务器的负担。因此,在本申请中,所述NAT服务端可以配置NAT类型检测服务器,在所述NAT类型检测服务器上加载NAT类型检测程序。
在本申请中,当本端客户端需要检测本端的NAT类型时,可以向所述NAT类型检测服务器发送NAT类型检测请求。所述NAT类型检测服务器接收到所述NAT类型检测请求后,可以启动NAT类型检测程序对本端的NAT类型进行检测,并将检测结果返回至本端客户端。本端客户端可以将本端的NAT类型保存于本地。同样地,对端客户端也可以执行同样的操作,获取到其本端的NAT类型。
请参见图3,图3为本申请实施例示出的NAT客户端获取外网地址信息以及转发地址信息的示意图。
本端客户端不仅可以通过所述服务端确定本端的NAT类型,也可以向所述NAT服务端的STUN服务器或者ICE服务器发送访问请求。
如果本端客户端向所述STUN服务器发送访问请求,所述STUN服务器可以获取访问请求中的源地址信息(外网地址信息),并向TURN服务器发送获取转发地址信息的请求。所述TURN服务器接收到STUN服务器发送的请求后,可以为本端客户端分配一个转发地址信息,并将所述转发地址信息返回至所述STUN服务器。所述STUN服务器可以将所述源地址信息与所述转发地址信息携带于响应消息中,并将所述响应消息返回至本端客户端。本端客户端接收到所述响应消息后,可以从所述响应消息中获取本端的外网地址信息以及所述服务端为本端客户端分配的转发地址信息。
如果本端客户端向所述ICE服务器发送访问请求,所述ICE服务器可以获取访问请求中的源地址信息(外网地址信息),并为本端客户端分配一个转发地址信息。然后,所述STUN服务器可以将所述源地址信息与所述转发地址信息携带于响应消息中,并将所述响应消息返回至本端客户端。本端客户端接收到所述响应消息后,可以从所述响应消息中获取本端的外网地址信息以及所述服务端为本端客户端分配的转发地址信息。
同样地,对端客户端也执行相同的操作,在此不再赘述。
步骤202:将本端NAT类型、外网地址信息以及转发地址信息发送至NAT服务端,以由所述NAT服务端将本端NAT类型、外网地址信息以及转发地址信息转发至对端客户端,并接收所述NAT服务端发送的对端客户端的NAT类型、外网地址信息以及转发地址信息;
此时,本端客户端已经确定了本端的NAT类型,并已经获取到了本端的外网地址信息和转发地址信息,本端客户端可以获取本端的内网地址信息。然后,本端客户端可以将本端客户端的NAT类型、内网地址信息、外网地址信息、转发地址信息发送至所述NAT服务端,并由所述NAT服务端将这些信息发送至对端客户端。对端客户端同样也会执行相同的操作,在此不再赘述。
其中,上述信息的接收和转发可以由所述NAT服务端中的任一具备转发数据报文功能的服务器来完成,也可以由另外配置的专用服务器来转发上述信息(比如企业专用服务器vane服务器)。
步骤203:基于本端NAT类型和对端客户端的NAT类型,通过P2P连接算法确定本端与对端间的连接方式,并基于所述连接方式与对端建立P2P连接。
当本端客户端接收到所述服务端转发的对端客户端的NAT类型、内网地址信息、外网地址信息、转发地址信息发送至所述NAT服务端后,本端客户端可以根据本端客户端的内网IP地址与对端客户端的内网IP地址,判断本端客户端和对端客户端是否在同一个局域网。如果在同一个局域网,那么本端客户端与对端客户端可以直接在局域网内实现二层连接。
如果不在同一个局域网内,本端客户端可以基于本端客户端的NAT类型和对端客户端的NAT类型,通过预设的P2P连接算法,进一步确定两端间的连接方式。
在实现时,本端客户端可以通过所述预设的P2P连接算法对本端客户端的NAT类型和对端客户端的NAT类型进行计算,并根据计算结果确定两端间的连接方式。
其中,如果本端客户端的NAT类型和对端客户端的NAT类型均为非对称型,本端客户端可以将对端客户端的外网地址信息作为目的地址信息,向对端客户端发起连接请求,所述连接请求会经过本端客户端的NAT网关。本端客户端的NAT网关可以将所述连接请求的内网地址信息转化成外网地址信息,然后再将所述连接请求发送至对端客户端的NAT网关,同时本端客户端的NAT网关可以保存本端客户端的外网地址信息与对端客户端的外网地址信息的映射关系。
对端客户端同时也和本端客户端执行着类似的操作,在此不再赘述。
本端客户端的NAT网关接收到对端客户端发送的连接请求后,由于本端客户端的NAT网关上存在着对端客户端的外网地址信息与本端客户端的外网地址信息的映射关系,因此本端客户端会接收所述连接请求,与对端客户端成功建立连接,对端客户端同样如此。
如果本端客户端和对端客户端中任一端的NAT类型为对称型,本端客户端将本端客户端的转发地址信息作为目的地址信息,向所述服务端的TURN服务器或者ICE服务器发送连接请求;其中,所述连接请求中携带了将所述连接请求从对端客户端的转发地址信息中的端口转发至对端客户端的命令。然后,本端客户端的NAT网关可以建立本端客户端的外网地址信息与本端客户端的转发地址信息的映射关系。
需要说明的是,本端客户端的转发地址信息和对端客户端的转发地址信息中的IP地址相同,均为TURN服务器或者ICE服务器的IP地址,但端口号不一样。
对端客户端与本端客户端同时进行着类似的操作,在此不再赘述。
本端客户端的NAT网关接收到TURN服务器或者ICE服务器转发的连接请求后,由于本端客户端的NAT网关上存在着本端客户端的转发地址信息与本端客户端的外网地址信息的映射关系,因此本端客户端会接收所述连接请求,与对端客户端间接地成功建立连接,对端客户端同样如此,后续本端客户端与对端客户端之间发送的数据报文均由所述TURN服务器或者ICE服务器进行转发。
需要说明的是,如果本端客户端和对端客户端的NAT类型均为非对称型,依然可以通过所述TURN服务器或者ICE服务器,实现两端间的间接连接。然而,这样会增大所述TURN服务器或者ICE服务器的数据报文的转发量,导致所述TURN服务器或者所述ICE服务器的转发效率下降,因此如果本端客户端和对端客户端的NAT类型均为非对称型,通常将所述两个客户端直接建立连接。
根据上述本申请提出的技术方案可以看出,由于本端客户端和对端客户端可以通过NAT服务端的NAT类型检测功能确定各端的NAT类型,并可以通过所述NAT服务端将本端的NAT类型转发至对端客户端,以及获取到所述NAT服务端转发至本端的对端的NAT类型。
其次,本端客户端与对端客户端分别向所述NAT服务端发送访问请求后,本端客户端和对端客户端在接收到所述NAT服务端返回的响应消息中,可以获取到各自的外网地址信息,以及服务端为各端分配的转发地址信息。
此外,本端客户端将本端的外网地址信息以及转发地址信息,通过所述NAT服务端转发至对端客户端,以及接收所述NAT服务端转发至本端的对端客户端的外网地址信息以及转发地址信息。
本端客户端确定本端和对端的NAT类型后,可以基于预设的P2P连接算法计算确定出两端间的连接方式,并根据本端的外网地址信息和转发地址信息,对端客户端的外网地址信息和转发地址信息,按照计算确定出的两端间的连接方式建立相应的连接,因此可以节省两端尝试性连接时消耗的时间,从而可以缩短两端成功建立连接时的响应时长。
与前述一种P2P连接建立的方法的实施例相对应,本申请还提供了一种P2P连接建立的装置的实施例。
本申请一种P2P连接建立的装置的实施例可以应用在NAT客户端上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在NAT客户端的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本申请一种P2P连接建立的装置所在NAT客户端的一种硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的NAT客户端通常根据该P2P连接建立的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图5,图5为本申请实施例示例性示出的一种P2P连接建立的装置,应用于NAT客户端,其中,NAT服务端具有检测NAT类型的功能,所述客户端加载了P2P连接算法,所述P2P连接算法为基于本端和对端客户端的NAT类型确定两端间的连接方式,所述装置包括:获取单元510,发接单元520,确定单元530。
其中,所述获取单元510,用于获取通过NAT服务端确定的本端的NAT类型;以及,获取本端的外网地址信息和所述NAT服务端分配的转发地址信息;
所述发接单元520,用于将本端NAT类型、外网地址信息以及转发地址信息发送至NAT服务端,以由所述NAT服务端将本端NAT类型、外网地址信息以及转发地址信息转发至对端客户端,并接收所述NAT服务端发送的对端客户端的NAT类型、外网地址信息以及转发地址信息;
所述确定单元530,用于基于本端NAT类型和对端客户端的NAT类型,通过P2P连接算法确定本端与对端间的连接方式,并基于所述连接方式与对端建立P2P连接。
在本申请中,所述P2P连接算法包括:
当本端和对端客户端的NAT类型均为非对称型时,将对端客户端的外网地址信息作为目的地址信息,建立本端与对端间的连接;
当本端和对端客户端的NAT类型中任一端的NAT类型为对称型时,将所述NAT服务端作为中继服务端,基于本端客户端和对端客户端的转发地址信息,由所述NAT服务端实现本端与对端客户端间的间接连接。
其中,在本申请的实施例中,所述NAT服务端配置了NAT类型检测服务器;其中,所述NAT类型检测服务器加载了NAT类型检测程序;
所述获取单元510具体用于:
向所述NAT服务端发送NAT类型检测请求,以使所述NAT服务端接收到所述NAT类型检测请求后,基于所述NAT类型检测程序检测本端的NAT类型,并将检测结果返回至客户端;
接收所述NAT服务端发送的检测结果,并保存所述检测结果。
另外,在本申请的实施例中,如果所述本端客户端和对端客户端在同一个局域网内,在这样的情况下,为了使两端建立连接,本申请的所述装置中还包括:
第二发接单元,用于将本端的内网地址信息发送至NAT服务端,以由所述NAT服务端将所述内网地址信息转发至对端客户端,并接收所述NAT服务端发送的对端客户端的内网地址信息;
判断单元,用于基于本端的内网地址信息与对端客户端的内网地址信息,判断本端客户端与对端客户端是否在同一个局域网;
建立单元,用于如果本端客户端与对端客户端在同一个局域网,通过本端的内网地址信息与对端客户端的内网地址信息,建立本端与对端客户端间的连接。
如果所述本端客户端和对端客户端不在同一个局域网,通过本端和对端客户端的NAT类型进一步确定两端的连接方式;
所述确定单元530具体用于:
通过所述P2P连接算法对本端的NAT类型和对端客户端的NAT类型进行计算;
根据计算结果,确定本端与对端客户端间的连接方式。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种P2P连接建立的方法,应用于NAT客户端,其中,NAT服务端具有检测NAT类型的功能,其特征在于,所述客户端加载了P2P连接算法,所述P2P连接算法为基于本端和对端客户端的NAT类型确定两端间的连接方式,包括:
获取通过NAT服务端确定的本端的NAT类型;以及,获取本端的外网地址信息和所述NAT服务端分配的转发地址信息;
将本端NAT类型、外网地址信息以及转发地址信息发送至NAT服务端,以由所述NAT服务端将本端NAT类型、外网地址信息以及转发地址信息转发至对端客户端,并接收所述NAT服务端发送的对端客户端的NAT类型、外网地址信息以及转发地址信息;
基于本端NAT类型和对端客户端的NAT类型,通过P2P连接算法确定本端与对端间的连接方式,并基于所述连接方式与对端建立P2P连接。
2.根据权利要求1所述的方法,其特征在于,所述NAT类型包括对称型和非对称型;
所述P2P连接算法包括:
当本端和对端客户端的NAT类型均为非对称型时,将对端客户端的外网地址信息作为目的地址信息,建立本端与对端间的连接;
当本端和对端客户端的NAT类型中任一端的NAT类型为对称型时,将所述NAT服务端作为中继服务端,基于本端客户端和对端客户端的转发地址信息,由所述NAT服务端实现本端与对端客户端间的间接连接。
3.根据权利要求1所述的方法,其特征在于,所述NAT服务端配置NAT类型检测服务器;其中,所述NAT类型检测服务器加载了NAT类型检测程序;
所述通过NAT服务端确定本端的NAT类型,包括:
向所述NAT服务端发送NAT类型检测请求,以使所述NAT服务端接收到所述NAT类型检测请求后,基于所述NAT类型检测程序检测本端的NAT类型,并将检测结果返回至客户端;
接收所述NAT服务端发送的检测结果,并保存所述检测结果。
4.根据权利要求1所述的方式,其特征在于,所述方法还包括:
将本端的内网地址信息发送至NAT服务端,以由所述NAT服务端将所述内网地址信息转发至对端客户端,并接收所述NAT服务端发送的对端客户端的内网地址信息;
基于本端的内网地址信息与对端客户端的内网地址信息,判断本端客户端与对端客户端是否在同一个局域网;
如果本端客户端与对端客户端在同一个局域网,通过本端的内网地址信息与对端客户端的内网地址信息,建立本端与对端客户端间的连接。
5.根据权利要求4所述的方法,其特征在于,如果本端客户端与对端客户端不在同一个局域网,通过本端和对端客户端的NAT类型进一步确定两端的连接方式;
所述基于本端NAT类型和对端客户端的NAT类型,通过P2P连接算法确定本端与对端间的连接方式,包括:
通过所述P2P连接算法对本端的NAT类型和对端客户端的NAT类型进行计算;
根据计算结果,确定本端与对端客户端间的连接方式。
6.一种P2P连接建立的装置,应用于NAT客户端,其中,NAT服务端具有检测NAT类型的功能,其特征在于,所述客户端加载了P2P连接算法,所述P2P连接算法为基于本端和对端客户端的NAT类型确定两端间的连接方式,包括:
获取单元,用于获取通过NAT服务端确定的本端的NAT类型;以及,获取本端的外网地址信息和所述NAT服务端分配的转发地址信息;
发接单元,用于将本端NAT类型、外网地址信息以及转发地址信息发送至NAT服务端,以由所述NAT服务端将本端NAT类型、外网地址信息以及转发地址信息转发至对端客户端,并接收所述NAT服务端发送的对端客户端的NAT类型、外网地址信息以及转发地址信息;
确定单元,用于基于本端NAT类型和对端客户端的NAT类型,通过P2P连接算法确定本端与对端间的连接方式,并基于所述连接方式与对端建立P2P连接。
7.根据权利要求6所述的装置,其特征在于,所述NAT类型包括对称型和非对称型;
所述P2P连接算法包括:
当本端和对端客户端的NAT类型均为非对称型时,将对端客户端的外网地址信息作为目的地址信息,建立本端与对端间的连接;
当本端和对端客户端的NAT类型中任一端的NAT类型为对称型时,将所述NAT服务端作为中继服务端,基于本端客户端和对端客户端的转发地址信息,由所述NAT服务端实现本端与对端客户端间的间接连接。
8.根据权利要求6所述的装置,其特征在于,所述NAT服务端配置NAT类型检测服务器;其中,所述NAT类型检测服务器加载了NAT类型检测程序;
所述获取单元具体用于:
向所述NAT服务端发送NAT类型检测请求,以使所述NAT服务端接收到所述NAT类型检测请求后,基于所述NAT类型检测程序检测本端的NAT类型,并将检测结果返回至客户端;
接收所述NAT服务端发送的检测结果,并保存所述检测结果。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第二发接单元,用于将本端的内网地址信息发送至NAT服务端,以由所述NAT服务端将所述内网地址信息转发至对端客户端,并接收所述NAT服务端发送的对端客户端的内网地址信息;
判断单元,用于基于本端的内网地址信息与对端客户端的内网地址信息,判断本端客户端与对端客户端是否在同一个局域网;
建立单元,用于如果本端客户端与对端客户端在同一个局域网,通过本端的内网地址信息与对端客户端的内网地址信息,建立本端与对端客户端间的连接。
10.根据权利要求9所述的装置,其特征在于,如果本端客户端与对端客户端不在同一个局域网,通过本端和对端客户端的NAT类型进一步确定两端的连接方式;
所述确定单元具体用于:
通过所述P2P连接算法对本端的NAT类型和对端客户端的NAT类型进行计算;
根据计算结果,确定本端与对端客户端间的连接方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710273936.5A CN106878474A (zh) | 2017-04-25 | 2017-04-25 | 一种p2p连接建立的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710273936.5A CN106878474A (zh) | 2017-04-25 | 2017-04-25 | 一种p2p连接建立的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106878474A true CN106878474A (zh) | 2017-06-20 |
Family
ID=59161427
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710273936.5A Pending CN106878474A (zh) | 2017-04-25 | 2017-04-25 | 一种p2p连接建立的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106878474A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110099120A (zh) * | 2019-05-07 | 2019-08-06 | 浙江中控技术股份有限公司 | 通信方法及装置、存储介质及电子设备 |
CN110278254A (zh) * | 2019-06-12 | 2019-09-24 | 深圳梨享计算有限公司 | 用于FogCDN场景的调度方法及调度端 |
CN110611692A (zh) * | 2018-06-15 | 2019-12-24 | 上海宽翼通信科技股份有限公司 | 一种基于点对点穿越的web访问方法、系统及客户端 |
CN112383473A (zh) * | 2020-06-12 | 2021-02-19 | 支付宝(杭州)信息技术有限公司 | 辅助区块链网络中的节点建立p2p直连的方法 |
CN112637364A (zh) * | 2021-01-06 | 2021-04-09 | 上海哔哩哔哩科技有限公司 | 建立p2p连接的方法、客户端及系统 |
CN114390037A (zh) * | 2022-01-12 | 2022-04-22 | 中国科学院软件研究所 | 一种终端访问家庭网络设备的方法及系统 |
CN114422301A (zh) * | 2022-01-17 | 2022-04-29 | 广州鲁邦通物联网科技股份有限公司 | 一种基于p2p-vpn技术穿越nat的网关 |
CN114915748A (zh) * | 2021-02-09 | 2022-08-16 | 华为技术有限公司 | 一种动态切换音视频通信方式的方法、系统及相关装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1968194A (zh) * | 2006-06-09 | 2007-05-23 | 华为技术有限公司 | 穿越网络地址转换的方法 |
CN101527676A (zh) * | 2008-12-19 | 2009-09-09 | 无锡亿普得科技有限公司 | 一种nat打通方法 |
CN101938532A (zh) * | 2010-09-17 | 2011-01-05 | 北京神州泰岳软件股份有限公司 | 基于udp的穿越nat设备的方法及系统 |
CN101945141A (zh) * | 2010-09-17 | 2011-01-12 | 北京神州泰岳软件股份有限公司 | 基于tcp的穿越nat设备的方法及系统 |
CN102647483A (zh) * | 2012-03-31 | 2012-08-22 | 中兴通讯股份有限公司 | 获取nat类型的方法、p2p端点实体和nat实体 |
CN105721570A (zh) * | 2016-02-04 | 2016-06-29 | 福建星网锐捷通讯股份有限公司 | 数据点对点传输方法及装置 |
-
2017
- 2017-04-25 CN CN201710273936.5A patent/CN106878474A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1968194A (zh) * | 2006-06-09 | 2007-05-23 | 华为技术有限公司 | 穿越网络地址转换的方法 |
CN101527676A (zh) * | 2008-12-19 | 2009-09-09 | 无锡亿普得科技有限公司 | 一种nat打通方法 |
CN101938532A (zh) * | 2010-09-17 | 2011-01-05 | 北京神州泰岳软件股份有限公司 | 基于udp的穿越nat设备的方法及系统 |
CN101945141A (zh) * | 2010-09-17 | 2011-01-12 | 北京神州泰岳软件股份有限公司 | 基于tcp的穿越nat设备的方法及系统 |
CN102647483A (zh) * | 2012-03-31 | 2012-08-22 | 中兴通讯股份有限公司 | 获取nat类型的方法、p2p端点实体和nat实体 |
CN105721570A (zh) * | 2016-02-04 | 2016-06-29 | 福建星网锐捷通讯股份有限公司 | 数据点对点传输方法及装置 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110611692A (zh) * | 2018-06-15 | 2019-12-24 | 上海宽翼通信科技股份有限公司 | 一种基于点对点穿越的web访问方法、系统及客户端 |
CN110099120B (zh) * | 2019-05-07 | 2021-11-02 | 浙江中控技术股份有限公司 | 通信方法及装置、存储介质及电子设备 |
CN110099120A (zh) * | 2019-05-07 | 2019-08-06 | 浙江中控技术股份有限公司 | 通信方法及装置、存储介质及电子设备 |
CN110278254A (zh) * | 2019-06-12 | 2019-09-24 | 深圳梨享计算有限公司 | 用于FogCDN场景的调度方法及调度端 |
CN110278254B (zh) * | 2019-06-12 | 2022-02-22 | 深圳梨享计算有限公司 | 用于FogCDN场景的调度方法及调度端 |
CN112383473A (zh) * | 2020-06-12 | 2021-02-19 | 支付宝(杭州)信息技术有限公司 | 辅助区块链网络中的节点建立p2p直连的方法 |
CN112437141A (zh) * | 2020-06-12 | 2021-03-02 | 支付宝(杭州)信息技术有限公司 | 辅助区块链网络中的节点建立p2p直连的方法 |
CN112637364A (zh) * | 2021-01-06 | 2021-04-09 | 上海哔哩哔哩科技有限公司 | 建立p2p连接的方法、客户端及系统 |
WO2022148361A1 (zh) * | 2021-01-06 | 2022-07-14 | 上海哔哩哔哩科技有限公司 | 建立p2p连接的方法、客户端及系统 |
CN112637364B (zh) * | 2021-01-06 | 2023-01-10 | 上海哔哩哔哩科技有限公司 | 建立p2p连接的方法、客户端及系统 |
CN114915748A (zh) * | 2021-02-09 | 2022-08-16 | 华为技术有限公司 | 一种动态切换音视频通信方式的方法、系统及相关装置 |
CN114390037A (zh) * | 2022-01-12 | 2022-04-22 | 中国科学院软件研究所 | 一种终端访问家庭网络设备的方法及系统 |
CN114422301A (zh) * | 2022-01-17 | 2022-04-29 | 广州鲁邦通物联网科技股份有限公司 | 一种基于p2p-vpn技术穿越nat的网关 |
CN114422301B (zh) * | 2022-01-17 | 2022-11-01 | 广州鲁邦通物联网科技股份有限公司 | 一种基于p2p-vpn技术穿越nat的网关 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106878474A (zh) | 一种p2p连接建立的方法和装置 | |
JP7281531B2 (ja) | SRv6とBGPを使用するマルチクラウド接続 | |
EP3384386B1 (en) | Enabling fine granular service chaining in a network-function virtualization architecture | |
EP3834396B1 (en) | User datagram protocol tunneling in distributed application instances | |
US10341427B2 (en) | Forwarding policies on a virtual service network | |
JP5711754B2 (ja) | スマートクライアントルーティング | |
US20190182155A1 (en) | Distributed Network Sharing And Traffic Isolation | |
US8893260B2 (en) | Secure remote access public communication environment | |
CN103580980B (zh) | 虚拟网络自动发现和自动配置的方法及其装置 | |
US20200241913A1 (en) | Apparatus and method for configuring and enabling virtual applications | |
US9264403B2 (en) | Virtualization platform | |
US11431671B2 (en) | Method and apparatus for dynamic discovery of a blockchain component in a cloud computing system | |
WO2004036385A2 (en) | Apparatus, method, and computer program product for building virtual networks | |
JP2012138901A (ja) | リレーサーバを利用したデータ伝送システム及び方法 | |
US11595306B2 (en) | Executing workloads across multiple cloud service providers | |
US20200092400A1 (en) | Networking bonding by a mobile communication device | |
CN105939240A (zh) | 负载均衡方法及装置 | |
CN106878133A (zh) | 报文转发方法及装置 | |
CN106027356B (zh) | 一种隧道标识的转换方法及装置 | |
CN108023736A (zh) | 通信方法、服务端设备、客户端设备、装置及系统 | |
CN109474713A (zh) | 报文转发方法和装置 | |
CN107105072A (zh) | 一种创建arp表项的方法和装置 | |
US20060047784A1 (en) | Method, apparatus and system for remotely and dynamically configuring network elements in a network | |
CN106534113A (zh) | Ssh连接的建立方法及装置 | |
CN111107126A (zh) | 加密卷的复制 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170620 |
|
RJ01 | Rejection of invention patent application after publication |