NAT的四种类型

Posted 山上有风景

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NAT的四种类型相关的知识,希望对你有一定的参考价值。

一:NAT类型

基于UDP的P2P应用需要考虑NAT的类型,因为不同的NAT组合的穿透的方式并不一致,有的能通, 有的不能通。一般来讲, NAT可以分为四种类型,分别是:

1,  全锥型(Full Cone)

2,  受限锥型(Restricted Cone), 或者说是IP受限锥型

3,  端口受限锥型(Port Restricted Cone), 或者说是IP + PORT受限锥型

4,  对称型(Symmetric)

其中1,2,3属于同一种类型,都是锥型,区别只是路由器的不同的安全策略。还有些NAT不属于这四种中的任何一种,就不在本文的讨论范围了。

二:为什么有四种类型的NAT

NAT缓解了IPV4地址不够用的问题,同时也带了限制,那就是NAT外部的主机无法主动跟位于NAT内部的主机通信,NAT内部主机想要通信,必须主动和公网的一个IP通信,路由器负责建立一个映射关系,从而实现数据的转发, 这就是NAT的工作原理

(一)NAT使用案例

公网server1 ip是1.1.1.1, 监听端口是1111

公网server2 ip是2.2.2.2, 监听端口是2222

NAT router ip是8.8.8.8

NAT内部client是192.168.0.3

client发送数据的时候,不管是tcp还是udp必须本地绑定一个端口,一般来讲,这个过程都是自动的。

假定client(192.168.0.3, 100)给 server(1.1.1.1, 1111)发送报文,报文到达路由器,

路由器在自己的公网ip上开辟一个端口800,从而建立了一个隐射关系(8.8.8.8, 800)<--->(192.168.0.3, 100),  

建立映射关系后,所以(192.168.0.3, 100)和(1.1.1.1, 1111)之间的报文都通过这个映射关系进行转发。

(二)NAT之间主要的区别分两种情况讨论

1:client(192.168.0.3, 100)和server(1.1.1.1, 1111)在路由器上建立好映射关系后,如果client(192.168.0.3, 100)又给(2.2.2.2, 2222)发送数据,路由器该怎么处理呢?

1,  复用旧的映射关系(8.8.8.8, 800)<--->(192.168.0.3, 100)和(2.2.2.2, 2222)通信, 这就是锥型(Cone) NAT---(分为下面的3个小类)

2,  创建新的映射关系(8.8.8.8, 801)<--->(192.168.0.3, 100)和(2.2.2.2, 2222)通信, 这就是对称型NAT

注:  (8.8.8.8, 801)只是举例,到底用什么端口取决于路由器的端口管理策略,总之是另外的一个端口,有的路由器有多个公网IP,不同的IP也会参与到这个映射关系中。

2:client(192.168.0.3, 100)和server(1.1.1.1, 1111)在路由器上建立好映射关系后,如果这个时候路由器(8.8.8.8)在800端口上收到从另外一台server(2.2.2.2, 2222)发来的数据,是不是应该转发给(192.168.0.3, 100)呢

有四种情况:

1, 无条件转发给(192.168.0.3, 100), 这就是全锥型(Full Cone)NAT。

2, 如果(192.168.0.3, 100)之前给(2.2.2.2)发送过数据,则转发, 这就是受限锥型(Restricted Cone)。

3, 如果(192.168.0.3, 100)之前给(2.2.2.2, 2222)发送过数据,则转发, 这就是端口受限锥型(Port Restricted Cone)。

4, 丢弃报文,拒绝转发, 这就是对称型NAT。

从上面也描述也可以看出,安全性系数,  对称型 > 端口受限锥型 > 受限锥型 > 全锥型

(三)不同NAT的穿透性

对称nat无法穿透,这个说法不正确,对称nat与全椎full cone nat、对称nat 与 ip受限椎型cone,是可以穿透的,对称nat与 端口受限、对称nat与对称nat,不可穿透。
类型:

1、full cone 全椎
2、Restricted Cone ip受限
3、port Restricted Cone 端口受限
4、Symmetric 对称。

穿透关系:上述4种类型,如果定义他们的值为序列号,N为序列号相加。

则N<=6可穿透。2 和 4 序列相加 = 6 则可穿透。 
3(端口受限)和4(对称)= 7 不可穿透。

三:p2p网络中的NAT穿透问题---NAT的原理和类型

(一)完全圆锥型NAT (Full Cane NAT)

完全圆锥型的NAT,将从同一内部IP地址和端口来的所有请求,都映射到相同的外部IP地址和端口。而且,任何外部主机通过向映射的外部地址发送报文,可以实现和内部主机进行通信。

这是一种比较宽松的策略只要建立了内部网络的IP地址和端口与公网IP地址和端口的映射关系,则所有Internet上的主机都可以访问该NAT之后的主机!!! 

 

在图中,NAT会将内网地址{X:y} (x代表内网主机的IP地址,Y代表端口)映射成公网地址{A:b}(A代表映射的公网IP地址,b代表映射的端口)并绑定。任何数据分组都可以通过地址{A:b}送到此内网主机。

(二)受限圆锥型NAT ( Restricted Cone NAT)--IP受限

受限圆锥型NAT也是将从相同的内部IP地址和端口来的所有请求,映射到相同的公网IP地址和端口。

但是与完全圆锥型NAT不同,当且仅当内网主机之前己经向公网主机(假设IP地址为P)发送过数据分组,此公网主机才能够向内网主机发送数据分组

在图中,NAT会将内网地址{x:y}映射成公网地址{A:b〕并绑定,只有源地址为P的分组才能和此内网主机通信。

(三)端口受限圆锥型NAT ( Port Restricted Cone NAT)--IP+port受限

类似于受限圆锥型NAT,但更严格。端口受限圆锥型NAT增加了端口号的限制,当且仅当内网主机之前已经向公网主机发送了数据分组,公网主机才能和此内网主机通信。

在图中,NAT会将内网地址{X:y}映射成公网地址{A:b}并绑定,由于内网主机之前己经分别与地址为M,端口为n的公网主机以及地址为P,端口为q的公网主机通信,所以只有来自这两个公网地址和端口的分组才能到达内网主机

(四)对称型NAT CSymmetric NAT)----重点理解

对称型NAT把从同一内网地址和端口相同的地址和端口的所有请求都映射到同一个公网地址和端口

如果同一个内网主机,用相同的内网地址和端口向另一个地址发送数据分组,则会使用不同的映射而且公网主机只有在接收到数据分组后,才能向与发送分组的内网主机进行通信。可见,对称性NAT是所有NAT类型中限制最为严格的。

在图中,对称型NAT会将内网地址{X:y}转换成公网地址{A:b}并绑定为{X:y}|{A:b}<一>{P:q}。这就意味着NAT只允许地址{A:b}接收来自{P:q}的分组,将它转给{X:y} 。当客户机请求一个不同的公网地址{M:n}时,NAT会新分配一个外部端口{C:d} 。 

转载自:https://blog.csdn.net/eydwyz/article/details/87364157

P2P技术详解(一):NAT详解——详细原理、P2P简介 

以上是关于NAT的四种类型的主要内容,如果未能解决你的问题,请参考以下文章

KVM虚拟化的四种简单网络模型介绍及实现

NAT穿越技术详细介绍

KVM虚拟化的四种简单网络模型介绍及实现

Java的四种引用类型

vbox的四种网络模式

Java程序中的常见的四种缓存类型及代码实现