CN1863157A - 穿越nat实现网络通信的方法及装置 - Google Patents

穿越nat实现网络通信的方法及装置 Download PDF

Info

Publication number
CN1863157A
CN1863157A CN200510116785.XA CN200510116785A CN1863157A CN 1863157 A CN1863157 A CN 1863157A CN 200510116785 A CN200510116785 A CN 200510116785A CN 1863157 A CN1863157 A CN 1863157A
Authority
CN
China
Prior art keywords
nat
point
user terminal
port
communication
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.)
Pending
Application number
CN200510116785.XA
Other languages
English (en)
Inventor
何文彬
孙志斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN200510116785.XA priority Critical patent/CN1863157A/zh
Priority to PCT/CN2006/002869 priority patent/WO2007048344A1/zh
Publication of CN1863157A publication Critical patent/CN1863157A/zh
Priority to US12/110,656 priority patent/US7783768B2/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种穿越NAT实现网络通信的方法。本发明主要包括:当用户终端由于存在需要穿越NAT(网络地址转换)实体而无法直接通过点对点通信方式发起与对端用户终端通信时,则确定所述的需要穿越的NAT实体的类型信息;然后,根据确定NAT实体的类型信息采用与该NAT实体的类型信息对应的预先定义的点对点的通信方式与对端用户终端建立通信连接,并进行用户终端间的通信。本发明的实现使得穿越NAT进行通信过程中可以尽量采用点对点的通信方式,从而减少对服务器资源的占用,以有效节约网络运营的成本。本发明还在尝试建立点对点连接的过程中采用了相应的重传机制,以解决可能出现各种影响连接建立的因素时的连接建立问题。

Description

穿越NAT实现网络通信的方法及装置
技术领域
本发明涉及网络通信技术领域,尤其涉及一种穿越NAT实现网络通信的方法及装置。
背景技术
目前网络的P2P(点对点)通信技术不需要通过中转服务器直接实现点对点通信。在点对点通信过程中,对于处于两个不同NAT(网络地址转换)的客户端的连接的处理方式较为关键。具体来说就是要解决NAT/FW(网络地址转换和防火墙)的穿越问题,其中特别是Symmetric NAT(对称NAT),端口跳变或者是严格限制的NAT,双内网NAT应用场景的穿越成为了难题。
NAT是在internet IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT负责将某些内网IP地址的计算机向外部网络发出的IP数据包的源IP地址转换为NAT自己的公网的IP地址,目的IP地址不变,并将IP数据包转发给路由器,最终到达外部的计算机。同时,负责将外部的计算机返回的IP数据包的目的IP地址转换为内网的IP地址,源IP地址不变,并最终送达到内网中的计算机。
NAT分为两大类,基本的NAT和NAPT(Network Address/Port Translator,网络地址/端口转换)。基本的NAT会改变IP包中的原IP地址,但是不会改变IP包中的端口。NAPT不但会改变经过这个NAT设备的IP数据报的IP地址,还会改变IP数据报的TCP/UDP端口。通过NAPT上网的特点决定了只能由NAPT内的计算机主动向NAPT外部的主机发起连接,外部的主机想直接和NAPT内的计算机直接建立连接是不被允许的。
为解决上述穿越问题,目前采用最多的将是UDP hole punching(UDP打洞)技术。这一技术其实就是采取UDP HOLE PURING技术让处于ConeNAT(克隆NAT)的NAT的客户端实现双向的互联。该技术具体为:当用户请求与对端用户建立通信时,则首先由校验服务器根据保存的信息确定通信过程中需要穿越的网络是否为对称NAT、端口跳变、严格限制的NAT或者双内网的NAT,如果是,则直接通过服务器中转进行通信,否则,直接采用点对点的方式进行通信。
下面将分别对校验服务器的具体实体,以及UDP打洞技术进行说明。
其中,所述的校验服务采用的是STUN(Simple Traversal of UserDatagram Protocol(UDP)Through Network Address Translators(NATs),通过NATs简单穿越UDP)技术实现。所述的STUN协议由RFC 3489定义,其工作原理是通过STUN客户端与放置在公网上的服务器组通信,向客户端返回客户IP和地址,客户端通过多种情况下的反馈结果判断自己的位置。客户端获知自己所处的位置信息,便为实现相应穿越方案提供了基础。
下面再对现有的UDP hole punching技术进行说明。
首先,描述一下内网的路由地址映射关系表,其实每次当处于一个内网的某一台机器向外发数据的时候,实际上执行了内网IP地址和外IP地址+端口号的一个映射,简单的举例如下:
192.168.1.1(局域网)-----------------PORT1(外网);
192.168.1.2(局域网)-----------------PORT2(外网);
当通过192.168.1.2向外发数据的时候,数据报文的源地址实际上从192.168.1.2转化成外网的一个公共IP和临时分配PORT,如果是CONENAT那么将会保持原来的端口PORT2不变,如果是Symmetric NAT(对称NAT),端口将会发生跳变,但是,存在一个内网IP与外网端口间对应的路由关系。
进一步可以理解为:内部某台主机(比如:192.168.1.2)向外部的某个IP(比如:219.237.60.1)发送一个UDP包,那么就在这个内网的NAT设备上打了一个方向为219.237.60.1的“洞”,以后外部设备(219.237.60.1)就可以通过这个洞与内网的192.168.0.10联系了,但是其他内网的IP不能利用这个洞。
但如果两个客户端都处于Cone NAT中的设备下,则相应的通信过程如图1所示,具体的方式为:
首先,Client1登录服务器,NAT1为这次的Session(会话)分配了一个端口,比如60000,那么Server(服务器)收到的Client1的地址是202.187.45.3:60000,这就是Client1的外网地址了。同样,Client2登录Server,NAT2给此次Session分配的端口,比如40000,那么Server收到的Client2的地址是187.34.1.56:40000。
此时,Client1与Client2都可以与Server通信了。如果Client1此时想直接发送信息给Client2,那么他可以从Server那儿获得Client2的公网地址187.34.1.56:40000。此时,只要在NAT2上打一个方向为202.187.45.3(即Client1的外网地址)的洞,那么Client1发送到187.34.1.56:40000的信息,Client2就能收到了。
由于只有Server和Client2保持通信。所以,打洞操作需要由Server指示Client2发送。即,如果Client1想向Client2发送信息,那么Client1发送命令给Server,请求Server命令Client2向Client1方向打洞。
但是,以上过程只适合于Cone NAT的情况,如果是Symmetric NAT,则由于当Client2向Client1打洞的端口已经重新分配,因此,Client2将无法知道相应的端口信息,也就无法打洞。
从前面的介绍可以看出,对于以下几种情况,目前已经具有比较好的解决方案实现NAT穿越处理:
1、发送方、接收方至少有一方位于公网。
2、发送方、接收方都位于Cone NAT;具体包括Full Cone(全克隆)、IP Restricted Cone(IP限制克隆)、Port Restricted Cone(端口限制克隆)。
然而,对于表1所列的情况,则目前采用的方案一般都是通过服务器进行中转通信,而无法实现真正的P2P通信。
                      表1
  序号 发送方(Clien1)NAT类型 接收方(Clien2)NAT类型
  1 Symmetric NAT Symmetric NAT
