路由器转发时是否更改数据包的MAC地址

网络工程 路由 路由器 MAC地址
2021-07-27 21:26:52

在此处输入图片说明

假设主机 A 要通过 R1(接口 1 然后 2)和 R2(接口 3)向主机 B 发送数据包,所以我的问题是:

当数据包在 R1 内转发(从接口 1 到接口 2),准备发送到 R2 时,数据包的源 MAC(A 的 MAC 地址)和目标 MAC(接口 1 的 MAC 地址)是否更改为接口 2 的 MAC 地址新的源地址和接口 3(R2)作为新的目标 MAC 地址?如果它们确实发生了变化,为什么路由器需要更改源和目​​标 MAC 地址?

4个回答

当一个帧进入路由器时,路由器剥离并丢弃该帧,丢失任何第 2 层寻址,包括 MAC 地址。路由器将为下一个接口构建一个新框架。

并非所有第 2 层协议都使用 MAC 地址,在使用 MAC 地址的协议中,有些是 48 位 MAC 地址,有些是 64 位 MAC 地址。使用 MAC 寻址的是 IEEE LAN 协议,但是,例如,帧中继使用 DLCI 编号,或者 ATM 使用 VPI/VCI。点对点协议可能不使用任何寻址,因为链路上只有一个其他设备。

如果下一个路由器接口也使用MAC地址,则路由器将以其接口的MAC地址为源地址,链路上目的MAC地址为目的MAC地址,构建一个新的帧。如果下一个接口不使用 MAC 地址,路由器会为接口上的协议构建一个帧。

这只是改写其他人已经说过的内容,但我通常通过思想实验来解释这一点:

  • 假设没有以太网,并且所有主机和路由器都有直接的点对点链接(具有相同的连接性,即 A 到 R1)
  • 许多点对点链路没有链路寻址:只是以某种形式发送数据包,另一端接收它。
  • 然后,正如您想象的那样,从主机 A 到主机 B,数据包只有固定的 IP 源和目标地址。
  • 如果方便的话,一组给定的链接可能会被以太网替换
  • 要在以太网中传递数据包,它必须具有以太网源地址和目标地址才能到达以太网上的正确节点
  • 在以太网上,框架显示“我有这个给你”,其中“我”和“你”由源和目标以太网地址定义
  • 当 IP 数据包从一跳跳到另一跳时,不同的路由器会说“我有这个给你”,所以当然帧会有不同的源地址和目标地址
  • 如果它不是以太网,您将获得该介质的适当类型的 MAC 地址;48 位、64 位、无。

路由器不是只处理IP地址

具有以太网(或类以太网)接口的路由器需要处理 MAC 地址,因为它需要通过这些以太网接口发送和接收 IP 数据包,而 MAC 地址是以太网的核心部分。

MAC 地址仅在以太网网络中有意义。

从逻辑上讲,在 R1 发生的事情是。

  1. 检查目标 MAC 地址。对于单播 MAC 地址*,如果不匹配,网卡将丢弃该帧,如果匹配,则以太网帧将被剥离,并将数据包向上传递到 IP 堆栈。此检查对于防止数据包重复很重要。
  2. 检查 IP 地址并确定它不是路由器的本地接口之一。
  3. 在路由表中查找 IP 地址并选择接口和下一跳 IP 地址。
  4. 接下来会发生什么取决于 R1 和 R2 之间连接的性质。如果连接是以太网,则 IP 数据包将封装在以太网帧中,路由器的接口作为源 MAC,使用下一跳 IP 地址作为目标 MAC 地址查找 MAC 地址。另一方面,如果链路是串行点对点接口,则可能根本不涉及 MAC 地址,其他协议可能有自己的寻址方案。

* 广播和多播数据包需要更多特殊处理,但这超出了本问题的范围。

简单的回答,第 2 层地址不跨越第 3 层边界。ARP 仅适用于本地子网/vlan。主机 B 只能看到帧中路由器 3 本地接口的 MAC 地址。