当我连接到交换机时,交换机知道哪个MAC地址属于哪个端口。因此,即使我处于混杂模式,为什么我会收到发往其他MAC地址的单播数据包?
我应该得到的是广播,多播和单播到我的MAC,我不明白这种混杂模式到底是什么?
当我连接到交换机时,交换机知道哪个MAC地址属于哪个端口。因此,即使我处于混杂模式,为什么我会收到发往其他MAC地址的单播数据包?
我应该得到的是广播,多播和单播到我的MAC,我不明白这种混杂模式到底是什么?
Answers:
交换机通过创建将设备的MAC地址映射到端口的表来运行。它们查找目标MAC地址以确定它们应转发流量的端口,并且它们应仅将单播帧转发到此端口。
只要接收到流量,交换机就会学习这些MAC地址。如果它在“端口A”上接收到帧,它将学习发送该流量的端口的设备的源MAC地址。
如果没有从主机收到流量,这些条目将随着时间的推移而老化。如果交换机没有目的MAC地址的条目,它将从该接收帧的端口之外的每个端口“泛洪”该帧的副本。所有广播和多播流量也以相同的方式处理,因为流量可以发往多个主机(除非交换机支持更高级的功能,如IGMP侦听)。
因此,如果您看到许多单播流量发往不同的主机,则最可能的解释之一是:
在薄网和以太网集线器的时代,混杂模式更有用。您是对的,以太网交换机了解哪些MAC地址连接到哪些端口并相应地隔离流量。
有些交换机允许一个端口用作监控端口,通过交换机的所有流量也会传输到该端口。
NIC上的混杂模式意味着它想要查看所有网络流量,而不仅仅是用于它的流量。在“正常”模式下,您的NIC将看到它的广播,多播和单播,但没有别的。
我猜卡可以告诉交换机它处于混杂模式,然后交换机会将所有流量转发给它。这就是我所能想到的。
在正常操作中,您不需要混杂模式。它仅用于网络监控,诊断问题等。
当交换机不知道目标MAC地址在哪里时,它会“溢出”所有端口。
响应的端口是交换机如何了解哪个端口有什么MAC。交换机存储此信息的内存类型称为“内容可寻址内存”或CAM表。
因此,当流量进入交换机,并且交换机已识别出目标MAC时,交换机将仅转发到该特定的已知端口。
如果不同的流量进入它不识别目标MAC的地方,它会泛滥所有端口,包括它之前已经“发现”MAC所在的端口。
因此,基本上交换机可以将多个MAC“分配”到其CAM表中的端口。
这可以解释为什么你的NIC从任何MAC获取帧,即使它在交换机后面。我以前从未考虑过这个问题,可能是错的,但这确实是唯一可行的方法。在企业级交换机上,您可能可以修改或禁用此行为。
如果要在NIC所在的系统上设置虚拟网桥,则混杂模式非常有用。通过虚拟网桥,您可以将系统中的一个或多个NIC绑定到网桥中 - 实质上是进行虚拟“交换机”或第2层转发。如果您想要捕获网络上的流量,混杂模式也很有用。