WLAN为什么使用冲突避免而不是冲突检测?


18

我正在寻找这个答案已有相当一段时间。为什么在局域网中有CSMA / CD但在WLAN中有CSMA / CA?

我能找到的最好的解释是“由于发射和接收功率的极高比例,在同一信道上传输数据非常不切实际。因此使用了避免冲突”。无法理解含义。即使您使用两个单独的通道进行发送和接收,CSMA仍可用来决定哪个节点将使用通道,因此丢弃CD代替CA毫无意义。因此,这种解释似乎不合适。

我能想到的唯一原因是,如果节点数少,因此发生冲突的机会就少,我们应该使用CD;如果发生冲突的机会就高,那么就应该使用CA。但是LAN和WLAN之间的用户数量没有差异。
如果有人可以解释。


csma / cd无法在WLAn中有效使用,因为WLAN中的错误率非常高,并且允许冲突会导致吞吐量急剧下降。参见; AD Hoc无线网络,C.Siva Ram Murthy
user63044

Answers:


19

在有线CSMA / CD以太网环境中,由于存在分离的TX和RX对(以10BaseT为例),因此可以检测到冲突。如果半双工10BaseT NIC在TX对上发送了一个帧,但发现该帧在RX对上已损坏,则NIC检测到冲突。

但是,对于802.11无线设备,没有“导体”,只有没有同时发送和接收的天线。实际上,当802.11设备正在传输时,它无法侦听以相同频率同时传输的另一个信号。原因是发射时RF信号强度很快下降。

即使我们构建了一个虚拟的WiFi设备,该设备可以同时接收和发送信号,但如果另一个设备正在使用更高的输出功率(原始功率或通过某种被动/主动增益),它将只能听到下游冲突。 。通常,它自己的TX信号太强,会“淹没”任何其他接收到的信号。

因此,需要另一个过程,从而需要CSMA / CA。


1
10base-2和10base-5(从以太网的早期开始)就没有TX和RX对。即使使用10 / 100base-T,连接两个以上端点的集线器也必须为所有端口的RX添加一个以上的TX。一个简单的事实是,无线无法可靠地检测到冲突,因为所有无线电都无法可靠地相互听到。
Ricky Beam

我的原始帖子由于总线网络而没有提到TX和RX对,我只是将其保留为TX和RX导体。总线网络通过基本允许所有设备驻留在单个电路中而存在。一个简单的事实是,无线无法检测到冲突,因为它无法检测到。
YLearn

18

回避用于非常简单的事实,即每个无线电(“客户端”)不一定位于彼此的范围内。因此,在没有AP协调谁可以讲话的情况下,遥远的无线电设备可能会互相踩踏,因为它们不知道对方正在发射信号。


4
这是正确的答案。为了使无线客户端能够进行通信,它只需要查看AP,而不必看到其他任何客户端。因此,如果两个彼此遥不可及的客户开始交谈,那么他们将在AP处互相干扰对方的信号。但是他们永远不会知道,因为他们彼此听不到。基本上,CSMA / CD在广播域中工作。在无线领域,广播域不会与物理设备完全重叠。(将其视为维恩图,任何重叠都会干扰整个其他域。)
JelmerS,2014年

1
@JelmerS,对不起,这是第二个答案。虽然为真,但并非总是适用。真正的原因是,即使将无线设备设计为在TX时为RX,它也将无法检测到冲突,因为它的TX会比其听到的任何其他信号(根据相同的EIRP)更强FAR,并且“屏蔽”是接收其他信号的能力。实际上,无线设备不能同时发送和接收。
YLearn

不,那只是一种不同的说法。虽然无线电可以(并且确实)在发送时接收,但它仅适用于该发送者。(通过从RX中减去TX。每一个模拟调制解调器已经做了20多年了。)其他所有人都会听到垃圾,或者是功能更强大,更本地化的发送器。
Ricky Beam

1
@RickyBeam,将无线技术与有线技术进行比较是一个谬论。大多数RF是半双工的。之所以将其设计为半双工,是因为这样做更便宜/更简单,并且以相同频率进行全双工是不现实的。手机使用频率对工作,一对用于TX,一个用于RX。其他大多数射频是半双工的;公民乐队,短波,FM,AM,许多警察/消防广播,许多军事应用等
YLearn

重新阅读后,我还应注意,CSMA / CA的实现独立于AP用于管理“谁可以讲话”的任何机制。这就是为什么诸如隐藏节点问题之类的问题除了CSMA / CA之外还可能需要RTS / CTS的实现。
YLearn

4

编辑(基于Ricky的更正):

以下摘录自 http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Linux.Wireless.mac.html

CSMA / CA源自CSMA / CD(冲突检测),它是以太网的基础。主要区别在于避免冲突:在电线上,收发器具有在发送时侦听并因此能够检测到冲突的能力(通过电线,所有传输的强度大致相同)。但是,即使无线电节点可以在传输时在信道上侦听,其自身传输的强度也会掩盖空中的所有其他信号。因此,该协议不能像以太网那样直接检测冲突,而只能避免冲突。

下面的链接是CSMA / CA的很好阅读,还解释了CSMA / CA的工作方式:

http://www2.cs.uidaho.edu/~oman/SC&CI/CSMA-CA-collisions_Bonaventure.pdf


1
负。CSMA / CD不需要同时发送/接收。在全双工以太网出现之前,它的设计时间很长。
Ricky Beam

感谢您抓住@RickyBeam。您还能请您解释一下如果在传输的同时无法感知到电台的情况,电台将如何退出传输?
vish213

我经常同意Ricky的观点,但是CSMA / CD能够同时监视RX和在TX过程中与全双工操作无关。它基于具有独立的TX和RX导体,并且当设备在TX上发送信号同时在RX上接收信号时检测到冲突。虽然无线电理论上可以同时“发送” TX和RX,但这实际上是不可能的...这就是为什么从根本上讲,无线设备不可能同时发送和接收TX。
YLearn

@YLearn,那不是他说的。而且您正在阅读所有内容,好像双绞线(或光纤)是唯一的介质。CSMA / CD设计于10base-2时代-同轴电缆。冲突是通过早期硬件中的当前监控检测到的;后来(更高级的)硬件从线路中减去TX来侦听其他信号,但这仍然不是“同时发送和接收数据”
Ricky Beam

@RickyBeam总线网络基本上是所有设备都参与单个电路的网络。同样的原则适用。关于您对电流的评论,是的,在早期硬件中,如果有电流,则有信号。我从未说过它实际上可以使用RX上的信号,而是当TX上接收到这样的信号时,这可以检测到冲突。
YLearn

0

在有线总线上,信号损耗很小,因此很容易检测到冲突。IIRC同轴以太网通过查看线路上的DC电平来实现此目的,但是也可以通过将总线上的信号与您要传输的信号进行比较来实现。

收音机根本不起作用。发射器和接收器之间的信号损失非常大,至少几十个DB。面对强大的输出信号,检测在相同频谱中工作且强度大大降低的输入信号是不切实际的。这基本上排除了将冲突检测作为无线系统的一种方法。

PS双绞线和光纤以太网在每个方向上使用单独的数据通道,因此电线上没有冲突。简单地通过一次检测两个通道上的活动来检测“冲突”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.