我在subnettingquestions.com并认为这很容易!
从网络 10.0.0.0 255.255.240.0 可以获得多少个子网(以及每个子网的主机)?
不幸的是,他们给出的答案是非常与我计算得到的结果不同。
如果有人能回答这个问题(并展示他们的工作)我将不胜感激。
编辑:
我看到下面的一些答案与网站所说的并不完全一致(例如,官方答案是“4096 个子网和 4094 个主机”)。有人能详细说明一下你应该如何达到这些值吗?
对于那些对我如何计算感兴趣的人,这就是我所做的:
255.255.240.0 是 /20 子网掩码,因此有 4 个借用位(从第 3 个八位字节开始)。
子网数量 =2的4次方(因为网络位数 = 4),因此16
每个子网上的主机数 =(2的4次方)-2(即地址的主机部分为 4 位),从而得出14。
所以我得到了 16 个子网,每个子网有 14 个主机。我的答案相差 256 倍!
有人能看出我错在哪里吗?我似乎对 C 类计算正确,但对其他计算有问题。
答案1
通过这些设置,正如@Darius 指出的那样,您将获得一个 20 位掩码,因此:
Start Address: 10.0.0.1
End Address..: 10.0.15.254
可用主机的最大数量为 4094。当然,您不能将子网中的第一个或最后一个 IP(例如 10.0.0.0 和 10.0.15.255)用作主机,因为这些 IP 还用于其他目的。第一个 IP 用于网络地址,最后一个 IP 用于广播地址。
严格来说,使用完全相同的掩码,您只能拥有 1 个子网。使用掩码 255.255.255.0,您可以拥有 16 个子网。当然,您可以使用其他掩码来获得不同数量的子网,但这会变得复杂。这是因为正是掩码创建了子网。
答案2
对于有关 A 类 10.0.0.0 网络上的 255.255.240.0 子网掩码的具体问题,这里是“工作”:
网络ID:10.0.0.0
子网掩码:255.255.240.0
分解为:1111 1111 . 1111 1111 . 1111 0000 . 0000 0000
我们的最后一个八位字节全为 0(或 256 个主机),第三个八位字节的最后 4 位也为 0(16)。要获得主机总数,我们将第 4 个八位字节的主机数(256)乘以剩余八位字节的主机数(16),得到 4096(256*16)个可能的主机(4094 个可用地址)
为了获得子网的数量,我们做同样的事情,但使用“网络位”;因为我们在 A 类网络上,所以我们关注的是第 2 个八位字节和第 3 个八位字节中“网络”位的余数,在本例中是1111 1111 . 1111 ...
(第 2 个八位字节和第 3 个八位字节的余数)。这里的数学相同,第 2 个八位字节说明了一切,因此这给了我们第一个八位字节中的 (256) 个可能的网络乘以第 3 个八位字节中的剩余网络 (16),从而给了我们 4096 个可能的子网。
相同的数学运算适用于其他网络类,但重点关注不同的八位字节。
更详细地讲:
要计算子网,首先要从主机八位字节开始,然后从那里“计数”,因此在我们的示例中,我们假设子网掩码为全部 255:
255.255.255.255 == 1111 1111 . 1111 1111 . 1111 1111 . 1111 1111
这只给了我们 1 个 IP,所以让我们开始翻转位来看看我们要去哪里:
255.255.255.254 == 1111 1111 . 1111 1111 . 1111 1111 . 1111 1110
请记住:翻转为 0 的位是‘可用’的 IP,因此这将只为我们提供 2 个 IP(.0 和 .1 来启动我们的子网范围),两个 IP 都不可用,因为 1 是主机,另一个是广播...让我们继续:
255.255.255.252 == 1111 1111 . 1111 1111 . 1111 1111 . 1111 1100
好的,现在我们有 4 个 IP,但只有 2 个可用(.0 - .3,.0 是“主机”,“.3”是广播)...让我们继续:
255.255.255.248 == 1111 1111 . 1111 1111 . 1111 1111 . 1111 1000
现在我们有总共 8 个子网掩码(6 个可用)..再来一个..
255.255.255.240 == 1111 1111 . 1111 1111 . 1111 1111 . 1111 0000
现在我们共有 16 个 IP,其中 14 个可用。
这是针对基于 C 类的网络,仅涉及最后一个八位字节,但相同的模式也继续适用于其他网络类(如上所述)。
子网计算非常繁琐(尤其是当您必须手动计算每个网络并且有数百个网络需要计算时)。
我希望这能帮到你。
答案3
很可能这已被遗忘,但如果 xtechhelp 的答案不够,这里还有另一种解释方法。
这个问题是一个“有类别”子网划分问题。这意味着解决问题的部分信息包含在 IP 地址中。
在这种情况下,10.0.0.0 是 A 类网络或 /8 CIDR 块。因此,此网络由 8 位组成,掩码为 255.0.0.0。
对网络进行子网划分意味着借用位,而子网掩码(将其视为扩展掩码)会告诉您借用了多少位。
在这种情况下,255.255.240.0 表示 255.240 是“扩展”部分。255 由 8 位组成,240 由 4 位组成。总共还有 8+4=12 位。
要确定子网的数量,只需查看借用的位有多少种不同的打开或关闭方式。这意味着 2^n,所以 2^12=4096。
要确定主机数量,请查看剩余位有多少种不同的打开或关闭方式。发现剩余 32-(8+12)=12 位,因此同样为 4096。
从主机总数中减去 2,因为主机不能分配第一个和最后一个地址(它们用于识别子网和广播)。
就应该这样。
注意:最后一个枚举点不应与“.0”或“.255”网络混淆。第一个和最后一个地址可以是任意数字(有关详细信息,请参阅 [1])。请注意,如果没有这些地址,您将无法将数据包路由到子网或允许主机与同一子网中的其他主机通信。当然,这是 IPv4 特有的。IPv6 使事情变得更直观。
[1]https://serverfault.com/questions/10985/is-xyz-0-a-valid-ip-address