不同网络地址转换器后的客户端之间视频会议或数据传输的方法和系统的制作方法

文档序号:6348939阅读:181来源:国知局
专利名称:不同网络地址转换器后的客户端之间视频会议或数据传输的方法和系统的制作方法
不同网络地址转换器后的客户端之间视频会议或数据传输
的方法和系统关联申请的交叉引用以不与本文的公开不一致为限,本申请要求兰德兰弗洛于2009年2月14日提交的申请号为61/15沈99且题为“视频社交网络应用及支持系统”的美国临时专利申请的优先权,该美国临时专利申请通过引用并入本申请,该临时专利申请在本申请日时仍然未决。
背景技术
忽略预留值,互联网协议第四版(IPv4)及较早所提供的地址空间对应于上至 255. 255. 255. 255的4个3位数字,或232个独特的地址。进一步使用端口分配来形成互联网协议地址(IP)和端口组合(IP 端口 )来指定独特的的通信链路。连接到互联网的设备的数量增加使得IPv4地址不足以满足所有的设备。常用的方案是使用网络地址转换器(NAT)动态分配IP 端口组合,从而在例如局域网(LAN)中,将私有(通常为动态的)IP地址分配或其它地址协议与对互联网可见的公共(静态)IP地址隔离开来。由于IP数据包是有结构的且包括与公共IP地址和端口组合IP 端口相对应的数据,其中数据包从该IP 端口发出,由NAT设备(及其它可操作地耦合到公共网络的资源)来确定包的来源是可能的。图1为示出了根据现有技术的对称NAT设备的常用功能的框图。系统101包括计算机或其它电子设备102(本文一般被称为计算机或客户端)和服务器104。网络地址转换 (NAT)设备106提供分配给计算机102的内部IP地址与对公共网络108可见的IP地址之间的转换。NAT设备106在本文中也称为网络地址转换器并一般地配置为NAT路由器。NAT设备106可以配置成对称NAT106。根据对称NAT106的一般操作,当第一计算机102向处于IP地址与端口组合IPs 端口 s的服务器104发送第一数据包时,NAT将第一公共IP地址和端口组合IP1 端口工分配给第一计算机102。因为当第一计算机102向服务器IP地址和端口组合IPs 端口 s发送第一数据包时第一计算机102与服务器104首次建立通信信道,对称NAT106配置为接收来自服务器IP地址和端口组合IPs 端口 s并发往第一公共IP地址与端口组合IP1 端口工的数据包,并将该数据包路由到第一计算机102。如此一来,第一公共IP地址与端口组合IP1 端口工作为第一计算机102的化名,允许服务器 104向第一计算机102发送数据包。但是,如果数据包是从之前第一计算机102没有向其发送数据包的另一设备112 的另一 IP地址和端口组合例如IP2 端口 2发往第一公共IP地址和端口组合IP1 端口工的, 对称NAT106将会丢弃该数据包,不将其转发给第一计算机102。因此,对称NAT106作为一种防火墙并阻止并未首先被第一计算机102访问的其它服务器或计算机访问第一计算机 102。对称NAT106的这种“防火墙”行为以前阻止没有固定公共IP地址和端口组合的计算机102、110之间建立直接通信。诸如STUN和ICE的技术已被使用来建立NAT设备之后的计算机间的通信信道,但是在一个或多个NAT设备包括呈现出端口限制特性的NAT如对称NAT时不起作用。以前,这样的通信只有在由与计算机102、110均可以建立通信的服务器104进行中继时才是可行的。遗憾的是,建立这样的中继对于服务器104的处理和通信带宽提出了很高的要求。总结

发明内容
根据一个实施例,一种用于在处于网络地址转换器后的一个计算机与不处在同一地址转换器后的另一计算机之间建立通信链路的方法包括无需先接收第一计算机从第一公共IP地址和端口组合发来的通信,预测第一网络地址转换源上的所述第一公共IP地址和端口组合,所述第一计算机将尝试从所述第一公共IP地址和端口组合与第二计算机通信;预测第二公共IP地址和端口组合,所述第二计算机将从所述第二公共IP地址和端口组合尝试与所述第一计算机通信;向所述第一计算机发送尝试与处于所预测的第二公共IP 地址和端口组合的所述第二计算机通信的第一命令;以及向所述第二计算机发送尝试与处于所预测的第一公共IP地址和端口组合的所述第一计算机通信的第二命令。根据一个实施例,一种用于通过一个或多个对称网络地址转换设备来与第二计算机通信的方法包括从第一计算机向注册服务器上的第一公共IP 端口发送第一数据包; 在发送所述第一数据包之后,立即地,向所述注册服务器上的第二公共IP 端口发送第二数据包;接收所述第二计算机的预测的公共IP 端口 ;在接收到所述第二计算机的预测的公共IP 端口后,立即地,进行向所述第二计算机的所述预测的公共IP 端口发送数据包的第一尝试,所述发送数据的第一尝试配置为从所述第二计算机的所述预测的公共IP地址 端口接收数据打开网络地址转换设备的公共IP 端口 ;和在进行所述第一尝试之后,进行向所述第二计算机的所述预测的公共IP 端口发送数据包的第二尝试。根据一个实施例,一种视频会议或数据传输系统包括具有配置为从第一和第二计算机分别接收第一数据包的第一 IP地址和端口组合的第一注册服务器;具有配置为从第一和第二计算机分别接收第二数据包的第二 IP地址和端口组合的第二注册服务器;配置为预测至少一个第三公共IP地址和端口组合的第三注册服务器,所述至少一个第三公共IP地址组合不同于所述第一计算机之前通过其发送所述第一和第二数据包的地址和端口组合,所述第一计算机将从所述至少一个第三公共IP地址组合尝试与所述第二计算机通信;配置为预测至少一个第四公共IP地址和端口组合的第四注册服务器,所述第二计算机将从所述至少一个第四公共IP地址和端口组合尝试与所述第一计算机通信;配置为向所述第一计算机发送数据包的第五注册服务器,使得所述第一计算机尝试向处于所述第四 IP地址和端口组合的所述第二计算机发送数据包;和配置为向所述第二计算机发送数据包的第六注册服务器,使得所述第二计算机尝试向处于所述第三IP地址和端口组合的所述第一计算机发送数据包。根据一个实施例,一种视频会议或数据传输系统包括注册服务器,其具有配置为从第一和第二计算机分别接收第一数据包的第一 IP地址和端口组合,以及配置为从所述第一和第二计算机分别接收第二数据包的第二 IP地址和端口组合;所述注册服务器进一步配置为预测至少一个第三公共IP地址和端口组合,所述至少一个第三公共IP地址组合不同于所述第一计算机之前从其发送所述第一和第二数据包的地址和端口组合,所述第一计算机将从所述至少一个第三公共IP地址组合尝试与所述第二计算机通信;所述注册服务器进一步配置为预测至少一个第四公共IP地址和端口组合,所述第二计算机将从所述至少一个第四公共IP地址和端口组合尝试与所述第一计算机通信;所述注册服务器进一步配置为向所述第一计算机发送数据包,使得所述第一计算机尝试向处于所述第四IP地址和端口组合的所述第二计算机发送数据包;所述注册服务器还配置为向所述第二计算机发送数据包,使得所述第二计算机尝试向处于所述第三IP地址和端口组合的所述第一计算机发送数据包。根据一个实施例,一种用于在至少两个计算机之间建立连接的方法包括分配第一客户端名和会话标识;在第一注册服务器的第一注册地址和端口 IPk 端口 κ,接收来自具有第一公共地址和端口 IP11 端口 η的第一客户端计算机的第一注册数据包,其中包括所述第一客户端名和会话标识;在接收所述第一注册数据包之后,很快地,在第二注册服务器的第二注册地址和端口 IPn 端口 Ν接收来自具有第二公共地址和端口 IP12 端口 12的所述第一客户端计算机的第一 NAT测试数据包;确定等于端口 12减端口 n的第一端口增量INCR1 ; 在所述第一注册服务器的所述第一注册地址和端口 IPK:端口 κ,接收来自具有第三公共地址和端口 IP21 端口 21的第二客户端计算机的第二注册数据包,其中包括所述第一客户端名和会话标识;在接收所述第二注册数据包之后,很快地,在第二注册服务器的第二注册地址和端口 端口 Ν接收来自具有第四公共地址和端口 Ih2 端口 22的所述第二客户端计算机的第二 NAT测试数据包;确定等于端口 22减端口 21的第二端口增量INCRp2 ;从所述注册服务器向所述第一客户端计算机发送第一命令,使尝试连接到处于第五公共地址和端口 Ih2 端口的第二客户端计算机;和从所述注册服务器向所述第二客户端计算机发送第二命令,使尝试连接到处于第六公共地址和端口 IP12 端口 12+礼的第一客户端计算机。根据一个实施例,一种有形的计算机可读介质,其承载着使计算机进行以下操作的计算机可执行指令从第一计算机向注册服务器上的第一公共IP 端口发送第一数据包;在发送所述第一数据包之后,立即地,向所述注册服务器上的第二公共IP 端口发送第二数据包;接收所述第二计算机的预测的公共IP 端口 ;在接收到所述第二计算机的预测的公共IP 端口后,立即地,进行向所述第二计算机的所述预测的公共IP 端口发送数据包的第一尝试,所述发送数据的第一尝试配置为打开网络地址转换设备的公共IP 端口以从所述第二计算机的所述预测的公共IP地址端口接收数据;和在进行所述第一尝试之后, 进行向所述第二计算机的所述预测的公共IP 端口发送数据包的第二尝试。


