MAC 프레임 구조¶
규격 · 개정판
802.11-2024 Clause 9.2 (MAC 프레임 형식), 9.2.4 (필드: Frame Control, Duration/ID, 주소, Sequence Control, QoS Control, HT Control) · HT Control 변형: 11n (HT), 11ac (VHT), 11ax (HE A-Control), 11be (EHT 확장)
한눈에 보기
모든 802.11 프레임은 헤더 + 본문 + FCS로 이루어집니다.
- Frame Control: 이 프레임이 무엇인지(관리/제어/데이터), 어느 방향인지, 암호화했는지
- Duration: "이 교환이 끝날 때까지 매체를 몇 µs 더 쓴다" — 다른 STA는 이 값으로 조용히 기다림(NAV)
- 주소 최대 4개: 이더넷과 달리 수신자·송신자 외에 최종 목적지·원래 출발지를 따로 적음
- Sequence Control: 재전송 중복 제거와 순서 맞추기용 번호
- QoS Control / HT Control: 우선순위, Block Ack 정책, 링크 적응 정보
- FCS: CRC-32 오류 검사
일반 프레임 형식¶
| 필드 | 옥텟 | 존재 조건 |
|---|---|---|
| Frame Control | 2 | 항상 |
| Duration/ID | 2 | 항상 (PS-Poll에서는 AID) |
| Address 1 (RA) | 6 | 항상 — 수신자 |
| Address 2 (TA) | 6 | 대부분 — 송신자 |
| Address 3 | 6 | 데이터·관리 |
| Sequence Control | 2 | 데이터·관리 |
| Address 4 | 6 | To DS = From DS = 1 (WDS·메시) |
| QoS Control | 2 | QoS 데이터 프레임 |
| HT Control | 4 | Order 비트 = 1인 QoS 데이터·관리 프레임 |
| Frame Body | 가변 | |
| FCS | 4 | 항상 |
QoS 데이터 프레임의 기본 헤더는 26옥텟(주소 3개 + QoS Control), HT Control이 붙으면 30옥텟입니다.
Frame Control 필드¶
| 비트 | 필드 | 의미 |
|---|---|---|
| B0–B1 | Protocol Version | 0 (PV0). 802.11ah의 PV1 짧은 헤더는 1 |
| B2–B3 | Type | 0 관리, 1 제어, 2 데이터, 3 확장 |
| B4–B7 | Subtype | 비콘(8), 프로브 요청(4), QoS 데이터(8) 등 |
| B8 | To DS | DS 방향으로 가는 프레임 (STA → AP) |
| B9 | From DS | DS에서 오는 프레임 (AP → STA) |
| B10 | More Fragments | 단편화 |
| B11 | Retry | 재전송 프레임 |
| B12 | Power Management | 이 교환 후 STA가 도즈로 들어감 |
| B13 | More Data | AP에 이 STA용 프레임이 더 있음 |
| B14 | Protected Frame | 본문이 암호화됨 |
| B15 | +HTC (Order) | HT Control 필드 존재 (QoS 프레임) |
주소 필드 해석¶
| To DS | From DS | 상황 | Addr 1 (RA) | Addr 2 (TA) | Addr 3 | Addr 4 |
|---|---|---|---|---|---|---|
| 0 | 0 | 관리·제어, IBSS, TDLS | DA | SA | BSSID | — |
| 0 | 1 | AP → STA | DA | BSSID | SA | — |
| 1 | 0 | STA → AP | BSSID | SA | DA | — |
| 1 | 1 | 무선 브리지·메시 | RA | TA | DA | SA |
DA = 최종 목적지, SA = 원래 출발지, RA = 이번 홉의 수신자, TA = 이번 홉의 송신자. A-MSDU를 쓰면 각 서브프레임 헤더에 DA/SA가 따로 있어 주소 해석이 달라집니다.
Sequence Control과 QoS Control¶
| 필드 | 비트 | 의미 |
|---|---|---|
| Fragment Number | 4 | 단편 번호 |
| Sequence Number | 12 | 0–4095 순환. TID별로 따로 셈 |
| QoS Control | ||
| TID | 4 | 트래픽 식별자 0–7 (사용자 우선순위) |
| EOSP | 1 | U-APSD 서비스 구간 종료 |
| Ack Policy | 2 | Normal Ack / No Ack / Block Ack / (암묵적 BAR) |
| A-MSDU Present | 1 | 본문이 A-MSDU |
| TXOP Limit / Queue Size 등 | 8 | 상황에 따라 의미가 다름 (11ax는 버퍼 상태 보고에 활용) |
HT Control 변형¶
| 변형 | 구분 | 담는 정보 |
|---|---|---|
| HT variant | B0 = 0 | 링크 적응(MCS 요청·피드백), 보정 |
| VHT variant | B0 = 1, B1 = 0 | MCS 피드백(MFB), 그룹 ID |
| HE variant (A-Control) | B0 = 1, B1 = 1 | 여러 Control 하위 필드를 이어 붙임: TRS, OM, HLA, BSR, UPH, BQR, CAS 등 |
11ax의 A-Control은 데이터 프레임 헤더 4옥텟 안에 "버퍼에 몇 바이트 있음(BSR)", "앞으로 수신 대역폭을 이렇게 바꿈(OM)", "트리거 없이 이 RU로 응답해(TRS)" 같은 신호를 실어, 별도 관리 프레임 없이 AP와 STA가 빠르게 정보를 주고받게 합니다. 11be는 EHT OM 등 Control ID를 추가했습니다.
전문가 노트 — Duration/ID 계산과 실무 포인트
Duration 계산. 단일 데이터 프레임의 Duration = SIFS + ACK 시간입니다. TXOP 안에서 여러 프레임을 보낼 때는 TXOP 끝까지 남은 시간을 넣고, RTS는 CTS + 데이터 + ACK + SIFS 3개를 합쳐 넣습니다. 값의 최대는 32 767 µs입니다. 비트 15가 1이고 14가 0이면 Duration이 아니라 AID(PS-Poll)를 뜻합니다.
Sequence Number 공간. 12비트 = 4096개입니다. Block Ack 윈도(11be는 1024)는 이 공간의 절반 미만이어야 모호성이 없습니다. 11be의 1024 윈도가 사실상 상한인 이유입니다.
MLO와 주소. Wi-Fi 7 MLD 간 데이터 프레임은 링크별 MAC 주소(RA/TA)로 공중에 보내지만, 상위 계층·암호화(AAD, nonce)·Block Ack 합의는 MLD MAC 주소 기준입니다. 그래서 MLD 데이터 프레임의 Address 3 해석과 암호화 nonce 구성 규칙이 11be에서 새로 정의되었습니다. 캡처 분석 시 같은 MSDU가 다른 링크에서 재전송되면 TA는 바뀌어도 시퀀스 번호는 같습니다.
Wireshark 팁. wlan.fc.type_subtype으로 걸러 보고, 모니터 모드 캡처에서 FCS 오류 프레임은 wlan.fcs.status == "Bad"로 구분합니다. Radiotap 헤더의 MCS/VHT/HE/EHT 필드가 해당 프레임의 PHY 정보입니다.