2 Port Restricted Cone Symmetric NAT
  3 Symmetric NAT Port Restricted Cone
可以看出,采用上述技术穿越一般的Cone NAT是可以实现的,但是,这种技术无法穿越Symmetric(对称)NAT和端口严格限制的NAT。因此,UDP HOLE PUCHING仅是一种对内网NAT的简单穿越,具有很大的局限,使得其在处理端口限制的网络和对称NAT的时候,经常需要通过中转服务器实现,而不能直接实现点对点穿越。这种大量占用中转服务器资源进行中转通信服务的情况必然会提升网络运营的成本。
发明内容
本发明的目的是提供一种穿越NAT实现网络通信的方法及装置,从而使得在网络穿越NAT过程中可以尽量采用点对点的通信技术,以能将降低网络运营的成本。
本发明的目的是通过以下技术方案实现的:
本发明提供了一种穿越NAT实现网络通信的方法,包括:
A、当用户终端由于存在需要穿越网络地址转换NAT实体而无法直接通过点对点通信方式发起与对端用户终端通信时,则确定所述的需要穿越的NAT实体的类型信息;
B、根据确定NAT实体的类型信息采用与该NAT实体的类型信息对应的预先定义的点对点的通信方式与对端用户终端建立通信连接,并进行用户终端间的通信。
所述的NAT实体的类型包括:
第一类型:本端用户终端位于公网中,对端用户终端位于NAT下;或者,本端用户终端位于对称NAT中,对端用户终端处于完全克隆或IP限制的克隆NAT下;或者,本端用户终端处于完全克隆或IP限制的克隆NAT下,对端用户终端位于对称NAT中;
或者,
第二类型:本端用户终端位于对称NAT下,对端用户终端处于对称NAT或端口限制的克隆NAT下;或者,本端用户终端位于端口限制的克隆NAT下,对端用户终端位于对称NAT下。
所述的预先定义的点对点的通信方式包括:
由对端用户终端发起建立点对点通信过程的被动点对点通信方式,或者,由发起通信的用户终端通过多次尝试建立点对点通信连接。
所述的步骤B包括:
当所述的NAT类型为第一类型时,则在网络侧,采用由对端用户终端发起建立点对点通信过程的被动点对点通信方式在用户终端之间建立点到点的连接,并进行用户终端间的通信。
所述的步骤B包括:
当需要穿越的NAT实体为第二类型时,则采用由发起通信的用户终端通过多次尝试建立点对点通信连接的方式建立用户终端之间的点到点的连接,并进行用户终端之间的通信。
所述的步骤B具体包括:
在服务器侧,根据对端用户终端的对称NAT的端口跳变规律预测下一次可能跳变到的一个或一组端口,并通过相应的端口尝试与对端用户终端之间建立点对点的通信连接,直到建立相应的点对点的通信连接,并进行用户终端之间的点到点的通信。
所述的步骤B还包括:
B1、在服务器侧,令对端处于对称NAT下的用户终端向服务器维护的一组端口或检验服务器连续发送数据;
B2、服务器根据收到数据确定对应的端口信息,并根据所述端口信息确定所述对称NAT的跳变规律。
所述的跳变规律包括:
能够准确确定下一次可能跳变的端口的规律的跳变规律,能够确定下一次可能跳变的端口的范围信息的较规律的跳变规律,以及无法确定下一次可能跳变的端口信息的无规律的跳变规律。
所述的步骤B还包括:
B3、判断对端用户终端所在的对称NAT的端口跳变规律是否为无规律,如果是,更新所述对称NAT向服务器发送数据的端口,并执行步骤B1,否则,执行步骤B4;
B4、判断是否为较规律的跳变规律,如果是,则每次在当前端口值上增加预定的数值作为预测端口范围,进行点到点的通信连接尝试,否则,确定端口为规律跳变,并准确根据预测的下一次将跳变的端口进行点到点的通信连接尝试。
所述的步骤B3还包括:
判断端更新口的次数是否已经达到预定值,如果是,则通过服务器中转方式建立两用户终端之间的通信,否则,更新所述对称NAT向服务器发送数据的端口,并执行步骤B1。
所述的步骤B4还包括:
当在预定的连接尝试次数仍未连接成功时,则调整对端用户终端所在的对称NAT使用的端口信息,并执行步骤B1。
由上述本发明提供的技术方案可以看出,本发明的实现使得穿越NAT进行通信过程中可以尽量采用点对点的通信方式,从而减少对服务器资源的占用,以有效节约网络运营的成本。本发明还在尝试建立点对点连接的过程中采用了相应的重传机制,以解决可能出现各种影响连接建立的因素时的连接建立问题,例如,用户一台机器上启用多个实时通讯的应用,占用了对称NAT下一次跳变的端口,或者,网络繁忙,或者,UDP(用户数据报协议)丢包。
附图说明
图1为穿越NAT进行通信的系统结构示意图;
图2为本发明所述的方法的流程图;
图3为本发明采用端口尝试的方式进行点对点连接的过程示意图。
具体实施方式
本发明的核心是采取UDP hole punching技术结合Server tracker(服务器监听跟踪),以及UDP port number prediction(预测枚举对方端口)的方式来联合解决穿越过程存在的问题。也就是说,本发明对于端口限制的网络和对称NAT采用服务器协调及服务器端口猜测的方式,即当穿越NAT/FW一旦遇到端口被严格限制的NAT或者对称NAT时,首先尽量采取P2P穿越方式通信,如果在经过穿越尝试确定无法成功建立连接时,则采用中转服务器方式进行通信。
因此,本发明在实际运用中可以有效提高P2P连接的利用效率。
本发明中,PC(主机)客户端每次启动后,需要检测自己的接入网络的NAT类型,即确定所述接入网络是否是处于端口被严格限制的NAT或者是端口会跳变的NAT,以便于网络侧可以获取此信息,并根据该信息采取相应的通信处理方式实现客户端之间的通信。
为实现本发明,还需要通过服务器对客户端信息的管理。具体为:当所有客户端注册后,需要对他们注册的IP和端口进行维护,以便于可以有效识别出用户所在的网络类型,方便选择相应的通信处理方式。所述的管理包括:检错纠错管理,例如,因为网络不稳定,或者其他很多不确定因素,特别是处于Symmetric NAT(对称NAT)这种端口跳变的校园多级NAT或者企业网的情况,注册的端口不是很正规,有的时候是负数如(-12345),有的时候可能是(123&45),遇到这样的情况,在监听时,不能随便抛弃这些异常端口,而要对其做必要的修正处理,如(-12345)改为(12345),(123&45)去掉&改为12345。
本发明所述的穿越NAT实现网络通信的方法,主要是对用户终端由于存在需要穿越NAT实体而无法直接通过点对点通信方式发起与对端用户终端通信的情况进行处理。相应的具体处理方式如图2所示,包括:
步骤11:在服务器上根据其维护的用户终端(即客户端)信息确定所述的需要穿越的NAT实体的类型信息;
所述的实体类型包括:第一类型和第二类型。其中,第一类型包括:本端用户终端位于公网中,对端用户终端位于NAT下;或者,本端用户终端位于对称NAT中,对端用户终端处于完全克隆或IP限制的克隆NAT下;或者,本端用户终端处于完全克隆或IP限制的克隆NAT下,对端用户终端位于对称NAT中;第二类型包括:本端用户终端位于对称NAT下,对端用户终端处于对称NAT或端口限制的克隆NAT下;或者,本端用户终端位于端口限制的克隆NAT下,对端用户终端位于对称NAT下。
步骤12:根据所述的NAT实体的类型信息确定与该NAT实体的类型信息对应的预先定义的点对点的通信方式,如果是第一类型,则执行步骤13,如果是第二类型,则执行步骤14。
步骤13:当所述的NAT类型为第一类型时,则在网络侧,采用由对端用户终端发起建立点对点通信过程的被动点对点通信方式在用户终端之间建立点到点的连接,并进行用户终端间的通信。
步骤14:当需要穿越的NAT实体为第二类型时,则采用由发起通信的用户终端通过多次尝试建立点对点通信连接的方式建立用户终端之间的点到点的连接,并进行用户终端之间的通信。
本发明针对不同类型的NAT,分别提供了两种不同的实现点对点通信的方式。同时本发明对于可以通过现有技术的UDP打洞技术提供的建立点对点通信连接的情况,仍采用现有的建立点对点通信的方式(称为USU策略之1)进行通信。下面将分别对本发明提供的两种不同的点对点通信的方式进行说明。
首先,对第一种实现点对点通信的方式进行说明。
在该方式中(称为USU策略之2):通过刚开始让所有客户端预先登陆注册服务器的方式,服务器可以获取他们的网络状态信息,例如是外网还是内网络以及NAT的状态等。服务器侧根据获得的网络状态信息便可以进行点对点通信的协调处理,具体是将两个需要进行互相连接的客户端中处于容易被连接上的一个作为连接的目的方,而另一个客户端作为主叫发起方,以建立两客户端之间的点到点的通信连接。
例如,客户端1要主动连接客户端2,当服务器根据他们两者的网络状态,发现客户端1容易被连接,而客户端2不容易被连接,那么服务器就进行协调,让客户端2主动连接客户端1,但是在现实场景上还是让客户端1感觉仍然是由自己主动连接对方客户端,而实质上,发起连接的客户端已经不是主动连接方,而成为被连接方了。这样,显然可以解决相应应用场景下采用以往点到点通信方式无法建立通信连接的问题,使得在通信过程中可以更多地采用点对点的通信方式,从而减少对服务器资源的占用。
其次,再对第二种实现点对点通信的方式进行说明。
该第二种方式(称为USU策略之3)的实现是为了解决对称NAT和端口被严格限制的NAT,例如,当客户端1检测到连接的目地方客户端2是对称NAT,而本身也是对称NAT或者端口被严格限制的NAT,此时,显然已经无法采用第一种实现点对点通信的方式建立两客户端的点对点的通信连接。
在该方式中:当客户端1再次向服务器申请时,由服务器要求客户端2向自己维护的一组本机的端口或者维护的一组不同外网主机的检验服务器连续发数据,然后,服务器根据收到的端口信息,分析客户端2的端口跳变类型,所述的端口跳变类型包括:跳变规律,跳变比较规律,以及跳变没有任何规律三种情况。
服务器针对这上述三种情况将分别调用自己的分析函数予以分析。
1、跳变规律的情况
如果是跳变规律的对称NAT,则一定是N+1,N+2,N+N........,这样,能够通过轻松的获取对方下一次的跳变数值,然后服务器将这个预测到的数值,发送给客户端2,要求他向自己NAT上根据下一次可能的端口进行打洞,预先建立隧道,服务器也向客户端1发消息,要求他向服务器猜测的,并且客户端2已经预先打洞的端口发数据包,建立连接.具体举实例如下:
比如,NAT1(202.187.45.3)为Client1分配UDP端口62000,NAT2(187.34.1.56)为Client2分配UDP端口31000。通过与Server的对话,Client1和Client2都相互知道了对方所映射的公网IP和端口。Client1发送一条UDP消息到187.34.1.56:31001(端口号增加),同时Client2发送一条UDP消息到202.187.45.3:62001。如果NAT1和NAT2继续分配端口给新的会话,并且从A-S和B-S的会话时间消耗得并不多的话,那么一条处于Client1和Client2之间的双向会话通道就建立了。
2、跳变比较规律的情况
如果是跳变规律的对称NAT,服务器则采取线性逼近的策略进行分析
Symmetric NAT很多时候,是在原来(N)的基础上,直接每次+N,但是也有很多情况N不是固定。
比如,连接目的方的端口刚开始是3245,趋势是:
3245 3256 6788 9876 9978;
3245 1234 1232 1100 1000;
下面需要通过循环重发机制试探的方式猜测下次变化的端口。最简单的试探方式是从9978--65535发送UDP,这样基本可以保证连接成功,但是开销过大,在这个例子中就需要发送65535-9978=55557个数据包,显然不合适。即使是根据抓包分析,30000后的端口很少开,可以改进一下从9978--30000发送UDP,即使如此开销也仍然过大。
进一步优化,分析每次的递增趋势,比如:3245 3256 6788 9876 9978可以从后一次减去前一次的差值中得知变化不会超过一个固定的数,比如500,那么下一步发送9978~9978+500,共500个包进行试探。可以进一步改进每次以500递增,发送9978~9978+500,9978~9978+1000,9978~9978+1500,9978~9978+2000,9978~9978+2500......进行试探。因为是UDP的方式,发送后不管,因此开销不大,只要有一次,打中对方的端口,就以后连接稳定了。该策略可以称之为USU策略之3的线性逼近。
需要指出,由于网络的不稳定,更多连接不上的情况将是丢包,所以
for(i=9978...i=9978+500),
for(i=9978...i=9978+1000);
其实是后一次覆盖了前一次,这样的重发机制将比较好一点。
3、跳变没有任何规律的情况
如果是跳变没有任何规律的对称NAT,且尝试了几次都无法建立连接成功后,则直接采用中转服务器进行中转通信。
另外,在实际处理过程中,当尝试一次未建立点到点的通信连接时,还可以采用不同的重发机制,来提高建立连接的效率。通过重发机制可以有效克服点建立对点连接过程中可能出现的各种可能的影响连接建立的因素所带来的不利影响。
本发明中,当采用第二种建立点到点的通信连接的方式,即USU策略3中,对于symmetric NAT跳变的处理流程如图3所示,具体包括:
步骤21:作为发送方的Client1需要向作为接收端的Client2发送文件,即建立两方之间的连接,则Client1需要向Server(服务器)提出连接申请;
步骤22:Server要求Client2给不同的Server端口发送数据包,以便于根据接收的数据包对Client2所在的NAT进行端口跳变规律的分析;
步骤23:判断是否为无规律的端口跳变,如果是,则执行步骤210,否则,执行步骤24;
步骤24:判断是否为较规律的端口跳变,即加权值固定的跳变,如果是,则执行步骤28,否则,执行步骤25;
步骤25:确定Client2所在的NAT的端口跳变为规律跳变,则服务器要求Client2进行for(I=N,N+U)打洞,其中N为当前端口号,U为规律跳变的步长值,N+U为端口跳变后的准确值,以便于建立两方客户端之间的点对点的通信连接;
步骤26:当打洞成功后,服务器要求Client1连接Client2,执行步骤27;
步骤27:判断点对点的通信连接是否成功,如果成功,则连接建立的过程结束,否则,执行步骤29;
步骤28:服务器要求Client2进行N+M打洞,N为当前端口号,N+M为固定的端口跳变不会超过的端口数值,以便于建立两方客户端之间的点对点的通信连接,并执行步骤26;
步骤29:重新进行连接尝试,并判断重试是否已经达到了预定的X次,如果是,则执行步骤210,否则,执行步骤24;
步骤210:判断端口更新是否已经达到预定的Y次,如果是,则执行步骤211,否则,继续将Client2所在的对称NAT使用的端口进行更新,并执行步骤22;
步骤211:通过服务器中转方式建立两方之间的通信。
本发明在实际应用过程中,需要由服务器根据维护的发送方和接收方所处于的网络状态信息,确定具体采用上述哪一种方式实现客户端之间的点对点通信,下面将分别结合可能的情况进行说明。
首先,当通信的发起方与被叫方至少有一方位于公网时,则具体包括以下各种不同的具体情况:
1、两方客户端均位于公网中,此时,直连即可。
2、两方客户端中仅有一方位于私网中,则令处于私网的客户端主动连接位于公网的客户端。
具体的处理方式如表2所示:
                        表2
  序号   发送方(Clien1)NAT类型   接收方(Clien2)NAT类型   服务器策略
  1   公网   公网   通知client1直连Client2
  2   公网   UDP blocked   USU策略之2通知Client2采用TCP方式反向连接Client1
  3   公网   各种NAT   USU策略之2通知Client2采用UDP方式反向连接Client1
  4   UDP blocked   公网   通知Client1采用TCP方式连接Client2
  5   各种NAT   公网   通知Client1采用UDP方式连接Client2
