著录项信息
专利名称 | 穿越网络地址转换的方法 |
申请号 | CN200610083591.9 | 申请日期 | 2006-06-09 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2007-05-23 | 公开/公告号 | CN1968194 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L12/56 | IPC分类号 | H;0;4;L;1;2;/;5;6;;;H;0;4;L;2;9;/;0;6查看分类表>
|
申请人 | 华为技术有限公司 | 申请人地址 | 广东省深圳市龙岗区坂田华为总部办公楼
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 华为技术有限公司 | 当前权利人 | 华为技术有限公司 |
发明人 | 解俊 |
代理机构 | 北京同立钧成知识产权代理有限公司 | 代理人 | 刘芳 |
摘要
本发明公开了一种穿越网络地址转换的方法,包括以下步骤:步骤1为通信双方中的每一方从STUN服务器端获取该方所使用的NAT设备类型信息以及STUN服务器端为该方分配的IP地址/端口对;并从TURN服务器端获取TURN服务器端为该方分配的IP地址/端口对;步骤2为所述每一方向应用服务器端发送通知消息;步骤3为应用服务器端根据所述通信双方的NAT设备类型信息,从所述每一方发送的IP地址/端口对中,选取能够使通信双方建立连接的IP地址/端口对发送至另一方;所述通信双方中的每一方在收到所述IP地址/端口对后,通过所述IP地址/端口对与另一方建立通信连接。本发明能够实现高效地穿越各种NAT设备建立通信连接且具有广泛适用性。
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地址/端口对发送消息而建立与对方的通信连接。
技术领域\n本发明涉及穿越网络地址转换(Network Address Translator,简称NAT) 的方法,特别涉及能够实现高效地穿越各种NAT设备建立通信连接,并且具 有广泛适用性的穿越网络地址转换的方法。\n背景技术\n网络地址转换(NAT)是为了解决Internet上IPv4地址日益紧张的状况, 而提出的一种将一组ip地址/端口映射到另一组ip地址/端口的网络技术。 私网内可能有多台机器,每台机器都分配到一个私网内唯一的ip地址,通常 一个私网只分配到少数几个公网ip地址,所以私网内的机器与公网内的机器 通信时都必须把私网ip地址/端口映射成公网ip地址/端口,公网上内的机 器到私网内的机器通讯时都必须把公网ip地址/端口映射成私网ip地址/端 口,这就是网络地址转换(NAT)。网络地址转换(NAT)是通过NAT设备完 成网络地址转换操作,NAT设备通过修改内部网络数据包的包头IP地址信息 并跟踪该映射信息,使同一局域网内的多个终端节点可以共享同一个外部IP 地址,从而在一定程度上缓解了IPv4地址紧张的问题。\nNAT在Internet上的大规模使用为现有的网络应用,尤其是对等通信(即 点对点通信,简称P2P)带来了很多问题。对等通信是指网络中的物理节点 在逻辑上具有相同的地位,而并非处理能力的对等,其实质在于将互联网的 集中管理模式引向分散管理模式,将内容从中央单一节点引向网络的边缘, 从而充分利用互联网中众多终端节点所蕴涵的处理能力和潜在资源。相对于 传统的集中式客户/服务器(C/S)模型,P2P弱化了服务器的概念,系统中的 各个节点不再区分服务器和客户端的角色关系,每个节点既可请求服务,也 可提供服务,节点之间可以直接交换资源和服务而不必通过服务器。而由于 NAT技术改变了网络数据包的地址信息,使得节点之间的对等连接无法成功 建立,因此许多对等应用无法运行在NAT设备存在的环境中。\n为了解决上述问题,现有技术中通常采取以下方法:\n1、UDP穿孔(UDP HOLE PUNCHING)方法。\n该方法是从NAT设备所在的私网内的终端向外部网络中的终端发送UDP 数据包,该数据包经过NAT设备时NAT设备保存其映射关系,以使从该外部 网络中的终端发送的数据包能够通过该映射关系穿越该NAT设备,到达该私 网内的终端。\n该方法的不足之处在于:由于NAT设备的处理流程是非标准化的,因此 该方法并不能应用于所有类型的NAT设备,并且当NAT设备不支持UDP协议 时不能应用该方法。\n2、UDP简单穿越网络地址转换(SIMPLE TRAVERSAL OF USER DATAGRAM PROTOCOL ADDRESS TRANSLATION,简称STUN)方法。\n该方法的原理是:私网接入用户通过某种机制预先得到其地址对应在出 口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管理等优点。\n该方法的不足之处在于:\n1、无法实现对对称型NAT(Symmetric NAT)的穿越,而在多数对安全 性要求较高的企业网中,使用的通常是对称型NAT;\n2、不适合支持TCP连接的穿越,因此不支持H.323应用协议对NAT的穿 越;\n3、不支持下一代网络(简称NGN)业务对NAT的穿越。\n发明内容\n本发明的目的是针对上述现有技术的不足,提供穿越网络地址转换的方 法,能够实现高效地穿越各种NAT设备建立通信连接,并且具有广泛适用性。\n为实现上述发明目的,本发明提供了一种穿越网络地址转换的方法,包 括以下步骤:\n步骤1、要建立通信连接的通信双方中的每一方从STUN服务器端获取该 方所使用的NAT设备类型信息以及所述STUN服务器端为该方分配的IP地址/ 端口对;并从TURN服务器端获取所述TURN服务器端为该方分配的IP地址/ 端口对;\n步骤2、所述通信双方中的每一方,向应用服务器端发送通知消息,所 述通知消息中包括该方使用的NAT设备类型信息、本地IP地址/端口对、以 及所述STUN服务器端和TURN服务器端为该方分配的IP地址/端口对;\n步骤3、所述应用服务器端根据所述通信双方的NAT设备类型信息,从 所述每一方发送的IP地址/端口对中,选取能够使通信双方建立连接的IP地 址/端口对发送至另一方;所述通信双方中的每一方在收到所述IP地址/端口 对后,通过所述IP地址/端口对与另一方建立通信连接。\n进一步地,所述步骤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地址/端口对发送 消息而与另一方建立通信连接,然后结束;否则向所述应用服务器端发送连 接失败消息后结束。\n为实现发明目的,本发明还提供了一种穿越网络地址转换的方法,包括 以下步骤:\n步骤A、要建立通信连接的通信双方中的每一方从STUN服务器端获取该 方所使用的NAT设备类型信息、以及所述STUN服务器端为该方分配的IP地 址/端口对,并从TURN服务器端获取TURN服务器端为该方分配的IP地址/ 端口对;\n步骤B、所述通信双方中的每一方向所述应用服务器端发送通知消息, 所述应用服务器端将所述通知消息转发给所述通信双方中的另一方,所述通 知消息中包括该方使用的NAT设备类型信息、本地IP地址/端口对、以及所 述STUN服务器端和TURN服务器端为该方分配的IP地址/端口对;\n步骤C、所述通信双方中的每一方收到所述应用服务器端转发的通知消 息后,根据所述通信双方所使用的NAT设备类型信息,从所述通知消息中包 括的IP地址/端口对中选取能够连接到对方的IP地址/端口对,并通过向选 取的IP地址/端口对发送消息而建立与对方的通信连接。\n在上述技术方案中,通过有机地结合了STUN机制和TURN机制,并且通 过应用服务器端根据通信双方所使用的NAT设备的类型采选取能够使通信双 方建立连接的IP地址/端口对,从而能够针对不同的NAT设备选取相适应的 IP地址/端口对,并且,通过进一步地针对不同的NAT设备选取相适应的优 先级相对较高的IP地址/端口对,从而有效地合理分配了STUN服务器端和 TURN服务器端的网络资源,且使通信双方的通信连接能够尽可能快地建立。 综上所述,本发明能够达到高效地穿越各种NAT设备建立通信连接,并且具 有广泛适用性的技术效果。\n附图说明\n图1为本发明具体实施例一的联网示意图;\n图2为本发明具体实施例一的流程图;\n图3为本发明具体实施例二的示意图;\n图4为本发明具体实施例三的流程图;\n图5为本发明具体实施例四的流程图;\n图6为本发明具体实施例五的示意图。\n具体实施方式\n下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。\n本发明针对现有的穿越网络地址转换的方法不能应用于所有类型的NAT 的不足之处,通过将STUN机制与TURN机制有机结合,并增设用于为通信双 方选择合适的IP地址/端口对的应用服务器端,从而实现根据通信双方所使 用的NAT设备的不同类型而选择相应的IP地址/端口对,使得通信双方能够 借由所述选择的IP地址/端口对建立通信连接。\n图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协议交互,应用客户端和应用服务器端通过私有协议交互。\n图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地址/端口对发 送消息而与另一方建立通信连接。\n其中,所述NAT设备类型信息用于标识:NAT设备是位于公网或私网中、 以及NAT设备所使用的NAT类型(包括锥型NAT、完全锥型NAT、限制锥型 NAT、端口限制锥型NAT、对称型NAT等)。\n进一步地,所述步骤1可具体包括:要建立通信连接的通信双方中的每 一方,通过UDP简单穿越网络地址转换(SIMPLE TRAVERSAL OF USER DATAGRAM PROTOCOL ADDRESS TRANSLATION,简称STUN)协议,从STUN服务器端获取 该方所使用的NAT设备类型信息、以及所述STUN服务器端为该方分配的IP 地址/端口对;并通过运行中继方式穿越网络地址转换(Traversal Using Relay NAT,简称TURN)协议,从TURN服务器端获取所述TURN服务器端为该 方分配的IP地址/端口对。\n本实施例中,通过在所述服务器中有机地结合STUN服务器端和TURN服 务器端,并增设应用服务器端,在通信双方建立连接时,首先由通信双方收 集各自的IP地址/端口对以及各自使用的NAT设备类型并发送给应用服务器 端,然后应用服务器端为通信双方中的每一方,根据另一方使用的NAT设备 类型,从另一方收集的IP地址/端口对中选取合适的能够建立通信连接的IP 地址/端口对,例如:如果另一方处于公网中,则选取另一方的本地IP地址/ 端口对;如果另一方处于私网中并使用完全锥形NAT类型,则选取STUN服务 器端为另一方分配的IP地址/端口对;等等。此外,当要建立通信连接的通 信双方都位于私网中时,根据所述NAT设备类型信息,应用服务器端能够分 别为通信双方选取其各自的本地IP地址/端口对,从而能够避免使用STUN服 务器端或TURN服务器端分配的IP地址/端口对,提高了通信连接建立的效率。 应用服务器端将分别为通信各方选取的IP地址/端口对发送给通信各方,然 后通信各方通过向收到的IP地址/端口对发送消息而建立与对方的通信连 接。由上述可知,本实施例通过有机地结合STUN机制和TURN机制,并增设 应用服务功能,从而能够实现有效地穿越各种NAT设备,具有广泛的适用性。\n此外,本实施例中,步骤3还可进一步地包括:应用服务器端还通过命 令请求消息向通信双方中的每一方发送另一方的标识信息;通信双方中的每 一方在收到命令请求消息后,使用其中包括的IP地址/端口对,与标识信息 所标识的另一方建立通信连接。该操作使得在通信双方分别同时与多个对端 通信时,可以通过该标识信息确定收到的命令请求消息中的IP地址/端口对 与另一方的对应关系,从而准确地使用相应的IP地址/端口对与另一方建立 通信连接。\n更进一步地,本实施例中,步骤1还可包括:要建立通信连接的通信双 方中的每一方,还分别为所述STUN服务器端和TURN服务器端为该方分配的 IP地址/端口对以及本地IP地址/端口对,分配对应的优先级信息。相应地, 步骤2中还可包括:所述通信双方中的每一方,向所述应用服务器端发送通 知消息,所述通知消息中还包括所述STUN服务器端和TURN服务器端为该方 分配的IP地址/端口对对应的优先级信息。相应地,步骤3还可具体包括: 所述应用服务器端根据所述NAT设备类型信息,从所述通信双方中的每一方 发送的通知消息中包括的IP地址/端口对中,选取能够使另一方与该方建立 连接的IP地址/端口对,并从中选择优先级最高的IP地址/端口对后通过命 令请求消息发送给另一方;所述通信双方中的每一方在收到所述命令请求消 息后,通过向其中包括的IP地址/端口对发送消息而与另一方建立通信连接。 通过增加上述内容,进一步地优化了应用服务器的操作,使得应用服务器在 根据通信双方的NAT设备类型选取合适的IP地址/端口对后,还进一步地从 中选取优先级最高的IP地址/端口对,从而提高了通信双方建立通信连接的 效率和可靠性,并且对TURN服务器端的负荷进行了分流,避免TURN服务器 端的负荷过大。\n在本实施例中,步骤3中所述的:通信双方中的每一方收到所述命令请 求消息后,通过向其中包括的IP地址/端口对发送消息而与另一方建立通信 连接,可进一步具体包括:通信双方中的每一方收到所述命令请求消息后, 通过对其中包括的IP地址/端口对发送消息,检查是否能够与该IP地址/端 口对建立通信连接,是则通过向该IP地址/端口对发送消息而与另一方建立 通信连接,否则向所述应用服务器端返回连接失败消息。\n图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地址/端口 对与对方建立通信连接。\n图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设备所支持的协议类型的步骤,进一步地 提高了连接建立的效率和成功率。\n在本实施例中,步骤3c可进一步地具体包括:通过向命令请求消息中包 括的IP地址/端口对发送UDP消息来检查是否能够建立通信连接,是则通过 向该IP地址/端口对发送消息而与另一方建立通信连接,然后结束;否则向 应用服务器端发送连接失败消息,然后结束。步骤3d也可进一步地具体包括: 通过向命令请求消息中包括的IP地址/端口对发送TCP消息来检查是否能够 建立通信连接,是则通过向该IP地址/端口对发送消息而与另一方建立通信 连接,然后结束;否则向应用服务器端发送连接失败消息,然后结束。\n图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地址/端口对。\n本具体实施例五中,步骤B还可进一步地包括:通信双方中的每一方向 应用服务器端发送通知消息,所述通知消息还包括对方的标识信息。相应地, 步骤C还可进一步地包括:通信双方中的每一方通过向选取的IP地址/端口 对发送消息,而建立与标识信息所标识的通信方的通信连接。\n更进一步地,本具体实施例五中,步骤A还可进一步地包括:要建立通 信连接的通信双方中的每一方,还分别为所述STUN服务器端和TURN服务器 端为该方分配的IP地址/端口对、以及本地IP地址/端口对,分配对应的优 先级信息。相应地,步骤B还可进一步地具体包括:所述通信双方中的每一 方向所述应用服务器端发送通知消息,然后所述应用服务器端将所述通知消 息转发给所述通信双方中的另一方,所述通知消息中包括该方使用的NAT设 备类型信息、该方的本地IP地址/端口对、所述STUN服务器端和TURN服务 器端为该方分配的IP地址/端口对、以及所述STUN服务器端和TURN服务器 端为该方分配的IP地址/端口对对应的优先级信息。相应地,步骤C还可进 一步地具体包括:通信双方中的每一方收到应用服务器端转发的通知消息后, 根据双方所使用的NAT设备类型信息,从通知消息中包括的IP地址/端口对 中选取能够连接到对方的IP地址/端口对;然后通信双方中的每一方根据所 述通知消息中包括的优先级信息,从所述选取的IP地址/端口对中选择优先 级最高的IP地址/端口对,并通过向所述优先级最高的IP地址/端口对发送 消息,而建立与对方的通信连接。\n图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地址/端口对发送消息以建立通信连接。\n最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对本发 明作限制性理解。尽管参照上述较佳实施例对本发明进行了详细说明,本领 域的普通技术人员应当理解:其依然可以对本发明的技术方案进行修改或者 等同替换,而这种修改或者等同替换并不脱离本发明技术方案的精神和范围。
法律信息
- 2009-01-21
- 2007-07-18
- 2007-05-23
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2005-04-13
|
2003-10-10
| | |
2
| |
2005-06-29
|
2003-12-24
| | |
3
| |
2004-07-21
|
2003-07-01
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |