子网是否总是连续的 1?

Dir*_*oys 29 networking ip subnet

我了解子网掩码背后的基本前提,例如255.255.255.0. 但是我见过的所有子网示例都是(从左到右)连续的 1(HI 位)。例如,255.255.0.0( /16) 转换为以下八位字节:

11111111 . 11111111 . 00000000 . 00000000
Run Code Online (Sandbox Code Playgroud)

相信这些位必须是连续的,因为子网划分的重点是派生主机 ID 和可用设备 ID 的范围。但它确实让我想知道,您是否曾经有过子网掩码,例如255.17.255.0,或:

11111111 . 00010001 . 11111111 . 00000000
Run Code Online (Sandbox Code Playgroud)
  • 这会发生吗?或者子网不可能在没有连续 1 的情况下存在?如果是这样,为什么?
  • 否则,如果有可能做到这一点,你为什么要(一些具体的例子)?

TOO*_*GAM 30

是的,考虑它的简单方法是子网掩码在开始时始终为 1。如果子网大小指示器在二进制表示的开头没有 1,那么我会说子网大小指示器不是正确的“子网掩码”,使用现代标准。

RFC 1219指出较早的 RFC 950 允许非连续位。事实上,RFC 950 第 15 页(第 3 节)清楚地有一个“说明非连续子网位”的示例。但是,没有办法将此类子网转换为 CIDR 表示法。CIDR 样式表示法是 IPv6 使用的(在至少自RFC 1884 第 7 页,第 2.4 节的第一句),因此 IPv6 网络从未广泛支持非连续位。RFC 1219的方法指定“子网位(掩码 = 1)从工作的最高有效位分配对最少”。(萨米的回答中提到的RFC 4632 第 3.1 节指向了讨论 CIDR 表示法的官方标准。)

RFC 1878 第 2 页显示了所有 IPv4 子网的标准“子网掩码”符号,除了/0.

但是,我将详细说明 Sami 的答案,研究“为什么”(用一个具体的例子,正如问题所要求的那样)......

一些专业级 Cisco 设备支持称为“通配符掩码”的东西,它可以反转位。所以一个普通的子网可以用一个叫做00000000.00000000.00000000.11111111.

使用 Cisco 的通配符掩码时,并没有规定所有的零都必须在前。所以你可以使用00000000.00000000.00000000.11111110.

这最终会创建一个包含所有偶数 IP 地址的组。

了解这一点实际上很重要,因为思科的培训涵盖了这一点,因此思科专业认证的考试过程可能会询问这样的事情。

但是,我认为它主要是无用的。不是使用偶数地址或奇数地址将网络分成两半,您可以使用低编号地址和高编号地址将网络分成两半,通过创建一半大小的普通子网。

具有非连续位的通配符掩码并不是非常有用,并且使用起来可能更具挑战性。子网掩码位设置为 1 的意义在于该位有助于识别设备所在的子网。没有令人信服的理由将这些位分布在整个地址中,而不仅仅是在地址的开头很好地将它们分组. 结果是支持这些类型的掩码增加了复杂性,但没有太多实质性的好处。

我猜思科最终同意这种非传统子网掩码没有意义,因为他们最终放弃了对“通配符掩码”的支持。旧的 Pix 防火墙支持“通配符掩码”,但较新的 ASA 单元使用标准的“子网掩码”代替.

我什至不会尝试在掩码中创建一个具有非连续“子网位”的网络,因为很多软件会遵循更新的趋势/标准,并拒绝这样的网络设计。即使我使用的是较旧的软件,我也可能希望我的网络能够轻松修改,以便能够使用较新的软件而无需重新设计网络。因此,连续的“子网位”是唯一的出路。

如果你在测试中被问到这个问题,我会很有信心地说所有的 1 都需要在地址的开头。这就是任何理智的测试人员都希望大多数学生在这个时代学习的东西。


Sam*_*nen 20

RFC中的3.1 节显示了无类域间路由中允许的掩码。这些位必须是连续的,路由才能正常工作。

同样,在逻辑上思考时,拥有奇怪的随机网络掩码也没有任何意义。