假设开关表为空。如果计算机A发送发往计算机B的帧,交换机将广播询问谁具有B的mac地址。如果C突然向A发送帧,该怎么办?交换机不会错误地认为计算机C是计算机B的机制是什么?是否记住了计算机A所需的目的地的mac地址,并且当C尝试访问A时,它也包含其自己的mac地址,并且交换机发现它与计算机A所需的目的地不是同一目的地?
基本上,我是在问,当交换机为主机A发送的请求泛洪一个未知的mac地址时,它如何知道目的地正在响应主机A,或者其他主机是否恰好正在传输至主机A?
假设开关表为空。如果计算机A发送发往计算机B的帧,交换机将广播询问谁具有B的mac地址。如果C突然向A发送帧,该怎么办?交换机不会错误地认为计算机C是计算机B的机制是什么?是否记住了计算机A所需的目的地的mac地址,并且当C尝试访问A时,它也包含其自己的mac地址,并且交换机发现它与计算机A所需的目的地不是同一目的地?
基本上,我是在问,当交换机为主机A发送的请求泛洪一个未知的mac地址时,它如何知道目的地正在响应主机A,或者其他主机是否恰好正在传输至主机A?
Answers:
第2层交换机(网桥)具有包含MAC地址和端口号的MAC地址表。交换机遵循以下简单算法来转发数据包:
收到帧后,交换机会将SOURCE MAC地址与MAC地址表进行比较。如果源未知,则交换机会将其与接收数据包的端口号一起添加到表中。这样,交换机就可以了解每个发送设备的MAC地址和端口。
然后,交换机将DESTINATION MAC地址与表进行比较。如果有条目,则交换机将帧转发出关联的端口。如果没有条目,则交换机会将数据包发送到其所有端口,但接收帧的端口除外(洪水)。
请注意,直到交换机从该设备接收到帧,它才会学习目标MAC。
它不叫开关表; 其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广播。