NAT(网络地址转换)和PAT(端口地址转换)之间存在普遍的误解,这是我们在家庭路由器中主要使用的。
NAT
让我们假设我们有一个具有以下拓扑结构的网络:
Private_Network <------->路由器<-------> The_Internet
连接到Private_Network的路由器接口有一个私有 IP 地址,即在The_Internet 中不是唯一的。另一方面,在NAT的情况下,Router有多个接口连接到The_Internet。每个接口在The_Internet 中都有一个唯一的 IP 地址。现在让我们假设HOST_A和HOST_B都在Private_Network,他们都希望访问Website_X在The_Internet在同一时间。Host_A的 IP 和端口的数据包将是:
源 IP:Host_A的私有 IP
源端口:Host_A上的端口
目标 IP:Website_X的公共/唯一 IP
目标端口:Website_X的服务器正在侦听的端口
对于来自Host_B的数据包也是如此。
如果源 IP 保持不变,则Website_X将回复一个私有的 IP 地址,即不是唯一的,因此数据包将永远无法找到它的返回方式。为了解决这个问题,路由器会检查他连接到The_Internet 的唯一 IP 地址之一是否未被使用。如果是这种情况,它会执行以下映射:
Host_A的私有 IP ======== Router's_unique_IP_K
现在从Host_A开始到Website_X并且现在离开连接到The_Internet的路由器接口的数据包将具有以下形式:
源 IP:Router's_unique_IP_K
源端口:Host_A上的端口
目的 IP:Website_X的公共/唯一 IP
目的端口:Website_X的服务器正在侦听的端口
这样你就可以理解私有IP到公有IP是一一关联的。因此,当一个数据包从到达Website_X到路由器,该协会进行检查,目的IP地址改回私人之一,并成功地传递到正确的主机。
可以看到,这种方法很简单,但是有一个很大的缺点:每个私网主机都必须保留一个唯一的IP地址,成本很高,因此我们选择了比私网主机少的唯一IP地址。因此,如果所有私有主机同时尝试访问The_Internet,只有其中的一个子集,等于路由器可用的公共 IP 地址数has, will have access,其余的将被拒绝。
为了反驳我们创建了PAT。
PAT
PAT是我们绝大多数家用路由器使用的。基本限制是路由器有一个唯一的 IP 地址,用于连接到The_Internet,但我们仍然希望允许私有网络中的多个主机同时访问The_Internet。
我们这样做的方式与NAT的方式“相似”,但有一个关键区别:路由器持有一个 IP 地址池,它持有一个端口号池。更确切地说,在一个到达的分组路由器从HOST_A在Private_Network注定Website_X在The_Internet将具有以下格式:
源 IP:Host_A的私有 IP
源端口:Host_A上的端口
目标 IP:Website_X的公共/唯一 IP
目标端口:Website_X的服务器正在侦听的端口
现在路由器将执行两项任务:
- 它将源 IP 更改为路由器的唯一公共 IP和
- 它将源端口更改为路由器正在维护且尚未使用的池中的端口,例如Port_Z
现在从Host_A开始到Website_X并且现在离开连接到The_Internet的路由器接口的数据包将具有以下形式:
源 IP:Router's_unique_IP_K
源端口:Port_Z
目的 IP:Website_X的公共/唯一 IP
目的端口:Website_X的服务器正在侦听的端口
并且路由器将保留以下映射:
HOST_A的专用IP和一个端口HOST_A ======= Port_Z
为什么这样做?
现在,当一个数据包返回时,路由器只需检查目的端口号,并根据前面提到的映射更改目的 IP 地址和目的端口号,数据包就可以成功传递。
如果我在同一主机上运行多个应用程序怎么办?
根据定义,不同的应用程序将具有不同的端口,因此它们将从Router映射到不同的端口。
如果多个 Host 尝试同时访问The_Internet并且它们都使用相同的应用程序怎么办?
根据定义,不同的主机将具有不同的私有 IP 地址,因此它们将从路由器映射到不同的端口。
PAT在跨层的灰色空间中处于危险的平衡状态。端口号是传输协议的一部分,而路由器则可以按照 Internet 协议运行。所以从技术上讲,这是协议所不允许的。因此,至少在理论上存在潜在危险:端口池是有限的。因此,如果我的专用网络由 1000 台主机组成,并且每台主机都运行 port_pool/10 应用程序,则路由器上的映射表将耗尽可用条目,并且将拒绝对应用程序的访问。
这个答案大大超出了我的预期长度,但我希望它有帮助。