MAC Frame Format - Field Reference
Every 802.11 frame starts with the same MAC header structure. Understanding each field - what it contains, when it is present, and what it controls - is the core of CWAP certification and PCAP-level protocol analysis.
Three categories of 802.11 PCAP mistakes appear consistently: wrong BSSID in the filter, wrong address field for the traffic direction, and misreading the ToDS/FromDS bits. All three trace back to one thing - not having the MAC header fields memorised.
wlan.fc.type == 0Management frames only. Start here for any association or auth failure.wlan.fc.type == 2Data frames only. Check ToDS/FromDS bits to determine traffic direction.wlan.fc.tods == 1 && wlan.fc.fromds == 14-address frames (WDS / 802.11s mesh). Both bits set.wlan.fc.retry == 1Retransmissions. High count = RF problem, driver issue, or hidden node.wlan.fc.protected == 1Encrypted frames (CCMP/GCMP active). If data frames show protected=0, encryption failed.wlan.seq == 1234Specific sequence number. Substitute actual value to track duplicate detection.General MAC Frame Structure
Minimum frame: FC(2) + Duration(2) + Addr1(6) + FCS(4) = 14 bytes (CTS, ACK control frames). Typical management frame: FC + Duration + Addr1 + Addr2 + Addr3 + SeqCtrl + Body + FCS = 24B header + variable body. Maximum: 4-address QoS+HTC data frame with A-MSDU body.
Frame Control - 16-bit Breakdown
All MAC Header Fields
Address Field Modes - ToDS + FromDS
The meaning of each Address field changes based on the ToDS and FromDS bits. This is one of the most commonly misunderstood aspects of the 802.11 MAC header.
| ToDS | FromDS | Addr 1 | Addr 2 | Addr 3 | Addr 4 | Use case |
|---|---|---|---|---|---|---|
| 0 | 0 | DA (Destination) | SA (Source) | BSSID | — | IBSS (ad-hoc) data frames; Management frames in infrastructure mode |
| 0 | 1 | DA (Destination) | BSSID | SA (Source) | — | AP → STA (downlink). AP is distributing from DS to STA. |
| 1 | 0 | BSSID | SA (Source) | DA (Destination) | — | STA → AP (uplink). STA sends to AP for forwarding into DS. |
| 1 | 1 | RA (Receiver) | TA (Transmitter) | DA (Destination) | SA (Source) | WDS bridge / 802.11s Mesh. 4-address frame for inter-AP or inter-mesh-node forwarding. |
In a typical infrastructure BSS, most frames are ToDS=1/FromDS=0 (uplink) or ToDS=0/FromDS=1 (downlink). Management frames use ToDS=0/FromDS=0 - the BSSID goes in Addr3, regardless of which device sends them. Mesh and WDS frames are the only frames with Addr4 present.
Sequence Control - Duplicate Detection
Receiver detects duplicates by checking: if Retry bit is set AND Sequence Number + Fragment Number match a recently seen frame → discard as duplicate. Without the Retry bit alone the receiver cannot tell if the same sequence number is a retransmission or a new frame with wrapped counter.
Wireshark Filters
wlan.fc.type == 0 wlan.fc.type == 1 wlan.fc.type == 2 wlan.fc.protected == 1 wlan.fc.retry == 1 wlan.fc.pwrmgt == 1 wlan.fc.tods == 1 && wlan.fc.fromds == 1 wlan.fc.tods == 1 && wlan.fc.fromds == 0 wlan.fc.tods == 0 && wlan.fc.fromds == 1 wlan.fc.type_subtype == 0x28 wlan.seq == 1234 wlan.fcs.status == "Bad"