首页/网络/IP 与子网速查/块大小法:定位 IP 所在子网
子网划分方法与例题40 条

块大小法:定位 IP 所在子网

求“某 IP 属于哪个子网”:块大小 = 256 - 掩码字节;找该字节中不大于 IP 的倍数区间,区间起点即网络地址、终点-1 为广播。

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

块大小法的思路

题目问「某个 IP 属于哪个子网」时,最快的办法是块大小法:先由掩码算出块大小,再在地址的有效段里找到不大于该地址值的块倍数,那个倍数就是网络地址的段值,加上块大小减一就是广播地址。整个过程是一次除法取整,比写二进制做与运算快且不容易错。

两个手算例子

192.168.1.130/27:掩码末段 224,块大小 32,130 除以 32 商 4 余 2,4×32=128,于是网段是 192.168.1.128/27、广播 .159、可用 .129 到 .158。10.10.10.200/25:块大小 128,200 除以 128 商 1,网络末段 128,广播 .255,可用 .129 到 .254。

基本信息

公式块大小 = 256 - 掩码有效段的值
定位取不大于地址段值的最大块倍数
网络地址该倍数即网络地址段值
广播地址网络地址 + 块大小 - 1
有效段掩码中第一个非 255 的那一段

典型使用场景

  • 现场排障:只带手机或串口,无法跑工具时手算定位
  • 核对设备地址与掩码是否与规划表一致
  • 确认网关是否与主机同段
  • 考试中求网络地址、广播地址与可用主机范围
  • 写 DHCP 池前确认边界地址归属

手算 + 工具双验证

手算 + 工具双验证
ipcalc 192.168.1.130/27 | grep -E 'Network|Broadcast|Host'
# Network:   192.168.1.128/27
# HostMin:   192.168.1.129
# HostMax:   192.168.1.158
# Broadcast: 192.168.1.159
python -c "import ipaddress as ip; n=ip.ip_interface('192.168.1.130/27').network; print(n, n.broadcast_address)"
# 192.168.1.128/27 192.168.1.159

块大小与边界速查

掩码块大小块起点序列(第 4 段)
/25(128)1280、128
/26(192)640、64、128、192
/27(224)320、32、64、96、128、160、192、224
/28(240)160、16、32 … 224、240
/29(248)80、8、16 … 240、248
/30(252)40、4、8 … 248、252
块大小法对 /25 到 /30 最直观;前缀小于 /24 时改用「第三段的倍数」来定位,例如 /21 的第三段步长是 8:把第三段数值除以 8 取整再乘 8,就是网络地址的第三段值,第 4 段整体归零。

跨段情况怎么处理

前缀短于 /25 时,块大小作用在第 3 段而不是第 4 段:/20 的步长是 16,把第三段数值除以 16 取整再乘 16,第 4 段整体归零即网络地址;广播地址则是第三段加 15、第四段为 255。判断该在哪一段运算,就看掩码里第一个不是 255 的段,这一点在跨段题里最容易出错。

取整方向一定要取「不大于」的块倍数:130 要归到 128 而不是 160。若按四舍五入或向上取整,会把地址归到后一个子网,网关、广播与可用范围全部随之偏移。

易错点

  • 取整方向反了:把 130 归到 160,之后所有推导全错
  • 在前缀小于 /24 时仍在第 4 段找块:/21 的步长在第 3 段
  • 把块起点当网络地址后忘记减 1 求广播:广播是起点加块大小减 1
  • 忽略掩码只按地址前三段判断同段:同段判断必须先做按位与
  • 手算结果不验证:可用范围与网关配置前建议用 ipcalc 或 Python 复核

数据来源与参考

  • RFC 950(子网划分)
  • ipcalc(1) 手册

相关工具

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