发送广播包时集线器如何工作?

网络工程 以太网
2022-02-17 05:38:28

我知道集线器会发送广播数据包,因此广播域中的每个节点都会收到每个数据包。我读到接收到但不是寻址到 NIC 的 MAC 地址的帧被丢弃。但是我的意思是如果是广播包,应该不是每个节点都接受吧?

2个回答

集线器是第 1 层设备。当它们接收构成帧的电脉冲时,它们会将它们转发到除接收端口之外的所有端口。

这与 l2 目标是单播、多播还是广播 (ff:ff:ff:ff:ff:ff) 无关。

如果多个主机同时向集线器传输流量,这可能会导致以太网冲突。

主机的以太网适配器会将某些接收到的帧向上传递到协议栈以进行进一步处理(生成 cpu 中断)

  1. 匹配其以太网单播地址的单播帧
  2. 发往主机正在“侦听”的任何 l2 多播地址的多播帧
  3. 所有广播 l2 帧

如果 l2 帧包含 l3 数据包,则主机 cpu 将对其进行解封装和处理。

如果接口处于“混杂模式”(例如通过 tcpdump),则所有接收到的以太网帧都可能被发送到协议栈并产生中断。

我知道集线器发送广播数据包

集线器不发送任何东西(自己)。它们在线路上转发位(或符号),而不考虑帧和寻址。

所以广播域中的每个节点都会接收到每个数据包。

每个帧都被转发到每个集线器端口,并最终到达广播域中的每个节点,是的。使用中继器集线器,广播域与冲突域相同。

我读到接收到但不是寻址到 NIC 的 MAC 地址的帧被丢弃。

通过 NIC,是的。

但是我的意思是如果是广播包,应该不是每个节点都接受吧?

NIC(未处于混杂模式)处理寻址到其 MAC 或广播地址或为其配置的多播地址的帧。所有其他帧都被丢弃/忽略。

早期的以太网依靠 NIC 分拣出不需要的帧,因为共享线路将每个帧传输到线路上的所有节点。中继器集线器复制该行为,因为它将每个位从接收端口复制到所有其他端口。任何时候只有一个端口可以接收,其他任何接收都会导致冲突。由于转发器(集线器)没有帧和寻址的概念,因此该位的帧被寻址到哪里没有任何区别。

寻址确实与通过 MAC 地址选择性地转发单播的交换机有所不同。它们处理广播的方式类似于中继器处理所有事情的方式:广播被“淹没”出所有端口,但接收到的端口除外。