如果您指的是 802.11 无线,您的示例实际上使用了两种独立的机制:CSMA/CA(基于 MACA)和 802.11 RTS/CTS(基于 MACAW)。
我还从问题的上下文中推断出所有设备都在相同的频道/频率上运行。
那么如果 B 想向 A 发送数据,C 想向 D 发送数据,这两者可以同时发生吗?据我所知,MACA 适用于 RTS-CTS-DATA 序列,并且没有 ACK。
B 和 C 将使用 CSMA/CA。如果一个先开始传输,另一个将后退。如果两者碰巧同时传输,在这种情况下应该仍然没有问题。
A 看不到来自 C 的传输(信号太弱以至于成为背景噪声),因此只能看到来自 B 的 RTS。对于 D 也是如此。
如果 A 也能看到 C,则可能会发生冲突(来自 C 的干扰可能会导致来自 B 的信号的 SNR 下降到可用水平以下)。由于 CSMA/CA 不对 RTS 等管理流量使用 ACK,因此当 B 未收到来自 A 的 CTS 时,它会向 A 发送新的 RTS。
假设首先,B 向 A 发送 RTS。C 听到此消息并保持沉默,直到 B 收到 A 的 CTS。CTS 来自 A 后,C 立即向 D 发送 RTS。B 听到此消息并保持沉默,直到 C 收到来自 A 的 CTS D. 最终 C 收到 D 的 CTS。 现在 B 和 C 可以同时传输数据吗?
由于您没有提供足够的详细信息,因此您的问题中存在小问题和两种可能的情况。您的问题的问题是,当您列出什么可以看到什么时,C 将永远不会看到 A 的 CTS,B 也不会看到 D 的 CTS。
这是暴露节点问题的核心,因为 C 将无法在 A 发送其 CTS 后立即发送 RTS。相反,C 应该在发送自己的 RTS 之前等待 RTS 中请求的时间加上一些时间。这是 RTS/CTS 的一些较旧的 802.11 实现的操作。
较新的 802.11 RTS/CTS 实施将允许 C 在没有听到 A(或来自 A 的 CTS)的情况下同时向 B 传输,只要 B 和 C 使用相同的时序和数据速率。这有助于缓解暴露节点问题。
如果 B 和 C 同时分别向 A 和 D 发送 RTS 会发生什么?我认为接收CTS不会有问题,但是B和C可以同时传输数据吗?
如果您阅读我上面的答案,这些问题已经得到解答。