让R1和R2是两个(无线)路由器。R1 和 R2 都有一个有线接口eth0和一个无线接口wlan0在每个路由器上,两个接口都桥接在br0。 所以:
- R1.br0 = R1.eth0 + R1.wlan0
- R2.br0 = R2.eth0 + R2.wlan0
让C1和C2是分别连接到R1和R2的无线客户端。
什么时候会发生C1 发送广播以太网帧 B,这应该由 C2 接收(比如,针对 C2 的 IP 地址的 ARP 请求)?
我的问题:
R1 收到 B 后,会通过 R1.br0 发送该帧吗(因此会同时发送给 R1.eth0和它会将帧发送到 R1.wlan0 还是只通过 R1.eth0 发送(因为它知道该帧来自 R1.wlan0)?
无论如何,R2 最终都会收到 B。当 R2 收到 B 时,会出现一个与第一个问题基本相同的问题:R2 是通过 R2.br0 (...) 还是通过 R2.wlan0 (...) 发送帧?我不确定这两个问题的答案是否一定相同,因为源接口实际上并不相同,一个是有线的,另一个是无线的,这就是我同时问这两个问题的原因。
如果问题 2 的答案是“R2 将通过 R2.wlan0 和 R2.eth0 发送帧”,那么会不会出现某种循环(当 R1 再次收到 B 时,将我的问题 (2) 的相同推理应用于 R1,这次是从 R1.eth0 收到)?以太网如何处理这个问题?我看到的最简单的解决方案是建立网桥,以便它们将广播帧发送到除其来源接口之外的所有接口。
我不知道无线网络是如何工作的,所以,如果网桥确实不会将数据包发送到其来源接口,我们如何确定其他无线客户端会收到广播帧?无线(802.11b/g/n,无论什么)网络上的无线客户端是否直接相互通信?
实际上,所有这些都在什么地方定义,还是具体实现?如果已定义,我在哪里可以找到标准?
答案1
网桥充当交换机,并从除接收接口之外的每个接口发送广播帧。
这里的诀窍是 wlan 接口,它的行为方式与普通接口不同。可以关联多个客户端,但每个客户端不会收到所有流量 - 从概念上讲,将每个关联客户端视为交换机上的一个端口(同时,您也可以将开放的、未加密的无线网络视为集线器)。
R1 会在 br0 中获取该帧,br0 充当交换机,并将其发送到除发送该帧的客户端及其 eth0 之外的无线客户端,然后 R2 会在 br0 上获取该帧,并将其发送到除入口接口之外的所有接口,将帧发送给所有关联的无线客户端。
所有这些标准都存在于 IEEE 802 中,但它并不是轻松读物。