题干与思路
题目:已知某子网覆盖 192.168.10.64 到 192.168.10.127,求掩码与网络地址。解题走反向路径:先数这段包含多少个地址,127 − 64 + 1 = 64,说明块大小是 64,掩码末段 = 256 − 64 = 192,对应 /26;再验证起点是否对齐,64 恰好是 64 的整数倍,合法;因此网络地址是 192.168.10.64/26,广播 .127,可用 .65 到 .126。
基本信息
| 已知条件 | 覆盖 192.168.10.64 至 192.168.10.127 |
|---|---|
| 地址数量 | 127 − 64 + 1 = 64 个 |
| 块大小 | 64,对应主机位 6 位 |
| 掩码 | 末段 256 − 64 = 192,即 /26 |
| 网络地址 | 192.168.10.64,即范围的起点 |
| 广播地址 | 192.168.10.127,即范围的终点 |
| 可用主机 | 62 个,从 .65 到 .126 |
解题步骤
解题步骤
① 数地址:终点 - 起点 + 1 = 64
② 由块大小反推掩码:256 - 64 = 192 → 第 4 段掩码 192 → /26
③ 验证起点对齐:64 = 1 × 64 ✓
④ 写出网络:192.168.10.64/26
⑤ 广播 = 起点 + 块大小 - 1 = .127
⑥ 可用 = .65 - .126,共 62 个程序验算
程序验算
python -c "import ipaddress as ip; n=ip.ip_network('192.168.10.64/26'); h=list(n.hosts()); print(n.prefixlen, n.netmask, n.broadcast_address, h[0], h[-1], len(h))"
# 26 255.255.255.192 192.168.10.127 192.168.10.65 192.168.10.126 62同类反推对照
| 范围长度 | 块大小 | 掩码末段 | 前缀 |
|---|---|---|---|
| 2 个地址 | 2 | 254 | /31 |
| 4 个地址 | 4 | 252 | /30 |
| 16 个地址 | 16 | 240 | /28 |
| 64 个地址 | 64 | 192 | /26 |
| 128 个地址 | 128 | 128 | /25 |
拓展与变形
- 变形一:给出 192.168.10.64 到 192.168.10.191,长度 128,块大小 128,但起点 64 不是 128 的倍数,说明范围跨了两个 /25,题干不成立或需要重新划分
- 变形二:给出一台主机的地址与掩码,求所在子网。做法是用掩码与地址做按位与,得到网络地址后再推边界
- 变形三:已知网络地址与广播地址求可用数量,直接数差值再减 2,可用数 = 广播 − 网络 − 1
- 变形四:已知可用主机数量求掩码,属于需求反推,先找满足 2^n − 2 ≥ 需求 的最小 n
- 变形五:已知子网总数求借位,子网数必须是 2 的幂,借位数 = log2(子网数)
反推题的固定套路:数地址得块大小、用 256 减块大小得末段掩码、再验证起点对齐。三步验证通过后,网络地址、广播与可用范围都是顺带得出的中间结果。
反推题的关键是识别范围的起点是否为块大小的整数倍:不整除说明给出的范围跨了两个子网,题干隐含的是需要重新划分而不是直接套用。