我想知道我在子网 A 中是否有一台具有 IP 地址192.168.123.1的计算机,以及192.168.124.1在不同子网中具有 IP 地址的计算机。
两个网络都通过路由器连接。如果我现在想将一个包从计算机 A 发送到计算机 B,我将不得不使用 ARP 来获取它们的 MAC 地址以发送帧(假设 ARP 缓存为空)。
我现在的问题是:这个 ARP 请求会是什么样子,我可以想到两种可能的方法:
计算机 A,看到计算机 B 的 IP 地址在他自己的子网之外。它决定将数据包发送到他的默认网关(路由器)并发送带有路由器 IP 地址的 ARP 请求。接下来:路由器回复他的 mac 地址,并将帧发送到路由器,路由器将处理该帧。
计算机 A 是“愚蠢的”,它发送了一个带有 B 的 IP 地址的 ARP 请求。路由器足够聪明,并且看到 IP 地址在它的路由表中。并回复自己的MAC地址。接下来,计算机 A 将帧发送到路由器,认为它是计算机 B。路由器将数据包发送到计算机 B。
我看到第二种方法的缺点是,当您浏览 google 时,它会使用 Google 的 IP 地址执行 arp 请求。路由器会回复它自己的信息,因为它知道如何访问 Google。下次您浏览另一个网站时,您将不得不再次执行相同的操作,并使用该网站的 IP 发送 arp 请求。这将导致许多 arp 请求(每个网站一个)。并且 arp 缓存会变得非常大。
我真的不知道答案。我发现了两个 YouTube 视频——这个和这个——每个都告诉我不同的事情:
我希望有人可以帮助我。