首页/网络/IP 与子网速查/例题:由地址范围反推掩码与网络
子网划分方法与例题40 条

例题:由地址范围反推掩码与网络

题干“某子网覆盖 192.168.10.64 到 192.168.10.127”:数地址 64 个 → 块大小 64 → 掩码 256−64=192 即 /26;网络 192.168.10.64、广播 .127、可用 .65–.126。

IP 与子网速查网络更新于 2026-10-13

题干与思路

题目:已知某子网覆盖 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 个地址2254/31
4 个地址4252/30
16 个地址16240/28
64 个地址64192/26
128 个地址128128/25

拓展与变形

  • 变形一:给出 192.168.10.64 到 192.168.10.191,长度 128,块大小 128,但起点 64 不是 128 的倍数,说明范围跨了两个 /25,题干不成立或需要重新划分
  • 变形二:给出一台主机的地址与掩码,求所在子网。做法是用掩码与地址做按位与,得到网络地址后再推边界
  • 变形三:已知网络地址与广播地址求可用数量,直接数差值再减 2,可用数 = 广播 − 网络 − 1
  • 变形四:已知可用主机数量求掩码,属于需求反推,先找满足 2^n − 2 ≥ 需求 的最小 n
  • 变形五:已知子网总数求借位,子网数必须是 2 的幂,借位数 = log2(子网数)
反推题的固定套路:数地址得块大小、用 256 减块大小得末段掩码、再验证起点对齐。三步验证通过后,网络地址、广播与可用范围都是顺带得出的中间结果。
反推题的关键是识别范围的起点是否为块大小的整数倍:不整除说明给出的范围跨了两个子网,题干隐含的是需要重新划分而不是直接套用。

易错点

  • 把“范围 64 个地址”当成“64 台可用”:必须先减去网络与广播两个地址,可用只有 62
  • 反推后不做对齐验证:起点不对齐说明这个范围本身不是一个合法子网,直接套掩码会得到错误结论
  • 数地址时用终点减起点:漏掉加一,64 会被算成 63,进而得到错误的块大小与前缀
  • 把掩码末段的 192 误当成 /22:192 出现在第 4 段才是 /26,出现在第 3 段才是 /22

数据来源与参考

  • RFC 950(子网划分)
  • Python ipaddress 官方文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