如果我们有 NAT,划分子网的目的是什么?

网络工程 纳特 子网 ip
2021-07-27 21:28:32

据我所知,NAT 是一个系统,它将 IP 地址分为两类 - 公共和私有。Public 代表外部的本地网络,private 代表内部的设备。

子网划分将一个IP地址分为代表外部网络的部分和代表网络上设备的部分。

请记住,每个 IP 地址都是 32 位,与使用子网划分的情况相比,拥有其中的两个(在 NAT 中)提供了使用更多 IP 地址(在内部和外部)的机会。那为什么我们需要子网掩码呢?

当我从计算机和手机向 google 询问我的 IP 时,我看到的是完全相同的公共 IP,而当我使用 nmap 扫描本地网络时,我只看到私有 IP。

那么为什么我们需要子网掩码,如果我们有 NAT 呢?

PS 当服务器向我的 PC 发送信号时,它是仅将信号发送到我的公共 IP 并且路由器记住哪个私有 IP 需要它,还是服务器同时发送公共 IP 和私有 IP?

4个回答

NAT 和子网划分解决了两个不同的问题。

问题 1:以前 IP 地址分为 A、B 和 C 类。C 类地址的默认子网掩码为 255.255.255.0,这意味着 24 位决定哪个网络,最后 8 位用于主机。使用 8 位主机,您可以拥有 2^8 - 1 = 254 个属于同一网络的 IP 地址。

从历史上看,不建议在同一网络上拥有超过 250 个左右的 IP,因为广播会淹没网络,这意味着 B 类网络(默认子网掩码为 255.255.0.0,主机为 16 位)拥有太多地址对于单个网络。对于 A 类网络更是如此。

此外,大多数时候我们需要许多只有几台主机的小型网络,这就是我们进行子网划分的原因。子网划分基本上是移动地址的主机和网络部分之间的边界。因此,通过减少每个网络上的地址数量,您可以增加网络数量。

问题 2 是,即使使用子网划分,我们的地址太少,每个设备都无法获得自己的地址,这就是我们拥有 NAT 的原因。

NAT 或在这种情况下 PAT 的工作原理是通过映射到端口号让多个私有地址共享一个公共 IP 地址。

因此,在 IPv4 地址空间中,我们有一些保留的地址块,它们旨在在专用网络上本地使用,例如 192.168.0.0,子网掩码为 255.255.255.0。该网络可以同时在多个站点上使用,因为它们是私有的,不允许在 Internet 上使用。

所以当有私有IP的设备想要上网时,私有IP被映射到一个公共IP地址,加上一个端口号,这意味着本地网络上的多个设备可以共享一个公共IP。这扩展了可以访问 Internet 的设备数量。

如果服务器与您的 PC 位于同一网络上,它将与您的私有 IP 通信。如果服务器在 Internet 上,它将与您的路由器映射到您的私有 IP 的特定端口上的公共 IP 通信。

让我看看我是否可以为你澄清一些误解:

NAT 是将 IP 地址分为两类 - 公共和私有的系统。Public 代表外部的本地网络,private 代表内部的设备。

不完全的。NAT 只是将 IP 地址从一组转换为另一组。当您使用这些术语时,“公共”是指在 Internet 上全球唯一且可路由的地址。“私有”地址不是全球唯一的,因此无法在 Internet 上路由。由于通常使用 NAT,您的公共地址是全球唯一地址,它是您在 Internet 上发送的所有数据包的源地址。

子网划分将一个IP地址分为代表外部网络的部分和代表网络上设备的部分。

去掉“从外面”这个词,你的定义是正确的。子网划分与“内部”或“外部”无关。网络存在于“内部”和“外部”,因此您需要一种方法来识别网络以及如何访问它们。

当我从计算机和手机向 google 询问我的 IP 时,我看到的是完全相同的公共 IP,而当我使用 nmap 扫描本地网络时,我只看到私有 IP。

您会看到相同的 IP,因为当您的数据包流经路由器时,您的路由器或防火墙正在将您的电话和 PC 的“内部”IP 转换为单个公共源地址。当返回流量流经路由器时,它会将目标地址转换为您的 PC 或手机上的地址。

当服务器向我的 PC 发送信号时,它是仅将信号发送到我的公共 IP 并且路由器记住哪个私有 IP 需要它,还是服务器同时发送公共 IP 和私有 IP?

IP 数据包只有源地址和目的地址,在 Internet 上可以将其视为“公共”IP。服务器不知道您是否正在使用 NAT。是的,您的路由器会跟踪翻译。

请记住,每个 IP 地址都是 32 位,与使用子网划分的情况相比,拥有其中的两个(在 NAT 中)提供了使用更多 IP 地址(在内部和外部)的机会。那为什么我们需要子网掩码呢?

我承认我不确定你在这里试图表达的观点,或者你如何相信 NAT 会允许更多地址。您的私人地址可能是 192.168.1.100,转换为公共地址。我的私人地址也是 192.168.1.100 翻译成不同的公共地址。

互联网是在没有 NAT 的情况下构建的:这是后来的发明。NAT 对网络施加了三个非常严格的限制。首先,您不能直接在 NAT 后面寻址主机。其次,必须有一个网关将网络连接到互联网的其余部分。第三,网关必须跟踪通过它的每个连接的 TCP 源端口和目标端口。

在互联网核心中,有大量的网络具有不止一个网关。网关不知道彼此的网络流量,并且它们是无状态的:它们不跟踪通过它们的每个连接的 TCP 序列号。这极大地提高了它们的性能。数据包如何通过正确的网关路由到正确的网络?通过与网络前缀匹配的路由表。

OP 混合了 2 个非常不同的概念。子网划分是允许分段和分层路由结构的路由概念。考虑带有(区号)交换终端的电话号码。在路由中有一个自治系统编号(区号)网络(交换)和主机(终端)。如果按照这些术语考虑,子网掩码决定了交换终端范围的大小。这就是路由协议用来向正确地址发送数据包和从正确地址发送数据包的方式。

如上所述,NAT 在无法在它们之间路由的 2 个网络之间进行转换。在大多数情况下,这是在公共 Internet 地址和可以在不同位置反复使用的私有 RFC1918 私有空间之间。NAT 设备会跟踪哪些流映射到网络空间两侧的地址和端口。虽然这是在您的路由器中,也就是 IP 层,但它不是路由功能,而是在传输层工作。

希望这可以帮助