当数据包转换成帧时,它会获得“目标硬件地址”、“源硬件地址”、“以太类型字段”或“长度”、“数据字段”和“帧校验序列字段”。
现在,在这个特定点上,如果目标主机在本地网络上,则网络层的 IP 将通过 ARP 请求本地主机的硬件地址,一旦收到,硬件地址就会传递给数据链路层,以便它可以将其转换为帧并通过物理链路执行可信传输。
但是,如果数据包的目的地是远程主机,那么它将如何获取默认网关(或下一个路由器)的硬件地址?因为每次在路由器之间发送数据包时,数据链路层都会将其转换为帧。并在接收路由器上剥离到数据包。那么,数据链路层将从哪里获取默认网关(路由器)的硬件地址来填充“目标硬件地址”字段,就像在本地主机的情况下一样?
答案1
每个路由器的工作是将数据包发送到下一个路由器。为此,只需要下一个路由器的硬件地址。您不需要知道后续系统的硬件地址(甚至硬件类型)。
典型的终端节点只需要其 LAN 上其他机器的硬件地址,因为这些机器是它向其发送第 2 层数据包的唯一机器。对于以太网,它使用 ARP 来获取此信息。
答案2
那么,数据链路层从哪里获取默认网关(路由器)的硬件地址来填充“目标硬件地址”字段,就像本地主机的情况一样?
与本地主机相同,来自操作系统。以太网帧头(包括目标地址)由操作系统,不受任何较低层的影响。
操作系统从其路由表中可以看到目的地需要是网关,对网关的 IP 地址执行 ARP 或 ND,并制作具有网关链路地址的以太网帧,同时在 IP 头中保留原始目标主机。
“数据链路层”仅仅将其传输到指定的目的地。