프롤로그
1주일만에 살아돌아왔다. 아닌가? 죽어있는 게 맞는듯.
이번 글은 802.11의 프레임에 대해서 알아볼 거다. 802.11에서 정한 프로토콜, 어떻게 정의되어있는지, 살펴보고, 물리계층 보단 MAC계층에 대해서 세세하게 정리해볼 예정이다.
802.11 계층
와이파이 계층, 802.11 프레임이라고 검색해서 들어왔기 때문에, 최소한 OSI 7계층이나, TCP/IP 정도까지는 알고 있다라고 생각한다. 그러기 때문에, 이미 네트워크 기본 지식정도는 있다라고 생각하고 자세한 설명은 생략한다.
먼저 TCP/IP를 생각을 해보자.
계층이 어떻게 되어있었나?
- 5. 응용 계층
- 4. 전송 계층
- 3. 네트워크 계층
- 2. 이더넷 계층
- 1. 물리계층
이렇게 나뉘어 있지 않았는가?
OSI 7계층은????
- 7. 응용 계층
- 6. 표현 계층
- 5. 세션 계층
- 4. 전송 계층
- 3. 네트워크 계층
- 2. 데이터 링크 계층
- 1. 물리 계층
이렇계 계층이 나뉘어져 있다.
그렇다면 Wi-Fi, 즉 802.11도 위 두 계층 처럼 정의되어있는 계층 구조가 있지 않을까????
802.11은 TCP/IP나 OSI처럼 전체 계층 구조를 정의하는 모델은 아니다. 대신 네트워크 통신에서 하위 계층에 해당하는 부분만을 담당한다.
즉, 이 말뜻은
- 물리계층(Physical Layer)
- 데이터 링크 계층(Data Link)
을 정의하는 표준인 셈이다. 즉, 802.11은 독립 적인 계층 구조를 가지는 것이 아니라, 기존 네트워크 계층 모델에서 하위 계층(L1, L2)을 구현하는 기술 표준이라고 생각하면 된다.[아 물론 엄밀하게 자세히 들어가면 살짝 다르긴 한데, 딱 이정도에서만 이해하자]
그리고, 이 물리계층, 데이터링크 계층을 조금 더 세부화하면 802.11 계층이 보일 것이다.
세분화 했을 때 나온 계층을 부계층이라고 부른다. 부계층은 하나의 계층을 더 작은 기능으로 나눈 것 뿐이다.
그래서 최종적으로 전체적인 계층을 정리하면 다음과 같이 된다.

