进阶 #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子网掩码可用地址用途
/30255.255.255.2522路由器之间的点对点链路
/28255.255.255.24014小型办公室
/24255.255.255.0254最常见的局域网
/16255.255.0.065534大型企业网
/8255.0.0.016777214超大型网络(如 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 是理解路由器工作原理的前置知识。下一节看看路由算法——数据包在路由器之间怎么走。