公众号旧文

为什么 192.168.1.0/17 不是合法网络地址?

作者:胖子阅读 —

先说结论,原因是:网络地址必须是对齐的(aligned)。

而192.168.1.0/17没有对齐到/17的边界,所以它不是合法的网络地址。

图片

下面我们一步一步来看。

一、/17 的真实子网掩码

/17 表示:

  • 前 17 位是网络位
  • 后 15 位是主机位

子网掩码是:

255.255.128.0

二进制:

11111111.11111111.10000000.00000000

关键就在 第三节。

二、第三节的步长是 128

第三节的网络位只有 1 位:

1xxxxxxx

所以网络只能从:

0
128

开始。

因此 /17 网络只有两个可能:

192.168.0.0/17
192.168.128.0/17

三、两个 /17 网络范围

第一个

192.168.0.0/17

范围:

192.168.0.0 - 192.168.127.255

第二个

192.168.128.0/17

范围:

192.168.128.0 - 192.168.255.255

四、192.168.1.0 在哪里?

192.168.1.0 属于:

192.168.0.0 – 192.168.127.255

所以它属于这个网络:

192.168.0.0/17

换句话说:

192.168.1.0/17

实际上等价于:

192.168.0.0/17

但 192.168.1.0 不是网络起点,所以不能写成网络地址。

五、判断网络地址的通用规则

一个 IP 要成为 网络地址,必须满足:

IP & 子网掩码 = IP本身

我们算一下:

192.168.1.0
AND
255.255.128.0

第三节:

1 & 128 = 0

结果:

192.168.0.0

说明真正的网络地址是:

192.168.0.0

而不是 192.168.1.0。

六、为什么很多人会写错

因为大家习惯了 /24 网络:

192.168.1.0/24

这里确实是合法网络地址。

但当变成:

/23
/22
/21
/17

网络边界就会改变。

例如:

CIDR 合法网络起点
/24 每 1 个
/23 每 2 个
/22 每 4 个
/21 每 8 个
/17 每 128 个

所以 /17 必须从 0 或 128开始。

七、一个网络工程师常用的小技巧

快速判断的方法:

看变化的那一段,用 256 减掩码

例如:

255.255.128.0

第三节:

256 - 128 = 128

说明网络步长是:

0
128

总结

192.168.1.0/17 不是合法网络地址,因为:

  • /17 的子网掩码是 255.255.128.0
  • 网络边界在 第三节 0 和 128
  • 192.168.1.0 并没有对齐到这个边界
  • 真正的写法应该是:192.168.0.0/17