CN102055659A - 一种系统终端设备建立nat穿越通道的方法 - Google Patents
一种系统终端设备建立nat穿越通道的方法 Download PDFInfo
- Publication number
- CN102055659A CN102055659A CN2009102373246A CN200910237324A CN102055659A CN 102055659 A CN102055659 A CN 102055659A CN 2009102373246 A CN2009102373246 A CN 2009102373246A CN 200910237324 A CN200910237324 A CN 200910237324A CN 102055659 A CN102055659 A CN 102055659A
- Authority
- CN
- China
- Prior art keywords
- test
- data receiving
- terminal equipment
- system terminal
- test point
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种系统终端设备建立NAT穿越通道的方法,包括:呼叫方系统终端设备通过转发服务节点分别获取转发服务节点上的数据接收端口及网络地址、NAT设备上的数据接收端口及网络地址和系统终端设备上的数据接收端口及网络地址,并发送给被呼叫方的系统终端设备;被呼叫方的系统终端设备的数据发送端口向呼叫方系统终端设备分别并行进行直通测试、转发测试和穿越测试,获取呼叫方系统终端设备的接收数据端口的网络地址和端口;将被呼叫方的系统终端设备的数据接收的网络地址与端口发送给呼叫方系统终端设备。本发明考虑多级NAT下端到端通信的多样性,充分利用多级NAT所构成私网内的网络资源,可以在多种场景下实现NAT的穿越。
Description
技术领域
本发明涉及计算机网络通信技术领域,更具体地,本发明涉及一种系统终端设备建立NAT穿越通道的方法。
背景技术
众所周知由于IP地址有限以及分配上的不均匀,导致网络地址严重缺乏,从实际应用和部署上看,网络地址翻译(Network Address Translator,NAT)技术是解决IP地址不足情况下接入互联网的重要方法。随着个人信息设备的增多、网络接入设备的普及和网络技术的发展,越来越多的公司、团体和家庭希望将这些设备以网络的方式组织在一起,并接入互联网,但是出于安全的考虑,如何在网络上隐藏高安全等级的节点是很多公司面临的问题,在这种IP地址严重缺乏、设备组网互联需求迫切并且在大量安全隐患的情况下,通过NAT技术形成的单级或者多级私网结构接入互联网在实际部署中已经越来越普遍和流行。
NAT设备为NAT控制下的私有网络(简称私网)地址提供地址翻译功能,使得私网内的主机可以透明地访问外部网络地址,反向访问不可以,NAT下主机的私有网络地址在外部网络中是不可路由的,外部网络主机无法直接访问位于私网内的主机,而且私网内的主机之间在很多情况下也无法直接通信,这对很多主机部署在私网内的端到端通信带来了很多问题和挑战。
目前解决部署在私有网络中的主机通信问题的技术是NAT穿越技术,有不少研究团体、标准化组织都已做出了很多有意义的工作。目前常用的方法和技术有:应用程序网关(Application Lay Gate,ALG)、中继(Relaying)、反转连接(Connection Reversal)、穿洞(Hole Punching)技术等,也出现了像中间箱通信(Middle Box Communication)、简单UDP穿越NAT(SimpleTraversal of User Datagram Protocol Through NAT,STUN)、中继穿越NAT(Traversal Using Relay NAT,TURN)、交互连接建立(InteractiveConnectivity Establishment,ICE)等一系列提交IETF用来解决NAT穿越问题的标准或草案。
现有的这些技术、标准和草案都存在这样的问题:没有考虑多级NAT下的穿越问题,或者只是简单地使用中继的方式通过公网服务器进行转发实现穿越,或者是依赖NAT设备本身Hairpin特性利用穿洞技术实现,这显然是十分低效的,而且在很多场景下无法实现。没有考虑多级NAT下端到端通信的多样性,也没有充分利用多级NAT所构成私网内的网络资源。
发明内容
为克服现有NAT网络环境中转发穿越效率低并且测试速度慢的缺陷,本发明提出了一种系统终端设备建立NAT穿越通道的方法。
根据本发明的一个方面,提供了一种系统终端设备建立NAT穿越通道的方法,包括:
步骤1)、呼叫方系统终端设备通过转发服务节点分别获取转发服务节点上的数据接收端口及网络地址、及其层级信息、NAT设备上的数据接收端口及网络地址,并将转发服务节点上的数据接收端口及网络地址、NAT设备上的数据接收端口及网络地址和系统终端设备上的数据接收端口及网络地址送给被呼叫方的系统终端设备;
步骤2)、被呼叫方系统终端设备收到所述呼叫方系统终端设备发送的携带有呼叫方接收数据端口的网络地址和端口后的连接请求后,通过转发服务节点分别获取转发服务节点上的数据接收端口及网络地址、及其层级信息、NAT设备上的数据接收端口及网络地址;
步骤3)、并行执行被呼叫方的系统终端设备对于呼叫方的系统终端设备上的数据接收端口及网络地址的直通测试、呼叫方的转发服务节点上的数据接收端口及网络地址的转发测试以及呼叫方的NAT设备上的数据接收端口及网络地址的穿越测试,发送测试请求消息;
步骤4)、被呼叫方的系统终端设备在所述直通测试、转发及穿越测试进行中或者完成后,根据测定的数据传输路径和优先级,选择数据传输路径。
其中,所述系统终端设备包括:
路径完成状态记录装置,用于记录路径探测的完成状态;
直通测试单元执行状态记录装置,用于记录直通测试单元是否在执行;
转发及穿越测试单元执行状态记录装置,用于记录转发及穿越测试单元是否在执行;
完成优先级状态记录装置,用于记录当前完成状态是由直通测试单元还是转发及穿越测试单元完成;
所述测试请求消息中包括所述被呼叫方的转发服务节点上的数据接收测试点、系统终端设备上的数据接收测试点。
其中,步骤3)进一步包括:
步骤A20)、所述被呼叫方的系统终端设备通过自身的数据发送测试点向呼叫方的系统终端设备的自身的数据接收测试点发送直通测试请求;
步骤A21)、呼叫方的系统终端设备接收到直通测试请求消息后,进行直通测试,并返回应答消息;
步骤A22)、当所述应答消息未经过转发服务器,或者所述被呼叫方的系统终端设备通过自身的数据接收测试点向呼叫方系统终端设备强制测试点发出强制测试消息,所述被呼叫方的系统终端设备确认呼叫方接收数据端口的网络地址和端口,设置路径完成状态。
其中,步骤A20)中,所述被呼叫方在系统终端设备上的数据接收测试点等待返回消息。
其中,步骤A22)进一步包括:
步骤A220)、被呼叫方的系统终端设备获取返回消息,确认双方可以直通可达,以双方的系统终端设备上的数据接收测试点为各自接收地址,向呼叫方返回所述被呼叫方系统终端设备上的数据接收测试点,路径完成状态置位,完成优先级状态设为直通测试。
其中,步骤A22)进一步包括:
步骤A220)、被呼叫方的系统终端设备确认双方不可以直通可达,获取应答消息中的强制测试点,从系统终端设备上的数据接收测试点向强制测试点发送强制测试消息;
步骤A221)被呼叫方的系统终端设备的数据接收测试点收到所述返回的强制测试应答消息后,获取应答消息中的测试点,将其作为新的NAT设备上的数据接收测试点,向呼叫方的系统终端设备上的数据接收测试点发送穿越直通测试请求消息,所述穿越直通测试请求消息中包含新的NAT设备上的数据接收测试点;
步骤A222)、被呼叫方的系统终端设备获取返回消息,确认双方可以经过NAT设备转发的直通,以被呼叫方的系统终端设备的新的NAT设备上的数据接收测试点和呼叫方的系统终端设备的转发服务节点上的数据接收测试点为各自接收地址,记录接收对应关系,路径完成状态置位,完成优先级状态设为直通测试。
其中,步骤3)进一步包括:
步骤B20)、所述被呼叫方的系统终端设备通过自身的数据发送测试点向呼叫方转发服务节点上的数据接收测试点发起转发测试;
步骤B21)、呼叫方的系统终端设备接收到转发测试消息后,进行转发测试,并返回应答消息;
步骤B22)、当返回的应答消息中存在未经过转发点转发的应答消息,所述被呼叫方确定路径完成状态未置位后从系统终端设备的数据发送测试点向呼叫方转发服务节点上的数据接收测试点发送非对称转发测试请求;
步骤B23)、当返回的应答消息中不存在未经过转发点转发的应答消息,确认更新呼叫方的转发点,调整转发点,重新开始转发测试;如果没有新的转发点则开始穿越测试。
其中,步骤B20)中,所述转发测试的测试请求消息中包括所述被呼叫方的转发服务节点上的数据接收测试点、NAT设备上的数据接收测试点或者系统终端设备上的数据接收测试点、被呼叫方的转发服务节点上的数据接收测试点的层级信息,所述被呼叫方在系统终端设备的数据接收测试点等待返回消息。
其中,步骤B22)进一步包括:
判断测试未产生穿越测试点后,确认缓存的消息中有经过转发点转发的应答消息;确认更新呼叫方的转发点,调整转发点,重新开始转发测试。
其中,步骤B22)中,确定产生穿越测试点的步骤进一步包括:
步骤B220)、在被呼叫方的系统终端设备上的数据发送测试点上等待强制测试消息;
步骤B221)、获取携带强制测试消息的数据分组携带的源地址和源端口,并向所述源地址和端口返回包括所述源地址和端口的强制测试应答消息;
步骤B222)、被呼叫方的系统终端设备获取来自呼叫方的非对称转发测试请求的应答信息,用测试获得的呼叫方的系统终端设备的NAT设备上的数据接收测试点代替原来呼叫方的系统终端设备的NAT设备上的数据接收测试点。
其中,步骤B22)进一步包括:
步骤B220)、当缓存的消息中存在经过转发点转发的应答消息,获取返回消息中的路径信息和获取被呼叫方的转发服务节点添加的网络地址和端口,从被呼叫方的系统终端设备上的数据接收测试点向被呼叫方的转发服务节点添加的网络地址和端口发送穿洞消息;
步骤B221)、判断返回的应答消息中是否有呼叫方新的转发服务节点的数据接收测试点出现;
步骤B222)、如果有呼叫方新的转发服务节点的数据接收测试点出现,调整转发测试点,以获取的呼叫方新的转发服务节点的数据接收测试点代替原来的被呼叫方转发服务节点上的数据接收测试点,新的呼叫方的系统终端设备的NAT设备上的数据接收测试点代替原来的呼叫方的系统终端设备的NAT设备上的数据接收测试点;
步骤B223)、如果没有呼叫方新的转发服务节点的数据接收测试点出现,以双方的转发服务节点上的数据接收测试点为各自的数据接收地址,记录接收对应关系。
其中,步骤B23)进一步包括:
步骤B230)、当返回的应答消息中不存在未经过转发点转发的应答消息,获取返回消息中的路径信息和获取被呼叫方的转发服务节点添加的网络地址和端口,从被呼叫方的系统终端设备上的数据接收测试点向被呼叫方的转发服务节点添加的网络地址和端口发送穿洞消息;
步骤B231)、判断返回的应答消息中是否有呼叫方新的转发服务节点的数据接收测试点出现;
步骤B232)、如果有呼叫方新的转发服务节点的数据接收测试点出现,调整转发测试点,以获取的呼叫方新的转发服务节点的数据接收测试点代替原来的被呼叫方转发服务节点上的数据接收测试点,新的呼叫方的系统终端设备的NAT设备上的数据接收测试点代替原来的呼叫方的系统终端设备的NAT设备上的数据接收测试点;
步骤B233)、如果没有呼叫方新的转发服务节点的数据接收测试点出现,以双方的转发服务节点上的数据接收测试点为各自的数据接收地址,记录接收对应关系。
其中,步骤3)进一步包括:
步骤C20)、所述被呼叫方的系统终端设备的数据发送测试点向呼叫方NAT设备上的数据接收测试点发起NAT穿越测试;
步骤C21)、呼叫方的系统终端设备接收到NAT穿越测试消息后,进行NAT穿越测试,并返回应答消息;
步骤C22)、所述被呼叫方的系统终端设备根据所述应答消息并确定路径完成状态未置位后确定对于被呼叫方可用的呼叫方接收数据的网络地址和端口。
其中,步骤C22)进一步包括:
步骤C220)、被呼叫方在系统终端设备上的数据接收测试点等待应答消息;
步骤C221)、判断记录的接收对应关系中是否存在以双方转发服务节点上的数据接收测试点作为接收对应关系的记录;
步骤C222)、如果存在,以双方的NAT设备上的数据接收测试点作为各自的接收地址,建立接收对应关系,并记录所述接收对应关系;
步骤C223)、如果不存在,以被呼叫方的系统终端设备上的数据接收测试点和呼叫方的系统终端设备的NAT设备上的数据接收测试点作为各自的接收地址,建立接收对应关系,并记录所述接收对应关系。
其中,步骤4)进一步包括:
确定直通测试、转发及穿越测试停止;
确定检查数据传输路径测定;
根据优先级选择测定数据传输路径,如果路径完成优先级为直通测试单元,输出结果为直通测试单元探测的路径,如果路径完成优先级为转发和穿越测试单元,输出结果为转发和穿越测试单元探测的路径。
本发明考虑多级NAT下端到端通信的多样性,充分利用多级NAT所构成私网内的网络资源,可以在多种场景下实现NAT的穿越;该方法可以适用于全锥型、IP限制型、IP及端口限制型、对称型等基本NAT设备及其组合后构建的单层、多层网络环境。在同根多层NAT网络下,可以将数据流限制在私有网络中,从而减小骨干网络的压力;在测试过程中,通过直通测试和转发及穿越测试的并行执行,改变了转发测试要等待直通测试完成的情况。对于分处于不同的NAT设备后的用户终端来说,节省了等待直通测试完成的时间,提高了路径探测速度。在转发和穿越测试单元的转发测试、穿越测试流程的执行过程中,通过对路径完成状态的监测,可以根据路经实际测试结果,随时终止后续测试。不影响直通测试的效率。
附图说明
图1A是示出根据本发明实施例的同根多层NAT网络的示意图;
图1B是示出根据本发明实施例的测试方的总测试方法流程图;
图2是示出根据本发明实施例的测试方直通测试单元的流程图;
图3是示出根据本发明实施例的测试方转发测试流程图;
图4是示出根据本发明实施例的测试方穿越测试流程图;
图5是示出根据本发明实施例的检测各测试单元停止测试的流程图。
具体实施方式
下面结合附图和具体实施例,对本发明提供的一种系统终端设备建立NAT穿越通道的方法作进一步说明。
在同一申请人于2008年4月21日提出的申请号为200810104586.0的中国专利申请“一种系统终端设备建立NAT穿越通道的方法”中提出了一种位居NAT设备后的主机间建立数据通道的方法,该专利申请的技术内容通过引用全部包含在本申请中。
发明人对专利申请200810104586.0的方法进一步研究发现:穿越测试时,需要在转发测试的反向打洞操作后进行,而直通测试和转发测试间没有类似的操作要求。从而,在处于不同NAT设备后的终端请求通讯、位于NAT外部的终端向位于NAT内容的终端请求通讯的情况下,测试速度较慢。
图1A所示为本发明的方法所应用的同根多层NAT网络的结构示意图,一个私有网络4-1通过NAT设备1001接入公有网络3,一个私有网络4-2通过另一NAT设备1002接入私有网络4-1。通过NAT设备1001接入公有网络3的私有网络为该NAT设备控制的网络,通过NAT设备1002接入私有网络4-1的私有网络4-2为该NAT设备控制的网络。直接同公有网络3相连的NAT设备为根NAT设备。各私有网络到公有网络3经过的最少NAT设备的个数为该私有网络的层数,该路径为私有网络到公有网络3的最短路径。私有网络到公有网络3的层数越少,表示层级越高。如果两个私有网络到公有网络的最短路径中至少有一个NAT设备相同,则这两个私有网络有共同的根NAT设备。多层NAT网络可以被看作是多个同根多层NAT网络的组合。多层NAT网络可以被看作是多个同根多层NAT网络的组合。公有网络的层级为0。
多层NAT网络在扩大用户的接入数量的同时,也使通信双方的相对位置变得更为复杂。多层NAT网络将公有网络扁平化通信模式变成了层次化通信模式。多层NAT网络环境下,通信双方典型关系为:(1)通信双方在公有网络;(2)通信一方在通过NAT设备扩展的私有网络中,另一方在公有网络中;(3)通信双方在同一NAT设备控制的私有网络中;(4)通信双方在不同NAT设备控制的私有网络中,且这两个NAT设备通过不同的根NAT与公有网络的相连;(5)通信双方在不同NAT设备控制的私有网络中,且这两个NAT设备通过相同的根NAT与公有网络的相连。本发明将第五种情况所描述的NAT网络称为同根多层NAT网络。
NAT设备的网络地址指同NAT设备的外网界面绑定的网络地址。对于规模较大的私有网络,NAT设备外网界面可以同多个网络地址进行绑定。在网络管理中,可以通过枚举地址或者枚举网段的方式将多个网络地址映射为一个NAT设备。普通用户可以通过低端NAT设备自行接入网络,该NAT路由器外网界面一般与一个网络地址绑定。在下面对NAT设备的描述中,一个NAT设备外网界面只与一个网络地址绑定。因此,一个NAT设备可以用一个同该NAT设备的外网界面绑定的网络地址代表。技术人员不难理解,下面描述的方法也适用于外网界面同多个网络地址绑定的NAT设备。
为了方便对多层NAT网络的描述,现定义如下名词:
NAT设备的网络地址:是指该NAT设备的外网界面上绑定的网络地址,或称为NAT路由器地址,该地址可以是公有地址,也可以是私有地址。
直接上层网络:如果NAT设备A的外网界面同NAT设备B控制的网络直接相连,NAT设备B控制的网络为NAT设备A控制的网络的直接上层网络;公有网络是根NAT设备控制的网络的直接上层网络。
直接下层网络:如果NAT设备A的外网界面同NAT设备B控制的网络直接相连,NAT设备A控制的网络为NAT设备B控制的网络的直接下层网络;根NAT设备控制的网络是公有网络的直接下层网络。
NAT路径长度:NAT环境下,主机A到B的可达路径中经过NAT设备的个数为该NAT路径的长度。
最短NAT路径:NAT环境下,主机A到B的所有NAT路径中,NAT路径长度最小的一条称为A到B的最短NAT路径,所经过的NAT个数为最短NAT路径长度。
上层网络:从当前NAT设备控制的网络的直接上层网络起到公有网络止的各NAT设备控制的网络及公有网络,为当前NAT设备控制的网络的上层网络。
下层网络:从公有网络或当前NAT设备控制的网络的直接下层网络起的各NAT设备控制的网络,为公有网络或当前NAT设备控制的网络的下层网络
所属网络:部署于公有网络的设备的所属网络为公有网络,部署在NAT设备控制的网络的设备的所属网络为NAT设备控制的网络。
NAT之后:设备所属网络为公有网络或当前NAT设备控制的网络的下层网络,则该设备在NAT之后。
基本设备及数据收发点类型
转发服务节点:转发服务节点用于协助希望相互通讯的系统终端设备建立数据传递路径或为系统终端设备进行数据转发;每个提供该转发服务的节点需具有一个用于存储本服务节点的配置信息的装置;该装置存储信息包括:本服务节点主机名称、本服务节点主机网络地址、端口、层级信息。通讯模块,用于从网络收发数据。服务点记录装置记录转发服务节点上的数据接收测试点、及相对应的NAT设备上的数据接收测试点。逻辑控制模块控制转发服务点的执行。标识记录表,用于记录标识、该标识对应的系统终端设备的网络地址和端口、及相关NAT设备的网络地址和端口。
系统终端设备:系统终端设备可以访问转发服务节点。在具体网络应用系统中该系统终端设备上可以运行客户端,也可以运行服务端,或同时运行客户端和服务端。系统终端设备可以收发数据。系统终端设备有一个用于存储设备的配置信息的装置,该装置存储本系统终端设备的标识、网络地址,该标识使用当前设备的用户的标识、或当前设备运行的服务的标识。系统终端设备有一个用于记录通讯双方数据接收地址对应关系的装置,包括:属于本系统终端设备的用于接收数据的网络地址和端口、属于对方系统终端设备的用于接收数据的网络地址和端口等项目。系统终端设备有一个用于转发服务节点的装置,包括:网络地址、端口、层级信息。系统终端设备有一个运行控制模块,控制系统终端设备的执行。
系统终端设备还包括路径完成状态记录装置、直通测试单元执行状态记录装置、转发及穿越测试单元执行状态记录装置和完成优先级状态记录装置。其中,路径完成状态记录装置用于记录路径探测的完成状态,如果路径探测未完成,该纪录装置为空;如果路径探测完成,该纪录装置置位;直通测试单元执行状态记录装置用于记录直通测试单元是否在执行,如果在执行,状态为置位,否则为空;转发及穿越测试单元执行状态记录装置用于记录转发及穿越测试单元是否在执行,如果在执行,状态为置位,否则为空;完成优先级状态记录装置用于记录当前完成状态是由直通测试单元还是转发及穿越测试单元完成。直通测试单元完成优先级高于转发及穿越测试单完成优先级。
本发明的方法将测试过程分为两个相互独立的流程单元:直通测试单元;转发及穿越测试单元。如图1所示,测试方的测试算法并行执行:直通测试;转发及穿越测试。
NAT环境下,系统终端设备(为描述方便,使用大写字母表示)为了能够接收数据,需要获得转发服务节点上的数据接收测试点(r3)、NAT设备上的数据接收测试点(r2)、系统终端设备上的数据接收测试点(r1)。上述数据接收端口可表示为Ar1、Ar2、Ar3。同理,系统终端设备的数据发送测试点可以表示为As1、As2。在下面的描述中B为路径测试发起方,也就是被呼叫方,A为路径测试响应方,也就是呼叫方。
现在参考图1B,图1B示出建立NAT穿越通道的测试方的主测试方法的流程图。如图1B所示:
S0001:开始;
S0002:将路径完成状态设置为空,表示还没有产生测试通道,直通测试单元执行状态设为空,转发及穿越测试单元执行状态设为空;
S0003:直通测试单元执行状态置位,转发及穿越测试单元执行状态置位,同时执行启动直通测试单元(S0100),启动转发及穿越测试单元(S0200);
S5100:检查直通测试单元、转发及穿越测试单元是否停止,如果没有停止,跳转到S5100,继续检查各单元是否完成测试;
S5200:检查数据传输路径是否测定,如果测定,跳转到S5400,如果没有测定,跳转到S5999,结束;
S5400:根据优先级选择测定数据传输路径,如果路径完成优先级为直通测试单元,输出结果为直通测试单元探测的路径,如果路径完成优先级为转发和穿越测试单元,输出结果为转发和穿越测试单元探测的路径;
S5999:结束。
由于直通测试单元,转发及穿越测试单元并行执行,因此本方法可以根据实际情况,简化为仅执行直通测试单元,或简化为仅执行转发及穿越测试单元。
下面分别详细描述直通测试单元、转发及穿越测试单元的测试过程。从图2-图4开始,结合具体测试步骤,对图1中的部分步骤进行详细说明,所说明的内容是原步骤的扩展、具体化。
直通路径测试单元
下面分别详细描述直通测试:测试方直通测试流程为图2从S1000起,标号为S1XXX的操作步骤;测试响应方直通测试流程参考中国专利申请200810104586.0“一种系统终端设备建立NAT穿越通道的方法”的直通测试。
图2为测试方直通测试单元的流程:
S1000:从Bs1向被测试方Ar1发送普通直通测试请求消息,该请求消息中包含测试方Br1、Br3等信息;
S1001:设置计时器BT1,在Br1地址等待应答消息,并判定是否超时,如果未超时并收到应答消息,转S1011,如果超时,转S1060;
S1011:提取携带应答消息的数据分组的源地址;
S1012:根据携带应答消息的数据分组的源地址和Ar1的网络地址是否相同,判定通信双方是否直通可达,如果相同为直通可达,转S1040,如果不相同为非直通可达,转S1020;
S1040:确认以双方的r1为各自的数据接收地址,在通讯双方数据接收地址对应关系的装置中记录双方数据接收点对应关系,顺序执行S1050;
S1020:获取应答消息中的强制测试点,从Br1向强制测试点发送强制测试消息;
S1031:设置计时器BT2,并在Br1等待反馈消息,判定是否超时,如果未超时并收到应答消息,转S1032,如果超时,转S1060;
S1032:获取强制测试应答消息中的测试点P,记为Br2_new,由Bs1向测试响应方Ar1发送穿越直通测试请求消息,消息中包含Br2_new;
S1033:设置计时器BT3,并在Br1等待应答消息,判定是否超时,如果未超时并收到应答消息,转S1034,如果超时,转S1060;
S1034:以Br2_new、Ar1为参数,在通讯双方数据接收地址对应关系的装置中记录双方数据接收点对应关系,顺序执行S1050;
S1050:直通测试单元执行状态设为空,表示直通测试单元测试结束,路径完成状态置位,表示测试双方间的数据传输通道开通,完成优先级状态设为直通测试单元;
S1060:直通测试单元执行状态设为空,表示直通测试单元测试结束。
转发及穿越测试单元
图3为测试方的转发测试流程:
S2000:从Bs1向测试响应方的Ar3发送普通转发测试请求消息,消息体中包含测试方B的测试点地址Br1 Br2 Br3,缺省情况下本消息不带Br3的层级信息,该层级信息可作为选项添加到消息中;
S2011:设置计时器BT1;
S2012:在Br1等待返回信息;
S2013:是否收到应答消息,如果收到应答消息,转S2014,如果没有收到应答消息,转S2015;
S2014:收到应答消息,记录携带应答消息的数据分组的源地址,并缓存应答消息;
S2015:是否超时,如果超时,转S2016,如果没有超时,转S2012;
S2016:在BT1内是否收到应答消息,如果收到应答消息,转S2017,如果没有收到应答消息,转S2090;
S2017:检查路径完成检验状态是否被置位,如果被置位,转S2090,如果没有被置位,转S2020;
S2020:根据携带应答消息的源地址是否同Br3中的网络地址相同,判定缓存的应答消息中是否有未经过转发点转发的应答消息,如果有未经过转发点转发的应答消息,转S2030,如果没有未经过转发点转发的应答消息,转S2061;
S2061:获取返回消息体中路径信息和测试方B的Br3添加的网络地址、端口,从Br1向测试响应方B的Br3添加的网络地址、端口发送穿洞消息;
S2062:应答消息中是否有新的转发测试点地址出现,如果有,转S2070,如果没有,转S2080;
S2070:调整转发测试点,以获取新的转发测试点Ar3_new代替Ar3、Ar2_new代替Ar2,顺序执行S2075;
S2075:检查路径完成检验状态是否被置位,如果被置位,转S2090,如果没有被置位,转S2000;
S2080:以双方的r3为参数,在通讯双方数据接收地址对应关系的装置中记录数据接收测试点对应关系,顺序执行S3000(即开始穿越测试);
S2030:从Bs1点向测试响应方A的Ar3发送非对称转发测试请求消息,消息体中包含强制测试点Bs1;
S2041:设置计时器BT2,在Bs1上等待强制测试消息,判定是否超时,如果未超时收到强制测试消息,转S2047,如果超时,转S2049,表示该测试没有NAT设备上的数据接收测试点产生;
S2047:检查路径完成检验状态是否被置位,如果被置位,转S2090,如果没有被置位,转S2042;
S2042:获取携带强制测试消息的数据分组携带的源地址和源端口,记为访问点P,向P点返回强制测试应答消息,消息体中包含P;
S2043:设置计时器BT3,在Br1上等待非对称转发测试应答消息,判定是否超时,如果未超时收到非对称转发测试应答消息,转S2048,如果超时,转S2049,表示该测试没有NAT设备上的数据接收测试点产生;
S2048:检查路径完成检验状态是否被置位,如果被置位,转S2090,如果没有被置位,转S2044;
S2049:检查路径完成检验状态是否被置位,如果被置位,转S2090,如果没有被置位,转S2050;
S2050:根据携带应答消息的源地址是否同Br3中的网络地址相同,判定缓存的消息中是否有经过Br3转发的应答消息,如果有经过转发点转发的应答消息,转S2061,如果没有经过Br3转发的应答消息,转S2090;
S2044:获取来自被测试方A的应答信息,用测试获得的呼叫方的系统终端设备的NAT设备上的数据接收测试点Ar2_new代替Ar2;
S3000:测试方B从Bs1向测试响应方A发起NAT穿越路径测试,开始执行穿越路径测试;
S2090:转发和穿越测试单元执行状态设置为空,表示转发和穿越测试单元停止测试。
图4为测试方的穿越测试流程:
S3000:从Bs1向测试响应方的Ar2发送穿越测试请求消息;
S3002:设置计时器BT1,在Br1上等待应答消息,判定是否超时,如果未超时并收到应答消息,转S3030,如果超时,转S3020;
S3020:检查路径完成检验状态是否被置位,如果被置位,转S3040,如果没有被置位,转S3003;
S3030:检查路径完成检验状态是否被置位,如果被置位,转S3040,如果没有被置位,转S3004;
S3004:在双方数据接收记录列表中以双方转发点r3作为接收对应关系的记录是否存在,如果存在,转S3005,如果不存在,转S3006;
S3005:以双方的r2为参数,在通讯双方数据接收地址对应关系的装置中记录数据接收测试点对应关系,顺序执行S3050;
S3006:以Br1、Ar2为参数,在通讯双方数据接收地址对应关系的装置中记录数据接收测试点对应关系,顺序执行S3050;
S3003:穿越测试失败,不在双方数据接收记录列表中添加双方接收地址对应关系,顺序执行S3050;
S3040:转发和穿越测试单元执行状态设置为空,表示停止转发和穿越测试单元的测试;
S3050:转发和穿越测试单元执行状态设置为空,,路径完成状态置位,完成优先级状态设为转发和穿越测试单元,表示停止转发和穿越测试单元的测试。
图5是各测试单元是否停止检查方法:
S5100-100:检查直通测试单元执行状态,如果该状态为空,转S5100-200,否则,转S5100-100检查直通测试单元执行状态;
S5100-200:检查转发及穿越测试单元执行状态,如果该状态为空,转S5200,否则,转S5100-200检查转发及穿越测试单元执行状态。
注意到,图3、图4所示的检查路径完成状态的方法,是在转发和穿越测试单元执行过程中监测路径实际测试结果并终止后续测试的多种方法中的一种。同样,也可以在S2041、S2043、S3002等监测超时的过程中,加入路径完成状态的监测;或在转发和穿越测试单元执行过程中的其它地方,加入路径完成状态的监测;或用其它手段监测路径测试情况,但不影响本方法提出的直通测试单元和转发及穿越测试单元的并行执行的主体流程。
另外,图5所示的各测试单元是否停止检查方法是众多检查方法中的一种。如更改S5100-200和S5100-100的顺序,也能得到同样的效果。有多种方法可以检查直通测试单元,转发及穿越测试单元是否停止。如图5所示,该方法通过检查各测试单元执行状态,完成对直通测试单元,转发及穿越测试单元是否停止的判定。
由于直通测试单元,转发及穿越测试单元并行执行,因此作为另一种选择,输出测试结果的步骤可以分别加入到直通测试单元,和转发及穿越测试单元,主程序仅检查路径完成状态是否置位,如果置位则结束程序,如果未置位则等待,并反复检测完成状态是否置位。
在直通测试单元中加入输出测试结果的具体步骤为:直通测试单元测试完成后,如果有测试结果,输出测试结果,同时路径完成状态置位,直通测试单元执行状态设为空,如果没有测试结果,直通测试单元执行状态设为空。
在转发及穿越测试单元中加入输出测试结果的具体步骤为:转发及穿越测试单元测试完成后,检查直通测试单元执行状态是否为空,如果直通测试单元执行状态为空,如果本测试单元有测试结果,输出测试结果,路径完成状态置位,如果直通测试单元执行状态为空,如果本测试单元没有测试结果,路径完成状态置位,如果直通测试单元执行状态不为空,则等待,并反复检查其是否为空。
这种输出测试结果的方法,实际上也将对直通测试单元,转发及穿越测试单元是否停止的判断加入转发及穿越测试单元。这种输出测试结果的方法,在执行步骤上规定了直通测试单元,和转发及穿越测试单元间的优先性,因此可以省略完成优先级状态记录装置。
在本发明中,所述转发服务器、转发服务点和转发服务节点,在逻辑上都可认为是转发服务节点。
在本发明中,用于实现本发明的方法的步骤可以不限于实施例中的组合,在具体实现中可以去掉部分步骤,或者加入其他的本说明书中提到的步骤。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非对其限制,并且在应用上可以延伸到其他的修改、变化、应用和实施例,同时认为所有这样的修改、变化、应用、实施例都在本发明的精神和范围内。
Claims (15)
1.一种系统终端设备建立NAT穿越通道的方法,包括:
步骤1)、呼叫方系统终端设备通过转发服务节点分别获取转发服务节点上的数据接收端口及网络地址、及其层级信息、NAT设备上的数据接收端口及网络地址,并将转发服务节点上的数据接收端口及网络地址、NAT设备上的数据接收端口及网络地址和系统终端设备上的数据接收端口及网络地址送给被呼叫方的系统终端设备;
步骤2)、被呼叫方系统终端设备收到所述呼叫方系统终端设备发送的携带有呼叫方接收数据端口的网络地址和端口后的连接请求后,通过转发服务节点分别获取转发服务节点上的数据接收端口及网络地址、及其层级信息、NAT设备上的数据接收端口及网络地址;
步骤3)、并行执行被呼叫方的系统终端设备对于呼叫方的系统终端设备上的数据接收端口及网络地址的直通测试、呼叫方的转发服务节点上的数据接收端口及网络地址的转发测试以及呼叫方的NAT设备上的数据接收端口及网络地址的穿越测试,发送测试请求消息;
步骤4)、被呼叫方的系统终端设备在所述直通测试、转发及穿越测试进行中或者完成后,根据测定的数据传输路径和优先级,选择数据传输路径。
2.权利要求1的方法,其中,所述系统终端设备包括:
路径完成状态记录装置,用于记录路径探测的完成状态;
直通测试单元执行状态记录装置,用于记录直通测试单元是否在执行;
转发及穿越测试单元执行状态记录装置,用于记录转发及穿越测试单元是否在执行;
完成优先级状态记录装置,用于记录当前完成状态是由直通测试单元还是转发及穿越测试单元完成;
所述测试请求消息中包括所述被呼叫方的转发服务节点上的数据接收测试点、系统终端设备上的数据接收测试点。
3.权利要求2的方法,其中,步骤3)进一步包括:
步骤A20)、所述被呼叫方的系统终端设备通过自身的数据发送测试点向呼叫方的系统终端设备的自身的数据接收测试点发送直通测试请求;
步骤A21)、呼叫方的系统终端设备接收到直通测试请求消息后,进行直通测试,并返回应答消息;
步骤A22)、当所述应答消息未经过转发服务器,或者所述被呼叫方的系统终端设备通过自身的数据接收测试点向呼叫方系统终端设备强制测试点发出强制测试消息,所述被呼叫方的系统终端设备确认呼叫方接收数据端口的网络地址和端口,设置路径完成状态。
4.权利要求3的方法,其中,步骤A20)中,所述被呼叫方在系统终端设备上的数据接收测试点等待返回消息。
5.权利要求4的方法,其中,步骤A22)进一步包括:
步骤A220)、被呼叫方的系统终端设备获取返回消息,确认双方可以直通可达,以双方的系统终端设备上的数据接收测试点为各自接收地址,向呼叫方返回所述被呼叫方系统终端设备上的数据接收测试点,路径完成状态置位,完成优先级状态设为直通测试。
6.权利要求4的方法,其中,步骤A22)进一步包括:
步骤A220)、被呼叫方的系统终端设备确认双方不可以直通可达,获取应答消息中的强制测试点,从系统终端设备上的数据接收测试点向强制测试点发送强制测试消息;
步骤A221)被呼叫方的系统终端设备的数据接收测试点收到所述返回的强制测试应答消息后,获取应答消息中的测试点,将其作为新的NAT设备上的数据接收测试点,向呼叫方的系统终端设备上的数据接收测试点发送穿越直通测试请求消息,所述穿越直通测试请求消息中包含新的NAT设备上的数据接收测试点;
步骤A222)、被呼叫方的系统终端设备获取返回消息,确认双方可以经过NAT设备转发的直通,以被呼叫方的系统终端设备的新的NAT设备上的数据接收测试点和呼叫方的系统终端设备的转发服务节点上的数据接收测试点为各自接收地址,记录接收对应关系,路径完成状态置位,完成优先级状态设为直通测试。
7.权利要求2的方法,其中,步骤3)进一步包括:
步骤B20)、所述被呼叫方的系统终端设备通过自身的数据发送测试点向呼叫方转发服务节点上的数据接收测试点发起转发测试;
步骤B21)、呼叫方的系统终端设备接收到转发测试消息后,进行转发测试,并返回应答消息;
步骤B22)、当返回的应答消息中存在未经过转发点转发的应答消息,所述被呼叫方确定路径完成状态未置位后从系统终端设备的数据发送测试点向呼叫方转发服务节点上的数据接收测试点发送非对称转发测试请求;
步骤B23)、当返回的应答消息中不存在未经过转发点转发的应答消息,确认更新呼叫方的转发点,调整转发点,重新开始转发测试;如果没有新的转发点则开始穿越测试。
8.权利要求7的方法,其中,步骤B20)中,所述转发测试的测试请求消息中包括所述被呼叫方的转发服务节点上的数据接收测试点、NAT设备上的数据接收测试点和系统终端设备上的数据接收测试点,或者还包括被呼叫方的转发服务节点上的数据接收测试点的层级信息,所述被呼叫方在系统终端设备的数据接收测试点等待返回消息。
9.权利要求8的方法,其中,步骤B22)进一步包括:
判断测试未产生穿越测试点后,确认缓存的消息中有经过转发点转发的应答消息;确认更新呼叫方的转发点,调整转发点,重新开始转发测试。
10.权利要求9的方法,其中,步骤B22)中,确定产生穿越测试点的步骤进一步包括:
步骤B220)、在被呼叫方的系统终端设备上的数据发送测试点上等待强制测试消息;
步骤B221)、获取携带强制测试消息的数据分组携带的源地址和源端口,并向所述源地址和端口返回包括所述源地址和端口的强制测试应答消息;
步骤B222)、被呼叫方的系统终端设备获取来自呼叫方的非对称转发测试请求的应答信息,用测试获得的呼叫方的系统终端设备的NAT设备上的数据接收测试点代替原来呼叫方的系统终端设备的NAT设备上的数据接收测试点。
11.权利要求9的方法,其中,步骤B22)进一步包括:
步骤B220)、当缓存的消息中存在经过转发点转发的应答消息,获取返回消息中的路径信息和获取被呼叫方的转发服务节点添加的网络地址和端口,从被呼叫方的系统终端设备上的数据接收测试点向被呼叫方的转发服务节点添加的网络地址和端口发送穿洞消息;
步骤B221)、判断返回的应答消息中是否有呼叫方新的转发服务节点的数据接收测试点出现;
步骤B222)、如果有呼叫方新的转发服务节点的数据接收测试点出现,调整转发测试点,以获取的呼叫方新的转发服务节点的数据接收测试点代替原来的被呼叫方转发服务节点上的数据接收测试点,新的呼叫方的系统终端设备的NAT设备上的数据接收测试点代替原来的呼叫方的系统终端设备的NAT设备上的数据接收测试点;
步骤B223)、如果没有呼叫方新的转发服务节点的数据接收测试点出现,以双方的转发服务节点上的数据接收测试点为各自的数据接收地址,记录接收对应关系。
12.权利要求7的方法,其中,步骤B23)进一步包括:
步骤B230)、当返回的应答消息中不存在未经过转发点转发的应答消息,获取返回消息中的路径信息和获取被呼叫方的转发服务节点添加的网络地址和端口,从被呼叫方的系统终端设备上的数据接收测试点向被呼叫方的转发服务节点添加的网络地址和端口发送穿洞消息;
步骤B231)、判断返回的应答消息中是否有呼叫方新的转发服务节点的数据接收测试点出现;
步骤B232)、如果有呼叫方新的转发服务节点的数据接收测试点出现,调整转发测试点,以获取的呼叫方新的转发服务节点的数据接收测试点代替原来的被呼叫方转发服务节点上的数据接收测试点,新的呼叫方的系统终端设备的NAT设备上的数据接收测试点代替原来的呼叫方的系统终端设备的NAT设备上的数据接收测试点;
步骤B233)、如果没有呼叫方新的转发服务节点的数据接收测试点出现,以双方的转发服务节点上的数据接收测试点为各自的数据接收地址,记录接收对应关系。
13.权利要求2的方法,其中,步骤3)进一步包括:
步骤C20)、所述被呼叫方的系统终端设备的数据发送测试点向呼叫方NAT设备上的数据接收测试点发起NAT穿越测试;
步骤C21)、呼叫方的系统终端设备接收到NAT穿越测试消息后,进行NAT穿越测试,并返回应答消息;
步骤C22)、所述被呼叫方的系统终端设备根据所述应答消息并确定路径完成状态未置位后确定对于被呼叫方可用的呼叫方接收数据的网络地址和端口。
14.权利要求13的方法,其中,步骤C22)进一步包括:
步骤C220)、被呼叫方在系统终端设备上的数据接收测试点等待应答消息;
步骤C221)、判断记录的接收对应关系中是否存在以双方转发服务节点上的数据接收测试点作为接收对应关系的记录;
步骤C222)、如果存在,以双方的NAT设备上的数据接收测试点作为各自的接收地址,建立接收对应关系,并记录所述接收对应关系;
步骤C223)、如果不存在,以被呼叫方的系统终端设备上的数据接收测试点和呼叫方的系统终端设备的NAT设备上的数据接收测试点作为各自的接收地址,建立接收对应关系,并记录所述接收对应关系。
15.权利要求2的方法,其中,步骤4)进一步包括:
确定直通测试、转发及穿越测试停止;
确定检查数据传输路径测定;
根据优先级选择测定数据传输路径,如果路径完成优先级为直通测试单元,输出结果为直通测试单元探测的路径,如果路径完成优先级为转发和穿越测试单元,输出结果为转发和穿越测试单元探测的路径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102373246A CN102055659B (zh) | 2009-11-10 | 2009-11-10 | 一种系统终端设备建立nat穿越通道的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102373246A CN102055659B (zh) | 2009-11-10 | 2009-11-10 | 一种系统终端设备建立nat穿越通道的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102055659A true CN102055659A (zh) | 2011-05-11 |
CN102055659B CN102055659B (zh) | 2012-08-22 |
Family
ID=43959610
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102373246A Active CN102055659B (zh) | 2009-11-10 | 2009-11-10 | 一种系统终端设备建立nat穿越通道的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102055659B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI493924B (zh) * | 2013-04-10 | 2015-07-21 | D Link Corp | Through the two network devices to help complete the STUN technology network system and its methods |
TWI508495B (zh) * | 2013-04-10 | 2015-11-11 | D Link Corp | Method of exchanging distributed network messages |
US9398098B2 (en) | 2014-03-10 | 2016-07-19 | Hon Hai Precision Industry Co., Ltd. | Customer premise equipment and method of remote login |
CN110661681A (zh) * | 2019-09-12 | 2020-01-07 | 北京市天元网络技术股份有限公司 | 埋点设计方法和设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100550882C (zh) * | 2004-03-02 | 2009-10-14 | 华为技术有限公司 | 一种穿越子网的方法及子网穿越系统 |
CN101262478A (zh) * | 2008-04-10 | 2008-09-10 | 杭州华三通信技术有限公司 | 穿越网络地址转换nat的方法和设备 |
CN101262447B (zh) * | 2008-04-21 | 2011-02-16 | 中国科学院计算技术研究所 | 一种系统终端设备建立nat穿越通道的方法 |
-
2009
- 2009-11-10 CN CN2009102373246A patent/CN102055659B/zh active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI493924B (zh) * | 2013-04-10 | 2015-07-21 | D Link Corp | Through the two network devices to help complete the STUN technology network system and its methods |
TWI508495B (zh) * | 2013-04-10 | 2015-11-11 | D Link Corp | Method of exchanging distributed network messages |
US9398098B2 (en) | 2014-03-10 | 2016-07-19 | Hon Hai Precision Industry Co., Ltd. | Customer premise equipment and method of remote login |
CN110661681A (zh) * | 2019-09-12 | 2020-01-07 | 北京市天元网络技术股份有限公司 | 埋点设计方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN102055659B (zh) | 2012-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101262447B (zh) | 一种系统终端设备建立nat穿越通道的方法 | |
JPS60108950A (ja) | ネツトワーク相互接続装置 | |
CN101047618B (zh) | 获取网络路径信息的方法和系统 | |
CN102055659B (zh) | 一种系统终端设备建立nat穿越通道的方法 | |
CN101252518B (zh) | 对等网络中选择中转节点的方法及系统 | |
CN104521211B (zh) | 一种会话连接建立的方法、装置和系统 | |
CN108173976A (zh) | 域名解析方法及装置 | |
CN108924274A (zh) | 域名系统dns处理方法、装置、存储介质及电子设备 | |
CN101789900A (zh) | 组播转发路径的查询方法、中间节点和管理节点 | |
CN106375189A (zh) | 一种长短链转换的方法和系统 | |
CN107040429A (zh) | 一种端口转发性能的测试方法及系统 | |
US20050286439A1 (en) | Method of testing a router, and a test system | |
CN106130791B (zh) | 基于服务质量的缓存设备服务能力遍历测试系统及方法 | |
CN101075924B (zh) | 一种客户端登录服务器的方法 | |
WO2023134312A1 (zh) | 内容计费测试方法、管理设备、终端设备及存储介质 | |
CN107872368A (zh) | 一种网络节点集群中网关可达性的检测方法、装置及终端 | |
CN107094088A (zh) | 一种蹭网设备识别方法、装置以及系统 | |
CN109246189A (zh) | 网络数据分发方法及装置、存储介质、服务端 | |
CN102739446B (zh) | 选择网络时间协议服务器的方法和装置 | |
CN106027284A (zh) | 网络的故障诊断方法及装置 | |
CN117478680B (zh) | 基于物联管理平台的终端数据流传输远程控制方法和系统 | |
CN116390156B (zh) | LoRa通信方法、装置、设备及可读存储介质 | |
CN102164048A (zh) | 局域网络中实现多运营商接入的数据流优化装置及方法 | |
CN103685609A (zh) | 域名解析中路由配置信息采集方法及装置 | |
CN101355483A (zh) | 一种多网口发送数据包的方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |