这种解释是否正确 - 如何确定 IP 地址是否在同一子网上

网络工程 子网
2022-02-27 05:26:17
  1. 这个关于如何在数学上确定目标 IP 地址是否与发送者在同一子网中的解释是否正确?

  2. 这是计算机所做的还是它以不同的方式做数学?

如何计算前缀、网络、子网和主机号?是一个很好的条目,涵盖了很多领域,但要回答我的问题,我必须进行推断,所以我留下了关于我的推断是否正确的问题。


为了确定一个数据包是交给交换机处理,还是转发到路由器(网关),我们需要确定目的地址是否在同一个网络内。

为此,我们可以简单地将网络掩码应用于目标地址,以便提取网络前缀。如果我们得到与计算机前缀相同的值,那么它在同一个网络上。

对于此示例,假设用户正在ping对 IP 地址为 的计算机执行操作192.168.22.45让我们对这个 IP 地址应用我们计算机的网络掩码:

11000000.10101000.00010110.00101101 (192.168.22.45 - IP address) AND 11111111.11111111.11111111.00000000 (255.255.255.0 - Netmask) ----------------------------------- = 11000000.10101000.00010110.00000000 (192.168.22.0 - Prefix)

最后,我们将得到的前缀与我们之前得到的前缀与我们计算机的IP地址进行比较:192.168.22.0不等于192.168.1.0

或者在具有布尔逻辑的二进制中,我们使用异或运算符比较两个前缀。如果我们得到全 0,那么这两个前缀是相等的,因此在同一个网络中。

11000000.10101000.00010110.00000000 (Destination prefix - 192.168.22.0) XOR 11000000.10101000.00000001.00000000 (Local computer prefix - 192.168.1.0) ----------------------------------- = 00000000.00000000.00010111.00000000

1个回答

是的,有一种数学方法(除非我错了,否则计算机就是这样做的)。

你的电脑是 X 网络掩码 M

另一台计算机是 Y。

如果 (X & M) = (Y & M) 其中 & 是按位与,则计算机在同一网络上。

一个比我更好的答案会进入网络堆栈的源代码:)