子网掩码和 CIDR 表示法是 IP 网络的基础。无论你是设计云 VPC、配置家庭路由器还是准备网络考试,理解子网掩码如何将 IP 地址分为网络部分和主机部分都至关重要。本指南涵盖从二进制基础到完整 CIDR 参考表的所有内容。
1. 什么是子网掩码?
子网掩码是一个 32 位数字,用于将 IP 地址分为网络部分和主机部分。网络位设为 1,主机位设为 0。
255.255.255.0 的二进制分解:
255 . 255 . 255 . 0
11111111.11111111.11111111.00000000
|-------- Network --------|- Host-|
24 bits 8 bits子网掩码通过与 IP 地址进行按位 AND 运算来应用。运算结果就是网络地址。掩码中设为 1 的位标识网络;设为 0 的位标识该网络中的主机地址。
示例:IP 192.168.1.100,掩码 255.255.255.0
IP Address: 192.168.1.100 = 11000000.10101000.00000001.01100100
Subnet Mask: 255.255.255.0 = 11111111.11111111.11111111.00000000
─────────────────────────────────────────────────────
Network (AND): 192.168.1.0 = 11000000.10101000.00000001.00000000
Broadcast: 192.168.1.255 = 11000000.10101000.00000001.11111111
Host Range: 192.168.1.1 — 192.168.1.254 (254 usable hosts)2. CIDR 表示法:/24、/16、/8
CIDR(无类别域间路由)表示法在 IP 地址后加斜杠和网络位数。它于 1993 年取代了旧的有类地址系统(A、B、C 类)。
/24/24 = 255.255.255.0 — 24 位网络位,8 位主机位,254 个可用主机/16/16 = 255.255.0.0 — 16 位网络位,16 位主机位,65,534 个可用主机/8/8 = 255.0.0.0 — 8 位网络位,24 位主机位,16,777,214 个可用主机/后的数字表示 32 位地址中有多少个前导位是网络前缀。剩余的位用于主机地址。
192.168.1.0/24
│ │
│ └── 24 network bits (slash notation)
└── Network prefix
Binary view:
11000000.10101000.00000001 . 00000000
|---- 24 network bits ----| |8 host |3. 完整 CIDR 参考表:/8 到 /32
此表显示从 /8 到 /32 的每个 CIDR 前缀及对应的子网掩码、通配符掩码、总地址数和可用主机数。
| CIDR | 子网掩码 | 通配符 | 总 IP 数 | 可用主机 | 典型用途 |
|---|---|---|---|---|---|
/8 | 255.0.0.0 | 0.255.255.255 | 16,777,216 | 16,777,214 | Class A |
/9 | 255.128.0.0 | 0.127.255.255 | 8,388,608 | 8,388,606 | |
/10 | 255.192.0.0 | 0.63.255.255 | 4,194,304 | 4,194,302 | |
/11 | 255.224.0.0 | 0.31.255.255 | 2,097,152 | 2,097,150 | |
/12 | 255.240.0.0 | 0.15.255.255 | 1,048,576 | 1,048,574 | 172.16.0.0/12 |
/13 | 255.248.0.0 | 0.7.255.255 | 524,288 | 524,286 | |
/14 | 255.252.0.0 | 0.3.255.255 | 262,144 | 262,142 | |
/15 | 255.254.0.0 | 0.1.255.255 | 131,072 | 131,070 | |
/16 | 255.255.0.0 | 0.0.255.255 | 65,536 | 65,534 | Class B / VPC |
/17 | 255.255.128.0 | 0.0.127.255 | 32,768 | 32,766 | |
/18 | 255.255.192.0 | 0.0.63.255 | 16,384 | 16,382 | |
/19 | 255.255.224.0 | 0.0.31.255 | 8,192 | 8,190 | |
/20 | 255.255.240.0 | 0.0.15.255 | 4,096 | 4,094 | Large subnet |
/21 | 255.255.248.0 | 0.0.7.255 | 2,048 | 2,046 | |
/22 | 255.255.252.0 | 0.0.3.255 | 1,024 | 1,022 | |
/23 | 255.255.254.0 | 0.0.1.255 | 512 | 510 | Small office |
/24 | 255.255.255.0 | 0.0.0.255 | 256 | 254 | Class C / LAN |
/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 | Small segment |
/28 | 255.255.255.240 | 0.0.0.15 | 16 | 14 | Tiny subnet |
/29 | 255.255.255.248 | 0.0.0.7 | 8 | 6 | Point-to-point |
/30 | 255.255.255.252 | 0.0.0.3 | 4 | 2 | Router link |
/31 | 255.255.255.254 | 0.0.0.1 | 2 | 2* | RFC 3021 P2P |
/32 | 255.255.255.255 | 0.0.0.0 | 1 | 1* | Host route |
* /31 uses both addresses per RFC 3021 (point-to-point). /32 is a single host route.
4. 子网划分原理
IPv4 地址为 32 位。子网掩码决定哪些位属于网络、哪些属于主机。用二进制来可视化:
Example: 172.16.10.0/20
IP: 10101100.00010000.00001010.00000000
Mask: 11111111.11111111.11110000.00000000
|---- 网络位(掩码中的 1) ----|--- 主机位(掩码中的 0) ---|
|<-------- 20 bits -------->|<- 12 bits ->|
Network: 172.16.0.0 (host bits all 0)
Broadcast: 172.16.15.255 (host bits all 1)
Range: 172.16.0.1 — 172.16.15.254
Hosts: 2^12 - 2 = 4,094关键规则:
- 第一个地址(所有主机位 = 0)是网络地址。
- 最后一个地址(所有主机位 = 1)是广播地址。
- 可用主机 = 2^(主机位) - 2(减去网络地址和广播地址)。
- 对于 /31 和 /32,有特殊规则(点对点链路和单主机)。
5. 子网计算:分步示例
给定 10.0.0.0/22,计算网络详情:
10.0.0.0/22
Binary mask: 11111111.11111111.11111100.00000000 = 255.255.252.0
Wildcard: 00000000.00000000.00000011.11111111 = 0.0.3.255
Network: 10.0.0.0
First host: 10.0.0.1
Last host: 10.0.3.254
Broadcast: 10.0.3.255
Total: 1,024 addresses
Usable: 1,022 hosts6. 私有 IP 地址范围(RFC 1918)
以下三个 IP 范围保留给私有网络,不会在公网上路由:
10.0.0.0/810.0.0.0/8 — 16,777,216 个地址 — 大型企业网络172.16.0.0/12172.16.0.0/12 — 1,048,576 个地址 — 中型网络192.168.0.0/16192.168.0.0/16 — 65,536 个地址 — 家庭和小型办公网络此外,169.254.0.0/16 用于链路本地(APIPA),127.0.0.0/8 是环回地址范围。
Private Ranges (RFC 1918):
┌─────────────────┬───────────────────────────┬──────────────┐
│ 10.0.0.0/8 │ 10.0.0.0 – 10.255.255.255│ 16,777,216 │
│ 172.16.0.0/12 │ 172.16.0.0 – 172.31.255.255│ 1,048,576 │
│ 192.168.0.0/16 │ 192.168.0.0 – 192.168.255.255│ 65,536 │
└─────────────────┴───────────────────────────┴──────────────┘
Other reserved:
127.0.0.0/8 Loopback
169.254.0.0/16 Link-local (APIPA)
100.64.0.0/10 Carrier-grade NAT (RFC 6598)7. 实际常用子网
不同环境使用不同的子网大小:
/24/24(256 个 IP)— 家庭网络:大多数路由器默认 192.168.1.0/24/23/23(512 个 IP)— 小型办公室:当一个 /24 不够用时/16/16(65,536 个 IP)— 云 VPC:AWS、GCP 和 Azure 默认 VPC 大小/30/30(4 个 IP)或 /31(2 个 IP)— 路由器间点对点链路/32/32(1 个 IP)— 单主机路由,用于防火墙和路由表K8s/12 或 /16 — Kubernetes Pod 和 Service CIDR 范围# AWS VPC example
VPC: 10.0.0.0/16 (65,536 IPs)
├── Public-1a: 10.0.1.0/24 (256 IPs)
├── Public-1b: 10.0.2.0/24 (256 IPs)
├── Private-1a: 10.0.10.0/24 (256 IPs)
├── Private-1b: 10.0.11.0/24 (256 IPs)
├── DB-1a: 10.0.20.0/24 (256 IPs)
└── DB-1b: 10.0.21.0/24 (256 IPs)
# Kubernetes (default)
Pod CIDR: 10.244.0.0/16
Service CIDR: 10.96.0.0/128. IPv6 CIDR 基础
IPv6 地址为 128 位,提供极其庞大的地址空间。CIDR 表示法的工作方式相同:
/64/64 — 标准子网大小。每个子网有 2^64 个主机地址(最常见的分配)。/48/48 — 典型站点分配。包含 65,536 个 /64 子网。/128/128 — 单主机地址(相当于 IPv4 的 /32)。/32/32 — ISP 分配。包含 40 亿个 /64 子网。与 IPv4 不同,IPv6 不使用广播地址。/64 边界很重要,因为无状态地址自动配置(SLAAC)需要它。
IPv6 Address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334/64
|---- 64-bit Network Prefix ----|---- 64-bit Interface ID ----|
2001:0db8:85a3:0000 :0000:8a2e:0370:7334
Common allocations:
/32 → ISP allocation (65,536 × /48 sites)
/48 → Site allocation (65,536 × /64 subnets)
/64 → Single subnet (18,446,744,073,709,551,616 hosts)
/128 → Single host (loopback, host routes)9. 超网(路由聚合)
超网将多个较小的子网合并为一个更大的前缀,以减少路由表条目。这也称为路由汇总或聚合。
示例:将四个 /24 网络合并为一个 /22:
Before (4 routes):
192.168.0.0/24 → 192.168.0.0 – 192.168.0.255
192.168.1.0/24 → 192.168.1.0 – 192.168.1.255
192.168.2.0/24 → 192.168.2.0 – 192.168.2.255
192.168.3.0/24 → 192.168.3.0 – 192.168.3.255
After (1 route):
192.168.0.0/22 → 192.168.0.0 – 192.168.3.255
Binary proof:
192.168.0.0 = 11000000.10101000.000000|00.00000000
192.168.1.0 = 11000000.10101000.000000|01.00000000
192.168.2.0 = 11000000.10101000.000000|10.00000000
192.168.3.0 = 11000000.10101000.000000|11.00000000
^^^^^^
22 common bits → /22好处:更小的路由表、更快的查找、更少的 BGP 通告和更简单的 ACL。
规则:子网必须连续且与超网边界对齐。不能将 192.168.1.0/24 和 192.168.5.0/24 聚合为单个前缀。
10. 子网计算工具
这些工具可以帮助你快速计算子网:
ipcalc — Linux CLI 工具。使用 apt install ipcalc 安装。显示网络、广播、主机范围和通配符。
sipcalc — 支持 IPv6 的高级 CLI 工具。使用 apt install sipcalc 安装。
在线计算器 — 我们的 IP 计算器工具可直接在浏览器中计算子网。
Python ipaddress 模块 — 用于脚本中子网计算的内置库。
# ipcalc example
$ ipcalc 192.168.1.0/24
Address: 192.168.1.0 11000000.10101000.00000001. 00000000
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000
Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111
Network: 192.168.1.0/24
HostMin: 192.168.1.1
HostMax: 192.168.1.254
Broadcast: 192.168.1.255
Hosts/Net: 254
# Python ipaddress
import ipaddress
net = ipaddress.ip_network('10.0.0.0/22')
print(net.network_address) # 10.0.0.0
print(net.broadcast_address) # 10.0.3.255
print(net.num_addresses) # 1024
print(list(net.subnets())) # [10.0.0.0/23, 10.0.2.0/23]试试我们的 IP 计算器工具
IP Calculator →FAQ
子网掩码和 CIDR 表示法有什么区别?
它们以不同格式表示相同的信息。子网掩码 255.255.255.0 等同于 CIDR 表示法中的 /24。CIDR 更紧凑,是现代标准。
/24 子网有多少个可用主机?
/24 子网有 256 个总地址(2^8)。减去网络地址和广播地址,剩余 254 个可用主机地址。
/32 是什么意思?
/32 表示没有主机位的单个 IP 地址。它用于路由表、防火墙规则和 ACL 中指定精确的主机。
可以将 /24 划分为更小的子网吗?
可以。/24 可以分成两个 /25(各 126 个主机)、四个 /26(各 62 个主机)、八个 /27(各 30 个主机),依此类推。每增加一位网络位,子网数翻倍,主机数减半。
什么是通配符掩码?
通配符掩码是子网掩码的反码。对于 255.255.255.0,通配符是 0.0.0.255。通配符掩码用于 Cisco ACL 和 OSPF 配置中匹配 IP 地址范围。
为什么云提供商建议 VPC 使用 /16?
/16 提供 65,534 个可用 IP,足以容纳不同可用区、服务和未来增长的多个子网,无需重新编号。AWS、GCP 和 Azure 都推荐 /16 作为默认 VPC 大小。