我的网络接口如何知道要在 ARP 请求数据包中请求哪个目标 IP?

网络工程 转变 MAC地址 arp
2021-07-06 10:37:25

在我的 VMware 内部 nat 网络上,当我尝试从我的来宾向我的主机操作系统执行简单的 HTTP 请求时,来自我的来宾操作系统的 arp 请求要求我的主机 IP 的 MAC 地址并将其附加到以下目标 MAC 中完全符合预期的数据包。

当我在真实网络上尝试同样的事情时(即在我学校的网络上,而我的“访客操作系统”现在通过 USB wifi 加密狗直接连接到真实网络)时,似乎是从我的“访客操作系统”发出的 ARP 请求' 现在请求另一个 IP(似乎是一个交换机)的 MAC 地址。为什么我的来宾操作系统不像以前那样直接询问我的主机操作系统的 IP 地址?我的来宾操作系统如何知道在发送请求时要查找的 IP?

3个回答

ARP 请求通常仅限于一个广播域(如果您愿意,可以是一个子网)。所以当主机 A 知道(基于子网掩码)主机 B 位于同一广播域时,它直接向主机 B 发送 ARP。通过 ARP 主机 A 确定 B 的 mac,并发送带有 MAC B 和 IP B 的帧。

否则,它会查看 IP 路由表以确定 B 网络的下一跳(如果有)。您的主机上可能只有一个 IPv4 路由——默认路由。所以现在主机 A 应该使用 IP B 和默认网关的 MAC 发送 IP 数据包 - 这就是帧到达 IP 下一跳的方式。这就是 ARP 被发送到 DGW 的原因。

PS我相信你的问题在这里是题外话。

它首先确定所需的 IP 地址是本地的还是需要通过路由器 - 为此,将 RequiredIPaddress 与每个接口的 LocalIPAddress 进行比较,它执行二进制文件并使用 NetworkMask 清除低位,如果这些正是同样,ARP 请求将被发送到该接口。这将是第 2 层的广播

但是,如果此“是本地问题”没有匹配项,则它将路由。因此,它计算出下一跳地址并获取路由器的 IP 地址 - 它将为路由器的 IP 地址进行另一次 ARP 查找。

您的描述听起来像是它与“是否为本地”部分中的地址不匹配,并且发现交换机是它想要使用的路由器。

如果您的客户操作系统从 DHCP 服务器获得 IP,那么客户操作系统 DHCP 客户端将为它从 DHCP 服务器获得的 IP 发送 ARP 请求,以检查网络中是否存在任何冲突。