网络掩码的可能(位)模式

网络工程 ipv4 ip ipv6 字首
2021-07-30 16:21:16

给定一个 prefix Y,很容易计算相应的网络掩码:将Y乘以一个设置位,然后用零填充“向右”,直到总共有 32 位 (IPv4)。

例子:

前缀24,因此网络掩码11111111 11111111 11111111 00000000255.255.255.0.

是否有具有不同位模式的网络掩码,例如

  • 00000000 11111111 00000000 11111111( 0.255.0.255)
  • 00000000 11111111 11111111 11111111( 0.255.255.255)
  • 11111111 11111111 11111111 00000001( 255.255.255.1)

指定“前缀”显然不适用于这些情况。

(我很确定答案是“否”,但我正在编写一些网络代码,这需要在所有可能的情况下都有效,所以我想 101% 确定。)

4个回答

RFC950指出

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

就强制执行而言,大多数设备都遵循此建议。早在 2012 年,我就设法在纯 Linux 网络上使用非连续子网掩码;我测试的 Windows、OSX、Cisco 和 HP 设备无法处理/允许它。

如果您使用前缀和网络,那么答案是否定的,位需要是连续的。在某些情况下,可以使用通配符掩码(掩码的反转),例如 Cisco ACL,这些可以是任何位模式。例如,您可以阻止来自网络上所有奇数主机的流量。这个好像还在教,但是我在现实世界中并没有看到它经常使用(虽然我已经看到了)。

不可以。网络掩码是一系列连续的。

(其他的是“通配符”模式。)

当 TCP/IP 首次出现并得到广泛使用时,实际上有很多子网具有不连续的掩码。但是随着地址变得稀缺,网络其余部分的开销允许这些前缀的全局路由,而不是强制所有内容仅基于前缀;太多了,全球网络改为只支持前缀。实际上可能仍然存在在内部使用非连续掩码的传统网络(许多 IGP 仍然支持这一点)。但是,当这样的网络连接到 Internet 时,它有一个覆盖所有这些的单一前缀,它会向 BGP 通告。当然,EGP(BGP 的前身)仅支持分类寻址。

我认识几个拥有原始问题 A 类网络的玩家,他们出于某种原因在内部使用了不连续的网络掩码。我只是不知道他们中是否有人还在这样做。他们中的许多人甚至不再退出。ARPAnet 的内部网络掩码为 255.0.0.255 (IIRC)。