프롤로그
석사 생활이 이제 본격적으로 시작한 지 7일 정도가 지났다.
이것저것 위성, RandomAccess, RF 등 여러 키워드들을 토대로 주제 탐색하고 있는 중이다.
그중에서도 현재 관심있게 공부해보고, 논문 읽고 있는(2개밖에 아직 안 읽었음) 부분은 바로 와이파이 관련 보안 이슈이다.
와이파이에서 공격을 수행하기 위해서는 결국엔 프로토콜과 절차 들에 대해서 이해하고 있어야하므로, 이번 기회에 와이파이 접속 절차에 대해서 정리를 해보고자 한다.
지난 글들과 다르게, 조금 그나마 퀄리티 있게 준비하고자 미리 사전에 공부를 다 하고 이해한 후에 작성하고 있어서 중간중간마다 수정하거나 하지는 않을 것이다.
전체적인 와이파이 접속 절차
와이파이 접속하고 사용하는데 까지 크게 총 5가지 단계로 흐름을 정리할 수 있다.
1. AP(Access Point, 공유기) 탐색 : 주변 AP 찾기
2. 인증 (Authentication) : AP와 통신 가능 여부 확인
3. 연결(Association ) : AP에 정식으로 연결 등록
4. 암호 키 생성 (Key Exchange (4-Way Handshake)) : 실제 비밀번호 인증 + 암호키 생성
5. 데이터 통신(Data Communication) : 데이터 통신
다음 그림은 와이파이 접속 절차라고 검색했을 떄 자주 보는 그림을 직접 정리한 그림이다.

위 그림과 같이 STATION 단말기가(여러분들의 핸드폰) AP(공유기) 에 접속되는 과정을 거친 후에 실질적으로 공유기와 단말기 사이에 정보 전달이 이루어진다.
밑에서부터 하나씩 천천히 알아보도록 하자.
1. AP 탐색

전체적인 흐름에서 1, 2, 3번에 해당하는 부분이 바로 AP 탐색, 즉 단말기가 공유기를 찾는 과정이 가장 처음 이루어진다.
핸드폰이 공유기를 찾는 과정은 크게 두 가지 방식이 존재한다.
A. Passive Scanning
당신이 처음 가는 카페에 갔다라고 생각해보자. 스타벅스라고 가정하자.
스타벅스에서 와이파이를 이용하고 싶다. 그래서 당신은 핸드폰을 열고 와이파이 목록에 들어간다.

이렇게 핸드폰에서는 주변에 있는 와이파이의 목록을 보여준다. 이렇게 내 주변에 와이파이가 있다는 것을 어떻게 알고 목록을 보여주는 것일까?

와이파이 공유기(Access Point, AP) 항상 자신은 누구이고, 자신에게 접속할 수 있는 정보를 주기적으로 주변에 신호를 뿌린다. 누구나 볼 수 있도록 신호를 뿌린다라는 의미로 브로드캐스트라고 하는데, 이 브로드캐스트 방식으로 AP는 자신의 존재를 Beacon Frame이라는 관리 프레임을 전송한다.
이 Beacon Frame에는
- SSID(네트워크 이름)
- BSSID(AP의 하드웨어 MAC주소)
- 동작 채널
- 지원 데이터 속도
- 보안 방식 (WPA2, WPA3)
등으로 구성되어 있다.
정리를 하자면 AP는 위 항목으로 구성되어있는 자신의 정보를 Beacon프레임을 브로드캐스트로 전송을 한다.
이렇게 공유기가 전송한 Beacon Frame(이제부터는 그냥 비콘이라고 부르겠다)을 토대로 , STATION(단말기) 들이 주변에 어떤 Wi-Fi 네트워크가 존재하는지 파악할 수 있다.
저 비콘 프레임에 대한 자세한 내용은 추후에 다룰 예정이다.(귀찮으면 안 다룰수도 있고)
이처럼 단말이가 공유기의 비콘 신호를 수신하여 네트워크를 탐색하는 방식을 Passive Scanning 방식이라고 한다.
B. Active Scanning
이제는 우리 집에 있는 공유기를 생각해보자. 집에 있는 공유기에 접속을 한다. 매번 퇴근하고 나서 집에 있는 공유기에 접속할 때 와이파이 목록에 가서 와이파이 접속을 누르던가?
매일매일?
아니다. 굳이 매번 Wi-Fi 목록을 열어서 직접 네트워크를 선택하지 않는다.
매번 하면 ㅆ 귀찮지 아니한가...
보통은 집에 가면 자동으로 와이파이 접속에 된다. 왜냐하면 자동으로 연결하기 옵션이 켜져있기 때문이다. 이 자동으로 연결하기 기능을 가능하게 하는 방식 중 하나가 바로 Active Scanning에 해당한다.
단말기는, 자신이 이전에 접속했던 와이파이 목록을 PNL(Preferred Network List)에 저장해둔다. PNL에는 다음과 같은 정보가 저장된다.
- SSID
- 보안방식
- 연결 우선순위
PNL에 존재하는 네트워크가 주변에 있는지 직접 신호를 보내 탐색한다. 무슨말이냐면,
저 리스트 저장해둔 것을 토대로 주기적으로 해당 리스트에 존재하는 와이파이들이 주변에 있는지 신호를 통해서 물어본다. 이것이 바로 전체 흐름에서 2번에 해당하는 Probe Request이다.

