一种nat打通方法

文档序号:7929794阅读:477来源:国知局
专利名称:一种nat打通方法
技术领域
本发明涉及一种NAT打通方法,具体地说是一种用于网络中位于不同网关 内的客户终端之间点对点通信的技术。
背景技术
网络地址转换(NAT, Network Address Translation)被广泛应用于各种类型 Internet接入方式和各种类型的网络中。NAT不仅解决了 IP地址不足的问题, 而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。 NAT分为4种类型
1、 完全非对称型
只要知道路由器丄的动态映射端口,对方即可发送消息过来。
2、 IP受限型
只有本机往对方IP先发送一个数据包,对方才能根据路由器上的动态映射 端口发送过来。
3、 端口受限型
只有本机往对方IP、端口先发送一个数据包,对方才能从该端口发送数据 过来。
4、 对称型
从本机同一个端口往不同IP发送数据,在路由器上动态映射的端口不一样。 般来说,只要客户端A将数据包发送到了客户端B,客户端B就能根据 收到数据包的IP、端口将数据包发送到客户端A。这样即完成了 NAT打通流程。 也就是说只要一方将数据包成功发送到了另一方就能打通成功。
下面用PubIP表示公网IP, PubPort表示路由器上动态映射的端口。 LanIP 表示内网IP, LanPort表示内网端口 。 NatType表示内网NAT类型。从STUN服 务器获取本机的公网IP、映射端口和内网NAT类型。STUN服务器使用户数据 报协议(UDP)简单穿越网络地址转换器,它允许所有的NAT客户终端(如防 火墙后边的计算机)与位于局域网以外的VoIP (网络电话)服务商实现电话通 话。
现有的NAT打通方法都是双方互往对方的(PubIP, PubPort)发送消息包, 只要有一方收到/对方的消息包,即打通成功。这种打通方式有两个弊端
1、 对于不支持Hairpin (环回)的NAT,如果双方都处于同一个内网,反 而互相连不上。因为如果双方在不支持环回的内网, 一方往对方的(PubIP, PubPort)发送消息,会发送不到对方。
2、 对于对称型NAT,上述NAT打通方法也无能为力。

发明内容
本发明的目的在于克服上述不足之处,提供一种新的NAT打通方法。按照 本发明提供的技术方案, 一种NAT打通方法,所述方法的歩骤如下所述PubIPA、 PubPortA、 NatTypeA、 LanIPA、 LanPortA分别表示客户端A 的公网IP、路由器上动态映射的端口、内网NAT类型、内网IP和内网端口; 所述PubIPB、 PubPortB、 NatTypeB、 LanIPB、 LanPortB分别表示客户端B的公 网IP、路由器上动态映射的端口、内网NAT类型、内网IP和内网端U。
(1) 所述NAT打通方法由打通服务器执行,客户端A和客户端B都登录 到打通服务器,并能通过打通服务器转发各种消息。
(2) 客户端A连接客户端B:客户端A从STUN服务器获取PubIPA、 PubPortA、 NatTypeA;如果客户端A的NAT类型不是对称型,则将含有PubIPA、 PubPortA、 NatTypeA、 LanIPA、 LanPortA的消息通过打通服务器转发给客户端 B;如果客户端A的NAT类型为对称型,则将含有PubIPA、 PubPortA+l、 NatTypeA、 LanIPA、 LanPortA的消息通过打通服务器转发给客户端B。
(3) 客户端B收到所述客户端A发来的消息后,从STUN服务器获取 PubIPB、 PubPortB 、 NatTypeB 。
(4) 如果PuWPB等于PubIPA,说明客户端A和客户端B在同一个内网, 客户端B往(LanIPA, LanPortA)发送一个消息包;如果客户端A收到所述客 户端B的消息包,返回客户端B—个消息,至此打通成功,否则进行步骤5。
(5) 如果客户端B的NAT类型不是对称型,则客户端B将含有PubIPB、 PubPortB、 NatTypeB、 LanIPB、 LanPortB的消息通过打通服务器转发给客户端 A;如果客户端B的NAT类型为对称型,则客户端B将含有PubIPB、PubPortB+l 、 NatTypeB 、 LanIPB、 LanPortB的消息通过打通服务器转发给客户端A。
(6) 客户端A收到所述客户端B发来的消息后,如果PubIPA等于PubIPB, 说明客户端A和客户端B在同一个内网,客户端A往(LanIPB, LanPortB)发 送一个消息包,如果客户端B收到所述客户端A的消息包,返回客户端A—个 消息,至此打通成功,否则进行步骤7。
(7) 客户端A往(PubIPB, PubPortB)发送一个消息包,同时客户端B 往(PubIPA, PubPortA)发送一个消息包。只要有一方收到了所述消息包,说 明打通成功。
所述打通服务器为执行本发明所述方法流程的一个模块。所述(x, y)的 形式表示括号中内容x、 y的二元组。
本发明与已有技术相比具有以下优点
本发明能成功识别双方是否处于同一个内网,即使双方处于多级内网的不 同层级也能打通成功;另外对于绝大部分实际使用的对称型NAT,也能成功实 现打通。