其次,如果双方客户端都位于私网中,则具体包括以下情况:
1、如果两方客户端中的一方位于UDP Blocked(UDP限制)的网络,则只能采用服务器中转的方式实现双方通信;
2、如果双方都位于NAT网络中,则相应的处理方式如表3所示:
                                  表3
序号   发送方(Clien1)NAT类型   接收方(Clien2)NAT类型 服务器策略
1   Cone NAT(FullCone/完全克隆、RestrictedCone/IP限制克隆、Port Restricted Cone/端口限制克隆) Cone NAT(FullCone、Restricted Cone、PortRestricted Cone) USU策略之11)通知Client2向Client1的IP和Port发送消息2)通知Client1连接Client2
2 Full Cone  、RestrictedCone Symmetric NAT对称NAT   USU策略之21)通知Client1向Client2的IP和Port发送消息2)通知Cliient2反向连接Client1
3 Symmetric NAT Full Cone、RestrictedCone   USU策略之21)通知Client1向Client2的IP和Port发送消息2)通知Client2反向连接Client1
  4   Symmetric NAT   Symmetric NAT
  USU策略之3
5   PortRestrictedCone Symmetric NAT USU策略之3
6 Symmetric NAT   PortRestrictedCone USU策略之3
通过上述本发明提供的技术方案,使得在客户端之间进行通信过程中,能够尽可能地不使用中转服务器,而采用点到点的直接通信方式,从而减少通过过程对服务器资源的占用,进而节点网络运营成本。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (11)

