进阶 #network#ip#subnet#cidr
子网划分与 CIDR
子网划分(Subnetting)把大网络切成小段避免浪费,CIDR(无类别域间路由)让路由表变小变高效——它们是 IPv4 时代"节衣缩食"的智慧
一个 C 类地址有 254 个——但你们宿舍只有 4 台电脑
如果你是一个校园网管理员,学校有 10 栋宿舍楼,每栋 100 个宿舍,每个宿舍有一个路由器。
IPv4 地址这么紧缺——每个宿舍分一个独立的 C 类地址(254 个 IP)太浪费了。
🏫 类比:学校分教室 一个年级 200 人——你不能让 200 人都挤在同一个教室里(一个广播域太大) 但也不能每人一个教室(太浪费)
正确做法:分 5 个班,每班 40 人(子网划分)
- 每个班有自己的教室(独立广播域)
- 班与班之间通过走廊连接(路由器)
- 如果只是 40 人的小班,用大教室是浪费
子网掩码——IP 地址的”口罩”
子网掩码告诉计算机:IP 地址的哪部分是网络号,哪部分是主机号。
IP 地址: 192.168.1.0
子网掩码: 255.255.255.0 → 记作 /24
二进制:
IP: 11000000 10101000 00000001 00000000
掩码: 11111111 11111111 11111111 00000000
←────── 网络号 ──────→ ← 主机号 →
网络号 = 192.168.1(前 24 位不变)
主机号 = .0 ~ .255(最后 8 位可变)→ 可用 2⁸-2=254 个主机
(-2 是因为:.0 是网络地址,.255 是广播地址,不能分配给设备)
子网划分的本质:向主机号借位,变成子网号。
把 /24 切成 4 个 /26
原始:192.168.1.0/24(1 个网络,254 个主机)
借 2 位 → 4 个子网,每个 /26(62 个主机):
子网 1:192.168.1.0/26 (192.168.1.0 - 192.168.1.63)
子网 2:192.168.1.64/26 (192.168.1.64 - 192.168.1.127)
子网 3:192.168.1.128/26 (192.168.1.128 - 192.168.1.191)
子网 4:192.168.1.192/26 (192.168.1.192 - 192.168.1.255)
每个子网 62 个可用地址——给一个宿舍用绰绰有余!
# 快速算子网
def subnet_info(ip, mask_bits):
# 网络地址 = IP & 掩码
# 广播地址 = 网络地址 + (2^(32-mask_bits) - 1)
# 可用主机数 = 2^(32-mask_bits) - 2
hosts = 2 ** (32 - mask_bits) - 2
return f"/{mask_bits}: {hosts} 个可用主机"
print(subnet_info("192.168.1.0", 26)) # /26: 62 个可用主机
print(subnet_info("192.168.1.0", 30)) # /30: 2 个可用主机(点对点链路)
常见子网速查表
| CIDR | 子网掩码 | 可用地址 | 用途 |
|---|---|---|---|
| /30 | 255.255.255.252 | 2 | 路由器之间的点对点链路 |
| /28 | 255.255.255.240 | 14 | 小型办公室 |
| /24 | 255.255.255.0 | 254 | 最常见的局域网 |
| /16 | 255.255.0.0 | 65534 | 大型企业网 |
| /8 | 255.0.0.0 | 16777214 | 超大型网络(如 10.0.0.0/8) |
💡 考试小技巧:IPv4 地址共 32 位。
/24表示前 24 位是网络号,剩下 8 位是主机号。/26表示前 26 位网络号→主机号只剩 6 位→2⁶-2=62。简单:2^(32-掩码位数)-2。
CIDR——干掉”固定分类”的束缚
传统 A/B/C 分类太死板了——C 类(/24)有 254 个 IP 但有时太多,B 类(/16)有 65534 个 IP 但有时太少。CIDR 允许任意长度的子网掩码:
传统分类:192.168.1.0 必须用 /24(固定死)
CIDR: 192.168.1.0/26、或 10.0.0.0/20、或 172.16.0.0/28——随你
CIDR 的另一个好处:路由聚合。
想象一下,一个公司有 8 个连续的网络:
192.168.0.0/24
192.168.1.0/24
192.168.2.0/24
192.168.3.0/24
192.168.4.0/24
192.168.5.0/24
192.168.6.0/24
192.168.7.0/24
如果不聚合——互联网上的路由器要为这 8 个网络各记一条路由。聚合后:
192.168.0.0/21(覆盖 192.168.0.0 - 192.168.7.255)
只要一条路由——减少路由表大小,提高转发速度。
🏫 类比:地址合并
- 没有 CIDR:快递公司要为”北京路 1 号”、“北京路 2 号”……”北京路 255 号”各记录一条路线
- 有 CIDR:只要记录”北京路”——到了北京路再找具体门牌号
小结
| 概念 | 要点 | 一句话 |
|---|---|---|
| 子网掩码 | 区分网络号和主机号 | IP 地址的”口罩”——遮住的部分是网络号 |
| 子网划分 | 向主机号借位,切成更小的子网 | 一条街切成几段 |
| CIDR | 无类别,任意长度掩码 | IP/掩码位数——打破了固定分类 |
| 路由聚合 | 合并连续网络减少路由表 | 多条小路由合成一条大路由 |
| VLSM | 不同子网不同掩码长度 | 一个用 /24,隔壁用 /28——按需分配 |
为什么先学这个? 理解子网和 CIDR 是理解路由器工作原理的前置知识。下一节看看路由算法——数据包在路由器之间怎么走。