背景
我正在学习子网划分,发现我对一个问题的答案与老师的答案不一致。
注意:这是我选择了解自己的一些事情。不是我必须参加的课程。
我尝试过的方法:在线搜索、联系我所参加课程所在的网站、在超级用户和其他堆栈交换网站上搜索类似的问题。
问题
给定 IP 地址 172.20.0.0。/16 计算一个子网掩码,该子网掩码可容纳 100 台主机,同时最大化可用子网的数量。
我的答案
使用公式 2^n -2 并从 B 类子网掩码 255.255.0.0 开始,我计算出我需要借用 7 位。
初始子网掩码:1111 1111.1111 1111.0000 0000.0000 0000
我的答案:1111 1111.1111 1111.1111 1110.0000 0000(255.255.254.0)
导师解答
老师答案:1111 1111.1111 1111.1111 1111.1000 0000(255.255.255.128)
如果您能解释我是否/哪里出了问题,我将非常感激。
答案1
您说得对,2^7 是 2 的最低幂,至少为 100。您说得也对,IP 网络掩码需要使用 7 位。
本练习中的 16 位掩码是上限,实际上没有限制,因为它留下了 16 个可用的低位,而您只需要 7 位。
由于您使用了 32 位中的 7 位,因此剩下 25 位您不需要。因此网络掩码为 25 位,因此结果为 1111 1111.1111 1111.1111 1111.1000 0000 (255.255.255.128)。
此网络掩码用于您将要创建的子网。由于您留下了 16-7=9 位,因此您可以创建 2^9=512 个不同的子网,每个子网都有上述网络掩码(可能内部分配给分配了初始 16 位网络掩码的虚构组织)。
在您的答案中,您从初始的 16 位网络掩码中取出了 7 位。然而,这部分并不属于您,因为中央机构/ISP 只为您分配了低 16 位。
答案2
当问题指定主机数,而不指定网络数时,您需要从右到左(第 25-32 位)计算位数。目标是确定主机需要多少位,其余所有位将用于网络。
如果问题指定了子网数而没有指定主机数,则从左到右(第 17-24 位)计算位。
答案3
也许值得先退一步,首先关注所需的结果,然后再考虑数学。
提出问题的另一种方式是“可以容纳 100 个主机/IP 的最小子网(或 2 的最小幂)是多少”——它是一个包含 128 个 IP 的子网,即 0-127,用 7 位表示。
因此,要计算出网络掩码,你需要将最后 7 位“0”,然后转换回来,这意味着
11111111.11111111.11111111.1000000 = 255.255.255.128
我怀疑绊脚石就是这个“使用公式 2^n -2”——我不确定它来自哪里或者与什么相关,但该公式在这里不适用。