OSI든 TCP/IP든, 결국엔 상위계층에서 하위 계층으로 내려가면서 점점 캡슐화가 진행된다. 상위 계층에서 내려온 데이터를 SDU(Service Data Unit)라고 하고, 거기에 자신이 헤더를 붙여서(PCI, Protocol Control Information)) 나온 데이터인 PDU(Protocol Data Unit)를 만들어 하위 계층에 내려보낸다.
이 방식은 802.11에서도 똑같이 적용된다. LLC 부계층에서 나온 데이터는 MSDU(Mac Service Data Unit)이고, MAC계층으로 내려간다.
그리고 MAC부계층에서 자신의 헤더를 붙여서 MPDU를 생성한다. 그 MPDU 데이터가 PLCP로 내려가면, PSDU가 된다. 이렇게 하나의 데이터가 계층을 내려가면서 MSDU -> MPDU -> PSDU와 같은 형태로 이름과 구조가 바뀌며 캡슐화가 진행된다. 그러면 PLCP가 그러면 최종적으로 자신의 프레임을 다 만들면??? PPDU가 된다.
PPDU는 이제 전송 준비가 완료된 패킷으로,
PMD는 이 PPDU를 받아서 실제 무선환경에 신호를 전파한다. 이 신호에 대해서는 OFDM막...여러가지 얘기는 언젠가 시간될 떄 풀어볼 수 있으면 풀어보겠다.
그럼 이제 세세하게 들어가보자.
윗 부분 이해가 안 가면 OSI 7계층, TCP/IP 5계층 캡슐화에 대해서 다시 공부하고 오면 이해가 될 것이다.(절대 내 설명이 부족한 게 맞음)
물리 계층
802.11 물리 계층은 디지털 데이터를 ODFM 등의 방식으로 변조하여 무선 신호로 변환하고, 이를 공기중으로 송수신하는 계층이다. 즉, 상위계층에서 내려온 데이터(실제로 보내질 데이터)를 실제 전파 신호로 바꾸어 전달하는 역할을 담당한다.
무선 통신은 주파수, 사인파, 변조 같은 개념을 기반으로 동작하지만, 이는 물리 계층의 세부 구현 영역에 해당하므로 여기서는 다루지 않는다. 핵심은 데이터를 전자기파 형태로 변환하여 실제로 전송하는 계층이라는 점이다.
그래서? 지금 여기서는 자세히 다루지 않는다. NIC(Network Interface Card)에서 내보내고 보내주고, 신호를 변조/복조 등을 전부다 하드웨어 수준에서 수행되기 때문에, 생성되는 실제 신호는 일반적인 환경에서 직접적으로 관측하기는 어렵다.
예를 들어, Wireshark와 같은 도구에서는 이미 NIC에서 처리된 이후의 MAC 계층 데이터만 확인할 수 있으며, 물리 계층 신호 자체는 확인할 수 없다. 물리 계층 신호를 분석하려면 USRP와 같은 SDR 장비를 이용해 신호를 직접 수집하고, MATLAB 등의 도구로 분석해야 하는데, 이게 가격이 장난아니게 비싸다.(몇천만원~)
그래서 물리계층 신호 처리 과정 이거 다 넘어가고, 개념적인 내용만 적고, 바로 MAC계층으로 넘어가겠다.
이러한 물리 계층은 내부적으로 두 개의 부계층으로 나뉜다.
(글 좀 다듬을려고 지피티 넣어서 다듬게 시켰는데, 공기에 뿌린다 --> 전자기파 형태로 변환하여 ... 등으로 글 수정해주는데, 내가 너무 천박하게 말하는 거 같기도...)
PMD 부계층
여기는 할 말 없다. 여기가 진짜 방금 위에서 설명한 물리계층의 진짜 역할인셈이다. 디지털 비트 0, 1 , 0, 1 을 실제 사인파로 변환하여 외부 공기에 전파하는 역할이 여기다. OFDM, DSSS , RF송신 및 수신 처리가 나오는데, 이거 다루는 데에는 실제로 한 세월 걸리기 떄문에 그냥 이런게 있구나 생각하면 된다.
정리하면
비트를 전파로 바꾸는 가장 아래 단계
PLCP 부계층
어디서 정의했더라...802.11 물리계층 내 부계층이라고 한 줄 정의한 곳도 있고, 논리적인 802.11 MAC 부계층과 물리적인 특성의 PMD 부계층을 연결하는 역할...이라고 소개하는 곳도 있었다.
결국엔 물리계층은 데이터를 신호로 변환해서 전달해야하는데, 그 신호 전달할 때 필요한 정보가 있다. 신호 세기는 어떻게 보낼 것이며, 신호로 변환할 때 비트 몇 개를 하나의 신호에 담을 것인가 등에 대한 정보를 붙여줘야(데이터 속도) 등에 대한 정보를 PMD에 전달이 되어야 PMD가 정상적으로 그거에 맞춰서 전달할 수 있다. 이런 것들을 결정해서 어떻게 보낼지 결정해주는 게 PCLP 부계층이다.
아주 간단한 예시를 들면, 1개의 파동에 비트 1개를 넣어서 보내는 것과, 비트 4개를 넣어서 보내는 것은 속도가 4배 차이가 날 것이다. 근데, 4개를 넣어서 보내면 그만큼 오류가 높아진다.
현재 무선 채널 상태가 어떠한지(비가와서 , 아니면 옆에서 EMP쏴서 무선 공기 채널 상태가 별로 좋지 않으면 오류를 줄이기 위해 비트 1개만 보내고(속도가 빠르지 않음), 아주아주 깨끗한 공기면 비트를 신호에 많이 보내서 속도를 빠르게 보낸다(빨리 보내도 채널 상태가 좋기 떄문에 오류가 그렇게 높아지지 않기 때문).
정리를 하면, 이 PCLP 부계층은, 실제 전송에 필요한 다양한 물리 계층 정보를 구성하는 단계이다.
그 예시로
- 전송 속도(Modulation & Coding Scheme, MCS)
- 데이터 길이
- 변조 방식
등이 있고, 이러한 정보를 포함한 Preamble과 Header를 생성하여 MPDU를 감싸고, 최종적으로 PPDU를 구성한다.
MAC계층에서 내려온 MPDU앞에 Preamble + Header에 정보를 넣어서 붙인다음에 나온 결과(PPDU)를 PMD에 전달하기 때문에
물리적인 802.11 MAC 부계층과 물리적인 특성의 PMD 부계층을 연결하는 역할
이라고 하는 것이다.
http://www.ktword.co.kr/test/view/view.php?no=3404
PLCP 프레임 포멧
PLCP Frame format, PLCP Header PLCP 프레임 포멧, PLCP 헤더(2025-08-10)802.11 PLCP 프레임, Short Training Symbol, Long Training Symbol 1. PLCP 부계층의 프레임 포멧 특징 ㅇ 무선 LAN 표준인 802.11 물리계층 내의 부계층
www.ktword.co.kr
포멧은 이렇게 되는데 나는 넘어가겠다.
결국엔

위처럼 구성이 되는 것이다.
데이터 링크 계층
여기는 같은 네트워크 내에서 신뢰성 있게 데이터를 전달하기 위한 계층이다.
물리계층은 진짜 단순히 신호만 보낸다. 근데 다른 STATION(단말기) 들도 똑같이 신호를 보낼 거고, 공유기는 그 각각에서 오는 신호들을 다 처리해서 다시 신호를 보내줘야하는데, 무지성으로 물리계층에서 신호만 보내버리면 충돌도 발생할 거고, 손실도 발생할 거고, 누가 보냈는지도 모르게 된다.
그러니까 이제, 누가 , 언제, 어디에서 , 어떻게 보냈다라는 정보가 필요한데, 그 정보를 넣어주는 곳이 바로 이 데이터 링크 계층이다. 그니까? 서로 통신을 잘 주고받을 수 있도록 처리해주는 역할이라는 의미이다.
그 데이터 링크 계층도, 802.11에서는 MAC 부계층과 LLC 부계층으로 나뉜다. 그리고 여기 계층이 양이 무지게 많다. 지루할 예정이다. 나도 공부하면서 오래걸렸다.
차근차근 가보자.
MAC 부계층
MAC 부계층은 공유된 무선 채널에서 언제, 누구에게, 어떻게 데이터를 보낼지 제어하는 계층이다.
즉, 기능들을 수행해서 통신을 가능하게 만드는 것이다.
이 계층의 역할에 대해서 찾아서 여러 군데 돌아다니면서 보면, 크게 2가지로 설명한다.
- 1. 스테이션 서비스 : 스테이션 사이의 교신에 필요한 정보를 제공한다
- 2. 분배 서비스 : AP제공, MSDU 전달 분배기능
그리고 기능(HOW? 무엇을 가능하게 하느냐)에 대해서는 크게 아래 4가지로 소개된다.
- 1. Framing(프레임화) : 데이터를 구조화 한다
- 2. Channel Access(매체 접근 제어) : 언제 보낼지를 결정한다
- 3. Addressing(주소 제어) : 누구에게 보낼 지 결정한다
- 4. ETC.(기타) : 신호 감지, 오류 검출, 절전등을 수행한다.
기능을 보면, 언제, 누구에게 를 각각 2, 3번의 내용을 1번처럼 구조화해서 기타정보를 포함해서 보낸다.
그렇게 이 기능들을 통해서 무선 환경에서 충돌 없이, 올바른 대상에게 데이터를 전달 가능하게 만든다.
그럼 역할은??
스테이션 서비스는 단말 간 직접 통신을 가능하게 만든다.(사실, 직접 통신보다는 단말 A - 단말 B 사이에 AP가 껴서 중계해주는 역할이긴 하다)
그리고 분배 서비스는 AP가 중심 네트워크로써, 데이터가 올바른 방향으로 전달되도록 하는 역할을 수행한다.
저 역할을 수행하기 위해 있는 기능들. 이렇게 알아두면 좋을 것 같다.
그러면, 방금 언제(접근 제어), 누구에게(주소 제어)에 대한 내용을 프레임화해서 보낸다라고 했는데 저 프레임을 자세히 하나하나 알아보자.(지금 여기에 쓰면 소제목의 소제목의 소제목으로...너무 들어갈 거 같아서 밑에 추가로 정리하거나 새로운 글 파서 거기다가 정리하겠다) pcap을 통해서 패킷을 뜯어보든, 패킷 변조를 하던, 어쨌거나 패킷을 해석할 수 있어야 무엇인가를 시도할 수 있다. 그러니까 알아야한다.
모든 것을 자세히 알면 좋을 수 있으나, 간단한 실험이나 특정 부분만 알고 싶으면 거기만 찾아서 보면 될 것 같다.
LLC 부계층
LLC 부계층은 상위 계층(IP 등)과 MAC 계층을 연결해주는 인터페이스 역할을 하는 계층이다.
이게 정의긴한데....
TCP/IP 계층에서도 이더넷 계층에서는 출발 MAC주소, 도착 MAC주소, 이더타입 이렇게 구성되어있었을텐데, 맥 계층에서는 이더타입에서 위 IP계층이 IPv4인지 IPv6인지 구분을 해줬다.
2025.12.26 - [네트워크] - [VPN-2] pcap을 이용한 ethernet과 MAC 패킷 프로그래밍
[VPN-2] pcap을 이용한 ethernet과 MAC 패킷 프로그래밍
프롤로그VPN을 만들기 위해서 여러 가지 방법이 존재할 수 있다.어쨌거나, 내가 블로그를 작성하면서 직접 구현해 보려고 하는 VPN은 Remote Access VPN기능이 되겠다.netfilter를 이용한다면 IP계층부터
taesan-smj.tistory.com
얘도 똑같다. MAC은 누구에게 보낼지만 알려준다면, 어떤 상위 프로토콜인지 구분해주는 이더타입같은 존재가 필요한데, LLC 부계층에서 해당 역할을 해준다.
LLC는 다음과 같이 구분된다
- DSAP : 목적 프로토콜
- SSAP : 출발 프로토콜
- CONTROL : 제어 정보
근데 여기에 SNAP으로 IPv4, IPv6, ARP등을 구분한다.
결론은, 이 LLC가 조용한...이더넷 계층에서 이더타입을 하는 개념이라고 짧게 이해하면 될 것 같다.
단, 802.11 MAC에는 이더 타입이 없다. 그 역할을 LLC/SNAP가 해주는 것이다!
802.11 MAC 프레임
자, MAC 부계층에서, 주소 제어나 접근 제어를 프레임을 만들어서 수행한다고 언급하였다.
프레임을 만든다고 했는데, 지금부터는 그 프레임에 대해서 알아볼 것이다. 여기가 하이라이트 부분이다.

결국은 이 모든 것을 이해하고 알아야 하는 건데, 그냥 단순히 보면 재미없다.
그걸 견뎌야한다.
이걸 조금이나마 읽는 사람들이 공부할 때 편했으면 좋겠어서 천박한 말투로나마 재미있게 공부했으면 좋겠다라는 생각에 해당 글을 적는다.
일단은, 맨 윗줄의 Preamble, PLCP Header는, 아까 물리계층에서 PLCP 부계층이 만들어서 붙여주는 거니까 pass.
MAC 부계층에서 MAC PDU(MPDU)를 구성해주어야하는거니까, 그 2번째 영역부터 보면 된다.

이렇게 구성되어 있는 거 하나하나 알아볼 거다.
MAC 프레임의 종류
다른 곳 보면, MAC 프레임의 종류는 3가지가 있다.
1. 관리 프레임
2. 제어프레임
3. 데이터프레임
이렇게 나오는데, 이게 내가 돌머리라서 그런지, 맥 프레임이 3개??? 이 맥 계층을 이해 못하고 그냥 프레임의 종류가 3개다라고 이해하고 보니까 뭔가 굉장히 꼬였던 기억이 있다.
프레임 구조가 완전히 다르다라기 보다는 같은 기본 구조 안에서 역할과 포함되는 필드가 달라지는 것에 가까움으로 기초부터 차근차근 공부해나가다 보면 자연스레 이해할 수 있게 될 것이다.
이 구분은 MAC 프레임의 첫번째 구간인 Frame Control에서 결정된다.
그래서 이 프레임에 대한 추가적인 내용은 밑에 Frame Control 에서 Type부분과 SubType을 보면 된다.
제목 걸어두긴 했는데, 티스토리가 3번째 제목까지 보여줄 지는 모르겠다.
Frame Control

지금 노란색으로 칠해져 있는 영역이다.
위 네모칸에서, MAC 프레임 종류 3개가 있다라고 했는데, 그 타입을 구분해주는 역할을 수행한다.
2바이트로 이루어져있으며(16비트), 각 비트마다 중요한 정보를 담고 있다.

Frame Control 2바이트를 비트단위로 각각 쪼개서 살펴보자.
| Protocol Version (2bit) | 802.11 프로토콜 버전 |
| Type (2bit) | 프레임 종류 (Management / Control / Data) |
| Subtype (4bit) | 세부 프레임 유형 |
| To DS | Distribution System 방향 |
| From DS | Distribution System 출발 여부 |
| More Fragments | 추가 프레임 존재 여부 |
| Retry | 재전송 여부 |
| Power Management | 절전 모드 여부 |
| More Data | 추가 데이터 존재 여부 |
| Protected Frame | 암호화 여부 |
| Order | 순서 관련 |
조금 더 상세히 하나하나씩 살펴보자.
Protocol Ver. (2비트)
802.11의 프로토콜의 버전을 의미한다. 2바이트나 차지하지만, 지금 802.11 표준에서는 0으로 설정되어 있다. 즉, 실제 분석에서는 거의 의미없는 필드이다.
Type (2비트)
이 2비트에서 프레임의 종류가 결정된다.
이 필드에서 해당 프레임이 어떤 종류인지 결정된다.
802.11 MAC 프레임은 크게 다음 세가지로 구분된다.
- 관리 프레임 (Management Frame)
- 제어 프레임(Control Frame)
- 데이터 프레임(Data Frame)
2비트로 표현할 수 있는 숫자의 개수는 00, 01, 10, 11 이렇게 4개 이므로, 2비트는 있어야 3가지 종류를 표현할 수 있어서 Type 필드가 2비트를 차지하는 것이다.
각 프레임별로, 서브타입이 존재하여 세부 내용이 적혀있다.
| 프레임 종류 | Type Number | 서브타입 종류 |
| 관리 프레임 | 00 | 14종 |
| 제어 프레임 | 01 | 11종 |
| 데이터 프레임 | 10 | 15종 |
0 = 관리 프레임. 1 = 제어 프레임, 2 = 데이터 프레임인데, 0b11인 3은 무엇을 의미하나? 아직 결정된 건 없다. 흔히 예약되어있다(reserved)라고 하는데, 이건 나중에 확장할 때 쓸 거니까 건들지 말라는 의미이다. 찜해둔거다.
즉, 2비트는 총 4개의 상태를 표현할 수 있으며, 이 중 3개(Management, Control, Data)가 실제 프레임 타입으로 사용되고, 나머지 1개(11)는 향후 확장을 위해 예약(reserved)되어 있다.
Subtype(4비트)
방금 위에서 MAC계층은 3개의 타입이 있고, 각각 관리, 제어, 데이터를 나타낸다고 했다. 그리고 각각 별로 14종, 11종, 15종의 서브타입이 존재한다라고 하였다. 최대 16개니까 0000 ~ 1111까지 총 16개를 표현해야한다. 그래서 4비트가 필요한 것이다. 각 프레임별로, 각 비트별로 의미하는 바가 다르다.
먼저 관리프레임이다.
관리프레임은 무선단말과 AP 사이에 초기 통신을 확립하기 위해서 존재한다.
그래서 결합 요청(0000), 재연결 요청과 같은 내용이 있다.
| Subtype (binary) | 10진수 | 이름 | 설명 |
| 0000 | 0 | Association Request | AP 연결 요청 |
| 0001 | 1 | Association Response | AP 연결 응답 |
| 0010 | 2 | Reassociation Request | AP 재연결 요청 |
| 0011 | 3 | Reassociation Response | AP 재연결 응답 |
| 0100 | 4 | Probe Request | 주변 AP 탐색 요청 |
| 0101 | 5 | Probe Response | AP 탐색 응답 |
| 0110 | 6 | Timing Advertisement | 시간 동기 정보 전달 |
| 0111 | 7 | Reserved | 예약 |
| 1000 | 8 | Beacon | AP 존재 알림 |
| 1001 | 9 | ATIM | Ad hoc 모드 알림 |
| 1010 | 10 | Disassociation | 연결 해제 |
| 1011 | 11 | Authentication | 인증 |
| 1100 | 12 | Deauthentication | 인증 해제 |
| 1101 | 13 | Action | 다양한 제어 액션 |
| 1110 | 14 | Action No Ack | 응답 없는 액션 |
| 1111 | 15 | Reserved | 예약 |
여기서 조금 중요하게 봐야할 것은
- Beacon(1000) --> 네트워크 정보 브로드 캐스트
- Probe Request/Response(0100 / 0101) --> 스캔
- Authentication(1011) --> 연결 시작
- Deauthentication --> 연결 끊기
- Action(1101) --> 다양한 제어 액션(이거 해라 라고 보내는 명령 패킷)
정도 일 것 같다.
http://www.ktword.co.kr/test/view/view.php?m_temp1=4898&id=1293
802.11 관리프레임 종류
www.ktword.co.kr
그 다음은 제어 프레임이다.
제어 프레임은 데이터 전송 과정에서 통신 흐름을 제어하고 충돌을 방지하기 위한 보조 프레임이다.
이 제어 프레임이 없으면, 충돌 발생했는지, 전송에 성공했는지, 내가 지금 채널에 데이터를 보내야하는지를 알 수 없기 때문에 필요하다.
| Subtype (binary) | 10진수 | 이름 | 설명 |
| 0000 | 0 | Reserved | 예약 |
| 0001 | 1 | Reserved | 예약 |
| 0010 | 2 | Trigger | UL OFDMA 트리거 (Wi-Fi 6+) |
| 0011 | 3 | TACK | Trigger ACK |
| 0100 | 4 | Beamforming Report Poll | 빔포밍 요청 |
| 0101 | 5 | VHT/HE NDP Announcement | 고속 PHY 관련 |
| 0110 | 6 | Control Frame Extension | 확장 |
| 0111 | 7 | Control Wrapper | 다른 프레임 감싸기 |
| 1000 | 8 | Block Ack Request (BAR) | ACK 요청 |
| 1001 | 9 | Block Ack (BA) | 묶음 ACK |
| 1010 | 10 | PS-Poll | 절전 모드 요청 |
| 1011 | 11 | RTS | 전송 요청 |
| 1100 | 12 | CTS | 전송 허가 |
| 1101 | 13 | ACK | 수신 확인 |
| 1110 | 14 | CF-End | CFP 종료 |
| 1111 | 15 | CF-End + CF-ACK | CFP 종료 + ACK |
이 중에서 중요하게 봐야할 것은
- RTS(1011) --> 보내도 되냐?
- CTS(1100) --> ㅇㅇ 보내셈
- ACK(1101) --> 수신 확인
- Block ACK(1000,1001) --> 여러 패킷을 한 번에 ACK
정도 일 것 같다.
http://www.ktword.co.kr/test/view/view.php?m_temp1=2324&id=1294
802.11 제어프레임
www.ktword.co.kr
마지막으로 데이터 프레임이다.
데이터 프레임은 실제 상위 계층 데이터(IP, TCP 등)을 전달하는 프레임이다.
아까 관리 프레임, 제어 프레임 모두는 데이터를 보내기 위한 사전 작업인거고, 이제 실제 데이터 보내는 곳이 여기인 셈이다.
| Subtype (binary) | 10진수 | 이름 |
| 0000 | 0 | Data |
| 0001 | 1 | Data + CF-ACK |
| 0010 | 2 | Data + CF-Poll |
| 0011 | 3 | Data + CF-ACK + CF-Poll |
| 0100 | 4 | Null (No Data) |
| 0101 | 5 | CF-ACK |
| 0110 | 6 | CF-Poll |
| 0111 | 7 | CF-ACK + CF-Poll |
| 1000 | 8 | QoS Data |
| 1001 | 9 | QoS Data + CF-ACK |
| 1010 | 10 | QoS Data + CF-Poll |
| 1011 | 11 | QoS Data + CF-ACK + CF-Poll |
| 1100 | 12 | QoS Null |
| 1101 | 13 | Reserved |
| 1110 | 14 | QoS CF-Poll |
| 1111 | 15 | QoS CF-ACK + CF-Poll |
그나마 중요한 건
- Data(0000) --> 일반 데이터 전송(IP/TCP/HTTP 등)
- QoS Data(1000) --> 우선 순위 있는 데이터 (영상, 음성)
- Null(0100) --> 데이터 없이 상태 전달)
- QoS Null ( 1100) --> 우선 순위 있게 보내는..널값
이렇게 된다.
http://www.ktword.co.kr/test/view/view.php?m_temp1=1170&id=1294
802.11 데이터 프레임
802.11 Data Frame 802.11 데이터 프레임(2020-12-18)데이터 프레임 , QoS Data Frame 1. 802.11 데이터 프레임 ㅇ 무선 LAN 표준인 802.11에서, 데이터 프레임은, - 실제 정보가 들어있는 프레임을 말하며, - 여러
www.ktword.co.kr
와이파이에 처음 연결/해제를 하기 위해서는 관리 프레임을 통해서 먼저 연결을 수행한다.
그리고 데이터를 보내기 위해서(인터넷을 이용하기 위해서) 제어 프레임으로 현재 채널 상태가 어떠한지, 데이터를 전송해도 되는지 확인 한 후에 이상이 없고 보내도 되겠다 싶을 때 데이터 프레임으로 데이터를 전달한다.
이런 순서라고 보면 될 것 같다.
살짝 그나마 특이하고, 이따가 다시 나올 거를 소개하자면, 데이터 프레임에서는 Address 주소가 4개가 필요하다. 관리랑 제어에서는 3개만 필요한데, 여기는 4개다.
자, 최종적으로 Type과 SubType을 정리하자면,
Management --> 연결
Control --> 제어
Data --> 실제 데이터 전달
To DS
DS에 대해서 알아야한다. DS(Distribution System)은 여러 BSS(AP + STA)를 상호 연결하여, 프레임을 전달하는 논리적인 시스템이다. 즉 논리적인 개념이니까 하드웨어가 있거나 그런식으로 있는 건 아니고, 프레임을 어떤 AP로 보내야하는지, 어떤 STA에 어떤 AP를 통해 보내야하는지 결정하고 전달하는 역할을 한다.

