# 子网掩码和 CIDR 怎么算?/24 是什么意思(附速查表) > 子网掩码到底在做什么、/24 和 255.255.255.0 为什么是同一回事、怎样手算网络地址、广播地址和可用主机数,以及 /8 到 /32 的 CIDR 速查表。 - Canonical page: https://obelisk.club/blog/subnet-mask-cidr-explained-zh - Author: Peter Zhang - Published: 2026-10-22 - Tags: 网络, 子网, cidr, ipv4, 中文 子网掩码用来说明一个 IPv4 地址里,哪一部分表示网络,哪一部分表示设备。比如 `192.168.1.20` 配上掩码 `255.255.255.0`,前三段(`192.168.1`)是网络,最后一段(`20`)是这台设备。CIDR 写法则是在斜杠后写出网络位的个数:`255.255.255.0` 换成二进制是 24 个 1,所以写作 `/24`。 一个 /24 有 256 个地址。第一个(`.0`)是网络地址,最后一个(`.255`)是广播地址,所以能分给设备的有 254 个。 ## 关键在二进制位 IPv4 地址是 32 位,写成四个 0 到 255 的数。掩码也是 32 位:前面一串 1,后面全是 0。1 标出网络部分,0 标出主机部分。 ```text 地址 192.168.10.77 11000000.10101000.00001010.01001101 掩码 /26 11111111.11111111.11111111.11000000 网络地址 192.168.10.64 11000000.10101000.00001010.01000000 ``` 求网络地址,就是掩码为 1 的位保留地址原值、其余位清零(按位与)。这里最后一段 77 是 `01001101`,只保留前两位得到 `01000000`,也就是 64。 ## 手算网络地址、广播地址和可用主机 以 `192.168.10.77/26` 为例: 1. **块大小。** 32 − 26 = 6 个主机位,2⁶ = 每个子网 64 个地址。 2. **网络地址。** 子网在最后一段按 64 的倍数开始:0、64、128、192。77 落在从 64 开始的那块,所以网络地址是 `192.168.10.64`。 3. **广播地址。** 这块里的最后一个地址:64 + 64 − 1 = 127,即 `192.168.10.127`。 4. **可用主机。** 两者之间的全部地址:`192.168.10.65` 到 `192.168.10.126`,共 62 个。 5. **掩码。** 26 个 1 就是 `255.255.255.192`(最后一段是 256 − 64)。 边界落在前面某一段时方法一样。`10.20.30.0/23` 有 9 个主机位、512 个地址,第三段跨两个值:从 `10.20.30.0` 到 `10.20.31.255`,最后一个可用地址是 `10.20.31.254`。 ## CIDR 速查表 | CIDR | 子网掩码 | 反掩码 | 地址数 | 可用主机 | |---|---|---|---:|---:| | /8 | 255.0.0.0 | 0.255.255.255 | 16,777,216 | 16,777,214 | | /16 | 255.255.0.0 | 0.0.255.255 | 65,536 | 65,534 | | /20 | 255.255.240.0 | 0.0.15.255 | 4,096 | 4,094 | | /22 | 255.255.252.0 | 0.0.3.255 | 1,024 | 1,022 | | /23 | 255.255.254.0 | 0.0.1.255 | 512 | 510 | | /24 | 255.255.255.0 | 0.0.0.255 | 256 | 254 | | /25 | 255.255.255.128 | 0.0.0.127 | 128 | 126 | | /26 | 255.255.255.192 | 0.0.0.63 | 64 | 62 | | /27 | 255.255.255.224 | 0.0.0.31 | 32 | 30 | | /28 | 255.255.255.240 | 0.0.0.15 | 16 | 14 | | /29 | 255.255.255.248 | 0.0.0.7 | 8 | 6 | | /30 | 255.255.255.252 | 0.0.0.3 | 4 | 2 | | /31 | 255.255.255.254 | 0.0.0.1 | 2 | 2(点对点链路,RFC 3021) | | /32 | 255.255.255.255 | 0.0.0.0 | 1 | 1(单个主机) | 可用主机 = 地址数 − 2,因为网络地址和广播地址不能分给设备。表底的两个是例外:/31 用在两台路由器之间的链路上时没有广播地址,两个地址都能用;/32 就是单独一个地址。 **反掩码**(wildcard)是把掩码每一位取反(每段用 255 去减)。思科的 ACL 和 OSPF 用的是反掩码。 ## 把一个网段划分成子网 前缀每多一位,块就减半。把一个 /24 分成四个 /26: | 子网 | 网络地址 | 广播地址 | 可用范围 | |---|---|---|---| | 192.168.10.0/26 | .0 | .63 | .1–.62 | | 192.168.10.64/26 | .64 | .127 | .65–.126 | | 192.168.10.128/26 | .128 | .191 | .129–.190 | | 192.168.10.192/26 | .192 | .255 | .193–.254 | 确定子网大小时,找能装下"主机数 + 2"的最小块:50 台设备需要 52 个地址,所以用 /26(64 个)。各子网大小不同时,先分配最大的,块才能对齐,这叫 VLSM(可变长子网掩码)。 ## 私有地址段 下面这些地址段(RFC 1918)保留给内网使用,不会在公网上路由: | 范围 | CIDR | 地址数 | |---|---|---:| | 10.0.0.0 – 10.255.255.255 | 10.0.0.0/8 | 16,777,216 | | 172.16.0.0 – 172.31.255.255 | 172.16.0.0/12 | 1,048,576 | | 192.168.0.0 – 192.168.255.255 | 192.168.0.0/16 | 65,536 | 大多数家用路由器用的是 192.168.0.0/16 里的一个 /24,比如 `192.168.1.0/24`。 ## 怎么验算 - 浏览器里:免费的[子网计算器](https://obelisk.club/tools/subnet-calculator?lang=zh)可以算出任意 IPv4 或 IPv6 前缀的网络地址、广播地址、掩码和可用范围,还能划分子网、规划 VLSM,不会上传任何内容。 - iPhone 上:[网段尺(Subnetic)](https://obelisk.club/subnetic?lang=zh) 在前缀滑块下面画出网络位和主机位,从 /0 拖到 /32 实时变化。IPv4 计算和二进制视图免费;一次性 Pro 解锁增加子网划分、VLSM 分配和 IPv6。 - Mac 终端里通常装有 Python:`python3 -c "import ipaddress; n=ipaddress.ip_network('192.168.10.77/26', strict=False); print(n, n.broadcast_address, n.num_addresses)"` 会输出 `192.168.10.64/26 192.168.10.127 64`。 ## 常见问题 **/24 和 255.255.255.0 是一回事吗?** 是。/24 表示前 24 位是网络部分,24 个 1 写成十进制就是 255.255.255.0。 **/24 有多少个可用主机?** 254 个:256 个地址减去网络地址(.0)和广播地址(.255)。 **子网掩码和 CIDR 写法有什么区别?** 表达的信息完全一样。掩码把网络位写成四个数(255.255.255.192),CIDR 在斜杠后面数出位数(/26)。 **为什么 /30 只有 2 个可用地址?** 它一共 4 个地址,其中两个是网络地址和广播地址。/30 曾是两台路由器之间链路的常用大小;/31 用 2 个地址完成同样的事,没有浪费。 **反掩码是什么?** 把子网掩码每一位取反:255.255.255.0 变成 0.0.0.255。思科 ACL 和 OSPF 用它表示哪些位必须匹配。