그러니까 주변에 해당 네트워크가 있는지 직접 설문하는 과정인 셈이다.
그러면 단말기가 보낸 "이 와이파이가 주변에 있나요?"라고 물어보는 Probe Request를 해당하는 공유기가 받았으면, 응답을 보내서, "어어 나 여기 있나" 라고 응답을 보내는 것은? 그것을 바로 Probe Response라고 한다.
단말기는 이를 확인하고 연결 절차를 진행한다. 이처럼 단마릭가 먼저 신호를 보내 네트워크 존재 여부를 확인하는 방식을 Active Scanning이라고 한다.

2. 인증(Authentication)
보통, 인증이라고 한다면 비밀번호 인증과 같이 내가 누구이고 해당 기능을 이용할 수 있는지 검사받는다는 것을 의미하기에, 와이파이 접속과정에서 인증이란, 와이파이 비밀번호를 입력하는 것이라고 생각할 수 있다.
하지만?
전혀 그렇지 않다. 위에서도 살짝 언급했으나, 공유기와 통신이 가능한지 먼저 확인하는 것이 인증 단계이다.
군대 예시로 들어볼까?
- 후임 : 제가 Px에 갔다와도 되는지 여쭤봐도 되겠습니까?
- 선임 : 어, 그래. 여쭤봐도 된다.
- 후임 : 그럼 제가 Px에 갔다와도 됩니까?
- 선임 : 아니. 안 된다.
위 대화에서 , 첫 번째 문장처럼, 접속해도 되는지 여쭤봐도 되겠습니까? 라고 한 번 물어보는 단계가 인증에 해당된다. AP에 접속해도 되는지 확인하는 단계라고 생각하면 된다.
위 군대 대화 예시처럼, 진짜 쓸데없는 절차이다. 형식상 존재한다. 아 물론 옛날에는 의미있었을지 모르겠으나, 지금 WPA2 이상에서는 진짜 의미없는 형식 절차가 되어버렸다.

아까 Probe Request와 Probe Response와 똑같이, 단말기가 공유기에 접속해도 되는지 물어보는 게 Authentication Request, 해당 요청에 대해 공유기가 응답을 보내는 것이 Authentication Response이다.
이 단계가 성공하면 단말이는 공유기와 논리적으로 인증된 상태가 된다.
현재 대부분의 Wi-Fi 환경에서는 Open System Authentication이다. [그냥 형식적인 절차일 뿐이라는 거다]
그러면 와이파이 비번은 의미은 언제 쓰나요? 한다면, 밑에 4단계에서 4-way handshake에서 이용하게 된다.
Authentication은 Management Frame을 사용하는데, 이 또한 언젠가 Beacon프레임 다룰때 같이 다루지 않을까 싶다... 프레임을 싹 한 번 정리할 예정이다.[물론 귀찮으면 안 함]
3. 연결(Association)
이 연결단계는 인증단계에서 성공하면 클라이언트가 이제 진짜 공유기한테 연결 요청을 보내는 것이다.
다시 군대 방금 대화를 가져와보자.
- 후임 : 제가 Px에 갔다와도 되는지 여쭤봐도 되겠습니까?
- 선임 : 어, 그래. 여쭤봐도 된다.
- 후임 : 그럼 제가 Px에 갔다와도 됩니까?
- 선임 : 어, 그래. 갔다와라.
진짜 Px갔다오라고 말한 밑의 두 줄이 연결에 해당할 수 있다.
즉, "이 공유기에 연결하여 통신해도 됩니까?" 물어보고 "어, 그래. 통신하자" 라고 응답 받는 게 연결 과정이다.

