使用 255.255.255.0 以外的子网掩码有什么缺点吗?

网络工程 子网
2021-07-05 01:42:39

我刚刚完成了 Cisco CCNA 视频课程,所以我对网络的了解足以说明危险。我对 IP 和子网的工作方式有一个很好的了解,但我无法弄清楚的一件事是,为什么 255.255.255.0 是我见过的大多数路由器中的默认子网掩码(诚然,几乎所有消费级和 SOHO 路由器)。

当然,消费级路由器没有太多理由使用其他任何东西——除非你需要超过 254 个 IP,或者想要做一些复杂的事情,比如组织你的网络(服务器在 192.168.1.X,台式机在192.168.2.x 等)

这让我想到,这些是使用 255.255.255.0 的唯一原因吗?如果默认掩码是 255.255.0.0,那么人们究竟会发生什么变化?使用后者有什么缺点吗?

3个回答

好吧,有时您会发现一些消费硬件带有硬编码的掩码。但这相对罕见,并不是决定性因素。您还希望保持在预定义的私有 ip 范围内,这是更大的考虑因素。

通常选择默认值的常见做法(至少在我的脖子上)是尽可能使用最紧的掩码,即使它不是绝对最紧的,人类也很容易处理。

你可以使用任何你想要的东西,但要小心不要打开一个开始与互联网 IP 冲突的范围。https://en.m.wikipedia.org/wiki/Reserved_IP_addresses 上有一个保留地址列表例如 192.xxx/255.0.0.0 不适用于专用 LAN。

我知道这并不能完全回答你的问题。除其他答案外,我将对更具体的原因进行一些研究,为什么当我不在手机上时默认值为 /24。我强烈怀疑这要么是传统,要么是最安全的赌注,因为不明智的用户可能会选择非私人范围。

我想答案很简单:Clasful 网络还没有完全消亡(是的,我知道,我总是在写相反的内容)。

在分配 IP 地址时,许多操作系统/工具(Windows、Linux ifconfig)根据网络类别建议默认掩码。由于 192.168.xy 是 C 类,因此建议使用 255.255.255.0。

所以如果我在 Linux 系统上做这样的事情:

# ifconfig eth1 10.0.0.1 
# ifconfig eth1:1 172.16.1.1 
# ifconfig eth1:2 192.168.99.1

我得到

# ifconfig | grep "inet addr"
inet addr:10.0.0.1  Bcast:10.255.255.255  Mask:255.0.0.0
inet addr:172.16.1.1  Bcast:172.16.255.255  Mask:255.255.0.0
inet addr:192.168.99.1  Bcast:192.168.99.255  Mask:255.255.255.0

由于许多系统以这种方式使用默认值将不太可能破坏限制供应商支持成本的事情。另外:人们已经习惯了这一点,并且会抱怨该设备太复杂了。

在划分子网之前,只有基于类的寻址,最小的网络是 /24。因此,在向子网划分的过渡过程中,当将子网掩码引入现有网络时,大多数都得到了 255.255.255.0 作为向后兼容。所以这是常见的事情,也只是一个非常容易使用的掩码,它是一个整数(二进制)并保留最后一个八位字节的 C 类语义是主机号,其余的是网络号。使用它可以避免为了确定两个地址是否在同一个子网上而必须进行十进制到二进制的转换。

除了熟悉和惯性之外,我认为它持续存在的另一个原因是 IPv4 中存在大量广播流量,并且根据定义,广播流量会流向子网上的每个设备。因此,在实践中,当您完成路由并为端节点分配地址时,您希望将生成广播的设备数量保持在一个合理的数量。C 类子网 255.255.255.0 足够大,大多数组织不需要比这更多的地址,并且足够小以防止被广播淹没。

您确实会看到较小的子网,例如 255.255.255.252,在分发可公开路由的 IPv4 地址时使用,因为这些地址非常宝贵。但是,曾经有一个 ISP 给了我们 3 个带有 /30 子网的地址,结果其中一个地址与其他 2 个地址位于不同的子网上。这很烦人,而且可能是他们的错误,但这很难因为数学而发现。