1. 从“看得懂掩码”到“自己划地址”
上一篇里,掩码用来区分网络位和主机位。这一篇整理第五天笔记中的计算题。
子网划分可以先抓住一个变化:
从原有主机位中借出一些位,作为更长的网络前缀。
前缀变长,子网数量增加,每个子网能容纳的主机数量减少。
2. 先记住两个计算关系
从一个地址块中借 n 位,等长划分后可以得到 2^n 个子网。
一个 IPv4 前缀长度为 p 的地址块,包含 2^(32-p) 个地址。对普通多接入子网,通常要减去网络地址和广播地址,得到可用主机地址数量。
| 前缀 | 掩码 | 总地址数 | 普通子网可用主机数 |
|---|---|---|---|
| /24 | 255.255.255.0 | 256 | 254 |
| /25 | 255.255.255.128 | 128 | 126 |
| /26 | 255.255.255.192 | 64 | 62 |
| /27 | 255.255.255.224 | 32 | 30 |
| /28 | 255.255.255.240 | 16 | 14 |
| /29 | 255.255.255.248 | 8 | 6 |
| /30 | 255.255.255.252 | 4 | 2 |
NOTE这里的“减 2”适用于表中的普通子网。点到点链路上的
/31和单地址/32有不同用途,不能机械套用这个公式。
3. 把 192.168.1.0/24 分成两个子网
需要两个等大的子网,借 1 位即可:
原来:192.168.1.HHHHHHHH /24现在:192.168.1.NHHHHHHH /25
N = 0:最后一段 00000000~01111111,即 0~127N = 1:最后一段 10000000~11111111,即 128~255N 是新借出的网络位,H 是剩余主机位。
| 子网 | 可用主机范围 | 广播地址 |
|---|---|---|
| 192.168.1.0/25 | 192.168.1.1~192.168.1.126 | 192.168.1.127 |
| 192.168.1.128/25 | 192.168.1.129~192.168.1.254 | 192.168.1.255 |
第二个子网从 .128 开始,.128 本身是网络地址,不能把它分配给普通终端。
如果把 .126/25 和 .129/25 配在两台主机上,尽管前三段相同,它们也已经不属于同一个 IP 子网。
4. 把 192.168.0.0/24 分成四个子网
四个等长子网需要借 2 位:/24 + 2 = /26。
最后一段的子网编号依次是 00、01、10、11,剩下 6 位主机位,所以每块有 64 个地址。
| 子网 | 可用主机范围 | 广播地址 |
|---|---|---|
| 192.168.0.0/26 | 192.168.0.1~192.168.0.62 | 192.168.0.63 |
| 192.168.0.64/26 | 192.168.0.65~192.168.0.126 | 192.168.0.127 |
| 192.168.0.128/26 | 192.168.0.129~192.168.0.190 | 192.168.0.191 |
| 192.168.0.192/26 | 192.168.0.193~192.168.0.254 | 192.168.0.255 |
也可以用块大小快速检查:
256 - 192 = 64网络地址的最后一段:0、64、128、192这里的 192 来自掩码最后一段 255.255.255.192。块大小法很好用,但要找准掩码发生变化的字节。
5. 172.16.0.0/16 至少要划六个子网
六不是 2 的整数次幂,所以要找到满足要求的最小位数:
2^2 = 4,不够2^3 = 8,足够
新前缀:/16 + 3 = /19新掩码:255.255.224.0第三段步长:256 - 224 = 32实际得到八个等长子网,可以使用其中六个,把另外两个留作扩展。
| 子网 | 可用主机范围 | 广播地址 |
|---|---|---|
| 172.16.0.0/19 | 172.16.0.1~172.16.31.254 | 172.16.31.255 |
| 172.16.32.0/19 | 172.16.32.1~172.16.63.254 | 172.16.63.255 |
| 172.16.64.0/19 | 172.16.64.1~172.16.95.254 | 172.16.95.255 |
| 172.16.96.0/19 | 172.16.96.1~172.16.127.254 | 172.16.127.255 |
| 172.16.128.0/19 | 172.16.128.1~172.16.159.254 | 172.16.159.255 |
| 172.16.160.0/19 | 172.16.160.1~172.16.191.254 | 172.16.191.255 |
| 172.16.192.0/19 | 172.16.192.1~172.16.223.254 | 172.16.223.255 |
| 172.16.224.0/19 | 172.16.224.1~172.16.255.254 | 172.16.255.255 |
每个 /19 剩下 13 位主机位,因此总地址数是 8192,普通可用主机数是 8190。
6. VLSM 的重点是按不同需求使用不同掩码
前面几道题都采用等长划分。VLSM,即可变长子网掩码,进一步允许同一个原始地址块内部使用不同长度的子网前缀。
补一个规划例子:现有 192.168.10.0/24,三个部门分别需要容纳 100、50、20 个接口地址,这些数量已经包含网关等需要占用地址的接口。
先从需求最大的开始:
| 用途 | 需求 | 分配子网 | 可用主机范围 | 广播地址 |
|---|---|---|---|---|
| A 部门 | 100 | 192.168.10.0/25 | .1~.126 | .127 |
| B 部门 | 50 | 192.168.10.128/26 | .129~.190 | .191 |
| C 部门 | 20 | 192.168.10.192/27 | .193~.222 | .223 |
| 预留 | — | 192.168.10.224/27 | .225~.254 | .255 |
表中省略的前三段均为 192.168.10。
检查规划时,至少确认三件事:容量够不够,地址块有没有重叠,网络地址是否落在对应前缀的边界上。
例如 /26 的边界按 64 递增,所以 192.168.10.160/26 不是一个规范的网络地址写法。这个地址实际属于 192.168.10.128/26。
7. 汇总要找共同前缀,也要看覆盖范围
子网划分把前缀变长,汇总通常把多个前缀概括成一个更短的前缀。
课堂里的方法是“取相同,去不同”,这里比较的是二进制高位。
例如:
192.168.0.0/24 → 第三段 00000000192.168.1.0/24 → 第三段 00000001 ↑ 只有最后 1 位不同前两段 16 位相同,第三段前 7 位相同,因此可精确汇总为:
192.168.0.0/23它刚好覆盖这两个 /24。
类似地,172.16.0.0/24、172.16.1.0/24、172.16.2.0/24 和 172.16.3.0/24 可以精确汇总为 172.16.0.0/22。
7.1 连续不一定意味着可以精确合并
如果原始网段是:
192.168.1.0/24192.168.2.0/24192.168.3.0/24用单个前缀覆盖它们,最小的是 192.168.0.0/22,但它同时覆盖了原来没有列出的 192.168.0.0/24。
这在数学上是一个覆盖范围更大的地址块;放到实际路由配置中,就必须确认额外范围是否也应该由该方向承接,否则可能造成误导流量或黑洞。
不要只检查“能不能算出共同前缀”,还要检查“算出来以后多包含了谁”。
8. CIDR 与 VLSM 放在一起理解
VLSM 强调按需求分配不同大小的子网。CIDR 强调以任意长度前缀表达和路由地址块,摆脱传统 A、B、C 类边界,也支持路由聚合。
所以把 CIDR 只背成“汇总”仍然太窄。它让 /19、/23、/27 这样的前缀成为路由中的直接依据。
做题时可以按这个顺序检查:
- 题目要求多少个子网,或者每个子网要容纳多少主机?
- 需要借几位,或保留几位主机位?
- 新掩码和块大小分别是多少?
- 网络地址、广播地址和可用范围是否对齐?
- 如果做汇总,有没有额外覆盖不该包含的地址?
下一篇:协议分层、TCP 与 MTU/MSS。