通过结合附图所做的以下说明,本发明公开的特征将会变得完全清楚。基于对这些图所描绘的仅是根据本发明公开的若干实施例且因此不会被视作对其范围的限制这一理解,使用随附的图来对本发明公开与额外的特征和细节一起进行介绍。图1为示出了根据现有技术的对称NAT设备的一般功能的框图。图2为根据一个实施例的视频会议或数据传输系统的框图。图3为根据另一实施例的视频会议或数据传输系统的框图。图4为配置为根据星型拓扑进行通信的一组计算机或其它电子设备的框图。图5为配置为根据网状拓扑进行通信的一组计算机或其它电子设备的框图。
图6A为一组流程图,其示出了根据本发明的一个实施例的用于在处于一个NAT之后的计算机和不处在同一 NAT之后的另一计算机之间建立通信信道的方法的一部分,其中 NAT类型是确定的。图6B为一组流程图,其示出了图6A中根据本发明的一个实施例的用于在处于一个NAT之后的计算机和不处在同一 NAT之后的另一计算机之间建立通信信道的方法的另一部分,其中连接包在计算机之间发送。图6C为一组流程图,其示出了图6A、6B中根据本发明的实施例的用于在处于一个 NAT之后的计算机和不处在同一 NAT之后的另一计算机之间建立通信信道的方法的另一部分,其中在计算机之间建立通信信道且监视连接状态。详细说明在接下来的详细说明中,将参照随附的作为本文一部分的附图。在这些附图中,除非上下文另有指示,类似的符号一般表示类似的部件。在此详细说明、附图和权利要求书中介绍的示例性实施例并非以限制为目的。在不脱离本文所呈现的主题的精神或范围的情况下,可以实现其它实施例,并做出其它改变。图2为根据一个实施例的视频会议或数据传输系统201的框图。系统201使用配置为允许连接处于对称网络地址转换器(NAT)之后的多对或更多计算机的多次打击穿透连接协议(MPTP)。MPTP已被发现可以在锥形(CONE)NAT位于连接的两端时,或是当锥形 NAT位于连接的一端而对称NAT位于连接的另一端时,实现100%的连通性。当一对中的两台计算机均位于对称NAT之后时,在包括3次重试的测试中,实现了 80-99%的连通性。在所有情况中,假定为UDP包和向外的端口没有被路由器封闭。第一注册服务器202具有第一公共IP地址和端口组合IPki 端口 K1204。第一注册服务器202配置为接收来自计算机的数据包。例如,第一公共IP地址和端口组合IPki 端口 K1204配置为从第一计算机102接收第一数据包,并从第二计算机206接收第二数据包, 计算机102和206均被配置为通过公共网络208例如互联网来与第一注册服务器202通信。第一计算机102被NAT可操作地耦合到公共网络208,该NAT也被称为网络地址转换(NAT)设备210。NAT设备210配置成对称NAT210。根据对称NAT210的一般操作,当第一计算机102向处于第一注册服务器IP地址与端口组合IPki 端口 K1204的服务器202 发送第一数据包时,NAT将第一公共IP地址和端口组合IP11 端口 n212分配给第一计算机 102。由于当第一计算机102向第一注册服务器IP地址与端口组合IPki 端口 K1204发送第一数据包时,第一计算机102 “击穿”了对称NAT 210,对称NAT 210配置为接收来自第一注册服务器IP地址与端口组合IPlil 端口 K1204发往第一公共IP地址和端口组合IP11 端口 η212的数据包,并将该数据包路由到第一计算机102。通过这种方式,第一公共IP地址和端口组合IP11 端口 n212作为第一计算机102的化名并允许第一注册服务器202向第一计算机102发送数据包。但是,如果数据包是从另一 IP地址和端口组合例如IP21 端口 21214发往第一公共 IP地址和端口组合IP11 端口 n212的,对称NAT将会丢弃该数据包,不将其转发给第一计算机102。因此,对称NAT作为一种防火墙并阻止并未首先被第一计算机102访问的其它服务器或计算机访问第一计算机102。对称NAT 210的这种“防火墙”行为以前阻止没有固定公共IP地址和端口组合的计算机102、206之间建立直接通信。应当理解,由第一计算机102经由第一公共IP地址和端口组合IP11 端口 n212发到第一注册服务器202IP地址和端口组合IPki 端口 K1204的第一数据包并不必须是像这样发送的首个数据包。例如,第一计算机102可以已经在早些时候向第一注册服务器202上的其它IP地址和端口组合发出过其它数据包。如将会理解的,所述第一数据包通常不是首次通信,其它在先的与数量注册、会话注册、主人注册、来宾注册等相关的在先的数据包。恰当地说,本文所说的由第一计算机102经由第一公共IP地址和端口组合IP11 端口 η212发往第一注册服务器202ΙΡ地址和端口组合IPki 端口 Κ1204的所述第一数据包指的是被发出以确定对称NAT设备210使用的当前IP 端口分配的数据包。具有第二注册服务器IP地址和端口组合IPk2 端口 K2218的第二注册服务器216 配置为接收来自第一计算机102的第二数据包。当第一计算机102数据到新的IP地址和端口组合IPk2 端口 K2218时,对称NAT设备210为这个配对分配新的公共IP地址和端口组合IP12 端口 12220。第三注册服务器222配置为预测至少一个第三公共IP地址和端口组合 IP13 端口 13224,第一计算机102将从该第三公共IP地址和端口组合来尝试与第二计算机 206通信。因为对称NAT设备210为第一计算机102发起的每个新的通信会话分配独特的地址和端口组合,第三公共IP地址和端口组合IP13 端口 132M将与地址和端口组合IP11 端口 n212、IP12 端口 12220 不同,第一计算机 102 之前从 IP11 端口 n212 和 IP12 端口 12220 向第一和第二注册服务器202、216发送了第一和第二数据包。申请人:发现,将来的对称NAT行为(特别是端口分配)可以频繁地基于过去的对称NAT行为来精确预测,并开发了用于进行这种预测的方法,还开发了一种使用这种预测来允许计算机间通信的系统。第三注册服务器222可以预测未来的对称NAT 210行为,并由此从首先确定第一公共IP地址和端口组合IP11 端口 n212与第二公共IP地址和端口组合IP12 端口 12220之间的差来预测第三公共IP地址和端口组合IP13 端口 13224,第一计算机102从第三公共IP地址和端口组合来尝试与第二计算机206通信。第三注册服务器222 接着基于第二 IP地址和端口组合IP12 端口 12220来进行推断以预测出第三IP地址和端口组合IP13 端口 13224。第三IP地址和端口组合IP13 端口 132M被预测为与第二 IP地址和端口组合IP12 端口 12220之间的差值为所述第二和第一 IP地址和端口组合IP12 端口 12220 和IP11 端口 n212之间差值的函数。根据一个实施例,这个函数是对等的,换言之,第三注册服务器222根据以下关系预测第三IP地址和端口组合IP13 端口 13224 (I)IP13 = IP12+(IP12-IP11)且(2)端口 13 =端口 12+ (端口 12_ 端口 n)。其中IP地址和端口增量INCRip和INC&定义如下(3) INCRip = IP12-IP11,且(4) INCRp =端口 12-端口 n在NAT设备210不增加公共IP地址值的应用中,第三公共IP地址IP13的计算可以省略,且第三公共IP地址IP13可以设定为与第一和第二公共IP地址IP12和IP11相同。 作为一种替代方式,可以计算等式(1),但仍得出IP13 = IP12 = IPno第一和第二注册服务器202、216类似地从第二计算机206接收通信。第二计算机206可以被配置为,例如,经第二 NAT设备2 通过公共网络208通信。当第二计算机206 向第一注册服务器202的IPki 端口 K1204发送第三数据包时,第二计算机206可以被分配第四IP 端口组合IP21 端口 21214。第二计算机206随后发送第四数据包到第二注册服务器216的IPk2 端口 K2218。NAT设备2 可以为对称NAT或是不为第二计算机206改变IP 端口分配的NAT。例如,如果第二 NAT设备226为锥形NAT,发送给第二注册服务器216的 IPk2 端口 K2218的第四包的源将和发送给第一注册服务器202的IPki 端口 K1204的第三包的源相同,即第四公共IP地址和端口组合IP21 端口 21214。第四注册服务器2 配置为预测至少一个第四公共IP地址和端口组合,第二计算机206将尝试从所述至少一个第四公共IP地址和端口组合来与第一计算机102通信。在 NAT设备2 不运行为对称NAT的情况下,第四公共IP地址和端口组合通常将和NAT 226 为和第一注册服务器202IPK1 端口 Κ1204和第二注册服务器216ΙΡΚ2 端口 Κ2218通信所分配的地址和端口组合相同;即公共IP地址和端口组合IP21 端口 21214。第五注册服务器230配置为向第一计算机102发送数据包,该数据包被选来使第一计算机102尝试向处于第四IP地址和端口组合IP21 端口 21214的第二计算机206发送数据包。在第一计算机102可操作地通过对称ΝΑΤ210耦合到公共网络208的情况中,如果第五注册服务器230不同于第一或第二注册服务器202、216且配置为从第一或第二注册服务器IP地址和端口组合IPki 端口 Ε1204,ΙΡΕ2 端口 Κ2218发送数据包,其中第一计算机102曾向该第一或第二注册服务器IP地址和端口组合发送过,那么第一或第二注册服务器202, 216首先可以向第一计算机发出命令以通过NAT设备210建立与第五注册服务器230之间的通信,从而打通端口来从第五注册服务器接收通信。根据一个实施例,第五注册服务器230可以进一步配置为将一项或多项命令装入发送给第一计算机102的数据包中,来为向第二计算机206发送数据包进行多次的尝试。作为一种替代方式,第五注册服务器230可以向第一计算机102发送多个数据包,每个数据包包括尝试向第二计算机206发送数据包的命令。为发送数据包进行多次尝试的命令可以是有条件的,例如,只要通信信道尚未建立和/或尚未超过最大重试次数或最大时限,条件保持为真。第六注册服务器232配置为向第二计算机206发送数据包,该数据包被选来使第二计算机206尝试向处于第三IP地址和端口组合IP13 端口 13224的第一计算机102发送数据包,第一计算机102被预计尝试从该第三IP地址和端口组合IP13 端口 132M来与第二计算机206通信。根据一个实施例,第六注册服务器232还进一步配置为将一项或多项命令装入发送给第二计算机206的数据包中,来为向第一计算机102发送数据包进行多次的尝试。作为一种替代方式,第六注册服务器232可以向第二计算机206发送多个数据包,每个数据包包括尝试向第一计算机102发送数据包的命令。为发送数据包进行多次尝试的命令可以是有条件的,例如,只要通信信道尚未建立和/或尚未超过最大重试次数或最大时限,条件保持为真。如果一个或多个对称NAT设备210处在第一和第二计算机102、206之间的电路 210、208和2 中,第一和第二计算机102、206往往需要进行两次或更多次尝试来建立通信信道。这是因为第一计算机做的第一次尝试被用来“击穿”对称NAT210来迫使对称NAT将第三IP地址和端口组合IP13 端口 132M分配给从第一计算机到处于IP21 端口 21214的第二计算机的通信。如果来自第四IP地址和端口组合IP21 端口 21214的数据包在第三IP地址和端口组合和端口组合IP13 端口 132M分配给与第四IP地址和端口组合IP21 端口 21214 之间通信之前到达第三IP地址和端口组合IP13 端口 13224,则丢弃该数据包。由于注册服务器不对第一和第二计算机102、206何时尝试向对方发送数据包进行准确调控,来自计算机102、206中的一个或另一个的数据包经常会在IP地址和端口 IP13 端口 132M、IP21 端口 21214分配之前到达相应的NAT设备210、226。这通常通过重新尝试来解决。在响应第五和第六注册服务器230、232所发的命令而建立至少一个通信链路后, 第一和第二计算机102、206配置为向对方发送和接收语音包,视频包,数据包,语音和视频包,语音和数据包,视频和数据包,或语音、视频和数据包,而不顾第一、第二、第三、第四、第五和第六注册服务器202、216、222、228、230、232。换言之,数据通过端到端通信信道在计算机102和206间流动而不通过服务器202、216、222、228、230、232中的任一个来中继。就带宽分配而言,这提供了显著的优势。因为计算机102、206处于彼此间的直接通信中,甚至穿过了一个或多个对称NAT设备210,不需要固定IP地址服务器来在计算机102和206之间中继高带宽通信。两个计算机102、206之间通过相应NAT 210、2沈进行的成对连接可以扩展至任意大数量的计算机m 234和NAT设备236。计算机N 234对之间的通信信道如上文中就两个计算机102和206所述地建立。系统201被描述为使用多个服务器202、216、222、2观、230和232 ;这样的分割不是必要的。第一、第二、第三、第四、第五和第六注册服务器202、216、222、228、230和232中的两个或多个可以是同一注册服务器。图3为根据另一实施例的使用单个注册服务器302的视频会议或数据传输系统 301的框图。所述单个注册服务器302配置为提供与结合图2介绍的多个注册服务器的功能类似的功能。系统301描述为由申请人用带有两块网络接口卡(NIC) 304,306的单个注册服务器302所实施。第一 NIC 304具有至少一个固定IP地址和端口组合IIV 端口 K1308。第一 NIC 304配置为接收来自客户端310,312,314的通过相应NAT路由器316,318,320穿过公共网络108的初始通信。在该初始通信中,客户端作为主人,提供主人名并向注册服务器302请求会话标识。作为替代方式,客户端可以作为来访者,提供第一主人名和会话标识。第二NIC306被分配了至少一个固定IP地址和多个端口 IPk2 端口 N 332。第二NIC 配置为接收来自客户端310、312、314的时间敏感通信,例如用于确定NAT设备316,318,320 的类型的相继的第一和第二数据包,还配置为确定对称NAT设备的当前端口分配或IP地址和端口分配组合。使相应客户端310、312、314发出相应数据包来建立通信信道的命令同样由第二 NIC 306发出。图4为图释了根据一个实施例的用于视频会议或数据传输的一组计算机的星型互联分布图401的框图。为形成该分布图401,注册服务器302可以发送选出的命令来在主人客户端310和第一来访者客户端312之间建立第一通信信道,在主人客户端310和第二来访者客户端314之间建立第二通信信道,并在主人客户端310和第三来访者客户端402 之间建立第三通信信道。可以加入另外的来访者,其中每个都与主人310建立连接。在星中,来访者客户端之间不直接连接。相反,所有的通信都通过主人310路由。图5为图释了根据一个实施例的用于视频会议或数据传输的一组计算机的网状互联分布图501的框图。为了形成分布图501,注册服务器302可以发送选出的命令来在主人客户端310和第一来访者客户端312之间建立第一通信信道,在主人客户端310和第二来访者客户端314之间建立第二通信信道,并在主人客户端310与第三来访者客户端402 之间建立第三通信信道。注册服务器302发送其它的选出的命令来在每个来访者和每个其它来访者之间建立额外的通信信道。可以加入额外的来访者,其中每个额外的来访者与主人310及其它来访者312、314、402建立通信信道。在网状分布图501中,来访者客户端彼此直接连接,例如视频或数据等通信可以从任意来访者312、314、402直接发送到任意其它来访者。图6A为一组流程图,其示出了根据本发明的一个实施例的用于在处于一个NAT之后的计算机和不处在同一 NAT之后的另一计算机之间建立通信信道的方法的一部分601, 其中NAT类型是确定的。图6A中描绘了运行在相应硬件上的三个流程图并用虚线表示硬件间的通信。流程图604图释了运行在一个或多个注册服务器上的过程。流程图606图释了运行在与注册服务器通信的主人客户端上的过程。流程图608图释了运行在与注册服务器通信的来访者客户端上的过程。通常,各个过程604、606、608可以以软件来实现,其中在相应的硬件上执行计算机可读指令。过程606和608通常作为从注册服务器下载的计算机可读指令提供。在以电磁能量形式发送之前或之后,对应于处理器606和608的计算机可读指令,以及对应于处理器604的计算机可读指令,通常由计算机可读介质承载,例如存储成例如磁盘驱动器等旋转磁介质上的磁畴,存储成旋转光介质上的凹点,或存储成由计算机存储器承载的存储器单元内容。根据一个实施例,主人软件606可以基于主人计算机或其它主人电子设备的用户的费用支付而被下载。来访者软件608可以免费下载从而允许几乎任何来访者参与与主人和其它来访者之间的数据传输或视频会议。始于步骤610,主人访问注册服务器。这通常通过运行客户端软件来完成,客户端软件可以为应用或可以包括配置为由例如浏览器的其它应用加以执行的指令,从而通过公共网络例如互联网来访问注册服务器。数据包通过NAT设备612发送到注册服务器,其中 NAT设备612将主人IP地址和端口组合映射到公共IP地址和端口组合。主人上的步骤610 和注册服务器上的步骤614之间的通信可以实际上包括步骤610中的对应于填充数据域、 选择收音机式按钮等的一系列传输。在步骤614中,注册服务器接收来自处于公共IP地址和端口组合的数据包,该公共IP地址和端口组合首先由主人通过NAT 612访问。在步骤614 中,注册服务器检查用户数据库来确认主人账户是最近的,设置主人名(或者,作为替代方式,查找对应于之前建立的账户的主人名)并分配会话标识。根据一个实施例,主人的用户拨打电话,发送电子邮件,或将主人名和会话ID (标识)发送给一个或多个其它用户,所述其它用户将作为来访者参与所述视频会话。继续到步骤616,注册服务器发送数据包到主人,所述主人配置为使得进行NAT测试,在该NAT测试中服务器确定NAT 612的行为。响应于步骤616,主人在步骤618中接收发送NAT测试包到服务器的命令。主人通常调用客户端软件中的过程并继续到步骤620。
在步骤620中,主人发送第一数据包到注册服务器上的第一公共地址IP 端口组合。第一公共IP:端口组合可以是之前没有被所述主人访问过的新的IP:端口组合。第一数据包发出后,主人立即发送第二数据包到注册服务器上的第二公共IP 端口。注册服务器上的第二公共IP:端口组合是在至少最近,例如在过去的一天中,或自从主人最近一次启动,未由所述主人向其进行发送的IP 端口组合。这保证了 NAT设备612会像其对其它新的IP 端口组合的表现一样地表现。立即可以是相对的。在发送第一数据包之后立即发送第二数据包表示在NAT设备 612收到来自其LAN的指定被发往另一新的IP地址和端口组合的另一数据包之前发送第二数据包。例如,这样的数据包可以由主人计算机上的另一过程来生成,或者,这样的数据包可以是从处于NAT设备612后面的另一计算机发来。如果NAT设备612被实现为只有几个用户的家庭网关,“立即”可以被宽松地解释。另一方面,如果NAT设备612被实现为服务众多用户的大型局域网的网络服务器,则“立即”需要比较快来保证局域网上的客户端访问另一新的IP 端口组合的可能性较低。根据一个实施例,在发送第一数据包之后立刻发送第二数据包表示在发送第一数据包之后的一秒内发送第二数据包。根据一个实施例,在发送第一数据包之后立刻发送第二数据包表示在发送第一数据包之后的100毫秒内发送第二数据包。根据一个实施例,在发送第一数据包之后立刻发送第二数据包表示在发送第一数据包之后,随下一个客户端软件指令发送第二数据包,因此其即时性基本由主人的操作系统的及时性程度决定。根据另一实施例,主人在第一数据包之后发送第二数据包时的速度或即时性可以被选择为接近对应于主人与服务器之间的双向通信延时,加上服务器预测IP地址和端口组合的时间,加上主人对来自服务器的发送另一数据包的命令的响应时间。这一手段对于那些高网络流量导致主人不大可能获得NAT设备612分配的恰好下一个公共IP 端口组合的应用会尤其有用,且最大化了在NAT测试中分配的公共IP 端口组合数值与在连接尝试中所分配的数值类似的可能性。可以进行Ping和响应,或者ping、计算和响应来估计延时。来自主人的两个数据包通过NAT设备612并接着被转发到注册服务器。在步骤 620中发送NAT测试包之后,主人可以(例如,如果一个或多个主人计算机没有准备好进行通信)进入应用闲置状态。注册服务器接着进入步骤622。注册服务器在第一注册服务器IP地址和端口接收主人从第三公共IP地址和端口组合发来的第一通信。第三公共IP地址和端口组合在本文中还称为IP1 端口 i。接着,紧接着第一通信,服务器在第二注册服务器IP地址和端口接收来自所述主人的第二通信。第二通信在本文中称为从NAT分配的第四公共IP地址和端口组合IPk2 端口 2发送。注册服务器将第四公共IP地址和端口(第二数据包自其发送)与第三公共IP地址和端口(第一数据包自其发送)比较来确定至少一个IP地址增量INCRIP 或端口增量INC&。在步骤622中,来自主人的第一和第二通信之间的紧接表示在第一通信之后,足够紧凑地接收来自第一计算机的通信以检测网络地址转换资源的后续端口分配行为。例如,在接收来自第一计算机的第一通信之后的一秒内接收来自主人的第二通信。根据一个实施例,来自主人的第二通信是在来自第一主人的第一通信之后的100毫秒内接收的。如果第三和第四IP地址相同,那么IP地址增量为零。如果第三和第四端口相同,那么端口增量为零。如果第三和第四端口相同,则注册服务器确定主人NAT612不是对称 NAT,因为这个NAT没有为新发送地的IP地址和端口组合分配新的端口。如果第三和第四端口不同,则端口增量等于分配的端口之差。通常,至本申请之日,对称NAT路由器按顺序从低到高以+1为增量分配端口。在测试中,确定为零的公共IP地址增量和确定为非零的端口增量是最常遇到的表示对称NAT的情况。根据一个实施例,在步骤622中确定NAT类型意味着确定NAT 612是对称NAT (也称〃 SYMNAT〃)或不是对称NAT。过程608由来访者执行且非常类似于上述的过程606。始于步骤624,访问者通过经由NAT设备6 来向注册服务器上的公共IP 端口组合发送数据包来访问注册服务器。在必须在步骤614后面执行,但不需要在步骤616和622之后执行的步骤6 中, 注册服务器接收之前在步骤614中分配或查得的主人标识,并接收之前在步骤614中分配的会话标识。主人标识和会话标识被注册服务器用于将特定访问者与特定主人相关联。继续到步骤630和636,注册服务器分别发送一个或多个命令来执行两个NAT测试传输,然后接收来自访问者的响应并根据上述方法确定NAT 6 的类型。在步骤624中访问注册服务器之后,访问者在步骤632中接收NAT测试命令,并继续到步骤634,访问者在步骤634中发送两个测试包到不同的注册服务器IP:端口组合。来自访问者的这两个数据包通过NAT设备拟6并随后被转发到注册服务器。在步骤634中发送NAT测试包之后,访问者可以(例如,如果主人计算机和/或一个或多个访问者计算机没有准备好进行通信)进入应用闲置状态。在步骤620中确定的NAT类型可以与步骤636中确定的NAT类型相同,或者,这些 NAT类型也可以不同。作为一种替代方式,主人或访问者可以无需计算机或客户端与公共网络之间的NAT设备而可操作地耦合到公共网络。没有NAT导致步骤622、636中的"不是对称NAT"的判断。步骤608可以为多个被邀请在星型或网状拓扑中与主人建立通信的来访者重复任意多次,这些来访者可选地彼此间呈网状拓扑。图6B为一组流程图,其示出了图6A中根据本发明的一个实施例的用于在处于一个NAT之后的计算机和不处在同一 NAT之后的另一计算机之间建立通信信道的方法的另一部分602,其中连接包在计算机之间发送。图6B中描绘了运行在相应硬件上的三个流程图并用虚线表示硬件间的通信。流程图604图释了运行在一个或多个注册服务器上的过程,接续图6A。流程图605图释了运行在与注册服务器通信的客户端上的过程,其中该客户端处在对称NAT设备642之后。流程图607图释了运行在与注册服务器通信的客户端上的过程,该客户端处在非对称NAT设备6M之后,或者不处于NAT之后。一般地,各过程604、606和608可以实现为软件,其中计算机可读指令在各硬件上执行。过程606和608通常被提供为自注册服务器下载的计算机可读指令。过程604、605和607通常可以提供为由实体计算机可读介质承载的计算机可读指令,例如提供为例如磁盘驱动器等旋转磁介质上的磁畴,提供为旋转光介质上的凹点,或提供为由计算机存储器承载的存储器单元内容。步骤622和636中确定的NAT类型可以导致〃对称NAT"(连通至少一个端口增量)或"不是对称NAT"。取决于确定的NAT类型,主人过程606或来访者过程608可以沿着过程605或过程607继续。过程605是由处在对称NAT之后的客户端(主人或来访者) 使用的过程。过程607是由不处在对称NAT之后的客户端(主人或来访者)使用的过程。 因此,如果主人处在对称NAT之后,主人过程606从步骤620继续到过程605中的步骤644 ; 或如果主人不处在对称NAT之后,主人过程606从步骤620继续到过程607中的步骤656。 类似地,如果来访者处在对称NAT之后,来访者过程608从步骤634继续到过程605中的步骤644 ;或者如果来访者不处在对称NAT之后,来访者过程608从步骤634继续到过程607 中的步骤656。在一些情况中,主人和来访者均将沿着过程605继续,在其它情况中,主人和来访者均将沿过程607继续。如图6A所示,过程604由注册服务器执行。注册服务器从步骤636继续到图6B中的步骤638。步骤638基本上是闲置状态。当分配给相同主人和会话标识的两个客户端与注册服务器通信并已完成过程601,然后,步骤638被置为真,且注册服务器继续到步骤640。可选地,步骤638可以在至少主人和至少一个来访者已完成过程601之后确定为真。可选地, 可以在预定的会话开始日期和时间到来且其它条件为真时,将步骤638置为真。在步骤640中,注册服务器向处在对称NAT设备642之后的客户端计算机发送数据包。所述数据包为向新的IP地址和端口组合发送NAT状态数据包的指令或ping。在应用中,指定的新的IP地址和端口组合为之前用于与注册服务器301(图3)的第二网络接口卡306通信的IP地址,IPe2,但指定的不同的端口,端口 N。处于对称NAT设备642之后的客户端在步骤644中接收来自注册服务器的NAT状态请求,作为响应,退出其闲置状态,并继续到步骤646。NAT状态请求也称作是从注册服务器接收向注册服务器上的第三公共IP 端口发送第三数据包的命令。在步骤646中,处在对称NAT设备642之后的客户端向新的公共IP地址和端口 IPr2 端口 N发送NAT状态数据包。发送NAT状态数据包,也称向注册服务器上的第三公共IP 端口发送第三数据包,被配置为向注册服务器提供关于网络地址转换设备642的当前公共IP 端口的数据,并在步骤648中用于预测一个公共IP地址和端口组合,处在对称 NAT642之后的计算机将尝试由该公共IP地址和端口组合来向将要连接到会话标识所指定的会话中的另一计算机发送数据包。当在步骤646中发送NAT状态数据包,对称NAT642分配新的公共IP地址和端口组合并将NAT状态包转发到注册服务器。新的公共IP地址和端口组合对应于对称NAT所用的当前表项,并且,由于后续的步骤很快地执行,为计算预测的IP地址和端口组合提供基准,处在对称NAT设备642后的计算机将尝试从该预测的IP地址和端口组合来与第二计算机通信。这也称为第一网络地址转换资源上的第一公共IP地址和端口组合,第一计算机将从这个组合尝试与第二计算机通信。如果处在对称NAT设备之后的计算机在完成步骤620或634后仅闲置了较短的时间,也即,同一计算机或处在该对称NAT642之后的其它计算机没有发送其它数据包到新的 IP地址和端口组合,新的IP公共IP地址和端口组合可以从之前的(例如,第二)公共IP 地址和端口组合增加相应的IP地址和/或端口增量。根据一个实施例,如果步骤620或634和步骤638中的NAT测试包的发送之间的时间足够短,以至于第二 NAT测试数据包有较大的可能性被从NAT设备的当前IP地址和端口组合发出,那么注册服务器可以省略步骤640,作为结果,处在对称NAT 642之后的计算
2机可以省略步骤644和646。在这种情况下,注册服务器可以直接使用发出NAT测试包的公共IP地址和端口组合,以预测步骤648中的该公共IP地址和端口组合。当注册服务器接收到来自执行过程605的计算机的NAT测试数据包,注册服务器继续到步骤648。NAT状态数据包将包括对应于当前IP地址和端口组合IP。端口。的数据, 其中,该包最后从该IP地址和端口组合发出。注册服务器快速预测出尚未由对称NAT设备 642分配的下一个公共IP地址和端口组合IPp 端口 p,该计算机将从IPp 端口 p来尝试与会话中的另一客户端通信。处在对称NAT设备642之后的计算机(客户端)可以为主人或来访者,会话中的另一客户端可以为主人或另一来访者。在步骤648中,注册服务器使用以上定义的关系来预测下一个IP地址和/或端口。修改IP地址和端口名来匹配结合图6A-6C所用的惯例,如果步骤620、634和638之间的延迟为了使当前IP地址和端口组合IP。端口。和第二 NAT测试IP地址和端口组合IP2 端口 2相同成为可能而足够短;且步骤640、644和646被省略,则注册服务器使用下列关系来预测将被对称NAT 642分配的下一个IP地址和端口组合端口 N (5) IPn = IP2+ (IP2-IP1),且(6) PortN = Port2+ (Port2-Port1)。注意到结合对应于图2的说明,预测的下一个IP地址值称为1 13且预测的下一个端口值称为端口 13。如果闲置时间足够长,以使得步骤640、644和646被执行,那么注册服务器可以使用下面的关系来预测将被对称NAT设备642分配的下一 IP地址和端口组合(7) IPn = IPc+ (INCRip),且(8) PortN = Portc+ (INCRp)。等式(7)和(8)中的关系也称为使第四公共IP地址和端口组合增大IP地址增量或端口增量中的至少一个,以预测出第一公共IP地址和端口组合。等式(7)和(8)中的关系也称为在第三注册服务器IP地址和端口,接收第一计算机从第五公共IP地址和端口组合发来的第三通信;以及使第五公共IP地址和端口组合增大IP地址增量或端口增量中的至少一个,以预测所述第一 IP地址和端口组合。在从本申请以后的一般应用中,公共IP地址增量确定为零,且端口增量确定为非零。端口增量经常确定为+1。因此,对于处在对称NAT设备642之后的客户端将过程604结合过程605来执行的情况下,所述的注册服务器过程604满足以下条件不需首先接收来自第一公共IP地址和端口组合的第一计算机发来的通信,预测第一网络地址转换资源上的第一公共IP地址和端口组合,第一计算机将从该第一公共IP地址和端口组合尝试与第二计算机通信。对于过程604被结合过程605或由客户端或计算机(第二计算机)执行的过程607执行的情况中,注册服务器604满足以下条件预测第二公共IP地址和端口组合,第二计算机将从该第二公共IP地址和端口组合尝试与第一计算机通信。可选地,步骤640和648可以为处于非对称NAT设备6M之后的客户端执行,但是由于INCRip和INC&对这个设备而言都是零,预测的下一个IP地址和端口组合IPn 端口 N 确定为等于当前IP地址和端口组合IP。端口。。可选地,对于对称NAT设备642不增加IP 地址的环境,使用等式( 或(7)来预测下一 IP地址可以省略。
注册服务器接着继续到步骤650。在步骤650中,注册服务器发送连接命令和证书到一对客户端。这在图6B中示为向处于NAT设备642之后的计算机及处于并非对称NAT 设备的NAT设备肪4之后的另一计算机发送信息,实际上,两个计算机(客户端)可以由过程605所表现,或者两台计算机(客户端)可以由过程607所表现。过程607表现了由未处在NAT设备之后的客户端和/或处在不是对称NAT设备的NAT设备6M之后的客户端所执行的过程。在步骤650中,注册服务器向第一计算机发送第一命令以尝试与处于预测的第二公共IP地址和端口组合的第二计算机通信,并向第二计算机发送第二命令以尝试与处于预测的第一公共IP地址和端口组合的第一计算机通信。本文中也将第二命令称为“第三命令”。证书指代预测的第一和第二公共IP地址和端口组合。可选地,证书可以包括主人名和会话标识。在步骤650中发送连接命令可选地包括发送命令以尝试与处于预测的公共IP地址及多个聚集在等于前一个端口分配与端口增量之和的端口附近的多个端口的第一计算机通信。在步骤650中发送连接命令可选地包括为第二计算机发送命令,来为与处于预测的第一公共IP地址和端口组合的第一计算机通信进行两次或更多次尝试。响应于注册服务器执行步骤650,这对计算机在步骤652和步骤656中各自接收另一计算机(也称为第二计算机)的预测的公共IP 端口。在接收到另一计算机的预测的公共IP 端口之后,处在对称NAT设备642之后的计算机立即进入步骤660来第一次尝试向所述另一计算机的预测的公共IP 端口发送数据包。在接收另一计算机的相应预测的公共IP:端口之后,处在非对称NAT设备肪4之后的计算机立即进入步骤658,同样进行第一次尝试向对称NAT设备642为该另一计算机分配的预测的公共IP 端口发送数据包。首次通信尝试可能会失败。步骤660中的首次尝试发送数据配置为打开对称NAT 642的公共IP:端口。如果这没有在来自另一计算机(执行步骤658或660)的包到达前完成,包662将被丢弃而这次通信也将失败。计算机立即进入步骤664和/或666并进行尝试向该另一计算机的预测的公共 IP:端口发送数据包。已经发现第二次尝试在大约80%的时候会成功。如果第二次尝试没有成功,进行最多三次额外重试(根据一个实施例)。使用总共4次尝试,在99%的时候可以建立连接。对于剩下的的连接未能建立的情况,在用户再次驱动客户端图形用户界面 (⑶I)上的〃连接〃按钮后,连接在100%的时候可以建立。根据一个实施例,步骤658和/或660可以包括进行多次第一尝试来向该另一计算机的多个预测的公共IP 端口组合分别发送数据包。作为替代方式,所述另一计算机的多个预测的公共IP 端口组合可以被确定为并称为预测的公共IP 端口组合加上分配在所述预测的公共IP 端口组合以上和以下的一个或多个额外IP 端口组合。根据一个实施例,步骤664和/或660可以包括进行多次第二尝试中的一次或多次来向多个公共IP 端口组合发送数据包,直到接收到包接收确认或直到超时或达到重试限制。图6C为一组流程图,其示出了图6A、6B中根据本发明的一个实施例的用于在处于一个NAT之后的计算机和不处在同一 NAT之后的另一计算机之间建立通信信道的方法的另一部分603,其中在计算机之间建立通信信道且监视连接状态。图6C中描绘了运行在相应硬件上的三个流程图并用虚线表示硬件间的通信。流程图604图释了运行在一个或多个注册服务器上的过程。流程图606图释了运行在与注册服务器通信的主人客户端上的过程。流程图608图释了运行在与注册服务器通信的来访者客户端上的过程。一般地,各过程604、606和608可以实现为软件,其中计算机可读指令在各硬件上执行。过程606和608通常被提供为自注册服务器下载的计算机可读指令。过程604、606和608通常可以提供为由实体计算机可读介质承载的计算机可读指令,例如提供为例如磁盘驱动器等旋转磁介质上的磁畴,提供为旋转光介质上的凹点,或提供为由计算机存储器承载的存储器单元内容。在步骤668和670中,在计算机和第二计算机之间建立至少一条通信链路。建立至少一条通信链路可以包括进入第一和第二计算机之间的视频会议或数据传输而基本不通过注册服务器来中继数据。为了形成分布图401,如图4所示,图6C中左边一栏的过程需参照由主人执行的过程606。第一通信信道可以形成于主人客户端和第一来访者客户端之间,第二通信信道可以形成于主人客户端与第二来访者客户端之间,任意数量的第三通信信道可以形成于主人客户端与一个或多个第三来访者客户端之间。可以加入额外的来访者,其中每个额外的来访者与主人建立通信信道。在星型分布图中,除了下述的心跳传输之外,计算机之间的所有通信都通过主人来进行路由。为形成网状分布图501,如图5所示,图6C的左侧一栏可参照主人所执行的过程 606,或参照来访者所执行的过程608。可以在主人客户端和第一来访者客户端之间形成第一通信信道,在主人客户端与第二来访者客户端之间形成第二通信信道,在第一和第二来访者客户端之间形成第三通信信道,在主人和每个来访者客户端之间及来访者客户端对之间形成任意数量的第四通信信道。在网状分布图501中,除了下述的心跳传输外,计算机之间的所有通信的路由都是直接从主人到来访者,从来访者到主人,或从来访者到来访者,其中没有或基本没有通过所述注册服务器的通信。在过程603中,每个主人、来访者、和注册服务器周期性地发送心跳数据包到所有主人、来访者和注册服务器。这分别示为步骤672、672和678。类似地,每个主人、来访者和注册服务器周期性地接收来自所有其它主人、来访者和注册服务器的心跳数据包。这分别示为步骤676、674和676。心跳包提供若干有用的功能。首先,心跳包可以被其它主人和来访者用于确定会话中仍连接着的参与者。他人的连接状态可以呈现为主人和/或来访者的计算机监视器上的人可读的通知或一个或多个图形指示器。其次,一些NAT设备在没有数据通过它们时,只将公共IP地址和端口分配保持有限的时间。上述心跳保证了数据以足够的频率持续通过NAT设备,以避免该NAT设备取消端口分配并终止连接。NAT映射可以在不使用之后大约1.5分钟后"超时"。因此,优选地,步骤672和678以等于或小于1.5分钟的周期来周期性地执行。周期性地,每个来访者和主人执行步骤680,其中客户端软件确定会话是否应结束。如果结束会话的条件不满足,该过程循环于是重新发送和接收心跳数据传输。如果在上一循环中,或者作为替代方式,在预先确定的数量的在先循环中,没有接收到来自另一客户端的心跳数据包,那么客户端软件会警告用户检查连接和/或自动断开与一个或多个其它客户端的通信。作为替代方式,步骤680可以包括,如果没有接收到心跳,则结束整个会话。作为替代方式,步骤680的条件可以包括接收来自用户(例如来自图形用户界面)的断开命令。类似地,注册服务器682周期性地执行步骤682。如果持续接收到一个或多个心跳,那么至少一个可能在等待与另一计算机重连或连接的计算保持活动状态,于是会话保持活动状态。注册服务器过程604还周期新地执行步骤684,其中确定是否发生超时。超时测试684可以配置为先发的,其中,如果条件为真,该过程继续到步骤686,不管心跳条件是否满足。作为替代方式,超时测试684可以配置为有条件的,其中该过程仅在会话不再活动时继续到步骤686。根据一个实施例,该超时测试684可以为每日超时测试,其中其一天中的预先确定的时间进行,例如清早在所有客户端进行,在会话变为活动M小时后进行,或在服务器的清早进行。在步骤682中的没有会话活动和/或步骤684中的达到超时限制被满足时,过程 604继续到步骤686,其中会话取消供应。取消供应可以包括发送终止命令到任何对应于仍连接的计算机的客户端软件,因此客户端软件可选地通知用户并终止与该会话中的任何其它计算机之间的连接。取消供应还可以包括为主人的用户计算连接费用和/或将分出的时间长度记入用户账户中。取消供应可以包括更新账户状态。取消供应通常包括取消分配会话标识,于是该数字可以被用于另一会话。以下例子提供了上述实施例结果的描述。例子在本文所展示的例子中,对称NAT路由器称为SYMNAT,注册服务器称为 regserver,主人客户端称为Xmitter,来访者客户端称为接收方。SYMNAT击穿的例子假设192. 168. 1. 0和192. 168. 2. 0上的两个LAN,分别称为LAN X和LAN R,通过 SYMNAT路由器连接到互联网。)(mitter处于LAN X上且在SYMNAT X之后,接收方处于LAN R上且在SYMNATR之后。Xmitter IP 端口 = 192. 168. 1. 2 2000 (专用,不能从互联网访问。端口由 Windows在创建套接字时任意分配。)SYMNAT XLANIP = 192. 168. 1. 1(专用,同上)互联网IP = 64. 184. 145. 20 (公共,同上)接收方IP 192. 168. 22 3000 (专用,同上)SYMNATRLAN IP = 192. 168. 2. 1 (专用)互联网IP = 64. 184. 145. 25(公共)Regserver互联网IP 端口 = 64. 184. 145. 32:6767(注册公用)NAT 测试 IP 端口 = 64. 184. 145. 50:6767 至 6798 (NAT 测试公用)Xmitter和接收方向Regserver注册并进行其NAT测试。Regserver基于NAT测试确定Xmitter的下一个可用SYMNAT端口为4001,且接收方的下一个可用SYMNAT端口为 5001。 Regserver 通知 Xmitter 穿透至Ij接收方,Regserver 在 Xmitter 的 SYMNAT X 中仓ij建以下NAT映射(I)Xmitter从SYMNAT X向接收方发送打击包。(2) SYMNAT X用自己的公共IP地址来替换源IP,用4001来替换源端口,这与 Regserver所猜的相同,并创建NAT映射(3) SYMNAT X发送带有更改后的源IP 端口的包到接收方的SYMNAT R0如果 SYMNAT R尚未为该接收方建立NAT映射,这个包可能被SYMNAT R忽略。(4)与接收方类似地,当接收方击打Xmitter时,将在SYMNAT R中创建以下NAT映射(5) SYMNAT R发送带有更改后的源IP 端口的包到Xmitter的SYMNAT X。如果 SYMNAT X的NAT映射尚未建立,则这个包也可能会被丢弃(在实用中,Xmitter和接收方同时击打)。(6)当Xmitter和接收方都进行第二次击打时,SYMNAT映射已经建立且击打包通过并到达两个LAN计算机。(7)击打包中的源匹配NAT映射中的目的地,且击打包中的目的地匹配NAT映射中的源。所以,SYMNAT X允许包进入并在用Xmitter的IP:端口替换目的地后将其中继到 Xmitter0(8)击打包中的源匹配NAT映射中的目的地,且击打包中的目的地匹配NAT映射中的源。所以,SYMNAT R允许包进入并在用接收方的IP:端口替代目的地后将其中继给接收方。本例显示,在NAT映射被正确建立之后,也即,Regserver猜出了要击打的正确目的端口,专用Xmitter和接收方计算机可以通过公共的互联网向对方发送UDP包。但是,如果 Regserver猜错了一个或两个端口,则映射和包在两个方向的任一方向上不匹配,没有包会通过(尝试用5002替换已经NAT的端口 5001并看结果为何)。MPTP连接协议详细步骤详细步骤如下(I)Xmitter 发送 UDP_REG 包到 Regserver。(2) Regserver创建新的会话对象,并发送UDP_REGBACK到Xmitter以确认收到 UDP_REG。(3) Xmitter 发送特殊初始 NAT 测试到 Regserver。(4) Regserver发送NAT测试响应包到Xmitter,其中包括已经NAT的端口,所以 Xmitter可以断定其是否处在SYMANT之后。如是,则向用户公布一条警告消息,说明涉及 SYMNAT所以可能会有连接问题。(5) Xmitter 发送 UDP_ACKREGACK 给 Regserver,表明 Xmitter 准备好连接到接收方。(6)之后的某时,接收方发送UDP_REG到Regserver以注册到并连接到Xmitter的会话。(7) Regserver创建协议状态(ProtocolState)目标来跟踪用于连接Xmitter和接收方的协议。发送UDP_REGACK到接收方以确认收到UDP_REG。
(8)接收方发送UDP_ACKREGACK到Regserver,表明其准备好连接到Xmitter。(9) Regserver发送UDP_NATRETEST到Xmitter和接收方以使它们进行它们的NAT 测试。(IO)Xmitter和接收方发送UDP_NAT测试包到Regserver的NAT测试IP 端口。(Il)Regserver “等待”两个UDP_NAT测试包(服务器为所有等待的同时为其它会话处理其它协议状态)。(12)如果所述等待超时,回到步骤(9)重试NAT测试最多3次。如果超过3次,则该连接失败。(13) Regserver接收两个NAT测试包并确定接收方和Xmitter处在何种NAT之后。 发送UDP_PUNCHSET到接收方和Xmitter,告知它们应击打哪个目的IP 端口。端口号基于 NAI测试结果。(H)Xmitter和接收方发送UDP_PUNCH包到对方来迫使它们的路由器创建NAT映射。任一方都不预料接收到这些包。(15) Xmitter和接收方向Regserver表示它们已经完成了它们的击打。(16) Regserver 等待两个 UDP_PUNCHACK 包。(17)如果等待超时,则是有些东西坏了 ;连接失败。(18) Regserver 接收 UDP_PUNCHACK 包。发送 UDP_PUNCHTEST 到 Xmitter 和 Receiver,告诉它们用(14)中的之前的击打相同的目的IP和端口来再次击打。(19)Xmitter和接收方用与前次击打所用相同的IP 端口击打对方。如果第一击打所创建的NAT映射是正确的,它们将接收到对方的UDP_PUNCH包。(20-A1)成功的PUNCHTEST: Xmitter和接收方接收彼此的UDP_PUNCH包并通过发送 UDPP_UNCHTESTACK 包来通知 Regserver0(20-A2) Regserver在超时前接收两个UDP_PUNCHTESTACK包,在步骤21继续。(20-B1)如果Xmitter和接收方没有接收到来自(19)的UDP_PUNCH包,或者它们接收到了击打但它们的UDP_PUNCHTESTACK包没有在超时时间内到达Regserver,并且连接是为LAN,则该连接失败。注意LAN连接不涉及Xmitter和接收方之间的任何路由器,但无论如何,它们经过相同的NAT测试和击打步骤以保证协议状态机简单。(20-C1)如果Xmitter和接收方没有接收到来自(19)的UDP_PUNCH包,和/或它们的UDP_PUNCHTESTACK包没有在超时时间内到达Regserver,并且连接在两端均为SYMNAT, 则把从(9)开始的整个过程再重复最多3次。每次重试使得新的SYMNAT端口被击打,这增加了找到自由端口的可能。如果第三次重试失败,则所述连接失败。(20-D1) SYMNAT嗅探Xmitter或接收方接收来自(19)的包并向Regserver发送 UDP_PUNCHTESTACK包。接收到所述击打的一端用下次击打要用的来自UDP_PUNCH包的源端口来取代来自Regserver的目的击打端口。这个端口是为另一端的路由器所用的正确端口,所述另一端的路由器很可能为SYMNAT (NAT测试的代码知晓其为SYMNAT,但这并不能帮助或简化用于获知该信息的嗅探码)。对所怀疑的SYMNAT的下次击打将会成功。(20-D2) Regserver 在超时时间内只接收到一个 UDP_PUNCHTESTACK。SYMNAT 嗅探码开启并发送UDP_PUNCHTEST到两端来进行再次的击打。
(20-D3)如果Xmitter和接收方在(20-D1)中得到一个被嗅探的端口,则Xmitter 和接收方将使用它们的被嗅探的端口作为击打目的端口来再次击打对方。如果它们这次接收到了击打包,则向 Regserver 发送 UDP_PUNCHTESTACK。(20-D4)如果两个UDP_PUNCHTESTACK都没有赶在超时之前,则连接失败。(20-D5)均在超时前接收到,继续到21。Ol)Regserver从之前的步骤中接收到两个UDP_PUNCHTESTACK包。发送UDP_ STARTVIDE0 到 Xmitter 和 Receiver。(22)接收方启动其解码器来接收信道数据。Xmitter和接收方通过发送UDP_ STARTVIDEOACK包来通知Regserver它们已准备好发送/接收信道数据。(23) Regserver等待两个UDP_STARTVIDEOACK包。如果等待超时,则连接失败。(24) Regserver 接收两个 UDP_STARTVIDEOACK 包。发送 UDP_STARTCHANDATA 到 Xmitter以开始信道数据传输。(25)连接成功=Xmitter使用环形缓冲协议向接收方发送信道数据。MPTP 的 PR-锥形 NAT/SYMNAT 扩展当SYMNAT在一端,而一个冊(“端口受限的”)_锥形NAT处于另一端时,可能会出现另外的考虑。PR-锥形NAT要求自目的地返回的包的源地址与发送原始包所用的目的端口相同。如果Regserver为PR-锥形NAT击打SYMNAT猜错了端口,那么SYMNAT发给 PR-锥形NAT的击打包会被拦下,即使它们包含PR-锥形NAT的正确的端口。这是因为由于Regserver的错误猜测,SYMNAT包中的源端口与PR-锥形NAT用来击打SYMNAT的目的端口将会不同。这导致SYMNAT嗅探因没有击打包在任一方向上得以通过而失败。为了解决这个问题,将NAT测试为这一情形进行扩展,界定一个包括正确端口的端口范围,用于由 PR-锥形NAT击打SYMNAT。PR-锥形NAT尝试这个范围内的每个端口直至SYMNAT响应。这个扩展的测试尽可能快地完成,以将可能的端口范围限制得比较小,从而使得非bvCOM业务可以在PR-锥形NAT尝试端口之前使用它们。以上的详细说明通过对框图、流程图和/或例子的使用,阐述了设备和/或过程的各个实施例。就这样的包括一个或多个功能和/或操作的框图、流程图、和/或例子而言, 本领域普通技术人员应当理解,这样的框图、流程图、或例子中的每个功能和/或操作可以由很多种硬件、软件、固件、或其几乎任意组合来独立地和/或统一地完成。在一个实施例中,本文中所述的主题的若干部分可以通过特定用途集成电路(ASIC)、现场可编程门阵列 (FPGA)、数字信号处理器(DSP)、或其它集成形式所实现。但是,本领域普通技术人员将认识到,本文中披露的实施例的某些部分,整体地或部分地,可以在集成电路中等同地实现为, 运行在一台或多台计算机上的计算机程序(例如,实现为运行在一个或多个计算机系统中的一个或多个程序),运行在一个或多个处理器上的一个或多个程序(例如,实现为运行在一个或多个微处理器上的一个或多个程序),固件,或其几乎任意组合,并且设计电路和/ 或为软件和或固件编写代码属于本领域普通技术人员基于本发明公开所获得的技术范围之内。另外,本领域普通技术人员将理解,本文中所述的主题的机制能够以各种形式的程序产品分销,且无论实际用于实现该销售的信号承载介质的具体类型为何,本文所述的主题的示例性实施例都是适用的。信号承载介质的例子包括但不限于以下可记录类介质例如软盘、硬盘驱动器、光盘(CD)、数字化视频光盘(DVD)、数字磁带、计算机存储器,等等;以及传输类型介质诸如数字和/或模拟传输介质(例如,纤维光缆,波导,有线通信链路、无线通信链路等)。本领域普通技术人员将意识到,在本领域中,以本文所阐述的方式来介绍设备和/ 或过程,以及在其后使用工程实践来将所述的设备和/或过程集成到数据处理系统中,均是常见的。也即,本文所述的设备和/或过程的至少一部分可以通过合理数量的实验而被集成到数据处理系统中。本领域普通技术人员将意识到,常用的数据处理系统一般包括一个或多个系统单元外壳,视频显示设备,存储器如易失性或非易失性存储器,处理器例如微处理器和数字信号处理器,计算实体如操作系统,驱动器,图形用户界面,以及应用程序,一个或多个互动设备,例如触摸版或屏,和/或包括反馈循环和控制马达(例如,用于感测位置和/或速度的反馈;用于移动和/或调整部件和/或数量的马达)。常用的数据处理系统可以用任何市场上可以买到的部件来实现,例如在数据计算/通信和/或网络计算/通信系统中通常可以找到的那些。本文中介绍的主题有时描述了不同部件,这些部件包含在其它部件中或连接到其它部件。应当理解,如此描述的结构仅为示例性,事实上很多其它结构均可以实现同样的功能。从概念来说,为实现相同功能的任何部件的布置均有效地"关联"以达到所需要的功能。因此,可以看出,在本文中合并来实现具体功能的任意两个部件可以被视为是彼此“相关联”的,以实现所需要的功能,而不考虑结构或中间部件。同样地, 如此关联的任意两个部件也可以被看作为“可操作地连接”或“可操作地耦合”到对方,以实现所需要的功能,且可以被如此关联的任意两个部件可以被视作“可以可操作地耦合”到彼此以实现所需的功能。可以可操作地耦合的具体例子包括但不限于实体可耦合和/或在实体地互动的部件和/或可无线互动的和/或在无线地互动的部件和/或在逻辑地互动和/ 或可逻辑互动的部件。关于本文中对于几乎任何复数和/或单数术语的使用,本领域普通技术人员可以在对于环境和/或应用适当时,将复数转换为单数和/或将单数转换为复数。为了清楚性, 在本文中可能已明确地阐述几种单/复数转换。本领域普通技术人员将理解,通常,在本文中尤其是随附的权利要求书(例如,权利要求书的主体)中所用的术语,通常被作为“开放式”术语(例如,术语“包括”应被理解为“包括但不限于”,术语“具有”应被理解为“至少具有”,术语“包括了”应被理解为“包括了但不限于”,等等)。本领域普通技术人员还将理解,如果所引导的权利要求叙述被期望为具体的数字,那么这种期望将被明确地记载在权利要求中,如无此类记载,则不体现这种期望。例如,为了帮助理解,以下的随附权利要求可以包括使用引导性词语“至少一个”和“一个或多个”来引导权利要求叙述。但是,使用这种词语并不应被解释为暗示了由不定冠词" 一个"或"一"引导的权利要求叙述将任何包括如此引导的权利要求叙述的权利要求限定为仅包括一个此类叙述的发明,即使在同一权利要求包括引导词语“一个或多个”或“至少一个”和不定冠词“一个”和“一”时(例如,“一个”或“一”通常应被解释为表示“至少一个”或“一个或多个”);对于用来引导权利要求叙述的定冠词的使用同样如此。另外,即使记载了被引导的权利要求叙述的具体的数量,本领域普通技术人员理解,这种记载通常应被理解为表示至少为所记载的数量(例如,仅有“两个叙述”的叙述,在没有其它限定语时,通常表示至少两个叙述,或两个或更多叙述)。此外,在那些使用了 “A,B和C中的至少一个,等”的惯用比拟的例子中,通常,这种构造以本领域普通技术人员理解该比拟的意义为意图(例如,“具有A,B和C中至少一个的系统”将包括但不限于只具有A的系统,只具有B的系统,只具有C的系统,具有A和B的系统,具有A和C的系统,具有B和C的系统, 和/或具有A,B和C的系统,等)。在那些使用了 “A,B或C中的至少一个,等”的惯用比拟的例子中,通常,这种构造以本领域普通技术人员理解该比拟的意义为意图(例如,“具有 A,B或C中的至少一个的系统”将包括但不限于仅具有A的系统,仅具有B的系统,仅具有 C的系统,具有A和B的系统,具有A和C的系统,具有B和C的系统,和/或具有A,B和C 的系统,等)。本领域普通技术人员还将理解,几乎所有呈现两个或更多可替代的术语的分离的词和/或短语,无论在说明书、权利要求书或是附图中,均应被理解为考虑包括其中一个术语、其中任一术语或两个术语的可能性。例如,术语“A或B”应被理解为包括的“A”或 “B”或“A和B”的可能性。 本文披露了各方面和实施例,也考虑了其它方面和实施例。本文披露的这些各种方面和实施例是为了举例说明而非要进行限制,实际的范围和精神由以下的权利要求书所指明。
权利要求
1.一种用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,包括无需先接收第一计算机从第一公共IP地址和端口组合发来的通信,预测第一网络地址转换源上的所述第一公共IP地址和端口组合,所述第一计算机将尝试从所述第一公共 IP地址和端口组合与第二计算机通信;预测第二公共IP地址和端口组合,所述第二计算机将从所述第二公共IP地址和端口组合尝试与所述第一计算机通信;向所述第一计算机发送尝试与处于所预测的第二公共IP地址和端口组合的所述第二计算机通信的第一命令;以及向所述第二计算机发送尝试与处于所预测的第一公共IP地址和端口组合的所述第一计算机通信的第二命令。
2.如权利要求1所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,其中所述第二命令包括使所述第二计算机进行两次或更多次与处于所述预测的第一公共IP地址和端口组合的所述第一计算机进行通信的尝试的命令。
3.如权利要求1所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,进一步包括向所述第二计算机发送尝试与处于所预测的第一公共IP地址和端口组合的所述第一计算机通信的第三命令。
4.如权利要求1所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,其中预测第一网络地址转换源上的所述第一计算机将从其尝试与第二计算机通信的所述第一公共IP地址和端口组合包括在第一注册服务器IP地址和端口,接收经由第三公共IP地址和端口组合来自所述第一计算机的第一通信;在第二注册服务器IP地址和端口,且在所述第一通信后迅速紧接地,接收经由第四公共IP地址和端口组合来自所述第一计算机的第二通信;以及比较所述第四公共IP地址和端口与所述第三公共IP地址和端口,以确定至少一个IP 地址增量或端口增量。
5.如权利要求4所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,其中预测第一网络地址转换源上的所述第一计算机将从其尝试与第二计算机通信的所述第一公共IP地址和端口组合包括将所述第四公共IP地址和端口组合增大至少一个所述IP地址增量或所述端口增量, 以预测所述第一公共IP地址和端口组合。
6.如权利要求4所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,其中预测第一网络地址转换源上的所述第一计算机将从其尝试与第二计算机通信的所述第一公共IP地址和端口组合包括在第三注册服务器IP地址和端口,接收经由第五公共IP地址和端口组合来自所述第一计算机的第三通信;将所述第五公共IP地址和端口组合增大至少一个所述IP地址增量或所述端口增量, 以预测所述第一公共IP地址和端口组合。
7.如权利要求4所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,其中预测第一网络地址转换源上的所述第一计算机将从其尝试与第二计算机通信的所述第一公共IP地址和端口组合包括在第三注册服务器IP地址和端口,经由第五公共IP地址和端口组合接收来自所述第一计算机的第三通信;将所述第五公共IP地址和端口组合增大以预测所述第一公共IP地址和端口组合。
8.如权利要求4所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,所述公共IP地址增量确定为零且所述端口增量确定为非零。
9.如权利要求8所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,其中所述端口增量确定为+1。
10.如权利要求4所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,其中发送所述第二命令包括使尝试与所述第一计算机通信的命令,所述第一计算机处于所述预测的公共IP地址和聚集在等于之前的端口分配与所述端口增量之和的端口附近的多个端口。
11.如权利要求4所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,其中在来自所述第一计算机的所述第一通信之后的足够短的时间内接收来自所述第一计算机的所述第二通信,以检测所述网络地址转换资源的后续端口分配行为。
12.如权利要求4所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,其中来自所述第一计算机的所述第二通信是在来自所述第一计算机的所述第一通信之后一秒内接收到的。
13.如权利要求4所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,其中所述来自所述第一计算机的所述第二通信是在来自所述第一计算机的所述第一通信之后100毫秒内接收到的。
14.如权利要求1所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,其中所述第一网络地址转换资源为对称设备。
15.如权利要求1所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,其中所述第一网络地址转换资源为网络地址转换路由器。
16.如权利要求1所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,其中处于网络地址转换器之后的第一计算机指具有内部IP地址和端口并连接到所述网络地址转换器的第一计算机,其中当所述第一计算机发送数据包到公共服务器时,所述网络地址转换器通过所述网络地址转换器将所述内部IP地址和端口转换为不同的公共IP地址和端口。
17.如权利要求1所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,其中所述第一公共IP地址和端口组合由一系列其它公共地址和端口组合预测,从所述一系列其它公共地址和端口组合曾接收到来自所述第一计算机的通信。
18.如权利要求1所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,其中预测所述第二计算机将从其尝试与所述第一计算机通信的所述第二公共IP地址和端口组合包括接收所述第二计算机从公共地址和端口组合而非所述第二公共IP地址和端口组合发来的一系列通信。
19.如权利要求1所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,其中预测所述第二计算机将从其尝试与所述第一计算机通信的所述第二公共IP地址和端口组合包括接收所述第二计算机从所述第二公共IP地址和端口组合发来的至少两个通信。
20.如权利要求1所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,进一步包括接收来自所述第二计算机的对应于分配给所述第一计算机的会话标识的数据。
21.如权利要求1所述的用于在处于网络地址转换器后的一个计算机与不处在同一网络地址转换器后的另一计算机之间建立通信链路的方法,进一步包括接收来自所述第一计算机的对应于分配给所述第二计算机的会话标识的数据。
22.一种用于通过一个或多个对称网络地址转换设备来与第二计算机通信的方法,包括从第一计算机向注册服务器上的第一公共IP 端口发送第一数据包;在发送所述第一数据包之后,立即地,向所述注册服务器上的第二公共IP 端口发送第二数据包;接收所述第二计算机的预测的公共IP 端口 ;在接收到所述第二计算机的预测的公共IP 端口后,立即地,进行向所述第二计算机的所述预测的公共IP 端口发送数据包的第一尝试,所述发送数据的第一尝试配置为从所述第二计算机的所述预测的公共IP地址端口接收数据打开网络地址转换设备的公共IP 端口 ;和在进行所述第一尝试之后,进行向所述第二计算机的所述预测的公共IP 端口发送数据包的第二尝试。
23.如权利要求22所述的用于通过一个或多个对称网络地址转换设备来与第二计算机通信的方法,进一步包括在接收所述第二计算机的所预测的公共IP 端口之前,向所述注册服务器上的第三公共IP 端口发送第三数据包,所述第三数据包的发送配置为向所述注册服务器提供数据, 以用于预测所述网络地址转换设备的供所述第一计算机从所述第二计算机的所预测的公共IP 端口接收数据的公共IP 端口的数据。
24.如权利要求23所述的用于通过一个或多个对称网络地址转换设备来与第二计算机通信的方法,进一步包括在发送所述第二数据包之后进入应用闲置状态;和接收来自所述注册服务器的使向所述注册服务器上的所述第三公共IP 端口发送所述第三数据包的命令。
25.如权利要求22所述的用于通过一个或多个对称网络地址转换设备来与第二计算机通信的方法,其中接收所述第二计算机的所预测的公共IP 端口包括接收所述第二计算机的多个预测的公共IP 端口组合;和其中进行向所述第二计算机的所述预测的公共IP 端口发送数据包的所述第一尝试包括进行向所述第二计算机的所述多个预测的公共IP 端口分别发送数据包的多个所述笛——兴计
26.如权利要求22所述的用于通过一个或多个对称网络地址转换设备来与第二计算机通信的方法,其中接收所述第二计算机的所预测的公共IP 端口包括接收所述第二计算机的多个预测的公共IP 端口组合;和其中进行向所述第二计算机的所预测的公共IP 端口发送数据包的所述第二尝试包括进行向所述第二计算机的所述多个公共IP 端口组合分别发送数据包的多个所述第二尝试中的一个或多个,直至接收到包接收确认或直至超时或直至达到重试限制。
27.如权利要求22所述的用于通过一个或多个对称网络地址转换设备来与第二计算机通信的方法,其中所述第一或第二数据包中的至少一个包含对应于会话标识的数据。
28.如权利要求22所述的用于通过一个或多个对称网络地址转换设备来与第二计算机通信的方法,进一步包括在所述第一和第二计算机之间建立至少一个通信链路。
29.如权利要求观所述的用于通过一个或多个对称网络地址转换设备来与第二计算机通信的方法,进一步包括进入所述第一和第二计算机之间的视频会议或数据传输且基本没有数据通过所述注册服务器中继。
30.如权利要求1所述的用于通过一个或多个对称网络地址转换设备来与第二计算机通信的方法,进一步包括预测所述第一网络地址转换资源上的一个或多个额外的公共IP地址和端口组合,所述第一计算机将从所述一个或多个额外的公共IP地址和端口组合来尝试与第三或更多计算机通信;预测一个或多个额外的公共IP地址和端口组合,所述第三或更多计算机将从所述一个或多个额外的公共IP地址和端口组合来尝试与所述第一计算机通信;向所述第一计算机发送一个或多个额外的命令,使其尝试向处于所述预测的一个或多个额外公共IP地址和端口组合的所述第三或更多计算机通信,所述第三或更多计算机将从所述预测的一个或多个额外公共IP地址和端口组合来尝试与所述第一计算机通信;和向所述第三或更多计算机发送一个或多个额外的命令,使其尝试向处于所述第一网络地址转换资源上的所述预测的一个或多个额外公共IP地址和端口组合的所述第一计算机通信,所述第一计算机将从所述预测的一个或多个额外公共IP地址和端口组合来尝试与所述第三或更多计算机通信。
31.如权利要求1所述的用于通过一个或多个对称网络地址转换设备来与第二计算机通信的方法,进一步包括预测所述第二网络地址转换资源上的一个或多个额外的公共IP地址和端口组合,所述第二计算机将从所述一个或多个额外的公共IP地址和端口组合来尝试与第三或更多计算机通信;预测一个或多个额外的公共IP地址和端口组合,所述第三或更多计算机将从所述一个或多个额外的公共IP地址和端口组合来尝试与所述第二计算机通信;向所述第二计算机发送使一个或多个额外的命令,使其尝试向处于所述预测的一个或多个额外公共IP地址和端口组合的所述第三或更多计算机通信,所述第三或更多计算机将从所述预测的一个或多个额外公共IP地址和端口组合来尝试与所述第二计算机通信; 和向所述第三或更多计算机发送一个或多个额外的命令,使其尝试向处于所述预测的一个或多个额外公共IP地址和端口组合的所述第二计算机通信,所述第二计算机将从所述预测的一个或多个额外公共IP地址和端口组合来尝试与所述第三或更多计算机通信。
32.如权利要求1所述的用于通过一个或多个对称网络地址转换设备来与第二计算机通信的方法,进一步包括预测所述第一网络地址转换资源上的一个或多个额外的公共IP地址和端口组合,所述第一计算机将从所述一个或多个额外的公共IP地址和端口组合来尝试与第三或更多计算机通信;预测一个或多个额外的公共IP地址和端口组合,所述第三或更多计算机将从所述一个或多个额外的公共IP地址和端口组合来尝试与所述第一计算机通信;预测一个或多个额外的公共IP地址和端口组合,所述第二计算机将从所述一个或多个额外的公共IP地址和端口组合来尝试与第三或更多计算机通信;向所述第一计算机发送一个或多个额外的命令,使其尝试向处于所述预测的一个或多个额外公共IP地址和端口组合的所述第三或更多计算机通信,所述第三或更多计算机将从所述预测的一个或多个额外公共IP地址和端口组合来尝试与所述第一计算机通信;向所述第二计算机发送一个或多个额外的命令,使其尝试向处于所述预测的一个或多个额外公共IP地址和端口组合的所述第三或更多计算机通信,所述第三或更多计算机将从所述预测的一个或多个额外公共IP地址和端口组合来尝试与所述第二计算机通信;向所述第三或更多计算机发送一个或多个额外的命令,使其尝试向处于所述第一网络地址转换资源上的所述预测的一个或多个额外公共IP地址和端口组合的所述第一计算机通信,所述第一计算机将从所述预测的一个或多个额外公共IP地址和端口组合来尝试与所述第三或更多计算机通信;和向所述第三或更多计算机发送使一个或多个额外的命令,使其尝试向处于所述预测的一个或多个额外公共IP地址和端口组合的所述第二计算机通信,所述第二计算机将从所述预测的一个或多个额外公共IP地址和端口组合来尝试与所述第三或更多计算机通信。
33.一种视频会议或数据传输系统,包括具有配置为从第一和第二计算机分别接收第一数据包的第一 IP地址和端口组合的第一注册服务器;具有配置为从第一和第二计算机分别接收第二数据包的第二 IP地址和端口组合的第二注册服务器;配置为预测至少一个第三公共IP地址和端口组合的第三注册服务器,所述至少一个第三公共IP地址和端口组合不同于所述第一计算机之前从其发送所述第一和第二数据包的地址和端口组合,所述第一计算机将通过所述至少一个第三公共IP地址组合尝试与所述第二计算机通信;配置为预测至少一个第四公共IP地址和端口组合的第四注册服务器,所述第二计算机将通过所述至少一个第四公共IP地址和端口组合尝试与所述第一计算机通信;配置为向所述第一计算机发送数据包的第五注册服务器,所述数据包被选来使得所述第一计算机尝试向处于所述第四IP地址和端口组合的所述第二计算机发送数据包;和配置为向所述第二计算机发送数据包的第六注册服务器,所述数据包被选来使得所述第二计算机尝试向处于所述第三IP地址和端口组合的所述第一计算机发送数据包。
34.如权利要求33所述的视频会议或数据传输系统,其中所述第一、第二、第三、第四、 第五和第六注册服务器中的两个或更多为同一注册服务器。
35.如权利要求33所述的视频会议或数据传输系统,其中所述第三注册服务器配置为通过以下方式预测至少一个第三公共IP地址和端口组合确定所述第一和第二地址和端口组合之间的差;和基于所述第二 IP地址和端口组合来进行推断,以预测所述第三IP地址和端口组合,其与所述第二 IP地址和端口组合之间的差为所述第二与第一 IP地址和端口组合之间的差的函数。
36.如权利要求35所述的视频会议或数据传输系统,其中所述函数为等值的。
37.如权利要求36所述的视频会议或数据传输系统,其中所述第五和第六注册服务器进一步配置为将使多次尝试从所述第二和第一计算机向所述第二和第一计算机分别发送数据包的命令封装进发送到所述第一和第二计算机的数据包中。
38.如权利要求36所述的视频会议或数据传输系统,其中,基于响应于所述第五和第六注册服务器所发的命令而建立至少一个通信链路,所述第一和第二计算机配置为无需所述第一、第二、第三、第四、第五和第六注册服务器,向对方发送和从对方接收音频包、视频包、数据包、音频和视频包、音频和数据包、视频和数据包、或音频,视频和数据包。
39.如权利要求38所述的视频会议或数据传输系统,其中,所述第一和第二注册服务器进一步配置为接收来自第三或更多计算机的一系列通信,且该系统进一步包括第七注册服务器,配置为预测至少一个第六公共IP地址和端口组合,所述至少一个第六公共IP地址组合不同于所述第一计算机之前从其发送所述第一和第二数据包的地址和端口组合,所述第一计算机将通过所述至少一个第六公共IP地址组合尝试与所述第三或更多计算机通信;第八注册服务器,其配置为预测至少一个第七公共IP地址和端口组合,所述第三或更多计算机将通过所述至少一个第七公共IP地址和端口组合尝试与所述第一计算机通信;配置为向所述第一计算机和所述第三或更多计算机发送数据包的相应注册服务器,所述数据包被选来使得所述第一计算机尝试向处于所述至少一个第七IP地址和端口组合的所述第三或更多计算机发送数据包,以及使得所述第三或更多计算机尝试向处于所述至少一个第六IP地址和端口组合的所述第一计算机发送数据包。
40.如权利要求39所述的视频会议或数据传输系统,其中所述各注册服务器为同一注册服务器。
41.如权利要求39所述的视频会议或数据传输系统,其中所述注册服务器配置为使得在所述第一、第二、和第三或更多计算机之间根据星型拓扑建立通信信道,其中所述第二和第三或更多计算机接收配置为使得所述第二和第三或更多计算机与所述第一计算机而非与彼此建立通信信道的数据包。
42.如权利要求41所述的视频会议或数据传输系统,其中所述第一或第二注册服务器进一步配置为指定所述第一计算机为主人计算机,并指定所述第二计算机和所述第三或更多计算机为来访者计算机。
43.如权利要求41所述的视频会议或数据传输系统,其中所述第一或第二注册服务器进一步配置为指定所述第二计算机为主人计算机,并指定所述第一计算机和所述第三或更多计算机为来访者计算机。
44.如权利要求39所述的视频会议或数据传输系统,其中所述注册服务器配置为使得在所述第一、第二、和第三或更多计算机之间根据星型拓扑建立通信信道,其中所述第一和第三或更多计算机接收配置为使得所述第一和第三或更多计算机与所述第二计算机而非与彼此建立通信信道的数据包。
45.如权利要求39所述的视频会议或数据传输系统,进一步包括注册服务器,其配置为使得在所述第一、第二、和第三或更多计算机之间根据网状拓扑建立通信信道,其中所述第二和第三或更多计算机接收配置为使得所述第二和第三或更多计算机与所述第一计算机和彼此建立通信信道的数据包。
46.如权利要求45所述的视频会议或数据传输系统,其中所述第一或第二注册服务器配置为指定所述第一或第二计算机中的一个为主人计算机,并指定所述第一计算机和第二计算机中的另一个和所述第三或更多计算机为来访者计算机。
47.如权利要求33所述的视频会议或数据传输系统,其中所述第一或第二注册服务器进一步配置为指定所述第一或第二计算机中的一个为主人计算机,并指定所述第一计算机和第二计算机中的另一个为来访者计算机。
48.一种用于在至少两个计算机之间建立连接的方法,包括分配第一客户端名和会话标识;在第一注册服务器的第一注册地址和端口 IPk 端口 κ,接收来自具有第一公共地址和端口 IP11 端口 η的第一客户端计算机的第一注册数据包,其中包括所述第一客户端名和会话标识;在接收所述第一注册数据包之后,迅速紧接地,在第二注册服务器的第二注册地址和端口 端口 Ν接收来自具有第二公共地址和端口 IP12 端口 12的所述第一客户端计算机的第一 NAT测试数据包;确定等于端口 12减端口 n的第一端口增量INCRpi ;在所述第一注册服务器的所述第一注册地址和端口 IPk 端口 κ,接收来自具有第三公共地址和端口 IP21 端口 21的第二客户端计算机的第二注册数据包,其中包括所述第一客户端名和会话标识;在接收所述第二注册数据包之后,迅速紧接地,在第二注册服务器的第二注册地址和端口 端口 N接收来自具有第四公共地址和端口 端口 &的所述第二客户端计算机的第二 NAT测试数据包;确定等于端口 22减端口 21的第二端口增量INCRp2 ;从所述注册服务器向所述第一客户端计算机发送第一命令,使其尝试连接到处于第五公共地址和端口 II322 端口 ^+INCRp2的所述第二客户端计算机;和从所述注册服务器向所述第二客户端计算机发送第二命令,使其尝试连接到处于第六公共地址和端口 IP12 端口 12+INCRP1的所述第一客户端计算机。
49.如权利要求48所述的用于在至少两个计算机之间建立连接的方法,其中所述第一公共地址IP11与所述第二公共地址IP12相同。
50.如权利要求48所述的用于在至少两个计算机之间建立连接的方法,其中所述第一命令包括使连续两次或更多次尝试连接到所述第五公共地址的命令;以及其中所述第二命令包括使连续两次或更多次尝试连接到所述第六公共地址的命令。
51.—种有形的计算机可读介质,其承载着使计算机进行以下操作的计算机可执行指令向注册服务器上的第一公共IP 端口发送第一数据包;在发送所述第一数据包之后,立即地,向所述注册服务器上的第二公共IP 端口发送第二数据包;接收所述第二计算机的预测的公共IP 端口 ;在接收到所述第二计算机的预测的公共IP 端口后,立即地,进行向所述第二计算机的所述预测的公共IP 端口发送数据包的第一尝试,所述发送数据的第一尝试配置为打开网络地址转换设备的公共IP 端口以供从所述第二计算机的所述预测的公共IP地址端口接收数据;和在进行所述第一尝试之后,进行向所述第二计算机的所述预测的公共IP 端口发送数据包的第二尝试。
52.如权利要求51所述的承载着计算机可执行指令的有形的计算机可读介质,进一步配置为使所述计算机在接收所述第二计算机的所预测的公共IP 端口之前,向所述注册服务器上的第三公共IP 端口发送第三数据包,所述第三数据包的发送配置为向所述注册服务器提供数据, 以用于预测所述网络地址转换设备的供所述第一计算机从所述第二计算机的所预测的公共IP 端口接收数据的公共IP 端口。
53.如权利要求52所述的承载着计算机可执行指令的有形的计算机可读介质,进一步配置为使所述计算机在发送所述第二数据包之后进入应用闲置状态;和接收来自所述注册服务器的命令,使其向所述注册服务器上的所述第三公共IP 端口发送所述第三数据包。
54.如权利要求51所述的承载着计算机可执行指令的有形的计算机可读介质,其中接收所述第二计算机的所预测的公共IP 端口包括接收所述第二计算机的多个预测的公共 IP 端口组合;和其中进行向所述第二计算机的所述预测的公共IP 端口发送数据包的所述第一尝试包括进行向所述第二计算机的所述多个预测的公共IP 端口分别发送数据包的多个所述笛——兴计
55.如权利要求51所述的承载着计算机可执行指令的有形的计算机可读介质,其中接收所述第二计算机的所预测的公共IP 端口包括接收所述第二计算机的多个预测的公共 IP 端口组合;和其中进行向所述第二计算机的所预测的公共IP 端口发送数据包的所述第二尝试包括进行向所述第二计算机的所述多个公共IP 端口组合分别发送数据包的多个所述第二尝试中的一个或多个,直至接收到包接收确认或直至超时或直至达到重试限制。
56.如权利要求51所述的承载着计算机可执行指令的有形的计算机可读介质,进一步配置为使得所述计算机将与会话标识相对应的数据封装进所述第一和第二数据包中的至少一个之中。
57.如权利要求51所述的承载着计算机可执行指令的有形的计算机可读介质,进一步配置为使得所述计算机在所述第一和第二计算机之间建立至少一个通信链路。
58.如权利要求57所述的承载着计算机可执行指令的有形的计算机可读介质,进一步配置为使得所述计算机进入所述第一和第二计算机之间的视频会议或数据传输,并基本不向所述注册服务器发送或通过所述注册服务器发送数据。
全文摘要
一种注册服务器和客户软件配置为在第一和第二计算机间建立通信,其中第一和第二计算机中的至少一个处于对称网络地址转换器之后。
文档编号G06F15/16GK102395959SQ201080016737
公开日2012年3月28日 申请日期2010年2月16日 优先权日2009年2月14日
发明者兰德.兰弗洛, 安东尼.拉尔森 史蒂芬, E.拉尔森 布莱恩, J.博科夫斯基 托马斯 申请人:必可视股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1