当交换机知道MAC地址,但发送PC不知道目标MAC地址时,交换机是如何工作的?

有4台电脑连接到一个交换机,这个交换机知道它们的MAC地址(所有4台电脑)。电脑A和电脑D之前从未通信过,因此它们两者的ARP表中都没有对方的MAC地址。 电脑A想要与电脑D通信,因此它发送了一个用于获取电脑D的MAC地址的ARP请求。这个ARP请求将是一个广播消息(ARP数据包的目标MAC地址为FF:FF:FF:FF:FF:FF)。 我想了解一下交换机会如何处理这个情况,因为它已经知道电脑D的MAC地址,但电脑A不知道。交换机会让电脑D回应这个ARP消息(广播),还是会丢弃这个ARP请求并直接将电脑A的数据包路由到电脑D(因为交换机已经知道电脑D的MAC地址)?

2除了答案之外,我所知道的所有操作系统在链路启动时都会发出一个自愿ARP。 - AbraCadaver
@AbraCadaver 这并不是很相关。Gratuitous ARP 只应该存在于 ARP 缓存条目中,而不是创建新的条目。它的作用是在 IP 移动或网卡更换时强制清除过时的条目,而不是预加载缓存。 - Barmar
@Barmar:不对。桥接器/交换机会检测到帧,记录源MAC地址和端口。这就是它的工作原理。 - AbraCadaver
@AbraCadaver 这与如何处理无偿ARP有什么关系? - Barmar
@Barmar:交换机不会处理无谓的ARP请求。它只是看到一个带有特定端口的源MAC地址的以太网帧进来而已... - AbraCadaver
@AbraCadaver,我从来没有说过它是这样的。是你提到了无谓ARP,而我只是指出它对那些不知道彼此的机器(问题中的计算机A)没有任何影响。 - Barmar
2个回答

ARP请求当然会通过。 交换机并不了解ARP。它只了解以太网(即以太网帧上的MAC地址),而不了解其上协议。(一些交换机提供高级功能,如IGMP监听,但在这里与本讨论无关。) 由于它是一个广播消息,必须传递到所有(已连接)端口。这是交换机所关心的唯一事情。它无法知道实际上它是要发给计算机D的。

嗯,以太网是一种协议。然而,一个简单的交换机只关注某些协议(比如以太网),而忽略其他协议(比如IPv4或传输控制协议)。 - TOOGAM
2ARP请求问道:“192.168.0.1在哪里?”交换机对此一无所知。 - Michael Hampton

ARP请求只是一条消息,它说:“IP地址为whatever的设备在吗?请告诉我你的MAC地址。”尽管ARP处理的是第二层地址的发现,但由于它被发送到一个IP地址,它本质上是一个第三层请求。交换机不在第三层操作。 在你提供的例子中,你知道一些交换机不知道的东西;即ARP请求中的IP地址属于计算机D。目标MAC地址是广播地址,这是交换机所知道和关心的全部。如果交换机看到一个广播MAC地址,那么它将简单地广播该数据包。 是的,有第三层交换机存在,而且学究们可能会指出ARP在技术上并不是一个第三层协议,但对于这个例子来说,这些都不重要。