网关是否需要 IP 地址?

网络工程 ip MAC地址 网关
2021-07-05 13:18:38

当一个 IP 向同一子网外的另一台主机发送某些内容时,它会构造一个数据包 (L3),目标 IP 是目标主机的 IP,但帧 (L2) 的目标地址 = 网关的硬件地址。网关的 IP 地址似乎从未参与主机到主机的通信。

从理论上讲,网关似乎根本不需要 IP 地址,它只需要 L2 地址,并且以下路由表应该与旧路由表相同:

default via <01:23:45:67:89:ab>
10.0.0.0/24 link-local

这个理论是真的吗?

2个回答

将 IP 地址设置为默认网关提供了两件事:

  • 允许主机“找到”(通过 ARP)用于 L2 封装的适当 MAC 地址
  • 通知主机使用哪个接口来查找网关(通过路由表)

想象一台主机有三个网络连接,每个连接都有唯一的 IP 地址空间。通常,这些网络连接中只有一个具有预期的默认网关。

如果您指定网关的 MAC 地址,则主机不知道使用哪个接口来访问网关。该 MAC 地址可能存在于所有三个接口上。

如果您指定网关的 IP 地址,则主机可以使用其本地路由表来确定网关的位置。然后可以使用 ARP 找到实际的 MAC 地址。

从技术上讲,如果您可以在设置默认网关时同时指定接口和 MAC 地址,那么(理论上)您将不需要默认网关上的 IP 地址。

但关键是,MAC 地址本身并不提供任何关于使用哪个接口的指示。


虽然与您的问题并不严格相关,但值得注意的是:这就是为什么当您使用 IPv6 本地链接地址设置默认网关时,您必须指明要使用哪个接口。由于链路本地作用域存在于每个接口上,主机无法使用路由表来准确确定预期网关存在于哪个接口中。

对于点对多点接口(如以太网 NIC),需要下一跳网关的 IP 地址 - 毕竟,数据包需要通过网络找到到达该网关的路径。

在点对点接口(如简单的串行接口)上,不需要网关地址。只需从接口路由出去就足够了,因为每个传输的数据包都在伙伴跃点上结束。

您的其余问题将在此问答中得到解答