图1为本发明的方法流程图。
具体实施例方式
下面结合附图和实施例对本发明作进一 歩说明。
如图1所示,如果客户端A和B的NAT类型都不是对称型,打通流程如下 客户端A和客户端B都先登录到打通服务器,并能通过打通服务器转发各种消息。
客户端A连接客户端B,客户端A从STUN服务器获取PubIPA、 PubPortA、 NatTypeA。将含有PubIPA、 PubPortA、 NatTypeA、 LanIPA、 LanPortA的消息通 过打通服务器转发给客户端B。
客户端B收到消息后,从STUN服务器获取PubIPB、 PubPortB、 NatTypeB。
如果PubIPB等于PubIPA,说明客户端A和客户端B在同一个内网,客户 端B往(LanIPA, LanPortA)发送一个消息包,如果客户端A收到该消息包, 返回客户端B—个消息,至此打通成功,否则继续往下。
客户端B将含有PubIPB、 PubPortB、 NatTypeB、 LanIPB、 LanPortB的消息 通过打通服务器转发给客户端A。
客户端A收到消息后,如果PubIPA等于PubIPB,说明客户端A和客户端 B在同一个内网(有可能客户端A在第二级局域网中,客户端B往客户端A发 送不成功,但客户端A往客户端B发送能成功),客户端A往(LanIPB, LanPortB) 发送一个消息包,如果客户端B收到该消息包,返回客户端A—个消息,至此 打通成功,否则继续往下。
客户端A往(PubIPB,PubPortB)发送一个消息包,同时客户端B往(PubIPA, PubPortA)发送一个消息包。只要有一方收到了消息包,说明打通成功。
上述流程对除对称型以外的NAT都能打通成功。对于对称型NAT,由于客 户端A从STUN服务器获取的PubPort和发往客户端B的PubPort不一样,所 以不能打通成功。在实践中发现,大部分对称型NAT的动态映射端口号都是简 单递加的,即只要客户端A从STUN服务器获取完信息后立即往客户端B发送 消息,那么客户端A发往客户端B的PubPort应该是从STUN服务器获取的 PubPort加l。因此修改上述流程为如果客户端A的NAT类型为对称型,客户 端A发往客户端B信息中的PubPort需要加1。同样客户端B也类似。这样, 大部分对称型NAT也能打通成功。经过实际使用的结果显示,本发明所述的NAT 打通方法取得了很好的效果。
权利要求
1、一种NAT打通方法,其特征是所述方法的步骤如下,所述PubIPA、PubPortA、NatTypeA、LanIPA、LanPortA分别表示客户端A的公网IP、路由器上动态映射的端口、内网NAT类型、内网IP和内网端口;所述PubIPB、PubPortB、NatTypeB、LanIPB、LanPortB分别表示客户端B的公网IP、路由器上动态映射的端口、内网NAT类型、内网IP和内网端口;(1)所述NAT打通方法由打通服务器执行,客户端A和客户端B都登录到打通服务器,并能通过打通服务器转发各种消息;(2)客户端A连接客户端B客户端A从STUN服务器获取PubIPA、PubPortA、NatTypeA;如果客户端A的NAT类型不是对称型,则将含有PubIPA、PubPortA、NatTypeA、LanIPA、LanPortA的消息通过打通服务器转发给客户端B;如果客户端A的NAT类型为对称型,则将含有PubIPA、PubPortA+1、NatTypeA、LanIPA、LanPortA的消息通过打通服务器转发给客户端B;(3)客户端B收到所述客户端A发来的消息后,从STUN服务器获取PubIPB、PubPortB、NatTypeB;(4)如果PubIPB等于PubIPA,说明客户端A和客户端B在同一个内网,客户端B往(LanIPA,LanPortA)发送一个消息包;如果客户端A收到所述客户端B的消息包,返回客户端B一个消息,至此打通成功,否则进行步骤5;(5)如果客户端B的NAT类型不是对称型,则客户端B将含有PubIPB、PubPortB、NatTypeB、LanIPB、LanPortB的消息通过打通服务器转发给客户端A;如果客户端B的NAT类型为对称型,则客户端B将含有PubIPB、PubPortB+1、NatTypeB、LanIPB、LanPortB的消息通过打通服务器转发给客户端A;(6)客户端A收到所述客户端B发来的消息后,如果PubIPA等于PubIPB,说明客户端A和客户端B在同一个内网,客户端A往(LanIPB,LanPortB)发送一个消息包,如果客户端B收到所述客户端A的消息包,返回客户端A一个消息,至此打通成功,否则进行步骤7;(7)客户端A往(PubIPB,PubPortB)发送一个消息包,同时客户端B往(PubIPA,PubPortA)发送一个消息包。只要有一方收到了所述消息包,说明打通成功。
全文摘要
本发明涉及一种NAT打通方法,是一种用于网络中位于不同网关内的客户终端之间点对点通信的技术。其优点是本发明能成功识别双方是否处于同一个内网,即使双方处于多级内网的不同层级也能打通成功;另外对于绝大部分实际使用的对称型NAT,也能成功实现打通。
文档编号H04L29/12GK101527676SQ20081024406
公开日2009年9月9日 申请日期2008年12月19日 优先权日2008年12月19日
发明者夏卫平, 李恒中 申请人:无锡亿普得科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1