---
title: 'Physics of Wireless Transmission'
source: 'https://academia.sh/en/courses/wireless-and-security/physics-of-wireless-transmission'
course: 'Wireless Networks and Network Security'
language: en
updated: '2026-08-17T18:07:23+00:00'
license: 'CC BY-SA 4.0'
---

# Physics of Wireless Transmission

In wireless, the link is not binary but a graded curve: in a forty-client setup, of the 27 clients inside a thirty-meter cell only 9 run at full rate tier, 14 drop to lower tiers, and 4 cannot associate at all.

The Switching and Routing course counted seventeen separate disagreements, and in every one of
them accepted a single thing without asking: if a cable connects two devices, the frame leaving
that cable reaches the other end. The link either exists or it does not. No third state besides
breakage was ever considered; if the tables disagree the packet goes to the wrong place, but on
its way to where it should go, it is never lost.

In wireless this acceptance falls away. The medium belongs to no one, its boundary is not
drawn, and transmission is not a certainty but a probability. A client's link is not "present"
or "absent"; it is a **curve** — it falls with distance, drops with interference, descends in
tiers, and reaches zero somewhere. This course's question is born right here: **what is the gap
between the boundary the design intends and what actually gets through?** This lesson builds the
wireless half of that gap and measures its most counterintuitive result: being inside the cell
is not the same as working.

## The Shared Medium

In a wired link the transmission medium is split between two ends: whichever side plugs in the
cable uses it. In wireless the medium is **shared** and there is no record of who is using it.
Every transmitter broadcasting in the same frequency range is noise to every receiver listening
on that range — it makes no difference whether the transmitter belongs to the same network.

For this reason the usable frequency range is split into a **band**, and the band is divided
into **channels**. Two neighbors broadcasting on the same channel directly corrupt each other;
two broadcasts on adjacent channels can also bleed into each other from spillover. A channel
plan's job is to make sure that two access points close enough to hear each other do not land on
the same channel.

The table below is the **fictional** band layout this lesson uses. Real frequency allocations
vary from country to country, are updated by regulatory decisions, and affect nothing this
lesson measures; the numbers here are chosen only to show the shape of channel planning.

```text
# taught band layout , fictional and not executed

band N (narrow)  : 8 channels, channel width 1 unit
                   non-overlapping channel set: 1, 4, 7  (three channels)
                   range coefficient high, tier ceiling low

band W (wide)    : 24 channels, channel width 1 unit
                   non-overlapping channel set: all 24 channels
                   range coefficient low, tier ceiling high

bonding          : four channels in band W can bond into one 4-unit channel
                   -> 6 non-overlapping wide channels, tier ceiling doubled
```

The narrow band has only three non-overlapping channels; a fourth access point inevitably
reuses a neighbor's channel. The wide band has channels to spare, but range is short. This
trade-off will be measured in later lessons of the course; here only where interference comes
from is being established.

The effect of channel and band width on the transport layer was established in the Network
Models course; it is not repeated here. That a shared medium produces collisions is not new
either — the Switching and Routing course's first lesson counted this on the hub. **Where this
lesson departs is the measure itself:** there, what was measured was the number of colliding
frames; here, what is measured is in how many clients, and in **which two directions**, the
design's promise diverges.

## Signal Strength

What the receiver sees is called **signal strength**, and two things bring it down: distance
and interference. This lesson combines the two on a single fictional scale.

$$
\text{signal} = \text{power} - \text{distance} - \text{interference}
$$

Here `power` is the access point's signal budget, `distance` is in meters, and `interference`
is the contribution from neighbors using the same channel at that client's location. All three
are fictional units.

In real propagation, attenuation is not a linear function of distance; walls, reflections, and
bodies each take their own share. The linear form here is a **fiction** chosen to keep the
measurement readable, and all of this lesson's claims live inside that fiction. The one thing
the fiction carries is this: signal strength is a continuous quantity, and it drops for two
independent reasons.

## Rate Tiers

Even though signal strength is continuous, transmission is not. Based on the signal strength it
measures, the transmitter picks a **rate tier**: a dense modulation when the signal is high, a
more resilient but slower modulation as it drops. Tier transitions are threshold-bound.

| Signal strength | Rate tier | Meaning |
|---|---|---|
| 34 and above | 6 | full rate |
| 28 – 33 | 4 | one tier down |
| 22 – 27 | 2 | two tiers down |
| 18 – 21 | 1 | lowest tier |
| below 18 | 0 | cannot associate |

The last row is a separate threshold. When signal strength drops below 18, even the most
resilient modulation does not hold, and the client cannot **associate**. Association is the
establishment of a link between the client and the access point; until it is established, there
is no network for the client.

The existence of tiers is what separates wireless from a wired link. A wired link either works
or breaks; a wireless link can run **six times slower**, and no connection status indicator
reports this. Indicators show association, not tier.

## The Asymmetric Bond and Shared Time

