是否可以使用非前缀网络掩码?


1

我所遇到的每个网络掩码都是一个前缀,可以用CIDR表示法很好地表示:255表示255.0.0.0,/ 8表示255.255.0.0,/ 24表示255.255.255.0。

当然,我们可以更改网络掩码的长度并获得许多不同的值。

问题是,网络掩码是否可以存在,其中“网络位”不是地址的前缀?像255.0.255.0。


从技术上讲,是的,“网络掩码”概念允许这样做。但是,它们是荒谬的,因为它们不适合分层路由,因此实际上它们将被拒绝。
grawity

Answers:


2

取决于您要使用的功能。

在过去,netmask实际上是应用于IP地址的掩码。但是,随着CIDR的引入,现在每个人都期望一串一(1),后跟零(0)。您可以打赌,高速核心路由器现已针对此模式进行了优化,并与不同的位掩码相混淆。

对于本地静态网络,您仍然可以使用255.0.255.0之类的掩码,甚至可以将网络与此类掩码绑定在一起。但是,如果遇到仅接受CIDR表示法的路由器,则将无法正确路由。


虽然确实不再使用子网掩码来区分网络地址与子网地址和主机地址,但即使在现代CIDR方案中,网络地址也必须在掩码中用连续的1表示。充其量,如果不是1,那么大多数硬件都将网络地址假定为掩码中第一个0的结尾,即使硬件可以处理,掩码也没有意义,因为您可以不能将网络地址与主机区分开。CIDR摆脱了传统的子网,但是没有任何其他改变。
Frank Thomas

我们知道CIDR“掩码”是1的字符串,后跟0的字符串。但是,OP询问是否可以使用其他不连续的位掩码。如果软件/硬件支持,答案是肯定的。例如,在Linux机器上,其中所有IP路由均在可使用掩码的软件中完成。但是,当您遇到只支持CIDR的硬件或软件时,您就不走运了。
2015年

1
但这对软件的支持毫无意义,因此似乎无所适从。op提供的掩码没有向IP堆栈表示任何有意义的信息,因此它将异常处理(可能通过忽略前0后面的所有内容),并且不公开任何实际功能。您希望这款面膜到底能做什么?
Frank Thomas

0

否。IP地址网络的定义指定第一部分是出现在所有主机中的常量部分,第二部分是适用于各个主机的可变部分。网络掩码必须是1s 字符串,后跟0s 字符串。

决定不赞成我的人应阅读https://en.wikipedia.org/wiki/Subnetwork


-1

不,因为那不是Mask。定义了掩码,以便地址和掩码进行“与”运算,网络位将始终保持原样,并且主机位全为0。

例如,如果我们将IP和MASK一起与,则得到以下结果:

00110010 00101010 11100011 10101010
11111111 11111111 00000000 00000000
---------------AND-----------------
00110010 00101010 00000000 00000000

如您所建议,不连续的蒙版无法做到这一点。这是有关IP地址/掩码二进制性质的有趣文档。

当应用掩码时,您建议的值可用作匹配特定IP地址的模式,但是由于它实际上会忽略它尝试处理的任何IP地址的第二个八位位组,因此路由器和其他设备将无法确定正确的网络地址,因此无法按预期传递流量。

请注意,二进制“与”运算和掩码本身的性质设计为在硬件中通过一对寄存器上的单个运算来计算,并且“与”运算与逻辑运算一样基本。

- - -编辑 - - - - - - - -

不知道为什么要投票,但是我要指出,根据RFC 1519(CIDR),掩码必须在左侧连续:

还应概括遵循这些规则的实现,以便为所有路由目的地接受任意的网络号和掩码。 唯一突出的约束是必须使遮罩保持连续

地址可能使用非连续屏蔽的唯一情况是(根据RFC 950):

  1. 分类子网正在使用中
  2. “奇数”位必须出现在有意义的掩码的最后一个八位位组中(例如255.255.88.0、255.255.255.88)

由于标识子网的位由位掩码指定,因此它们不必在地址中相邻。但是,我们建议子网位是连续的,并定位为本地地址的最高有效位。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.