这个关于如何在数学上确定目标 IP 地址是否与发送者在同一子网中的解释是否正确?
这是计算机所做的还是它以不同的方式做数学?
如何计算前缀、网络、子网和主机号?是一个很好的条目,涵盖了很多领域,但要回答我的问题,我必须进行推断,所以我留下了关于我的推断是否正确的问题。
为了确定一个数据包是交给交换机处理,还是转发到路由器(网关),我们需要确定目的地址是否在同一个网络内。
为此,我们可以简单地将网络掩码应用于目标地址,以便提取网络前缀。如果我们得到与计算机前缀相同的值,那么它在同一个网络上。
对于此示例,假设用户正在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