The calculation above was made for a single direction. In reality every link has two
directions, and the two are not equal. The access point is a mains-powered device with a high
signal budget; the client runs on a battery and its budget is low. The result is an
**asymmetric link**: the client may hear the access point while the access point does not hear
the client. On the user's side the network is visible, sits in the list, can be selected — and
association never forms. Because this lesson measures a single direction, it does not put a
number on the asymmetry; but this is the source of the "I can see the network but cannot
connect" symptom, and it does not look like a coverage problem.

The second difference is that the medium is **half duplex**. While a transmitter is
broadcasting, its own transmission fills its own receiver; it cannot hear anyone else
broadcasting at the same time. In a wired link, collision is **sensed** — the sender listens to
the signal and sees the corruption. In wireless it cannot be sensed, so the mechanism is built
on **avoiding** collision rather than detecting it: the transmitter listens to the medium, and
if it finds it idle, waits a further random interval before starting to transmit. There is no
referee for who uses the medium; order is born from the waiting itself.

When these two facts combine, the measured effect of a tier drop multiplies. A client at tier 1
holds the medium **six times** as long as a client at tier 6 to carry the same data; this
follows directly from the definition of the tier numbers. Because the medium is shared, everyone
in the cell waits for that entire span. A single slow client at the cell's edge slows down every
fast client at the center. In the measurement, clients that drop to lower tiers do not just lose
their own share; they diminish everyone else's too.

## The Design's Promise

The promise made when a wireless network is designed is a radius: "the client inside the
thirty-meter cell runs at full rate." This promise is the course's **intent**, and it is the
measurement's **oracle**. Because we write the fiction ourselves, we know every client's real
distance; what the intent means is beyond dispute.

The medium's answer, on the other hand, is a separate function: can the client associate?
Comparing the two produces four outcomes, and the whole course counts this foursome.

- **Correct admit** — intent would admit, the medium admitted.
- **Correct deny** — intent would deny, the medium denied.
- **False admit** — intent would deny, the medium admitted. A client outside the cell
  associated.
- **False deny** — intent would admit, the medium denied. A client inside the cell could not
  associate.

**The two directions are counted separately.** A measurement that counts only false admit
cannot see where coverage falls short; one that counts only false deny cannot see leaking
coverage. Throughout the course both stand side by side in every table.

The measurement's assumptions:

- **WN1.** Forty clients' distance and the interference they see come from a single generator.
  Distance is in the 5–45 m range, interference in 0–12 units; the oracle is known because we
  produced the fiction ourselves.
- **WN2.** Signal strength is linear, in the form power − distance − interference. This is not
  a propagation model; it is a fiction that keeps the tiers readable.
- **WN3.** There is a single access point, and its signal budget is 52. This lesson does not
  set up another power value; a power sweep is the subject of the channel planning lesson.
- **WN4.** The cell radius is 30 m, and intent looks only at distance. Intent does not see
  interference — the design does not know what neighbors will do when it makes its promise.
- **WN5.** The tier thresholds are 34, 28, 22, and 18; 18 is also the association threshold.
  The medium's decision is read as `rate_tier > 0`, which is association itself.
- **WN6.** The set is forty clients; the smallest measurable difference in this set is
  **1/40 = 0.025**. A difference smaller than this is not defended by this measurement.

## Measurement

```python
"""Physics of wireless transmission: signal strength, rate tier, and the cell's promise."""
SEED = 20260811
POWER = 52           # access point's signal budget, fictional unit
RADIUS = 30          # cell radius the design promises, meters
TIERS = ((34, 6), (28, 4), (22, 2), (18, 1))   # (signal threshold, rate tier)


def generator(seed):
    d = seed % 2147483646 + 1

    def r(n):
        nonlocal d
        d = (d * 48271) % 2147483647
        return d % n
    return r


def clients(count=40, seed=SEED):
    r, pool = generator(seed), []
    for i in range(count):
        pool.append({"no": i + 1, "distance": 5 + r(41), "interference": r(13)})
    return pool


def signal(c, power=POWER):
    return power - c["distance"] - c["interference"]


def rate_tier(c, power=POWER):
    for threshold, tier in TIERS:
        if signal(c, power) >= threshold:
            return tier
    return 0


def cell_intent(c, radius=RADIUS):
    """The design's promise: the client inside the cell runs at full rate."""
    return c["distance"] <= radius


def medium(c, power=POWER):
    return rate_tier(c, power) > 0


def gap(events, intent, mechanism):
    d = {"correct_admit": 0, "correct_deny": 0, "false_admit": 0, "false_deny": 0}
    for e in events:
        n, m = intent(e), mechanism(e)
        if n and m:
            d["correct_admit"] += 1
        elif not n and not m:
            d["correct_deny"] += 1
        elif m:
            d["false_admit"] += 1
        else:
            d["false_deny"] += 1
    return d


pool = clients()
print(f"clients {len(pool)} | distance {min(c['distance'] for c in pool)}-"
      f"{max(c['distance'] for c in pool)} m | interference "
      f"{min(c['interference'] for c in pool)}-{max(c['interference'] for c in pool)} | "
      f"inside cell {sum(1 for c in pool if cell_intent(c))}")
print()
print(f"{'tier':>6s} {'clients':>8s} {'lowest signal':>14s}")
for threshold, tier in TIERS:
    k = [c for c in pool if rate_tier(c) == tier]
    print(f"{tier:6d} {len(k):8d} {min((signal(c) for c in k), default=0):14d}")
zero = [c for c in pool if rate_tier(c) == 0]
print(f"{0:6d} {len(zero):8d} {max(signal(c) for c in zero):14d}")
print()

d = gap(pool, cell_intent, medium)
print(f"{'correct admit':>13s} {'correct deny':>12s} {'false admit':>12s} "
      f"{'false deny':>12s}")
print(f"{d['correct_admit']:13d} {d['correct_deny']:12d} {d['false_admit']:12d} "
      f"{d['false_deny']:12d}")
print()

inside = [c for c in pool if cell_intent(c)]
print(f"{'tier inside cell':>17s} {'clients':>8s}")
for tier in (6, 4, 2, 1, 0):
    print(f"{tier:17d} {sum(1 for c in inside if rate_tier(c) == tier):8d}")
print()
print("false deny (no, distance, interference, signal):",
      [(c["no"], c["distance"], c["interference"], signal(c)) for c in inside if rate_tier(c) == 0])
```