유선 랜을 기준으로 한다면 스위치/브리지가 가장 적당한 예시일 것 같다.
그래서 흔히 AP뒤쪽 유선망 = DS라고 생각하면 된다.
즉, AP들을 연결하는 분배 시스템인 셈이라고 볼 수 있다.
- 어느 AP에 목적 STA가 붙어있는지 판단
- 그 AP 쪽으로 프레임 전달
- (필요 시) 브리징/포워딩
을 수행한다.
다시 To DS로 돌아가보면,
To에서 o를 보면 소문자인데, 그럼 이건 약자가 아니라는 거니까 To 그 자체를 해석하면, ~~~~쪽, 방향을 의미한다.
그래서 To DS라고 한다면 AP뒤쪽 네트워크으로 간다 라는 것(DS 방향)을 의미한다.
To DS = 1이면 AP 뒤쪽 네트워크으로 가는 거고,
To DS = 0 이면 AP뒤쪽 네트워크으로 안 가는 것을 의미한다.
From DS
얘는 그럼 DS에서 왔는가?를 의미하겠지?
Distribution System(DS)으로부터 나온 것인지를 나타내는 비트이다.
From DS = 1 이면 AP 뒤쪽 네트워크에서 나왔다
From DS = 0 이면 AP 뒤쪽 네트워크 에서 나온 게 아니다 라는 의미이다.

