光看一个 IP 地址 192.168.12.170,还看不出它所在的局域网有多大。必须带上子网前缀或子网掩码,写成 192.168.12.170/26 这样的形式,才能算出哪些地址和它在同一个子网里。
子网(Subnet)是一段共享同一网络前缀的连续 IPv4 地址块。网管可以把一个大地址段按需切分给财务、研发、服务器区、访客 Wi-Fi 等不同区域。设备只要比对 IP 地址的网络位,就能判断目标 IP 是不是和自己在同一个子网里。
CIDR 前缀与子网掩码
IPv4 地址一共有 32 位。/24 是 CIDR(无类域间路由)前缀写法,表示最左边连续 24 位是网络位,右边剩下的 8 位是主机位。在 192.168.12.170/24 里,前三组 192.168.12 共 24 位固定不变;最后一组 170 是主机位,可以在 0 到 255 之间变化。
如果写成子网掩码(Subnet Mask),就是把网络位全填 1,主机位全填 0:
/24 掩码二进制 11111111.11111111.11111111.00000000
对应点分十进制 255 .255 .255 .0
这就是最常见的 255.255.255.0。
如果一个部门只有几十台设备,直接给整个 /24(256 个地址)太浪费,可以从主机位里“借”几位变成网络位。比如向主机位借 1 位,前缀就变成 /25(前 25 位为 1、后 7 位为 0),第四组的掩码二进制是 10000000(十进制 128),对应的子网掩码就是 255.255.255.128。
如果向主机位借 2 位,网络位从 24 位增加到 26 位,主机位就只剩 32 - 26 = 6 位:
第四组的前 2 位变成了网络位,二进制掩码是 11000000,换算成十进制:
11000000 = 128 + 64 = 192
所以 /26 对应的子网掩码是 255.255.255.192。
网络地址、广播地址与可用主机数
接着看 192.168.12.170/26 落在哪个地址块里。第四组 170 展开成二进制是 10101010。因为前缀是 /26,第四组的前 2 位 10 是网络位,后 6 位是主机位:
接口实际 IP 10 101010 → 第四组为 170
主机位全置 0 10 000000 → 第四组为 128(网络地址)
主机位全置 1 10 111111 → 第四组为 191(广播地址)
这个子网的地址范围就是 192.168.12.128 ~ 192.168.12.191,一共 2^6 = 64 个地址。在标准 IPv4 子网里,头尾两个地址有特殊用途,不能分给普通设备:
| 特殊地址 | 具体数值 | 用途 |
|---|---|---|
| 网络地址(Network Address) | 192.168.12.128 | 主机位全为 0,代表这个子网本身 |
| 可分配主机范围 | 192.168.12.129 ~ .190 | 共 62 个可用地址,分给电脑、手机、路由器接口等 |
| 广播地址(Broadcast Address) | 192.168.12.191 | 主机位全为 1,用来向这个子网里的所有设备发广播 |
一个子网能分给主机的地址数是 2^主机位数 - 2。在这个 /26 子网里,可用主机数是 2^6 - 2 = 64 - 2 = 62。可以看到,网络地址不一定是 .0 结尾,广播地址也不一定是 .255 结尾,具体是多少全看前缀切在哪里。