```
clients 40 | distance 6-44 m | interference 0-12 | inside cell 27

  tier  clients  lowest signal
     6        9             35
     4        4             30
     2        8             22
     1        2             18
     0       17             17

correct admit correct deny  false admit   false deny
           23           13            0            4

 tier inside cell  clients
                6        9
                4        4
                2        8
                1        2
                0        4

false deny (no, distance, interference, signal): [(4, 24, 11, 17), (12, 30, 6, 16), (25, 30, 12, 10), (32, 30, 7, 15)]
```

## Associating Is Not the Same as Working

The second table distributes forty clients across tiers. **9** clients are at full rate, **4**
are one tier down, **8** are two tiers down, **2** are at the lowest tier, and **17** cannot
associate at all. The total associated is 23.

The third table compares intent with the medium. There are **27** clients inside the cell;
**23** of them associate, **4** cannot. None of the 13 clients outside the cell associate:
**false admit 0**. At this power the boundary does not leak. An audit that looked only at this
column would declare the configuration flawless.

The fourth table gives what that audit cannot see. The tier distribution of the 27 clients
inside the cell is **9, 4, 8, 2, 4**. The design's promise was "the client inside the cell runs
at **full rate**." The number of clients for whom that promise is truly kept is **9** — a third
of those inside the cell. **14** clients associate, but at lower tiers, and **4** cannot
associate at all.

The reading that follows is the course's fourth reading: **the boundary is not binary.** The
distinction between "admitted" and "not admitted" is a coarse reading of the tier sequence. A
configuration can show zero error on this coarse reading while failing to keep two-thirds of the
promise it made.

Where the four false-deny clients sit is instructive too. All four are inside the cell but
close to its edge: their distances are between 24 and 30 m, and the interference they see is
high. Distance alone is not enough — **intent never sees interference at all** (WN4). When the
design draws the cell, it does not know which channel the neighboring access points will
broadcast on; interference is a quantity that appears after the promise has already been made.

This shows why counting the two directions separately is necessary. Leakage is zero, the
shortfall is four. A report that wants a single number will call this configuration either
flawless or flawed; either way it will be wrong.

Four clients' share of a forty-client set is **0.100**. Since the smallest measurable
difference in this set is 1/40 = 0.025 (WN6), four sits comfortably inside the measurement band
and cannot be called noise. A one-client difference, by contrast, is defensible with this set
but weak; this bound will be recalled throughout the course whenever single-client shifts are
interpreted.

## Summary

- In wireless the medium is shared and transmission is not a certainty; the link is not a
  binary state but a curve that falls with distance and drops with interference.
- Signal strength strikes tier thresholds at 34, 28, 22, and 18. The last threshold is also
  the association threshold; there is no network for a client that drops below it.
- In the forty-client fiction at power 52 the tier distribution is **9, 4, 8, 2** and **17**
  unable to associate; the total associated is 23.
- In the same configuration **false admit is 0** and **false deny is 4**: the boundary does not
  leak, but it leaves four clients inside the cell out.
- Only **9** of the 27 clients inside the cell are at the full rate tier. Associating is not
  the same as working, and a one-directional audit cannot see it.

## Next Step

This measurement counts the decision a single access point makes on its own: it associates the
client if it hears it, and does not if it does not. In a building, though, there are dozens of
access points, and each one's signal budget, channel, and threshold is a separately given
value. The next lesson measures where that decision is made: does each access point decide by
its own view, or does a shared controller decide? If the same client can get two different
answers from two access points, the owner of the answer is not the client's condition but which
one it happens to land on.