- 00 : IBSS 또는 단일 BSS 내부 무선단말들 간에 송수신
- 01 : AP에서 무선단말에게 보내는 데이터 프레임 (AP → STA; ToDS:0 FromDS:1 Downstream)
- 10 : 무선단말에서 AP에게 보내는 데이터 프레임 (STA → AP; ToDS:1 FromDS:0 Upstream)
- 11 : 무선 브리지를 통함 (AP ↔ AP)
More Flag(Fragment)
얘도 yes/no를 표시하기 때문에 1비트이다.
동일 MDSU 내에서 조각이난, 프레임 크기 제한으로 인하여 둘로 쪼개졌을 경우 , 뒤에 조각이 더있다라고 표시하기 위한 용도이다.1이면 뒤에 더 있고, 본인이 혼자거나 본인이 마지막 조각이면 0으로 세팅된다.
즉, 이 프레임이 끝인지, 더 받아야하는지를 판단한다.
Retry
재전송중인 패킷인 경우 1로 세팅된다(재전송 중복 수신 방지)
Power Management
해당 스테이션이 절전모드에 들어가는 상태인지 아닌지 여부를 나타낸다.
단말기는 배터리 사용하기 때문에 항상 깨어있지는 않는다. 단말기가 1로 절전모드로 들어가면, AP가 해당 데이터를 잠시 보관하고 있다가, 단말기가 데이터 달라고 하면 그때 준다.
그거를 위해 있는 부분이다.
More Data
AP가 해당 스테이션에게,
"더 할 말 있으니까 가만히 있어봐"
라고 얘끼하는 거다.
1이면 아직 줄 데이터가 있다는 거고, 0이면 더 없다라는 거다.
Protected Frame
이건 암호화 되어있다 안 되어있다라고 얘기한다.
뒤에 나오는 프레임 본체가 암호화 되어있다, 안 되어 있다라고 얘기하는 거니까 역시 0, 1로 표현한다.
Other
이거의 존재는 무엇일까...잘 모르겠다.
Order - 1 : HT Control Field 존재를 나타내는 등
라곤 하는데..음...그냥 넘어가도록 하자.
지금까지

