子网掩码计算问题

9

在某项竞赛考试中的问题:

The subnet mask for a particular network is 255.255.31.0. Which of the following pairs of IP addressed could belong to this network?

1: 172.57.88.62 & 172.56.87.23
2: 10.35.28.2 & 10.35.29.4
3: 191.203.31.87 & 192.234.31.88
4: 128.8.129.43 & 128.8.161.55

现在我对这个问题感到困惑,因为我读到了一个子网掩码的模式:

1111 1111. 1111 1111. 1111 1

我的意思是1从左边开始,但在这个子网掩码中:

1111 1111. 1111 1111. 0001 1111. 0000 0000

所以,实际原理是什么?请解释一下。我完全困惑了。
提前感谢 :)

1
这不是一个有效的子网掩码。因此,很难确定测试作者试图评估什么。 - Robᵩ
但我不能怀疑它的准确性,因为这个问题出现在ISRO考试中,那我怎么可能怀疑呢? - codeomnitrix
这是2004年GATE考试中的一个问题 :) - vikkyhacks
3个回答

15

这是一个不连续的子网掩码,在大多数路由器上已经不再支持。原理相同:将点分十进制IP地址和掩码转换为32位无符号整数,然后使用掩码对每个地址进行AND运算。如果结果相同,则它们在同一子网中。


我不熟悉那个。不连续的子网掩码曾经被支持过吗? - Robᵩ
@Rob,不连续的子网掩码仍然被一些网络访问控制设备支持,用于ACL等功能。(有时,特别是在思科路由器上,子网掩码是倒置写的,在这种情况下,您会看到0.0.0.255,例如表示/24) - mpontillo
只是为了补充一下Mike的评论,倒置子网掩码被称为“通配符掩码”。 - CustomX
仅澄清一下...子网掩码必须是连续的。这自1991年(参见RFC1219)以来就是子网划分的规则。 没有供应商支持不连续的子网掩码。 Cisco路由器和交换机(不包括ASA防火墙)上的ACL使用通配符掩码。通配符掩码不是反转的子网掩码!然而,大多数情况下,当使用通配符掩码时,它们是通过反转子网掩码创建的。然而,通配符掩码的关键在于它们不遵循连续规则。当用于测试ACL内部的内容时,这可能非常强大。 - Steve Dugan
例如,假设您有一个使用方案10.B.V.0/24的网络。其中B = Building(楼宇)和V = VLAN。在每个子网中,默认网关是最后一个地址.254。还假设在大型校园网络中,您有10个建筑物,每个建筑物大约有100个VLAN。如果您要创建一个ACL来允许从每个VLAN的默认网关IP地址传输流量,则使用连续掩码将导致1000行ACL。但是,使用不连续的掩码,ACL只有1行。 access-list 1 permit 10.0.0.254 0.255.255.0此通配符掩码仅匹配10和254。 - Steve Dugan

2
这种子网掩码在理论上而非实践中使用。我们使用所有1的子网掩码从最高位开始和所有0的子网掩码结尾,只是为了确保特定子网中的主机获得连续的IP地址。但如果我们有一个子网如下:255.255.31.0,我们将无法为特定子网中的主机分配连续的IP地址。但这仍然是可能的(理论上)。这种子网掩码在实践中几乎不使用。
至于问题,找出属于同一网络的IP的想法与正常子网掩码情况相同。只需将给定IP的位与子网掩码进行“AND”运算(不用说,结果将是网络ID),并检查对于该对是否相同。
选项:
(a)。首先是错误的。
网络ID:172.57。(某事)。0和172.56。(某事)。0
第二个八位组不同
(b)。网络ID:10.35.28.0和10.35.29.0
这是不正确的,因为第三个八位组不同。
(c)。网络ID:191.203.31.0和192.234.31.0
显然,这是不正确的,因为第二个和第三个八位组不同。
(d)。这将是答案(因为其余三个都不正确)。
让我们来检查一下:
128.8.129.43 AND 255.255.31.0 => 128.8.1.0
128.8.161.55 AND 255.255.31.0 => 128.8.1.0
BINGO!
因此,网络ID在两种情况下都相同。 因此,(d)将是答案。

"这个世界上有10种人-懂三进制的人,不懂的人和认为这会是一个“二进制”笑话的其他人。"

0
答案:选项(d) 解释: 这里的问题是:以下哪对IP地址属于给定的网络。将子网掩码应用于IP地址可将网络地址与主机地址分离。
因此,您必须使用给定的子网掩码从IP地址中找到网络ID。下面显示了如何从给定的子网掩码和IP地址中找到网络ID的示例。
网络位由子网掩码中的1表示,主机位由0表示。将IP地址与子网掩码执行按位逻辑AND操作会产生网络地址。例如,将类C子网掩码应用于我们的IP地址216.3.128.12会产生以下网络地址:
IP:1101 1000 . 0000 0011 . 1000 0000 . 0000 1100(216.003.128.012) 掩码:1111 1111 . 1111 1111 . 1111 1111 . 0000 0000(255.255.255.000) -------------------------------------------------- ------ 1101 1000 . 0000 0011 . 1000 0000 . 0000 0000(216.003.128.000)

因此,网络ID为:216.003.128.000

因此,对于所有选项执行上述操作,您会发现选项(d)属于同一网络。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接