什么是借位
把一个给定网段划分成多个子网,做法是从主机位里「借」若干位当子网位:借 m 位就把前缀从 n 变成 n+m,同时得到 2^m 个等长子网。这是有类别时代沿用下来的讲法,在 CIDR 语境下等价于「按更长的前缀重新切块」,考试与教材仍习惯用借位来描述。
借位的数量关系
借位有一个必然结果:子网数每翻一倍,每个子网的主机位就少一位、可用主机大致减半。借 1 位得到 2 个子网,借 2 位 4 个,借 3 位 8 个;对应的每网可用主机从 254 变成 126、62、30。需求给出的子网数不是 2 的幂时要向上取整,多出来的子网留作扩展,而不是回头改需求。
基本信息
| 子网数 | 2^m(m 为借位数) |
|---|---|
| 新前缀 | 原前缀 + m |
| 每网可用主机 | 2^(32-原前缀-m) - 2 |
| 例 | /24 借 3 位 → 8 个 /27,每段 30 台 |
| 限制 | /31、/32 不适用减 2 规则 |
典型使用场景
- 按部门数量划分子网:有 5 个部门时借 3 位得到 8 个子网
- 按楼层或房间规划:一个 /24 切成 8 个 /27 给 8 个弱电间
- 为未来扩展留位:需求 6 个时按 8 个规划,避免二次改网
- 考试题里求每段可用主机数,验证是否满足需求
- 从子网数反推掩码:先算 m 再算新前缀
借位对照(从 /24 出发)
借位对照(从 /24 出发)
借 1 位 → 2 个 /25,每网 126 台
借 2 位 → 4 个 /26,每网 62 台
借 3 位 → 8 个 /27,每网 30 台
借 4 位 → 16 个 /28,每网 14 台
借 5 位 → 32 个 /29,每网 6 台
借 6 位 → 64 个 /30,每网 2 台(点对点)需求子网数反推
| 需要子网数 | 最小借位 m | 实得子网数 | 新前缀(原 /24) |
|---|---|---|---|
| 2 | 1 | 2 | /25 |
| 3–4 | 2 | 4 | /26 |
| 5–8 | 3 | 8 | /27 |
| 9–16 | 4 | 16 | /28 |
| 17–32 | 5 | 32 | /29 |
| 33–64 | 6 | 64 | /30 |
程序验算
程序验算
python -c "import ipaddress as ip; n=ip.ip_network('192.168.1.0/24'); print(len(list(n.subnets(new_prefix=27))), [str(x) for x in n.subnets(new_prefix=27)][:3])"
# 8 ['192.168.1.0/27', '192.168.1.32/27', '192.168.1.64/27']借位与超网聚合是互逆操作:借位是把一条前缀拆成 2^m 条更长的前缀,聚合是把连续前缀合成一条更短的前缀。规划时先想清楚最终要汇总成哪一条路由,再决定怎么借位。
借位后每网可用主机 = 2^(32-新前缀) - 2。例如 /24 借 3 位得到 /27,主机位 5 位,可用 32-2=30 台,而不是 32 台;规划时要按 30 去核对部门终端数。
借位只能沿着原有网络位向后扩展,起点必须落在原网段边界内且按新块大小对齐。借位后的子网不能跨越原网段范围,否则会与相邻网段冲突。