题干与答案
题目:主机地址 192.168.1.130 配上 /27 掩码,它属于哪个子网?答案是网段 192.168.1.128/27,广播地址 192.168.1.159,可用范围 192.168.1.129 到 192.168.1.158,共 30 个可用地址。
解题步骤
第一步由掩码算出块大小:/27 的点分掩码是 255.255.255.224,末段 224,块大小 256-224=32。第二步在该段里找不大于 130 的 32 的倍数:32 的倍数是 0、32、64、96、128、160,130 落在 128 与 160 之间,取 128。第三步得网络地址 192.168.1.128/27,广播为 128+32-1=159。
常见错法与原因
最常见的错误是直接写 192.168.1.130/27 当网段,或者取整方向弄反归到 160。前者忽略了「网段必须以块起点表示」,后者把「不大于」变成「不小于」。另一种错法是把广播算成 192.168.1.160,那是下一个子网的网络地址,而不是本段的广播。
基本信息
| 掩码 | /27 = 255.255.255.224 |
|---|---|
| 块大小 | 32 |
| 网络地址 | 192.168.1.128 |
| 广播地址 | 192.168.1.159 |
| 可用范围 | 192.168.1.129 – 192.168.1.158 |
| 可用主机数 | 30 |
同类题型的扩展问法
- 求广播地址:网络地址加块大小减一
- 求可用主机数:2 的 5 次方减 2 等于 30
- 判断某地址是否可用:.128 是网络地址、.159 是广播,都不可用
- 问下一个子网:128+32=160,即 192.168.1.160/27
- 问与另一地址是否同段:把两个地址分别归位再比较
ipcalc 验算
ipcalc 验算
ipcalc 192.168.1.130/27
# Network: 192.168.1.128/27
# Netmask: 255.255.255.224
# Wildcard: 0.0.0.31
# HostMin: 192.168.1.129
# HostMax: 192.168.1.158
# Broadcast: 192.168.1.159Python 一行验证
Python 一行验证
python -c "import ipaddress as ip; i=ip.ip_interface('192.168.1.130/27'); print(i.network, i.network.broadcast_address, len(list(i.network.hosts())))"
# 192.168.1.128/27 192.168.1.159 30块序列对照
| 块序号 | 网络地址 | 广播地址 | 130 是否在其中 |
|---|---|---|---|
| 第 1 块 | 192.168.1.0/27 | .31 | 否 |
| 第 2 块 | 192.168.1.32/27 | .63 | 否 |
| 第 3 块 | 192.168.1.64/27 | .95 | 否 |
| 第 4 块 | 192.168.1.96/27 | .127 | 否 |
| 第 5 块 | 192.168.1.128/27 | .159 | 是 |
| 第 6 块 | 192.168.1.160/27 | .191 | 否 |
这类题的通用模板只有两步:先算块大小,再把地址归位到「不大于它的块倍数」。把模板写熟之后,无论掩码是 /27 还是 /21,都只是在不同的段上做同一次除法。
换个掩码做同样的题
同样的地址换成不同掩码,答案会完全不同:192.168.1.130/24 的网段是 192.168.1.0/24;/25 时归到 192.168.1.128/25、广播 .255;/26 时归到 192.168.1.128/26、广播 .191。这说明掩码决定一切,题目里任何一次漏看或抄错掩码都会让整题作废,做题第一步永远是圈出掩码。
不要把 192.168.1.130 直接当网络地址写进路由或 ACL:设备会按块大小自动归位成 .128,但如果你在别处按 .130 计算了网关或池范围,两边就会不一致而出现难以定位的故障。