NAT穿透技术简介和实现方案分析

1. NAT和NAT穿透

  NAT的出现是为了解决IPV4地址稀缺的问题,同时起到了防火墙的作用保护了内网的信息安全,但是对于P2P下载来说无疑是很大的阻碍。本文先简单介绍了NAT和NAT穿透的分类,然后就常用的STUN/TURN/ICE进行介绍,最后分析现有的一些ICE开源项目。

1.1 NAT类型介绍

  根据RFC3235规定,NAT类型主要有Full Cone NAT(全锥型), Restricted NAT(限制型锥型), Port Restricted NAT(端口限制型锥型), Symmetric NAT(对称型)四种。四种类型的主要区别在于对外界访问内部IP的控制力度。为方便解释,我们使用如下的用语来说明四种NAT类型的不同之处。

  • 内部Tuple:内部主机发送报文的源地址、端口所构成的二元组
  • 外部Tuple:指内部Tuple经过NAT的源地址/端口转换之后,所获得的外部地址、端口所构成的二元组
  • 目标Tuple:指外部主机的地址、端口所构成的二元组

  具体类型的特性如下:

(1)Full Cone NAT:所有来自同一个内部Tuple X的请求均被NAT转换至同一个外部Tuple Y。当X-Y的转换关系建立之后,任意外部主机均可随时将Y中的地址和端口作为目标地址和目标端口,向内部主机发送UDP报文。

(2)Restricted Cone NAT:所有来自同一个内部Tuple X的请求均被NAT转换至同一个外部Tuple Y,由内部发出给某个目标Tuple Z后,Z.ip发出的报文均可被接收,端口不限。如果没有向某个Tuple T发送数据包,则T无法主动发送给X。

(3)Port Restricted Cone NAT:在(2)的基础上,加上对端口的限制。即只有Tuple Z的报文可以发送给X,假设Z.ip + 另一个端口,也会失败。

(4)Symmetric NAT:Tuple X不再和(1)-(3)一样建立稳定的转换关系至某个外部Tuple Y,而是随着

猜你喜欢

转载自blog.csdn.net/u013354486/article/details/105351238