准备网络相关的资格考试,子网划分几乎是绕不开的一关。很多人看到IP地址、掩码、主机数就头大,其实只要搞懂出题套路,做对并不难。下面结合常见的考试题目类型,带你一步步拆解。
题目一:给定IP和需求主机数,求子网掩码
比如题目问:某公司需要为一个部门分配IP,已知使用192.168.10.0/24网段,但每个子网最多需要50台主机。请问应划分为多少个子网?每个子网的掩码是多少?
先算主机位。50台主机,需要满足 2^n - 2 ≥ 50(减2是因为全0和全1地址不能用)。n=6时,64-2=62,刚好够。所以主机位留6位,网络位就是32-6=26位。因此新掩码是 /26,也就是 255.255.255.192。
题目二:判断两个IP是否在同一子网
这类题常出现在选择题里。例如:192.168.5.66 和 192.168.5.120 是否在同一个子网中,子网掩码为 255.255.255.192?
先把掩码转成位数:192 对应的是 /26,说明每段子网大小是 64(256-192)。所以这个网段被分成 0, 64, 128, 192 四个块。
看两个IP的最后一位:66 落在 64~127 区间,120 也在这个区间。所以它们属于同一个子网,答案是“是”。
题目三:写出某个子网的网络地址和广播地址
例如:对 172.16.32.0/20 进行分析,求其网络地址和广播地址。
/20 表示前20位是网络位,后12位是主机位。第三个字节只用了前4位作为网络部分。32 的二进制是 00100000,前4位是 0010,所以整个网络地址是 172.16.32.0。
广播地址是该子网最后一个地址。主机位全为1,即后12位全1。第三字节后4位补1变成 00101111 = 47,第四字节是255。所以广播地址是 172.16.47.255。
代码辅助计算:快速验证你的答案
平时练习可以用Python写个小脚本验证结果:
import ipaddress
net = ipaddress.ip_network('192.168.10.0/26', strict=False)
print("网络地址:", net.network_address)
print("广播地址:", net.broadcast_address)
print("可用主机数:", net.num_addresses - 2)
常见陷阱提醒
考试中容易踩坑的地方不少。比如题目说“需要支持60台设备”,有人直接按60算,忘了要加网关和预留地址。更关键的是别忽略点:全0和全1子网现在大多数情况是允许使用的,除非特别说明遵循旧标准。
再比如,遇到B类地址划分子网时,很多人还卡在“只能改第三段”的思维里。实际上只要掩码超过16位,就可以继续细分,跟A、B、C类原始定义关系不大了。
多练几套真题就会发现,子网划分考来考去就是那几个变体。把每次做错的题记下来,标清楚哪步错了,下次碰到类似题型自然就有感觉了。