인제 Frame Control 했는데 이거 큰일났다. ;;;;
Frame Control 와이어샤크로 뜯어보기
한 번 실습을 해보자.
모니터 모드로 설정한 후에, 와이어 샤크로 우리 랩실에 있는 Beacon 프레임을 하나 잡아보았다.

지금 보면 밑에 파란색으로 칠해진 부분이 MAC Frame Header이다.
여기서 처음 2바이트가 바로 Frame Control 이니까 한 번 뜯어보자.

2바이트로 80 00 이다. 이때, 네트워크는 리틀엔디안을 사용하기 떄문에, 2바이트 두 순서를 바꿔주어야한다.
00 80
이걸 비트로 표현하면
0000 0000 1000 0000
이다.

이제 하나씩 매핑해보면. 이때 Frame Control은 LSB 기준으로 필드가 정의되어 있기 때문에, 오른쪽부터 비트를 해석해야한다
(ip의 경우, 빅엔디안을 사용한다..)

Protocol Ver. = 00 . 이건 항상 0값이라고 했다.
Type = 00 : 이러면 관리 프레임이다이다. Beacon Frame은 와이파이 연결 수행과정에서 첫번째 AP 탐색 단계에 들어가기 때문에 관리에 들어간다.
2026.03.11 - [네트워크] - [WiFi] 와이파이에 어떻게 접속되는 걸까? 와이파이 접속 과정(4-way handshake)
[WiFi] 와이파이에 어떻게 접속되는 걸까? 와이파이 접속 과정(4-way handshake)
프롤로그석사 생활이 이제 본격적으로 시작한 지 7일 정도가 지났다.이것저것 위성, RandomAccess, RF 등 여러 키워드들을 토대로 주제 탐색하고 있는 중이다. 그중에서도 현재 관심있게 공부해보고,
taesan-smj.tistory.com
와이파이 접속과정이 모르겠다면, 여기에 와이파이 접속과정에 대해서 잘 적어놨으니까 모르겠으면 확인해보고 와도 좋을 듯하다.
아무튼 간데, Beacon 프레임을 캡처한 거니 Type = 00이고,
그 다음 Subtype이 1000 이니까 BeaconFrame을 의미한다.
To DS와 From DS 비트가 모두 0으로 설정되어 있다.
이는 데이터 프레임이 DS를 통해 전달되는 상황이 아니라는 의미이며, Beacon 프레임의 경우 AP가 자신을 알리기 위해 브로드캐스트하는 관리 프레임이므로 해당 비트가 0으로 설정된다.
그 외에 분할되어 있지도 않고, 재전송도 아니고, 절전 모드도 아니고(AP가 보내는 비콘프레임은 절전모드가 아니다. 항상 꺠어있어서 AP에서 온 거면 항상 0이다), 더 보낼 데이터도 없고, 암호화 되어있지도 않고(브로드캐스트기 떄문에 암호화할 수 없음 + 다른 일반인도 본인 Ap에 접근시키기 위해서는 정보를 알려야하기 때문에 공개임) 전부 0으로 설정되어 있다.
Duration/ID
이름에서부터 /가 있기 때문에 2가지를 의미하는 필드이다. 하나는 Duration , 나머지 하나는 ID이다.
상황에 따라 Duration 또는 ID로 해석된다.
Duration
NAV(Network Allocation Vector)를 알아야하는데, 단순히 채널 예약 시간이다.
해당 프레임 이후 채널이 얼마나 점유될지를 나타낸다.
예시를 하나 들어볼까.
당신은 추석때 친척들 다같이 보여있는 큰집에 방문했다. 그런데 갑자기 교수님께 전화가 온거다. 전화를 하고 있는데, 사촌동생들이
"우와아아아아아악~ 우와아아아아아악~" 하면서 소리지르면 큰일나니까 한 마디 한다.
"야, 나 통화할 거니까, 5분 정도면 통화 끝날 거 같으니까 그때까지 다 조용히 해라"
이와 비슷하게, "나 Ack 받을 때 까지 다른 노드들은 잠시 조용히 있어라" 라고 하는 거다.
다른 노드들은 이걸 읽고 저 시간만큼 타이머 세팅해놓고 시간이 지날떄 까지 대기한다.
좀전에 "5분 정도면 통화 끝날 거 같으니까 " 라고 말했듯이, 저 기간안에 Ack를 받는데 필요한 모든 소요시간이 다 계산되어서 들어가 있다.
ID
AID에 대해 알아야하는데, 단순히 AP가 STA에게 구분하기 위해서 주는 번호표인 것이다.
너는 1번 단말기니가 AID 1, 너는 2번 단말기니까 AID2...이거다.
아까전에 Power Management라고 Frame Control 에서 제어프레임에 있었을텐데, 이 부분이 여기 ID 필드랑 관련이 있다.
PS-Poll이라고 Station이 절전모드에서 풀렸을 때, 나 AID 3번인데, 너 내 데이터 가지고 있지? 그거 줘 라고 보내는 신호를 보낼 때 자신이 누구인지 알려주기 위해 해당 필드를 이용한다.
| Duration | 채널 점유 시간 | 대부분 프레임 |
| ID (AID) | STA 식별 번호 | PS-Poll |
Q. 그러면 Duration/ID필드는 실질적으로 연결은 아니고, 데이터를 보내는 것도 아니니까 제어프레임에만 있겠네요?
날카로운 질문이다. 착각할 수는 있긴 하다. 하지만 그렇지 않다.

