CN100454905C - 穿越网络地址转换的方法 - Google Patents
穿越网络地址转换的方法 Download PDFInfo
- Publication number
- CN100454905C CN100454905C CNB2006100835919A CN200610083591A CN100454905C CN 100454905 C CN100454905 C CN 100454905C CN B2006100835919 A CNB2006100835919 A CN B2006100835919A CN 200610083591 A CN200610083591 A CN 200610083591A CN 100454905 C CN100454905 C CN 100454905C
- Authority
- CN
- China
- Prior art keywords
- address
- server end
- communicating pair
- message
- 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.)
- Active
Links
Images
Abstract
本发明公开了一种穿越网络地址转换的方法,包括以下步骤:步骤1为通信双方中的每一方从STUN服务器端获取该方所使用的NAT设备类型信息以及STUN服务器端为该方分配的IP地址/端口对;并从TURN服务器端获取TURN服务器端为该方分配的IP地址/端口对;步骤2为所述每一方向应用服务器端发送通知消息;步骤3为应用服务器端根据所述通信双方的NAT设备类型信息,从所述每一方发送的IP地址/端口对中,选取能够使通信双方建立连接的IP地址/端口对发送至另一方;所述通信双方中的每一方在收到所述IP地址/端口对后,通过所述IP地址/端口对与另一方建立通信连接。本发明能够实现高效地穿越各种NAT设备建立通信连接且具有广泛适用性。
Description
技术领域
本发明涉及穿越网络地址转换(Network Address Translator,简称NAT)的方法,特别涉及能够实现高效地穿越各种NAT设备建立通信连接,并且具有广泛适用性的穿越网络地址转换的方法。
背景技术
网络地址转换(NAT)是为了解决Internet上IPv4地址日益紧张的状况,而提出的一种将一组ip地址/端口映射到另一组ip地址/端口的网络技术。私网内可能有多台机器,每台机器都分配到一个私网内唯一的ip地址,通常一个私网只分配到少数几个公网ip地址,所以私网内的机器与公网内的机器通信时都必须把私网ip地址/端口映射成公网ip地址/端口,公网上内的机器到私网内的机器通讯时都必须把公网ip地址/端口映射成私网ip地址/端口,这就是网络地址转换(NAT)。网络地址转换(NAT)是通过NAT设备完成网络地址转换操作,NAT设备通过修改内部网络数据包的包头IP地址信息并跟踪该映射信息,使同一局域网内的多个终端节点可以共享同一个外部IP地址,从而在一定程度上缓解了IPv4地址紧张的问题。
NAT在Internet上的大规模使用为现有的网络应用,尤其是对等通信(即点对点通信,简称P2P)带来了很多问题。对等通信是指网络中的物理节点在逻辑上具有相同的地位,而并非处理能力的对等,其实质在于将互联网的集中管理模式引向分散管理模式,将内容从中央单一节点引向网络的边缘,从而充分利用互联网中众多终端节点所蕴涵的处理能力和潜在资源。相对于传统的集中式客户/服务器(C/S)模型,P2P弱化了服务器的概念,系统中的各个节点不再区分服务器和客户端的角色关系,每个节点既可请求服务,也可提供服务,节点之间可以直接交换资源和服务而不必通过服务器。而由于NAT技术改变了网络数据包的地址信息,使得节点之间的对等连接无法成功建立,因此许多对等应用无法运行在NAT设备存在的环境中。
为了解决上述问题,现有技术中通常采取以下方法:
1、UDP穿孔(UDP HOLE PUNCHING)方法。
该方法是从NAT设备所在的私网内的终端向外部网络中的终端发送UDP数据包,该数据包经过NAT设备时NAT设备保存其映射关系,以使从该外部网络中的终端发送的数据包能够通过该映射关系穿越该NAT设备,到达该私网内的终端。
该方法的不足之处在于:由于NAT设备的处理流程是非标准化的,因此该方法并不能应用于所有类型的NAT设备,并且当NAT设备不支持UDP协议时不能应用该方法。
2、UDP简单穿越网络地址转换(SIMPLE TRAVERSAL OF USER DATAGRAMPROTOCOL ADDRESS TRANSLATION,简称STUN)方法。
该方法的原理是:私网接入用户通过某种机制预先得到其地址对应在出口NAT上的对外地址,然后在报文负载中所描述的地址信息就直接填写出口NAT上的对外地址,而不是私网内用户的私有IP地址,这样报文负载中的内容在经过NAT时就无需被修改了,只需按普通NAT流程转换报文头的IP地址即可。该方法通常的实现过程为:应用程序(即STUN客户端,简称STUN Client)通过UDP协议向NAT外的STUN服务器端(简称STUN Sever)发送请求STUN消息,STUN Sever收到请求消息,产生响应消息,响应消息中包括请求消息的源端口,即STUN Client在NAT上对应的外部端口。然后响应消息通过NAT发送给STUN Client,STUN Client通过响应消息体中的内容得知其在NAT上对应的外部地址,并且将其填入以后呼叫协议的UDP负载中,告知对端,本端的RTP接收地址和端口号为NAT外的地址和端口号。由于通过STUN协议已在NAT上预先建立媒体流的NAT映射表项,故后续的媒体流可顺利穿越NAT。该方法具有系统负担小,容易实现,可以实现多级NAT管理等优点。
该方法的不足之处在于:
1、无法实现对对称型NAT(Symmetric NAT)的穿越,而在多数对安全性要求较高的企业网中,使用的通常是对称型NAT;
2、不适合支持TCP连接的穿越,因此不支持H.323应用协议对NAT的穿越;
3、不支持下一代网络(简称NGN)业务对NAT的穿越。
发明内容
本发明的目的是针对上述现有技术的不足,提供穿越网络地址转换的方法,能够实现高效地穿越各种NAT设备建立通信连接,并且具有广泛适用性。
为实现上述发明目的,本发明提供了一种穿越网络地址转换的方法,包括以下步骤:
步骤1、要建立通信连接的通信双方中的每一方从STUN服务器端获取该方所使用的NAT设备类型信息以及所述STUN服务器端为该方分配的IP地址/端口对;并从TURN服务器端获取所述TURN服务器端为该方分配的IP地址/端口对;
步骤2、所述通信双方中的每一方,向应用服务器端发送通知消息,所述通知消息中包括该方使用的NAT设备类型信息、本地IP地址/端口对、以及所述STUN服务器端和TURN服务器端为该方分配的IP地址/端口对;
步骤3、所述应用服务器端根据所述通信双方的NAT设备类型信息,从所述每一方发送的IP地址/端口对中,选取能够使通信双方建立连接的IP地址/端口对发送至另一方;所述通信双方中的每一方在收到所述IP地址/端口对后,通过所述IP地址/端口对与另一方建立通信连接。
进一步地,所述步骤3可具体包括以下步骤:在步骤3a中,所述应用服务器端根据所述NAT设备类型信息,从所述通信双方中的每一方发送的通知消息中包括的IP地址/端口对中,选取能够使通信双方建立连接的IP地址/端口对发送至另一方;然后在步骤3b中,通信双方中的每一方收到所述IP地址/端口对后,启动TCP/UDP服务器,等待另一方向所述TCP/UDP服务器发送消息以进行连接检查;并根据己方的NAT设备类型消息,判断己方的NAT设备是否支持UDP协议,如果己方的NAT设备支持UDP协议则执行步骤3c,否则继续判断己方的NAT设备是否支持TCP协议,如果己方的NAT设备支持TCP协议则执行步骤3d,否则结束;在步骤3c中,通过向所述IP地址/端口对发送UDP消息来检查是否能够建立通信连接,是则通过向该IP地址/端口对发送消息而与另一方建立通信连接,然后结束;否则向所述应用服务器端发送连接失败消息后结束;在步骤3d中,通过向所述IP地址/端口对发送TCP消息来检查是否能够建立通信连接,是则通过向该IP地址/端口对发送消息而与另一方建立通信连接,然后结束;否则向所述应用服务器端发送连接失败消息后结束。
为实现发明目的,本发明还提供了一种穿越网络地址转换的方法,包括以下步骤:
步骤A、要建立通信连接的通信双方中的每一方从STUN服务器端获取该方所使用的NAT设备类型信息、以及所述STUN服务器端为该方分配的IP地址/端口对,并从TURN服务器端获取TURN服务器端为该方分配的IP地址/端口对;
步骤B、所述通信双方中的每一方向所述应用服务器端发送通知消息,所述应用服务器端将所述通知消息转发给所述通信双方中的另一方,所述通知消息中包括该方使用的NAT设备类型信息、本地IP地址/端口对、以及所述STUN服务器端和TURN服务器端为该方分配的IP地址/端口对;
步骤C、所述通信双方中的每一方收到所述应用服务器端转发的通知消息后,根据所述通信双方所使用的NAT设备类型信息,从所述通知消息中包括的IP地址/端口对中选取能够连接到对方的IP地址/端口对,并通过向选取的IP地址/端口对发送消息而建立与对方的通信连接。
在上述技术方案中,通过有机地结合了STUN机制和TURN机制,并且通过应用服务器端根据通信双方所使用的NAT设备的类型采选取能够使通信双方建立连接的IP地址/端口对,从而能够针对不同的NAT设备选取相适应的IP地址/端口对,并且,通过进一步地针对不同的NAT设备选取相适应的优先级相对较高的IP地址/端口对,从而有效地合理分配了STUN服务器端和TURN服务器端的网络资源,且使通信双方的通信连接能够尽可能快地建立。综上所述,本发明能够达到高效地穿越各种NAT设备建立通信连接,并且具有广泛适用性的技术效果。
附图说明
图1为本发明具体实施例一的联网示意图;
图2为本发明具体实施例一的流程图;
图3为本发明具体实施例二的示意图;
图4为本发明具体实施例三的流程图;
图5为本发明具体实施例四的流程图;
图6为本发明具体实施例五的示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
本发明针对现有的穿越网络地址转换的方法不能应用于所有类型的NAT的不足之处,通过将STUN机制与TURN机制有机结合,并增设用于为通信双方选择合适的IP地址/端口对的应用服务器端,从而实现根据通信双方所使用的NAT设备的不同类型而选择相应的IP地址/端口对,使得通信双方能够借由所述选择的IP地址/端口对建立通信连接。
图1为本发明具体实施例一的联网示意图,服务器d位于公网中,其中设有STUR服务器端、TURN服务器端、以及应用服务器端;客户端a位于使用NAT设备c1的私网内,该私网通过所述NAT设备c1连接到公网;客户端b位于使用NAT设备c2的私网内,该私网通过所述NAT设备c2连接到公网。上述两个不同私网必须通过公网才能连接。处于不在同一个私网的客户端a与客户端b要建立点到点的双向通信。其中,STUN服务器端、TURN服务器端、应用服务器端分别向客户端提供STUN服务、TURN服务和应用服务,STUN服务和TURN服务都是标准服务,应用服务是本发明增设的服务。NAT设备c1和NAT设备c2提供NAT或NAPT功能,客户端a和b分别通过运行STUN客户端、TURN客户端和应用客户端功能来运行STUN协议和TURN协议、以及与所述STUN服务器端、TURN服务器端、及应用服务器端交互。所述STUN客户端和TURN客户端功能都是标准功能,应用客户端是本发明所增设的功能。STUN客户端与STUN服务器端通过STUN协议交互,TURN客户端与TURN服务器端通过TURN协议交互,应用客户端和应用服务器端通过私有协议交互。
图2为本发明具体实施例一的流程图,一种穿越网络地址转换的方法,包括以下步骤:首先在步骤1中,从STUN服务器端获取该方所使用的NAT设备类型信息以及所述STUN服务器端为该方分配的IP地址/端口对;并从TURN服务器端获取所述TURN服务器端为该方分配的IP地址/端口对;进一步地,要建立通信连接的通信双方中的每一方可通过STUN协议,从STUN服务器端获取该方所使用的NAT设备类型信息以及所述STUN服务器端为该方分配的IP地址/端口对;并可通过TURN协议,从TURN服务器端获取所述TURN服务器端为该方分配的IP地址/端口对。然后在步骤2中,通信双方中的每一方向应用服务器端发送通知消息,该通知消息中包括该方使用的NAT设备类型信息、该方的本地IP地址/端口对、以及所述STUN服务器端和TURN服务器端为该方分配的IP地址/端口对;进一步地,所述STUN服务器端、TURN服务器端、以及应用服务器端可都设在一服务器中;最后在步骤3中,所述应用服务器端根据所述通信双方的NAT设备类型信息,从所述通信双方中的每一方发送的通知消息中包括的IP地址/端口对中,选取并通过命令请求消息向另一方发送能够使通信双方建立连接的IP地址/端口对;所述通信双方中的每一方在收到所述命令请求消息后,通过向其中包括的IP地址/端口对发送消息而与另一方建立通信连接。
其中,所述NAT设备类型信息用于标识:NAT设备是位于公网或私网中、以及NAT设备所使用的NAT类型(包括锥型NAT、完全锥型NAT、限制锥型NAT、端口限制锥型NAT、对称型NAT等)。
进一步地,所述步骤1可具体包括:要建立通信连接的通信双方中的每一方,通过UDP简单穿越网络地址转换(SIMPLE TRAVERSAL OF USER DATAGRAMPROTOCOL ADDRESS TRANSLATION,简称STUN)协议,从STUN服务器端获取该方所使用的NAT设备类型信息、以及所述STUN服务器端为该方分配的IP地址/端口对;并通过运行中继方式穿越网络地址转换(Traversal UsingRelay NAT,简称TURN)协议,从TURN服务器端获取所述TURN服务器端为该方分配的IP地址/端口对。
本实施例中,通过在所述服务器中有机地结合STUN服务器端和TURN服务器端,并增设应用服务器端,在通信双方建立连接时,首先由通信双方收集各自的IP地址/端口对以及各自使用的NAT设备类型并发送给应用服务器端,然后应用服务器端为通信双方中的每一方,根据另一方使用的NAT设备类型,从另一方收集的IP地址/端口对中选取合适的能够建立通信连接的IP地址/端口对,例如:如果另一方处于公网中,则选取另一方的本地IP地址/端口对;如果另一方处于私网中并使用完全锥形NAT类型,则选取STUN服务器端为另一方分配的IP地址/端口对;等等。此外,当要建立通信连接的通信双方都位于私网中时,根据所述NAT设备类型信息,应用服务器端能够分别为通信双方选取其各自的本地IP地址/端口对,从而能够避免使用STUN服务器端或TURN服务器端分配的IP地址/端口对,提高了通信连接建立的效率。应用服务器端将分别为通信各方选取的IP地址/端口对发送给通信各方,然后通信各方通过向收到的IP地址/端口对发送消息而建立与对方的通信连接。由上述可知,本实施例通过有机地结合STUN机制和TURN机制,并增设应用服务功能,从而能够实现有效地穿越各种NAT设备,具有广泛的适用性。
此外,本实施例中,步骤3还可进一步地包括:应用服务器端还通过命令请求消息向通信双方中的每一方发送另一方的标识信息;通信双方中的每一方在收到命令请求消息后,使用其中包括的IP地址/端口对,与标识信息所标识的另一方建立通信连接。该操作使得在通信双方分别同时与多个对端通信时,可以通过该标识信息确定收到的命令请求消息中的IP地址/端口对与另一方的对应关系,从而准确地使用相应的IP地址/端口对与另一方建立通信连接。
更进一步地,本实施例中,步骤1还可包括:要建立通信连接的通信双方中的每一方,还分别为所述STUN服务器端和TURN服务器端为该方分配的IP地址/端口对以及本地IP地址/端口对,分配对应的优先级信息。相应地,步骤2中还可包括:所述通信双方中的每一方,向所述应用服务器端发送通知消息,所述通知消息中还包括所述STUN服务器端和TURN服务器端为该方分配的IP地址/端口对对应的优先级信息。相应地,步骤3还可具体包括:所述应用服务器端根据所述NAT设备类型信息,从所述通信双方中的每一方发送的通知消息中包括的IP地址/端口对中,选取能够使另一方与该方建立连接的IP地址/端口对,并从中选择优先级最高的IP地址/端口对后通过命令请求消息发送给另一方;所述通信双方中的每一方在收到所述命令请求消息后,通过向其中包括的IP地址/端口对发送消息而与另一方建立通信连接。通过增加上述内容,进一步地优化了应用服务器的操作,使得应用服务器在根据通信双方的NAT设备类型选取合适的IP地址/端口对后,还进一步地从中选取优先级最高的IP地址/端口对,从而提高了通信双方建立通信连接的效率和可靠性,并且对TURN服务器端的负荷进行了分流,避免TURN服务器端的负荷过大。
在本实施例中,步骤3中所述的:通信双方中的每一方收到所述命令请求消息后,通过向其中包括的IP地址/端口对发送消息而与另一方建立通信连接,可进一步具体包括:通信双方中的每一方收到所述命令请求消息后,通过对其中包括的IP地址/端口对发送消息,检查是否能够与该IP地址/端口对建立通信连接,是则通过向该IP地址/端口对发送消息而与另一方建立通信连接,否则向所述应用服务器端返回连接失败消息。
图3为本发明具体实施例二的示意图,服务器中设有STUN服务器端、TURN服务器端、以及应用服务器端。客户端a通过运行STUN协议获取客户端a所使用的NAT设备类型信息以及所述STUN服务器端为客户端a分配的IP地址/端口对,然后通过运行TURN协议获取TURN服务器端为客户端A分配的IP地址/端口对;并通过通知消息,将客户端a使用的NAT设备类型信息、客户端a的本地IP地址/端口对、以及STUN服务器端和TURN服务器端为客户端a分配的IP地址/端口对发送给应用服务器端。客户端b通过运行STUN协议获取客户端b所使用的NAT设备类型信息以及所述STUN服务器端为客户端b分配的IP地址/端口对,然后通过运行TURN协议获取TURN服务器端为客户端b分配的IP地址/端口对;并通过通知消息,将客户端b使用的NAT设备类型信息、客户端b的本地IP地址/端口对、以及STUN服务器端和TURN服务器端为客户端b分配的IP地址/端口对发送给应用服务器端。然后应用服务器端根据收到的通知信息,分别为客户端a和客户端b选取能够使二者建立通信连接的对方IP地址/端口对,并通过命令请求消息分别发送给客户端a和客户端b。客户端a和客户端b收到命令请求消息后即向应用服务器端返回命令回应消息,然后分别使用收到的命令请求消息中包括的IP地址/端口对与对方建立通信连接。
图4为本发明具体实施例三的流程图,一种穿越网络地址转换的方法,包括以下步骤:首先在步骤1中,要建立通信连接的通信双方中的每一方通过STUN协议,从设有STUN服务器端、TURN服务器端、以及应用服务器端的服务器获取该方所使用的NAT设备类型信息、以及所述STUN服务器端为该方分配的IP地址/端口对;并通过运行TURN协议从所述服务器获取所述TURN服务器端为该方分配的IP地址/端口对;然后在步骤2中,通信双方中的每一方向应用服务器端发送通知消息,通知消息中包括该方使用的NAT设备类型信息、该方的本地IP地址/端口对、以及STUN服务器端和TURN服务器端为该方分配的IP地址/端口对;继而在步骤3a中,所述应用服务器端根据所述NAT设备类型信息,从所述通信双方中的每一方发送的通知消息中包括的IP地址/端口对中,选取并通过命令请求消息向另一方发送能够使通信双方建立连接的IP地址/端口对;随后在步骤3b中,通信双方中的每一方收到所述命令请求消息后,启动TCP/UDP服务器,等待另一方向所述TCP/UDP服务器发送消息以进行连接检查;并根据己方的NAT设备类型消息,判断己方的NAT设备是否支持UDP协议,如果己方的NAT设备支持UDP协议则执行步骤3c,否则继续判断己方的NAT设备是否支持TCP协议,如果己方的NAT设备支持TCP协议则执行步骤3d,否则结束;在步骤3c中,通过向所述命令请求消息中包括的IP地址/端口对发送UDP消息来检查是否能够建立通信连接,是则通过向该IP地址/端口对发送消息而与另一方建立通信连接,然后结束;否则结束;在步骤3d中,通过向所述命令请求消息中包括的IP地址/端口对发送TCP消息来检查是否能够建立通信连接,是则通过向该IP地址/端口对发送消息而与另一方建立通信连接,然后结束;否则结束。在本实施例中,通过增加通信双方检查对方的NAT设备所支持的协议类型的步骤,进一步地提高了连接建立的效率和成功率。
在本实施例中,步骤3c可进一步地具体包括:通过向命令请求消息中包括的IP地址/端口对发送UDP消息来检查是否能够建立通信连接,是则通过向该IP地址/端口对发送消息而与另一方建立通信连接,然后结束;否则向应用服务器端发送连接失败消息,然后结束。步骤3d也可进一步地具体包括:通过向命令请求消息中包括的IP地址/端口对发送TCP消息来检查是否能够建立通信连接,是则通过向该IP地址/端口对发送消息而与另一方建立通信连接,然后结束;否则向应用服务器端发送连接失败消息,然后结束。
图5为本发明具体实施例四的流程图,一种穿越网络地址转换的方法,包括以下步骤:在步骤A中,要建立通信连接的通信双方中的每一方从STUN服务器端获取该方所使用的NAT设备类型信息、以及所述STUN服务器端为该方分配的IP地址/端口对,并从TURN服务器端获取TURN服务器端为该方分配的IP地址/端口对;进一步地,所述步骤A可具体包括:要建立通信连接的通信双方中的每一方通过运行STUN协议,从STUN服务器端获取该方所使用的NAT设备类型信息、以及所述STUN服务器端为该方分配的IP地址/端口对;并通过运行TURN协议,从TURN服务器端获取所述TURN服务器端为该方分配的IP地址/端口对;然后在步骤B中,所述通信双方中的每一方向所述应用服务器端发送通知消息,然后所述应用服务器端将所述通知消息转发给所述通信双方中的另一方,所述通知消息中包括该方使用的NAT设备类型信息、该方的本地IP地址/端口对、以及所述STUN服务器端和TURN服务器端为该方分配的IP地址/端口对;进一步地,所述STUN服务器端、TURN服务器端、以及应用服务器端可都设在一服务器中;最后在步骤C中,所述通信双方中的每一方收到所述应用服务器端转发的通知消息后,根据所述通信双方所使用的NAT设备类型信息,从所述通知消息中包括的IP地址/端口对中选取能够连接到对方的IP地址/端口对,并通过向选取的IP地址/端口对发送消息而建立与对方的通信连接。进一步地,所述步骤A可具体包括:要建立通信连接的通信双方中的每一方通过运行STUN协议,从STUN服务器端获取该方所使用的NAT设备类型信息、以及所述STUN服务器端为该方分配的IP地址/端口对;并通过运行TURN协议,从TURN服务器端获取所述TURN服务器端为该方分配的IP地址/端口对。
本具体实施例五中,步骤B还可进一步地包括:通信双方中的每一方向应用服务器端发送通知消息,所述通知消息还包括对方的标识信息。相应地,步骤C还可进一步地包括:通信双方中的每一方通过向选取的IP地址/端口对发送消息,而建立与标识信息所标识的通信方的通信连接。
更进一步地,本具体实施例五中,步骤A还可进一步地包括:要建立通信连接的通信双方中的每一方,还分别为所述STUN服务器端和TURN服务器端为该方分配的IP地址/端口对、以及本地IP地址/端口对,分配对应的优先级信息。相应地,步骤B还可进一步地具体包括:所述通信双方中的每一方向所述应用服务器端发送通知消息,然后所述应用服务器端将所述通知消息转发给所述通信双方中的另一方,所述通知消息中包括该方使用的NAT设备类型信息、该方的本地IP地址/端口对、所述STUN服务器端和TURN服务器端为该方分配的IP地址/端口对、以及所述STUN服务器端和TURN服务器端为该方分配的IP地址/端口对对应的优先级信息。相应地,步骤C还可进一步地具体包括:通信双方中的每一方收到应用服务器端转发的通知消息后,根据双方所使用的NAT设备类型信息,从通知消息中包括的IP地址/端口对中选取能够连接到对方的IP地址/端口对;然后通信双方中的每一方根据所述通知消息中包括的优先级信息,从所述选取的IP地址/端口对中选择优先级最高的IP地址/端口对,并通过向所述优先级最高的IP地址/端口对发送消息,而建立与对方的通信连接。
图6为本发明具体实施例五的示意图,服务器中设有STUN服务器端、TURN服务器端、以及应用服务器端。客户端a通过运行STUN协议获取客户端a所使用的NAT设备类型信息以及所述STUN服务器端为客户端a分配的IP地址/端口对,然后通过运行TURN协议获取TURN服务器端为客户端a分配的IP地址/端口对;并通过第一通知消息,将客户端a使用的NAT设备类型信息、客户端a的本地IP地址/端口对、以及STUN服务器端和TURN服务器端为客户端a分配的IP地址/端口对发送给应用服务器端。客户端b通过运行STUN协议获取客户端b所使用的NAT设备类型信息以及所述STUN服务器端为客户端b分配的IP地址/端口对,然后通过运行TURN协议获取TURN服务器端为客户端b分配的IP地址/端口对;并在收到应用服务器端转发的客户端a发送的第一通知消息后,通过第二通知消息,将客户端b使用的NAT设备类型信息、客户端b的本地IP地址/端口对、以及STUN服务器端和TURN服务器端为客户端b分配的IP地址/端口对发送给应用服务器端,然后从收到的第一通知消息中包括的IP地址/端口对中,根据该消息中包括的NAT设备类型信息,选取对应的IP地址/端口对。客户端a在收到应用服务器端转发的客户端b发送的第二通知消息后,根据该消息中包括的NAT设备类型信息,从该消息中包括的IP地址/端口对中选取对应的IP地址/端口对。然后客户端a和客户端b分别向各自所选取的IP地址/端口对发送消息以建立通信连接。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对本发明作限制性理解。尽管参照上述较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:其依然可以对本发明的技术方案进行修改或者等同替换,而这种修改或者等同替换并不脱离本发明技术方案的精神和范围。
Claims (12)
1、一种穿越网络地址转换的方法,其特征在于,包括:
步骤1、要建立通信连接的通信双方中的每一方从简单穿越网络地址转换STUN服务器端获取该方所使用的网络地址转换NAT设备类型信息以及所述STUN服务器端为该方分配的IP地址/端口对;并从中继方式穿越网络地址转换TURN服务器端获取所述TURN服务器端为该方分配的IP地址/端口对;
步骤2、所述通信双方中的每一方,向应用服务器端发送通知消息,所述通知消息中包括该方使用的NAT设备类型信息、本地IP地址/端口对、以及所述STUN服务器端和TURN服务器端为该方分配的IP地址/端口对;
步骤3、所述应用服务器端根据所述通信双方的NAT设备类型信息,从所述每一方发送的IP地址/端口对中,选取能够使通信双方建立连接的IP地址/端口对发送至另一方;所述通信双方中的每一方在收到所述IP地址/端口对后,通过所述IP地址/端口对与另一方建立通信连接。
2、根据权利要求1所述的方法,其特征在于,所述步骤3中,在通信双方收到所述IP地址/端口对后还包括以下操作:所述通信双方中的每一方通过所述IP地址/端口对发送消息至另一方,检查是否能够与该IP地址/端口对建立通信连接,是则通过向该IP地址/端口对发送消息而与另一方建立通信连接,否则向所述应用服务器端返回连接失败消息。
3、根据权利要求1所述的方法,其特征在于,所述步骤3还包括:所述应用服务器端向通信双方中的每一方发送另一方的标识信息,所述通信双方中的每一方使用收到的所述IP地址/端口对,与所述标识信息标识的另一方建立通信连接。
4、根据权利要求1所述的方法,其特征在于,所述步骤3具体包括:
步骤3a、所述应用服务器端根据所述NAT设备类型信息,从所述通信双方中的每一方发送的通知消息中包括的IP地址/端口对中,选取能够使通信双方建立连接的IP地址/端口对发送至另一方;
步骤3b、通信双方中的每一方收到所述IP地址/端口对后,启动TCP/UDP服务器,等待另一方向所述TCP/UDP服务器发送消息以进行连接检查;并根据己方的NAT设备类型消息,判断己方的NAT设备是否支持UDP协议,如果己方的NAT设备支持UDP协议则执行步骤3c,否则继续判断己方的NAT设备是否支持TCP协议,如果己方的NAT设备支持TCP协议则执行步骤3d,否则结束;
步骤3c、通过向所述IP地址/端口对发送UDP消息来检查是否能够建立通信连接,是则通过向该IP地址/端口对发送消息而与另一方建立通信连接,然后结束;否则向所述应用服务器端发送连接失败消息后结束;
步骤3d、通过向所述IP地址/端口对发送TCP消息来检查是否能够建立通信连接,是则通过向该IP地址/端口对发送消息而与另一方建立通信连接,然后结束;否则向所述应用服务器端发送连接失败消息后结束。
5、根据权利要求1所述的方法,其特征在于:所述步骤1中,要建立通信连接的通信双方中的每一方,还分别为所述STUN服务器端和TURN服务器端为该方分配的IP地址/端口对以及本地IP地址/端口对,分配对应的优先级信息。
6、根据权利要求5所述的方法,其特征在于:所述步骤2中,所述通信双方中的每一方,向所述应用服务器端发送通知消息,所述通知消息中还包括所述STUN服务器端和TURN服务器端为该方分配的IP地址/端口对对应的优先级信息。
7、根据权利要求6所述的方法,其特征在于:所述步骤3具体包括:所述应用服务器端根据所述NAT设备类型信息,从所述通信双方中的每一方发送的通知消息中包括的IP地址/端口对中,选取能够使另一方与该方建立连接的IP地址/端口对,并从中选择优先级最高的IP地址/端口对后发送给另一方;所述通信双方中的每一方在收到所述IP地址/端口对后,通过向所述IP地址/端口对发送消息而与另一方建立通信连接。
8、一种穿越网络地址转换的方法,其特征在于,包括:
步骤A、要建立通信连接的通信双方中的每一方从简单穿越网络地址转换STUN服务器端获取该方所使用的网络地址转换NAT设备类型信息、以及所述STUN服务器端为该方分配的IP地址/端口对,并从中继方式穿越网络地址转换TURN服务器端获取TURN服务器端为该方分配的IP地址/端口对;
步骤B、所述通信双方中的每一方向所述应用服务器端发送通知消息,所述应用服务器端将所述通知消息转发给所述通信双方中的另一方,所述通知消息中包括该方使用的NAT设备类型信息、本地IP地址/端口对、以及所述STUN服务器端和TURN服务器端为该方分配的IP地址/端口对;
步骤C、所述通信双方中的每一方收到所述应用服务器端转发的通知消息后,根据所述通信双方所使用的NAT设备类型信息,从所述通知消息中包括的IP地址/端口对中选取能够连接到对方的IP地址/端口对,并通过向选取的IP地址/端口对发送消息而建立与对方的通信连接。
9、根据权利要求8所述的方法,其特征在于:所述步骤B中,所述通信双方中的每一方向所述应用服务器端发送通知消息,所述通知消息还包括对方的标识信息,所述通信双方中的每一方通过向选取的IP地址/端口对发送消息而建立与所述标识信息标识的通信方的通信连接。
10、根据权利要求8所述的方法,其特征在于:所述步骤A中,要建立通信连接的通信双方中的每一方,还分别为所述STUN服务器端和TURN服务器端为该方分配的IP地址/端口对、以及本地IP地址/端口对,分配对应的优先级信息。
11、根据权利要求10所述的方法,其特征在于:所述步骤B中,所述应用服务器端发送的通知消息中还包括所述STUN服务器端和TURN服务器端为该方分配的IP地址/端口对对应的优先级信息。
12、根据权利要求11所述的方法,其特征在于,所述步骤C具体包括:
步骤C1、所述通信双方中的每一方收到所述应用服务器端转发的通知消息后,根据双方所使用的NAT设备类型信息,从所述通知消息中包括的IP地址/端口对中选取能够连接到对方的IP地址/端口对;
步骤C2、所述通信双方中的每一方根据所述通知消息中包括的优先级信息,从所述选取的IP地址/端口对中选择优先级最高的IP地址/端口对,并通过向所述优先级最高的IP地址/端口对发送消息而建立与对方的通信连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100835919A CN100454905C (zh) | 2006-06-09 | 2006-06-09 | 穿越网络地址转换的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100835919A CN100454905C (zh) | 2006-06-09 | 2006-06-09 | 穿越网络地址转换的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1968194A CN1968194A (zh) | 2007-05-23 |
CN100454905C true CN100454905C (zh) | 2009-01-21 |
Family
ID=38076751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100835919A Active CN100454905C (zh) | 2006-06-09 | 2006-06-09 | 穿越网络地址转换的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100454905C (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101437036B (zh) * | 2008-12-22 | 2012-08-29 | 北京中企开源信息技术有限公司 | 支持nat/防火墙穿越的文件传输方法和系统 |
CN101883156B (zh) * | 2010-06-22 | 2013-07-24 | 北京神州泰岳软件股份有限公司 | 穿越nat设备的方法 |
CN101938532B (zh) * | 2010-09-17 | 2013-07-24 | 北京神州泰岳软件股份有限公司 | 基于udp的穿越nat设备的方法及系统 |
CN101945141B (zh) * | 2010-09-17 | 2014-02-19 | 北京神州泰岳软件股份有限公司 | 基于tcp的穿越nat设备的方法及系统 |
CN101977249B (zh) * | 2010-10-27 | 2013-02-13 | 北京易视腾科技有限公司 | 穿透nat设备的方法 |
CN103916485A (zh) * | 2012-12-31 | 2014-07-09 | 北京新媒传信科技有限公司 | Nat穿越方法以及服务器 |
EP2782312A4 (en) | 2013-02-08 | 2015-04-08 | Huawei Tech Co Ltd | METHOD, DEVICE AND SYSTEM FOR REALIZING PRIVATE NETWORK TRAVERSATION |
CN103957287B (zh) * | 2014-04-25 | 2017-11-17 | 浙江大学城市学院 | 一种基于nat穿透适配器的物联网设备p2p连接方法 |
CN104506666A (zh) * | 2014-12-18 | 2015-04-08 | 北京邮电大学 | 一种大量tcp穿越对称型nat的代理方法和系统 |
CN106161663A (zh) * | 2015-04-07 | 2016-11-23 | 中兴通讯股份有限公司 | 终端应用访问nas的方法及装置 |
CN106303117A (zh) * | 2015-06-08 | 2017-01-04 | 李明 | 基于ip网络的通讯方法及通讯系统 |
CN106331198B (zh) * | 2015-06-29 | 2020-04-21 | 中兴通讯股份有限公司 | Nat穿透方法及装置 |
CN106878474A (zh) * | 2017-04-25 | 2017-06-20 | 浙江风向标科技有限公司 | 一种p2p连接建立的方法和装置 |
CN110891082A (zh) * | 2019-10-24 | 2020-03-17 | 南京可信区块链与算法经济研究院有限公司 | 一种联盟链中p2p端口地址的连接方法、系统及存储介质 |
CN113542244B (zh) * | 2021-07-01 | 2023-08-08 | 京东科技控股股份有限公司 | 微服务调用方法、装置、服务器和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514584A (zh) * | 2003-06-23 | 2004-07-21 | 腾讯科技(深圳)有限公司 | 数字信息穿透nat/fw的方法、系统和控制流程 |
JP2005051680A (ja) * | 2003-07-31 | 2005-02-24 | Matsushita Electric Ind Co Ltd | マルチメディア通信装置またはマルチメディア通信方式またはビデオ配信システムおよびビデオ会議システム |
CN1606304A (zh) * | 2003-10-10 | 2005-04-13 | 华为技术有限公司 | 下一代网络业务穿越网络地址转换设备/防火墙的方法 |
CN1633102A (zh) * | 2003-12-24 | 2005-06-29 | 华为技术有限公司 | 实现网络地址转换穿越的方法及其系统 |
US20050165963A1 (en) * | 2003-12-23 | 2005-07-28 | Alcatel | Method for operating a symmetric network address translation |
-
2006
- 2006-06-09 CN CNB2006100835919A patent/CN100454905C/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514584A (zh) * | 2003-06-23 | 2004-07-21 | 腾讯科技(深圳)有限公司 | 数字信息穿透nat/fw的方法、系统和控制流程 |
JP2005051680A (ja) * | 2003-07-31 | 2005-02-24 | Matsushita Electric Ind Co Ltd | マルチメディア通信装置またはマルチメディア通信方式またはビデオ配信システムおよびビデオ会議システム |
CN1606304A (zh) * | 2003-10-10 | 2005-04-13 | 华为技术有限公司 | 下一代网络业务穿越网络地址转换设备/防火墙的方法 |
US20050165963A1 (en) * | 2003-12-23 | 2005-07-28 | Alcatel | Method for operating a symmetric network address translation |
CN1633102A (zh) * | 2003-12-24 | 2005-06-29 | 华为技术有限公司 | 实现网络地址转换穿越的方法及其系统 |
Also Published As
Publication number | Publication date |
---|---|
CN1968194A (zh) | 2007-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100454905C (zh) | 穿越网络地址转换的方法 | |
US7133928B2 (en) | Performing multicast communication in computer networks by using overlay routing | |
CN100521663C (zh) | 点对点通信中穿越网络地址转换的方法 | |
CN100477636C (zh) | 客户端主应用部件与目标服务器间进行通信的装置和方法 | |
CN102647355B (zh) | Lacp协商处理方法、中继节点及系统 | |
CN102148773B (zh) | 一种IPv6协议和IPv4协议转换的方法及系统 | |
US20040153858A1 (en) | Direct peer-to-peer transmission protocol between two virtual networks | |
US20110264739A1 (en) | METHOD BASED ON THE COMBINATION OF THE UPnP AND STUN FOR NAT TRAVERSAL | |
JP2004179811A (ja) | パケット中継装置 | |
US20110004690A1 (en) | Method of Forwarding Messages Over a Network and System for Implementing the Method | |
US7957279B2 (en) | Session border control using multiple processors | |
CN111435922B (zh) | 一种带宽共享方法 | |
CN100527713C (zh) | Ip网络中基于虚拟分发网的多播传送方法 | |
CN112911001A (zh) | 一种云vpn与企业网自动化组网方案 | |
CN100466614C (zh) | 一种实现组播业务的方法 | |
WO2018077304A1 (zh) | 业务信息处理方法、装置及系统 | |
US9413590B2 (en) | Method for management of a secured transfer session through an address translation device, corresponding server and computer program | |
Moritz et al. | Devices profile for web services in wireless sensor networks: Adaptations and enhancements | |
CN1960281B (zh) | 具有虚拟线卡的虚拟网络交换系统及其传输方法 | |
CN101120553A (zh) | 用于聚合接入域和节点上的数据通信的方法 | |
CN101094182A (zh) | IPv4/IPv6设备的媒体流互通的方法 | |
CN105991629B (zh) | Tcp连接建立方法及装置 | |
CN110474781A (zh) | 一种组播数据转发的方法及装置 | |
CN102480425A (zh) | 点对点p2p网络中的消息路由的方法及系统 | |
CN104135465B (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 |