A form of Carrier Sense Media Access
often used in network media where full-duplex
is not possible.
There are many difficulties in transmitting at half-duplex
: Collision detection
is not possible, as the receiver cannot be used while transmitting. Even worse, the destination node may be in transmit
mode, and therefore unable to receive
data. CSMA/CA tries to work around these problems.
, each node listens to the network before transmitting, to make sure no other node is transmitting and it is safe to transmit (Carrier Sense
). If it is, instead of transmitting the data, the node broadcasts a Request To Send
packet. This packet is as short as possible, to minimise the chances it will collide with anything. If the destination node receives the RTS packet, it sends back a Clear To Send
packet. The source node responds with the data packet, and if it is successfully received, the destination node replies with an ACKnowledgement
packet. Other nodes receiving CTS packets will back off
until the transmission is finished, either by timeout
or by receiving the corresponding ACK packet.
Why all these hoops to jump through? Because collisions cannot be detected directly, the nodes have to infer that a collision
occured somehow. If the next packet in the sequence didn't turn up, it's a fair bet that it collided, and the node can take appropriate action. Collided packets cause exponential backoff
, in the same way as a collided packet would in CSMA/CD. Waiting for a CTS greatly reduces the risk of collision of the data packet, but don't completely eliminate it - if a node is in transmit mode, it can't receive the control packets, and won't back off.
CSMA/CA is used in appletalk
, and more recently in 802.11b