UDP穿透之NAT类型分析

 NAT,即网络地址转换,是指在一个网络内部,根据需要可以随意自定义的IP地址,而不需要经过申请。而当内部的计算机要与外部internet网络进行通讯时,NAT设备(比如:路由器)负责将其内部的IP地址转换为合法的IP地址并进行通信。

从功能上来说,NAT可以分为:传统NAT,双向NAT(Bi-Directional NAT),两次NAT(Twice NAT),多宿主NAT(Multihomed NAT),但是市场上现在最多的是传统NAT,尤其是NAPT设备,所以本文的穿透也是针对NAPT展开,其类型主要细分为以下四种类型:

1) 非对称NAT(Cone NAT)

其下又细分为:

a) 全ConeNAT(Full Cone NAT)

打洞创建原则:向外部任意IP发送一个package,就形成了一个映射,即创建了一个洞。

接收数据原则:只要过来的数据是发送到打洞的PC,就可以顺利通过。

b) 限制性ConeNAT (Restricted Cone NAT)

打洞创建原则:向外部某个IP发送一个package,就形成了与此IP的一个映射。

接收数据原则:满足两个条件:1,此数据来自此IP;2,此数据要发送到打洞的PC。

c) 端口限制性 ConeNAT(Port Restricted Cone NAT)

打洞创建原则:向外部某个IP的某个Port发送一个package,就形成了与此IP/Port对的一个映射。

接收数据原则:满足两个条件:1,此数据来自此IP的此Port;2,此数据要发送到打洞的PC。

2) 对称NAT(Symmetric NAT)对称NAT是指把所有来自相同内部IP地址和端口号,到特定目的1P地址和端口号的请求映射到相同的外部TP地址和端口。如果同一主机使用不同的 源地址和端口对,发送的目的地址不同,则使用不同的映射。只有收到了一个IP包的外部主机才能够向该内部主机发送回一个UDP包。对称的NAT不保证所有 会话中的(私有地址,私有端口)和(公开IP,公开端口)之间绑定的一致性。相反,它为每个新的会话分配一个新的端口号。

 传统P2P文件传输在NAT检测方面比较薄弱,没有一个系统全面地检测方法,其中对对称型NAT的检测几乎没有。本文这里会运用连接服务器和NAT检测辅助服务器对各种常用NAT做一个全面地检测,尤其关注对称型NAT。    

下图是检测的流程图:

 其中:连接服务器为A,NAT检测服务器为B。

第一步:当一个接收客户端(Endpoint-Receiver ,简称 EP-R)需要接收文件信息时,在其向连接服务器发送文件请求的同时紧接着向检测服务器发送NAT检测请求。此处再次强调是“紧接着”,因为对于对称型 NAT来说,这个操作可以直接算出其地址分配的增量(⊿p)。

第二步:当EP-R收到A或B的反馈信息时发现其外部地址与自身地址不同时就可以确定自己在NAT后面;否则,就是公网IP。

第三步:由服务器A向B发送其获得的EP-R的外部映射地址(IPa/Porta),服务器B获得后进行比较,如果端口不同,则说明这是对称型NAT,同时可以直接计算出其分配增量:

⊿p=Portb-Porta

第四步:如果端口号相同,则由B向EP-R的Porta发送连接请求,如果EP-R有响应,则说明EP-R没有IP和Port的限制,属于全ConeNAT类型。

第五步:如果没有响应,则由服务器B使用其新端口b’向EP-R的Portb端口发送连接请求,如果有响应,则说明EP-R只对IP限制,属于限制性ConeNAT类型;否则就是对IP和port都限制,属于端口限制性ConeNAT类型。    

通过上述五步基本可以全部检测出EP-R是否在公网,还是在某种NAT后面。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值