一种建立对等直连通道的方法

文档序号:7610970阅读:219来源:国知局
专利名称:一种建立对等直连通道的方法
技术领域
本发明涉及计算机网络中节点的连接技术,特别是涉及一种建立对等直连(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的相关网络信息

在登录成功后,服务器分别向客户端A和B返回各自的公网IP和公网端口,并将成功登录该服务器的其它用户的内网和公网的IP和端口发送至客户端A和客户端B;客户端A在登录成功后记录自身的网络信息

客户端A在自身保存的其它用户信息表中添加客户端B的信息

其中,连接状态为“未知”表示客户端A和客户端B从未进行通信;同时,客户端B也在登录成功后记录自身的网络信息

客户端B也在自身保存的其它用户信息表中添加客户端A的信息

步骤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通道的请求,该请求的内容包括

步骤603服务器接收到该直连请求后,提取出客户端A的公网IP和公网UDP端口,向客户端B转发该请求,所转发的直连请求中包括客户端A的公网IP地址和公网UDP端口,转发的请求内容包括

其中,源公网IP和源公网端口由服务器从接收到的客户端A的请求UDP报文头中所获取。
步骤604客户端B接收到直连请求后,绑定一个新的UDP端口,端口地址为yy,然后通过该端口向服务器发送直连响应1,该响应的内容包括

步骤605服务器接收到直连响应1后,提取出客户端B的公网IP和公网UDP端口,向客户端A转发该直连响应1,所转发的直连响应1中包括客户端B的公网IP地址和公网UDP端口,转发的直连响应1内容包括

其中,源公网IP和源公网端口是服务器从接收到的客户端B的响应UDP报文头中获取的信息。
步骤606客户端A接收到客户端B的直连响应1后,向客户端B发送探测包,该探测包的内容包括

步骤607客户端B接收到客户端A的探测包后,在自身保存的其它用户信息表中更新客户端A的连接状态为“通”,同时将该表中客户端A的公网IP和公网端口更新为探测包中UDP报文头中的IP地址和端口,更新后的其它用户信息表中客户端A的内容为

其中,RAAA为客户端A向客户端B发送探测包时所采用的直连公网IP地址,RX为客户端A向客户端B发送探测包时所采用的直连公网端口地址;步骤608客户端B向客户端A的新公网IP和端口发送探测响应包,该探测响应包的内容包括

步骤609客户端A接收到客户端B的探测响应后,将自身保存的其它用户信息表中的客户端B的连接状态更新为“通”,将表中客户端B的公网IP和公网端口更新为客户端B发来的探测响应包中UDP报文头中的IP地址和端口,更新后的其它用户信息表中客户端B的内容为

其中,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通道的请求,该请求的内容包括

步骤703服务器接收到该直连请求后,向客户端B转发该请求,转发的请求内容包括

其中,源公网IP和源公网端口是服务器从接收到客户端A的请求UDP报文头中所获取的信息。
步骤704客户端B接收到直连请求后,绑定一个新的UDP端口,端口地址为yy,然后通过该端口向服务器发送直连响应1,该响应的内容包括

步骤705服务器接收到直连响应1后,向客户端A转发该直连响应1,转发的直连响应1内容包括

其中,源公网IP和源公网端口是服务器从接收到的客户端B的响应UDP报文头中获取的信息,然后同时执行步骤706和步骤710。
步骤706客户端A接收到客户端B的直连响应1后,向客户端B发送探测包,该探测包的内容包括

步骤707客户端B接收到客户端A的探测包后,在自身保存的其它用户信息表中更新客户端A的连接状态为“通”,同时将该表中客户端A的公网IP和公网端口更新为探测包中UDP报文头中的IP地址和端口,更新后的其它用户信息表中客户端A的内容为

步骤708客户端B向客户端A的新公网IP和端口发送探测响应,该探测响应的内容包括

步骤709客户端A接收到客户端B的探测响应后,将自身保存的其它用户信息表中的客户端B的连接状态更新为“通”,将表中客户端B的公网IP和公网端口更新为客户端B发来的探测响应包中UDP报文头中的IP地址和端口,更新后的其它用户信息表中客户端B的内容为

然后结束。
步骤710客户端A向客户端B发送直连响应2,直连响应2的内容为为

步骤711服务器接收到直连响应2后,向客户端B转发该直连响应2,转发的直连响应2内容包括

步骤712客户端B接收到客户端A的直连响应2后,向客户端A发送探测包,该探测包的内容包括

步骤713客户端A接收到客户端B的探测包后,在自身保存的其它用户信息表中更新客户端B的连接状态为“通”,同时将该表中客户端B的公网IP和公网端口更新为探测包中UDP报文头中的IP地址和端口,更新后的其它用户信息表中客户端B的内容为

步骤714客户端A向客户端B的新公网IP和端口发送探测响应,该探测响应的内容包括

步骤715客户端B接收到客户端A的探测响应后,将自身保存的其它用户信息表中的客户端A的连接状态更新为“通”,将表中客户端A的公网IP和公网端口更新为客户端A发来的探测响应包中UDP报文头中的IP地址和端口,更新后的其它用户信息表中客户端A的内容为

然后结束。
如此,在客户端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端口,按照与上述各实施例完全相同的方法建立新的通道,并不影响本发明的实现。
在具体的实施过程中可对根据本发明的方法进行适当的改进,以适应具体情况的具体需要。因此可以理解,根据本发明的具体实施方式
只是起示范作用,并不用以限制本发明的保护范围。
权利要求
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所管辖的内网中,所述转发服务器位于公网中。
全文摘要
本发明公开了一种建立对等直连通道的方法,该方法是第一主机绑定第一UDP端口,并通过第一UDP端口向转发服务器发送直连请求,转发服务器向第二主机发送直连请求;第二主机绑定第二UDP端口,并通过第二UDP端口向转发服务器发送直连响应,转发服务器向第一主机发送直连响应;第一主机通过第一UDP端口发送探测包至第二主机,第二主机从探测包中UDP报文头获取第一主机的直连IP地址和端口地址,并向获取的第一主机的直连IP地址和端口地址发送探测响应包,第一主机从探测响应包UDP报文头获取第二主机的直连IP地址和端口地址。使用该方法,成功建立对等直连通道的可能性较现有技术会有很大提高。
文档编号H04L29/06GK1805388SQ200510002058
公开日2006年7月19日 申请日期2005年1月12日 优先权日2005年1月12日
发明者周全, 李炯 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1