![无前缀的网络掩码可以吗?](https://linux22.com/image/1462395/%E6%97%A0%E5%89%8D%E7%BC%80%E7%9A%84%E7%BD%91%E7%BB%9C%E6%8E%A9%E7%A0%81%E5%8F%AF%E4%BB%A5%E5%90%97%EF%BC%9F.png)
我遇到过的每个网络掩码都是一个前缀,可以用跨域路由表示法:/8 表示 255.0.0.0,/16 表示 255.255.0.0,/24 表示 255.255.255.0。
当然,我们可以改变网络掩码的长度并得到很多不同的值。
问题是,是否存在“网络位”不是地址前缀的网络掩码?例如 255.0.255.0。
答案1
有点取决于你想用它做什么。
在过去,网络掩码实际上是应用于 IP 地址的掩码。然而,随着 CIDR 的引入,现在每个人都希望看到一串 1 后面跟着 0 的字符串。你可以肯定,高速核心路由器现在针对这种模式进行了优化,并且会与不同的位掩码混淆。
对于本地静态网络,您仍然可以使用 255.0.255.0 之类的掩码,甚至可以用此类掩码将网络绑定在一起。但是,如果您遇到仅接受 CIDR 表示法的路由器,您将无法正确路由。
答案2
不是。IP 地址网络的定义规定,第一部分是出现在所有主机中的恒定部分,第二部分是适用于各个主机的可变部分。网络掩码必须是一串1
s 后面跟着一串0
s。
无论谁决定投反对票,都应该读一读https://en.wikipedia.org/wiki/Subnetwork
答案3
不,因为那不是一个面具. Mask 的定义是,如果你和地址和掩码,网络位始终保持原样,主机位全为0。
例如,如果我们将 IP 和 MASK 进行 AND 运算,我们会得到以下结果:
00110010 00101010 11100011 10101010
11111111 11111111 00000000 00000000
---------------AND-----------------
00110010 00101010 00000000 00000000
您所建议的非连续掩码无法做到这一点。这是一篇关于IP 地址/掩码的二进制性质。
当应用掩码时,您建议的值可以用作匹配特定 IP 地址的模式,但由于它基本上会忽略它试图处理的任何 IP 地址的第二个八位字节,路由器和其他设备将无法正确确定网络地址,从而无法按预期传输流量。
请注意,二进制 AND 运算和掩码本身的性质被设计为通过一对寄存器上的单一运算在硬件中进行计算,并且 AND 是逻辑运算中最基本的运算。
- - -编辑 - - - - - - - -
不确定为什么会投反对票,但我想指出的是RFC 1519(CIDR),蒙版必须与左侧相邻:
遵循这些规则的实现也应该被推广,以便所有路由目的地都可以接受任意网络号和掩码。 唯一未解决的限制是掩码必须保持连续。
地址可能使用非连续掩码的唯一情况是(根据 RFC 950):
- 正在使用有类子网划分
- “奇数”位必须出现在有意义的掩码的最后一个八位字节中(例如 255.255.88.0、255.255.255.88)
由于标识子网的位由位掩码指定,因此它们在地址中不必相邻。但是,我们建议子网位连续,并位于本地地址的最高有效位。