NetCalcLab

CIDR 计算器

在 CIDR 前缀、子网掩码与通配符掩码之间双向转换。输入 /24、255.255.255.0 或 0.0.0.255,即可得到掩码、通配符掩码、块大小、地址数量与二进制形式,并附带完整的 /0 到 /32 参考表。

支持 /24、单独的 24、点分十进制的子网掩码(如 255.255.255.0),以及通配符掩码(如 0.0.0.255)。

示例:

完整 CIDR 参考表

从 /0 到 /32 的所有合法 IPv4 前缀,附掩码、通配符掩码与地址数量。

CIDR 与子网掩码对照表
前缀子网掩码通配符地址总数可用主机块大小
/00.0.0.0255.255.255.2554,294,967,2964,294,967,2944,294,967,296
/1128.0.0.0127.255.255.2552,147,483,6482,147,483,6462,147,483,648
/2192.0.0.063.255.255.2551,073,741,8241,073,741,8221,073,741,824
/3224.0.0.031.255.255.255536,870,912536,870,910536,870,912
/4240.0.0.015.255.255.255268,435,456268,435,454268,435,456
/5248.0.0.07.255.255.255134,217,728134,217,726134,217,728
/6252.0.0.03.255.255.25567,108,86467,108,86267,108,864
/7254.0.0.01.255.255.25533,554,43233,554,43033,554,432
/8255.0.0.00.255.255.25516,777,21616,777,21416,777,216
/9255.128.0.00.127.255.2558,388,6088,388,6068,388,608
/10255.192.0.00.63.255.2554,194,3044,194,3024,194,304
/11255.224.0.00.31.255.2552,097,1522,097,1502,097,152
/12255.240.0.00.15.255.2551,048,5761,048,5741,048,576
/13255.248.0.00.7.255.255524,288524,286524,288
/14255.252.0.00.3.255.255262,144262,142262,144
/15255.254.0.00.1.255.255131,072131,070131,072
/16255.255.0.00.0.255.25565,53665,53465,536
/17255.255.128.00.0.127.25532,76832,76632,768
/18255.255.192.00.0.63.25516,38416,38216,384
/19255.255.224.00.0.31.2558,1928,1908,192
/20255.255.240.00.0.15.2554,0964,0944,096
/21255.255.248.00.0.7.2552,0482,0462,048
/22255.255.252.00.0.3.2551,0241,0221,024
/23255.255.254.00.0.1.255512510512
/24255.255.255.00.0.0.255256254256
/25255.255.255.1280.0.0.127128126128
/26255.255.255.1920.0.0.63646264
/27255.255.255.2240.0.0.31323032
/28255.255.255.2400.0.0.15161416
/29255.255.255.2480.0.0.7868
/30255.255.255.2520.0.0.3424
/31255.255.255.2540.0.0.122(RFC 3021)2
/32255.255.255.2550.0.0.0111

速查:掩码转前缀

读懂点分十进制书写的掩码。数出 1 的个数,或直接使用下面的字节边界表。

子网掩码到 CIDR 前缀查找表
子网掩码前缀通配符可用主机块大小
255.255.255.128/250.0.0.128126128
255.255.255.192/260.0.0.646264
255.255.255.224/270.0.0.323032
255.255.255.240/280.0.0.161416
255.255.255.248/290.0.0.868
255.255.255.252/300.0.0.424
255.255.255.254/310.0.0.202
255.255.255.255/320.0.0.101

示例: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 配置中最常见的一个错误。

子网掩码与通配符掩码对照
前缀子网掩码通配符掩码含义
/24255.255.255.00.0.0.255匹配前三个字节;忽略最后一个字节
/25255.255.255.1280.0.0.127匹配前 25 位;忽略其余 7 位
/26255.255.255.1920.0.0.63匹配前 26 位;忽略其余 6 位
/27255.255.255.2240.0.0.31匹配前 27 位;忽略其余 5 位
/30255.255.255.2520.0.0.3匹配前 30 位;忽略其余 2 位
/32255.255.255.2550.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 的幂。

主机需求到前缀长度
所需主机所需地址前缀提供地址余量
13/298剩余 5 个可用
57/298剩余 1 个可用
1012/2816剩余 2 个可用
2527/2732剩余 3 个可用
5052/2664剩余 10 个可用
100102/25128剩余 26 个可用
200202/24256剩余 54 个可用
500502/23512剩余 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 开始。不在块大小边界上的子网会相互重叠并导致路由错误。