我应该将验证添加到我的软件UI (IP子网UI)中,它允许用户输入一对IP地址和子网掩码。我应该确保两个网络接口没有在同一个子网中配置。
我的理解是,如果我按位执行,在IP地址和子网掩码之间执行,我将获得一个网络ID,如果N/W ID不相同,这是否足以声称两个网络接口不在同一子网中?
这个问题仅限于IPV4。
发布于 2017-07-14 20:04:04
您需要用相同的网络掩码掩蔽这两个地址,以确定网络是否相同。您需要使用最短的网络掩码进行比较。这是确定两个地址是否位于同一个网络中的方法。
除了地址和掩码大小之外,IPv4和IPv6的过程完全相同。
例如,10.0.0.0/25和10.0.0.64/26将使用最短掩码(255.255.255.128)再现同一个网络,但即使第二个网络是第一个网络的子网,也会返回具有最长掩码(255.255.255.192)的不同网络,因此第二个网络中的任何地址都属于第一个网络。
用最短的面具:
10.0.0.0 -> 00001010000000000000000000000000
255.255.255.128 -> 11111111111111111111111110000000
AND -> ================================
00001010000000000000000000000000 = 10.0.0.0
10.0.0.64 -> 00001010000000000000000001000000
255.255.255.128 -> 11111111111111111111111110000000
AND -> ================================
00001010000000000000000000000000 = 10.0.0.0戴着最长的面具:
10.0.0.0 -> 00001010000000000000000000000000
255.255.255.192 -> 11111111111111111111111111000000
AND -> ================================
00001010000000000000000000000000 = 10.0.0.0
10.0.0.64 -> 00001010000000000000000001000000
255.255.255.192 -> 11111111111111111111111111000000
AND -> ================================
00001010000000000000000001000000 = 10.0.0.64带着指定的面具:
10.0.0.0 -> 00001010000000000000000000000000
255.255.255.128 -> 11111111111111111111111110000000
AND -> ================================
00001010000000000000000000000000 = 10.0.0.0
10.0.0.64 -> 00001010000000000000000001000000
255.255.255.192 -> 11111111111111111111111111000000
AND -> ================================
00001010000000000000000001000000 = 10.0.0.64如您所见,只有使用最短掩码的示例才会返回正确的答案,即第二个地址位于第一个地址的网络中。
发布于 2017-07-14 20:07:20
首先,您实际上只需要一个子网掩码条目,因为如果它们有两个不同的掩码,就不应该放在同一个子网上。但除此之外,是的,你和带有掩码的地址,如果你得到相同的结果,他们在同一个子网上。
https://serverfault.com/questions/862249
复制相似问题