802.11 MAC 프레임은 기본적인 헤더 구조는 모든 프레임에서 동일하게 유지된다.(아 주소 4 이후부터는 예외긴 한데 이따가 설명함)
Duration/ID필드는 이 공통 헤더에 포함되는 필드기 때문에 관리/제어/데이터 프레임 모두에게 존재한다.
공통 필드지, 제어 프레임용 필드가 아니라는 의미이다.
데이터 프레임 보낼떄도 저거 값 설정되어있으면 남들 꼼짝못한다.
Address 필드
일단 TCP/IP에서 이더넷 계층은 Source MAC, Destination MAC, EtherType 이렇게 있었다.
2025.12.26 - [네트워크] - [VPN-2] pcap을 이용한 ethernet과 MAC 패킷 프로그래밍
[VPN-2] pcap을 이용한 ethernet과 MAC 패킷 프로그래밍
프롤로그VPN을 만들기 위해서 여러 가지 방법이 존재할 수 있다.어쨌거나, 내가 블로그를 작성하면서 직접 구현해 보려고 하는 VPN은 Remote Access VPN기능이 되겠다.netfilter를 이용한다면 IP계층부터
taesan-smj.tistory.com
이전에 정리를 했었는데, 이 Address필드도, Destination MAC 과 Source MAC은 그대로 유지가 된다.
Station 1이 Station2에 데이터를 전송할 거면?
기존에 Source는 STA1, Destination은 STA2가 있었을 것이다.
근데, 무선에서는 Station1에서 Station2로 전송할때 AP가 중간에 끼게 된다.
그래서 중간에 전송한다는 개념의 Transmitter Address와 중간에서 받는다는 개념의 Receiver Address라는 개념이 끼어들게 된다.
즉 최종 출발/목적지인 Source/Destination이 따로 있고, 현재 출발/목적지 개념의 Transmitter/Recevier개념이 있다.
다만, 무선 환경에서는 최종 도착/최초 출발 개념보다는 현재 보내는 애, 받는애가 더 중요하기 때문에 RA(Receive Address, 받는 애), TA(Transmitter Address, 보내는 애)를 중심으로 생각하는 게 편할 것이다.
(1) To DS = 0 / From DS = 0
이런 플래그일 경우에는, 일단 AP 뒤쪽의 네트워크는 통하지 않는 다는 의미이다.
해당 프레임은 Distribution System(DS)을 통한 데이터 전달과 관련되지 않은 프레임을 의미한다. 즉, AP 뒤쪽의 네트워크를 경유하지 않고, 로컬 무선 구간에서 생성되거나 소비되는 프레임이다.
대표적인 예로는 Beacon 프레임이 있다. Beacon은 AP가 자신의 존재와 네트워크 정보를 주변 단말에게 알리기 위해 직접 전송하는 관리 프레임이다. 이 프레임은 AP 뒤쪽 네트워크에서 들어온 데이터가 아니라 AP 자체에서 생성된 것이므로, From DS = 0이다. 또한 DS로 들어가는 프레임도 아니므로 To DS = 0이다.
또 다른 예로는 Ad-Hoc(IBSS) 환경에서 단말끼리 직접 통신하는 경우가 있다. 이 경우에도 AP나 DS를 사용하지 않기 때문에 To DS와 From DS는 모두 0이 된다.

