通过按位与运算足以确定具有不同网络掩码的两个 IP 地址的段吗?

通过按位与运算足以确定具有不同网络掩码的两个 IP 地址的段吗?

我读过主机之间如何通信的规则。假设主机A和主机B。主机A通过按位与自己的IP地址和掩码来获取自己的网络ID,然后通过按位与主机B的IP地址和主机A的掩码来获取主机B的网络ID。如果结果相同,则它们位于同一网段中。

假设主机A不知道主机B的MAC地址:如果它们在同一个网段,主机A向交换机发送ARP请求,最终获取主机B的MAC地址;如果它们不在同一个网段,主机A使用网关的MAC地址作为目标MAC地址,主机B的IP地址作为目标IP地址,并将帧发送到网关。这就是它的工作原理。

我可以理解当两个主机的 IP 地址为 192.168.1.1/24 和 192.168.1.2/24 时的情况。但是当它们如下所示时会发生什么:

如果 hostA 是 192.168.0.1/16 而 hostB 是 192.168.1.1/24,则 hostA 获取自己的网络 ID:

192.168.0.1 & 255.255.0.0 -> 192.168.0.0

然后 hostA 获取 hostB 的网络 ID:

192.168.1.1 & 255.255.0.0 -> 192.168.0.0

因此主机 A 认为它们在同一个网段。但是对于主机 B,主机 B 获得自己的网络 ID:

192.168.1.1 & 255.255.255.0 -> 192.168.1.0

然后 hostB 获取 hostA 的网络 ID:

192.168.0.1 & 255.255.255.0 -> 192.168.0.0

因此主机 B 认为主机 A 位于不同的段中。

在这种情况下它们如何通信?例如,它们不知道彼此的 MAC 地址,主机 A 使用一种方法找到主机 B,而主机 B 使用另一种方法找到主机 A?

谢谢,

答案1

它的工作原理与您描述的完全一样。HostA 将认为 HostB 位于同一网络段,因此 HostB 的 MAC 地址的 ARP 也将如此。它根本不会让路由器参与其中。

当 HostB 发起对话时,它可能会看到 HostA 位于不同的网段上,并将其流量发送到路由器,并且路由器可能能够将其传递,但​​这并不重要,因为当 HostA 尝试回复时,它会再次相信 HostB 位于同一网段上,并且 ARP 为其 MAC 地址。

简而言之,IP 寻址方案不起作用,需要更改其中一个段。更改 HostA 所在段的网络 ID 为 192.168.0.0/24 即可。

相关内容