CIDR 计算器
在 CIDR 前缀、子网掩码与通配符掩码之间双向转换。输入 /24、255.255.255.0 或 0.0.0.255,即可得到掩码、通配符掩码、块大小、地址数量与二进制形式,并附带完整的 /0 到 /32 参考表。
完整 CIDR 参考表
从 /0 到 /32 的所有合法 IPv4 前缀,附掩码、通配符掩码与地址数量。
| 前缀 | 子网掩码 | 通配符 | 地址总数 | 可用主机 | 块大小 |
|---|---|---|---|---|---|
| /0 | 0.0.0.0 | 255.255.255.255 | 4,294,967,296 | 4,294,967,294 | 4,294,967,296 |
| /1 | 128.0.0.0 | 127.255.255.255 | 2,147,483,648 | 2,147,483,646 | 2,147,483,648 |
| /2 | 192.0.0.0 | 63.255.255.255 | 1,073,741,824 | 1,073,741,822 | 1,073,741,824 |
| /3 | 224.0.0.0 | 31.255.255.255 | 536,870,912 | 536,870,910 | 536,870,912 |
| /4 | 240.0.0.0 | 15.255.255.255 | 268,435,456 | 268,435,454 | 268,435,456 |
| /5 | 248.0.0.0 | 7.255.255.255 | 134,217,728 | 134,217,726 | 134,217,728 |
| /6 | 252.0.0.0 | 3.255.255.255 | 67,108,864 | 67,108,862 | 67,108,864 |
| /7 | 254.0.0.0 | 1.255.255.255 | 33,554,432 | 33,554,430 | 33,554,432 |
| /8 | 255.0.0.0 | 0.255.255.255 | 16,777,216 | 16,777,214 | 16,777,216 |
| /9 | 255.128.0.0 | 0.127.255.255 | 8,388,608 | 8,388,606 | 8,388,608 |
| /10 | 255.192.0.0 | 0.63.255.255 | 4,194,304 | 4,194,302 | 4,194,304 |
| /11 | 255.224.0.0 | 0.31.255.255 | 2,097,152 | 2,097,150 | 2,097,152 |
| /12 | 255.240.0.0 | 0.15.255.255 | 1,048,576 | 1,048,574 | 1,048,576 |
| /13 | 255.248.0.0 | 0.7.255.255 | 524,288 | 524,286 | 524,288 |
| /14 | 255.252.0.0 | 0.3.255.255 | 262,144 | 262,142 | 262,144 |
| /15 | 255.254.0.0 | 0.1.255.255 | 131,072 | 131,070 | 131,072 |
| /16 | 255.255.0.0 | 0.0.255.255 | 65,536 | 65,534 | 65,536 |
| /17 | 255.255.128.0 | 0.0.127.255 | 32,768 | 32,766 | 32,768 |
| /18 | 255.255.192.0 | 0.0.63.255 | 16,384 | 16,382 | 16,384 |
| /19 | 255.255.224.0 | 0.0.31.255 | 8,192 | 8,190 | 8,192 |
| /20 | 255.255.240.0 | 0.0.15.255 | 4,096 | 4,094 | 4,096 |
| /21 | 255.255.248.0 | 0.0.7.255 | 2,048 | 2,046 | 2,048 |
| /22 | 255.255.252.0 | 0.0.3.255 | 1,024 | 1,022 | 1,024 |
| /23 | 255.255.254.0 | 0.0.1.255 | 512 | 510 | 512 |
| /24 | 255.255.255.0 | 0.0.0.255 | 256 | 254 | 256 |
| /25 | 255.255.255.128 | 0.0.0.127 | 128 | 126 | 128 |
| /26 | 255.255.255.192 | 0.0.0.63 | 64 | 62 | 64 |
| /27 | 255.255.255.224 | 0.0.0.31 | 32 | 30 | 32 |
| /28 | 255.255.255.240 | 0.0.0.15 | 16 | 14 | 16 |
| /29 | 255.255.255.248 | 0.0.0.7 | 8 | 6 | 8 |
| /30 | 255.255.255.252 | 0.0.0.3 | 4 | 2 | 4 |
| /31 | 255.255.255.254 | 0.0.0.1 | 2 | 2(RFC 3021) | 2 |
| /32 | 255.255.255.255 | 0.0.0.0 | 1 | 1 | 1 |
速查:掩码转前缀
读懂点分十进制书写的掩码。数出 1 的个数,或直接使用下面的字节边界表。
| 子网掩码 | 前缀 | 通配符 | 可用主机 | 块大小 |
|---|---|---|---|---|
| 255.255.255.128 | /25 | 0.0.0.128 | 126 | 128 |
| 255.255.255.192 | /26 | 0.0.0.64 | 62 | 64 |
| 255.255.255.224 | /27 | 0.0.0.32 | 30 | 32 |
| 255.255.255.240 | /28 | 0.0.0.16 | 14 | 16 |
| 255.255.255.248 | /29 | 0.0.0.8 | 6 | 8 |
| 255.255.255.252 | /30 | 0.0.0.4 | 2 | 4 |
| 255.255.255.254 | /31 | 0.0.0.2 | 0 | 2 |
| 255.255.255.255 | /32 | 0.0.0.1 | 0 | 1 |
示例:255.255.255.224 的最后一个字节有 3 个 1 位,所以前缀是 24 + 3 = /27,通配符掩码是 0.0.0.31,共 32 个地址,其中 30 个可用。
CIDR 是什么,以及它为什么取代了地址分类
1993 年之前,IPv4 地址只有三种尺寸:A 类提供 1,600 万个地址,B 类提供 65,536 个,C 类提供 256 个。没有办法申请 1,000 个地址,于是机构只能取用上一级尺寸,全球路由表里因此塞满了大部分空间都闲置的条目。
CIDR 取消了这些固定边界。前缀长度现在精确说明 32 位中有多少位是网络位,而掩码只是把同一个数字写成点分十进制的便捷形式。/22 提供 1,024 个地址 —— 这正是分类寻址无法表达的尺寸。
地址总数 = 2^(32 − 前缀长度) 子网掩码 = 前缀长度个 1,后面接 (32 − 前缀长度) 个 0 通配符掩码 = 子网掩码的按位取反 块大小 = 2^(32 − 前缀长度)(与地址总数相同)
如何读懂点分十进制掩码
每个子网掩码都是一段连续的 1 后面接一段连续的 0,所以每个字节只能取九个值之一:0、128、192、224、240、248、252、254 或 255。其它任何值 —— 例如 255.255.128.224 —— 都不是合法掩码。
示例:把 255.255.255.0 转换成前缀
前两个字节是 255,贡献 16 位。第三个字节 240 的二进制是 11110000,再贡献 4 位。第四个字节是 0。所以前缀是 16 + 4 = /20。
255.255.240.0 → /20 → 通配符掩码 0.0.15.255 → 4,096 个地址
超过 /24 之后,全部工作都由最后一个字节承担,因此一旦熟悉了规律,用块大小法会比逐位数位更快。
子网掩码与通配符掩码
两者用相反的约定表达同一条边界,把它们搞混是 Cisco 配置中最常见的一个错误。
| 前缀 | 子网掩码 | 通配符掩码 | 含义 |
|---|---|---|---|
| /24 | 255.255.255.0 | 0.0.0.255 | 匹配前三个字节;忽略最后一个字节 |
| /25 | 255.255.255.128 | 0.0.0.127 | 匹配前 25 位;忽略其余 7 位 |
| /26 | 255.255.255.192 | 0.0.0.63 | 匹配前 26 位;忽略其余 6 位 |
| /27 | 255.255.255.224 | 0.0.0.31 | 匹配前 27 位;忽略其余 5 位 |
| /30 | 255.255.255.252 | 0.0.0.3 | 匹配前 30 位;忽略其余 2 位 |
| /32 | 255.255.255.255 | 0.0.0.0 | 匹配全部 32 位 —— 单个主机 |
在 Cisco ACL 语法中,192.168.1.0 0.0.0.255 匹配整个 /24,因为通配符在主机位上全是 1。如果写成 192.168.1.0 255.255.255.0,匹配到的将是完全不同、并非预期的一组地址,因为只有通配符为 0 的那些位才必须匹配 —— 这种情况下只有第一个字节必须匹配 0,匹配不到任何有意义的东西。
在 OSPF 中,同样的约定出现在 network 语句里: network 10.0.0.0 0.0.0.255 area 0 会在该 /24 上启用协议。
前缀选型速查表
规划子网时要从主机数量倒推。加上网络地址和广播地址两个,然后取能容纳得下的最小 2 的幂。
| 所需主机 | 所需地址 | 前缀 | 提供地址 | 余量 |
|---|---|---|---|---|
| 1 | 3 | /29 | 8 | 剩余 5 个可用 |
| 5 | 7 | /29 | 8 | 剩余 1 个可用 |
| 10 | 12 | /28 | 16 | 剩余 2 个可用 |
| 25 | 27 | /27 | 32 | 剩余 3 个可用 |
| 50 | 52 | /26 | 64 | 剩余 10 个可用 |
| 100 | 102 | /25 | 128 | 剩余 26 个可用 |
| 200 | 202 | /24 | 256 | 剩余 54 个可用 |
| 500 | 502 | /23 | 512 | 剩余 10 个可用 |
VLSM 规划器正是把这张表套用到一整份需求清单上,并在分配时避免重叠。
CIDR 参考页面
每个前缀都有独立页面,包含推算示例、掩码、主机范围以及其中包含的子网。
常见问题
CIDR 是什么意思?
CIDR 是 Classless Inter-Domain Routing(无类域间路由)的缩写,1993 年由 RFC 1518 与 RFC 1519 引入。它用前缀长度取代了固定的 A、B、C 类边界,因此一个网络可以是任意大小,从 /32 的单台主机一直到 /0 的默认路由。记法把前缀写成斜杠加网络位数,例如 192.168.1.0/24。
如何把子网掩码转换成 CIDR 前缀?
数出掩码中连续 1 的个数。255.255.255.224 的前三个字节贡献 24 个 1,最后一个字节再贡献 3 个,得到 /27。掩码必须是连续的 —— 像 255.255.0.255 这样的值就是非法的,因为 1 之间夹着 0。
如何把 CIDR 前缀转换成通配符掩码?
把子网掩码逐位取反即可。/24 的掩码是 255.255.255.0,所以通配符掩码是 0.0.0.255。在 Cisco ACL 中,通配符位为 0 表示“必须匹配”,为 1 表示“忽略”,这与子网掩码的约定正好相反 —— 也是访问控制列表中最常见的配置错误。
每个 CIDR 前缀各有多少个地址?
地址数是 2 的 (32 − 前缀长度) 次方。/24 有 2^8 = 256 个地址,/25 有 128 个,/26 有 64 个,依此类推。/0 有 2^32 = 4,294,967,296 个地址,必须用 64 位运算才能正确表示。
为什么 /31 很特殊?
/31 只有两个地址,而通常的规则要保留网络地址和广播地址,于是就一个都不剩。RFC 3021 把 /31 重新定义为点对点链路,两个地址都可分配,因此 /31 一点都不浪费地址空间。现代路由器互联链路普遍使用它。
什么是块大小,它为什么重要?
块大小就是子网内的地址数量,等于 2^(32 − 前缀长度)。它告诉你相同尺寸的子网之间的间隔:/27 子网每隔 32 个地址开始一个,所以在一个 /24 内它们从 .0、.32、.64、.96、.128、.160、.192 和 .224 开始。不在块大小边界上的子网会相互重叠并导致路由错误。