실제 와이어샤크에서도 00이면 DS로 가지 않거나 AD-Hoc 모드일 경우라고 적혀있다.
아무튼 간에, 이런 경우에는 중간에 중계기가 없이 오로지 출발/도착만 있으면 될 거 같은데 중간인 BSSID가 있어야한다.(일종의 소속)
그래서 DS = 0 일때 필요한 것은?
- 누가 받냐(RA)
- 누가 보내(TA)
- 어떤 네트워크 소속이냐(BSSID)
이렇게 3개의 주소가 필요로 하다. 순서는?
Address 1, 2, 3에 각각 RA, TA, BSSID가 들어간다.
아마 유선 MAC에서도 그럴텐데, 항상 수신이 제일 앞쪽에 온다.
예시를 하나 들어서 영어 듣기평가를 하고 있다고 치자.
Number 1. Minjae is a man.
막 이렇게 방송을 하고 있는데, 너가 딴생각하느라 제일 맨 앞문장을 못들은 거다. 근데 그 맨 앞문장에 아주 문제를 푸는 핵심 키워드가 있었더라면 당신은 그 문제를 틀리고말것이다. 그렇기 떄문에, 수신 정보는 어차피 받은 본인 입장에서는 본인일테니까 아차 싶어도 괜찮게 , 중요한 정보인 출발자 정보를 중간에 두는 것이다.
이거를 알면, 모든 주소에서 첫번째는 바로 도착지 정보인 본인의 Address가 들어간다라는 것을 이해할 수가 있다.(MAC 계층 한정)
2) To DS = 1 / From DS = 0
2번과 3번을 조금 엮어서 생각해보려고 한다
아래 그림처럼

A가 B는 같은 AP안에있고, A가 B에게 데이터를 보내려고 할 때 공유기를 통해서 보낼려고 한다.
이를 두 단계로 끊어서 생각해보자.
- A에서 공유기로 (STA1->AP)
- 공유기에서(AP->STA2)로
두 개가 생길것인다.
첫번째 프레임 단계가 바로 To DS=1, From DS = 0인 상태인 셈이다.
그러면 필요한 정보가
- 일단 받는 애(RA) : AP주소인 CC
- 주는 애 (TA) : STA1의 주소인 AA
- 최종적으로 받아야하는 애(DA) : STA2의 주소인 BB
가 필요할 것이다.
최종적으로 3개의 주소가 필요하므로 아래와 같이 채워진다.

(3) To DS = 0 / From DS = 1
위 상황에서, 이제 DS에서 다시 BB로 전송되는 과정이다.
이 순간은 필요한 게, 역시나
- 받아야 하는 애(RA) : STA2의 주소인 BB
- 보내는 애(TA) : AP주소인 CC
- 처음 보냈던 애(SA) : STA1의 주소인 AA가 들어간다.

(4) To DS = 1 / From DS = 1
마지막이다. 아까 DS가 무엇이냐라고 했을 떄 아래 그림과 같이 표현했다.

프레임을 어떤 AP로 보내야하는지, 어떤 STA에 어떤 AP를 통해 보내야하는지 결정하고 전달하는 역할인 거다.
그렇다면? 4개의 프레임이 필요한 상황은? 아래 그림과 같다.

이렇게 각각 다른 영역에 있을 떄..이다 DS가 결국엔 논리적인 연결통로이기 때문에, 해당 DS를 거쳐서 이동한다.

이런 경우에는 Address 4가 필요하다.
다시 Address 필드부터 다시 봐보자.

