当 IP 向同一子网外的另一台主机发送内容时,它会构造一个数据包 (L3),目标 IP 是目标主机的 IP,但帧 (L2) 的目标地址 = 网关的硬件地址。网关的 IP 地址似乎从未参与主机到主机的通信。
从理论上讲,网关似乎根本不需要 IP 地址,只需要 L2 地址,并且以下路由表应该与旧路由表相同:
default via <01:23:45:67:89:ab>
10.0.0.0/24 link-local
这个理论是真的吗?
当 IP 向同一子网外的另一台主机发送内容时,它会构造一个数据包 (L3),目标 IP 是目标主机的 IP,但帧 (L2) 的目标地址 = 网关的硬件地址。网关的 IP 地址似乎从未参与主机到主机的通信。
从理论上讲,网关似乎根本不需要 IP 地址,只需要 L2 地址,并且以下路由表应该与旧路由表相同:
default via <01:23:45:67:89:ab>
10.0.0.0/24 link-local
这个理论是真的吗?
将 IP 地址设置为默认网关提供了两件事:
想象一个主机有三个网络连接,每个都有唯一的 IP 地址空间。通常,这些网络连接中只有一个将具有预期的默认网关。
如果您指定网关的 MAC 地址,则主机不知道使用哪个接口来访问网关。该 MAC 地址可能存在于所有三个接口上。
如果您指定网关的 IP 地址,则主机可以使用其本地路由表来确定网关的位置。然后可以使用 ARP 来查找实际的 MAC 地址。
从技术上讲,如果您可以在设置默认网关时同时指定接口和 MAC 地址,那么(理论上)您将不需要默认网关上的 IP 地址。
但关键是,MAC 地址本身并没有提供使用哪个接口的任何指示。
虽然与您的问题没有严格相关,但值得注意的是:这就是为什么当您使用 IPv6 链路本地地址设置默认网关时,您还必须指出要使用的接口。因为链路本地范围存在于每个接口上,所以主机无法使用路由表来准确确定预期网关存在于哪个接口内。
对于点对多点接口(如以太网 NIC),需要下一跳网关的 IP 地址 - 毕竟,数据包需要找到通过网络到达该网关的路径。
在点对点接口(如简单的串行接口)上,不需要网关地址。只需路由出接口就足够了,因为每个传输的数据包最终都在伙伴跃点上。
本问答中回答了您的其余问题。