아까와 똑같이, 단말이가 공유기에 요청을 보내는 Association Request, 그리고 응답을 주는 Association Response로 이루어져있다.
이때, 연결 요청을 보낼 때에, 단말기는
- SSID(공유기 네트워크 이름)
- Supported Data Rates (단말기가 지원하는 데이터 전송 속도)
- Capabiltity Information(단말기의 기능 정보[ESS 지원, Short Preamble 등]
- Security Capability(지원 가능한 보안 방식[WPA2, WPA3 등]
- HT/VHT/HE capability(지원 가능한 무선 기술 규격]
같은 정보를 보낸다. 즉, 나는 이런 기능을 지원하는 단말기 이다 라는 정보를 AP에게 전달한다. 즉 이력서를 전달하는 과정
이를 토대로 AP는
- Association ID(AID) : 단말기 식별번호
- Status Code : 상태코드
- Capability Information
를 포함한 정보를 Response로 넘겨준다
이 과정이 끝나면? 연결은 끝났다. 하지만?
아직 데이터 통신은 이루어지지 않는다. 왜냐하면, 이 상태로 통신하면 암호화를 진행하지 않았기 떄문에 다른 사람들이 도청할 수 있기 때문이다. 그래서 암호화 키를 생성하는 과정이 추가로 필요하다.
4. 암호 키 생성
여기가 제일 중요하다.

총 4번을 왔다갔다한다. 그래서 4-way handshake라고 부른다.
다만, 네트워크 공부하면서 보통 OSI 7계층이랑 TCP/IP 프로토콜을 배우면서, TCP때 연결하기 위해선 3way handshake, 연결을 끊을 떄는 4way handshake를 한다라고 배운 적이 있어서, 여기 4way handshake랑 혼동할 수 있다. 여긴 다른 4way handshake이다.
4way할 때 EAPOL 1, 2, 3, 4가 적혀있는데 EAPOL은 Extensible Authentication Protocol over LAN의 약자로 암호키를 교환하기 위해 사용되는 특수한 프레임이다. 즉 802.1X 인증과정에서 사용되는 프로토콜이다. 여기서 이제 와이파이 비밀번호 등이 사용된다.
저렇게만 보면 뭐가 뭔지 모르니 하나하나 암호키를 생성하고 교환하고, 어떻게 쓰이는지 하나하나 차례대로 알아보도록 하자.
그 전에, 암호 키를 교환한다고 했는데, 무엇을 교환하는지 먼저 알아보자.
이 암호키교환하는 과정에서 최종적으로 양 측이 핵심적으로 가지고 공유하는 키는 총 두 가지이다.
- PTK(Pairwise Transient Key)
- GTK(Group Temporal Key)
이렇게 두 가지가 있다.
PTK
PTK는 (Pairwise Transient Key)의 약자로, 직역하자면
- Pairwise : 1:1의
- Transient : 세션 동안 일시적으로 사용하는
- Key : 키
이다. 즉, 단말기와 공유기 1:1로 정보를 주고받을 때 통신을 보호하기 위해 생성되고 사용하는 키이다. 그렇기 때문에, 각 단말기마다 고유한 PTK을 공유기가 서로 키 교환한다.
쉽게 말하면, 나와 공유기만 아는 개인 전용 암호키이다.
특정 단말기랑만 통신한다, 특정 개체랑만 통신한다는 개념의 유니캐스트(unicast) 통신을 할 때 사용한다.
GTK
GTK는 Group Temporal Key의 약자로, 직역하자면
- Group : 그룹의
- Temporal : 일정 기간 동안 사용하는
- Key : 키
즉, 공유기가 해당 공유기 안의 네트워크들끼리 공통적으로 사용하는 그룹용 암호키이다. 공유기 외부의 사람이 해당 공유기 내부의 내용을 도청할 수 없게 사용하기 위함이다. 주로 브로드캐스트(broadcast) 또는 그룹 내 특정 여러 사람과 통신하는 멀티캐스트(multicast) 트래픽을 암호화하는데 사용한다.
쉽게 말하면, 공유기 네트워크 안에서 공통적으로 쓰는 단체용 암호키이다.
- PTK: 단말기와 공유기 사이의 개인용 키
- GTK: 같은 네트워크 구성원이 함께 쓰는 그룹용 키
이 PTK와 GTK를 최종적으로 생성하고, 교환하는 게 위 4way handshake 과정속에서 일어난다. 이제 하나하나 차근차근 알아보자.
(0) 사전 키 생성 - PSK(Pre-Shared Key)와 PMK(Pairwise Master Key)
EAPOL 메시지 교환이 시작되기 전에, 공유기와 단말기는 서로 동일한 기본키를 알고 있어야 한다. 이 기본키를 PMK(Pairwise Master Key)로서, PTK(단말기와 공유기 사이의 개인용키)를 유도하기 위해 사용되는 일종의 보조키이다. 4-way handshake의 목적은 바로 이 PMK를 기반으로 실제 통신에 사용할 PTK를 생성하는 것이다.
즉, PMK : 4-Way Handshake에서 사용하는 마스터 키.
이 PMK와 PSK(Pre-Shared Key)라는 개념에 대한 혼동이 조금 생긴다. 나도 그렇다.
이 부분에서 많은 자료들이 혼동을 일으킨다. 어떤 자료는 PSK = 비밀번호, 어떤 자료는 PSK = PMK, 어떤 자료는 PSK(PMK) 처럼 설명한다.
PSK는 Pre-Shared Key의 약자로, AP와 단말기가 사전에 공유하고 있는 키 기반 인증 방식을 의미한다.
즉 PSK는 특정 키 자체를 가리키는 단어라기보다 인증 방식의 개념에 가깝다.
그래서 WPA2 에서는 두 가지 모드가 존재한다.
| 모드 | PMK 생성 방식 |
| WPA2-PSK | 비밀번호 기반으로 PMK 생성 |
| WPA2-Enterprise | 인증 서버(EAP)를 통해 PMK 생성 |
WPA2-PSK 환경에서는 비밀번호로부터 생성된 PMK를 사용하기 때문에 문서나 블로그에서 종종 PSK=PMK처럼 표현을 한다. 하지만 정확하게 말하면, PSK모드에서 사용하는 마스터 키가 바로 PMK인 것이다.
그러면, 이 PMK는 어떻게 만들까? 이 마스터 키를 어떻게 만드느냐? 위에서 살짝 스포가 되었을텐데, 여기서 와이파이 비밀번호가 사용된다.
와이파이 비밀번호를 이용해서 PMK를 생성하는 과정은 다음 함수를 사용하여 계산한다.
PBKDF2(passphare, ssid, 4096, 256)
Password-Based Key Derivation Function 2의 약자로
- Password-Based : 비밀번호 기반
- Key : 암호키
- Derivation : 생성
- Function : 함수
- Ver2 : 버전 2
으로 직역이 가능하다.
내부 파라미터를 봐보자.
| 항목 | 의미 |
| passphrase | 사용자가 입력한 Wi-Fi 비밀번호 |
| SSID | 네트워크 이름 (salt 역할) |
| 4096 | 반복 횟수 (iteration count) |
| 256 | 결과 키 길이 (bits |
passphrase : 비밀번호. 그러니까 여기서 쓰이는 거다.
결과 키 길이가 256인 이유는, PMK길이는 256bits(64bytes)로 정의가 되어있다.

이 정보는 결국엔 단말기도 와이파이에 비밀번호를 토대로 접속을 진행했기 때문에, 단말기도, 공유기도 같은 PMK를 가지고 있다.
(1) EAPOL 1(Message 1)
ANonce 생성 및 전달
AP(공유기)는, 우선 ANonce(Authenticator Nonce)를 생성한다. AP가 생성한 랜덤값인데, 그냥 A를 Authenticator라고 생각 안 하고, AP라고 생각하면 바로 외워진다.
이 ANonce는 PTK를 단말기마다 고유한 키를 생성하기 위한 재료로 사용되기 때문에 생성 후에 단말기에게 보내줘야한다.
그래서, AP가 생성한 ANonce를 단말기에게 전달함으로써 4-way handshake가 시작된다.
단말기는 AP로부터 온 이 Anonce를 가지고 PTK계산 준비를 한다.
단말기(STA)의 PTK계산
일단 STA(단말기)도 SNonce를 생성한다. ANonce와 비슷하게, SNonce는 Supplier Nonce로, 단말기가 생성한 임의의 값이다. 똑같이 S를 STATION이라고 생각하면 금방 외워진다.
이제 PTK생성 함수를 보자.
PRF(PMK, AP_MAC, Client_MAC, ANonce, SNonce)
가 재료로 들어간다.
PRF는 Pseudo-Random Function(의사난수함수)로써 최종적으로 512bit 길이의 PTK가 생성된다.
조금 더 자세히 보면
PTK = PRK(PMK || "Pairwise Key Extension" || MIN(AP_MAC, STATION_MAC) || MAX(AP_MAC, STATION_MAC) || MIN(ANonce, SNonce) || MAX(ANonce, SNonce))
로 계산된다.
여기서 ||는 and 연산이 아니라 일종의 이어붙이기 라고 생각하면 된다.
그래서 PMK 뒤에 "Pairwise Key Extension" 뒤에 AP_MAC, STATION_MAC 중에 작은 거, AP_MAC, STATION_MAC중에 큰 거, ANonce, SNonce중에 작은 거, ANonce, SNonce중에 큰 거 순으로 차례차례 이어붙이면 PTK가 만들어진다.

그림으로 간단히 표현한건데, MAC주소, Nonce는 두 개 중 작은 거 부터 차례대로 적는다는 것을 명심하면 된다.
여기서 PMK는 (0)번에서 미리 계산한 거인데, 저기 2번째 Pairwise Key Extension 은 무엇일까? 저건 그냥 문자열 상수(constant string)이다. 암호학적으로 키 파생 과정의 목적을 구분하기 위한 라벨(label) 역할로, 그냥 아스키 문자열 그대로 들어간다라고 생각하면 된다. 같은 PMK더라도, 다른 용도의 키와 충돌하지 않게 하기 위해서 넣는 문자열이라고 생각하면된다.
이렇게 512비트의 PTK가 생성되었다.
그리고 이 키를 이제 128비트씩(128*4 = 512) 4개의 영역으로 균일하게 나눈다. 그리고 각각마다 KCK, KEK, TK, 기타 로 나뉘고, 여러 개의 키로 분리되어 각각 다른 역할로 사용된다.
| KCK (Key Confirmation Key) | 128 bit | EAPOL 메시지 MIC 계산 |
| KEK (Key Encryption Key) | 128 bit | GTK 암호화 전달 |
| TK (Temporal Key) | 128 bit | 데이터 암호화 (CCMP) |
| MIC keys / reserved | 128 bit | TKIP 등에서 사용 |
계속 나오니까 기억해두자.

(2) EAPOL 2(Message 2)
SNonce가 포함된 Message 전송
AP에서 생성한 ANonce가 Message 1을 통해 STATION으로 왔기 때문에, STATION(단말기)에서 PTK를 계산할 수 있었다. 반대로, 공유기에서도 PTK가 있어야하는데, 그럴려면 STATION의 SNonce가 있어야한다. 그 정보를 이 Message 2에서 전송한다.
다만, 그냥 SNonce를 보내게 되면, 또다른 공격자가 진짜 SNonce인 척 보낼 수ㅜ 있어서 무결성을 인증할 수 있는, CRC와 같은 역할을 해주는 데이터도 추가로 보내게 되는데, 이 무결성 검증 데이터가 MIC이고, 이 데이터를 만드는 데에는 PTK의 첫번째 128비트 부분인 KCK(Key Confirmation Key)을 이용하여 만들어낸다.
MIC는 Message Integrity Code의 약자로, 메시지가 변조되지 않았음을 증명하는 값인 것이다.
그래서 계산 함수는 다음과 같다.
MIC = HMAC(KCK, Message)
여기서 Message는 SNonce도 들어가는데, 그 외에 다른 추가적인 정보들도 포함되어 들어가있다. 이 전체 메시지를 KCK를 키값으로 해시화해서 나온 MIC를 전체 메시지 뒤에 붙여 EAPOL 2를 진행한다.
PTK계산 및 MIC 검증
이렇게 Message 2를 통해서 SNonce를 전달받으면, 위에서 STATION이 PTK 계산을 했던 것처럼 똑같이 AP도 PTK 계산을 진행한다. 그러면 똑같이 PTK가 나오고, KCK, KEK, TK를 만들어낼 수 있다. 그리고 이제 AP가, 단말기가 계산한 PTK값과 일치하는지 확인하기 위해서, 똑같이 MIC 계산을 진행한다. AP가 계산한 MIC를 MIC'라고 했을 때
MIC == MIC'가 되면, 정상적으로 PTK를 계산했다라는 것이 증명이 되고, 다음단계로 넘어간다.

전체적인 흐름을 정리한 그림이다.
(3) EAPOL 3 (Message 3)
아까 위에서, 이 4-way handshake를 하는 이유는 PTK와 GTK를 생성하고, 나눠가지기 위함이라고 하였다. PTK는 방금 message 1, message2를 통해서 생성 및 공유가 완료되었다.
이제 GTK을 공유해야하는데, 이게 EAPOL 3, EAPOL 4과정에서 이루어진다.
GTK 생성하기
GTK는 단순히 난수이다. 공유기가 생성한. 이 난수값을 단말기한테 전달해줘야하는데, 그냥 평문으로 전달하면 다른사람들이 볼 수 있으니, 이를 암호화해서 보내줘야한다.
그래서 GTK는 아래의 함수를 이용하여 암호화한다.
Encrypted GTK = Encrypt(GTK, KEK)
여기서 익숙한 단어가 보인다. KEK
KEK(Key Encrption Key)는, AP가 Station에 GTK을 전달할 때 암호화에 사용하는 키이다.
이렇게 GTK을 암호화하여 GTK를 준비한다.
GTK가 포함된 Message 전송
이제, 이 Encrypted GTK와 그 외에 부수적인 정보들 Key_info, Replay Counter(재전송 공격 방지 변수), ANonce(어떤 Nonce기준 PTK인지 알려주기 위한 용도), MIC(무결성 검증용[HMAC(KCK, Message 3)]) 을 포함해서 Message 3을 전송한다.

전체적인 Message 3 전송 과정을 요약한 그림이다.
여기서 MIC계산은, Message 2 때처럼, KCK값을 이용하여 MIC검증을 진행한다.
(4) EAPOL 4(Message 4)
GTK 획득
이제 마지막 단계이다.
우선 제일 먼저 할 일은, Message 3을 통해서 온 데이터 MIC 검증부터 진행한다.
그 다음, 암호화된 GTK을 , STATION에서도 똑같이 계산한 PTK에서 KEK값으로 복호화를 하여 GTK값을 알아낸다.
이렇게 해서 PTK와 GTK도 STAION에서 모두 획득하게 되었다.
이제 이를 데이터 통신에서 실제로 사용할 수 있도록 Wi-Fi 칩셋/ 드라이버 암호화 엔진에 키를 등록해 놓는다.
일반 UNICAST 환경(유니캐스트, AP와 단말기가 1:1 통신)을 보낼 때는 아까 PTK에서 3번째 있던 항목인 TK로 암호화해서 보낼 수 있게 설정하고, BroadCAST환경이나 Multicast환경에서는 GTK로 암호화해서 보낼 수 있게 설정한다.
설치완료되었다는 내용 Message 4로 전송
이제 STATION은 AP에게, 자신이 설치 완료되었다라는 얘기를 Message 4로 전송한다. Message 4에서는 Key_info, Replay_counter, MIC가 포함되어 전송된다.

이렇게 해서 어려운 4-way Handshake과정이 끝남으로써 둘은 실제로 통신을 진행할 수 있게 되었다.
5. 데이터 통신
이제 아까 위에서 설정한 GTK로 암호화, TK로 암호화가 다 되었기 때문에 공유기와 단말기가 서로 통신할 수 있게 되었다.
에필로그
전체적으로 와이파이 접속 과정에 대해서 알아보았다. 생각보다 적는데 오래걸려서 현생에 문제가 생겨버렸지만...와이파이 공부하는 사람들에게 도움이 조금이라도 됐으면 좋겠다.
'네트워크' 카테고리의 다른 글
| [WiFi] 최신 WIFI 7 (IEEE 802.11 be)에 새로 도입된 Multi-Link Operation(MLO)에 대해 알아보자 (0) | 2026.03.24 |
|---|---|
| [WiFi] IEEE 802.11 계층과 프레임에 대해 알아보자 (Wireshark로 뜯어보는 802.11 Frame의 모든 것) (0) | 2026.03.18 |
| [VPN-6] 네트워크 인터페이스와 TUN / IP 라우팅 프로그래밍 (2/2) (0) | 2025.12.31 |
| [VPN-5] 네트워크 인터페이스와 TUN / IP 라우팅 프로그래밍 (1/2) (0) | 2025.12.30 |
| [VPN-4] pcap를 이용한 tcp/udp 패킷 프로그래밍 (1) | 2025.12.27 |