路由器之间的通信需要MAC地址吗

‘下一跳’一般是接口属于广播链路(比如以太网)中一条路由中必不可少的描述部分。
在很久以前,很多路由其实是这样的:“X.X.X.X网段的报文(数据)需要从某个接口出去”,在‘点对点’网络(比如PPP链路,一般用于广域网),一条路由其实有出接口就够了。为什么叫“点对点”网络呢?简单来说就是一条线上只能链接两个端点,这样的链接不需要再继续查找“链路层地址”了,直接把报文从这个接口扔出去就行了。
但是在广播链路上,从一个端口出去可能会有很多机器和这个端口连接着,比如以太网(很多接口通过一个二层交换机连接)。所以类似以太网的广播链路必须具备一个链路层地址,并且具备一个寻址协议(ARP),这个链路层地址和IP地址是一一对应的。
【路由器之间的通信需要MAC地址吗】 所以,在广播链路连接的路由器中,一条路由变成了这个样子:
“X.X.X.X网段的报文(数据),需要从某个接口出去,并且送到Y.Y.Y.Y地址(路由器B的某个接口)”,其中Y.Y.Y.Y就是‘下一跳’。(大部分的情况下,从某个接口出去这句话是可以省掉的,这个和接口IP地址的掩码有关系)。这个下一跳的地址主要就是用来让链路层根据这个IP地址寻找到对应的MAC地址,这样链路层才可以通。
因此,你说的情况下,路由器A是需要获得路由器B的某个接口的MAC地址,这个MAC地址就是通过下一跳解析来的。

■网友
如果互联用的是以太网,就需要,如果不是以太网,例如E1封装帧中继、SDH、ATM,就不需要MAC地址,甚至不需要下一条目的地址,因为不会产生ARP解析

■网友
如果是直连,或者二层以太网互联,需要。
■网友
发数据包之前要封装数据包吧!没有mac地址怎么封装二层?
■网友
如果是两个设备间连通,不需要预先知道mac地址。比如配置静态路由时候只需要指出下一跳的IP地址是多少。互指成功以后两个路由器就能互相通信了。更高级一点的比如isof,BGP协议这些都是会自动在连接的设备间寻址。不需要单独去指定MAC地址。但是设备间的通信原理没有具体了解过。按照网络原理的话路由器是三层设备。是通过IP互相通信的。

■网友
mac是链路层的概念,二层交换机工作在链路层,路由是网络层设备不要mac

■网友
这个 我明白你的问题,当年也困惑过。
计算机网络实际以Internet为主,但是Internet实际是建立在私有的网络上的,比如一个ISP内部是私有的网络,不同的ISP之间协商通信机制,你所说的从A到B看看私有的ISP怎么实现,不同的厂家实现不一样,但是给用户的服务是一样的。
学计算机网络你会发现,应用层和传输层协议讲的很详细,但是到了网络层以下只讲原理,不讲具体实现(当然,以太网、广域网例外),因为应用层和传输层是由软件定义的,而到了下层则是由设备厂商自己决定如何实现的,思科、华为都有自己的实现协议,都是保密的。网络层和传输层,对外的借口就是局域网,但是出了这个网关怎么实现就看厂商自己的了。
在网络层,不同的网络IP也不太一样,比如4G 网和以太网、WLAN完全不同,网卡地址有,但是在真正网络中不是按照网卡标识,而是随机码来注册标识。

当然 如果家用路由器,原理是NAT,跟书上网络层不一样。


    推荐阅读