UDP穿透之NAT类型分析

原创 2007年10月01日 14:23:00

 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后面。

 

相关文章推荐

NAT的完全分析及其UDP穿透的完全解决方案

 一:基本术语防火墙防火墙限制了私网与公网的通信,它主要是将(防火墙)认为未经授权的的包丢弃,防火墙只是检验包的数据,并不修改数据包中的IP地址和TCP/UDP端口信息。网络地址转换(NAT)当有数据...
  • ronmy
  • ronmy
  • 2011年05月08日 09:05
  • 1404

NAT的完全分析及其UDP穿透的完全解决方案【转自colinchan】

NAT的完全分析及其UDP穿透的完全解决方案   一:基本术语 防火墙 防火墙限制了私网与公网的通信,它主要是将(防火墙)认为未经授权的的包丢弃,防火墙只是检验包的数据,并不修改数据包中的...

NAT的完全分析及其UDP穿透的完全解决方案

NAT的完全分析及其UDP穿透的完全解决方案 转载自http://blog.csdn.net/colinchan/article/details/712773   一:基...

通过UDP实现的NAT穿透测试程序

  • 2016年08月21日 17:43
  • 72KB
  • 下载

用UDP协议实现NAT穿透

  • 2015年01月09日 21:37
  • 15KB
  • 下载

P2P之UDP穿透NAT的原理与实现

P2P之UDP穿透NAT的原理与实现(附源代码) 作者:shootingstars | 日期:2004-05-25 | 字体:大 中 小 P2P 之 UDP穿透NAT的原理与实现(附源代码)原创:sh...
  • luluxu
  • luluxu
  • 2011年04月27日 23:46
  • 193

P2P之UDP穿透NAT的原理与实现

  • 2014年09月12日 12:46
  • 27KB
  • 下载

UDP穿透NAT的原理与实现

  • 2006年07月15日 23:22
  • 0B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UDP穿透之NAT类型分析
举报原因:
原因补充:

(最多只允许输入30个字)