交换机如何学习交换机表?


22

假设开关表为空。如果计算机A发送发往计算机B的帧,交换机将广播询问谁具有B的mac地址。如果C突然向A发送帧,该怎么办?交换机不会错误地认为计算机C是计算机B的机制是什么?是否记住了计算机A所需的目的地的mac地址,并且当C尝试访问A时,它也包含其自己的mac地址,并且交换机发现它与计算机A所需的目的地不是同一目的地?

基本上,我是在问,当交换机为主机A发送的请求泛洪一个未知的mac地址时,它如何知道目的地正在响应主机A,或者其他主机是否恰好正在传输至主机A?


有什么答案对您有帮助吗?如果是这样,您应该接受答案,这样问题就不会永远弹出来寻找答案。或者,您可以提供自己的答案并接受。
罗恩·莫平

Answers:


34

第2层交换机(网桥)具有包含MAC地址和端口号的MAC地址表。交换机遵循以下简单算法来转发数据包:

  1. 收到帧后,交换机会将SOURCE MAC地址与MAC地址表进行比较。如果源未知,则交换机会将其与接收数据包的端口号一起添加到表中。这样,交换机就可以了解每个发送设备的MAC地址和端口。

  2. 然后,交换机将DESTINATION MAC地址与表进行比较。如果有条目,则交换机将帧转发出关联的端口。如果没有条目,则交换机会将数据包发送到其所有端口,但接收帧的端口除外(洪水)。

请注意,直到交换机从该设备接收到帧,它才会学习目标MAC。


感谢@Ron对其进行更好的解释。现在我知道洪水泛滥了。也可以在en.wikipedia.org/wiki/Unicast_flood
Damon

这没有回答我所问的问题。
Celeritas 2014年

5
@Celeritas您对问题的假设是错误的。交换机不会“询问”具有mac地址的用户。如果不知道目标MAC,则会将帧泛洪到所有端口。它仅在接收到帧时学习源MAC。因此,在您的问题中,交换机可以区分B和C,因为它们具有不同的源MAC地址。
罗恩·科恩

4
@Celeritas-交换机既不知道也不在乎为什么任何主机向主机A发送一些消息。如果主机正在响应主机A,或者另一个主机向主机A发送其他消息,为什么会很重要?交换机只关心目标MAC是用于主机A的(如果不在MAC地址表中,则源MAC是什么)。只有主机A关心接收的帧是否是主机最初向其发送帧的响应。
罗恩·莫平

罗恩说的是,此概念与ARP分开。
乔丹·赫德

4

您的问题假设交换机参与或知道两个主机之间的通信/对话(这是A与B之间的对话,还是A与C之间的对话?)。交换机不参与两个主机之间的通信/对话。它仅知道(或了解)哪个MAC地址与哪个端口相关联,并将发往特定MAC地址的流量转发(或交换)到关联的端口(一旦它知道了哪个端口与MAC地址相关联),而不管是否源是B或C或连接到任何其他交换机端口的任何其他主机。

交换机在第2层工作。会话管理是高层的职责。


-2

它不叫开关表; 其MAC表。现在考虑MAC表为空。当A尝试向B发送数据包时;该报文包含A和B的MAC地址。交换机在MAC表中更新A的MAC地址。现在,由于它不知道B连接到的端口,因此它在其所有端口广播ARP数据包,并等待所有主机答复。

现在,如果同时C尝试将数据包发送给A,它将从该数据包中提取C的MAC地址并将其存储在MAC表中。现在,由于MAC表中已经存在的MAC地址,因此它知道连接到哪个端口A。请记住,数据包包含源和目标的MAC地址。因此,B&C的MAC地址是不同的。因此,开关不会引起混淆。现在,交换机将数据包从C转发到A(鉴于两者都存在于同一VLAN中)。

为了将数据包从A发送到B,它一直等到B响应交换机发送的ARP数据包。当它收到来自B的响应时,它将在其MAC表中更新B的MAC地址。然后最终将数据包转发到B。

因此,由于数据包(tcp / udp)包含源MAC地址和目标MAC地址,因此交换机不会感到困惑。而且,您的交换机不会在不知道最终主机MAC地址要进行切换的接口上转发数据包。它必须等到最终主机答复交换机发送的ARP广播。


1
这并不完全准确。除非是三层交换机,否则它不会使用ARP。ARP用于在第2层和第3层之间进行解析,而交换机不知道第3层。确实,交换机确实将未知目的MAC的帧广播到每个交换机端口。主机将忽略目标MAC不是其自身的任何帧。
罗恩·莫平

1
对罗恩的澄清稍作澄清,主要是术语更正。当交换机由于不知道特定的MAC地址位于何处而将数据包发送到每个端口(入口端口除外)时,通常称为“泛洪”。
Jeff McAdams 2014年

@Ron谢谢您的纠正。忘了写这是用于第3层交换机的。我也想承认我忘记了泛洪一词,所以我写了第3层交换机的答复。杰夫也谢谢您的讲述。
戴蒙2014年

@杰夫·麦克亚当斯,你是正确的,这是洪水,谢谢。早起之后是在我第一次喝咖啡之前,我的意思是用语言而不是网络来进行广播。
罗恩·莫平

@Damon,我不知道每个帧都包含源和目标MAC地址。
Celeritas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.