为什么我们必须通过 LAN 中的默认网关进行连接?

网络工程 ARP 播送 苹果电脑
2022-02-19 00:28:06

我是网络初学者,我正在寻找这些问题的答案:

  1. 当我们连接到局域网并想连接到同一网络中的其他设备时,为什么我们必须通过默认网关进行连接?
  2. 为什么ARP请求中的目的MAC地址全为零?我以为是广播,应该是ff:ff:ff:ff:ff:ff。
3个回答

回答第一个问题:

在 LAN 中,如果源和目标是同一子网或广播域的一部分,则它们不需要通过网关。它们可以直接相互连接(通常在总线拓扑中)。如果任何网络设备进入其交换机之间。当您需要访问属于不同 LAN 段或两者都具有不同广播域的主机时,就会出现网关。

要确定两个主机是否属于同一网络,如果结果相同,则将两个 IP 地址与子网掩码进行“与”运算,则它们位于同一网络上。

回答你的第二个问题:

默认情况下,arp 数据包中的目标 MAC 地址设置为零,并且根据RFC 5227被忽略。L2 标头中的目标 MAC 地址正确设置为 ff:ff:ff:ff:ff:ff 用于广播 arp 请求。

假设您正在谈论基于以太网的通用 TCP/IP。

1 - 情况并非如此,如果目的地在同一网络上,则直接与目的地建立连接,而不涉及网关

2 - ARP 由RFC826定义,其中规定:

ar$tha:此数据包目标的硬件地址(如果已知)。[...]

如果没有(在缓存中找到地址),它会生成一个带有 ether_type$ADDRESS_RESOLUTION 类型字段的以太网数据包。[...] 它没有将 ar$tha 设置为任何特别的值,因为它试图确定的正是这个值。它可以将 ar$tha 设置为硬件的广播地址(在 10Mbit 以太网的情况下为所有地址),如果这样便于实现的某些方面。然后,它会将此数据包广播到最初由路由机制确定的以太网电缆上的所有站点。

由于 RFC 没有指定目标地址,因此由实现来设置任何值。一些操作系统(我认为是 Solaris)使用全零,而另一些则使用全一(广播)地址。

当设备在 LAN(同一子网)上发送网络请求并且 L2 交换机没有该主机的 ARP 时,它将向所有接口发送广播(减去接收到的一个流量).Pcap 看起来像“谁是 xxxx 告诉 xxxx”具有关联 MAC 地址的设备将响应。如果额外的流量需要返回到该目的地,则 ARP 然后保存在 L2 交换机的 MAC 表中。

如果你能想象一座小山,主机在底部,只能看到对方,网关站在最高点,看到其他网关正在告诉对方“嘿,我知道这个网络 xxxx /24”。由于主机不知道它发送到网关转发的其他网络。