简介:实验报告4 子网的划分,是一份面向高校计算机网络课程实验的配套文档,适用于需要掌握子网掩码计算、IP地址规划与子网分割技巧的学习者。该实验以C类地址201.222.5.0为基础,要求划分20个子网、每子网5台主机,通过手工计算与HA_subnet10、子网计算工具1.1、子网掩码计算器三种工具对比求解,并给出划分子网的作用、子网掩码的作用等思考题答案,完整覆盖实验目的、环境方案、步骤、结果与心得体会。资源文件总数1个,为doc格式文档,压缩包约42KB,内容以实验报告正文为主,可直接编辑或打印,适合作为课堂作业参考、实验报告模板或网络基础复习资料。该资源已有1995人浏览学习,对有子网划分实验需求的学生或自学者有一定参考价值。
1. 子网划分实验报告:为什么三种工具算完还是要会手算
拿到这份“实验报告4 子网的划分”时,我先入为主地以为重点是三个工具怎么点,结果真正常见的卡点是手算推导和工具结果核对。资源是某高校网络技术课上的一份典型实验:C 类地址 201.222.5.0,要求划出 20 个子网,每个子网 5 台可用主机,手工算一遍,再用 HA_subnet10、子网计算工具 1.1、子网掩码计算器各算一遍,最后整理出掩码、子网号、广播地址、主机范围。适合三类读者:正在赶 IP 规划作业的学生、刚接触子网计算工具的新手、以及想验证自己有没有算错的老手。这篇笔记把推导过程、工具操作和踩坑都写清楚,照着走一遍基本能交。
2. 从 201.222.5.0/24 开推:20 个子网 × 5 台主机的掩码为什么是 /29
2.1 需求拆解:子网数和主机数要同时满足,不是只看一个
C 类地址 201.222.5.0 默认掩码 255.255.255.0,也就是前 24 位是网络位,后 8 位是主机位。要划出子网,本质是从主机位里借一部分高位给子网号用。问题是借几位?得同时满足两个约束:子网数量至少 20 个,每个子网可用主机数至少 5 台。只盯其中一个数一定会选错。
按子网数计算,借 n 位可以得到 2^n 个子网(现代无类路由下全 0、全 1 子网均可用,后文避坑章再展开)。2^4=16 不够,2^5=32 够,所以 n 取 5。按主机数计算,主机位剩 m 位,可用主机数是 2^m - 2(去掉网络地址和广播地址),要大于等于 5:2^2-2=2 不够,2^3-2=6 够,所以 m 取 3。5+3=8,恰好用完了 C 类默认的 8 位主机位,所以掩码位数是 24+5=29,也就是 /29,点分十进制写法是 255.255.255.248。
把候选方案放一张表里看更清楚:
| 借位数 | 掩码 | 子网数 | 每子网可用主机 | 是否满足需求 |
|---|---|---|---|---|
| 4 | /28 | 16 | 14 | 子网数不够(16 < 20) |
| 5 | /29 | 32 | 6 | 满足 |
| 6 | /30 | 64 | 2 | 主机数不够(2 < 5) |
这张表说明了一件事:如果只按主机数算,算出 3 位就顺手写 /27,最后只有 8 个子网,离 20 个差的不是一点半点。反过来只按子网数算,借 5 位得到 /29,也得回头确认主机数够不够,因为在真实网络里主机位如果只剩 2 位,每子网只有 2 台机器能用,稍微多一台设备就放不下。这里每子网可用主机 6 台、需求 5 台,余量其实只有 1 台,属于刚好够用的状态。实际做网络规划时我会建议至少留 20% 的地址余量,要么选更大一点的子网,要么用 VLSM 把不同规模的需求分开放,但实验题按“最少位数满足条件”来算就是 /29。
2.2 手推前 20 个子网:子网号、广播地址、主机范围的规律
选定 /29 之后,排列子网就是机械活了。每个子网的地址块大小是 2^(32-29)=2^3=8,也就是说从 201.222.5.0 开始,子网号每 8 个一跳:201.222.5.0、201.222.5.8、201.222.5.16……一路推下去。第 20 个子网是 201.222.5.152,因为 (20-1)×8=152。
广播地址不用一格格算,记住公式:广播地址 = 子网号 + 块大小 - 1,也就是子网号 + 7。以第一个子网为例:子网号 201.222.5.0,广播地址 201.222.5.7,可用主机范围是 201.222.5.1 到 201.222.5.6,正好 6 台,满足“5 台主机”的需求。
| 序号 | 子网号 | 子网掩码 | 广播地址 | 可用主机范围 |
|---|---|---|---|---|
| 1 | 201.222.5.0 | 255.255.255.248 | 201.222.5.7 | 201.222.5.1 ~ 201.222.5.6 |
| 2 | 201.222.5.8 | 255.255.255.248 | 201.222.5.15 | 201.222.5.9 ~ 201.222.5.14 |
| 3 | 201.222.5.16 | 255.255.255.248 | 201.222.5.23 | 201.222.5.17 ~ 201.222.5.22 |
| 4 | 201.222.5.24 | 255.255.255.248 | 201.222.5.31 | 201.222.5.25 ~ 201.222.5.30 |
| 5 | 201.222.5.32 | 255.255.255.248 | 201.222.5.39 | 201.222.5.33 ~ 201.222.5.38 |
| 10 | 201.222.5.72 | 255.255.255.248 | 201.222.5.79 | 201.222.5.73 ~ 201.222.5.78 |
| 20 | 201.222.5.152 | 255.255.255.248 | 201.222.5.159 | 201.222.5.153 ~ 201.222.5.158 |
这张表可以当作后面三个工具的对照基准。每个子网可用主机数固定是 6,数出来是 7 或者 8 就说明边界算错了。第 21 到第 32 个子网虽然存在但没启用,如果以后要扩容到 25 个子网,直接启用第 21 个 201.222.5.160/29 就行,主机范围 201.222.5.161 ~ 201.222.5.166,规律完全一致。
注意:子网号本身就是网络地址,比如第一个子网 201.222.5.0/29 的网络地址就是 201.222.5.0。有些同学填表时觉得“这看起来像个普通 IP”,顺手把它划进主机范围,这是最经典的错误之一。
3. 三款子网计算工具对照:HA_subnet10、计算工具 1.1、掩码计算器怎么用、怎么核对
实验要求用三个工具分别求结果。很多初学者以为随便点两下就行,实际这三个工具的交互方式完全不一样,输出格式也各有脾气,想让它们“对上话”得花点心思。下面按使用顺序逐个说。
3.1 HA_subnet10:先填地址和掩码,再读子网清单
HA_subnet10 是经典的老牌子网工具,界面很简单:一个输入框填网络地址,一个输入框填子网掩码,点计算后列出子网列表。掩码有两种填法,要么填掩码位 29,要么填点分十进制 255.255.255.248。换算关系是:29 对应四位点分十进制的 255.255.255.248,因为第四段 248 的二进制是 11111000,前 5 位是 1、后 3 位是 0。
以本次实验为例,网络地址填 201.222.5.0,掩码位填 29,工具会把 32 个子网全部列出来,每个子网对应子网号、广播地址、主机范围。它的输出顺序从 201.222.5.0 开始,和手算表一致。要留意的是这个工具默认不排除全 0 子网,老教材口径下可能需要手动勾选“排除全 0 子网”,勾不勾会导致整个列表差一个子网,第 4 章再展开。
3.2 子网计算工具 1.1:支持按需求反推掩码
这个工具相对实用的一点,是能按“子网数”或“主机数”反推掩码。本次实验可以直接把 20 填进“子网数”,把 5 填进“主机数”,让它反推,得到 /29。只填 20 个子网时,工具按 2^n >= 20 推 n=5,结果还是 /29;只填 5 台主机时,按 2^m-2 >= 5 推 m=3,同样得到 /29。两条路径都指向同一个掩码,这本身就是一种交叉验证。
注意这个工具的输入框有时叫“子网位数”,有时叫“子网数量”,两者是完全不同的东西。位数填 5,数量填 20,填反了工具会给出完全不相干的掩码。分不清的时候记住:数量是你要切多少段,位数是要借多少 bit,本次实验数量是 20,位数是 5。
3.3 子网掩码计算器:适合逐个子网核对边界
第三个工具的功能侧重点在“掩码 + 单个 IP”:输入 201.222.5.0 和掩码 255.255.255.248,它给出该子网的网络地址、广播地址、可用主机数。这个工具不适合一口气列 20 个子网,但特别适合抽查——比如从手算表里挑第 1、第 10、第 20 个子网,分别填进去比对,三个都对得上,整张表基本没问题。
它的另一个常用场景是输入任意 IP + 掩码,直接告诉你这个 IP 属于哪个子网。这个功能对后面的反向验证很有价值,建议实验时顺手把 201.222.5.130 这类地址填进去试一次,感受一下“已知 IP 反推子网归属”的完整过程。
3.4 用一段 Python 把三份结果拉齐
三个工具输出格式不同,最容易在复制粘贴时错位。我的习惯是直接跑一段脚本生成标准结果,再拿它跟三个工具的输出比对。脚本很短,能直接跑:
import ipaddress base = "201.222.5.0" # 待划分的网络地址 prefix = 29 # 子网掩码位数,/29 count = 20 # 需要列出的子网个数 net = ipaddress.ip_network(f"{base}/{prefix}", strict=False) step = 2 ** (32 - prefix) # 地址块大小,/29 为 8 base_int = int(net.network_address) for i in range(count): subnet_addr = base_int + i * step subnet = ipaddress.ip_network((subnet_addr, prefix)) hosts = list(subnet.hosts()) print(f"子网 {i+1:2d}: {subnet.network_address} " f"掩码 {subnet.netmask} 广播 {subnet.broadcast_address} " f"主机范围 {hosts[0]} ~ {hosts[-1]}")逻辑说明:脚本先用 ipaddress 模块把 201.222.5.0/29 解析成网络对象,再算出每个子网的地址块大小 step = 2^(32-prefix)。因为 /29 的主机位是 3 位,块大小就是 8。第 i 个子网地址 = 基地址 + i × 8,逐个转成网络对象后取掩码、广播地址、主机范围。
参数说明:换需求时只需要改三个参数。比如要算 201.222.10.0/28 的前 10 个子网,把 base 改成 "201.222.10.0",prefix 改成 28,count 改成 10,脚本会自动按新块大小计算。如果 prefix 是 30,step 变成 4,每个子网主机列表只剩两个,一样能正常输出。跑出来的第 1 行是 201.222.5.0,第 20 行是 201.222.5.152,和 2.2 的手算表完全一致,可以作为三个工具的拉齐基准。
提示:工具结果和脚本对不上时,先核对掩码写法是否统一,再查全 0 子网是否被排除,最后才排查手算错误,顺序反了容易白忙。
4. 避坑与排查:子网划分实验里最常翻车的 5 个细节
这些坑都不算深,但每一个都足以让报告白写一版,属于做了这个实验的人普遍踩过的血泪经验。下面按“现象 → 原因 → 解决”逐个说。
4.1 只算主机位不看子网位,算出 /27
现象:需求是 20 个子网、每子网 5 台主机,结果掩码填成了 255.255.255.224(/27),理由是每个子网能装 6 台主机,满足 5 台的需求。
原因:只推导了主机位数 2^3-2=6,没回头验证子网数量。255.255.255.224 借了 3 位主机位,只能得到 2^3=8 个子网,离 20 个差了一半以上。
解决:两个约束分开写:子网数 2^n >= 20,n 取 5;主机数 2^m-2 >= 5,m 取 3。然后看 n+m 是否小于等于默认主机位数 8,这里正好等于 8,所以掩码是 /29。动手点工具之前,先花 30 秒把这两行式子写在草稿纸上,能省下后面所有的返工。
4.2 全 0、全 1 子网到底算不算,差出一个子网
现象:手算结果和工具结果对不上。有人从 201.222.5.8 开始列子网,工具从 201.222.5.0 开始列,两边子网数量一致,但逐行对比全部错位。
原因:老教材按“子网号全 0 和全 1 不可用”的规则,认为 201.222.5.0/29 不能作为子网号;现代无类路由协议默认全 0 子网可用,多数工具也从 .0 开始输出。
解决:先确认老师用的教材口径。本次实验方案只写“需要 20 个子网”,按现代实践从 .0 开始列,前 20 个子网到 201.222.5.152;如果必须排除全 0 子网,就从 .8 开始,第 20 个子网是 201.222.5.160,广播 201.222.5.167。不管哪种口径,都要在报告备注里写清楚,不要两边混用,否则老师按另一种口径判就会出错。
4.3 三种工具结果“不一致”,其实是掩码写法不同
现象:HA_subnet10 输出 255.255.255.248,计算工具 1.1 输出 /29,掩码计算器输出 248,三个结果看起来像对不上。
原因:点分十进制、CIDR 前缀长度、最后一段十进制,是同一个掩码的三种等价写法,不是计算错误。
解决:先把格式统一再对比。建议所有结果都写成“255.255.255.248(/29)”这种双写法,报告里也这样保留。发现不一致先换算,别急着改手算结果。这个坑在多人核对数据时尤其常见,工具 A 给掩码位、工具 B 给掩码,中间一转换就容易以为自己算错了。
4.4 主机范围把网络地址和广播地址包进去
现象:201.222.5.0/29 的可用主机范围被填成 201.222.5.0 ~ 201.222.5.7,看起来 IP 数量是 8,实际可用只有 6 台。
原因:把地址块的头尾都算进可用范围,没理解子网号(网络地址)和广播地址都不能分配给主机。网络地址的主机位全是 0,广播地址的主机位全是 1,这两个地址是子网本身的标识和广播通道。
解决:先算广播地址:子网号 + 7,再写可用范围:子网号 + 1 到 广播 - 1。自查办法更简单:每个 /29 子网可用主机数固定是 6,凡是数出来超过 6 的,必定是把边界算进去了。
4.5 复制粘贴结果错位,前几行看不出来
现象:从工具复制表格进 Word,前几行看起来正常,到第 8 行以后掩码、广播地址、主机范围开始张冠李戴。
原因:工具输出多列,手动复制时少选一列,错位后没有及时发现,后面的行全部跟着错。
解决:复制后先在纯文本编辑器里粘一次,抽查固定一行,比如第 3 个子网 201.222.5.16 的广播必须是 201.222.5.23,对了再往报告里粘。懒得手动核对的话,直接用 3.4 的脚本生成结果再复制,天然规避这个问题。
5. 思考题与报告输出:把计算结果整理成一份能直接交的 Word 版本
工具算完、手算完,不会整理等于白做。实验报告里最容易被轻视的是两个思考题和最后的结果栏,这两块恰恰是评分时看得最仔细的地方。
5.1 两个思考题的完整答法
第一题“划分子网的作用是什么”,别只写“安全性、可扩展性、管理性”三个词。结合本次实验可以这样组织:子网划分把一个大的广播域切成多个小的广播域,每个子网里的广播不会穿透到其他子网,减少了无谓流量;网络管理员按部门或业务分配子网后,路由策略和访问控制可以精确到子网粒度,配合 ACL 实现隔离;同时子网划分让地址分配有规律可循,排查故障时能快速判断设备 IP 是否落在正确范围内。最后顺带提一句:本次实验借 5 位得到 32 个子网,实际用了 20 个,剩余 12 个留着扩容,这就是可扩展性的实际体现。
第二题“子网掩码的作用是什么”,关键在“确定网络位和主机位的边界”。可以这样写:子网掩码是一个 32 位二进制数,网络位对应 1,主机位对应 0。把 IP 地址和掩码做按位与运算,保留网络位、清空主机位,得到的就是该 IP 所属子网的网络地址;再结合掩码位数,就能确定子网大小、广播地址和可用主机范围。以 201.222.5.100 和 255.255.255.248 为例,100 的二进制是 01100100,掩码第四段 248 的二进制是 11111000,按位与之后得到 01100000,也就是 96,所以该 IP 属于 201.222.5.96/29 这个子网。
这两题的答题顺序也建议先讲掩码、再讲划分。掩码决定了子网边界,划分子网的价值建立在边界清楚的基础上,按这个逻辑写,回答会顺很多,也不会给人“背概念”的感觉。
5.2 实验报告每一栏怎么填
报告开头的目的、要求、环境、步骤四栏直接沿用模板原文,不用发挥。值得花心思的是“实验结果”和“心得体会”两栏。
实验结果建议给四行来源:手工推导、HA_subnet10、子网计算工具 1.1、子网掩码计算器。每行写清“子网掩码 255.255.255.248(/29),前 20 个子网从 201.222.5.0 到 201.222.5.152”,下面跟一张完整表。表直接复用 2.2 的格式,按序填满 20 行。如果觉得 20 行太占篇幅,可以在正文放前 5 个子网,其余以“从第 6 个子网开始,子网号每 8 个地址递增,规律同上”说明,但结论表里最好列全。
心得体会别写“这次实验让我学到了很多”这类空话。换个角度写具体动作:先是手算卡在“该借几位”上,后来把子网数和主机数分开算,思路一下就通了;再用三款工具互相验证,发现工具之间差异主要是掩码表示法和全 0 子网口径;最后意识到主机范围的两端不能分配。这三件事合起来就是一篇合格的体会。
整理时还有几个实际细节容易踩:从 Excel 或工具往 Word 复制时,IP 地址容易被识别成日期格式,201.222.5.0 会变成一串乱七八糟的日期,解决方法是先在纯文本里粘贴一遍再套表格样式。另一个细节是掩码列统一写“255.255.255.248(/29)”,不要这一行写 29、下一行写 248。最后留一份自查清单在报告末尾:掩码是否写成了 255.255.255.248 而非 /28;每个子网可用主机是否都是 6 台;是否有任何一行主机范围包含了子网号或广播地址;三种工具结果是否统一成了同一种写法。四条都过,这份报告基本不用返工。
6. 反向验证法:任意抽一个 IP,30 秒判断它属于哪个子网
工具和手算都做完之后,还有一个常被忽略的步骤:验证。最实用的验证技巧是抽几个 IP 反推子网归属,因为只要有一行表填错,反推一定会露馅。
方法分三步。第一步,把 IP 第四段转成 8 位二进制,比如 201.222.5.130 的第四段 130 转成 10000010。第二步,因为掩码是 /29,说明第四段里前 5 位是子网位,后 3 位是主机位。把前 5 位 10000 保留,后 3 位补 0,得到 10000000,也就是 128,网络地址是 201.222.5.128。第三步,把后 3 位全部改成 1,得到 10000111,也就是 135,广播地址是 201.222.5.135。于是 201.222.5.130 属于 201.222.5.128/29 这个子网,可用主机范围 201.222.5.129 ~ 201.222.5.134。
这个技巧最大的价值在排查。假设你核对第 17 个子网时不确定填得对不对,抽 201.222.5.130 一验,发现它属于 .128 子网,而表里第 17 行写的正是 201.222.5.128,就全对上了。每 5 个子网抽一个 IP,20 个子网抽 4 个就够。要是抽的 IP 反推出来落在另一个子网,说明前一行或当前行的边界写错了,回头重新数 step 就行。
从那以后我每次做子网规划都强制走一遍:先手算掩码、再用工具出全表、最后抽 3 个 IP 反向验证。所有填进报告的数字,都必须经得起这个反向推敲。希望帮到你。
本文还有配套的精品资源,点击获取