路由器如何知道目标mac?

网络工程 路由器 ip MAC地址 层2 arp
2021-07-20 01:05:19

因此,如果我从一个主机向另一个来自同一网络的主机发送数据包,我们就知道源和目标的 mac 地址。

但是,如果接收器位于远程网络中,则目标 mac 地址将首先是路由器的 mac,然后更改为实际目标(假设有一个路由器连接网络)。

我的问题是:如果初始数据包中没有提到最终的mac地址(而是用路由器代替),路由器是如何知道的?

现在我知道有 arp 协议可以将 IP 地址转换为 mac 地址,但是根据我的理解,mac 地址与 nic 相关联,我认为单个设备可以有多个 nics,因此可以有多个 mac 地址,那么怎么做的呢?选择正确的?除非每个网卡都连接到不同的网络,在这种情况下,mac地址还有什么用?

4个回答

路由器是 LAN 上的主机,它与任何其他主机执行相同的操作,将第 3 层 (IP) 地址解析为第 2 层地址(IEEE 协议的 MAC)。对于 IEEE 网络上的 IPv4,这将是 ARP(地址解析协议),或者对于 IEEE 网络上的 IPv6,这将是 NDP(邻居发现协议)。


请参阅此问题此问题以获取相关答案。


请记住,并非所有第 2 层协议都使用 MAC 地址。有些使用其他东西,如 DLCI 或 VPI/VCI,有些不使用任何寻址,如 PPP。

路由器不知道也不关心远程目标的 MAC 地址。MAC 地址仅用于在第 2 层网段(如直连网络中的以太网)中传送这些地址对该段之外的任何节点都没有影响。

相反,跨不同网段的通信使用第 3 层地址 (IP) 与路由器。路由器根据目的地的第 3 层地址转发。他们在路由表中查找目的地地址,然后转发到下一个网关——一个路由器,进一步通向目的地或目的地本身,如果它是本地连接的。

通过基于 MAC 的网络转发到下一个网关意味着在封装实际 IP 数据包的帧中使用网关的目标 MAC 地址(由 ARP/v4 或 NDP/v6 确定)。

只有当目的地在路由器本地时 - 在最后一跳 - 路由器才会解析目的地的 MAC/L2 地址,将 L3 数据包封装在寻址到 L2 地址的帧中并将其发送过去。

中间路由器(使用基于 MAC 的网段)解析下一跳路由器的 IP 地址,并将数据包封装在寻址到下一跳 MAC 地址的帧中。

如果在路由器上配置了该特定网络的第 3 层接口,则路由器将发现计算的物理地址,

Arp 作为休耕

当一台新计算机加入 LAN 时,它会被分配一个唯一的 IP 地址,用于识别和通信。当发往特定 LAN 上的主机的传入数据包到达路由器的网关时。路由器查找 ARP 表以找到与 IP 地址匹配的 MAC 地址并转发流量。通过将广播消息泛洪到系统中连接的所有主机,在路由器中创建一个 ARP 表,属于路由器上的第 3 层网关配置。一个叫做 ARP 缓存的表维护着每个 IP 地址及其对应的 MAC 地址的记录。如果路由器上没有配置网关意味着它只会根据路由表将流量转发到下一跳

在此处输入图像描述 https://i.stack.imgur.com/XxOgj.png 如果在路由器上配置了该特定网络的第 3 层接口,则路由器将发现计算的物理地址,

Arp 作为休耕

当一台新计算机加入 LAN 时,它会被分配一个唯一的 IP 地址,用于识别和通信。当发往特定 LAN 上的主机的传入数据包到达路由器的网关时。路由器查找 ARP 表以找到与 IP 地址匹配的 MAC 地址并转发流量。通过将广播消息泛洪到系统中连接的所有主机,在路由器中创建一个 ARP 表,属于路由器上的第 3 层网关配置。一个叫做 ARP 缓存的表维护着每个 IP 地址及其对应的 MAC 地址的记录。如果路由器上没有配置网关意味着它只会根据路由表将流量转发到下一跳

在此处输入图像描述 https://i.stack.imgur.com/XxOgj.png Router#sh ip arp Protocol Address Age (min) Hardware Addr Type Interface Internet 172.16.10.1 - 00D0.5839.C102 ARPA GigabitEthernet0/1 Internet 172.16 .10.2 1 0060.478D.1107 ARPA接口GigabitEthernet0 / 1互联网192.168.10.1 - 00D0.5839.C101 ARPA接口GigabitEthernet0 / 0因特网192.168.10.2 0 0060.2F0A.B64D ARPA接口GigabitEthernet0 / 0路由器#SH IP ARP协议地址年龄(分钟)硬件地址类型接口互联网172.16.10.1 - 00D0.5839.C102 ARPA接口GigabitEthernet0 / 1网络172.16.10.2 1 0060.478D.1107 ARPA接口GigabitEthernet0 / 1的互联网192.168.10.1 - 00D0.5839.C101 ARPA接口GigabitEthernet0 / 0互联网192.168.10.2 0 0060.2 F0A.B64D ARPA 千兆以太网0/0

如果在路由器上配置了该特定网络的第 3 层接口,则路由器将发现计算的物理地址,

Arp 作为休耕

当一台新计算机加入 LAN 时,它会被分配一个唯一的 IP 地址,用于识别和通信。当发往特定 LAN 上的主机的传入数据包到达路由器的网关时。路由器查找 ARP 表以找到与 IP 地址匹配的 MAC 地址并转发流量。通过将广播消息泛洪到系统中连接的所有主机,在路由器中创建一个 ARP 表,属于路由器上的第 3 层网关配置。一个叫做 ARP 缓存的表维护着每个 IP 地址及其对应的 MAC 地址的记录。如果路由器上没有配置网关意味着它只会根据路由表将流量转发到下一跳

在此处输入图片说明

路由器#sh ip arp Protocol Address Age (min) Hardware Addr Type Interface Internet 172.16.10.1 - 00D0.5839.C102 ARPA GigabitEthernet0/1 Internet 172.16.10.2 1 0060.478D.1107 ARPA GigabitEthernet0/1 Internet 192.168.10.1 - 00D0.5839.C101 ARPA GigabitEthernet0/0 Internet 192.168.10.2 0 0060.2F0A.B64D ARPA GigabitEthernet0/0