一种系统终端设备建立nat穿越通道的方法

文档序号:7693735阅读:432来源:国知局

专利名称::一种系统终端设备建立nat穿越通道的方法
技术领域
:本发明涉及计算机网络通信
技术领域
,更具体地,本发明涉及一种系统终端设备建立NAT穿越通道的方法。
背景技术
:众所周知由于IP地址有限以及分配上的不均匀,导致网络地址严重缺乏,乂人实际应用和部署上看,网络地址翻i奪(NetworkAddressTranslator,NAT)技术是解决IP地址不足情况下4妄入互联网的重要方法。随着个人信息设备的增多、网络接入设备的普及和网络技术的发展,越来越多的公司、团体和家庭希望将这些设备以网络的方式组织在一起,并接入互联网,但是出于安全的考虑,如何在网络上隐藏高安全等级的节点是很多公司面临的问题,在这种IP地址严重缺乏、设备组网互联需求迫切并且在大量安全隐患的情况下,通过NAT4支术形成的单级或者多级私网结构接入互联网在实际部署中已经越来越普遍和流行。NAT设备为NAT控制下的私有网络(简称私网)地址提供地址翻译功能,使得私网内的主机可以透明地访问外部网络地址,反向访问不可以,NAT下主机的私有网络地址在外部网络中是不可路由的,外部网络主机无法直接访问位于私网内的主机,而且私网内的主机之间在很多情况下也无法直接通信,这对很多主机部署在私网内的端到端通信带来了很多问题和挑战。目前解决部署在私有网络中的主机通信问题的技术是NAT穿越技术,有不少研究团体、标准化组织都已做出了很多有意义的工作。目前常用的方法和技术有应用程序网关(ApplicationLayGate,ALG)、中继(Relaying)、反转连接(ConnectionReversal)、穿洞(HolePunching)技术等,也出现了像中间箱通信(MiddleBoxCommunication)、简单UDP芽越NAT(SimpleTraversalofUserDatagramProtocolThroughNAT,STUN)、中继穿越NAT(TraversalUsingRelayNAT,TURN)、交互连接建立(InteractiveConnectivityEstablishment,ICE)等一系列提交IETF用来解决NAT穿越问题的标准或草案。现有的这些技术、标准和草案都存在这样的问题没有考虑多级NAT下的穿越问题,或者只是简单地使用中继的方式通过公网服务器进行转发实现穿越,或者是依赖NAT设备本身Hairpin特性利用穿洞技术实现,这显然是十分低效的,而且在很多场景下无法实现。没有考虑多级NAT下端到端通信的多^f性,也没有充分利用多级NAT所构成私网内的网络资源。
发明内容为克服现有NAT网络环境中转发穿越低效并且通用性差的缺陷,本发明提出了一种系统终端设备建立NAT穿越通道的方法。才艮据本发明的一个方面,提供一种系统终端设备建立NAT穿越通道的方法,包4舌步骤1)、呼叫方系统终端设备通过转发服务节点分别获取转发服务节点上的数据接收端口及网络地址、及其层级信息、NAT设备上的数据接收端口及网络地址,并将转发服务节点上的数据接收端口及网络地址、MT设备上的数据接收端口及网络地址和系统终端设备上的数据接收端口及网络地址送给^皮呼叫方的系统终端设备;步骤2)、被呼叫方系统终端设备收到所述呼叫方系统终端设备发送的携带有呼叫方接收数据端口的网络地址和端口后的连接请求后,通过转发服务节点分别获取转发服务节点上的数据接收端口及网络地址、及其层级信息、NAT设备上的数据接收端口及网络地址;步骤3)、被呼叫方的系统终端设备的数据发送端口向呼叫方顺序进行目标为呼叫方系统终端设备上的数据接收端口及网络地址的直通测试、目标为呼叫方转发服务节点上的数据接收端口及网络地址的转发测试、目标为呼叫方NAT设备上的数据接收端口及网络地址的穿越测试,确认呼叫方4妻收凄丈据端口的网绍_地址和端口;步骤4)、被呼叫方的系统终端设备确认接收到呼叫方接收数据端口的网络地址和端口后,将被呼叫方数据接收的网络地址与端口发送给呼叫方系统终端设备。其中,所述转发服务节点用于协助相互通讯的系统终端设备建立数据传递路径或在系统终端设备之间进行数据转发,所述转发服务节点具有配置信息存储装置,用于存储所述转发服务节点的配置信息节点主机名称、节点主机IP地址、端口、层级信息;所述转发服务节点用于从网络收发数据,所述转发服务节点具有服务点存储装置,用于记录转发服务节点上的数据接收测试点、及其对应的NAT设备上的数据接收测试点,所述转发服务节点具有标识记录装置,用于记录标识、该标识对应的系统终端设备的网络地址和端口、及相关NAT设备的网络地址和端口。其中,所述转发服务节点在转发服务节点的数据接收测试点接收对方的测试请求消息或测试请求消息的应答消息,根据转发服务节点中与当前数据接收测试点对应的NAT设备上的数据接收测试点,转发收到的数据分组;其中,所述转发服务节点在收到消息后,如果消息类型为普通转发测试消息或普通转发测试消息的应答消息,提取携带该消息的数据分组的源地址和源端口,并在该消息中加入获取的源地址和源端口,并标记为转发服务节点添加;其中,所述转发服务节点在收到测试消息户或测试消息的应答消息后,提取携带该消息的数据分组的源地址和源端口,并在该消息中加入获取的源地址和源端口,并标记为转发服务节点添加。其中,步骤1)中,所述被呼叫方的系统终端设备和所述呼叫方的系统终端设备都可以访问到所述转发服务节点。其中,步骤l)进一步包括所述呼叫方系统终端设备获取所述转发服务节点上的数据接收端口及网络地址时,获取所述转发服务节点在多层NAT网络中的层级信息。其中,步骤2)中,所述被呼叫方的系统终端设备和所述呼叫方的系统终端设备都可以访问到所述转发服务节点。其中,步骤2)进一步包括所述被呼叫方系统终端设备获取所述转发服务节点上的数据接收端口及网络地址时,获取所述转发服务节点在多层NAT网络中的层级信息。其中,步骤3)进一步包括一步骤A20)、所述被呼叫方的系统终端设备通过自身的数据发送测试点向呼叫方的系统终端设备的自身的数据接收测试点发起直通测试;步骤A21)、呼叫方的系统终端设备接收到直通测试请求消息后,进行直通测试,并返回应答消息;步骤A22)、当所述应答消息未经过转发服务器,或者所述被呼叫方的系统终端设备通过自身的数据接收测试点向呼叫方系统终端设备强制测试点发出强制测试消息,建立NAT穿越通道,所述一皮呼叫方的系统终端设备确认呼叫方接收数据端口的网络地址和端口。其中,步骤3)进一步包括步骤B20)、当所述被呼叫方的系统终端设备没有收到直通应答消息或者不能建立NAT穿越通道后,通过自身的数据发送测试点向呼叫方转发服务节点上的数据接收测试点发起转发测试;步骤B21)、呼叫方的系统终端设备接收到转发测试消息后,进行转发测试,并返回应答消息;步骤B22)、当返回的应答消息中存在未经过转发点转发的应答消息,所述被呼叫方从系统终端设备的数据发送测试点向呼叫方转发服务节点上的数据接收测试点发非对称转发测试请求;步骤B23)、当返回的应答消息中不存在未经过转发点转发的应答消息,确认更新呼叫方的转发点,调整转发点,重新开始转发测试。其中,步骤3)进一步包括步骤C20)、所述被呼叫方的系统终端设备的数据发送测试点向呼叫方NAT设备上的数据接收测试点发起NAT穿越测试;步骤C21)、呼叫方的系统终端设备接收到NAT穿越测试消息后,进行NAT穿越测试,并返回应答消息;步骤C22)、所述被呼叫方的系统终端设备根据所述应答消息确定对于被呼叫方可用的呼叫方接收数据的网络地址和端口。其中,服务节点上的数据接收测试点为服务节点的网络地址及端口,所述数据接收测试点包括NAT设备上的数据接收测试点、系统终端设备上的数据接收测试点,所述数据发送测试点包括NAT设备上的数据发送测试点和系统终端设备上的数据发送测试点;其中,NAT设备上的数据接收测试点为NAT设备的网络地址及端口,系统终端设备上的数据接收测试点为系统终端设备的网络地址及端口;NAT设备上的数据发送测试点为MT设备的网络地址及端口,系统终端设备上的数据发送测试点为系统终端设备的网绍_地址及端口。其中,步骤A20)中,所述直通测试的测试请求消息中包括所述被呼叫方的转发服务节点上的数据接收测试点、系统终端设备上的数据接收测试点。其中,步骤A20)进一步包括所述被呼叫方在系统终端设备上的数据接收测试点等待返回消息。其中,步骤A21)进一步包括步骤A210)、呼叫方的系统终端设备提取直通测试的测试请求消息中的被呼叫方转发服务节点上的数据接收测试点、系统终端设备上的数据接收测试点,获取携带所述测试请求消息的数据分组中的源地址;步骤A211)、当被呼叫方的系统终端设备上的数据接收测试点的网络地址与所述携带测试请求消息的数据分组中的源地址相同,向被呼叫方的系统终端i殳备的数据接收测试点返回双方直通可达消息;步骤A212)、当被呼叫方的系统终端设备的数据接收测试点的网络地址与所述携带测试请求消息的数据分组中的源地址不相同,呼叫方从系统终端设备的数据发送测试点向被呼叫方的转发服务节点上的数据接收测试点发送包括强制测试点的应答消息,并在所述强制测试点等待强制测试消息;步骤A213)、呼叫方的系统终端设备获取携带强制测试消息的数据分端口后,向所述携带强制测试消息的数据分组携带的源地址及源端口发送返回强制测试应答消息,消息中包括所述源地址和源端口,并在系统终端设备上的数据接收测试点等待测试请求消息;步骤A214)、收到穿越直通测试请求消息后,获取消息中的新的NAT设备上的数据接收测试点,从呼叫方系统终端设备的数据发送测试点向所述新的NAT设备上的数据接收测试点返回穿越直通测试应答消息。其中,步骤A21)进一步包括步骤A210)、呼叫方的系统终端设备提取直通测试的测试请求消息中的被呼叫方转发服务节点上的数据接收测试点、系统终端设备上的数据接收测试点,获取携带所述测试请求消息的数据分组中的源地址;步骤A211)、呼叫方判定携带该测试消息的数据分组的源地址和被呼叫方系统终端设备的数据接收测试点的网络地址相同时,双方可以直通,在应答消息中加入测试结束标志,并加入双方数据接收测试点为双方系统终端设备的数据接收测试点,被呼叫方在收到应答消息后,如果消息中包含测试结束标志,根据消息的指示将相应数据接收测试点作为双方数据接收测试点;步骤A212)、当被呼叫方的系统终端设备的数据接收测试点的网络地址与所述携带测试请求消息的数据分组中的源地址不相同,呼叫方从系统终端设备的数据发送测试点向被呼叫方的转发服务节点上的数据接收测试点发送包括强制测试点的应答消息,并在所述强制测试点等待强制测试消息;步骤A213)、呼叫方的系统终端设备获取携带强制测试消息的数据分组携带的源地址和源端口后,向所述携带强制测试消息的数据分组携带的源地址和源地址发送返回20和源端口,并在系统终端设备上的数据接收测试点等待测试请求消息;步骤A214)、当呼叫方A收到穿越直通测试请求消息后,在穿越直通测试消息的应答消息中加入测试结束标志,并加入双方数据接收测试点为呼叫方系统终端设备的数据接收测试点、被呼叫方新的NAT设备上的数据接收测试点,被呼叫方收到应答消息后,如果消息中包含测试结束标志,根据消息的指示将相应数据接收测试点作为双方数据接收测试点。其中,步骤A22)进一步包括步骤A220)、被呼叫方的系统终端设备获取返回消息,确认双方可以直通可达,以双方的系统终端i殳备上的数据-接收测试点为各自接收地址,向呼叫方返回所述一皮呼叫方系统终端设备上的数据4妄收测试点;步骤A221)、被呼叫方的系统终端设备确认双方不可以直通可达,获取应答消息中的强制测试点,从系统终端设备上的数据接收测试点向强制测试点发送强制测试消息;步骤A222)被呼叫方的系统终端设备的数据接收测试点收到所迷返回的强制测试应答消息后,获取应答消息中的测试点,将其作为新的NAT设备上的数据接收测试点,向呼叫方的系统终端设备上的数据接收测试点发送穿越直通测试请求消息,所述穿越直通测试请求消息中包含新的NAT设备上的数据接收测试点;步骤A223)、被呼叫方的系统终端设备获取返回消息,确认双方可以转发直通,以被呼叫方的系统终端设备的新的NAH更备上的数据接收测试点和呼叫方的系统终端设备的数据接收测试点为各自接收地址,记录接收对应关系。其中,步骤B20)中,所述转发测试的测试请求消息中包括所述被呼叫方的转发服务节点上的数据接收测试点、NAT设备上的数据接收测试点和系统终端设备上的数据接收测试点,被呼叫方的转发服务节点上的数据接收测试点的层级信息。其中,步骤B20)进一步包括所述被呼叫方在系统终端设备的数据接收测试点等待返回消息。其中,步骤B21)中,当接收到的转发测试消息是非对称转发测试请求消息,步骤B21)进一步包括步骤B210)、呼叫方系统终端设备获取测试请求消息中的强制测试点,从系统终端设备上的数据接收测试点向被呼叫方的强制测试点发送强制测试消息;步骤B211)、呼叫方在系统终端设备上的数据接收测试点等待强制测试应答消息;步骤B212)、呼叫方系统终端设备获取强制测试应答消息中的新接收点,作为呼叫方新的NAT设备上的数据接收测试点,从呼叫方系统终端设备上数据发送测试点向被呼叫方系统终端设备上的数据接收测试点发送包括呼叫方新的NAT设备上的数据接收测试点的非对称转发测试应答消息。其中,步骤B21)中,当接收到的转发测试消息是非对称转发测试请求消息,步骤B21)进一步包括步骤B210)、呼叫方系统终端设备获取测试请求消息中的强制测试点,从系统终端设备上的数据接收测试点向被呼叫方的强制测试点发送强制测试消息;步骤B211)、呼叫方在系统终端设备上的数据接收测试点等待强制测试应答消息;步骤B212)、呼叫方系统终端i殳备获取强制测试应答消息中的新接收点,作为呼叫方新的NAT设备上的数据接收测试点,在非对称转发测试消息的应答消息中加入测试结束标志,并加入双方数据接收测试点为呼叫方新的NAT设备上的数据接收测试点、被呼叫方系统终端设备的数据接收测试点,被呼叫方在收到应答消息后,如果消息中包含测试结束标志,根据消息的指示将相应数据接收测试点作为双方数据接收测试点。其中,步骤B21)中,当接收到的转发测试消息是普通转发测试请求消息,步骤B21)进一步包括步骤B210)、呼叫方系统终端设备获耳又普通转发测试消息中的被呼叫方的转发服务节点上的数据接收测试点、NAT设备上的数据接收测试点和系统终端设备上的数据接收测试点,获取被呼叫方的转发服务节点上的数据接收测试点的层级信息,获取呼叫方的转发服务节点添加的网络地址和端口,并比较双方转发服务节点上的数据接收测试点的层级;步骤B211)、如果所述层级相同,呼叫方从系统终端设备上数据接收测试点向呼叫方的转发服务节点添加的网络地址和端口发送穿洞消息,从呼叫方系统终端设备的数据发送测试点分别向被呼叫方的转发服务节点上的数据接收测试点和系统终端设备上的数据接收测试点发送应答消息;步骤B212)、如果所述层级不相同,呼叫方系统终端设备根据被呼叫方的系统终端设备的层级信息重新获取新的转发服务节点上的数据接收测试点和新的NATH殳备上的数据接收测试点,从呼叫方系统终端设备的数据发送测试点分别向被呼叫方的转发服务节点上的数据接收测试点和系统终端设备上的数据接收测试点发送应答消息,其中,应答消息包括新的转发服务节点上的数据接收测试点和新的NAT设备上的数据接收测试点。其中,步骤B22)进一步包括判断未产生新的穿越测试点后,确认緩存的消息中有经过转发点转发的应答消息;确认更新呼叫方的转发点,调整转发点,重新开始转发测试。其中,步骤B22)中,确定产生新的穿越测试点的步骤进一步包括步骤B220)、在被呼叫方的系统终端设备上的数据发送测试点上等待强制测试消息;步骤B221)、获取携带强制测试消息的数据分组携带的源地址和源端口,并向所述源地址和端口返回包i舌所述源地址和端口的强制测试应答消息;'步骤B222)、被呼叫方的系统终端设备获取来自呼叫方的非对称转发测试请求的应答信息,用呼叫方的系统终端设备的新的NAT设备上的数据接收测试点代替原来呼叫方的系统终端设备的NAT设备上的数据接收测试点。其中,步骤B22)进一步包括步骤B220)、当判断未产生新的穿越测试点,同时当緩存的消息中存在经过转发点转发的应答消息,获取返回消息中的路径信息和获取被呼叫方的转发服务节点添加的网络地址和端口,从:故呼叫方的系统终端设备上的数据接收测试点向被呼叫方的转发服务节点添加的网络地址和端口发送穿洞消息;步骤B221)、判断返回的应答消息中是否有呼叫方新的转发服务节点的数据接收测试点出现;步骤B222)、如果有呼叫方新的转发服务节点的数据接收测试点出现,调整转发点,以获取的呼叫方新的转发服务节点的数据接收测试点代替原来的呼叫方转发服务节点上的数据接收测试点,新的呼叫方的系统终端设备的NAT设备上的数据接收测试点代替原来的呼叫方的系统终端设备的NAT设备上的数据接收测试点;步骤B223)、如果没有呼叫方新的转发服务节点的数据接收测试点出现,以双方的转发服务节点上的数据接收测试点为各自的数据接收地址,记录4妄收只于应关系。其中,步骤B23)进一步包括步骤B230)、当返回的应答消息中不存在未经过转发点转发的应答消息,获取返回消息中的路径信息和获取被呼叫方的转发服务节点添加的网络地址和端口,从被呼叫方的系统终端设备上的数据接收测试点向被呼叫方的转发服务节点添加的网络地址和端口发送穿洞消息;步骤B231)、判断返回的应答消息中是否有呼叫方新的转发服务节点的数据接收测试点出现;步骤B232)、如果有呼叫方新的转发服务节点的数据接收测试点出现,调整转发点,以获取的呼叫方新的转发服务节点的数据接收测试点代替原来的呼叫方转发服务节点上的数据接收测试点,新的呼叫方的系统终端设备的NAT设备上的数据接收测试点代替原来的呼叫方的系统终端设备的NAT设备上的数据接收测试点;步骤B233)、如果没有呼叫方新的转发服务节点的数据接收测试点出现,以双方的转发服务节点上的数据接收测试点为各自的数据接收地址,记录4^收对应关系。其中,步骤C21)进一步包括步骤C210)、呼叫方的系统终端设备接收到NAT穿越测试消息后,获取携带该消息的数据分组的源地址;比较所述源地址和被呼叫方的系统终端设备的数据接收测试点的网络地址是否相同;步骤C211)、如果地址相同,从呼叫方的系统终端设备的数据发送测试点向被呼叫方的系统终端设备上的数据接收测试点发送应答消息;步骤C212)、如果地址不相同,从呼叫方的系统终端设备的数据发送测试点向被呼叫方的系统终端设备的NAT设备上的数据接收测试点发送应答消息。其中,步骤C21)进一步包括步骤C210)、呼叫方的系统终端设备接收到NAT穿越测试消息后,获取携带该消息的数据分组的源地址;比4交所述源地址和被呼叫方的系统终端设备的数据接收测试点的网络地址是否相同;步骤C211)、如果地址相同,在穿越测试消息的应答消息中加入测试结束标志,并加入双方数据接收测试点为呼叫方新的NAT设备上的数据接收测试点、被呼叫方系统终端设备的数据接收测试点,被呼叫方在收到应答消息后,如果消息中包含测试结束标志,根据消息的指示将相应数据接收测试点作为双方数据接收测试点;步骤C212)、如果地址不相同,在穿越测试消息的应答消息中加入测试结束标志,并加入双方数据接收测试点为双方NAT设备上的数据接收测试点,被呼叫方在收到应答消息后,如果消息中包含测试结束标志,根据消息的指示将相应数据接收测试点作为双方数据接收测试点。其中,步骤C22)进一步包括步骤C220)、一皮呼叫方在系统终端设备上的数据接收测试点等待应答消息;步骤C221)、判断记录的接收对应关系中是否存在以双方转发服务节点上的数据接收测试点作为接收对应关系的记录;步骤C222)、如果存在,以双方的NAT设备上的数据接收测试点作为各自的接收地址,建立接收对应关系,并记录所述4妄收对应关系;步骤C223)、如果不存在,以被呼叫方的系统终端设备上的数据接收测试点和呼叫方NAT设备上的数据接收测试点作为各自的接收地址,建立接收对应关系,并记录所述4妄收对应关系。其中,步骤4)进一步包括从被呼叫方和呼叫方的数据接收对应关系记录中找到最后加入的记录,向呼叫方返回所述最后记录中的被呼叫方的数据接收端口和网络地址。本发明考虑多级NAT下端到端通信的多样性,充分利用多级NAT所构成私网内的网络资源,可以在多种场景下实现NAT的穿越;该方法可以适用于全锥型、IP限制型、IP及端口限制型、对称型等基本NAT设备及其组合后构建的单层、多层网络环境。在同根多层NAT网络下,系统终端设备间的通讯,本方法可以将数据流限制在私有网络中,从而减小骨干网络的压力;在测试过程中,本方法可以根据需要NAT设备上打开一到两条通道。图1示出同根多层NAT网络;图2示出测试方整体测试流程;图3示出^皮测试方整体测试流程;图4示出测试方直通测试流程;图5示出^^测试方直通测试流程;图6示出测试方转发测试流程;图7示出#:测试方转发测试流程;图8示出测试方NAT穿越测试流程;图9示出被测试方NAT穿越测试流程。具体实施方式下面结合附图和具体实施例,对本发明提供的数据发送端口发起的渐进式端到端NAT穿越通道建立方法作进一步说明。图1所示为同根多层NAT网络结构示意图,一个私有网络4-1通过NAT设备1001接入公有网络3,—个私有网络4-2通过另一NAT设备1002接入私有网络4-l。通过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网络环境下,通信双方典型关系为(l)通信双方在公有网络;(2)通信一方在通过MT设备扩展的私有网络中,另一方在公有网络中;(3)通信双方在同一NAT设备控制的私有网络中;(4)通信双方在不同NAT设备控制的私有网络中,且这两个NAT设备通过不同的根NAT与公有网络的相连;(5)通信双方在不同NAT设备控制的私有网络中,且这两个NAT设备通过相同的根NAT与公有网络的相连。本发明将第五种情况所描述的NAT网络称为同根多层NAT网络。NAT设备的网络地址指同NAT设备的外网界面绑定的网络地址。对于规模较大的私有网络,NAT设备外网界面可以同多个网络地址进行绑定。在网络管理中,可以通过枚举地址或者枚举网段的方式将多个网络地址映射为一个NAT设备。普通用户可以通过低端NAT设备自行接入网络,该NAT路由器外网界面一般与一个网络地址绑定。在下面对NAT设备的描述中,一个NAT设备外网界面只与一个网络地址绑定。因此,一个NAT设备可以用一个同该NAT设备的外网界面绑定的网络地址代表。开发设计人员不难发现,下面描述的方法也适用于外网界面同多个网络地址绑定的NATi殳备。为了方便对多层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设备的网络地址和端D。系统终端设备系统终端设备可以访问转发服务节点。在具体网络应用系统中该系统终端设备上可以运行客户端,也可以运行服务端,或同时运行客户端和服务端。系统终端设备可以收发数据。系统终端设备有一个用于存储设备的配置信息的装置;该装置存储本系统终端设备的标识、网络地址。该标识使用当前设备的用户的标识、或当前设备运行的服务的标识。系统终端设备有一个用于记录通讯双方数据接收地址对应关系的装置,包括属于本系统终端设备的用于接收数据的网络地址和端口、属于对方系统终端设备的用于接收数据的网络地址和端口等项目。系统终端设备有一个用于转发服务节点的装置,包括网络地址、端口、层级信息。系统终端设备有一个运行控制模块,控制系统终端设备的执行。系统工4乍原理在公有网络和NAT设备控制的网络中部署转发服务节点。当系统终端设备位于公有网络时,系统终端设备需要知道部署在公有网络中的转发服务节点的网络地址和端口。当系统终端设备位于NAT设备控制的网络时,系统终端设备需要知道部署在当前NAT设备控制的网络中的转发服务节点的网络地址和端口及上层网络中各转发服务节点的网络地址和端口;如果当前NAT设备控制的网络中没有转发服务节点,系统终端设备需要知道上层网络中各转发服务节点的网络地址和端口。系统终端设备可以通过人工配置的方式,如系统管理员进行配置,获得相关转发服务节点的网络地址和端口。该转发服务节点网络地址和端口可以被该系统终端i殳备访问。转发服务节点可以提供的服务有1)记录用户或应用的登录信息系统终端设备获得转发服务节点后,向转发服务节点发用户或应用的登录消息,包括标识,本系统终端设备网络地址、端口。收到登录消息的转发服务节点,除记录登录消息中的标识,网络地址、端口等信息外,如果该登录消息经过NAT设备转发,还要记录NAT设备上的网络地址和端口。各种服务和应用也可以按上述方式注册其标识。对于在公有网络中使用的系统终端设备,其标识被记录在部署在公有网络中的转发服务节点中;对于在NAT设备控制的网络中使用的系统终端设备,其标识被记录在当前NAT设备控制的网络中的转发服务节点和上层网络中的转发服务节点中。如果在当前NAT设备控制的网络中没有转发服务节点,其标识被记录在上层网络中的转发服务节点中。系统终端设备定时向转发服务节点发登录消息。2)为系统终端设备提供转发服务节点上数据接收测试点分配服务转发服务节点上数据接收测试点用于接收数据并向申请该测试点的系统终端i殳备转发数据。该测试点由网络地址和端口构成。该测试点可以被参加数据通讯的各系统终端设备访问。获取该测试点的方法为系统终端设备根据本地保存的转发服务节点的网络地址和端口向所有转发服务节点发转发数据接收测试点请求消息,消息中至少包括本消息的消息类型;本设备的当前标识,如用户标识;被请求目标的标识,如被请求用户的用户标识。缺省情况下,请求消息中不包含层级信息。请求消息中可以根据需要添加层级信息,不符合该层级信息的转发服务节点向本系统终端设备返回失败应答消息,符合该层级信息的转发服务节点根据逻辑向本系统终端设备返回相关应答消息。*转发服务节点收到转发数据接收测试点请求消息后,判断该请求消息中是否有层级信息,如果有,判断该层级信息和本节点的层级信息是否相同,如果不同,返回失败应答消息;如果请求消息中没有层级信息,或者请求消息中的层级信息和本节点的层级信息相同,在本地标识记录中查找被请求的标识是否存在,如果被请求标识在本地标识记录表中,为该系统终端设备分配一个数据接收测试点,将该数据接收测试点记录在服务点记录装置中,则向发送该请求消息的系统终端设备返回包含该数据接收测试点及层级信息的成功应答消息,该数据接收测试点可以被被请求目标运行或使用的系统终端设备访问;如果被请求标识不在本地用户记录表中,则向发送该请求消息的系统终端设备返回失败应答消息。*系统终端设备记录成功应答消息中包括的转发服务点的网络地址和端口,及层级信息。当收到所有转发服务节点的应答消息后,选择层级信息值最大的转发服务节点的网络地址和端口作为本系统终端设备的转发服务节点上数据接收测试点3)NAT设备上的数据接收测试点获取服务系统终端设备在荻取转发服务节点上数据接收测试点后,向该数据接收测试点请求NAT设备上的数据接收测试点。NAT设备上的数据接收测试点由该NAT设备的网络地址和端口构成。NAT设备根据该NAT设备的规则将在该测试点收到的数据分组向该系统终端设备转发。本方法可以使用STUN(IETFRFC3489)协议中定义的方法实现。获取NAT设备上的数据接收测试点为*系统终端设备根据本地保存的转发服务节点上数据接收测试点,从本系统终端设备用于接收数据的端口,向该测试点发NAT设备数据接收测试点请求消息,消息中包括本消息的消息类型。*转发服务节点收到NAT设备数据接收测试点请求消息后,提取携带该请求消息的数据分组携带的源网络地址和源端口,将该网络地址和端口记录在服务点记录装置中,并向该系统终端设备返回包含该源网络地址和源端口的应答消息。*系统终端设备收到应答消息后,将消息中的源网络地址和源端口同发出该NAT设备数据接收测试点请求消息使用的网络地址和端口比较,如果不同,则将该网络地址和端口记录为NAT设备上的数据接收测试点。4)用户连接呼叫请求消息的转发服务当用户使用系统终端设备访问其它用户的系统终端设备或运行某种应用的系统终端设备时。系统终端设备通过转发服务节点向请求目标发连接呼叫请求消息。具体方法为*系统终端设备根据本地保存的转发服务节点的网络地址和端口向转发服务节点发连接呼叫请求消息,消息中至少包括本设备的当前标识,如用户标识;祐:请求目标的标识,如裙:请求用户的用户标识,及用于接收数据的转发服务节点上数据接收测试点、NAT设备上的数据接收测试点、系统终端设备的数据接收测试点上。*转发服务节点收到连接呼叫请求消息后,如果被请求标识在本地标识记录表中,根据被请求目标的登录信息向被请求目标转发该连接呼叫请求消息。如果存在,返回失败消息。*被请求目标的系统终端设备收到连接呼叫请求消息后,可以根据逻辑决定是否同意连接;如果同意,则返回成功应答消息,如果不同意,则返回失败应答消息;应答消息需要转发服务节点转发。用户连接呼叫请求消息的转发服务可以基于SIP(IETFRFC3261)协议实现。5)测试消息的转发服务转发服务节点在转发服务节点的数据接收测试点接收对方的测试请求消息或测试请求消息的应答消息,根据服务点记录装置中与当前数据接收测试点对应的NAT设备上的数据接收测试点,转发收到的数据分组。转发服务节点在收到消息后,如果消息类型为普通转发测试消息或普通转发测试消息的应答消息,提取携带该消息的数据分组的源地址和源端口,并在该消息中加入获:f又的源地址和源端口,并标记为转发"良务节点添加。为了减化处理流程,转发服务节点在收到测试消息户或测试消息的应答消息后,提取携带该消息的数据分组的源地址和源端口,并在该消息中加入获耳又的源地址和源端口,并标记为转发"l务节点添加。6)数据转发服务在系统终端设备请求的转发服务节点的数据接收测试点上等待其他系统终端设备发出的数据分组。如果该数据分组中,没有包含测试消息、测试消息的应答消息、NAT设备数据接收测试点请求消息等,根据服务点记录装置中与当前转发服务节点的数据接收测试点对应的NAT设备上的数据接收测试点,将该数据分组转发给请求该转发服务点的系统终端设备。数据测试点类型NAT设备的多样性、以及多层NAT网络中系统终端间相对位置关系多样性使得系统终端设备间收发数据的关系变得非常复杂。有的端到端的通讯需要通过转发服务节点转发;有的端到端的通讯可以直接穿过NAT设备;有的端到端的通讯可以直接联通。下面将转发服务节点上、MT设备上,及系统终端设备上的各种通讯端口根据用途做如下分类。数据接收测试点1)服务节点上的数据接收测试点为服务节点的网络地址及端口,为方便使用r3表示,简称为转发点;2)NAT设备上的数据接收测试点为NAT设备的网络地址及端口,为方便使用r2表示,筒称为NAT穿越点,或穿越点;3)系统终端设备上的数据接收测试点为系统终端设备的网络地址及端口,为方使j吏用r1表示。数据发送测试点1)NAT设备上的数据发送测试点为NAT设备的网络地址及端口,为方便使用s2表示;2)系统终端设备上的数据发送测试点为系统终端设备的网络地址及端口,为方^更使用sl表示。NAT环境下,系统终端设备(为描述方便,使用大写字母表示,如A)为了能够接收数据,需要获得转发服务节点上的数据接收测试点(r3)、NAT设备上的数据接收测试点(r2)、系统终端设备上的数据接收测试点(rl)。上述数据接收端口可表示为Arl、Ar2、Ar3。同理,系统终端设备的数据发送测试点可以表示为Asl、As2。端到端的NAT穿越通道建立方法渐进式端到端NAT穿越通道建立方法由三个步骤组成数据接收测试点获取;路径测试;路径确认。为了方便下面将通讯双方分别称为A、B。在下面的描述中B为路径测试发起方,也就是被呼叫方,A为路径测试响应方,也就是呼叫方。数据接收测试点的获取数据接收测试点的获取分为三步。第一步呼叫方A(测试响应方)通过转发服务节点获得转发服务节点上的数据接收端口及网络地址(r3);NAT设备上的数据接收端口及网络地址(r2)。在转发服务节点选择时,需要保证选择的转发服务节点能过被参与测试的任何一方访问到。在获取转发服务节点上的数据接收端口及网络地址的同时,需要获取该节点在多层NAT网络中的层级信息。第二步呼叫方A向被呼叫方B传递其收集到的各种数据接收测试点Arl、Ar2、Ar3。可以通过SIP协议及相关的DSP协议中定义的消息将被测试方收集的信息传递给测试方。第三步被呼叫方B(测试方)收到呼叫方A(测试响应方)的信息后,被呼叫方B(测试方)通过转发服务节点获得转发服务节点上的数据接收端口及网络地址(r3)、MT设备上的数据接收端口及网络地址(r2)。在转发服务节点选择时,需要保证选择的转发服务节点能过被参与测试的任何一方访问到。在获取转发服务节点上的数据接收端口及网络地址的同时,需要获取该节点在多层MT网络中的层级信息。开始穿越^各径测试。路径测试图2所示为测试方测试方法的测试顺序流程图。本测试方法按直通测试、转发测试和NAT穿越测试的固定循序依次进行。S0001:开始;S1000:测试发起方B从Bsl向测试响应方A的Arl发起直通测试;S1001:是否收到直通应答消息,如果是,转S1010,如果不是,转S2000;Sl010:才艮据携带应答消息的数据分组的源地址判断应答消息是否未经过转发服务器转发,如果是,转S1040,如果不是,转S1020;S104G:直通路径确认,通道建立成功,顺序执行S5000;SI020:测试方B从Brl向测试响应方A的强制测试点发起强制测试消自S1030:是否建立NAT穿越通道,如果是,转S4000,如果不是,转S2000;S2000:测试方B从Bsl向测试响应方A的Ar3发起转发测试;S2010:是否收到转发应答消息,如果是,转S2020,如果不是,转S5000;S2020:緩存的消息中是否有未经过Br3转发的应答消息,如果有,转S2030,如果没有,转S2060;S2030:测试方B/人Bsl向测试响应方A的Ar3发非对称转发测试请求消自S2040:是否产生新的穿越测试点,如果是,转S3000,如果不是,转S2050;S2050:緩存的消息中是否有经过Br3转发的应答消息,如果有,转S2060,如果没有,转S5000;S2060:测试响应方A的转发点是否更新,如果是,转S2070,如果不是转S2080;S2070:调整转发测试点,顺序执行S2000;S208G:记录转发路径;S3000:测试方B从Bsl向测试响应方A的Ar2发起NAT穿越测试;S4000J各径确iL,通道建立成功;S5000:结束。图3初始测试响应方A处于初始空闲状态,收到测试消息后,对测试消息进行拆分,判定该测试消息的测试类别,然后按照其测试类别,进入不同类别的测试处理模块,最后处理完毕,向测试方B返回应答消息,测试响应方A返回等待接收测试消息状态。S6000:开始;S6100:等待接收测试消息;S6200:是否收到测试消息,如果是,转S6300,如果不是,转S6100;S6300:根据消息类型判别是否为直通测试,如果是,转S6400,如果不是,转S6500;S6400:进入直通测试应答;f莫块,执行S6100;S6500:根据消息类型判别是否为转发测试,如果是,转S6600,如果不是,转S6700;S6600:进入转发测试应答模块,顺序执行S6100;S6700:根据消息类型判别是否为穿越测试,如果是,转S6800,如果不是,转S6900;S6800:进入穿越测试应答才莫块,顺序执行S6100;S6900:其它处理,顺序执4亍S6100。下面分别详细描述直通测试、转发测试和穿越测试这三个测试阶段。从图4_图9,结合具体测试步骤,对图2、图3中的部分步骤进行细化,细化内容是原步骤的扩展、具体化,与原步骤不矛盾。为了详细描述具体步骤,S丽丽表示图2或图3中相应的步骤,SN丽N-N表示S丽丽的子步骤。N为0到9的数字。直通^各径测试下面分别详细描述直通测试测试方直通测试流程为图2/人S1000起,标号为S1XXX的操作步骤;测试响应方直通测试流程是判定为直通测试后的S6楊。图4为测试方B的直通测试流禾呈39S1000:从Bsl向^皮测试方Arl发送普通直通测试请求消息,该请求消息中包含测试方Brl、Br3等信息;S10Ql:设置计时器BTl,在Brl地址等待应答消息,并判定是否超时,如果未超时并收到应答消息,转S1010-l,如果超时,转S2000;Sl010-1:提取携带应答消息的数据分组的源地址;Sl010-2:根据携带应答消息的数据分组的源地址和Ar1的网络地址是否相同,判定通信双方是否直通可达,如果相同为直通可达,转S1040,如果不相同为非直通可达,转S1020;S1040:确认以双方的rl为各自的数据接收地址,并向测试响应方A返回测试方的数据接收网络地址和端口(可以通过SIP协议及相关的DSP协议中定义的消息将被测试方的信息传递给测试方。);S1020:获取应答消息中的强制测试点,从Brl向强制测试点发送强制测试消息;S1030-1:设置计时器BT2,并在Brl等待反馈消息,判定是否超时,如果未超时并收到应答消息,转S1030-2,如果超时,转S2000;S1030-2:获取强制测试应答消息中的测试点P,记为Br2-new,由Bsl向测试响应方Arl发送穿越直通测试请求消息,消息中包含Br2』ew;S103Q-3:设置计时器BT3,并在Brl等待应答消息,判定是否超时,如果未超时并收到应答消息,转S1030-4,如果超时,转S2000;S1030-4:以Br2—new、Arl为参数,在通讯双方数据接收地址对应关系的装置中记录双方数据接收点对应关系;S4000:进入3各径确i^过禾呈;S2000:测试方B从Bs1向被测试方A发起转发测试。图5为测试响应方A的直通测试流程S6400-l:提取普通直通测试请求消息中的Brl、Br3;S6400-2:获取携带该测试请求消息的数据分组的携带的源地址,记为IP1;S6400-3:判定测试方Brl测试点的网络地址和IP1是否一致,如果一致,转S6400-4,如果不一致,转S6400-5;S6400-4:双方直通可达,从Asl向测试方rl返回路径回馈消息,返回6100;S6400-5:从As1向测试方Br3返回应答消息,消息体中包含强制测试点Asl;S6400-6:设置计时器AT1,在Asl上等待测试方的强制测试消息,判定是否超时,如果未超时收到强制测试消息,转S6400-7,如果超时,转S6100;S6400-7:获取携带强制测试消息的数据分组携带的源地址和源端口,记为P,向P发送返回强制测试应答消息,消息体中包含P;S6400-8:设置计时器AT2,在Arl等待测试方的测试消息,判定是否超时,如果未超时收到穿越直通测试请求消息,转S6400-9,如果超时,转S6100;S6400-9:获取测试消息中的Br2—new,代替Br2,从Asl向Br2—new返回应答消息;S6100:等待接受测试消息。转发路径测试下面分别详细描述转发测试测试方转发测试流程为图2/人S2000起,标号为S2XXX的操作步骤;测试响应方转发测试流程是判定为转发测试后的S6600。图6为测试方B流^i:S2000:从Bsl向测试响应方的Ar3发送普通转发测试请求消息,消息体中包含测试方B的测试点地址BrlBr2Br3,和Br3的层级信息;S201G-l:i殳置计时器BTl;S2010-2:在Brl等待返回信息;S2010-3:是否收到应答消息,如果收到应答消息,转S2010-4,如果没有收到应答消息,转S2010-5;S2010-4:收到应答消息,记录携带应答消息的数据分组的源地址,并緩存应答消息;S2010-5:是否超时,如果超时,转S2010-6,如果没有超时,转S2010-2;S2010-6:在BT1内是否收到应答消息,如果收到应答消息,转S2020,如果没有收到应答消息,转S5000;S2020:根据携带应答消息的源地址是否同Br3中的网络地址相同,判定緩存的应答消息中是否有未经过转发点转发的应答消息,如果有未经过转发点转发的应答消息,转S2030,如果没有未经过转发点转发的应答消息,转S2060-1;S2060-l:获取返回消息体中路径信息和测试方B的Br3添加的网络地址、端口,从Brl向测试响应方B的Br3添加的网络地址、端口发送穿洞消息;S2060-2:应答消息中是否有新的转发测试点地址出现,如果有,转S2070,如果没有,转S2080;S2070:调整转发测试点,以获耳又新的转发测试点Ar3—new代替Ar3、Ar2—new代替Ar2,顺序扭"行S2000;S2080:以双方的r3为参数,在通讯双方数据接收地址对应关系的装置中记录数据接收测试点对应关系,顺序执行S3000;S203Q:从Bsl点向测试响应方A的Ar3发送非对称转发测试请求消息,消息体中包含强制测试点Bsl;S2040-1:设置计时器BT2,在Bsl上等待强制测试消息,判定是否超时,如果未超时收到强制测试消息,转S2040-2,如果超时,转S2050;S2040-2:获取携带强制测试消息的数据分组携带的源地址和源端口,记为访问点P,向P点返回强制测试应答消息,消息体中包含P;S2040-3:设置计时器BT3,在Brl上等待非对称转发测试应答消息,判定是否超时,如果未超时收到非对称转发测试应答消息,转S2040-4,如果超时,转S2050;S2050:根据携带应答消息的源地址是否同Br3中的网络地址相同,判定緩存的消息中是否有经过Br3转发的应答消息,如果有经过转发点转发的应答消息,转S2060-1,如果没有经过Br3转发的应答消息,转S5000;S2040-4:获取来自被测试方A的应答信息,用Ar2—new代替Ar2;S3000:测试方B从Bsl向测试响应方A发起NAT测试,顺序执行S4000;S5000:结束。图7为测试响应方A流程S6600-l:判定该消息是非对称转发测试请求消息、还是普通转发测试请求消息,如果是普通转发测试请求消息,转S6600-2,如果是非对称转发测试请求消息,转S6600-10;S6600-2:提取普通转发测试请求消息中的Brl、Br2、Br3,及Br3的层级信息;S6600-3:获取该消息中测试响应方A的3添加的网络地址、端口,获取Br3的层次信息;S6600-4:判定Ar3和Br3层级是否相同,如果相等,转S6600-5,如果不相等,转S6600-7;S6600-5:从Arl向测试响应方A的Ar3添加的网络地址、端口发送穿洞消息;;S6600-6:从Asl分别以测试方的Brl和Br3为目标发送应答信息,顺序执行S6100;S6600-7:测试响应方A向根据测试方Br3的层级信息重新获取转发测试点Ar3_new和穿越测试点Ar2_new;S6600-8:从Asl分別以测试方的Brl和Br3为目标发送应答信息,消息体中包含新的测试点信息Ar3—new,Ar2_new,顺序执行S6100;S6600-10:获取消息中强制测试点,从Arl向强制测试点发送强制测试消息;S6600-11:设置计时器AT1,在Arl上等待强制测试应答消息,判定是否超时,如果未超时收到强制测试应答消息,转S6600-12,如果超时,转S6100;S6600-12:获取该消息中的新接收点P,记为Ar2—new,从Asl向Brl发送路非对称转发测试应答消息,消息体中包含Ar2-new,顺序执行S6100;S6100:等待接受测试消息。穿越路径须'H式下面分别详细描述穿越测试测试方转发测试流程为图2从S3000起,标号为S3XXX的操作步骤;测试响应方转发测试流程是判定为转发测试后的S6800。图8为测试方B流禾呈S208Q:记录转发路径;S3000-1:从Bs1向测试响应方的Ar2发送穿越测试请求消息;S30Q0-2:设置计时器BT1,在Brl上等待应答消息,判定是否超时,如果未超时并收到应答消息,转S300Q-4,如果超时,转S3000-3;S3000-4:在双方数据接收记录列表中以双方转发点r3作为接收对应关系的记录是否存在,如果存在,转S3000-5,如果不存在,转S3000-6;S3000-5:以双方的r2为参数,在通讯双方数据才妄收地址对应关系的装置中记录数据接收测试点对应关系,顺序执行S4000;S3000-6:以Brl、Ar2为参数,在通讯双方数据4妻收地址对应关系的装置中记录数据接收测试点对应关系,顺序执行S4000;S3000-3:穿越测试失败,不在双方数据4妻收记录列表中添加双方才妄收地址对应关系,顺序寺丸4亍S4000;S40Q0:路径确i人,通道建立成功。图9测试响应方A流禾呈S6800-1:获取携带该消息的数据分组的源地址,记为IP0;S6800-2:比较Brl的网络地址和IPO是否相同,如果相等,转S6800-3,如果不相等,转S6800-4;S6800-3:从Asl向测试方的Brl发送应答消息,顺序执行S6100;S6800-4:从As1向测试方的Br2发送应答消息,顺序执行S6100;S61G0:等待接受测试消息。路径确认测试方B流程S4000:从通讯双方数据接收地址对应关系的装置中找到最后加入该列表的记录,记录中的地址和端口分别为测试方和测试响应方接收数据的网络地址和端口,向测试响应方返回该记录中测试方的数据接收端口和网络地址。可以通过SIP协议及相关的DSP协议中定义的消息将被测试方收集的信息传递给测试方。基本消息类型及内容消息分为两种测试请求消息、应答消息。测试请求消息通过消息中的请求类型定义不同的测试请求消息;应答消息通过消息中的应答类型定义不同的应答消息。具体消息内容见下表<table>tableseeoriginaldocumentpage47</column></row><table><table>tableseeoriginaldocumentpage48</column></row><table>基于测试响应方的应答消,包、的扩展测试响应方可以根据测试请求消息及当前处理特征向测试方提供当前数据接收测试点的测试结果,从而提高测试方的处理速度。测试响应方A:当测试响应方A收到普通直通测试请求消息,并判定携带该测试消息的数据分组的源地址和Brl的网络地址相同时,双方可以直通,在应答消息中加入测试结束标志,并加入双方数据接收测试点为Arl,Brl。当测试响应方A收到穿越直通测试请求消息后,在穿越直通测试消息的应答消息中加入测试结束标志,并加入双方数据接收测试点为Ar1,Br2』ew。当测试响应方A收到非对称转发测试请求消息后,在非对称转发测试消息的应答消息中加入测试结束标志,并加入双方数据接收测试点为Ar2—new,Brl。当测试响应方A收到穿越测试请求消息后,比较Brl的网络地址和获取携带该消息的数据分组的源地址是否相同,如果不相同,在穿越测试消息的应答消息中加入测试结束标志,并加入双方数据接收测试点为Ar2,Br2;如果相同,在穿越测试消息的应答消息中加入测试结束标志,并加入双方数据接收测试点为Ar2-new,Brl;测试方B流禾呈在收到应答消息后,如果消息中包含测试结束标志,根据消息的指示将相应数据接收测试点作为双方数据接收测试点,结束测试。在本发明中,所述转发服务器、转发服务点和转发服务节点,在逻辑上都可认为是转发服务节点。在本发明中,用于实现本发明的方法的步骤可以不限于实施例中的组合,在具体实现中可以去掉部分步骤,或者加入其他的本说明书中提到的步骤。最后应说明的是,以上实施例仅用以说明本发明的技术方案而非对其限制,并且在应用上可以延伸到其他的》务改、变化、应用和实施例,同时认为所有这样的修改、变化、应用、实施例都在本发明的精神和范围内。权利要求1.一种系统终端设备建立NAT穿越通道的方法,包括步骤1)、呼叫方系统终端设备通过转发服务节点分别获取转发服务节点上的数据接收端口及网络地址、及其层级信息、NAT设备上的数据接收端口及网络地址,并将转发服务节点上的数据接收端口及网络地址、NAT设备上的数据接收端口及网络地址和系统终端设备上的数据接收端口及网络地址送给被呼叫方的系统终端设备;步骤2)、被呼叫方系统终端设备收到所述呼叫方系统终端设备发送的携带有呼叫方接收数据端口的网络地址和端口后的连接请求后,通过转发服务节点分别获取转发服务节点上的数据接收端口及网络地址、及其层级信息、NAT设备上的数据接收端口及网络地址;步骤3)、被呼叫方的系统终端设备的数据发送端口向呼叫方顺序进行目标为呼叫方系统终端设备上的数据接收端口及网络地址的直通测试、目标为呼叫方转发服务节点上的数据接收端口及网络地址的转发测试、目标为呼叫方NAT设备上的数据接收端口及网络地址的穿越测试,确认呼叫方接收数据端口的网络地址和端口;步骤4)、被呼叫方的系统终端设备确认接收到呼叫方接收数据端口的网络地址和端口后,将被呼叫方数据接收的网络地址与端口发送给呼叫方系统终端设备;其中,所述转发服务节点用于在NAT网络中协助相互通讯的系统终端设备建立数据传递路径或在系统终端设备之间进行数据转发。2、权利要求l的方法,所述转发服务节点具有配置信息存储装置,用于存储所述转发服务节点的配置信息节点主机名称、节点主机IP地址、端口、层级信息;所述转发服务节点用于从网络收发数据,所述转发服务节点具有服务点存储装置,用于记录转发服务节点上的数据接收测试点、及其对应的NAT设备上的数据接收测试点,所述转发服务节点具有标识记录装置,用于记录标识、该标识对应的系统终端设备的网络地址和端口、及相关NAT设备的网络地址和端口。3、权利要求2的方法,其中,所述转发服务节点在转发服务节点的数据接收测试点接收对方的测试请求消息或测试请求消息的应答消息,根据转发服务节点中与当前数据接收测试点对应的NAT设备上的数据接收测试点,转发收到的数据分组;其中,所述转发服务节点在收到消息后,如果消息类型为普通转发测试消息或普通转发测试消息的应答消息,^是:取携带该消息的数据分组的源地址和源端口,并在该消息中加入获取的源地址和源端口,并标记为转发服务节点添加;其中,所述转发服务节点在收到测试消息户或测试消息的应答消息后,提取携带该消息的数据分组的源地址和源端口,并在该消息中加入获取的源地址和源端口,并标记为转发服务节点添加。4、权利要求3的方法,其中,步骤l)中,所述被呼叫方的系统终端设备和所述呼叫方的系统终端设备都可以访问到所述转发服务节点。5、权利要求4的方法,其中,步骤l)进一步包括所述呼叫方系统终端设备获取所述转发服务节点上的数据接收端口及网络地址时,获取所述转发服务节点在多层NAT网络中的层级信息。6、权利要求3的方法,其中,步骤2)中,所述被呼叫方的系统终端设备和所述呼叫方的系统终端设备都可以访问到所述转发服务节点。7、权利要求4的方法,其中,步骤2)进一步包括所述被呼叫方系统终端设备获取所述转发服务节点上的数据接收端口及网络地址时,获取所述转发服务节点在多层NAT网络中的层级信息。8、权利要求3的方法,其中,步骤3)进一步包括步骤A20)、所述被呼叫方的系统终端设备通过自身的数据发送测试点向呼叫方的系统终端设备的自身的数据接收测试点发起直通测试;步骤A21)、呼叫方的系统终端设备接收到直通测试请求消息后,进行直通测试,并返回应答消息;步骤A22)、当所述应答消息未经过转发服务器,或者所述被呼叫方的系统终端设备通过自身的数据接收测试点向呼叫方系统终端设备强制测试点发出强制测试消息,建立NAT穿越通道,所述被呼叫方的系统终端设备确认呼叫方接收凄史据端口的网络地址和端口。9、权利要求3的方法,其中,步骤3)进一步包括步骤B20)、当所述被呼叫方的系统终端设备没有收到直通应答消息或者不能建立NAT穿越通道后,通过自身的数据发送测试点向呼叫方转发服务节点上的数据接收测试点发起转发测试;步骤B21)、呼叫方的系统终端设备接收到转发测试消息后,进行转发测试,并返回应答消息;步骤B22)、当返回的应答消息中存在未经过转发点转发的应答消息,所述被呼叫方从系统终端设备的数据发送测试点向呼叫方转发服务节点上的数据接收测试点发非对称转发测试请求;步骤B23)、当返回的应答消息中不存在未经过转发点转发的应答消息,确认更新呼叫方的转发点,调整转发点,重新开始转发测试。10、权利要求3的方法,其中,步骤3)进一步包括步骤C20)、所述被呼叫方的系统终端设备的数据发送测试点向呼叫方NAT设备上的数据接收测试点发起NAT穿越测试;步骤C21)、呼叫方的系统终端设备接收到NAT穿越测试消息后,进行NAT穿越测试,并返回应答消息;步骤C22)、所述^t呼叫方的系统终端设备根据所述应答消息确定对于被呼叫方可用的呼叫方接收数据的网络地址和端口。11、权利要求8或9或10的方法,其中,服务节点上的数据接收测试点为服务节点的网络地址及端口,所述数据接收测试点包括NAT设备上的数据接收测试点、系统终端设备上的数据接收测试点,所述数据发送测试点包括NAT设备上的数据发送测试点和系统终端设备上的数据发送测试点;其中,NAT设备上的数据接收测试点为NAT设备的网络地址及端口,系统终端设备上的数据接收测试点为系统终端设备的网络地址及端口;MT设备上的数据发送测试点为NAT设备的网络地址及端口,系统终端设备上的数据发送测试点为系统终端设备的网络地址及端口。12、权利要求8的方法,其中,步骤A20)中,所述直通测试的测试请求消息中包括所述被呼叫方的转发服务节点上的数据接收测试点、系统终端设备上的数据-接收测试点。13、权利要求12的方法,其中,步骤A20)进一步包括所述被呼叫方在系统终端"i殳备上的数据接收测试点等待返回消息。14、权利要求13的方法,其中,步骤A21)进一步包括步骤A210)、呼叫方的系统终端设备提取直通测试的测试请求消息中的被呼叫方转发服务节点上的数据接收测试点、系统终端设备上的数据接收测试点,获取携带所述测试请求消息的数据分组中的源地址;步骤A211)、当被呼叫方的系统终端设备上的数据接收测试点的网络地址与所述携带测试请求消息的数据分组中的源地址相同,向被呼叫方的系统终端"i殳备的数据接收测试点返回双方直通可达消息;步骤A212)、当被呼叫方的系统终端设备的数据接收测试点的网络地址与所述携带测试请求消息的数据分组中的源地址不相同,呼叫方从系统终端设备的数据发送测试点向被呼叫方的转发服务节点上的数据接收测试点发送包括强制测试点的应答消息,并在所述强制测试点等待强制测试消息;步骤A213)、呼叫方的系统终端设备获取携带强制测试消息的数据分组携带的源地址和源端口后,向所述携带强制测试消息的数据分组携带的源地址及源端口发送返回强制测试应答消息,消息中包括所述源地址和源端口,并在系统终端设备上的数据接收测试点等待测试请求消息;步骤A214)、收到穿越直通测试请求消息后,获取消息中的新的NAT设备上的数据接收测试点,从呼叫方系统终端设备的数据发送测试点向所述新的NAT设备上的数据接收测试点返回穿越直通测试应答消息。15、权利要求13的方法,其中,步骤A21)进一步包括步骤A210)、呼叫方的系统终端设备提取直通测试的测试请求消息中的被呼叫方转发服务节点上的数据接收测试点、系统终端设备上的数据接收测试点,获取携带所述测试请求消息的数据分组中的源地址;步骤A211)、呼叫方判定携带该测试消息的数据分组的源地址和被呼叫方系统终端设备的数据接收测试点的网络地址相同时,双方可以直通,在应答消息中加入测试结束标志,并加入双方数据接收测试点为双方系统终端设备的数据接收测试点,被呼叫方在收到应答消息后,如果消息中包含测试结束标志,根据消息的指示将相应数据接收测试点作为双方数据接收测试点;步骤A212)、当^L呼叫方的系统终端设备的数据接收测试点的网络地址与所述携带测试请求消息的数据分组中的源地址不相同,呼叫方从系统终端设备的数据发送测试点向被呼叫方的转发服务节点上的数据接收测试点发送包括强制测试点的应答消息,并在所述强制测试点等待强制测试消息;步骤A213)、呼叫方的系统终端设备获取携带强制测试消息的数据分组携带的源地址和源端口后,向所述携带强制测试消息的数据分组携带的源地址和源地址发送返回强制测试应答消息,消息中包括所述源地址和源端口,并在系统终端设备上的数据接收测试点等待测试请求消息;步骤A214)、当呼叫方A收到穿越直通测试请求消息后,在穿越直通测试消息的应答消息中加入测试结束标志,并加入双方数据接收测试点为呼叫方系统终端设备的数据接收测试点、被呼叫方新的NAT设备上的数据接收测试点,被呼叫方收到应答消息后,如果消息中包含测试结束标志,根据消息的指示将相应数据接收测试点作为双方数据接收测试点。16、权利要求ll的方法,其中,步骤A22)进一步包括步骤A220)、被呼叫方的系统终端设备获取返回消息,确认双方可以直通可达,以双方的系统终端设备上的数据接收测试点为各自接收地址,向呼叫方返回所述被呼叫方系统终端设备上的数据接收测试点;步骤A221)、被呼叫方的系统终端设备确认双方不可以直通可达,获取应答消息中的强制测试点,从系统终端设备上的数据接收测试点向强制测试点发送强制测试消息;步骤A222)被呼叫方的系统终端设备的数据接收测试点收到所述返回的强制测试应答消息后,获耳又应答消息中的测试点,将其作为新的NAT设备上的数据接收测试点,向呼叫方的系统终端设备上的数据接收测试点发送穿越直通测试请求消息,所述穿越直通测试请求消息中包含新的NAT设备上的数据接收测试点;步骤A223)、被呼叫方的系统终端设备获取返回消息,确认双方可以转发直通,以被呼叫方的系统终端设备的新的NAT设备上的数据接收测试点和呼叫方的系统终端设备的数据接收测试点为各自接收地址,记录接收对应关系。17、权利要求9的方法,其中,步骤B20)中,所述转发测试的测试请求消息中包括所述被呼叫方的转发服务节点上的数据接收测试点、NAT设备上的数据接收测试点和系统终端设备上的数据接收测试点,被呼叫方的转发服务节点上的数据接收测试点的层级信息。18、权利要求9的方法,其中,步骤B20)进一步包括所述被呼叫方在系统终端设备的数据接收测试点等待返回消息。19、权利要求9的方法,其中,步骤B21)中,当接收到的转发测试消息是非对称转发测试请求消息,步骤B21)进一步包括步骤B210)、呼叫方系统终端设备获取测试请求消息中的强制测试点,从系统终端设备上的数据接收测试点向被呼叫方的强制测试点发送强制测试消息;步骤B211)、呼叫方在系统终端设备上的数据接收测试点等待强制测试应答消息;步骤B212)、呼叫方系统终端设备获取强制测试应答消息中的新接收点,作为呼叫方新的NAT设备上的数据接收测试点,从呼叫方系统终端设备上数据发送测试点向被呼叫方系统终端设备上的数据接收测试点发送包括呼叫方新的NAT设备上的数据接收测试点的非对称转发测试应答消自20、权利要求9的方法,其中,步骤B21)中,当接收到的转发测试消息是非对称转发测试请求消息,步骤B21)进一步包括步骤B210)、呼叫方系统终端设备获取测试请求消息中的强制测试点,从系统终端设备上的数据接收测试点向被呼叫方的强制测试点发送强制测试消息;步骤B211)、呼叫方在系统终端设备上的数据接收测试点等待强制测试应答消息;步骤B212)、呼叫方系统终端设备获取强制测试应答消息中的新接收点,作为呼叫方新的NAT设备上的数据接收测试点,在非对称转发测试消息的应答消息中加入测试结束标志,并加入双方数据接收测试点为呼叫方新的NAT设备上的数据接收测试点、被呼叫方系统终端设备的数据接收测试点,被呼叫方在收到应答消息后,如果消息中包含测试结束标志,根据消息的指示将相应数据接收测试点作为双方数据接收测试点。21、权利要求9的方法,其中,步骤B21)中,当接收到的转发测试消息是普通转发测试请求消息,步骤B21)进一步包括步骤B210)、呼叫方系统终端设备获取普通转发测试消息中的被呼叫方的转发服务节点上的数据接收测试点、NAT设备上的数据接收测试点和系统终端设备上的数据接收测试点,获取被呼叫方的转发服务节点上的数据接收测试点的层级信息,获取呼叫方的转发服务节点添加的网络地址和端口,并比较双方转发服务节点上的数据接收测试点的层级;步骤B211)、如果所述层级相同,呼叫方从系统终端设备上数据接收测试点向呼叫方的转发服务节点添加的网络地址和端口发送穿洞消息,从呼叫方系统终端设备的数据发送测试点分别向被呼叫方的转发服务节点上的数据接收测试点和系统终端设备上的数据接收测试点发送应答消白步骤B212)、如果所述层级不相同,呼叫方系统终端设备根据被呼叫方的系统终端设备的层级信息重新获取新的转发服务节点上的数据接收测试点和新的NAT设备上的数据接收测试点,从呼叫方系统终端设备的数据发送测试点分别向被呼叫方的转发服务节点上的数据接收测试点和系统终端设备上的数据接收测试点发送应答消息,其中,应答消息包括新的转发服务节点上的数据接收测试点和新的NAT设备上的数据接收测试点。22、权利要求9的方法,其中,步骤B22)进一步包括判断未产生新的穿越测试点后,确认緩存的消息中有经过转发点转发的应答消息;确认更新呼叫方的转发点,调整转发点,重新开始转发测试。23、权利要求9的方法,其中,步骤B22)中,确定产生新的穿越测试点的步骤进一步包括步骤B220)、在被呼叫方的系统终端设备上的数据发送测试点上等待强制测试消息;步骤B221)、获取携带强制测试消息的数据分组携带的源地址和源端口,并向所述源地址和端口返回包括所述源地址和端口的强制测试应答消息;步骤B222)、被呼叫方的系统终端设备获取来自呼叫方的非对称转发测试请求的应答信息,用呼叫方的系统终端设备的新的NAT设备上的数据接收测试点代替原来呼叫方的系统终端设备的NAT设备上的数据接收测试点。24、权利要求22的方法,其中,步骤B22)进一步包括步骤B220)、当判断未产生新的穿越测试点,同时当緩存的消息中存在经过转发点转发的应答消息,获取返回消息中的路径信息和获取被呼叫方的转发服务节点添加的网络地址和端口,从被呼叫方的系统终端设备上的数据接收测试点向被呼叫方的转发服务节点添加的网络地址和端口发送穿洞消息;步骤B221)、判断返回的应答消息中是否有呼叫方新的转发服务节点的数据接收测试点出现;步骤B222)、如果有呼叫方新的转发服务节点的数据接收测试点出现,调整转发测试点,以获取的呼叫方新的转发服务节点的数据接收测试点代替原来的呼叫方转发服务节点上的数据接收测试点,新的呼叫方的系统终端设备的NAT设备上的数据接收测试点代替原来的呼叫方的系统终端设备的NAT设备上的数据接收测试点;步骤B223)、如果没有呼叫方新的转发服务节点的数据接收测试点出现,以双方的转发服务节点上的数据接收测试点为各自的数据接收地址,记录4妻收对应关系。25、权利要求9的方法,其中,步骤B23)进一步包括步骤B230)、当返回的应答消息中不存在未经过转发点转发的应答消息,获取返回消息中的路径信息和获取被呼叫方的转发服务节点添加的网络地址和端口,从被呼叫方的系统终端设备上的数据接收测试点向被呼叫方的转发服务节点添加的网络地址和端口发送穿洞消息;步骤B231)、判断返回的应答消息中是否有呼叫方新的转发服务节点的数据接收测试点出现;步骤B232)、如果有呼叫方新的转发服务节点的数据接收测试点出现,调整转发点,以获取的呼叫方新的转发服务节点的数据接收测试点代替原来的呼叫方转发服务节点上的数据接收测试点,新的呼叫方的系统终端设备的NATi殳备上的数据接收测试点代替原来的呼叫方的系统终端设备的NAT设备上的数据接收测试点;步骤B233)、如果没有呼叫方新的转发服务节点的数据接收测试点出现,以双方的转发服务节点上的数据接收测试点为各自的数据接收地址,记录接收对应关系。26、权利要求10的方法,其中,步骤C21)进一步包括步骤C210)、呼叫方的系统终端设备接收到NAT穿越测试消息后,获取携带该消息的数据分组的源地址;比较所述源地址和一皮呼叫方的系统终端设备的数据接收测试点的网络地址是否相同;步骤C211)、如果地址相同,从呼叫方的系统终端设备的数据发送测试点向被呼叫方的系统终端设备上的数据接收测试点发送应答消息;步骤C212)、如果地址不相同,从呼叫方的系统终端设备的数据发送测试点向被呼叫方的系统终端设备的NAT设备上的数据接收测试点发送应答消息。27、权利要求10的方法,其中,步骤C21)进一步包括步骤C210)、呼叫方的系统终端设备接收到NAT穿越测试消息后,获取携带该消息的数据分组的源地址;比较所述源地址和被呼叫方的系统终端设备的数据接收测试点的网络地址是否相同;步骤C211)、如果地址相同,在穿越测试消息的应答消息中加入测试结束标志,并加入双方数据接收测试点为呼叫方新的NAT设备上的数据接收测试点、被呼叫方系统终端设备的数据接收测试点,被呼叫方在收到应答消息后,如果消息中包含测试结束标志,根据消息的指示将相应数据接收测试点作为双方数据接收测试点;步骤C212)、如果地址不相同,在穿越测试消息的应答消息中加入测试结束标志,并加入双方数据接收测试点为双方NAT设备上的数据接收测试点,被呼叫方在收到应答消息后,如果消息中包含测试结束标志,根据消息的指示将相应数据接收测试点作为双方数据接收测试点。28、权利要求10的方法,其中,步骤C22)进一步包括步骤C220)、被呼叫方在系统终端设备上的数据接收测试点等待应答消息;步骤C221)、判断记录的接收对应关系中是否存在以双方转发服务节点上的数据接收测试点作为接收对应关系的记录;步骤C222)、如果存在,以双方的NAT设备上的数据接收测试点作为各自的接收地址,建立接收对应关系,并记录所述接收对应关系;步骤C223)、如果不存在,以被呼叫方的系统终端设备上的数据接收测试点和呼叫方NAT设备上的数据接收测试点作为各自的接收地址,建立接收对应关系,并记录所述接收对应关系。29、权利要求3的方法,其中,步骤4)进一步包括从被呼叫方和呼叫方的数据接收对应关系记录中找到最后加入的记录,向呼叫方返回所述最后记录中的被呼叫方的数据接收端口和网络地址。全文摘要本发明公开了一种系统终端设备建立NAT穿越通道的方法,包括呼叫方系统终端设备通过转发服务节点分别获取转发服务节点上的数据接收端口及网络地址、NAT设备上的数据接收端口及网络地址和系统终端设备上的数据接收端口及网络地址,并发送给被呼叫方的系统终端设备;被呼叫方的系统终端设备的数据发送端口向呼叫方系统终端设备分别顺序直通测试、转发测试和穿越测试,获取呼叫方系统终端设备的接收数据端口的网络地址和端口;将被呼叫方的系统终端设备的数据接收的网络地址与端口发送给呼叫方系统终端设备。本发明考虑多级NAT下端到端通信的多样性,充分利用多级NAT所构成私网内的网络资源,可以在多种场景下实现NAT的穿越。文档编号H04L1/16GK101262447SQ20081010458公开日2008年9月10日申请日期2008年4月21日优先权日2008年4月21日发明者川傅,张国清,杨清峰,迪王,秦卓琼申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1