1、一种穿越NAT实现网络通信的方法,其特征在于,包括:
A、当用户终端由于存在需要穿越网络地址转换NAT实体而无法直接通过点对点通信方式发起与对端用户终端通信时,则确定所述的需要穿越的NAT实体的类型信息;
B、根据确定NAT实体的类型信息采用与该NAT实体的类型信息对应的预先定义的点对点的通信方式与对端用户终端建立通信连接,并进行用户终端间的通信。
2、根据权利要求1所述的穿越NAT实现网络通信的方法,其特征在于,所述的NAT实体的类型包括:
第一类型:本端用户终端位于公网中,对端用户终端位于NAT下;或者,本端用户终端位于对称NAT中,对端用户终端处于完全克隆或IP限制的克隆NAT下;或者,本端用户终端处于完全克隆或IP限制的克隆NAT下,对端用户终端位于对称NAT中;
或者,
第二类型:本端用户终端位于对称NAT下,对端用户终端处于对称NAT或端口限制的克隆NAT下;或者,本端用户终端位于端口限制的克隆NAT下,对端用户终端位于对称NAT下。
3、根据权利要求1或2所述的穿越NAT实现网络通信的方法,其特征在于,所述的预先定义的点对点的通信方式包括:
由对端用户终端发起建立点对点通信过程的被动点对点通信方式,或者,由发起通信的用户终端通过多次尝试建立点对点通信连接。
4、根据权利要求3所述的穿越NAT实现网络通信的方法,其特征在于,所述的步骤B包括:
当所述的NAT类型为第一类型时,则在网络侧,采用由对端用户终端发起建立点对点通信过程的被动点对点通信方式在用户终端之间建立点到点的连接,并进行用户终端间的通信。
5、根据权利要求3所述的穿越NAT实现网络通信的方法,其特征在于,所述的步骤B包括:
当需要穿越的NAT实体为第二类型时,则采用由发起通信的用户终端通过多次尝试建立点对点通信连接的方式建立用户终端之间的点到点的连接,并进行用户终端之间的通信。
6、根据权利要求5所述的穿越NAT实现网络通信的方法,其特征在于,所述的步骤B具体包括:
在服务器侧,根据对端用户终端的对称NAT的端口跳变规律预测下一次可能跳变到的一个或一组端口,并通过相应的端口尝试与对端用户终端之间建立点对点的通信连接,直到建立相应的点对点的通信连接,并进行用户终端之间的点到点的通信。
7、根据权利要求6所述的穿越NAT实现网络通信的方法,其特征在于,所述的步骤B还包括:
B1、在服务器侧,令对端处于对称NAT下的用户终端向服务器维护的一组端口或检验服务器连续发送数据;
B2、服务器根据收到数据确定对应的端口信息,并根据所述端口信息确定所述对称NAT的跳变规律。
8、根据权利要求7所述的穿越NAT实现网络通信的方法,其特征在于,所述的跳变规律包括:
能够准确确定下一次可能跳变的端口的规律的跳变规律,能够确定下一次可能跳变的端口的范围信息的较规律的跳变规律,以及无法确定下一次可能跳变的端口信息的无规律的跳变规律。
9、根据权利要求8所述的穿越NAT实现网络通信的方法,其特征在于,所述的步骤B还包括:
B3、判断对端用户终端所在的对称NAT的端口跳变规律是否为无规律,如果是,更新所述对称NAT向服务器发送数据的端口,并执行步骤B1,否则,执行步骤B4;
B4、判断是否为较规律的跳变规律,如果是,则每次在当前端口值上增加预定的数值作为预测端口范围,进行点到点的通信连接尝试,否则,确定端口为规律跳变,并准确根据预测的下一次将跳变的端口进行点到点的通信连接尝试。
10、根据权利要求9所述的穿越NAT实现网络通信的方法,其特征在于,所述的步骤B3还包括:
判断端更新口的次数是否已经达到预定值,如果是,则通过服务器中转方式建立两用户终端之间的通信,否则,更新所述对称NAT向服务器发送数据的端口,并执行步骤B1。
11、根据权利要求9所述的穿越NAT实现网络通信的方法,其特征在于,所述的步骤B4还包括:
当在预定的连接尝试次数仍未连接成功时,则调整对端用户终端所在的对称NAT使用的端口信息,并执行步骤B1。
CN200510116785.XA 2005-10-28 2005-10-28 穿越nat实现网络通信的方法及装置 Pending CN1863157A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN200510116785.XA CN1863157A (zh) 2005-10-28 2005-10-28 穿越nat实现网络通信的方法及装置
PCT/CN2006/002869 WO2007048344A1 (fr) 2005-10-28 2006-10-26 Procede d’etablissement de la connexion poste a poste, procede, dispositif et systeme de realisation de nat de traversee de communication reseau
US12/110,656 US7783768B2 (en) 2005-10-28 2008-04-28 Method for establishing peer-to-peer connection, method, apparatus and system for traversing NAT to realize network communication

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200510116785.XA CN1863157A (zh) 2005-10-28 2005-10-28 穿越nat实现网络通信的方法及装置

Publications (1)

Publication Number Publication Date
CN1863157A true CN1863157A (zh) 2006-11-15

Family

ID=37390487

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200510116785.XA Pending CN1863157A (zh) 2005-10-28 2005-10-28 穿越nat实现网络通信的方法及装置

Country Status (1)

Country Link
CN (1) CN1863157A (zh)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009000181A1 (fr) * 2007-06-27 2008-12-31 Huawei Technologies Co., Ltd. Procédé servant à acquérir des ressources transversales, un nœud pair à pair et un système pair à pair
WO2009129692A1 (zh) * 2008-04-21 2009-10-29 中国科学院计算技术研究所 一种系统终端设备建立nat穿越通道的方法
CN101883156A (zh) * 2010-06-22 2010-11-10 北京神州泰岳软件股份有限公司 穿越nat设备的方法
CN101883056A (zh) * 2010-07-23 2010-11-10 华南理工大学 基于udt和tcp中转实现nat穿越的系统和方法
CN101938532A (zh) * 2010-09-17 2011-01-05 北京神州泰岳软件股份有限公司 基于udp的穿越nat设备的方法及系统
CN101980508A (zh) * 2010-11-01 2011-02-23 深圳市鼎盛威电子有限公司 网络监控系统上的网络自适应运行模式
CN101527676B (zh) * 2008-12-19 2011-04-06 无锡云视界科技有限公司 一种nat打通方法
CN101599884B (zh) * 2008-06-02 2011-08-03 华硕电脑股份有限公司 在网络架构中的通信连接系统以及方法
CN102413158A (zh) * 2011-01-14 2012-04-11 中国林业科学研究院资源信息研究所 基于P2P的IP camera访问方法
CN101150513B (zh) * 2007-10-17 2013-03-27 中兴通讯股份有限公司 在动态可重用网络地址转换下实现点对点隧道协议应用层网关的方法
CN103002041A (zh) * 2012-12-17 2013-03-27 南京天溯自动化控制系统有限公司 一种处于nat环境下的设备的通信方法
CN104780215A (zh) * 2015-04-21 2015-07-15 广州多益网络科技有限公司 一种文件传输系统及其方法
CN104994184A (zh) * 2015-06-25 2015-10-21 北京广密华安科技有限公司 一种nat穿透方法和装置
CN105721570A (zh) * 2016-02-04 2016-06-29 福建星网锐捷通讯股份有限公司 数据点对点传输方法及装置
CN106612340A (zh) * 2015-10-22 2017-05-03 财团法人工业技术研究院 穿透网络位置转换器的方法及通信装置
CN107071039A (zh) * 2017-04-24 2017-08-18 深圳至上移动科技有限公司 一种私有数据云存储系统及私有数据云存储方法
CN107124478A (zh) * 2017-04-14 2017-09-01 上海小蚁科技有限公司 网络通信方法、装置及服务器
CN110062062A (zh) * 2019-04-29 2019-07-26 深圳梨享计算有限公司 一种获取nat上端口映射的方法及系统
WO2020248963A1 (zh) * 2019-06-11 2020-12-17 华为技术有限公司 一种建立端到端网络连接的方法、装置及网络系统

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8601140B2 (en) 2007-06-27 2013-12-03 Huawei Technologies Co., Ltd. Method for acquiring traversal resource, peer to peer node and peer to peer system
WO2009000181A1 (fr) * 2007-06-27 2008-12-31 Huawei Technologies Co., Ltd. Procédé servant à acquérir des ressources transversales, un nœud pair à pair et un système pair à pair
CN101150513B (zh) * 2007-10-17 2013-03-27 中兴通讯股份有限公司 在动态可重用网络地址转换下实现点对点隧道协议应用层网关的方法
WO2009129692A1 (zh) * 2008-04-21 2009-10-29 中国科学院计算技术研究所 一种系统终端设备建立nat穿越通道的方法
CN101599884B (zh) * 2008-06-02 2011-08-03 华硕电脑股份有限公司 在网络架构中的通信连接系统以及方法
CN101527676B (zh) * 2008-12-19 2011-04-06 无锡云视界科技有限公司 一种nat打通方法
CN101883156A (zh) * 2010-06-22 2010-11-10 北京神州泰岳软件股份有限公司 穿越nat设备的方法
CN101883056A (zh) * 2010-07-23 2010-11-10 华南理工大学 基于udt和tcp中转实现nat穿越的系统和方法
CN101883056B (zh) * 2010-07-23 2013-03-20 华南理工大学 基于udt和tcp中转实现nat穿越的方法
CN101938532A (zh) * 2010-09-17 2011-01-05 北京神州泰岳软件股份有限公司 基于udp的穿越nat设备的方法及系统
CN101938532B (zh) * 2010-09-17 2013-07-24 北京神州泰岳软件股份有限公司 基于udp的穿越nat设备的方法及系统
CN101980508A (zh) * 2010-11-01 2011-02-23 深圳市鼎盛威电子有限公司 网络监控系统上的网络自适应运行模式
CN102413158A (zh) * 2011-01-14 2012-04-11 中国林业科学研究院资源信息研究所 基于P2P的IP camera访问方法
CN103002041B (zh) * 2012-12-17 2015-06-17 南京天溯自动化控制系统有限公司 一种处于nat环境下的设备的通信方法
CN103002041A (zh) * 2012-12-17 2013-03-27 南京天溯自动化控制系统有限公司 一种处于nat环境下的设备的通信方法
CN104780215A (zh) * 2015-04-21 2015-07-15 广州多益网络科技有限公司 一种文件传输系统及其方法
CN104994184A (zh) * 2015-06-25 2015-10-21 北京广密华安科技有限公司 一种nat穿透方法和装置
CN106612340A (zh) * 2015-10-22 2017-05-03 财团法人工业技术研究院 穿透网络位置转换器的方法及通信装置
CN106612340B (zh) * 2015-10-22 2019-09-06 财团法人工业技术研究院 穿透网络位置转换器的方法及通信装置
CN105721570B (zh) * 2016-02-04 2019-06-25 福建星网锐捷通讯股份有限公司 数据点对点传输方法及装置
CN105721570A (zh) * 2016-02-04 2016-06-29 福建星网锐捷通讯股份有限公司 数据点对点传输方法及装置
CN107124478A (zh) * 2017-04-14 2017-09-01 上海小蚁科技有限公司 网络通信方法、装置及服务器
WO2018196643A1 (zh) * 2017-04-24 2018-11-01 广州国储科技有限公司 一种私有数据云存储系统及私有数据云存储方法
CN107071039A (zh) * 2017-04-24 2017-08-18 深圳至上移动科技有限公司 一种私有数据云存储系统及私有数据云存储方法
CN110062062A (zh) * 2019-04-29 2019-07-26 深圳梨享计算有限公司 一种获取nat上端口映射的方法及系统
CN110062062B (zh) * 2019-04-29 2021-11-05 庄奇东 一种获取nat上端口映射的方法及系统
WO2020248963A1 (zh) * 2019-06-11 2020-12-17 华为技术有限公司 一种建立端到端网络连接的方法、装置及网络系统
US12058096B2 (en) 2019-06-11 2024-08-06 Huawei Technologies Co., Ltd. Method and apparatus for establishing end-to-end network connection, and network system