6바이트씩 각각 차지한다(MAC주소니까 6바이트)
그리고 앞쪽에 3개가 있고
시퀀스 제어 2바이트 후에 Address4 6바이트가 뒤에 나온다.
Address 필드는 각각 6바이트(MAC 주소)로 구성된다. 기본적으로 Address 1, 2, 3까지 존재하며, 이후 Sequence Control 필드(2바이트)가 위치한다.
일반적인 경우에는 이 3개의 Address 필드만으로 충분하기 때문에, Frame Control부터 Sequence Control까지 총 24바이트의 헤더를 사용한다.
하지만 To DS = 1 / From DS = 1과 같은 특수한 경우(AP 간 무선 통신)에는, 실제 출발지와 최종 목적지까지 모두 표현해야 하므로 Address 4 필드가 추가된다. 이 경우 Sequence Control 이후에 Address 4(6바이트)가 추가되어 총 30바이트의 MAC 헤더가 구성된다.
Address 4는 선택적으로 “켜는 옵션”이 아니라, 해당 프레임 구조에서 필수적으로 포함되는 필드이며, 일반적인 인프라 통신에서는 사용되지 않는다.
Q. 그러면 패킷을 보았을 떄 Address 4가 붙었는지 안 붙었는지 어떻게 알 수가 있나요?
이때 Frame Control에서 To DS와 From DS를 보는 것이다. 둘 다 11이면 뒤에 최소한 6바이트가 더 온다라는 것을 알면 된다.
Address 필드 와이어샤크로 뜯어보기
데이터 프레임 하나를 가져왔다.

DS가 01로(LSB형식으로 뒤에서 읽어서 이렇게 된다. 사진은 10으로 나오는 거 헷갈리면 안 된다) To DS = 0 / From DS = 1이다.
즉, 이 패킷은 AP에서 왔다라고 판단할 수 있다.
저기서

받는 애는 STATION일테고, 보내는 애는 AP일 것이다. 그리고 여기 같은 경우는 최초로 보낸 애의 Address주소인 Source Address가 있을테니, 이 세개의 필드 값이 각각 다르다.
다만 와이어샤크에서는 굳이굳이 하나 더 Destination Address를 넣어 준 것 뿐이다. Receiver Address랑 같은 것은 결국엔 받는 애나 최종 받아야하는 애가 같기 떄문에 표시를 해준 것이다. 실제로 각각 클릭을 하면, 같은 비트 인덱스를 가리킨다. 뭔말이라면, Address4를 읽은 게 아니라[애초에 해당 부분은 오지도 않았다], 와이어샤크가 표현만 Destination Address를 출력해준 것 뿐이라는 거다.

Receiver Address 를 눌렀을 떄는 1e~24까지에 걸쳐져 표현을 하고 있고,

Destination Address도 1e~24까지 같은 위치를 가리키고 있다.
와이어샤크가 주소 4개를 보여준다고 해도 속지말자. 결국엔 Address 3개만 이용하였다.
며칠 째 여기 글만 쓰고 있다....오래걸린다..양이 너무 많다...
시퀀스 제어 필드
시퀀스 제어 필드는 802.11 MAC에서 프레임의 순서를 식별하고, 재전송 및 프래그먼트 재조립을 처리하기 위한 핵심 필드이다. 각 프레임에 순서 번호를 부여함으로써 수신 측에서는 중복 프레임을 제거하고, 분할된 프레임을 올바른 순서로 재조립할 수 있다.
이 시퀀스 컨트롤은 총 2바이트인데, 이 또한 4비트와 12비트로 각각 나뉘어서 Fragment Number(4bit)와 Sequency Number(12bit)로 나뉜다.
Sequence Number는 프레임 단위 식별자로 사용되며, Fragment Number는 하나의 데이터가 여러 프레임으로 분할될 때 각 조각의 순서를 나타낸다.
그냥 글로 보면 이해가 안 가는데
우리집에 택배 한 10개가 올 거다.
우리집이 Sequence Number(12비트) 이고, 각 택배 번호 하나하나가 Fragment Number(4비트)이다.
근데 택배를 0번부터 9번까지 차례대로 보내고 싶으니까 순서를 맞추기 위해서 쓰는 거다.

QoS Control 필드
아까 데이터 프레임일 때 QoS 뭐시기가 서브타입으로 있었다. 우선순위와 관련된 내용인데, 데이터 프레임으로 서브타입이 QoS일때만 나타나는 필드 2바이트 짜리이다. 이에 따라 보통 802.11 데이터 프레임과는 다른 프레임들이 나타난다.
HT Control 필드
이건 4바이트이다. HT가 뭔가? High Throughput(고속 전송 모드)이다. 802.11n에 도입된 기술이다.
기존에는 최대 54Mbps 로 속도가 엄청 느렸는데, MIMO + Channel Bonding + Short Guard Interval 등으로 인하여 속도가 개선되었다.
| 최대 속도 | 54 Mbps | 최대 600 Mbps |
| 안테나 | 1개 | 여러 개 |
| 효율 | 낮음 | 높음 |
이 부분은 Fundumental Wireless Channel 책을 읽어야 좀 이해가 될 거고, 이부분 까지 설명하는 건 주제랑 어긋나는 거 같아서 쓰지 않겠다.
와이어샤크로 저거 필드 보고 싶었는데 못찾았다.
프레임 바디
더 상위계층에서 내려온 실제 데이터. 무시해라. 우리가 감당할 영역이 아니다.
FCS
오류 검출용 필드이다 32bit CRC이다.
OSI 7계층에서는 Data Link계층에서 Header와 Trailer가 붙었었는데, 이 부분이 그 트레일러 역할이라고 생각하면 된다.
에필로그
아직 숨겨져 있는 비밀 필드들이 많다. 특히 프레임 종류마다 각각 10개가 넘는 서브타입들이 있는데, 그것들로 인하여 프레임바디가 또 바뀌기도 한다.
근데 지금 이만큼 정리한 것도 오래걸렸고...어쩃거나 한 번은 알아야할 부분이니까 열심히 공부해서 통합본으로 길고 오래 정리하였다.
다음 글은 MLO와 관련된 내용이거나 CSA와 관련된 내용일 것이다.
'네트워크' 카테고리의 다른 글
| [WiFi] MATLAB WLAN Toolbox 분석하여 802.11be MLO의 EMLSR 동작과정 이해하기 (0) | 2026.04.16 |
|---|---|
| [WiFi] 최신 WIFI 7 (IEEE 802.11 be)에 새로 도입된 Multi-Link Operation(MLO)에 대해 알아보자 (0) | 2026.03.24 |
| [WiFi] 와이파이에 어떻게 접속되는 걸까? 와이파이 접속 과정(4-way handshake) (2) | 2026.03.11 |
| [VPN-6] 네트워크 인터페이스와 TUN / IP 라우팅 프로그래밍 (2/2) (0) | 2025.12.31 |
| [VPN-5] 네트워크 인터페이스와 TUN / IP 라우팅 프로그래밍 (1/2) (0) | 2025.12.30 |