NAT:端口受限类型和对称型有什么区别?(续)

来自:车小胖谈网络?(微信号:chexiaopangnetwork),作者:车小胖谈网络

友情提醒,没有阅读类型1、2的读者,可能无法理解类型3,4。


类型3:限制地址端口型

归纳能力强的读者,其实看到这个类型就可以归纳出,入向的过滤列表更加严格了,采用了四元组里全部的四元。

?

让我们看一下这个入向的过滤列表是什么样子:

?

NAT入向(Outside ?-> Inside)过滤列表为:

ACL =?(1.1.1.1,12121,2.2.2.2,?2222

?

这个过滤列表的潜台词是,只有主机2.2.2.2且使用端口号2222才可以访问客户端。

?

但是在P2P通信中,客户端想和服务器B后方的客户端通信,但是由于在茫茫的互联网无法找到对方,所以需要服务器A的存在,做为一个双方全球IP、端口号的中介。服务器A的全球IP= 2.2.2.2,端口号=2222 是已知的,互联网上任何主机都可以找到它。

?

在上文中客户端主机在互联网上联系方式 = 1.1.1.1:12121

?

然后服务器A将客户端的联系方式告知服务器B,服务器B就可以发起一个主动连接,四元组为:

(1.1.1.1,12121,3.3.3.3,13131)

很显然这个IP报文无法通过保护客户端的NAT设备。


客户端主机发现一个规律,互联网很多NAT设备有一个特点,这个特点是什么呢?

?

假设客户端主动发起以下两个TCP连接:

10.1.1.1,11111,2.2.2.2, 2222)

10.1.1.1,11111,3.3.3.3,13131)

?

被NAT修改后的四元组分别为:

1.1.1.1,12121,2.2.2.2, 2222)

1.1.1.1,12121,3.3.3.3,13131)

?

这个特点是,当源主机使用相同的IP、端口号时,NAT通常也会使用相同的IP、端口号予以映射。

?

将主机重复使用同一个端口号用于不同连接的行为称为端口重用

?

上文说了,四元组为(1.1.1.1,12121,3.3.3.3,13131)的IP报文无法通过客户端的NAT设备。

?

之所以无法通过,是因为客户端还没有从内网主动发起连接,一旦发起连接,意味着(1.1.1.1,12121,3.3.3.3,13131)这个过滤列表立马生效,那么来自服务器B的流量就可以进入了。

?

本文为了简化,服务器B并不是一台服务器,其实它也是一台NAT,它的全球IP =3.3.3.3,用于保护后方的客户端,这个客户端在互联网上的联系方式为 = 3.3.3.3:13131。

?

这种借助于服务器A,可以无障碍穿越NAT的技术,俗称打洞技术



运营商并不欢迎P2P通信,P2P的流量如果不加限制,会将互联网挤爆。其中一个限制措施就是类型4。


类型4:对称型NAT

类型4与类型3没有什么太大差别,都是基于四元组严格过滤。不同之处在于,当源主机使用相同的IP、端口号时发起多个TCP连接时,对称型NAT修改后的源IP、源端口一定是不同的。

?

客户端主动发起以下两个TCP连接:

10.1.1.1,11111,2.2.2.2, 2222)

10.1.1.1,11111,3.3.3.3,13131)

?

对称型NAT修改后的四元组分别为:

1.1.1.1,12121,2.2.2.2, 2222)

1.1.1.1,56789,3.3.3.3,13131)

?

而服务器B从服务器A那里拿到的客户端的联系方式却是:1.1.1.1:12121,服务器发起的主动连接四元组为:

?

1.1.1.1,12121,3.3.3.3,13131)



很显然,客户端主机与服务器B在不同的轨道上擦肩而过,永远无法相交。这是运营商最乐意看到的,那么客户端与服务器B之间的通信只有通过服务器A中转,这样就大大限制了P2P的应用。

推荐↓↓↓
程序员的那点事
上一篇:VLAN,到底是二层技术还是三层技术? 下一篇:什么是泛播技术?