Similar Documents

Publication Publication Date Title
CN1863157A (zh) 穿越nat实现网络通信的方法及装置
CN1158615C (zh) 对流媒体服务器实现负载均衡的方法和设备
CN101035270A (zh) 基于互联网络的对等视频监控方法
CN1856163A (zh) 一种具有会话边界控制器的通信系统及其传输信令的方法
CN1870514A (zh) 会话服务质量分析的实现方法
CN101064625A (zh) 一种穿越网络地址翻译网关对用户侧设备进行管理的方法
CN101056271A (zh) 穿越nat的方法及相应的通信终端和nat设备
CN1578278A (zh) 即时消息的传输系统
CN1941738A (zh) 客户端主应用部件与目标服务器间进行通信的装置和方法
CN1838636A (zh) 用于使数据包穿越网络地址转换装置的方法和装置
CN1595933A (zh) 对话控制装置、信息通信终端、服务器以及终端
CN1977499A (zh) 信息处理装置、气泡数据包发送方法以及程序
CN1518265A (zh) 消息变换装置及ip电话装置
CN1722729A (zh) 用于在异构网络之间通信的系统和方法
CN1968226A (zh) 点对点通信中穿越网络地址转换的方法
CN1870568A (zh) 实现网络地址转换/防火墙穿越的方法
CN1744572A (zh) 控制组播数据转发的交换设备及方法
CN1893391A (zh) 一种支持网络层安全穿越网络地址转换的方法
CN1716941A (zh) 用于建立双向对等通信链路的方法和呼叫服务器
CN1620034A (zh) 认证网关及其数据处理方法
CN1801822A (zh) 一种基于主机标识协议的对等网sip实现方法
CN1731740A (zh) 网络设备的管理方法及网络管理系统
US20070199062A1 (en) Apparatus and method for performing dynamic security in internet protocol (IP) system
CN1798139A (zh) 为不同网络终端提供多媒体服务的设备和方法
CN1665235A (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
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication