这可能是一个非常愚蠢的问题,但我有时喜欢颠倒我已经知道的东西,这样我可以学到更多。例如,给定一个网络 192.168.0.0/24,我有一个 IP 为 192.168.0.1 的设备。好的,这里没什么奇怪的。但是为什么我不能在其他网络中拥有相同的 IP,但 /25、/26、/27 ......如果使用子网掩码,我可以知道给定设备在哪个网络中?我可以在多个网络中拥有相同的 192.168.0.1 IP,只需更改子网掩码。我知道我们不能重复 IP,但我想了解的是为什么我们不能,因为据我所知,我们可以重复 IP,因为我们有子网掩码。
为什么我们不能有重复的 IP?
为什么我不能在其他网络中拥有相同的 IP,但 /25、/26、/27……我可以在多个网络中拥有相同的 192.168.0.1 IP,只需更改子网掩码.. . 我们可以重复 IP,因为我们有子网掩码。
这个想法忽略了所有路由都基于最长前缀匹配的事实。如果您尝试这样做,您会发现只有一个子网会路由到 .1 IP 地址(仅以其中一个 IP 地址为例)。更重要的是,子网上的一些客户端会表现得好像他们可以达到 0.1,但实际上它与其他地方响应的0.1 不同。
通过使用如此多的重叠子网,您将拥有一个难以操作和排除故障的网络。
你不需要相信我。继续尝试你在说什么(使用对生产不重要的子网);很快,你就会想挂断这个重复地址的想法,因为它太坏了。
老实说,在我的职业生涯中,我使用重叠子网三次左右来解决我遇到的临时问题。这里的关键是即使子网重叠,我也从不重复 IP 地址。另外,我总是构建那些重叠的子网,目的是尽快将它们拆除。
网络节点对每个目的地进行路由——它查阅其本地路由表并决定数据包应该去哪里。没有尝试和错误,每个路由决策都是确定的。当该路由无法正常工作时,目的地将无法到达。
本地连接的目的地 - 在同一子网内 - 被直接发送到(没有网关)。例如,IP 地址/掩码为 192.168.0.1/24 的源节点直接与从 192.168.0.0 到 192.168.0.255 的所有 IP 地址对话。如果这些地址存在于您网络中的其他位置,则无法访问它们。
使用路由器/网关联系非本地目的地。在最简单的情况下,这是路由条目 0.0.0.0/0 的默认网关 - 适合所有内容,但它是要检查的最后一个条目。
该网关执行完全相同的操作 - 根据网关的路由表检查目的地是本地连接还是需要(另一个)网关。每个路由器上的每个转发决策只针对一个数据包执行一次。没有尝试和错误,也没有检查目的地是否在该路线上实际可达。
重复此转发过程,直到在最后一跳,目的地必须是本地连接的。如果不是,则丢弃数据包。
因此,请尝试找出一种方法,使您可以拥有重复的 IP 地址而不会导致路由失败。它行不通。