IPv4 子网计算器
输入 CIDR 记法的 IPv4 地址,即可得到网络地址、广播地址、子网掩码、通配符掩码、可用主机范围、块大小与完整二进制表示 —— 并正确处理多数计算器会算错的 /31 与 /32 边界情况。
子网是怎么算出来的
每个 IPv4 地址都是 32 位,通常写成用点分隔的四个十进制字节。CIDR 前缀长度说明其中多少位用来标识网络,其余位用来标识网络内的主机。
真正的计算只有三次位运算:把地址与子网掩码做 AND,主机位全部清零,得到网络地址;把通配符掩码与网络地址做 OR,主机位全部置一,得到广播地址。
子网掩码 = 前 /prefix 位为 1,其余为 0 网络地址 = IP 地址 AND 子网掩码 广播地址 = 网络地址 OR 通配符掩码 通配符掩码 = NOT 子网掩码(按位取反)
以 192.168.1.10/24 为例完整推算一遍:
IP 地址 11000000.10101000.00000001.00001010 192.168.1.10
子网掩码 11111111.11111111.11111111.00000000 255.255.255.0
───────────────────────────────────── AND
网络地址 11000000.10101000.00000001.00000000 192.168.1.0
通配符掩码 00000000.00000000.00000000.11111111 0.0.0.255
───────────────────────────────────── OR
广播地址 11000000.10101000.00000001.11111111 192.168.1.255
首个主机 192.168.1.1 (网络地址 + 1)
最后主机 192.168.1.254 (广播地址 − 1)
地址总数 256 个 可用主机 254 个子网从哪里开始:块大小与关键字节
块大小就是一个子网内的地址数量。/25 到 /32 的块大小都是落在单个字节内的 2 的幂,于是就有了最快的手算方法:先找出前缀落在哪个字节,再把地址向下取整到该字节中块大小的整数倍。
示例:192.168.1.100/27
/27 有 32 个地址,所以块大小是 32。前缀落在第四个字节,第四个字节就是关键字节。不大于 100 的 32 的最大倍数是 96。
网络地址 192.168.1.96 → 广播地址 192.168.1.127 → 可用主机 .97 到 .126
下一个同样大小的子网从 192.168.1.128 开始,接着是 192.168.1.160、192.168.1.192 与 192.168.1.224 —— 也就是 /24 里有 8 个 /27。
边界情况:/0、/30、/31 与 /32
有四个前缀的行为与通用规则不同,而它们恰恰是算错就会引发真实故障的地方。
- /0 —— 默认路由。它覆盖整个 IPv4 空间,所以“网络地址”是 0.0.0.0,广播地址是 255.255.255.255,不存在有意义的主机范围。这里的地址数量必须用 64 位运算,因为 232 会超出有符号 32 位整数。
- /30 —— 四个地址、两个可用。这是经典的广域网互联链路尺寸,也是多数点对点路由配置默认预期的大小。
- /31 —— 两个地址,没有网络地址和广播地址。RFC 3021 允许在点对点链路上把两个地址都分配给两端路由器,因此 /31 的可用地址数与 /30 相同,却只占一半的地址空间。
- /32 —— 单个主机路由,用于环回地址、任播地址以及指向某台设备的静态路由。
计算器同时给出传统算法下的可用主机数和 RFC 3021 的口径,方便你按自己设计遵循的约定取值。
示例:为一个需要 100 台主机的部门 VLAN 选大小
从主机需求倒推。至少需要 102 个地址(100 台主机加网络地址和广播地址)。2 的幂依次是 ……64、128、256,第一个够用的是 128,所以主机位需要 7 位,前缀就是 /25。
/25 提供 126 个可用主机 —— 留出 26 个用于扩展。
/26 只能提供 62 个可用主机,偏小。这正是 VLSM 规划器会替你在一整份需求清单上自动完成的计算。
这个计算器帮你避开的常见错误
- 以为网络地址总是 /24。如果地址是 10.1.2.3/8,网络地址是 10.0.0.0,而不是 10.1.2.0。
- 把通配符掩码当成子网掩码的另一种写法。两者互为取反,在 ACL 里写反会把匹配条件完全反过来。
- 忘记网关也要占用一个可用地址。一个 /29 有 6 个可用主机,若路由器占用第一个,留给设备的只剩 5 个。
常用子网尺寸
最常见的几种前缀,附对应掩码与可用主机数。
| 前缀 | 子网掩码 | 地址总数 | 可用主机 | 典型用途 |
|---|---|---|---|---|
| /8 | 255.0.0.0 | 16,777,216 | 16,777,214 | 超大型私有或运营商地址块 |
| /16 | 255.255.0.0 | 65,536 | 65,534 | 大型园区或企业地址块 |
| /20 | 255.255.240.0 | 4,096 | 4,094 | 大型站点或运营商客户 |
| /22 | 255.255.252.0 | 1,024 | 1,022 | 分支机构或 VPN 地址池 |
| /23 | 255.255.254.0 | 512 | 510 | 两个 VLAN 合并 |
| /24 | 255.255.255.0 | 256 | 254 | 标准 LAN 或 VLAN |
| /25 | 255.255.255.128 | 128 | 126 | 半个 /24 |
| /26 | 255.255.255.192 | 64 | 62 | 小型部门 |
| /27 | 255.255.255.224 | 32 | 30 | 小团队或设备组 |
| /28 | 255.255.255.240 | 16 | 14 | 小型网段 |
| /29 | 255.255.255.248 | 8 | 6 | 小型链路段 |
| /30 | 255.255.255.252 | 4 | 2 | 广域网点对点链路 |
| /31 | 255.255.255.254 | 2 | 2(RFC 3021) | 点对点链路,无广播地址 |
| /32 | 255.255.255.255 | 1 | 1 | 主机路由或环回地址 |
/24 的块大小是 256,通配符掩码是 0.0.0.255 —— 这与在 Cisco ACL 中匹配整个子网时使用的值一致。
常见问题
如何从一个 IP 地址算出子网?
把地址拆成 32 个二进制位,再按前缀长度一分为二。以 192.168.1.10/24 为例,前 24 位是网络部分,后 8 位是主机部分。网络地址是 192.168.1.0(主机位全 0),广播地址是 192.168.1.255(主机位全 1),可用主机为 192.168.1.1 到 192.168.1.254。
/24 有多少个可用主机?
/24 共有 256 个地址。按传统子网划分,其中两个被保留 —— 网络地址和广播地址 —— 因此剩下 254 个可用主机地址。/24 是单个 VLAN 最常用的子网尺寸。
子网掩码和通配符掩码有什么区别?
子网掩码在网络部分为 1、主机部分为 0,所以 /24 是 255.255.255.0。通配符掩码正好相反,同一个 /24 是 0.0.0.255。通配符掩码用于 Cisco ACL 与 OSPF network 语句,其中 0 表示“必须匹配”,1 表示“忽略”。
为什么 /31 的可用主机显示为 0?
传统规则要减去网络地址和广播地址两个,而 /31 总共只有两个地址。RFC 3021 改变了这一点:在点对点链路上,/31 的两个地址可以分别分配给两端的路由器,使同一地址块内能容纳的广域网链路数量翻倍。计算器会把两种口径都列出来。
不转成二进制怎么求网络地址?
先求块大小 —— 即子网内的地址数量。/27 的块大小是 32。然后找出不大于地址关键字节的、块大小的最大倍数。对于 192.168.1.100/27,关键字节是第四个字节:32 × 3 = 96,所以网络地址是 192.168.1.96,广播地址是 192.168.1.127。
172.16.0.0 是私有地址还是公网地址?
172.16.0.0/12 是 RFC 1918 定义的三个私有地址段之一,覆盖 172.16.0.0 到 172.31.255.255。计算器会把它标注为私有地址并显示匹配的地址段,方便你在写进路由器配置前先确认。