CN1825828B - 一种两端均处于不同nat下直接穿透通信的控制方法和设备 - Google Patents
一种两端均处于不同nat下直接穿透通信的控制方法和设备 Download PDFInfo
- Publication number
- CN1825828B CN1825828B CN2005100088719A CN200510008871A CN1825828B CN 1825828 B CN1825828 B CN 1825828B CN 2005100088719 A CN2005100088719 A CN 2005100088719A CN 200510008871 A CN200510008871 A CN 200510008871A CN 1825828 B CN1825828 B CN 1825828B
- Authority
- CN
- China
- Prior art keywords
- nat
- port
- user
- address
- local
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
- H04L61/2578—NAT traversal without involvement of the NAT server
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
- H04L61/2567—NAT traversal for reachability, e.g. inquiring the address of a correspondent behind a NAT server
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
- H04L61/2575—NAT traversal using address mapping retrieval, e.g. simple traversal of user datagram protocol through session traversal utilities for NAT [STUN]
Abstract
本发明公开了用于使得处于NAT下与在不同NAT下用户装置进行直接穿透通信的用户装置及其通信,通过由一个选择的本地端口向外网辅助探测装置发送探测报文,并接收来自所述辅助探测装置的应答报文获取该探测报文被NAT转换的NAT源端口,并通过比较多次探测报文的NAT源端口来确定所选择的本地端口是否为穿透端口,然后将其对应的NAT源地址和NAT穿透端口通过外网设备通知在不同NAT下的另一个用户装置(同样也通过外网设备来接收所述另一个用户装置所确定的NAT穿透端口和NAT源地址),从而可以经由所确定的本地穿透端口将对方的NAT源地址和NAT穿透端口作为目的地址和目的端口进行直接穿透通信。
Description
技术领域
本发明涉及数据通信领域,尤其涉及IP通信协议中非常普遍的NAT内的用户互相通信的控制方法和设备,比如:P2P(Peer to Peer)通信应用领域。
背景技术
在数据通信领域包括:互联网、GPRS和CDMA 1x以及公司内部各组织中,广泛使用IP通信协议进行通信。IP通信协议以其开放性、简单性、成本低廉等因素得到了大量通信设备和主机设备的支持,成为最广泛使用的数据通信协议。
当前的IP通信方式,是依据IETF国际组织所制定的IPv4通信协议,IPv4定义了IP地址以4个Byte为标识。由于IP通信协议的在商业领域内得到广泛使用,导致了IP地址严重短缺。因此,IETF组织制定了NAT技术规范,规定可以在组织和企业内部,使用保留的地址,作为内部私有地址,当这些地址的用户需要访问互联网上的其他用户时,在组织和企业出口,使用NAT设备,进行地址转换功能,将私有地址转换为公有IP地址,在转换中,可以一对一进行转换,也可以多对一进行转换(但依据端口号进行区分),当进行多对一或多对多(但内部地址多于公有地址)转换时(有些时候也称为PAT或NAPT,这里都简称NAT,因为一对一的NAT基本上没有应用领域),就可以达到节省公有IP地址的目的。现在,基本上所有的组织和企业,都使用NAT技术,在内部使用私有地址,在公司到互联网的出口部署NAT设备,进行地址转换。
另外一个使用NAT技术的目的是对内部设备和主机进行保护,由于NAT屏蔽了外部主机对内部主机的访问(除非是NAT上进行了内部主机到NAT外部地址的固定端口映射,这种情况只可能是内部主机希望对外提供服务),所以对于组织和企业的内部用户,就会比较安全,不容易被外部恶意者所攻击。这种NAT技术广泛用于公司的防火墙策略。
因此,在IPv4领域,NAT的存在节省了IP地址和带来安全性,在IPv6领域,由于IP地址扩展到6个Byte为标识,节省地址不再必要,但从安全性上考虑,防火墙仍然会使用NAT技术以保护内部用户。
按照IETF对NAT的定义,NAT主要分为两大类:基础NAT(一对一地址转换),NAPT(多对一或多数对少数地址转换)。
其中,IETF RFC3489 STUN-Simple Traversal of User DatagramProtocol(UDP)Through Network Address Translators(NATs)中,NAPT主要分为两大类:Cone NAT和Symmetric NAT,Cone NAT的特点是当内部主机通过同一个源端口无论访问外部任何地址,NAT设备在转换后都使用一个端口号,一直到这个会话结束才解除端口绑定;SymmetricNAT的特点是内部主机访问任何外部地址和端口,NAT设备在转换后都要使用一个新的端口号。
Cone NAT还有分类,就是全双工Cone NAT,受限制的Cone NAT,端口受限制的Cone NAT。
全双工Cone NAT,当内部主机发出一个“外出”的连接会话,就会创建了一个公网/私网地址,一旦这个地址对被创建,全双工Cone NAT会接收随后任何外部端口传入这个公共端口地址的通信。
受限制的Cone NAT,对传入的数据包进行筛选,当内部主机发出“外出”的会话时,NAT会记录这个外部主机的IP地址信息,所以,也只有这些有记录的外部IP地址,能够将信息传入到NAT内部,受限制的ConeNAT有效的给防火墙提炼了筛选包的原则——即限定只给那些已知的外部地址“传入”信息到NAT内部。
端口受限制的Cone NAT,与受限制的Cone NAT不同的是:它同时记录了外部主机的IP地址和端口信息,所以,也只有有记录的IP地址和端口信息,能够将信息传入到NAT内部。
出于安全性考虑,全双工Cone NAT和受限制的Cone NAT很少被采用。仅当内部服务器希望对外提供服务时,使用全双工Cone NAT建立内部服务器到NAT公网地址和某个特定端口的一一映射。
由于在使用中的NAT出于种种安全性考虑,屏蔽了外部主机对内部用户的访问,因此,内部用户可以自由的通过NAT对外部主机进行访问,但相反,外部主机不能自由地通过NAT访问内部用户。同样地,一个NAT下的内部用户一般不可能直接访问另一个NAT下的内部用户。
在目前以BS和CS架构下的应用环境下,这种方式是完全可行的,但是在P2P应用环境下,由于每一个用户都有可能为其他用户提供服务,而不仅仅是拥有公网地址的服务器。
在现在技术中,解决以上两个问题的技术方案有两个:
第一,解决外部的用户访问内部用户的问题。使用某种方法通知内部用户主动访问外部用户,就能使得该外部用户的IP地址和端口号被NAT记录,从而使得外部用户可以通过NAT访问内部用户,实际上是一种反联的方式,上述通知的过程一般是通过一个第三方设备来进行,因而所有的外部/内部用户都预先与第三方设备建立联系,由第三方设备进行通知过程。
第二,解决一个NAT下的内部用户与另一NAT下的内部用户的互访问题。采用一个位于公网上的第三方设备,所有的内部用户都可以自由访问该第三方设备,由该第三方设备充当代理(proxy),用于转发在任何两个内部用户之间的所有数据报文。
以上第二种方案缺陷比较明显,需要公网上的第三方设备进行所有流量的转发,这将消耗大量的网络资源。
公知地,Cone NAT(以下除非特殊注明,下述NAT一般指端口限制的Cone NAT)具有一个特性,当用户在一次会话中,使用同一个源IP地址和源端口,向外网任何地址的主机进行访问时,Cone NAT都会使用同一个NAT的外网出口地址和源端口,向外网的主机进行访问。本发明认识到,可以利用Cone NAT这一特性来实现一个NAT下的内部用户与另一NAT下的内部用户的直接互访,而无需通过一个外部的第三方代理。
一个重要问题出现了,绝大部分NAT设备,例如Cisco路由器、WinXP、Linux IPTABLE、Wingate、Sysgate等等,通常都表现为SymmetricNAT,而是在一些特定条件下才表现出Cone NAT的特性。
名词解释:
NAT:用于内部地址与外部地址转换的设备。定义在IETF RFC1631,RFC3022。
Cone NAT:在一次回话中,使用同一端口号向不同目标地址和端口发送的连接报文,NAT都会转换为同一源端口的报文。
Symmetric NAT:使用同一端口号向不同目标地址和端口发送的连接报文,NAT都会转换为不同源端口的报文。
用户装置:完成对NAT的探测和与另一方NAT下用户装置进行通信。
通知装置:转发NAT下的用户装置的通知报文。
辅助探测装置:应答用户装置发送的探测报文,获取NAT外网地址和被NAT所转换的源端口信息,发送给相应的用户装置。
NAT穿透端口:NAT上被用户装置所探测出,并用于NAT穿透通信的端口,与内网用户装置的本地穿透端口一一映射。
本地穿透端口:用户装置所探测出可以用于NAT穿透通信的本地源端口,在NAT上与NAT穿透端口一一映射。
发明内容
本发明的目的是提供一种位于NAT下与在不同NAT下的其他设备进行直接穿透通信的设备及其方法。
根据本发明的第一方面,提供一种在NAT下的用户装置中与在不同NAT下的用户装置进行直接穿透通信的通信方法,包括以下步骤:
-选择一个本地源端口,用以发送和接收报文;
-获取所述本地源端口在NAT上的对应的NAT外网地址和NAT端口;
-通过一个外网的通知装置将自己的所述NAT外网地址和NAT端口通知另一个NAT下的用户装置,并通过外网的通知装置获知来自所述另一个NAT下的用户装置的NAT外网地址和NAT端口;
-通过所述本地源端口,所述的用户装置和对端的用户装置分别使用所接收的对方NAT的外网地址和NAT端口作为目标地址进行直接通信。
根据本发明的第二方面,提供了一种在NAT下的用户装置中用于检测所选择的本地源端口是否为穿透端口的方法,包括以下步骤:
—选择一个本地源端口;
—通过所述源端口经由NAT向外网辅助探测装置上的多个目标端口或向外网的多个辅助探测装置发出多次探测报文;
—接收来自所述外网辅助探测装置的探测应答报文,其中所述探测应答报文的内容包括所述探测报文在NAT上对应的NAT源地址和NAT端口;
—获取所述探测报文被NAT上转换后的NAT源地址和NAT源端口;
—如果多次探测报文的NAT源端口都相同,则判断所述本地端口为与其他设备的端口没有冲突的本地穿透端口;
—否则,再选择一个不同的本地源端口,重复以上步骤,直到找到合适的端口为止。
根据本发明的第三方面,提供了一种在NAT下的用户装置,其用于通过一个特定的本地端口与另一个NAT下的用户装置直接穿透通信,该用户装置有多个网络端口,还包括:
选择装置,用于选择一个本地源端口,用以发送和接收报文;
探测装置,用于获取所述本地源端口在NAT上的对应的NAT源地址和NAT端口;
端口信息交换装置,用于通过一个外网的通知装置将所述NAT源地址和NAT端口通知其他NAT下的另一个用户装置,并通过外网的通知装置来获知来自所述另一个NAT下的用户装置的NAT源地址和NAT端口,
其中,通过所述本地源端口,所述用户装置和对端的用户装置分别使用所接收的对方NAT源地址和NAT端口作为目标地址进行直接通信。
根据本发明的第四方面,提供了一种在外网辅助探测装置中用于辅助NAT下的用户装置获取其本地源端口所对应的NAT端口的方法,包括:
接收来自所述用户装置的探测报文;
由所接收的探测报文中解析出报文源地址和源端口信息;
通过应答报文将所解析出的报文源地址和源端口信息发送给所述用户装置。
根据本发明的第五方面,提供了一种在外网中用于辅助NAT下的用户装置获取其本地源端口所对应的NAT端口的辅助探测装置,包括:
报文解析装置,用于由所接收的探测报文中解析出报文源地址和源端口信息;
发送装置,通过应答报文将所解析出的报文源地址和源端口信息发送给所述用户装置。
与现有技术不同,根据本发明的技术方案,解决不同NAT下的用户装置直接相互通信的问题,不需要所有的报文都通过外部代理来转发
附图说明
下面参照附图来对本发明进行详细描述,其中相同的附图标记表示相同或相似的部件:
图1为根据本发明的一个优选实施例的支持分别处于不同NAT下的用户装置进行直接穿透通信的拓扑结构图;
图2为所选择的用户装置源端口不可以穿透通信的情形的示意图;
图3为所选择的用户装置源端口可以穿透通信的情形的示意图;
图4为根据本发明一个优选实施例的在不同NAT下的用户装置进行直接穿透通信方案中通知阶段的示意图;
图5为根据本发明一个优选实施例的在不同NAT下的用户装置进行直接穿透通信方案中通信建立阶段的示意图;
图6为根据本发明一个优选实施方式的用于支持在不同NAT下的用户装置进行直接穿透通信的通信方法的流程图;
图7为根据本发明的一个优选实施例的在一个NAT下用于与在不同NAT下的其他用户装置进行直接穿透通信的用户装置的框图;
图8为根据本发明一个优选实施例的辅助探测装置的框图。
具体实施方式
下面参考附图,并结合具体实施例对本发明作详细描述。应当理解,本发明并不限于具体实施例。
图1为根据本发明的一个优选实施例的支持分别处于不同NAT下的用户装置进行直接穿透通信的拓扑结构图。图中示出四种不同设备:用户装置A 1和用户装置B(为简明起见,仅给出用户装置A的附图标记),NAT A 2和NAT B(为简明起见,仅给出NAT A的附图标记),通知装置3,辅助探测装置4。
NAT2在内网和外网之间,完成地址转换功能。
用户装置A和B分别处于NAT A和NAT B之下,运行在内网环境下,由于通知装置3和辅助探测装置4运行在外网环境下,所以用户装置A和B都可以自由访问通知装置3和辅助探测装置4。
根据本发明的用于在不同NAT下进行直接穿透通信的技术方案包括通知建立阶段、通知建立阶段、通知阶段和通信建立阶段等四个阶段。下面结合图1并参照图2-5来对这四个阶段进行详细描述。
通知建立阶段:
通知装置3是一个信令代理和信令处理装置,可以完成用户装置之间的信息共享。通知装置3可以通过两种方式来实现信息共享,一种方式是同步方式,另一种方式是异步方式。
同步方式时,通知装置3的功能包括:注册功能、握手功能、信令转发功能,这三种功能具体如下所述:
注册功能:用户装置A和B使用预设唯一的识别号ID,访问通知装置,在通知装置上完成注册。
握手功能:用户装置A和B需要维持与通知装置的连接,以便通知装置3及时与用户装置进行通信。因为,长时间不通信,NATA和NATB上的通信端口会被NAT所老化掉,老化时间可配置(一般为1分钟)。所以用户装置需要定时(一般为30秒)向通知装置发送握手报文,该握手报文没有实际意义,通知装置3也可以不响应,仅用于维持NAT端口不被老化,保持用户装置A和B分别经由NAT A和NAT B的与通知装置3的长连接。长连接的意义就在于不仅仅用户装置可以向通知装置3发送报文,通知装置3也可以向用户装置A和B发送报文。
在异步方式中,用户装置不一定要与通知装置3建立一个长连接,而是用户装置定时(例如几分钟)到通知装置3上提取自己所要(其他装置发送给自己)的信息。其中,通知装置3可以预先为每个用户装置分配一个存储区域。
用户装置A 1通过发送信息到通知装置3,并标明该信息是要实际发送给用户装置B的,则通知装置3将该信息放到用户装置B可以访问的存储区域,而不需要主动告诉用户装置B。当用户装置B定时来访问通知装置3上预设的存储区域时,就可以获取用户装置A发送给自己的信息。
异步方式下的通知装置3也可以采用电子邮件服务器,就可以达到同样的功能。
探测阶段:
NAT在以下特定情况下表现为Cone NAT特性,也就是同一个内网内的通信主机和设备(用户装置),经由NAT在对外访问时,使用的NAT源端口不能与其他内部主机和设备所使用的NAT源端口一致。当用户装置使用这样的特殊端口访问不同的外部地址和端口时,NAT就采用一个端口与之相对应,而不需要打开多个端口。这表现为Cone NAT特性。
由于用户装置无法获知同一个NAT下的其他用户采用哪些NAT源端口,也就无法获知自己所用端口是否与同一内网下的其他用户装置所用端口相冲突,而如果出现冲突,则不能获得Cone NAT的应用环境。
所以,用户装置可以,通过不断(在端口号为2000以上的端口中,因为一般地,端口号为1024以下的端口大部分为系统所占用)选择一个源端口(用户装置的源端口)直至通过一个源端口能够进行正常通信的方式,来判断是否找到一个具有Cone Nat特性(也即,不与在同一NAT下的其他用户装置所用端口相冲突)的源端口。另外,所以用户装置也可通过一个外部的辅助探测装置4来探测所选择的源端口是否与与在同一NAT下的其他用户装置所用端口相冲突,具体的,用户装置以该选择的源端口发送探测报文给辅助探测装置4,并接收来自辅助探测装置4的探测应答报文,然后通过所接收的探测应答报文来判断该源端口是否与其他用户装置所用端口相冲突。
下面表1-2为探测报文和探测应答报文的数据结构的示例:
图2示出了所选择的用户装置本地源端口不可以穿透通信的情形。其中,同一用户装置1的源端口、源地址的报文因为目标地址、端口不同,被NAT转换为经由多个NAT源端口(图中示出三个不同端口)发送的报文。
而图3示出了所选择的本地源端口可以穿透通信的情形。其中,同一用户装置的源端口、源地址的报文被NAT 2转换为经由NAT的同一个NAT源端口发送的报文。
通过探测过程,用户装置1就能获取到每一次发送报文被NAT转换后的NAT源端口号。重复探测过程,当用户装置1发现通过一个特定的用户源端口发送报文时,无论发送给辅助探测装置4的任何一个端口或发送给多个辅助探测装置A和B时,NAT都使用同一个NAT端口进行转发。就发现该用户端口体现出Cone NAT特性,可以使用该用户端口作为本地穿透端口,而对应的NAT端口被称为NAT穿透端口。
通知阶段:
图4为根据本发明一个优选实施例的在不同NAT下的用户装置进行直接穿透通信方案中通知阶段的示意图;
信令转发:当用户装置A 1需要告知用户装置B自己的NAT穿透端口时,用户装置A通过发送信息到通知装置3,并标明内容是要实际发送给用户装置B的,通知装置将该信息重新封装新的IP地址和端口号以后,通过在上述同步方式中与用户装置B预先建立的长连接端口,发送该信息给用户装置。用户装置B收到该报文后,从中提取出用户装置A的NAT穿透端口。
用户装置B重复以上步骤,使得用户装置A也获得用户装置B的NAT穿透端口。
通信建立阶段:
图5为根据本发明一个优选实施例的在不同NAT下的用户装置进行直接穿透通信方案中通信建立阶段的示意图;
其中,用户装置A 1向用户装置B发送通信握手报文,如下表3所示。
表3
报文内容表示收到报文,没有实际意义。
用户装置互相成功收到报文后,就表明NAT A已经成功将用户装置A的穿透端口与用户装置B的NAT穿透端口建立绑定关系,NAT B已经成功将用户装置B的穿透端口与用户装置A的NAT穿透端口建立绑定关系(此为端口受限制的NAT的特性,为现有技术)。
用户装置A和B使用根据探测过程选定的穿透源端口,将对方的NAT外网地址和NAT源端口,作为目的地址和目的端口,发送握手包。由于NAT A和NAT B会分别记录下其内网用户装置A和B向哪一个外部地址和端口发起过报文,以此来判断外部地址和端口号的报文,是否是对方的合法应答报文,如果某个来临报文的目标地址是NAT地址,目标端口是NAT已经分配给内网用户装置(例如内部主机和设备)的NAT穿透端口号,但如果该报文的源地址和源端口号,在预定时间内没有被由该NAT穿透端口号发出的报文访问过,NAT就会认为是该报文是非法报文而将其丢弃。但是,通过NAT下的主机和设备在一定时间内重复地相互对发探测报文,就可以让两端的NAT确认对方发出的报文是本方所发出报文的应答报文,从而,这些报文就可以有效地传送到对方的用户装置上。
通信阶段:
在通信建立过程之后,在NAT A和NAT B之下的两个用户装置A和B就可以进行直接穿透通信,也即进入通信阶段。图5示出了根据本发明一个优选实施例的用于在不同NAT下进行直接穿透通信方案中的通信阶段的示意图
用户装置A发送通信报文给用户装置B的NAT穿透端口和NAT外网地址,用户装置B通过本地穿透端口接收用户装置A发送的报文。
用户装置B发送通信报文给用户装置A的NAT穿透端口和NAT外网地址,用户装置A通过本地穿透端口接收用户装置B发送的报文。
用户装置A和B所发送的报文的具体内容如下表4所示:
其中,报文内容为有效数据载荷。
图6为根据本发明的用于支持在不同NAT下的用户装置进行直接穿透通信的通信方法的流程图,下面参照图6对该方法进行详细说明:
在步骤S1中,NAT下的用户装置首先向外网的通知装置进行注册,每个用户装置有一个特定的ID识别号,通知装置将这个识别号与相应的信令端口和信令IP地址进行绑定,随后进到步骤S2;
在步骤S2中,NAT下的用户装置与外网的通知装置进行定时握手,以防止NAT上的端口不被老化(这一步骤是可选的,因为NAT上的端口可以保持一定时间不被老化),随后进到步骤S3;
在步骤S3中,NAT外部的辅助探测装置打开多个端口,NAT下的用户装置选择1个本地源端口(其中,端口号高于2000成功率较高,因为2000以下的端口大部分为系统占用),同时向多个辅助探测装置或一个辅助探测装置上的多个目标端口发出探测报文,探测报文中填写本地源端口号,NAT将该报文的源地址转换为NAT的外网地址,将本地源端口转换为按照预定规则选择的NAT源端口,辅助探测装置根据收到的被NAT转换后的探测报文的源IP地址和源端口号,将该源IP地址和源端口号填写在应答报文的数据域中,将应答报文发送回发起探测的用户装置,填写的目标IP地址和目标端口号应是NAT的外网地址和发起探测的用户装置相对应的NAT端口号;
在步骤S4中,NAT下的用户装置接收的探测应答报文,获取到自己上次发送的探测报文在NAT上的相应的NAT端口号。
在步骤S5中,用户装置检测并判断选择某个源端口发出多个探测报文时在NAT上是否被映射为同一个NAT源端口号,如果是,则进到步骤S6,否则,重复上述步骤S3和S4。
在步骤S6中,用户装置就会选择这一特定的本地源端口作为发送和接收之用的本地穿透端口号,而将NAT上相应的NAT穿透端口通知其他用户装置;
并且,优选的,用户装置可定时通过该本地穿透端口发送握手报文给外部装置,以维持该端口不被NAT老化。
在随后的步骤S7中,NAT下的用户装置向NAT外部的通知装置发送通知报文,报文内容至少包含:发送方ID,接收方ID,发送方的NAT地址和穿透端口。
在步骤S8中,通知装置接收到通知报文后,解析报文内容,根据接收方ID,查询相应的信令端口和信令IP地址,将报文重新封装后发送给相应的接收方用户装置。
在步骤S9中,接收的用户装置收到通知报文后,获取到对方的NAT地址和NAT穿透端口。
在步骤S10中,接收的主机也向对方发送通知报文,重复上述步骤S7-S9步骤,直到双方都获取到对方的NAT地址和穿透端口。
在步骤S11中,两个NAT下的用户装置就可以通过预定的本地穿透端口,将对方的NAT外网地址和端口,作为目的地址和目的端口,向对方发送握手包。
在随后的步骤S12中,用户装置判断是否收到握手包后,如果收到即表明可以使用该穿透端口进行通信,如果不能收到,重复发送步骤S11。(这是由于握手包在实际网络环境中可能丢失,不是必要技术特征)
在步骤S13中,一旦该握手建立完成,两个不同NAT下的用户装置就可以通过既定的源端口进行自由通信,当然限制条件是必须使用该既定端口才可以互相通信。
图7示出了根据本发明的一个优选实施例的在一个NAT下用于与在不同NAT下的其他用户装置进行直接穿透通信的用户装置的框图。
其中,所述用户装置1包括:
一个选择装置11,用于选择一个本地源端口,用以发送和接收报文;
一个探测装置12,用于获取所述本地源端口在NAT上的对应的NAT源地址和NAT端口;
一个端口信息交换装置13,用于通过一个外网的通知装置将所述NAT源地址和NAT端口通知其他NAT下的另一个用户装置,并通过外网的通知装置来获知来自所述另一个NAT下的用户装置的NAT源地址和NAT端口,
其中,通过所述本地源端口,所述用户装置和对端的用户装置分别使用所接收的对方NAT源地址和NAT端口作为目标地址进行直接通信。
在一个优选实施例中,所述探测装置12包括:
一个探测报文发送装置121,用于通过所述本地源端口经由NAT向外网的辅助探测装置发送探测报文;
一个应答报文接收装置122,用于接收来自所述外网的辅助探测装置的应答报文,在所述应答报文中包括所述探测报文的被NAT转换后的NAT源地址和NAT源端口;和
一个提取装置123,用于从所述应答报文中提取出所述探测报文被NAT转换后的NAT源地址和NAT源端口。
优选的,如果在所述用户装置在限定时间不能实现正常通信时,则所述选择装置就重新选择一个不同的本地源端口;而所述探测装置也用于重新获取所述重新选择的本地源端口在NAT上的对应的NAT源地址和NAT端口。
在另一个优选实施例中,所述探测装置12包括:
一个探测报文发送装置121,用于通过所选择的本地源端口经由NAT向外网辅助探测装置上的多个目标端口或向外网的多个辅助探测装置发出多次探测报文;
一个应答报文接收装置122,用于接收来自所述外网辅助探测装置的多个应答报文,其中所述每个应答报文的内容包括其对应的探测报文被NAT转换后的NAT源地址和NAT端口;
一个提取装置123,用于从所述应答报文中提取出所述探测报文被NAT转换后的NAT源地址和NAT源端口;
一个确定装置124,如果所述多次探测报文的NAT源端口都相同,则确定所述本地端口为与其他设备的端口没有冲突的本地穿透端口,并以所述NAT源地址和NAT端口作为最后选择的NAT外网地址和NAT端口。否则,选择装置11重新选择一个不同的本地源端口,在由探测装置12来通过发送多次探测报文来确定该本地源端口是否为与其他设备的端口没有冲突的本地穿透端口。
端口信息交换装置14将最后确定的NAT穿透端口信息经由外网的通知装置告知在不同NAT下的另一个用户装置,并获知所述另一个用户装置的的NAT源地址和NAT穿透端口,从而可以通过本地穿透端口将对方的NAT源地址和NAT穿透端口作为目的地址和目的端口进行通信。
图8还示出了根据本发明一个优选实施例的辅助探测装置的框图,所述辅助探测装置位于外网,用于辅助NAT下的用户装置获取其本地源端口所对应的NAT端口,其中辅助探测装置4包括:
报文解析装置41,用于由所接收的探测报文中解析出报文的源地址和源端口信。
发送装置42,通过应答报文将所解析出的报文源地址和源端口信息发送给所述用户装置。
为简明起见,在上下文中引用了内网和公网,内部地址和公有地址等术语,但本发明不仅仅应用于内网和公网领域,而是适用于任何NAT应用领域下,例如:在企业内部可能有多级NAT,两个组织下的用户装置分别处于不同NAT下。
本发明优选地适用于通过UDP的通信。
对于完全的Symmetric NAT,本发明并不适用。但是大部分商用的NAT都是采用一种混合模式,大部分情况下表现为Symmetric NAT,特殊情况下表现为Cone NAT。
以上对本发明的具体实施例进行了描述。需要理解对是,本发明并不局限于上述特定对实施方式,本领域技术人员可以在所附权利要求的范围内做出各种变形或修改。
Claims (8)
1.一种在NAT下的用户装置中与在不同NAT下的用户装置进行直接穿透通信的通信方法,包括以下步骤:
a)选择一个本地源端口,用以发送和接收报文;
b)通过所述本地源端口经由NAT向外网辅助探测装置上的多个目标端口或向外网的多个辅助探测装置发出多次探测报文;
c)接收来自所述外网辅助探测装置的多个探测应答报文,其中所述探测应答报文的内容包括该探测应答报文对应的探测报文被NAT转换后的NAT源地址和NAT源端口;
d)从所述应答报文中提取所述探测报文被NAT转换后的NAT源地址和NAT源端口;
e)如果所述多次探测报文的NAT源端口都相同,则判断所述本地源端口为与其他设备的端口没有冲突的本地穿透端口,并以所述NAT源地址和NAT源端口作为最后选择的NAT外网地址和NAT端口:
f)否则,重新选择一个不同的本地源端口,重复以上步骤,直到找到合适的本地穿透端口为止;
g)通过一个外网的通知装置将本用户装置的所述NAT外网地址和NAT端口通知另一个NAT下的用户装置,并通过外网的通知装置获知来自所述另一个NAT下的用户装置的NAT外网地址和NAT端口;
i)通过所述合适的本地穿透端口,所述的用户装置和对端的用户装置分别使用所接收的对方的NAT外网地址和NAT端口作为目标地址进行直接通信。
2.根据权利要求1所述的方法,其特征在于:所述用户装置可同时选择多个本地源端口,并对于每个选择的本地源端口,同时执行所述步骤a)-f),以更快地确定一个可以实现通信的本地源端口。
3.根据权利要求1或2所述的方法,其特征在于,所述合适的本地穿透端口为端口限制的本地穿透端口,在所述步骤g)之后且在所述步骤i)之前,还包括:
-通过所述合适的本地穿透端口,所述的用户装置使用对端的用户装置的NAT外网地址和NAT端口作为目的地址和目的端口发送握手包;
-接收所述对端的用户装置以所述用户装置的NAT外网地址和NAT端口作为目的地址和目的端口发来的握手包;
所述步骤i)包括:
-在握手建立完成后,所述用户装置和对端的用户装置通过所述合适的本地穿透端口进行直接通信。
4.一种在NAT下的用户装置中用于检测所选择的本地源端口是否为本地穿透端口的方法,包括以下步骤:
选择一个本地源端口;
通过所述本地源端口经由NAT向外网辅助探测装置上的多个目标端口或向外网的多个辅助探测装置发出多次探测报文;
接收来自所述外网辅助探测装置的探测应答报文,其中所述探测应答报文的内容包括所述探测报文被NAT转换后的NAT源地址和NAT源端口;
获取所述探测报文被NAT转换后的NAT源地址和NAT源端口;
如果多次探测报文的NAT源端口都相同,则判断所述本地源端口为与其他设备的端口没有冲突的本地穿透端口;
否则,再选择一个不同的本地源端口,重复以上步骤,直到找到合适的本地穿透端口为止。
5.根据权利要求4所述的方法,其特征在于:所述用户装置同时选择多个本地源端口发起探测,对于每个本地源端口,都执行权利要求4中所述的各个步骤,来检测该本地源端口是否为合适的本地穿透端口。
6.一种在NAT下的用户装置,其用于通过一个特定的本地端口与另一个NAT下的用户装置直接穿透通信,该用户装置有多个网络端口,还包括:
选择装置,用于选择一个本地源端口,用以发送和接收报文;
探测装置,其中包括:
探测报文发送装置,用于通过所述本地源端口经由NAT向外网辅助探测装置上的多个目标端口或向外网的多个辅助探测装置发出多次探测报文;
应答报文接收装置,接收来自所述外网辅助探测装置的多个探测应答报文,其中所述探测应答报文的内容包括该探测应答报文对应的探测报文被NAT转换后的NAT源地址和NAT源端口;
提取装置,用于从所述探测应答报文中提取出所述探测报文被NAT转换后的NAT源地址和NAT源端口;
确定装置,如果所述多次探测报文的NAT源端口都相同,则确定所述本地源端口为与其他设备的端口没有冲突的本地穿透端口,并以所述NAT源地址和NAT源端口作为最后选择的NAT外网地址和NAT端口;
端口信息交换装置,用于通过一个外网的通知装置将所述最后选择的NAT外网地址和NAT端口通知另一个NAT下的用户装置,并通过外网的通知装置来获知来自所述另一个NAT下的用户装置的NAT外网地址和NAT端口;
其中,通过所述本地源端口,所述用户装置和对端的用户装置分别使用所接收的对方NAT外网地址和NAT端口作为目标地址进行直接通信。
7.根据权利要求6所述的用户装置,其特征在于:
所述选择装置还用于同时选择多个本地源端口;
所述探测装置中的各个装置还用于同时为所述多个本地源端口分别执行相应的操作。
8.根据权利要求6或7所述的用户装置,其特征在于,所述合适的本地穿透端口为端口限制的本地穿透端口,其中,在所述用户装置通过所述合适的本地穿透端口,使用对端的用户装置的NAT外网地址和NAT端口作为目的地址和目的端口发送握手包;
并且,所述用户装置还接收所述对端的用户装置以所述用户装置的NAT外网地址和NAT端口作为目的地址和目的端口发来的握手包;
其中,在握手建立完成后,所述用户装置和对端的用户装置通过所述合适的本地穿透端口进行直接通信。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2005100088719A CN1825828B (zh) | 2005-02-24 | 2005-02-24 | 一种两端均处于不同nat下直接穿透通信的控制方法和设备 |
PCT/CN2006/000259 WO2006089481A1 (fr) | 2005-02-24 | 2006-02-23 | Méthode de contrôle de communication de pénétration directe dont deux parties sont dans différents nat et dispositif correspondant |
US11/885,011 US8422486B2 (en) | 2005-02-24 | 2006-02-23 | Method for controlling direct penetrating communication between two devices under different NATs, and device for the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2005100088719A CN1825828B (zh) | 2005-02-24 | 2005-02-24 | 一种两端均处于不同nat下直接穿透通信的控制方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1825828A CN1825828A (zh) | 2006-08-30 |
CN1825828B true CN1825828B (zh) | 2011-04-27 |
Family
ID=36927030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005100088719A Active CN1825828B (zh) | 2005-02-24 | 2005-02-24 | 一种两端均处于不同nat下直接穿透通信的控制方法和设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8422486B2 (zh) |
CN (1) | CN1825828B (zh) |
WO (1) | WO2006089481A1 (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NL1033102C2 (nl) * | 2006-12-21 | 2008-06-24 | V S N Systemen B V | Werkwijze voor het opzetten van een peer-to-peerverbinding tussen twee communicatiemedia. |
US7933273B2 (en) * | 2007-07-27 | 2011-04-26 | Sony Computer Entertainment Inc. | Cooperative NAT behavior discovery |
JP2009089183A (ja) * | 2007-10-01 | 2009-04-23 | Brother Ind Ltd | 情報処理装置及び情報処理プログラム |
CN101299773A (zh) * | 2008-06-02 | 2008-11-05 | 华为技术有限公司 | 一种实现网络地址转换的方法、处理器和系统 |
US8149840B2 (en) | 2008-06-02 | 2012-04-03 | Huawei Technologies Co., Ltd. | Method, system and processor for processing network address translation service |
TW201029413A (en) * | 2009-01-21 | 2010-08-01 | Univ Nat Taipei Technology | NAT traversal method in Session Initial Protocol |
CN102137416B (zh) * | 2010-12-16 | 2013-04-17 | 华为软件技术有限公司 | 一种网络设备故障分析方法及装置 |
CN102710518B (zh) * | 2012-05-31 | 2015-09-02 | 福建升腾资讯有限公司 | 广域网下实现nat穿透的方法及系统 |
CN103024097B (zh) * | 2012-12-24 | 2016-06-29 | 瑞斯康达科技发展股份有限公司 | 探测网络地址转换服务器老化时间的方法、装置及系统 |
CN103051724B (zh) * | 2012-12-28 | 2016-06-15 | 北京思特奇信息技术股份有限公司 | 一种基于长连接的套接字同步方法 |
CN104243283A (zh) * | 2014-09-16 | 2014-12-24 | 合肥协知行信息系统工程有限公司 | 一种基于nat的即时通讯方法 |
CN105337808B (zh) * | 2015-11-30 | 2019-01-04 | 网宿科技股份有限公司 | 数据传输的方法、装置及系统 |
US10412122B1 (en) * | 2016-01-22 | 2019-09-10 | Cisco Technology, Inc. | Dynamic per-session NAT-behavior selection |
CN106027689B (zh) * | 2016-04-29 | 2020-04-10 | 上海斐讯数据通信技术有限公司 | 一种通信方法和通信装置 |
EP3628118A4 (en) | 2017-07-07 | 2020-12-09 | ARRIS Enterprises LLC | AGENT SERVER BETWEEN WIRELESS LOCAL NETWORK INFRASTRUCTURES |
CN109600368B (zh) * | 2018-12-07 | 2021-04-13 | 中盈优创资讯科技有限公司 | 一种确定防火墙策略的方法及装置 |
CN109462606A (zh) * | 2018-12-19 | 2019-03-12 | 安徽典典科技发展有限责任公司 | 点对点远程访问方法 |
WO2020240046A1 (en) * | 2019-05-31 | 2020-12-03 | Adva Optical Networking Se | Transparent multiplexing of ip endpoints |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514584A (zh) * | 2003-06-23 | 2004-07-21 | 腾讯科技(深圳)有限公司 | 数字信息穿透nat/fw的方法、系统和控制流程 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004063843A2 (en) * | 2003-01-15 | 2004-07-29 | Matsushita Electric Industrial Co., Ltd. | PEER-TO-PEER (P2P) CONNECTION DESPITE NETWORK ADDRESS TRANSLATOR (NATs) AT BOTH ENDS |
US7899932B2 (en) * | 2003-01-15 | 2011-03-01 | Panasonic Corporation | Relayed network address translator (NAT) traversal |
JP2007528677A (ja) * | 2004-03-09 | 2007-10-11 | クリーク コミュニケーションズ エルエルシー | シンメトリック・ファイアウォールの背後のクライアントのピアツーピア接続のためのシステムおよび方法 |
US7543064B2 (en) * | 2004-09-30 | 2009-06-02 | Logitech Europe S.A. | Multiplayer peer-to-peer connection across firewalls and network address translators using a single local port on the local host |
US7912046B2 (en) * | 2005-02-11 | 2011-03-22 | Microsoft Corporation | Automated NAT traversal for peer-to-peer networks |
-
2005
- 2005-02-24 CN CN2005100088719A patent/CN1825828B/zh active Active
-
2006
- 2006-02-23 WO PCT/CN2006/000259 patent/WO2006089481A1/zh active Application Filing
- 2006-02-23 US US11/885,011 patent/US8422486B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514584A (zh) * | 2003-06-23 | 2004-07-21 | 腾讯科技(深圳)有限公司 | 数字信息穿透nat/fw的方法、系统和控制流程 |
Also Published As
Publication number | Publication date |
---|---|
US20080165802A1 (en) | 2008-07-10 |
WO2006089481A1 (fr) | 2006-08-31 |
US8422486B2 (en) | 2013-04-16 |
CN1825828A (zh) | 2006-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1825828B (zh) | 一种两端均处于不同nat下直接穿透通信的控制方法和设备 | |
US10187357B2 (en) | Method and system for internetwork communication with machine devices | |
US6822955B1 (en) | Proxy server for TCP/IP network address portability | |
CN105453488B (zh) | 用于处理dns请求的方法和系统 | |
EP2351425B1 (en) | Topology determination in a communications network | |
CN106376003B (zh) | 检测无线局域网连接及无线局域网数据发送方法及其装置 | |
EP1363441A1 (en) | Method for reducing the number of global IP addresses required for servers located in private networks | |
US20050138166A1 (en) | IP network node and middleware for establishing connectivity to both the IPv4 and IPv6 networks | |
US20050182829A1 (en) | System for selecting a connectivity mechanism | |
US20050201370A1 (en) | System and method for establishing an internet protocol connection with a terminating network node | |
WO2007003992A2 (en) | Method, system & computer program product for discovering characteristics of middleboxes | |
CN101753637A (zh) | 防止网络攻击的方法及网络地址转换设备 | |
CN106878259A (zh) | 一种报文转发方法及装置 | |
Komu et al. | Sockets Application Program Interface (API) for Multihoming Shim | |
US8724506B2 (en) | Detecting double attachment between a wired network and at least one wireless network | |
CN103516820A (zh) | 基于mac地址的端口映射方法和装置 | |
Cisco | Configuring IP | |
Cisco | Configuring IP | |
Cisco | Configuring IP | |
CN106506410A (zh) | 一种安全表项建立方法及装置 | |
JP2002344481A (ja) | ルーター探索システム、ルーター探索方法、及びルーター探索プログラム | |
Slehat et al. | Securing teredo client from NAT holes vulnerability | |
Fesl et al. | New Techniques of IEEE 802.11 Family Hotspots Attacks, Principles and Defense | |
JP2007274063A (ja) | 通信装置、通信方法および記録媒体 | |
Komu et al. | Rfc 6316: Sockets application program interface (api) for multihoming shim |
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 |