【问题标题】:How many devices can run behind a Network Address Translation (NAT) device?网络地址转换 (NAT) 设备后面可以运行多少设备?
【发布时间】:2020-07-06 19:08:07
【问题描述】:

我在网络课程(CS144,斯坦福)中学习网络地址转换设备。

他们描述了 NAT 通过将本地 IP 地址和相应的应用程序端口号映射到 NAT 的外部 IP 并为该连接分配(由 NAT)端口号来工作。

假设 NAT 只有一个外部 IP 地址。我的问题如下:

由于 Internet 和 NAT 之间的连接数量的瓶颈是端口号限制(最高可达 65535),这是否会限制应用程序的数量(在 NAT 后面的各种设备上运行)可以访问互联网,以及可以在 NAT 后面运行的设备数量?

如果是,如何增加此限制以使 NAT 后面的设备数量不受限制?

【问题讨论】:

  • 我想澄清一下,我观看了该课程的 youtube 视频并阅读了他们的笔记,并且没有注册该课程。这个问题也与课程中的任何作业/家庭作业无关。提到这个是因为有人反对这个问题,我不知道为什么。

标签: networking port ip-address nat internet-connection


【解决方案1】:

这是个好问题。

如您所说,NAT 受端口号的限制。但问题是协议使用了一个元组,例如:内部 IP、内部端口、外部 IP、外部端口和协议。

所以,如果我们只有一个外部 IP,那么端口号 (65536) 和协议 (TCP/UDP) 将成为限制。由于我们只能映射到 65546 * 2 的外部端口和协议,这就是内部连接的限制。

如果你想打破限制,也许最好增加外部IP地址的数量。

【讨论】:

  • 一个内部设备理论上可以连接,只使用 TCP 和单个端口号连接到 NAPT 之外的每个 IPv4 地址和 TCP 端口号组合,因为来自所有外部设备的返回流量,同时使用单个地址和端口号作为目标,也将具有不同的源地址和端口号,因此您可以将其乘以 65,535(端口 0 不能使用)用于单个内部设备。 NAPT 设备没有足够的 RAM 来容纳这么大的表。
【解决方案2】:

我发现这个问题有些清晰。 65535 的限制是每个远程主机的每个公共 ip。

https://serverfault.com/questions/541699/nat-gateway-maximum-connection-limit

【讨论】:

  • 这实际上是不正确的。您的意思是 NAPT,它是 NAT 的变体,它允许将多个设备隐藏在单个 IPv4 地址后面。将有三个 NAPT 表,一个用于 TCP(使用端口)、UDP(使用与 TCP 相同的端口号,但 TCP 和 UDP 端口不相同)和 ICMP(使用查询 ID)。每个表都将使用源 IPv4 和目标 IPv4 以及传输地址(端口/ID),因此理论上每个设备可以在 NAT 后面拥有数百万个进程,但 NAT 内存会将其限制为更少。
  • 换句话说,三个 NAPT 表中每一个的索引是 32 位源 IPv4 地址加上 16 位源传输协议地址加上 32 位目标 IPv4 地址加上 16 位目标传输协议地址。这意味着每个协议的理论最大表大小为 2^96 (79,228,162,514,264,337,593,543,950,336) 个条目,因此所有三个协议都乘以 3。这是不现实的,因此 NAPT 设备上的 RAM 是翻译的限制。
  • @Ron Maupin 说以下是否正确?如果 NAT 后面的 70000 台设备想要使用 tcp 连接到同一个远程主机应用程序(具有单个 IP 地址),那么由于该表现在只能使用目标端口号路由来自主机的响应(相同的源 ip,相同的源端口,相同的目标IP,相同的协议:tcp),那么会有问题吗?基本上 70000 台设备能够使用相同的协议同时连接到一个小型应用程序吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-04
  • 2013-03-05
相关资源
最近更新 更多