块大小法的思路
题目问「某个 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) | 128 | 0、128 |
| /26(192) | 64 | 0、64、128、192 |
| /27(224) | 32 | 0、32、64、96、128、160、192、224 |
| /28(240) | 16 | 0、16、32 … 224、240 |
| /29(248) | 8 | 0、8、16 … 240、248 |
| /30(252) | 4 | 0、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。若按四舍五入或向上取整,会把地址归到后一个子网,网关、广播与可用范围全部随之偏移。