CN100521663C - 点对点通信中穿越网络地址转换的方法 - Google Patents
点对点通信中穿越网络地址转换的方法 Download PDFInfo
- Publication number
- CN100521663C CN100521663C CNB2006100768806A CN200610076880A CN100521663C CN 100521663 C CN100521663 C CN 100521663C CN B2006100768806 A CNB2006100768806 A CN B2006100768806A CN 200610076880 A CN200610076880 A CN 200610076880A CN 100521663 C CN100521663 C CN 100521663C
- Authority
- CN
- China
- Prior art keywords
- address
- receiving terminal
- originating end
- steps
- execution
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
一种点对点通信中穿越网络地址转换的方法,包括以下步骤:在步骤1中发起端将收集到的发起端IP地址/端口对及对应的优先级发送给接收端;在步骤2中接收端将收集到的接收端IP地址/端口对及对应的优先级发送给发起端;在步骤3中接收端对邀约消息中的每个发起端IP地址/端口对进行连接检查;发起端对回应消息中包括的每个接收端IP地址/端口对进行连接检查;在步骤4中接收端对邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查;发起端对回应消息中的STUN服务器分配的接收端IP地址/端口对进行连接检查。本发明能够降低TURN服务器的负担和带宽需求,且不需分析网络拓扑结构。
Description
技术领域
本发明涉及一种点对点通信中穿越网络地址转换的方法,特别涉及一种能够降低中继方式穿越网络地址转换的服务器的负担和带宽需求、且不需分析网络拓扑结构的点对点通信中穿越网络地址转换的方法。
背景技术
随着基于TCP/IP的互联网的普及,各种规模的局域网被大量组建应用,在这种局域网中,各个网络设备采用局域网的IP地址在局域网注册,连接组成相对独立和封闭的网络,这种网络一般称为私有网络(简称私网)。相对应的,互联网称为公网。私网中的网络设备使用私有IP地址,公网中的网络设备使用公有IP地址。为了使私网中的每个终端都可以访问私网外部的资源,通常在私网和公网之间使用网络地址转换(NETWORK ADDRESSTEANSLATION,简称NAT)来给请求访问公网的内部终端分配一个合法的公网IP地址和端口号,以实现对外部网络的访问。
NAT方法包括:
1、锥型NAT(CONE NAT)。在建立了(私有IP,私有port)和(公有IP,公有port)这个端口绑定之后,锥形NAT对来自同一个私有ip地址和端口的应用程序发起的一系列的会话进行端口重用,只要有一个会话还在,绑定的端口就保留。
2、完全锥型NAT(FULL CONE NAT)。在为一个向外的会话建立了公/私端口绑定之后,完全锥型NAT随后将接收来自公网上任何终端节点相应端口的输入通讯。完全锥型NAT有时也称为“混杂”(promiscuous)NAT。
3、限制锥型NAT(RESTRICTED CONE NAT)。限制锥型NAT仅仅在外部输入数据包的端口匹配内部主机曾经发给外部数据时使用的映射端口才转发给内部主机。限制锥型NAT精简采用了防火墙的原则,通过限制输入数据包为已知的外部IP地址,来拒绝一些外部的主动连接请求。
4、端口限制锥型NAT(PORT RESTRICTED CONE NAT)。对于端口限制锥型NAT,如果外部ip地址和端口匹配那些内部主机曾经向外发包在NAT上映射的端口,就将这个输入包转发给相应的内部主机。
5、对称型NAT(SYMMETRIC NAT)。对称NAT在内外网地址端口绑定时并不维护一致的绑定端口,而是给每一个新的会话分配一个新的端口。
从OSI参考模型的应用层来看,可认为网络是由工作站和服务器组成的,但从传输层和网络层的角度看,工作站和服务器没有本质的区别,它们都是连接到网络上的一台机器,都可以用网络地址或名称来代替。它们之间的通信,就是所谓的点对点通信,也叫对等通信。
当前的internet到处都设有NAT设备,这主要是由于IPv4的地址空间耗尽所引起的。然而,由NAT设备建立起来的非对称的连通体系给点对点通信的应用程序和协议(如电信会议和多人在线游戏)带来了独特的问题。当前的NAT设备主要是为了典型的客户端/服务器模型设计的,使匿名客户端来访问有固定IP地址的服务器。许多NAT设备完成了这种非对称连接。私有网络中的主机能够发出一个初始连接到公网主机,但是外部主机不能初始发出对内网主机的连接,除非由NAT设备的管理员配置过了。通常情况下,一个内网的客户端不具有在公网唯一的IP地址,而是和同在一个私有网络中的主机共享一个IP地址,这种共享由NAT设备来维护。这种对内网主机的匿名和不可访问性,对客户端软件比如web浏览器虽不是问题,因为客户端软件仅需要初始向外的连接,然而在点对点通信中,被视为客户端的终端要彼此直接建立连接会话。发起者和回应者也许在不同的NAT设备的后面,可能既没有固定的IP地址,也没有公共网络中其他的存在形式。例如,一个普通的在线游戏体系结构是参与主机来连接已知的服务器来初始化和其他的一些管理动作,主机间建立了直接的连接,以便游戏期间快速有效的更新。类似的,一个文件共享应用程序也是连接已知的服务器进行资源查找,但对数据传送则建立直接的连接。因此NAT设备对点对点通信的影响在于:NAT设备背后的主机没有在公网上永久可用的端口,以和其他的客户建立直接的连接。因此在点对点通信中,需要克服NAT设备造成的影响,实现对NAT设备的穿越,以建立通信连接。
现有技术中,为实现上述目的,通常采用以下方法:
1、UDP穿孔(UDP HOLE PUNCHING)方法。
该方法是从NAT设备所在的私网内的终端向外部网络中的终端发送UDP数据包,该数据包经过NAT设备时NAT设备保存其映射关系,以使从该外部网络中的终端发送的数据包能够通过该映射关系穿越该NAT设备,到达该私网内的终端。由于NAT设备的处理流程是非标准化的,因此该方法并不能应用于所有类型的NAT,只适用于锥型NAT、完全锥型NAT、限制锥型NAT、以及端口限制锥型NAT。
该方法的不足之处在于:必须分析点对点通信两端所在的网络的拓扑结构,针对不同的拓扑结构采取不同的处理步骤。
2、交互式连接建立(INTERACTIVE CONNECTIVITY ESTABLISHMENT,简称ICE)方法。
ICE定义的是一种标准化的方法,使点对点通信的两端能够确定两端之间存在的是哪一种类型的NAT设备,并且确定一连串可以用于实现连接的IP地址。通过使用多种协议及网络连接机制,如UDP简单穿越网络地址转换(SIMPLE TRAVERSAL OF USER DATAGRAM PROTOCOL ADDRESS TRANSLATION,简称STUN)机制、以及中继方式穿越网络地址转换(Traversal Using RelayNAT,简称TURN)机制,ICE可以学习客户端所在网络的拓扑结构以及这些设备可以实现通信的各类网络地址,当一个具备ICE功能的客户端(发起端)希望与另外一台客户端(接收端)通信时,它首先会从STUN、TURN等来源中收集尽可能多的IP地址信息,并在本地对那些地址进行配置,选择其中可以向客户端提供IP流量的地址。ICE的一项关键优势就是能够统一这些IP地址信息源提供的信息,并创建尽可能多的路径来连接自己的目的地。此时,发起的客户端通过这些地址连接至一台STUN服务器,并向所需要的接收端客户机发送一条启动信息。这条信息中包含先前学习到的所有可能的地址组合,并利用它们到达自己的目的地。当接收端收到启动信息后,它会通过这些地址向发起端发送一系列的STUN请求。通常情况下,由于沿途网络拓扑结构和NAT防火墙的缘故,接收端发出的STUN请求中至少会有一条到达发起端。当发起端接收到这些STUN请求后,它会逐条进行回复。如果一部分STUN请求能够穿透并抵达接收端,那么就表明发起端和接收端之间可以利用这部分地址进行通信。在此基础上,发起端和接收端还会利用启动信息中排序最高的那部分地址进行进一步的点对点通信。
参见图1所示的ICE方法流程图,包括以下步骤:首先发起端收集TURN/STUN服务器(同时设有TURN服务器和STUN服务器的服务器)分配给该发起端的所有IP地址/端口对及相应优先级,其中,以本地IP地址/端口对优先级最高,STUN服务器分配的IP地址/端口对优先级次之,TURN服务器分配的IP地址/端口对优先级最低;然后发起端将这些IP地址/端口对和相应的优先级以邀约消息的方式发送给接收端;接收端收到邀约消息后,收集所述TURN/STUN服务器分配给该接收端的所有IP地址/端口对及相应的优先级,然后将这些IP地址/端口对和相应优先级以回应消息的方式发送给所述发起端;继而接收端对所述邀约消息中的每个IP地址/端口对,检查其是否能够连接到所述发起端,并选取其中能够连接到所述发起端且优先级最高的IP地址/端口对,作为与所述发起端建立点对点通信连接的IP地址/端口对;而所述发起端也对所述回应消息中的每个IP地址/端口对,检查其是否能够连接到所述接收端,并选取其中能够连接到所述接收端且优先级最高的IP地址/端口对,作为与所述接收端建立点对点通信连接的IP地址/端口对。
该方法的不足之处在于:如果发起端处于限制锥型NAT设备或端口限制锥型NAT设备后,接收端检查所述邀约消息中的IP地址/端口对后,可能选取TUREN服务器为发起端分配的IP地址/端口对,作为与发起端建立点对点通信连接的IP地址/端口对,从而增加了TURN服务器的负担和带宽需求。
发明内容
本发明的目的是针对上述现有技术的不足,提供一种点对点通信中穿越网络地址转换的方法,对于限制锥型NAT设备或端口限制锥型NAT设备,能够减轻TURN服务器的负担和带宽需求,且不需分析网络拓扑结构。
为实现上述目的,本发明提供了一种点对点通信中穿越网络地址转换的方法,包括以下步骤:
步骤1、发起端收集包括STUN/TURN服务器分配给该发起端的IP地址/端口对在内的所有发起端IP地址/端口对,以及每个发起端IP地址/端口对对应的优先级,然后通过邀约消息将收集到的发起端IP地址/端口对及对应的优先级发送给接收端,其中,发起端本地的IP地址/端口对优先级最高,STUN服务器分配的IP地址/端口对优先级次之,TURN服务器分配的IP地址/端口对优先级最低;
步骤2、所述接收端收集包括STUN/TURN服务器分配给该接收端的IP地址/端口对在内的所有接收端IP地址/端口对,以及每个接收端IP地址/端口对对应的优先级,然后通过回应消息将收集到的接收端IP地址/端口对及对应的优先级发送给所述发起端,其中,接收端本地的IP地址/端口对优先级最高,STUN服务器分配的IP地址/端口对优先级次之,TURN服务器分配的IP地址/端口对优先级最低;
步骤3、所述接收端对所述邀约消息中包括的每个发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的IP地址/端口对,作为第一发起端IP地址/端口对;所述发起端对所述回应消息中包括的每个接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第一接收端IP地址/端口对;
步骤4、当所述接收端判断出所述第一发起端IP地址/端口对为TURN服务器分配的IP地址/端口对时,所述接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的发起端IP地址/端口对,作为第二发起端IP地址/端口对,并将所述第二发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对;当所述发起端判断出所述第一接收端IP地址/端口对为TURN服务器分配的IP地址/端口对时,所述发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第二接收端IP地址/端口对,并将所述第二接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对。上述步骤4中所述接收端的操作和所述发起端的操作是相互独立地进行,即可同时进行,也可先后进行,且先后次序可调换。
进一步地,所述步骤4可具体包括以下步骤:在步骤40中,所述接收端判断所述第一发起端IP地址/端口对是否为TURN服务器分配的IP地址/端口对,是则执行步骤41,否则执行步骤42;在步骤41中,所述接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的发起端IP地址/端口对,作为第二发起端IP地址/端口对,并将所述第二发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后执行步骤43;在步骤42中,所述接收端将所述第一发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对;在步骤43中,所述发起端判断所述第一接收端IP地址/端口对是否为TURN服务器分配的接收端IP地址/端口对,是则执行步骤44,否则执行步骤45;在步骤44中,所述发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第二接收端IP地址/端口对,并将所述第二接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后结束;在步骤45中,所述发起端将所述第一接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后结束。在所述步骤40之前还可包括步骤400,即为:所述接收端判断是否收到所述发起端发送的STUN请求消息,是则执行步骤40,否则继续执行步骤400。所述步骤41可具体包括以下步骤:在步骤410中,所述接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查,检查其中是否包括能够连接到所述发起端的发起端IP地址/端口对,是则执行步骤411,否则执行步骤42;在步骤411中,所述接收端选取所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对中的、能够连接到所述发起端的、且优先级最高的IP地址/端口对,作为第二发起端IP地址/端口对,并将所述第二发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后执行步骤43。在所述步骤44之前还可包括步骤430,即为:所述发起端判断是否收到所述接收端发送的STUN请求消息,是则执行步骤44,否则继续执行步骤430。所述步骤44可具体包括以下步骤:在步骤440中,所述发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查,检查其中是否包括能够连接到所述接收端的接收端IP地址/端口对,是则执行步骤441,否则执行步骤45;在步骤441中,所述发起端选取所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对中的、能够连接到所述接收端的、且优先级最高的IP地址/端口对,作为第二接收端IP地址/端口对,并将所述第二接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后结束。
进一步地,所述步骤4可具体包括以下步骤:在步骤40′中,所述发起端判断所述第一接收端IP地址/端口对是否为TURN服务器分配的接收端IP地址/端口对,是则执行步骤41′,否则执行步骤42′;在步骤41′中,所述发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第二接收端IP地址/端口对,并将所述第二接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后执行步骤43′;在步骤42′中,所述发起端将所述第一接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对;在步骤43′中,所述接收端判断所述第一发起端IP地址/端口对是否为TURN服务器分配的发起端IP地址/端口对,是则执行步骤44′,否则执行步骤45′;在步骤44′中,所述接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的发起端IP地址/端口对,作为第二发起端IP地址/端口对,并将所述第二发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后结束;在步骤45′中,所述接收端将所述第一发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后结束。在所述步骤40′之前还可包括步骤400′,即为:所述发起端判断是否收到所述接收端发送的STUN请求消息,是则执行步骤40′,否则继续执行步骤400′。所述步骤41′可具体包括以下步骤:在步骤410′中,所述发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查,检查其中是否包括能够连接到所述接收端的接收端IP地址/端口对,是则执行步骤411′,否则执行步骤42′;在步骤411′中,所述发起端选取所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对中的、能够连接到所述接收端的、且优先级最高的IP地址/端口对,作为第二接收端IP地址/端口对,并将所述第二接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后执行步骤43′。在所述步骤44′之前还可包括:步骤430′,即为:所述接收端判断是否收到所述发起端发送的STUN请求消息,是则执行步骤44′,否则继续执行步骤430′。所述步骤44′可具体包括以下步骤:在步骤440′中,所述接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查,检查其中是否包括能够连接到所述发起端的发起端IP地址/端口对,是则执行步骤441′,否则执行步骤45′;在步骤441′中,所述接收端选取所述邀约消息中包括的STUN服务器分配的IP地址/端口对中的、能够连接到所述发起端的、且优先级最高的IP地址/端口对,作为第二发起端IP地址/端口对,并将所述第二发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后结束。
为实现发明目的,本发明还提供了另外一种点对点通信中穿越网络地址转换的方法,包括以下步骤:
步骤A1、发起端收集包括STUN/TURN服务器分配给该发起端的IP地址/端口对在内的所有发起端IP地址/端口对,以及每个发起端IP地址/端口对对应的优先级,然后通过邀约消息将收集到的发起端IP地址/端口对及对应的优先级发送给接收端,其中,发起端本地的IP地址/端口对优先级最高,STUN服务器分配的IP地址/端口对优先级次之,TURN服务器分配的IP地址/端口对优先级最低;
步骤A2、所述接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的发起端IP地址/端口对,作为第三发起端IP地址/端口对;
步骤A3、所述接收端收集包括STUN/TURN服务器分配给该接收端的IP地址/端口对在内的所有接收端IP地址/端口对,以及每个接收端IP地址/端口对对应的优先级,然后通过回应消息将收集到的接收端IP地址/端口对及对应的优先级发送给所述发起端,其中,接收端本地的IP地址/端口对优先级最高,STUN服务器分配的IP地址/端口对优先级次之,TURN服务器分配的IP地址/端口对优先级最低;
步骤A4、所述发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第三接收端IP地址/端口对;
步骤A5、当接收端判断出已选取所述第三发起端IP地址/端口对时,所述接收端将所述第三发起端IP地址/端口对作为与所述发起端建立点对点通信连接的IP地址/端口对;当发起端判断出已选取所述第三接收端IP地址/端口对时,所述发起端将所述第三接收端IP地址/端口对作为与所述接收端建立点对点通信连接的IP地址/端口对。
进一步地,步骤A2中所述的接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查可具体包括:所述接收端将所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对作为目的IP地址/端口对,并向该目的IP地址/端口对发送UDP消息。步骤A4中所述的发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查可具体包括:所述发起端将所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对作为目的IP地址/端口对,并向该目的IP地址/端口对发送UDP消息。
在所述步骤A4与步骤A5之间还可包括步骤A401,即为:所述接收端对所述邀约消息中包括的每个发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的发起端IP地址/端口对,作为第四发起端IP地址/端口对;所述发起端对所述回应消息中包括的每个接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第四接收端IP地址/端口对。在步骤A401之后还可以包括步骤A402,即为:当接收端判断出未选取所述第三发起端IP地址/端口对时,所述接收端将所述第四发起端IP地址/端口对作为与所述发起端建立点对点通信连接的IP地址/端口对;当发起端判断出未选取第三接收端IP地址/端口对时,所述发起端将所述第四接收端IP地址/端口对作为与所述接收端建立点对点通信连接的IP地址/端口对。所述步骤A2可具体包括以下步骤:在步骤A20中,所述接收端检查所述邀约消息中是否包括STUN服务器分配的发起端IP地址/端口对,是则执行步骤A21,否则执行步骤A3;在步骤A21中,所述接收端选取所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对中的、能够连接到所述发起端的、且优先级最高的IP地址/端口对,作为第三发起端IP地址/端口对。所述步骤A4可具体包括以下步骤:在步骤A40中,所述发起端检查所述回应消息中是否包括STUN服务器分配的接收端IP地址/端口对,是则执行步骤A41,否则执行步骤A401;在步骤A41中,所述发起端选取所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对中的、能够连接到所述接收端的、且优先级最高的IP地址/端口对,作为第三接收端IP地址/端口对,然后执行步骤A5。
进一步地,所述步骤A402和步骤A5可具体包括以下步骤:在步骤A50中,所述接收端判断是否已选取所述第三发起端IP地址/端口对,是则执行步骤A51,否则执行步骤A52;在步骤A51中,所述接收端将所述第三发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后执行步骤A53;在步骤A52中,所述接收端将所述第四发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对;在步骤A53中,所述发起端判断是否已选取所述第三接收端IP地址/端口对,是则执行步骤A54,否则执行步骤A55;在步骤A54中,所述发起端将所述第三接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后结束;在步骤A55中,所述发起端将所述第四接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后结束。所述步骤A402和步骤A5也可具体包括以下步骤:在步骤A50′中,所述发起端判断是否已选取所述第三接收端IP地址/端口对,是则执行步骤A51′,否则执行步骤A52′;在步骤A51′中,所述发起端将所述第三接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后执行步骤A53′;在步骤A52′中,所述发起端将所述第四接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对;在步骤A53′中,所述接收端判断是否已选取所述第三发起端IP地址/端口对,是则执行步骤A54′,否则执行步骤A55′;在步骤A54′中,所述接收端将所述第三发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后结束;在步骤A55′中,所述接收端将所述第四发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后结束。
在上述技术方案中,通过在ICE方法中适当地增加对STUN服务器分配的IP地址/端口对进行连接检查,即向STUN服务器分配的IP地址/端口对发送UDP消息的步骤,从而有机地结合了UDP打洞方法和ICE方法,使得ICE方法中必须通过TURN服务器才能连接到对方的通信可不经过TURN服务器而到达对方,从而降低了TURN服务器的负担和带宽需求,并且不需要对网络拓扑进行分析。
由上述技术方案可知,本发明有机地结合了点对点通信中穿越NAT的UDP打洞方法和ICE方法,能够达到降低TURN服务器的负担和带宽需求、并且不需要对网络拓扑进行分析的有益效果。
附图说明
图1为现有技术中点对点通信穿越NAT的ICE方法的流程图;
图2为本发明具体实施例一的联网示意图;
图3为本发明具体实施例一的流程图;
图4为本发明具体实施例二的流程图;
图5为本发明具体实施例三的流程图;
图6为本发明具体实施例四的流程图;
图7为本发明具体实施例五的流程图;
图8为本发明具体实施例六的流程图。
具体实施方式
下面结合附图和实施例,对本发明的技术方案做进一步的详细描述。
参见图2所示的本发明具体实施例一的联网示意图,TURN/STUN服务器为同时设有TURN服务器端和STUN服务器端的服务器,该服务器位于公网;发起端和接收端分别位于各自所属的私网中,并通过NAT设备连接到公网;发起端设有STUN客户端和TURN客户端,接收端设有STUN客户端和TURN客户端;发起端和接收端均支持ICE方法。参见图3所示的本发明具体实施例一的流程图,一种点对点通信中穿越网络地址转换的方法,包括以下步骤:在步骤1中,发起端收集包括STUN/TURN服务器分配给该发起端的IP地址/端口对在内的所有发起端IP地址/端口对,以及每个发起端IP地址/端口对对应的优先级,其中,发起端本地的IP地址/端口对优先级最高,STUN服务器分配的IP地址/端口对优先级次之,TURN服务器分配的IP地址/端口对优先级最低,然后通过邀约消息将收集到的发起端IP地址/端口对及对应的优先级发送给接收端;在步骤2中,所述接收端收集包括STUN/TURN服务器分配给该接收端的IP地址/端口对在内的所有接收端IP地址/端口对,以及每个接收端IP地址/端口对对应的优先级,其中,接收端本地的IP地址/端口对优先级最高,STUN服务器分配的IP地址/端口对优先级次之,TURN服务器分配的IP地址/端口对优先级最低,然后通过回应消息将收集到的接收端IP地址/端口对及对应的优先级发送给所述发起端;在步骤3中,所述接收端对所述邀约消息中包括的每个发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的IP地址/端口对,作为第一发起端IP地址/端口对;所述发起端对所述回应消息中包括的每个接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第一接收端IP地址/端口对;在步骤4中,所述接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的发起端IP地址/端口对,作为第二发起端IP地址/端口对,并将所述第二发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对;所述发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第二接收端IP地址/端口对,并将所述第二接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对。本实施例通过在ICE方法中加入步骤4所述的操作过程,从而能够优选STUN服务器分配的IP地址/端口对,作为建立点对点通信连接的IP地址/端口对,有效地降低了TURN服务器的负荷。
参见图4所示的本发明具体实施例二的流程图,一种点对点通信中穿越网络地址转换的方法,包括以下步骤:在步骤1中,发起端收集包括STUN/TURN服务器分配给该发起端的IP地址/端口对在内的所有发起端IP地址/端口对,以及每个发起端IP地址/端口对对应的优先级,其中,发起端本地的IP地址/端口对优先级最高,STUN服务器分配的IP地址/端口对优先级次之,TURN服务器分配的IP地址/端口对优先级最低,然后通过邀约消息将收集到的发起端IP地址/端口对及对应的优先级发送给接收端;在步骤2中,所述接收端收集包括STUN/TURN服务器分配给该接收端的IP地址/端口对在内的所有接收端IP地址/端口对,以及每个接收端IP地址/端口对对应的优先级,其中,接收端本地的IP地址/端口对优先级最高,STUN服务器分配的IP地址/端口对优先级次之,TURN服务器分配的IP地址/端口对优先级最低,然后通过回应消息将收集到的接收端IP地址/端口对及对应的优先级发送给所述发起端;在步骤3中,所述接收端对所述邀约消息中包括的每个发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的IP地址/端口对,作为第一发起端IP地址/端口对;所述发起端对所述回应消息中包括的每个接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第一接收端IP地址/端口对;在步骤40中,所述接收端判断所述第一发起端IP地址/端口对是否为TURN服务器分配的IP地址/端口对,是则执行步骤41,否则执行步骤42;在步骤41中,所述接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的发起端IP地址/端口对,作为第二发起端IP地址/端口对,并将所述第二发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后执行步骤43;在步骤42中,所述接收端将所述第一发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对;在步骤43中,所述发起端判断所述第一接收端IP地址/端口对是否为TURN服务器分配的接收端IP地址/端口对,是则执行步骤44,否则执行步骤45;在步骤44中,所述发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第二接收端IP地址/端口对,并将所述第二接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后结束;在步骤45中,所述发起端将所述第一接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后结束。本实施例中,通过先判断步骤3中选择的IP地址/端口对是否为TURN服务器分配的IP地址/端口对,如果是则优选STUN服务器分配的IP地址/端口对,如果否则不需进一步优选,从而既有效地降低了TURN服务器的负荷,又避免了冗余操作。
上述具体实施例二中,在所述步骤40之前还可包括步骤400,即为:所述接收端判断是否收到所述发起端发送的STUN请求消息,是则执行步骤40,否则继续执行步骤400。所述步骤41可具体包括以下步骤:在步骤410中,所述接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查,检查其中是否包括能够连接到所述发起端的发起端IP地址/端口对,是则执行步骤411,否则执行步骤42;在步骤411中,所述接收端选取所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对中的、能够连接到所述发起端的、且优先级最高的IP地址/端口对,作为第二发起端IP地址/端口对,并将所述第二发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后执行步骤43。在所述步骤44之前还可包括步骤430,即为:所述发起端判断是否收到所述接收端发送的STUN请求消息,是则执行步骤44,否则继续执行步骤430。所述步骤44可具体包括以下步骤:在步骤440中,所述发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查,检查其中是否包括能够连接到所述接收端的接收端IP地址/端口对,是则执行步骤441,否则执行步骤45;在步骤441中,所述发起端选取所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对中的、能够连接到所述接收端的、且优先级最高的IP地址/端口对,作为第二接收端IP地址/端口对,并将所述第二接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后结束。
参见图5所示的本发明具体实施例三的流程图,一种点对点通信中穿越网络地址转换的方法,包括以下步骤:在步骤1中,发起端收集包括STUN/TURN服务器分配给该发起端的IP地址/端口对在内的所有发起端IP地址/端口对,以及每个发起端IP地址/端口对对应的优先级,其中,发起端本地的IP地址/端口对优先级最高,STUN服务器分配的IP地址/端口对优先级次之,TURN服务器分配的IP地址/端口对优先级最低,然后通过邀约消息将收集到的发起端IP地址/端口对及对应的优先级发送给接收端;在步骤2中,所述接收端收集包括STUN/TURN服务器分配给该接收端的IP地址/端口对在内的所有接收端IP地址/端口对,以及每个接收端IP地址/端口对对应的优先级,其中,接收端本地的IP地址/端口对优先级最高,STUN服务器分配的IP地址/端口对优先级次之,TURN服务器分配的IP地址/端口对优先级最低,然后通过回应消息将收集到的接收端IP地址/端口对及对应的优先级发送给所述发起端;在步骤3中,所述接收端对所述邀约消息中包括的每个发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的IP地址/端口对,作为第一发起端IP地址/端口对;所述发起端对所述回应消息中包括的每个接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第一接收端IP地址/端口对;在步骤40′中,所述发起端判断所述第一接收端IP地址/端口对是否为TURN服务器分配的接收端IP地址/端口对,是则执行步骤41′,否则执行步骤42′;在步骤41′中,所述发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第二接收端IP地址/端口对,并将所述第二接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后执行步骤43′;在步骤42′中,所述发起端将所述第一接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对;在步骤43′中,所述接收端判断所述第一发起端IP地址/端口对是否为TURN服务器分配的发起端IP地址/端口对,是则执行步骤44′,否则执行步骤45′;在步骤44′中,所述接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的发起端IP地址/端口对,作为第二发起端IP地址/端口对,并将所述第二发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后结束;在步骤45′中,所述接收端将所述第一发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后结束。
上述具体实施例三中,在所述步骤40′之前还可包括步骤400′,即为:所述发起端判断是否收到所述接收端发送的STUN请求消息,是则执行步骤40′,否则继续执行步骤400′。所述步骤41′可具体包括以下步骤:在步骤410′中,所述发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查,检查其中是否包括能够连接到所述接收端的接收端IP地址/端口对,是则执行步骤411′,否则执行步骤42′;在步骤411′中,所述发起端选取所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对中的、能够连接到所述接收端的、且优先级最高的IP地址/端口对,作为第二接收端IP地址/端口对,并将所述第二接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后执行步骤43′。在所述步骤44′之前还可包括:步骤430′,即为:所述接收端判断是否收到所述发起端发送的STUN请求消息,是则执行步骤44′,否则继续执行步骤430′。所述步骤44′可具体包括以下步骤:在步骤440′中,所述接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查,检查其中是否包括能够连接到所述发起端的发起端IP地址/端口对,是则执行步骤441′,否则执行步骤45′;在步骤441′中,所述接收端选取所述邀约消息中包括的STUN服务器分配的IP地址/端口对中的、能够连接到所述发起端的、且优先级最高的IP地址/端口对,作为第二发起端IP地址/端口对,并将所述第二发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后结束。
参见图6所示的本发明具体实施例四的流程图,一种点对点通信中穿越网络地址转换的方法,包括以下步骤:在步骤A1中,发起端收集包括STUN/TURN服务器分配给该发起端的IP地址/端口对在内的所有发起端IP地址/端口对,以及每个发起端IP地址/端口对对应的优先级,其中,发起端本地的IP地址/端口对优先级最高,STUN服务器分配的IP地址/端口对优先级次之,TURN服务器分配的IP地址/端口对优先级最低,然后通过邀约消息将收集到的发起端IP地址/端口对及对应的优先级发送给接收端;在步骤A2中,所述接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的发起端IP地址/端口对,作为第三发起端IP地址/端口对;在步骤A3中,所述接收端收集包括STUN/TURN服务器分配给该接收端的IP地址/端口对在内的所有接收端IP地址/端口对,以及每个接收端IP地址/端口对对应的优先级,其中,接收端本地的IP地址/端口对优先级最高,STUN服务器分配的IP地址/端口对优先级次之,TURN服务器分配的IP地址/端口对优先级最低,然后通过回应消息将收集到的接收端IP地址/端口对及对应的优先级发送给所述发起端;在步骤A4中,所述发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第三接收端IP地址/端口对;在步骤A5中,所述接收端将所述第三发起端IP地址/端口对作为与所述发起端建立点对点通信连接的IP地址/端口对;所述发起端将所述第三接收端IP地址/端口对作为与所述接收端建立点对点通信连接的IP地址/端口对。在本实施例中,通过在ICE方法中增加步骤A2和步骤A4所述的操作过程,从而首先优选STUN服务器分配的IP地址/端口对,进一步地简化了操作过程。
参见图7所示的本发明具体实施例五的流程图,一种点对点通信中穿越网络地址转换的方法,包括以下步骤:在步骤A1中,发起端收集包括STUN/TURN服务器分配给该发起端的IP地址/端口对在内的所有发起端IP地址/端口对,以及每个发起端IP地址/端口对对应的优先级,其中,发起端本地的IP地址/端口对优先级最高,STUN服务器分配的IP地址/端口对优先级次之,TURN服务器分配的IP地址/端口对优先级最低,然后通过邀约消息将收集到的发起端IP地址/端口对及对应的优先级发送给接收端;在步骤A20中,所述接收端检查所述邀约消息中是否包括STUN服务器分配的发起端IP地址/端口对,是则执行步骤A21,否则执行步骤A3;在步骤A21中,所述接收端选取所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对中的、能够连接到所述发起端的、且优先级最高的IP地址/端口对,作为第三发起端IP地址/端口对;在步骤A3中,所述接收端收集包括STUN/TURN服务器分配给该接收端的IP地址/端口对在内的所有接收端IP地址/端口对,以及每个接收端IP地址/端口对对应的优先级,其中,接收端本地的IP地址/端口对优先级最高,STUN服务器分配的IP地址/端口对优先级次之,TURN服务器分配的IP地址/端口对优先级最低,然后通过回应消息将收集到的接收端IP地址/端口对及对应的优先级发送给所述发起端;在步骤A40中,所述发起端检查所述回应消息中是否包括STUN服务器分配的接收端IP地址/端口对,是则执行步骤A41,否则执行步骤A401;在步骤A41中,所述发起端选取所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对中的、能够连接到所述接收端的、且优先级最高的IP地址/端口对,作为第三接收端IP地址/端口对,然后执行步骤A50;在步骤A401中,所述接收端对所述邀约消息中包括的每个发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的发起端IP地址/端口对,作为第四发起端IP地址/端口对;所述发起端对所述回应消息中包括的每个接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第四接收端IP地址/端口对;在步骤A50中,所述接收端判断是否已选取所述第三发起端IP地址/端口对,是则执行步骤A51,否则执行步骤A52;在步骤A51中,所述接收端将所述第三发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后执行步骤A53;在步骤A52中,所述接收端将所述第四发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对;在步骤A53中,所述发起端判断是否已选取所述第三接收端IP地址/端口对,是则执行步骤A54,否则执行步骤A55;在步骤A54中,所述发起端将所述第三接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后结束;在步骤A55中,所述发起端将所述第四接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后结束。在本实施例中,在首先优选STUN服务器分配的IP地址/端口对时,进一步地先判断是否存在STUN服务器分配的IP地址/端口对,并且根据连接检查的结果选择建立点对点通信连接的IP地址/端口对,从而既有效地降低了TURN服务器的负荷,又简化了操作过程,避免了冗余操作。
参见图8所示的本发明具体实施例六的流程图,一种点对点通信中穿越网络地址转换的方法,包括以下步骤:在步骤A1中,发起端收集包括STUN/TURN服务器分配给该发起端的IP地址/端口对在内的所有发起端IP地址/端口对,以及每个发起端IP地址/端口对对应的优先级,其中,发起端本地的IP地址/端口对优先级最高,STUN服务器分配的IP地址/端口对优先级次之,TURN服务器分配的IP地址/端口对优先级最低,然后通过邀约消息将收集到的发起端IP地址/端口对及对应的优先级发送给接收端;在步骤A20中,所述接收端检查所述邀约消息中是否包括STUN服务器分配的发起端IP地址/端口对,是则执行步骤A21,否则执行步骤A3;在步骤A21中,所述接收端选取所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对中的、能够连接到所述发起端的、且优先级最高的IP地址/端口对,作为第三发起端IP地址/端口对;在步骤A3中,所述接收端收集包括STUN/TURN服务器分配给该接收端的IP地址/端口对在内的所有接收端IP地址/端口对,以及每个接收端IP地址/端口对对应的优先级,其中,接收端本地的IP地址/端口对优先级最高,STUN服务器分配的IP地址/端口对优先级次之,TURN服务器分配的IP地址/端口对优先级最低,然后通过回应消息将收集到的接收端IP地址/端口对及对应的优先级发送给所述发起端;在步骤A40中,所述发起端检查所述回应消息中是否包括STUN服务器分配的接收端IP地址/端口对,是则执行步骤A41,否则执行步骤A401;在步骤A41中,所述发起端选取所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对中的、能够连接到所述接收端的、且优先级最高的IP地址/端口对,作为第三接收端IP地址/端口对,然后执行步骤A50′;在步骤401中,所述接收端对所述邀约消息中包括的每个发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的发起端IP地址/端口对,作为第四发起端IP地址/端口对;所述发起端对所述回应消息中包括的每个接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第四接收端IP地址/端口对;在步骤A50′中,所述发起端判断是否已选取所述第三接收端IP地址/端口对,是则执行步骤A51′,否则执行步骤A52′;在步骤A51′中,所述发起端将所述第三接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后执行步骤A53′;在步骤A52′中,所述发起端将所述第四接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对;在步骤A53′中,所述接收端判断是否已选取所述第三发起端IP地址/端口对,是则执行步骤A54′,否则执行步骤A55′;在步骤A54′中,所述接收端将所述第三发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后结束;在步骤A55′中,所述接收端将所述第四发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后结束。
上述具体实施例四、五、六中,步骤A2中所述的接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查可具体包括:所述接收端将所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对作为目的IP地址/端口对,并向该目的IP地址/端口对发送UDP消息。步骤A4中所述的发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查可具体包括:所述发起端将所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对作为目的IP地址/端口对,并向该目的IP地址/端口对发送UDP消息。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。
Claims (19)
1、一种点对点通信中穿越网络地址转换的方法,其特征在于,包括以下步骤:
步骤1、发起端收集包括STUN/TURN服务器分配给该发起端的IP地址/端口对在内的所有发起端IP地址/端口对,以及每个发起端IP地址/端口对对应的优先级,然后通过邀约消息将收集到的发起端IP地址/端口对及对应的优先级发送给接收端;
步骤2、所述接收端收集包括STUN/TURN服务器分配给该接收端的IP地址/端口对在内的所有接收端IP地址/端口对,以及每个接收端IP地址/端口对对应的优先级,然后通过回应消息将收集到的接收端IP地址/端口对及对应的优先级发送给所述发起端;
步骤3、所述接收端对所述邀约消息中包括的每个发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的IP地址/端口对,作为第一发起端IP地址/端口对;所述发起端对所述回应消息中包括的每个接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第一接收端IP地址/端口对;
步骤4、当所述接收端判断出所述第一发起端IP地址/端口对为TURN服务器分配的IP地址/端口对时,所述接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的发起端IP地址/端口对,作为第二发起端IP地址/端口对,并将所述第二发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对;当所述发起端判断出所述第一接收端IP地址/端口对为TURN服务器分配的IP地址/端口对时,所述发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第二接收端IP地址/端口对,并将所述第二接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对。
2、根据权利要求1所述的方法,其特征在于,所述步骤4具体包括:
步骤40、所述接收端判断所述第一发起端IP地址/端口对是否为TURN服务器分配的IP地址/端口对,是则执行步骤41,否则执行步骤42;
步骤41、所述接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的发起端IP地址/端口对,作为第二发起端IP地址/端口对,并将所述第二发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后执行步骤43;
步骤42、所述接收端将所述第一发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对;
步骤43、所述发起端判断所述第一接收端IP地址/端口对是否为TURN服务器分配的接收端IP地址/端口对,是则执行步骤44,否则执行步骤45;
步骤44、所述发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第二接收端IP地址/端口对,并将所述第二接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后结束;
步骤45、所述发起端将所述第一接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后结束。
3、根据权利要求2所述的方法,其特征在于,在所述步骤40之前还包括以下步骤:
步骤400、所述接收端判断是否收到所述发起端发送的STUN请求消息,是则执行步骤40,否则继续执行步骤400。
4、根据权利要求2或3所述的方法,其特征在于,所述步骤41具体包括以下步骤:
步骤410、所述接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查,检查其中是否包括能够连接到所述发起端的发起端IP地址/端口对,是则执行步骤411,否则执行步骤42;
步骤411、所述接收端选取所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对中的、能够连接到所述发起端的、且优先级最高的IP地址/端口对,作为第二发起端IP地址/端口对,并将所述第二发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后执行步骤43。
5、根据权利要求4所述的方法,其特征在于,在所述步骤44之前还包括以下步骤:
步骤430、所述发起端判断是否收到所述接收端发送的STUN请求消息,是则执行步骤44,否则继续执行步骤430。
6、根据权利要求5所述的方法,其特征在于,所述步骤44具体包括以下步骤:
步骤440、所述发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查,检查其中是否包括能够连接到所述接收端的接收端IP地址/端口对,是则执行步骤441,否则执行步骤45;
步骤441、所述发起端选取所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对中的、能够连接到所述接收端的、且优先级最高的IP地址/端口对,作为第二接收端IP地址/端口对,并将所述第二接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后结束。
7、根据权利要求1所述的方法,其特征在于,所述步骤4具体包括以下步骤:
步骤40′、所述发起端判断所述第一接收端IP地址/端口对是否为TURN服务器分配的接收端IP地址/端口对,是则执行步骤41′,否则执行步骤42′;
步骤41′、所述发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第二接收端IP地址/端口对,并将所述第二接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后执行步骤43′;
步骤42′、所述发起端将所述第一接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对;
步骤43′、所述接收端判断所述第一发起端IP地址/端口对是否为TURN服务器分配的发起端IP地址/端口对,是则执行步骤44′,否则执行步骤45′;
步骤44′、所述接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的发起端IP地址/端口对,作为第二发起端IP地址/端口对,并将所述第二发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后结束;
步骤45′、所述接收端将所述第一发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后结束。
8、根据权利要求7所述的方法,其特征在于,在所述步骤40′之前还包括以下步骤:
步骤400′、所述发起端判断是否收到所述接收端发送的STUN请求消息,是则执行步骤40′,否则继续执行步骤400′。
9、根据权利要求7或8所述的方法,其特征在于,所述步骤41′具体包括以下步骤:
步骤410′、所述发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查,检查其中是否包括能够连接到所述接收端的接收端IP地址/端口对,是则执行步骤411′,否则执行步骤42′;
步骤411′、所述发起端选取所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对中的、能够连接到所述接收端的、且优先级最高的IP地址/端口对,作为第二接收端IP地址/端口对,并将所述第二接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后执行步骤43′。
10、根据权利要求9所述的方法,其特征在于,在所述步骤44′之前还包括以下步骤:
步骤430′、所述接收端判断是否收到所述发起端发送的STUN请求消息,是则执行步骤44′,否则继续执行步骤430′。
11、根据权利要求10所述的方法,其特征在于,所述步骤44′具体包括以下步骤:
步骤440′、所述接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查,检查其中是否包括能够连接到所述发起端的发起端IP地址/端口对,是则执行步骤441′,否则执行步骤45′;
步骤441′、所述接收端选取所述邀约消息中包括的STUN服务器分配的IP地址/端口对中的、能够连接到所述发起端的、且优先级最高的IP地址/端口对,作为第二发起端IP地址/端口对,并将所述第二发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后结束。
12、一种点对点通信中穿越网络地址转换的方法,其特征在于,包括以下步骤:
步骤A1、发起端收集包括STUN/TURN服务器分配给该发起端的IP地址/端口对在内的所有发起端IP地址/端口对,以及每个发起端IP地址/端口对对应的优先级,然后通过邀约消息将收集到的发起端IP地址/端口对及对应的优先级发送给接收端;
步骤A2、所述接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的发起端IP地址/端口对,作为第三发起端IP地址/端口对;
步骤A3、所述接收端收集包括STUN/TURN服务器分配给该接收端的IP地址/端口对在内的所有接收端IP地址/端口对,以及每个接收端IP地址/端口对对应的优先级,然后通过回应消息将收集到的接收端IP地址/端口对及对应的优先级发送给所述发起端;
步骤A4、所述发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第三接收端IP地址/端口对;
步骤A5、当接收端判断出已选取所述第三发起端IP地址/端口对时,所述接收端将所述第三发起端IP地址/端口对作为与所述发起端建立点对点通信连接的IP地址/端口对;当发起端判断出已选取所述第三接收端IP地址/端口对时,所述发起端将所述第三接收端IP地址/端口对作为与所述接收端建立点对点通信连接的IP地址/端口对。
13、根据权利要求12所述的方法,其特征在于,步骤A2中所述的接收端对所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对进行连接检查具体包括:所述接收端将所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对作为目的IP地址/端口对,并向该目的IP地址/端口对发送UDP消息。
14、根据权利要求13所述的方法,其特征在于,步骤A4中所述的发起端对所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对进行连接检查具体包括:所述发起端将所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对作为目的IP地址/端口对,并向该目的IP地址/端口对发送UDP消息。
15、根据权利要求12所述的方法,其特征在于,所述步骤A4与A5之间还包括以下步骤:
步骤A401、所述接收端对所述邀约消息中包括的每个发起端IP地址/端口对进行连接检查,选取其中能够连接到所述发起端且优先级最高的发起端IP地址/端口对,作为第四发起端IP地址/端口对;所述发起端对所述回应消息中包括的每个接收端IP地址/端口对进行连接检查,选取其中能够连接到所述接收端且优先级最高的接收端IP地址/端口对,作为第四接收端IP地址/端口对;
步骤A402、当接收端判断出未选取所述第三发起端IP地址/端口对时,所述接收端将所述第四发起端IP地址/端口对作为与所述发起端建立点对点通信连接的IP地址/端口对;当发起端判断出未选取第三接收端IP地址/端口对时,所述发起端将所述第四接收端IP地址/端口对作为与所述接收端建立点对点通信连接的IP地址/端口对。
16、根据权利要求15所述的方法,其特征在于,所述步骤A2具体包括以下步骤:
步骤A20、所述接收端检查所述邀约消息中是否包括STUN服务器分配的发起端IP地址/端口对,是则执行步骤A21,否则执行步骤A3;
步骤A21、所述接收端选取所述邀约消息中包括的STUN服务器分配的发起端IP地址/端口对中的、能够连接到所述发起端的、且优先级最高的IP地址/端口对,作为第三发起端IP地址/端口对。
17、根据权利要求16所述的方法,其特征在于,所述步骤A4具体包括以下步骤:
步骤A40、所述发起端检查所述回应消息中是否包括STUN服务器分配的接收端IP地址/端口对,是则执行步骤A41,否则执行步骤A401;
步骤A41、所述发起端选取所述回应消息中包括的STUN服务器分配的接收端IP地址/端口对中的、能够连接到所述接收端的、且优先级最高的IP地址/端口对,作为第三接收端IP地址/端口对,然后执行步骤A5。
18、根据权利要求16或17所述的方法,其特征在于,所述步骤A402和步骤A5具体包括以下步骤:
步骤A50、所述接收端判断是否已选取所述第三发起端IP地址/端口对,是则执行步骤A51,否则执行步骤A52;
步骤A51、所述接收端将所述第三发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后执行步骤A53;
步骤A52、所述接收端将所述第四发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对;
步骤A53、所述发起端判断是否已选取所述第三接收端IP地址/端口对,是则执行步骤A54,否则执行步骤A55;
步骤A54、所述发起端将所述第三接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后结束;
步骤A55、所述发起端将所述第四接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后结束。
19、根据权利要求16或17所述的方法,其特征在于,所述步骤A402和步骤A5具体包括以下步骤:
步骤A50′、所述发起端判断是否已选取所述第三接收端IP地址/端口对,是则执行步骤A51′,否则执行步骤A52′;
步骤A51′、所述发起端将所述第三接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对,然后执行步骤A53′;
步骤A52′、所述发起端将所述第四接收端IP地址/端口对作为与所述接收端建立点对点通信连接的接收端IP地址/端口对;
步骤A53′、所述接收端判断是否已选取所述第三发起端IP地址/端口对,是则执行步骤A54′,否则执行步骤A55′;
步骤A54′、所述接收端将所述第三发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后结束;
步骤A55′、所述接收端将所述第四发起端IP地址/端口对作为与所述发起端建立点对点通信连接的发起端IP地址/端口对,然后结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100768806A CN100521663C (zh) | 2006-04-18 | 2006-04-18 | 点对点通信中穿越网络地址转换的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100768806A CN100521663C (zh) | 2006-04-18 | 2006-04-18 | 点对点通信中穿越网络地址转换的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1968226A CN1968226A (zh) | 2007-05-23 |
CN100521663C true CN100521663C (zh) | 2009-07-29 |
Family
ID=38076779
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100768806A Active CN100521663C (zh) | 2006-04-18 | 2006-04-18 | 点对点通信中穿越网络地址转换的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100521663C (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101179581B (zh) * | 2007-12-13 | 2010-06-09 | 北京邮电大学 | 一种采用ice中继候选地址进行媒体传输的方法 |
CN101227390B (zh) * | 2008-01-22 | 2011-10-26 | 中兴通讯股份有限公司 | 对网络地址转换的映射条目生成顺序实现优先级的方法 |
CN101242360B (zh) * | 2008-03-13 | 2010-12-01 | 中兴通讯股份有限公司 | 一种基于优先级队列的网络地址转换方法及系统 |
CN101286928B (zh) * | 2008-05-08 | 2012-05-02 | 蒋一 | 一种基于带宽保证技术实现p2p流媒体系统的方法 |
CN101437036B (zh) * | 2008-12-22 | 2012-08-29 | 北京中企开源信息技术有限公司 | 支持nat/防火墙穿越的文件传输方法和系统 |
WO2013067870A1 (zh) * | 2011-11-11 | 2013-05-16 | 中国移动通信集团公司 | 穿越中转服务器的方法以及相应的服务器、终端和系统 |
WO2014190487A1 (zh) * | 2013-05-28 | 2014-12-04 | 华为技术有限公司 | 一种会话连接建立的方法、装置和系统 |
CN104702565B (zh) * | 2013-12-05 | 2019-09-17 | 南京中兴新软件有限责任公司 | 媒体资源共享的方法、共享服务器及共享系统 |
CN103957287B (zh) * | 2014-04-25 | 2017-11-17 | 浙江大学城市学院 | 一种基于nat穿透适配器的物联网设备p2p连接方法 |
CN104052743A (zh) * | 2014-06-16 | 2014-09-17 | 华为技术有限公司 | 一种通信方法以及终端 |
CN105897761B (zh) * | 2016-06-15 | 2019-08-13 | 北京众享比特科技有限公司 | Ice服务方法、ice服务器及ice客户端 |
CN108234398B (zh) * | 2016-12-15 | 2021-01-08 | 中国电信股份有限公司 | 多媒体通信方法和系统以及相关设备 |
CN108063921A (zh) * | 2017-12-26 | 2018-05-22 | 天津天地人和企业管理咨询有限公司 | 一种嵌入式网络监控设备在p2p中的优化应用方法 |
CN109274735B (zh) * | 2018-09-11 | 2021-09-14 | 腾讯科技(深圳)有限公司 | 一种对等网络连接方法及相关设备 |
CN110113439B (zh) * | 2019-04-09 | 2020-09-22 | 华南理工大学 | 一种nat穿越的方法 |
-
2006
- 2006-04-18 CN CNB2006100768806A patent/CN100521663C/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN1968226A (zh) | 2007-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100521663C (zh) | 点对点通信中穿越网络地址转换的方法 | |
JP2020162146A (ja) | 仮想ネットワークにおける分散型フロー状態p2p設定のためのシステムおよび方法 | |
CN105827748B (zh) | 一种基于ICE的SIP穿越Symmetric NAT设备的方法 | |
US20040153858A1 (en) | Direct peer-to-peer transmission protocol between two virtual networks | |
US8457014B2 (en) | Method for configuring control tunnel and direct tunnel in IPv4 network-based IPv6 service providing system | |
CN100454905C (zh) | 穿越网络地址转换的方法 | |
US7739384B2 (en) | System and method for load balancing | |
CN103108089B (zh) | 网络系统的连线建立管理方法及其相关系统 | |
CN111435922B (zh) | 一种带宽共享方法 | |
CN101385315A (zh) | 使用本地网络的私用ip地址的通信 | |
US7558249B2 (en) | Communication terminal, and communication method | |
CN101895590A (zh) | 基于udt实现nat穿越的系统和方法 | |
EP1890424A1 (en) | A system and method for achieving the data communication | |
CN101321128B (zh) | 通信设备、通信网络系统和通信方法 | |
CN104601738B (zh) | 一种分布式网络地址转换系统 | |
CN101822026A (zh) | 经由网络地址转换单元在面向分组的通信终端设备之间建立连接的方法和装置 | |
KR20000076845A (ko) | Ip 데이터 전송 시스템의 다중 arp 기능 | |
EP2161881B1 (en) | Method for acquiring traversal resource, peer to peer node and peer to peer system | |
US9413653B2 (en) | Communication system and server | |
CN102067516A (zh) | 请求组播、处理组播请求及对其进行辅助的方法和装置 | |
Tseng et al. | Can: A context-aware NAT traversal scheme | |
CN100393039C (zh) | 无ip地址设备网管方法 | |
US20180262537A1 (en) | Communication method to maintain an application session between a terminal and an application server | |
CN101572729B (zh) | 一种虚拟专用网节点信息的处理方法及相关设备、系统 | |
CN105991629B (zh) | Tcp连接建立方法及装置 |
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 |