背景
看到 192.168.1.0/24、10.0.0.0/8、172.16.0.0/12、127.0.0.1/32 这些写法,很多人不知道末尾的数字是什么意思。
这是 CIDR(Classless Inter-Domain Routing,无类域间路由)表示法,1993 年提出,取代了传统的 A/B/C 类 IP 划分——现在所有 IP 都用 CIDR。
理解 CIDR 的关键:
- 末尾数字 = 网络前缀位数(子网掩码里 1 的个数)
- 数字越大 → 网络号越长 → 可用主机数越少
- 数字越小 → 网络号越短 → 可用主机数越多
一、A/B/C 类 IP 默认子网掩码(历史背景)
为什么会有 /8、/16、/24?这要追溯到 1981 年的有类 IP(Classful IP):
| 类别 | 起始位 | 默认子网掩码 | CIDR 后缀 | 网络数 | 每网主机数 | 范围 |
|---|---|---|---|---|---|---|
| A 类 | 0xxxxxxx | 255.0.0.0 | /8 | 128 | 16,777,214 | 1.0.0.0 ~ 127.255.255.255 |
| B 类 | 10xxxxxx | 255.255.0.0 | /16 | 16,384 | 65,534 | 128.0.0.0 ~ 191.255.255.255 |
| C 类 | 110xxxxx | 255.255.255.0 | /24 | 2,097,152 | 254 | 192.0.0.0 ~ 223.255.255.255 |
| D 类(组播) | 1110xxxx | — | /4 | — | — | 224.0.0.0 ~ 239.255.255.255 |
| E 类(实验) | 1111xxxx | — | /4 | — | — | 240.0.0.0 ~ 255.255.255.255 |
为什么 A 类网络号只有 8 位? 因为
0xxxxxxx第一位固定为 0,剩 7 位可变,所以 2^7 = 128 个 A 类网段。 为什么 A 类每网 16,777,214 台? 因为主机号 24 位全可变,2^24 - 2 = 16,777,214(减 2 是去掉网络地址和广播地址)。
历史包袱:
- 一个公司哪怕只有 100 台机器,分到 A 类也用不完 16,777,214 个 IP
- A 类 1.0.0.0 给了一家澳大利亚公司(APNIC),B 类 16.x 给 HP,C 类 192.168.0.0/16 留作私网
- 1993 年 CIDR 出现,允许"借位"——A 类也能划 /16、/24,按需分配
结论:现代网络已经没有"必须按 A/B/C 类划分"的规则。/8、/16、/24 只是"看起来眼熟"的历史值。
二、子网掩码与 CIDR 换算
2.1 子网掩码的本质
子网掩码 = 32 位二进制,1 的部分是网络号,0 的部分是主机号。
例如 255.255.255.0:
| |
2.2 常用 CIDR 速查表
| CIDR | 子网掩码 | 主机位数 | 可用主机数(2^n - 2) | 典型用途 |
|---|---|---|---|---|
| /8 | 255.0.0.0 | 24 | 16,777,214 | 一个超大组织(如军队、运营商) |
| /12 | 255.240.0.0 | 20 | 1,048,574 | RFC 1918 私网中等规模 |
| /16 | 255.255.0.0 | 16 | 65,534 | 大学、大企业内网 |
| /20 | 255.255.240.0 | 12 | 4,094 | 中型企业 |
| /22 | 255.255.252.0 | 10 | 1,022 | 中型企业分支 |
| /23 | 255.255.254.0 | 9 | 510 | 跨子网但节约 IP |
| /24 | 255.255.255.0 | 8 | 254 | 最常见:小型企业 / 一个 C 段 |
| /25 | 255.255.255.128 | 7 | 126 | 拆分 /24 |
| /26 | 255.255.255.192 | 6 | 62 | 微小型网络 |
| /27 | 255.255.255.224 | 5 | 30 | 路由器点对点 / 小型 |
| /28 | 255.255.255.240 | 4 | 14 | 极小网络 |
| /29 | 255.255.255.248 | 3 | 6 | 点对点链路(两台设备) |
| /30 | 255.255.255.252 | 2 | 2 | 点对点(刚好 2 IP) |
| /31 | 255.255.255.254 | 1 | 0(特殊:2 主机) | RFC 3021 点对点 |
| /32 | 255.255.255.255 | 0 | 1 | 单 IP(路由条目 / 主机) |
2.3 例子:192.168.0.0/24 是什么意思?
- 子网掩码:255.255.255.0
- 网络号:192.168.0(前 24 位固定)
- 主机号:0~255(后 8 位可变)
- 可用 IP:
192.168.0.1~192.168.0.254(254 个) - 特殊:
192.168.0.0= 网络地址(标识这个网段,不能配给主机)192.168.0.255= 广播地址(这个网段所有主机),不能配给主机192.168.0.1= 网关(惯例)
2.4 子网掩码换算二进制
/24 → 255.255.255.0:
| |
/30 → 255.255.255.252:
| |
三、可变长子网掩码(VLSM)
传统 A/B/C 类的痛点:分到一个 C 类(254 IP),实际只用 50 台,剩 204 个浪费。
CIDR 的解决方案:VLSM(Variable Length Subnet Mask)允许在同一网络内混合不同长度的子网。
实战例子:公司拿到 192.168.10.0/24(256 IP),需要:
- 部门 A:100 台机器
- 部门 B:50 台机器
- 部门 C:20 台机器
- 部门 D:10 台机器
- 点对点链路 × 4:各 2 IP
VLSM 划分(从大到小):
| 子网 | 范围 | 子网掩码 | 可用主机 | 部门 |
|---|---|---|---|---|
| 192.168.10.0/25 | .1 ~ .126 | 255.255.255.128 | 126 | A |
| 192.168.10.128/26 | .129 ~ .190 | 255.255.255.192 | 62 | B |
| 192.168.10.192/27 | .193 ~ .222 | 255.255.255.224 | 30 | C |
| 192.168.10.224/28 | .225 ~ .238 | 255.255.255.240 | 14 | D |
| 192.168.10.240/30 | .241 ~ .242 | 255.255.255.252 | 2 | p2p 1 |
| 192.168.10.244/30 | .245 ~ .246 | 255.255.255.252 | 2 | p2p 2 |
| 192.168.10.248/30 | .249 ~ .250 | 255.255.255.252 | 2 | p2p 3 |
| 192.168.10.252/30 | .253 ~ .254 | 255.255.255.252 | 2 | p2p 4 |
256 个 IP 全部分完,零浪费。
四、Linux 实战命令
4.1 ipcalc(计算工具)
| |
4.2 ip 命令
| |
4.3 路由表里的 CIDR
| |
4.4 防火墙规则中的 CIDR
| |
4.5 nginx/HAProxy upstream 限制
| |
五、特殊 IP 段
| 段 | 含义 | 用途 |
|---|---|---|
| 0.0.0.0/0 | 全网 | 默认路由;监听所有网卡 |
| 127.0.0.0/8 | 回环 | 127.0.0.1 = 本机 |
| 169.254.0.0/16 | 链路本地 | DHCP 失败时自动分配 |
| 224.0.0.0/4 | 组播 | OSPF 224.0.0.5/6、PIM 等 |
| 240.0.0.0/4 | 保留/实验 | 不可用 |
| 255.255.255.255 | 本地广播 | 限于本物理网段 |
| 10.0.0.0/8 | RFC 1918 私网 | A 类私网 |
| 172.16.0.0/12 | RFC 1918 私网 | B 类私网(172.16 ~ 172.31) |
| 192.168.0.0/16 | RFC 1918 私网 | C 类私网(家用路由最常见) |
| 100.64.0.0/10 | RFC 6598 共享地址空间 | CGN(运营商内网 NAT) |
| 198.18.0.0/15 | RFC 2544 基准测试 | iperf3、netperf 基准测试 |
六、计算可用主机数公式
可用主机数 = 2^(32 - CIDR) - 2
/24:2^8 - 2 = 254(去掉网络地址和广播地址)
/30:2^2 - 2 = 2(点对点)
/32:2^0 - 2 = -1 → 特殊:表示单 IP,没有"网络+广播"概念,所以可用数 = 1
/31 是个特例(RFC 3021):允许 2 个 IP 全部可用,专门给点对点链路,省 IP。
七、IPv6 CIDR 简述
IPv6 用相同的 CIDR 概念,但位数扩展到 128:
| CIDR | 含义 |
|---|---|
::1/128 | 回环(IPv6 的 127.0.0.1) |
fe80::/10 | 链路本地(IPv6 的 169.254.0.0/16) |
fc00::/7 | 私网(IPv6 的 10.0.0.0/8) |
2000::/3 | 全局单播(公网) |
2001:db8::/32 | 文档示例 |
小结
CIDR 看起来只是 IP 后面"加个斜杠 + 数字",但理解它就理解了 IP 网络的精髓:
- /8 /16 /24 是历史值,现在不强制
- 数字 = 网络前缀位数 = 子网掩码里 1 的个数
- VLSM 按需分配,大网拆小网,零浪费
- /30 给点对点链路,/32 给单 IP 路由
记忆口诀:
/30= 255.255.255.252 = 2 IP(点对点)/24= 255.255.255.0 = 254 IP(小型企业)/16= 255.255.0.0 = 65,534 IP(大学、大企业)/8= 255.0.0.0 = 16,777,214 IP(超大组织)
下一步:
- 用
ipcalc做日常 IP 规划 - 学 VLSM 拆网(CCNA 经典题)
- IPv6 完整子网规划(IPv6 128 位,CIDR 是必备工具)
2024 视角:IPv6 在 2024 已成"必选项"
2015 那篇 IPv6 只是一笔带过。2024 视角下,IPv6 已是"必选项"——大陆三大运营商全部默认下发 IPv6 PD,Cisco IOS / Linux 内核默认开启 IPv6。
一、IPv6 单栈已"上路"
- 2024 中国大陆:电信 / 联通 / 移动宽带默认下发 IPv6 前缀(PD / 60 或 /64)。
- 2024 云厂商:阿里云、腾讯云、华为云 ECS 默认开启 IPv6。
- 2024 K8s / Docker:默认网络栈都支持 IPv6 双栈。
- 2024 现实:仍然IPv4 主导(NAT 仍在用),但 IPv6 流量已逐年增长到 30-50%(Google 2024 报告)。
二、IPv6 CIDR 的"日常用法"
- /128(单 IP):一个地址,
::1(loopback)=127.0.0.1的 IPv6 版。 - /64:标准 LAN 网段(SLACC 自动配置的基础单位,不能再细分)。
- /48:一个站点的标准前缀(SLAAC 的"父级")。
- /56:小型家庭 / 小企业分配前缀。
- /32:ISP / 自治系统的标准分配(IANA 给 RIR)。
- /16:RIR 的标准池(IANA 给 RIPE / APNIC)。
| 段 | 含义 |
|---|---|
::/0 | 全网(默认路由) |
::1/128 | 回环 |
fe80::/10 | 链路本地(IPv4 的 169.254.0.0/16) |
fc00::/7 | ULA 私网(IPv4 的 10.0.0.0/8 / 192.168.0.0/16) |
2000::/3 | 全局单播(公网) |
2001:db8::/32 | 文档示例(RFC 3849) |
64:ff9b::/96 | IPv4/IPv6 NAT(RFC 6052) |
三、ip 命令 IPv6 用法
| |
四、ipcalc IPv6 支持
| |
五、IPv6 安全
- IPv6 没有 NAT 隐藏内网——每个 IPv6 设备默认公网可达。
- 防火墙必须显式配置:
| |
- NDP 防护(防止 IPv6 的"ARP 欺骗"):
| |
六、CIDR 在 K8s 时代的"IPAM"
- 2024 K8s 网络插件(Calico / Cilium)都用 CIDR 做 IPAM(IP 地址管理)。
- 典型分配:
| |
- 每个 Node 划分子网(Calico blocksize = 26):
| |
- IPv6 双栈:
| |
源文档:os/linux/第三方tools/net/ip.md(CIDR 概念、二进制换算、可用 IP 范围)
