How does a network determine which transmitter gets to transmit? The wireless medium is inherently broadcast.

Contention-Based Protocols

  • ALOHA: The rule is that if you have data, send it.
    • Two simultaneously transmissions can collide and be lost. So after waiting a duration of time, send it again.
  • Slotted ALOHA: Split time into synchronized “slots”. Any device can transmit whenever it has data, but it can only transmit at the start of a slot and its transmission cannot be longer than a slot.
    • Low throughput.
  • CSMA/CA: Carrier Sense Multiple Access with Collision Avoidance
    • First listen for a duration and determine if anyone is transmitting. If idle, transmit. If busy, wait and try again.
    • “Listen before send”
    • Can be combined with slotting.
    • There can be a hidden terminal so that both transmitters never detect each other’s transmissions. A partial solution would be to send a Request to Send (RTS).
    • The receiver will send a Clear to Send (CTS) to only one node at a time.

Contention-Free Protocols

The goal is to split up communication such that devices will not conflict. We can predetermine this or have it be reservation-based.

  • Very efficient at creating a high-throughput network
  • FDMA: Frequency Division Multiple Access
    • Split transmissions in frequency.
    • Technically, each device uses a separate, fixed frequency. This is how RF channels works (in bands).
  • TDMA: Time Division Multiple Access
    • Split transmissions in time such that devices share the same channel
    • Splits time into fixed-length windows
    • Requires synchronization between devices
  • CDMA: Code Division Multiple Access
    • Split transmission in “codes”
    • Think of it as multiple speakers in the same room in different languages. Then a receiver can ignore the ones it does not understand
    • Requires everyone to speak the same volume

Capture Effect

Two packets at once is not always a loss. We can see the difference in amplitude and detect either.

Hidden Terminal Problem

In CSMA/CA, two devices wanting to contact another device may not see each other. Thus they will not have complete information if they can send or not. For example,

           [Node A's Range]               [Node C's Range]
          ,----------------.            ,--------------.
         /                  \          /                \
        /                    \        /                  \
       |   (A)  SENDER       |_______|   (C)  SENDER     |
       |    |                |       |    |              |
       |  Can't see C        |  (B)  |  Can't see A      |
       |  Hears 'Free'       | RECE- |  Hears 'Free'     |
       |                     | IVER  |                   |
       |   Sends -> B        | (AP)  |   Sends -> B      |
        \      ^             |       |      ^           /
         \_____|____________/_______/______|__________/
               |                ||         |
               |                ||         |
          [Transmits]      COLLISION  [Transmits]
                          (Data Loss)

Awesome ASCII Venn Diagram!