CN1805388A - 一种建立对等直连通道的方法 - Google Patents
一种建立对等直连通道的方法 Download PDFInfo
- Publication number
- CN1805388A CN1805388A CN 200510002058 CN200510002058A CN1805388A CN 1805388 A CN1805388 A CN 1805388A CN 200510002058 CN200510002058 CN 200510002058 CN 200510002058 A CN200510002058 A CN 200510002058A CN 1805388 A CN1805388 A CN 1805388A
- Authority
- CN
- China
- Prior art keywords
- main frame
- direct
- public network
- address
- port
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种建立对等直连通道的方法,该方法是第一主机绑定第一UDP端口,并通过第一UDP端口向转发服务器发送直连请求,转发服务器向第二主机发送直连请求;第二主机绑定第二UDP端口,并通过第二UDP端口向转发服务器发送直连响应,转发服务器向第一主机发送直连响应;第一主机通过第一UDP端口发送探测包至第二主机,第二主机从探测包中UDP报文头获取第一主机的直连IP地址和端口地址,并向获取的第一主机的直连IP地址和端口地址发送探测响应包,第一主机从探测响应包UDP报文头获取第二主机的直连IP地址和端口地址。使用该方法,成功建立对等直连通道的可能性较现有技术会有很大提高。
Description
技术领域
本发明涉及计算机网络中节点的连接技术,特别是涉及一种建立对等直连(P2P,Peer to Peer)通道的方法。
背景技术
在网络中,两个节点之间的连接方式一般有两种:一种是客户端/服务器方式的连接,客户端申请服务,服务器提供服务,通常这种连接方式是一对多的关系,如图1所示,一个服务器可以接收来自多个客户端的申请,并向多个客户端提供服务,两者之间的关系是非对等的关系;另一种是P2P方式,如图2所示,P2P方式的连接是指在计算机网络中的每两个节点直接连接,即每两个节点之间是对等连接的关系。
在客户端/服务器的方式下,由于服务器需要向多个客户端提供服务,所以,通常需要使用高性能的机器,成本一般比较大。P2P方式的通讯双方是对等的关系,两者互相为对方提供服务,所以,P2P方式的突出优势在于可以将众多性能不高的PC连接起来,以实现资源共享和通讯,这种连接方式大大降低了成本,逐渐成为网络发展的新方向。
虽然P2P方式有如上所述的优势,但是其发展受到一定限制,这是因为,为了防范网络病毒的攻击,越来越多的计算机都位于网络地址转换器(Network Address Translator,NAT)的保护之内。NAT是在内部网络和公共网络之间起检查和转发作用的设备,通常集成在路由器上,NAT可能会修改内网中主机的IP地址和端口信息,所以它限制了网络上任意两台计算机之间的直接通讯,只有符合一定规则的通讯才被允许,所以,如何突破NAT的限制是实现P2P的重要内容。
由于当前NAT的种类繁多,并且不同种类的NAT各有其自身规定的通讯方式,所以,在位于不同种类NAT中的两个节点之间建立P2P通道的时候,首先需要获得双方节点的NAT的类型,然后根据NAT的类型采用不同的通讯方式建立P2P通道。
下面介绍现有技术建立P2P通道的方法。
首先,如图3所示,当网络中某主机A需要与主机B建立P2P通道时,通常需要两台外部服务器确定自身和对方所在的NAT类型,主机A使用同样的端口向这两台服务器发送UDP信息,这两台服务器记录该主机的IP地址和端口号,再分别将记录的IP地址和端口号返回给主机A,主机A通过判断两个外部服务器返回的IP地址和端口号确定自身所在的NAT的类型。判断的方式为:如果两个外部服务器返回的IP地址和端口相同,则NAT类型为非对称NAT(Cone NAT);如果不同,则NAT类型为对称NAT(Symmetric NAT)。同理,主机B也如此判断NAT类型。主机A和主机B确定了NAT类型后,分别将类型信息发送至目录服务器,并从目录服务器获取对方的NAT类型信息。
然后,主机A启动建立P2P通道,主机A先判断主机B所在的NAT类型,如果主机B所在的NAT类型是Cone NAT,则主机A主动发起直连请求,然后由主机B向主机A发送探测包;如果主机B是Symmetric NAT,主机A判断自己所在的NAT类型,如果主机A是Cone NAT,则主机A通知主机B发起直连请求,然后由主机A向主机B发送探测包;如果主机A也是Symmetric NAT,则通道无法建立。
最后,当两个主机之间的P2P通道建立完毕之后,两主机才开始通过P2P通道发送数据。
但是,Cone NAT又分为几种子类型:全部非对称NAT(Full Cone NAT)、受限非对称NAT(Restricted Cone NAT)和端口受限非对称NAT(Port-Restricted Cone NAT),现有技术还无法识别Cone NAT的具体子类型,并且现有技术的方法只对Full Cone NAT有效。也就是说,现有技术只对主机A和主机B均在Full Cone NAT之内,或主机A在Full Cone NAT之内、主机B在Symmetric NAT之内时才能建立起P2P通道。如果建立P2P通道的任何一方处于Restricted Cone NAT或Port-Restricted Cone NAT之内,则直连通道的建立将失败。这是因为,对于这两种NAT,内网主机的一个端口在与不同的外界地址通信时会在NAT上映射为同一个公网IP和端口,Restricted Cone NAT只允许同时和一个IP地址的主机进行双向通信,Port-Restricted Cone NAT只允许同时和一个IP地址和端口的主机进行双向通信,因此在建立P2P通道的过程中,如果遇到Restricted Cone NAT或Port-Restricted Cone NAT,则主机A和主机B之间不仅无法建立P2P通道,还有可能导致客户端与服务器的通信中断,使得一个客户端无法与多个客户端同时建立P2P直连。
除了上文提及的几种NAT类型,网络中还存在很多其它类型的NAT,每种NAT的具体特征不同,现有技术的方法无法利用一种连通方式适用于尽可能多的NAT类型。
如上所述,对于某些类型的NAT,现有技术还无法建立P2P通道,并有可能导致客户端与服务器之间的通信中断,使得该客户端无法和其它主机建立P2P通道。所以,现有技术的方法建立P2P通道的成功率较低。而且,现有技术的方法中,只有两个主机建立P2P通道之后才能互相发送数据,由于通道的建立存在一定时延,所以数据传输也存在时延,无法满足对实时性要求较高的数据传输的需要。
而且,现有技术的方法需要通过额外的两台外部服务器协助判断NAT的类型,这不仅需要耗费较多的资源,而且延长了建立P2P通道所需的时间。
发明内容
本发明的主要目的在于提供一种建立P2P通道的方法,一个主机可以和多个主机建立P2P通道,且适用于建立多种类型NAT内的主机之间的P2P通道。
为实现上述目的,本发明提供了一种建立对等直连通道的方法,该方法包括如下步骤:
A、第一主机绑定第一用户数据报协议UDP端口,并通过第一UDP端口向转发服务器发送直连请求,转发服务器提取出第一主机的公网IP和公网UDP端口,然后向第二主机转发该直连请求,其中,所转发的直连请求中包括第一主机公网IP地址和公网UDP端口;
B、第二主机接收到直连请求后绑定第二UDP端口,并通过第二UDP端口向转发服务器发送直连响应,转发服务器提取出第二主机的公网IP和公网UDP端口,然后向第一主机转发该直连响应,其中,该直连响应中包含第二主机公网IP地址和公网UDP端口;
C、第一主机通过第一UDP端口向第二主机公网IP地址和公网端口地址发送探测包,第二主机从探测包获取第一主机的直连公网IP地址和直连公网端口地址,并向该地址发送探测响应包,第一主机从探测响应包获取第二主机的直连公网IP地址和直连公网端口地址,第一主机和第二主机分别根据所获得的对方主机的直连公网IP地址和直连公网端口地址,在彼此间建立对等直连通道。
其中,步骤C中,所述利用该探测包/探测响应包将第一主机/第二主机的直连公网IP地址和直连公网端口地址发送给第二主机/第一主机进一步包括:
第二主机/第一主机将收到的直连公网IP地址和直连公网端口地址更新在该主机的用户信息表中。
其中,步骤C所述利用该探测包/探测响应包将第一主机/第二主机的直连公网IP地址和直连公网端口地址发送给第二主机/第一主机包括:
第二主机/第一主机从所获得的探测包/探测响应包中的UDP报文头中获得所述直连公网IP地址和直连公网端口地址。
其中,步骤C之后,该方法进一步包括:
判断是否需要建立新的对等直连通道,如果是,则第一主机和第二主机分别采用新的UDP端口,然后返回步骤A。
为实现上述目的,本发明还提供了一种建立对等直连通道的方法,该方法包括如下步骤:
a、第一主机绑定第一用户数据报协议UDP端口,并通过第一UDP端口向转发服务器发送直连请求,转发服务器向第二主机转发该直连请求,其中,所转发的直连请求中包括第一主机公网IP地址和第一UDP公网端口地址;
b、第二主机接收到直连请求后,绑定第二UDP端口,并通过第二UDP端口向转发服务器发送直连响应,转发服务器向第一主机转发该直连响应,其中,该直连响应中包含第二主机公网IP地址和第二UDP公网端口地址;
c、第一主机根据收到的直连响应中所包含的第二主机公网IP地址和第二UDP公网端口地址,通过第一UDP端口向第二主机发送探测包,通过该探测包将第一主机的直连公网IP地址和直连公网端口地址发送给第二主机,第二主机收到该探测包后,向第一主机发送探测响应包,通过该探测响应包将第二主机的直连公网IP地址和直连公网端口地址发送给第一主机,
第一主机通过转发服务器将接收到的直连响应发送至第二主机,第二主机接收到该直连响应后,通过第二UDP端口发送探测包至第一主机,利用该探测包将第二主机的直连公网IP地址和直连公网端口地址发送给第一主机,第一主机收到该探测包后,向第二主机发送探测响应包,利用该探测响应包将第一主机的直连公网IP地址和直连公网端口地址发送给第二主机;和,
第一主机和第二主机分别根据所获得的对方主机的直连公网IP地址和直连公网端口地址,在彼此间建立对等直连通道。
其中,步骤c中,所述利用该探测包/探测响应包将直连公网IP地址和直连公网端口地址发送给进一步包括:
接收到该直连公网IP地址和直连公网端口地址的主机将收到的直连公网IP地址和直连公网端口地址更新在该主机的用户信息表中。
其中,步骤c所述利用该探测包/探测响应包将直连公网IP地址和直连公网端口地址发送给包括:
接收到该直连公网IP地址和直连公网端口地址的主机从所获得的探测包/探测响应包中的UDP报文头中获得所述直连公网IP地址和直连公网端口地址。
为实现上述目的,本发明还提供了一种建立对等直连通道的方法,该方法包括如下步骤:
步骤a1:第一主机和第二主机登录转发服务器;
步骤a2:判断第一主机和第二主机的连接状态,如果判断得到连接状态未知,则第一主机和第二主机分别绑定各自的UDP端口,在第一主机和第二主机的UDP端口间发送探测包以及探测响应包,实现在第一主机和第二主机间建立对等直连通道。
其中,所述发送探测包以及探测响应包进一步包括:将第一主机和第二主机的连接状态更新为不通状态,步骤a2所述判断进一步包括:
判断第一主机和第二主机的连接状态是否为不通状态,如果是,则该方法进一步包括:
第一主机通过转发服务器向第二主机转发数据。
其中,在相应主机接收到探测包之后,该方法进一步包括:将第一主机和第二主机的连接状态更新为通的状态,步骤a2所述判断进一步包括:
判断第一主机和第二主机的连接状态是否为通的状态,如果是,则该方法进一步包括:
第一主机和第二主机通过已经建立的直连通道传送数据。
其中,所述更新状态为:
在用户信息表中将进行所述状态更新。
其中,所述传送数据之后,该方法进一步包括:
判断数据传送是否已经结束,如果是,则结束本流程,否则,返回所述步骤a1。
其中,所述第一主机和第二主机分别位于不同NAT所管辖的内网中,所述转发服务器位于公网中。
从上述技术方案可以看出,本发明的方法是两个主机分别绑定一个新的UDP端口,并通过探测包和探测响应包的交互获取对方的新的公网IP地址和UDP端口地址,从而建立直连UDP通道。在现有技术的方法中,需要根据确定的NAT类型采用不同的通讯方式建立P2P通道,并且,由于建立P2P通道时不绑定新端口,有可能造成通道无法建立或与服务器的通信中断。(这是结合现有技术论述本发明的优点)除两主机所处的NAT类型都是Symmetric NAT的情况,本发明的方法适用于在所有NAT类型组合之内的通信双方之间建立P2P通道,并且不导致客户端与转发服务器之间的通信中断。在P2P通道建立的过程中,由于主机之间通过转发服务器转发数据,不会造成数据通信的时延,所以能够很好地满足对实时性要求较高的数据传输的需要。
而且,本发明的方法不需要两台外网服务器协助确定NAT类型,可以节省网络资源和建立P2P通道所需的时间。
附图说明
图1是网络中的主机以客户端/服务器方式连接的示意图;
图2是网络中的主机以P2P方式连接的示意图;
图3是现有技术中主机确定防火墙或NAT类型的方法示意图;
图4是待建立P2P通道的两台主机位于不同内网的结构示意图;
图5是根据本发明一实施例的启动建立UDP直连通道的流程图;
图6是根据本发明一实施例的建立UDP直连通道的流程图。
图7是根据本发明另一实施例的建立UDP直连通道的流程图。
具体实施方式
为了使本发明的目的、技术方案和优点更清楚,下面结合附图和具体实施方式对本发明作进一步描述。
本发明提供了一种在两台位于不同内网的主机之间建立P2P通道的方法,参见图4,客户端A和客户端B分别位于NAT类型为NAT A和NAT B的内网中,转发服务器(以下简称服务器)位于公网环境中,本发明的方法是客户端A和客户端B分别绑定新的用户数据报协议(UDP)端口,在客户端A和客户端B之间建立直连UDP通道。
下面结合图4和具体实施例详细说明本发明的方法。
图5是根据本发明一实施例启动建立直连UDP通道的流程图。在该实施例中,客户端A欲建立与客户端B的直连UDP通道并发送数据,该流程包括如下步骤:
步骤501:客户端A和客户端B通过UDP协议登录服务器。
在客户端A和客户端B登录服务器后,服务器端将更新记录客户端相关网络信息的表,在该表中添加客户端A和客户端B的相关网络信息:
用户编号 | 内网IP | 内网端口 | 公网IP | 公网端口 |
客户端A | aaaa | mm | AAAA | MM |
客户端B | bbbb | nn | BBBB | NN |
在登录成功后,服务器分别向客户端A和B返回各自的公网IP和公网端口,并将成功登录该服务器的其它用户的内网和公网的IP和端口发送至客户端A和客户端B;
客户端A在登录成功后记录自身的网络信息:
内网IP | 内网端口 | 公网IP | 公网端口 |
Aaaa | mm | AAAA | MM |
客户端A在自身保存的其它用户信息表中添加客户端B的信息:
用户编号 | 内网IP | 内网端口 | 公网IP | 公网端口 | 连接状态 |
客户端B | bbbb | nn | BBBB | NN | 未知 |
其中,连接状态为“未知”表示客户端A和客户端B从未进行通信;
同时,客户端B也在登录成功后记录自身的网络信息:
内网IP | 内网端口 | 公网IP | 公网端口 |
Bbbb | nn | BBBB | NN |
客户端B也在自身保存的其它用户信息表中添加客户端A的信息:
用户编号 | 内网IP | 内网端口 | 公网IP | 公网端口 | 连接状态 |
客户端A | aaaa | mm | AAAA | MM | 未知 |
步骤502:当客户端A需要向客户端B发送数据时,客户端A通过查询自身保存的其它用户信息表确定与客户端B的连接状态,如果连接状态为“未知”,表示客户端A和客户端B之间还未启动建立直连UDP通道的程序,转到步骤503;如果连接状态为“不通”,表示客户端A和客户端B之间正处于建立直连UDP通道的过程中,转到步骤505;如果连接状态为“通”,表示客户端A和客户端B之间已经建立起直连UDP通道,转到步骤507。
步骤503:客户端A在其它用户信息表中将客户端B的连接状态设置为“不通”。
步骤504:客户端A启动建立直连UDP通道的过程,然后返回步骤502。
步骤505:客户端A向服务器递交转发数据请求。
步骤506:服务器接收到客户端A的转发数据的请求后,将数据传送至客户端B,并告知客户端B数据是由客户端A发送的,然后返回步骤502。
由于建立UDP直连通道需要一定的时间,而且客户端A和客户端B之间存在无法建立直连UDP通道的可能,所以,在通道建立之前通过服务器转发数据可以保证数据收发不受直连UDP通道建立延时的影响。
步骤507:客户端A通过直连UDP通道直接发送数据至客户端B。
步骤508:客户端A检查是否还有数据需要发送,如果有,则返回步骤502判断客户端A与客户端B的连接状态;如果没有,则结束。
从上述流程的可以看出,当客户端A查询到与客户端B的连接状态为“未知”时,说明两客户端之间未建立直连UDP通道,此时,可以启动建立直连UDP通道的流程;当客户端A查询到客户端B的连接状态为“不通”时,说明两客户端之间正处于建立直连UDP通道的过程中,为了不影响数据传输的实时性,通过服务器转发数据;当客户端A查询到客户端B的连接状态为“通”时,说明两客户端之间已经建立了直连UDP通道,可以通过该直连通道发送数据。
下面详细说明客户端A启动建立直连UDP通道的过程。仍以图4所示的网络结构为例,客户端A和客户端B分别位于NAT类型为NAT A和NATB的内网中,服务器位于公网环境中,在客户端A和客户端B之间建立直连UDP通道。
图6是根据本发明一实施例建立直连UDP通道的流程图,从图中可以看出,在该实施例中,建立直连UDP通道的过程包括如下步骤:
步骤601:客户端A绑定一个新的UDP端口,端口地址为xx。
步骤602:客户端A通过新绑定的UDP端口向服务器发送与客户端B建立直连UDP通道的请求,该请求的内容包括:
类型 | 源 | 目的 | 源内网端口 |
直连请求 | 客户端A | 客户端B | xx |
步骤603:服务器接收到该直连请求后,提取出客户端A的公网IP和公网UDP端口,向客户端B转发该请求,所转发的直连请求中包括客户端A的公网IP地址和公网UDP端口,转发的请求内容包括:
类型 | 源 | 目的 | 源公网IP | 源公网端口 | 源内网端口 |
直连请求 | 客户端A | 客户端B | AAAA | XX | xx |
其中,源公网IP和源公网端口由服务器从接收到的客户端A的请求UDP报文头中所获取。
步骤604:客户端B接收到直连请求后,绑定一个新的UDP端口,端口地址为yy,然后通过该端口向服务器发送直连响应1,该响应的内容包括:
类型 | 源 | 目的 | 源内网端口 |
直连响应1 | 客户端B | 客户端A | yy |
步骤605:服务器接收到直连响应1后,提取出客户端B的公网IP和公网UDP端口,向客户端A转发该直连响应1,所转发的直连响应1中包括客户端B的公网IP地址和公网UDP端口,转发的直连响应1内容包括:
类型 | 源 | 目的 | 源公网IP | 源公网端口 | 源内网端口 |
直连响应1 | 客户端B | 客户端A | BBBB | YY | yy |
其中,源公网IP和源公网端口是服务器从接收到的客户端B的响应UDP报文头中获取的信息。
步骤606:客户端A接收到客户端B的直连响应1后,向客户端B发送探测包,该探测包的内容包括:
类型 | 目的公网IP | 目的公网端口 |
探测 | BBBB | YY |
步骤607:客户端B接收到客户端A的探测包后,在自身保存的其它用户信息表中更新客户端A的连接状态为“通”,同时将该表中客户端A的公网IP和公网端口更新为探测包中UDP报文头中的IP地址和端口,更新后的其它用户信息表中客户端A的内容为:
用户编号 | 内网IP | 内网端口 | 公网IP | 公网端口 | 连接状态 |
客户端A | aaaa | xx | RAAA | RX | 通 |
其中,RAAA为客户端A向客户端B发送探测包时所采用的直连公网IP地址,RX为客户端A向客户端B发送探测包时所采用的直连公网端口地址;
步骤608:客户端B向客户端A的新公网IP和端口发送探测响应包,该探测响应包的内容包括:
类型 | 对方探测我的公网IP | 对方探测我的公网端口 |
探测响应 | BBBB | YY |
步骤609:客户端A接收到客户端B的探测响应后,将自身保存的其它用户信息表中的客户端B的连接状态更新为“通”,将表中客户端B的公网IP和公网端口更新为客户端B发来的探测响应包中UDP报文头中的IP地址和端口,更新后的其它用户信息表中客户端B的内容为:
用户编号 | 内网IP | 内网端口 | 公网IP | 公网端口 | 连接状态 |
客户端B | bbbb | yy | RBBB | RY | 通 |
其中,RBBB为客户端B向客户端A发送探测包时所采用的直连公网IP地址,RY为客户端B向客户端A发送探测包时所采用的直连公网端口地址;
如此,在客户端A和客户端B之间建立了直连UDP通道,即P2P通道。由于客户端A和客户端B通过分别绑定一个新的UDP端口建立该直连UDP通道,所以,该通道内传输的数据通过新的UDP端口,当其它客户端需要与客户端A或客户端B建立直连UDP端口时,再分别绑定新端口,这样,即使NAT A或NAT B是restricted clone NAT或port-restricted clone NAT,也可以建立新的通道,同时不会导致客户端A或客户端B与服务器的通信中断。
图7是根据本发明另一具体实施例的建立直连UDP通道的流程图,从图中可以看出,在该实施例中,建立直连UDP通道的过程包括如下步骤:
步骤701:客户端A绑定一个新的UDP端口,端口地址为xx。
步骤702:客户端A通过新绑定的UDP端口向服务器发送与客户端B建立直连UDP通道的请求,该请求的内容包括:
类型 | 源 | 目的 | 源内网端口 |
直连请求 | 客户端A | 客户端B | xx |
步骤703:服务器接收到该直连请求后,向客户端B转发该请求,转发的请求内容包括:
类型 | 源 | 目的 | 源公网IP | 源公网端口 | 源内网端口 |
直连请求 | 客户端A | 客户端B | AAAA | XX | xx |
其中,源公网IP和源公网端口是服务器从接收到客户端A的请求UDP报文头中所获取的信息。
步骤704:客户端B接收到直连请求后,绑定一个新的UDP端口,端口地址为yy,然后通过该端口向服务器发送直连响应1,该响应的内容包括:
类型 | 源 | 目的 | 源内网端口 |
直连响应1 | 客户端B | 客户端A | yy |
步骤705:服务器接收到直连响应1后,向客户端A转发该直连响应1,转发的直连响应1内容包括:
类型 | 源 | 目的 | 源公网IP | 源公网端口 | 源内网端口 |
直连响应1 | 客户端B | 客户端A | BBBB | YY | yy |
其中,源公网IP和源公网端口是服务器从接收到的客户端B的响应UDP报文头中获取的信息,然后同时执行步骤706和步骤710。
步骤706:客户端A接收到客户端B的直连响应1后,向客户端B发送探测包,该探测包的内容包括:
类型 | 目的公网IP | 目的公网端口 |
探测 | BBBB | YY |
步骤707:客户端B接收到客户端A的探测包后,在自身保存的其它用户信息表中更新客户端A的连接状态为“通”,同时将该表中客户端A的公网IP和公网端口更新为探测包中UDP报文头中的IP地址和端口,更新后的其它用户信息表中客户端A的内容为:
用户编号 | 内网IP | 内网端口 | 公网IP | 公网端口 | 连接状态 |
客户端A | Aaaa | Xx | RAAA | RX | 通 |
步骤708:客户端B向客户端A的新公网IP和端口发送探测响应,该探测响应的内容包括:
类型 | 对方探测我的公网IP | 对方探测我的公网端口 |
探测响应 | BBBB | YY |
步骤709:客户端A接收到客户端B的探测响应后,将自身保存的其它用户信息表中的客户端B的连接状态更新为“通”,将表中客户端B的公网IP和公网端口更新为客户端B发来的探测响应包中UDP报文头中的IP地址和端口,更新后的其它用户信息表中客户端B的内容为:
用户编号 | 内网IP | 内网端口 | 公网IP | 公网端口 | 连接状态 |
客户端B | bbbb | yy | RBBB | RY | 通 |
然后结束。
步骤710:客户端A向客户端B发送直连响应2,直连响应2的内容为为:
类型 | 源 | 目的 |
直连响应2 | 客户端A | 客户端B |
步骤711:服务器接收到直连响应2后,向客户端B转发该直连响应2,转发的直连响应2内容包括:
类型 | 源 | 目的 |
直连响应2 | 客户端A | 客户端B |
步骤712:客户端B接收到客户端A的直连响应2后,向客户端A发送探测包,该探测包的内容包括:
类型 | 目的公网IP | 目的公网端口 |
探测 | AAAA | XX |
步骤713:客户端A接收到客户端B的探测包后,在自身保存的其它用户信息表中更新客户端B的连接状态为“通”,同时将该表中客户端B的公网IP和公网端口更新为探测包中UDP报文头中的IP地址和端口,更新后的其它用户信息表中客户端B的内容为:
用户编号 | 内网IP | 内网端口 | 公网IP | 公网端口 | 连接状态 |
客户端B | Bbbb | yy | RBBB | RY | 通 |
步骤714:客户端A向客户端B的新公网IP和端口发送探测响应,该探测响应的内容包括:
类型 | 对方探测我的公网IP | 对方探测我的公网端口 |
探测响应 | AAAA | XX |
步骤715:客户端B接收到客户端A的探测响应后,将自身保存的其它用户信息表中的客户端A的连接状态更新为“通”,将表中客户端A的公网IP和公网端口更新为客户端A发来的探测响应包中UDP报文头中的IP地址和端口,更新后的其它用户信息表中客户端A的内容为:
用户编号 | 内网IP | 内网端口 | 公网IP | 公网端口 | 连接状态 |
客户端A | aaaa | xx | RAAA | RX | 通 |
然后结束。
如此,在客户端A和客户端B之间建立了直连UDP通道,即P2P通道。
在上述流程中,步骤706至步骤709是客户端A向客户端B探测的步骤,步骤712至步骤715是客户端B向客户端A探测的步骤。本发明的方法是客户端A和客户端B分别向对方发送探测,这样,不仅可以保证客户端A和客户端B还可以与其它客户端建立P2P通道,而且,也可以保证在NAT A是Symmetric NAT时,通过客户端B向客户端A的探测,成功建立UDP直连通道。
需要说明的是,除了NAT A和NAT B都是Symmetric NAT的情况,本发明的方法适用于其它任何NAT类型的组合。
其中,在本发明中,如果在建立P2P通道之后,还需要进一步建立新的P2P通道,则可采用新的UDP端口,按照与上述各实施例完全相同的方法建立新的通道,并不影响本发明的实现。
在具体的实施过程中可对根据本发明的方法进行适当的改进,以适应具体情况的具体需要。因此可以理解,根据本发明的具体实施方式只是起示范作用,并不用以限制本发明的保护范围。
Claims (13)
1、一种建立对等直连通道的方法,其特征在于,该方法包括如下步骤:
A、第一主机绑定第一用户数据报协议UDP端口,并通过第一UDP端口向转发服务器发送直连请求,转发服务器提取出第一主机的公网IP和公网UDP端口,然后向第二主机转发该直连请求,其中,所转发的直连请求中包括第一主机公网IP地址和公网UDP端口;
B、第二主机接收到直连请求后绑定第二UDP端口,并通过第二UDP端口向转发服务器发送直连响应,转发服务器提取出第二主机的公网IP和公网UDP端口,然后向第一主机转发该直连响应,其中,该直连响应中包含第二主机公网IP地址和公网UDP端口;
C、第一主机通过第一UDP端口向第二主机公网IP地址和公网端口地址发送探测包,第二主机从探测包获取第一主机的直连公网IP地址和直连公网端口地址,并向该地址发送探测响应包,第一主机从探测响应包获取第二主机的直连公网IP地址和直连公网端口地址,第一主机和第二主机分别根据所获得的对方主机的直连公网IP地址和直连公网端口地址,在彼此间建立对等直连通道。
2、根据权利要求1所述的方法,其特征在于,步骤C中,所述利用该探测包/探测响应包将第一主机/第二主机的直连公网IP地址和直连公网端口地址发送给第二主机/第一主机进一步包括:
第二主机/第一主机将收到的直连公网IP地址和直连公网端口地址更新在该主机的用户信息表中。
3、根据权利要求1或2所述的方法,其特征在于,步骤C所述利用该探测包/探测响应包将第一主机/第二主机的直连公网IP地址和直连公网端口地址发送给第二主机/第一主机包括:
第二主机/第一主机从所获得的探测包/探测响应包中的UDP报文头中获得所述直连公网IP地址和直连公网端口地址。
4、根据权利要求1所述的方法,其特征在于,步骤C之后,该方法进一步包括:
判断是否需要建立新的对等直连通道,如果是,则第一主机和第二主机分别采用新的UDP端口,然后返回步骤A。
5、一种建立对等直连通道的方法,其特征在于,该方法包括如下步骤:
a、第一主机绑定第一用户数据报协议UDP端口,并通过第一UDP端口向转发服务器发送直连请求,转发服务器向第二主机转发该直连请求,其中,所转发的直连请求中包括第一主机公网IP地址和第一UDP公网端口地址;
b、第二主机接收到直连请求后,绑定第二UDP端口,并通过第二UDP端口向转发服务器发送直连响应,转发服务器向第一主机转发该直连响应,其中,该直连响应中包含第二主机公网IP地址和第二UDP公网端口地址;
c、第一主机根据收到的直连响应中所包含的第二主机公网IP地址和第二UDP公网端口地址,通过第一UDP端口向第二主机发送探测包,通过该探测包将第一主机的直连公网IP地址和直连公网端口地址发送给第二主机,第二主机收到该探测包后,向第一主机发送探测响应包,通过该探测响应包将第二主机的直连公网IP地址和直连公网端口地址发送给第一主机,
第一主机通过转发服务器将接收到的直连响应发送至第二主机,第二主机接收到该直连响应后,通过第二UDP端口发送探测包至第一主机,利用该探测包将第二主机的直连公网IP地址和直连公网端口地址发送给第一主机,第一主机收到该探测包后,向第二主机发送探测响应包,利用该探测响应包将第一主机的直连公网IP地址和直连公网端口地址发送给第二主机;和,
第一主机和第二主机分别根据所获得的对方主机的直连公网IP地址和直连公网端口地址,在彼此间建立对等直连通道。
6、根据权利要求5所述的方法,其特征在于,步骤c中,所述利用该探测包/探测响应包将直连公网IP地址和直连公网端口地址发送给进一步包括:
接收到该直连公网IP地址和直连公网端口地址的主机将收到的直连公网IP地址和直连公网端口地址更新在该主机的用户信息表中。
7、根据权利要求5或6所述的方法,其特征在于,步骤c所述利用该探测包/探测响应包将直连公网IP地址和直连公网端口地址发送给包括:
接收到该直连公网IP地址和直连公网端口地址的主机从所获得的探测包/探测响应包中的UDP报文头中获得所述直连公网IP地址和直连公网端口地址。
8、一种建立对等直连通道的方法,其特征在于,该方法包括如下步骤:
步骤a1:第一主机和第二主机登录转发服务器;
步骤a2:判断第一主机和第二主机的连接状态,如果判断得到连接状态未知,则第一主机和第二主机分别绑定各自的UDP端口,在第一主机和第二主机的UDP端口间发送探测包以及探测响应包,实现在第一主机和第二主机间建立对等直连通道。
9、根据权利要求8所述的方法,其特征在于,所述发送探测包以及探测响应包进一步包括:将第一主机和第二主机的连接状态更新为不通状态,步骤a2所述判断进一步包括:
判断第一主机和第二主机的连接状态是否为不通状态,如果是,则该方法进一步包括:
第一主机通过转发服务器向第二主机转发数据。
10、根据权利要求8所述的方法,其特征在于,在相应主机接收到探测包之后,该方法进一步包括:将第一主机和第二主机的连接状态更新为通的状态,步骤a2所述判断进一步包括:
判断第一主机和第二主机的连接状态是否为通的状态,如果是,则该方法进一步包括:
第一主机和第二主机通过已经建立的直连通道传送数据。
11、根据权利要求9或10所述的方法,其特征在于,所述更新状态为:
在用户信息表中将进行所述状态更新。
12、根据权利要求9或10所述的方法,其特征在于,所述传送数据之后,该方法进一步包括:
判断数据传送是否已经结束,如果是,则结束本流程,否则,返回所述步骤a1。
13、根据权利要求8所述的方法,其特征在于,所述第一主机和第二主机分别位于不同NAT所管辖的内网中,所述转发服务器位于公网中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100020580A CN100426769C (zh) | 2005-01-12 | 2005-01-12 | 一种建立对等直连通道的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100020580A CN100426769C (zh) | 2005-01-12 | 2005-01-12 | 一种建立对等直连通道的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1805388A true CN1805388A (zh) | 2006-07-19 |
CN100426769C CN100426769C (zh) | 2008-10-15 |
Family
ID=36867240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100020580A Active CN100426769C (zh) | 2005-01-12 | 2005-01-12 | 一种建立对等直连通道的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100426769C (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101442478A (zh) * | 2007-11-21 | 2009-05-27 | 华为技术有限公司 | 一种无线网络中数据通道建立的方法、系统及设备 |
CN101217536B (zh) * | 2007-12-28 | 2011-11-09 | 腾讯科技(深圳)有限公司 | 穿越网络地址转换设备/防火墙的方法、系统及客户端 |
CN102497446A (zh) * | 2011-12-26 | 2012-06-13 | 杭州华三通信技术有限公司 | 一种穿越nat设备的业务流传输方法及装置 |
CN102546559A (zh) * | 2010-12-29 | 2012-07-04 | 北京新媒传信科技有限公司 | 受限网络中端到端传输数据的方法、设备和系统 |
CN103188134A (zh) * | 2011-12-29 | 2013-07-03 | 腾讯科技(深圳)有限公司 | 逻辑中转通信方法、逻辑中转服务器和逻辑中转通信系统 |
CN103873600A (zh) * | 2012-12-10 | 2014-06-18 | 中兴通讯股份有限公司 | 一种网络地址转换穿透方法及设备 |
WO2014190643A1 (zh) * | 2013-05-29 | 2014-12-04 | 华为技术有限公司 | 一种数据交互的方法、装置及系统 |
CN104519022A (zh) * | 2013-09-29 | 2015-04-15 | 北京新媒传信科技有限公司 | 一种建立连接通道的方法及装置 |
CN104702565A (zh) * | 2013-12-05 | 2015-06-10 | 中兴通讯股份有限公司 | 媒体资源共享的方法、共享服务器及共享系统 |
CN105306441A (zh) * | 2015-09-18 | 2016-02-03 | 四川效率源信息安全技术股份有限公司 | 基于p2p网络在线传输的阅后即焚方法和装置 |
US9432330B2 (en) | 2013-05-29 | 2016-08-30 | Huawei Technologies Co., Ltd. | Data interaction method, apparatus, and system |
CN112887187A (zh) * | 2021-01-19 | 2021-06-01 | 海尔数字科技(青岛)有限公司 | 一种设备间通信建立方法、系统、装置、设备及介质 |
CN114423098A (zh) * | 2020-10-10 | 2022-04-29 | 海能达通信股份有限公司 | 多基站的组网方法、多基站网络的通信方法及其相关装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6661799B1 (en) * | 2000-09-13 | 2003-12-09 | Alcatel Usa Sourcing, L.P. | Method and apparatus for facilitating peer-to-peer application communication |
KR100949510B1 (ko) * | 2001-02-20 | 2010-03-24 | 아이볼네트워크 인코포레이티드 | 방화벽을 통과하여 데이터전송을 허용하기 위한 장치와 방법 |
JP2004180003A (ja) * | 2002-11-27 | 2004-06-24 | Kitt Peak:Kk | 通信ネットワークシステムおよび通信の接続方法 |
-
2005
- 2005-01-12 CN CNB2005100020580A patent/CN100426769C/zh active Active
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101442478A (zh) * | 2007-11-21 | 2009-05-27 | 华为技术有限公司 | 一种无线网络中数据通道建立的方法、系统及设备 |
CN101217536B (zh) * | 2007-12-28 | 2011-11-09 | 腾讯科技(深圳)有限公司 | 穿越网络地址转换设备/防火墙的方法、系统及客户端 |
CN102546559A (zh) * | 2010-12-29 | 2012-07-04 | 北京新媒传信科技有限公司 | 受限网络中端到端传输数据的方法、设备和系统 |
CN102546559B (zh) * | 2010-12-29 | 2015-10-28 | 北京新媒传信科技有限公司 | 受限网络中端到端传输数据的方法、设备和系统 |
CN102497446B (zh) * | 2011-12-26 | 2015-04-15 | 杭州华三通信技术有限公司 | 一种穿越nat设备的业务流传输方法及装置 |
CN102497446A (zh) * | 2011-12-26 | 2012-06-13 | 杭州华三通信技术有限公司 | 一种穿越nat设备的业务流传输方法及装置 |
CN103188134A (zh) * | 2011-12-29 | 2013-07-03 | 腾讯科技(深圳)有限公司 | 逻辑中转通信方法、逻辑中转服务器和逻辑中转通信系统 |
CN103188134B (zh) * | 2011-12-29 | 2016-12-21 | 腾讯科技(深圳)有限公司 | 逻辑中转通信方法、逻辑中转服务器和逻辑中转通信系统 |
CN103873600A (zh) * | 2012-12-10 | 2014-06-18 | 中兴通讯股份有限公司 | 一种网络地址转换穿透方法及设备 |
CN103873600B (zh) * | 2012-12-10 | 2018-10-26 | 中兴通讯股份有限公司 | 一种网络地址转换穿透方法及设备 |
WO2014190643A1 (zh) * | 2013-05-29 | 2014-12-04 | 华为技术有限公司 | 一种数据交互的方法、装置及系统 |
US9432330B2 (en) | 2013-05-29 | 2016-08-30 | Huawei Technologies Co., Ltd. | Data interaction method, apparatus, and system |
CN104519022A (zh) * | 2013-09-29 | 2015-04-15 | 北京新媒传信科技有限公司 | 一种建立连接通道的方法及装置 |
CN104702565A (zh) * | 2013-12-05 | 2015-06-10 | 中兴通讯股份有限公司 | 媒体资源共享的方法、共享服务器及共享系统 |
CN105306441A (zh) * | 2015-09-18 | 2016-02-03 | 四川效率源信息安全技术股份有限公司 | 基于p2p网络在线传输的阅后即焚方法和装置 |
CN114423098A (zh) * | 2020-10-10 | 2022-04-29 | 海能达通信股份有限公司 | 多基站的组网方法、多基站网络的通信方法及其相关装置 |
CN114423098B (zh) * | 2020-10-10 | 2024-02-06 | 海能达通信股份有限公司 | 多基站的组网方法、多基站网络的通信方法及其相关装置 |
CN112887187A (zh) * | 2021-01-19 | 2021-06-01 | 海尔数字科技(青岛)有限公司 | 一种设备间通信建立方法、系统、装置、设备及介质 |
CN112887187B (zh) * | 2021-01-19 | 2022-09-06 | 海尔数字科技(青岛)有限公司 | 一种设备间通信建立方法、系统、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100426769C (zh) | 2008-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1805388A (zh) | 一种建立对等直连通道的方法 | |
CN1878118A (zh) | 一种实现数据通讯的系统及其方法 | |
CN1863157A (zh) | 穿越nat实现网络通信的方法及装置 | |
CN1300719C (zh) | 计算机软件升级的方法 | |
CN101043384A (zh) | 一种网络测试的系统和方法 | |
CN1921457A (zh) | 一种网络设备和基于多核处理器的报文转发方法 | |
CN1744521A (zh) | 网络设备的管理方法及网络管理系统 | |
CN1852502A (zh) | 一种集群系统中实现负载均衡的方法、系统和存储控制器 | |
CN1802638A (zh) | 路由提示 | |
CN101035270A (zh) | 基于互联网络的对等视频监控方法 | |
CN101035039A (zh) | Usb映射方法 | |
CN1770718A (zh) | 用于建立双向隧道的方法和系统 | |
CN1716954A (zh) | 基于过渡机制的IPv6网和IPv4网间互通的方法 | |
CN1925493A (zh) | 一种arp报文处理方法及装置 | |
CN1856163A (zh) | 一种具有会话边界控制器的通信系统及其传输信令的方法 | |
CN101043510A (zh) | Pci-e总线分布式系统单板内及单板间数据通讯方法 | |
CN106302322B (zh) | 一种虚拟机数据流管理方法和系统 | |
CN1968226A (zh) | 点对点通信中穿越网络地址转换的方法 | |
CN1917512B (zh) | 一种建立对等直连通道的方法 | |
CN1652543A (zh) | 用于连接异类协议节点的方法和设备 | |
CN1794667A (zh) | 网络通信状况探测方法 | |
CN1595890A (zh) | 与预订通知服务的虚拟连接 | |
CN1503539A (zh) | 在IPv6中使用接口标识符的路由选择表管理方法 | |
CN1852164A (zh) | 基于联邦模型的p2p网络管理方法 | |
CN1223159C (zh) | 一种支持地址转换应用网关的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |