查看原文
其他

一个令人匪夷所思的NAT地址转换

IT服务圈儿 2022-09-10

The following article is from 车小胖谈网络 Author 车小胖谈网络

作者丨车小胖谈网络
来源丨经授权转自 车小胖谈网络(ID:chexiaopangnetwork)

一个房间里面有两台电脑,今天查百度ip地址,查询结果两台电脑不一样;过两天再百度ip地址,查询结果变成一样的了!这是什么情况呢?
 
 
由于全球IPv4地址的紧缺,运营商家的全球IP地址余粮也越来越捉襟见肘了。运营商为了缓解这个尴尬的局面,只有将分配给宽带用户的全球IP地址回收,分配给宽带用户的地址不再是全球IP地址,而是CGT(CarrierGrade Translation)地址,比如100.64.x.x/10。
 
100.64.x.x/10
这个地址段可不是全球IP地址,而是运营商级的私有IP地址,所以也无法直接进入互联网。如果想进入互联网,必须在运营商与互联网的边界NAT设备上,将这些私有IP地址转换成可全球可路由的IP地址。
 
通常边界NAT设备上汇聚了来自一个城区、一个城市的所有需要进入互联网的流量,同时在线的session数可能会有上百万条。而一个全球IP地址所能支持的session数取决于有多少可用的端口数。端口数量的最大值为65536,但是通常0-1024端口会系统保留。所以可用的端口数大约在64K左右。
 
很显然,一个IP地址无法满足海量NAT地址转换的需求。所以运营商会采用多个IP地址(地址池)的方式,当一个IP地址的端口耗尽了,那么就使用其他IP地址、以及端口号来进行映射,这仅仅是一种实现方法。
 
还有一种方法是,多个IP地址负载均衡的方式。即没有必要耗尽一个IP地址所有端口的情况下,才使用其他的IP地址。
 
通过这样的计算:

  • 当地址池有10个IP地址时,最大可以支撑 64K * 10 = 640 K session。

  • 当地址池有100个IP地址时,最大可以支撑 64K * 100 = 6400 K session。
 
当同一个局域网的两台电脑,访问互联网时,共经历了两次NAT转换操作。
 
第一次NAT发生在局域网与运营商的边界设备上,通常为家庭无线路由器,需要将用户的私有IP地址,比如10.x.x.x , 192.168.x.x, 转化成运营商CGT地址。
 
第二次NAT发生在运营商与互联网的边界设备上,通常为高端运营商级路由器,需要将CGT地址转化成全球可路由IP地址。
 
如果运气好,两台电脑的IP地址最终被运营商映射为同一个全球IP地址。当然运气不好,两台电脑的IP地址有可能映射为同一个地址池的不同的全球IP地址。
 
在浏览器里输入一个网址敲回车键,是否浏览器进程只使用一个源端口与服务器的目的端口在通信?
 
并不是。在大多数情况下,浏览器会使用N个端口与同一个服务器的同一个端口在通信。造成的后果就是,运营商的一个全球IP地址可用的64K端口更快地被耗尽,所以需要更大的地址池来服务用户。

1、同事用"两个浮点数相等" 被说了一顿

2、24 个好用到爆的 Python 实用技巧!

3、面试官:String的最大长度是多少?

4、20张图带你搞懂十大经典排序算法

点分享

点点赞

点在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存