이제는 우리 삶에서 뗄래야 뗄 수 없는 Wifi. 최근 네트워크 강의 시간에 DHCP관련 수업을 듣는 중 문득 wifi를 하루도 뺴놓지 않고 쓰고 있는데, 동작원리나 연결이 어떻게 되는지 궁금해졌다. 이번 글에서는 주로 Wi-Fi, DHCP에 대해 정리해보려 한다.
Wi-Fi
간단히 말하면 공유기(Access Point)가 유선 인터넷 신호를 무선 신호로 변환하여 주변에 뿌려주면, 스마트폰이나 노트북 같은 기기들이 이 신호를 받아 인터넷에 접속하는 원리다. 유선랜(LAN)과 달리 물리적인 케이블 없이 공기 중의 전파를 통해 데이터를 주고 받는다.
즉, 사용자가 인터넷에 접속하여 웹서핑을 하거나 영상을 보는 등 서비스를 이용한다는 점에서는 일반 유선 인터넷 연결과 본질적으로 동일하다. 와이파이는 그저 인터넷에 연결되는 마지막 구간을 물리적인 선 대신 무선 전파로 바꾼 것뿐이다.
하지만, “무선”이라는 차이점이 기술적으로나 실제 사용 환경에서 몇 가지 중요한 차이를 만들어낸다. 예를 들어 안정성과 속도가 있겠다. 유선 연결은 물리적인 케이블을 통해 데이터가 매우 안정적이고 속도가 빠르다. 반면, 와이파이는 전파를 사용하기 때문에 주변 환경에 영향을 많이 받는다. 하지만 이동성(Mobility)가 굉장히 좋다. 사실 이게 와이파이의 가장 큰 존재 이유이자 장점이지 않을까 싶다. 유선 인터넷은 정해진 장소에서만 사용할 수 있지만,와이파이는 신호가 닿는 범위 내에서는 자유롭게 이동하며 인터넷을 사용할 수 있는 편리함이 있다.
핫스팟 같은 P2P 방식으로 동작하는 경우를 제외하고 와이파이는 주로 클라이언트-서버 모델로 작동 한다. 일반적으로 우리가 사용하는 와이파이 환경을 기준으로 역할은 아래와 같이 나뉜다.
- 서버: 공유기가 서버역할을 한다. 각 기기들의 네트워크 접속을 허용하고 관리하며 데이터를 중계한다.
- 클라이언트: 스마트폰, 노트북, 스마트 TV등 공유기에 연결하여 인터넷 서비스를 요청하고 제공받는 모든 기기들이 클라이언트이다.
기존 클라이언트-서버 모델과 비슷하게 클라이언트가 서버에게 인터넷 연결을 요청하면, 서버는 요청을 받아 인터넷에 연결시켜주는 구조이다. 그리고 이때 서버가 클라이언트의 요청을 받아 실제 인터넷을 사용할 수 있도록 네트워크 주소(IP)를 할당하는 과정에서 DHCP가 사용된다.
Wi-Fi와 DHCP의 관계
DHCP가 IP주소를 할당하는 과정에서 사용된다고 했다. 우리가 카페에서 와이파이에 접속할 때 가장 먼저 하는 일은 비밀번호를 입력하는 건데 이 과정은 DHCP와 무슨 관련이 있는걸까.
결론부터 말하면, 비밀번호를 통한 인증 과정은 DHCP보다 먼저 일어난다. 클라이언트가 IP 주소를 DHCP서버에 요청하기 전에, 해당 네트워크에 접속할 자격이 있는지 부터 확인하는 것이다. 전체 흐름을 보면 아래와 같다.
- 스캔 (Scan): 스마트폰이 주변의 사용 가능한 Wi-Fi 신호를 탐색한다. 우리가 Wi-Fi 설정 화면에서 보는 익숙한 목록이다.
- 인증(Authentication): 사용자가 특정 Wi-Fi(SSID)를 선택하고 비밀번호를 입력한다. 공유기는 이 비밀번호가 맞는지 확인하여 네트워크에 접속을 허가받은 사람인지를 검증한다. 이 단계가 우리가 흔히 와이파이에 연결한다고 생각하는 과정이다.
- 연결 (Association): 인증이 성공하면, 공유기는 해당 기기를 자신의 관리 목록에 추가한다.
연결단계까지 성공적으로 끝나야, 비로소 스마트폰은 IP 주소를 할당받기 위한 DHCP Discover메시지를 네트워크에 보낼 준비를 마친다.
서비스 세트 식별자(Service Set Identifier)의 약자로, 무선 네트워크(와이파이 네트워크)의 이름을 의미한다. 라우터나 액세스 포인트(AP)가 자신이 제공하는 네트워크를 구분하기 위해 할당하는 고유한 이름이다. 예를 들어, 핸드폰이나 노트북에서 주변 와이파이 목록에 나타는 네트워크 이름이 SSID이다. SSID는 네트워크들을 구분하는 식별자 역할을 하며, 같은 지역 안에서 여러 네트워크가 있을 때 혼동을 방지해 준다.
DHCP
Dynamic Host Configuration Protocol 의 줄임말이다. 네트워크에 접속하는 기기들에게 IP 주소를 비롯한 통신에 필요한 정보들을 자동(Dynamic)으로 할당하고 관리해주는 프로토콜이다.
카페에서 Wi-Fi를 사용하는 상황을 생각해보자. 매일 수십, 수백 명의 손님들이 다양한 기기로 Wi-Fi에 접속한다. 만약 DHCP가 없다면 어떻게 될까? 잠깐만 생각해도 아래의 문제가 발생할 수 있다.
- 수동 IP 설정의 문제점: 각 손님이 직접 IP 주소를 입력해야 한다면? 어떤 IP가 비어있는지 알 수 없고, 중복된 IP를 설정하면 충돌이 발생한다.
- 관리의 복잡성: 카페 주인이 모든 기기의 IP를 일일이 관리하고 기록해야 한다면 현실적으로 불가능하다.
DHCP는 이런 문제들을 해결해준다. 기기가 네트워크에 접속하면 자동으로 사용 가능한 IP 주소를 찾아 할당하고, 사용이 끝나면 다시 회수하여 다른 기기에 재할당할 수 있다.
DHCP의 동작 과정 (DORA)
Wi-Fi에 연결될 때 실제로 일어나는 DHCP의 4단계 과정을 살펴보자. 이 과정을 DORA라고도 부르는데 각 과정의 앞글자를 따서 기억하기 쉽게 만든 것 같다.
실제 데이터 전송 내용
1. D - Discover (발견)
- 클라이언트가 네트워크에 연결 되면 “DHCP 서버가 있나요?”라는 브로드캐스트 메시지를 전송
- 이때 클라이언트는 아직 IP 주소가 없으므로 브로드캐스트(255.255.255.255)로 전송
2. O - Offer (제안)
- DHCP 서버(223.1.2.5)가 “저는 DHCP 서버입니다! 여기 사용할 수 있는 IP 주소가 있어요”라고 응답
- 서버는 사용 가능한 IP 주소를 포함한 네트워크 설정 정보를 제안
3. R - Request (요청)
- 클라이언트가 “좋습니다. **이 IP 주소를 사용하고 싶습니다!”**라고 브로드캐스트로 응답
- 여러 DHCP 서버가 있을 경우, 특정 서버의 제안을 선택했음을 알림
4. A - ACK (승인)
- DHCP 서버가 “좋습니다. 이제 그 IP 주소를 사용하세요!”라고 최종 확인
- 이 시점에서 클라이언트는 할당받은 IP 주소와 네트워크 설정을 사용할 수 있게 됨
이것이 일반적인 DHCP의 연결 과정이다. 하지만 몇가지 궁금한 점이 있다.
- DHCP는 IP를 노드에 할당하기(인터넷에 연결되기 위해) 사용된다. 그런데 어떻게 클라이언트가 네트워크에 연결되어 브로드캐스트 메시지를 전송할 수 있을까?
-
- Discover를 하고 2. Offer를 한다음에 서버가 3. ACK를 하면 (마치 TCP의 3-way handshake 처럼) 연결이 될 수도 있을텐데 왜 Request과정이 필요한 것일까?
- IP 주소의 유효기간은 없을까? 만약 카페를 나갔다가 내일 다시 오면 어떻게 되는 걸까.
이와 같은 궁금증이 생겨서 찾아보았다.
1. IP도 없는데 어떻게 네트워크에 연결해서 브로드캐스트를 하는가.
내가 생각한 네트워크 연결은 IP주소를 받아 인터넷 통신이 가능한 OSI 7계층 중 3계층인 Network Layer 이상의 연결을 의미하는 것이었다. 하지만 DHCP Discover 메시지는 그 이전 단계인 2계층 Data Link Layer 연결만으로도 가능하다.
DHCP의 핵심은 IP 주소가 없는 클라이언트가 네트워크상의 누군지 모르는 DHCP 서버를 찾는 것이다. 이를 위해 자신이 알고 있는 네트워크 전체에 메시지를 뿌리는 브로드캐스트가 필수적이다. TCP는 1:1 연결을 지향하고 브로드캐스트 기능이 없어 DHCP에 사용하기에 부적합하다.
애초에 자신의 IP를 알지 못하는 노드에서 TCP를 쓸 수 조차 없다.
요약하자면, DHCP의 브로드캐스트는 IP주소가 필요한 3계층(네트워크 계층)이 아닌, 그 이전 단계인 2계층의 통신으로 이루어지기 때문에 가능하다.
2. Discover -> Offer -> ACK의 순서에 Request가 필요한 이유
DHCP에서 Request 과정이 반드시 필요한 가장 큰 이유는 네트워크 상 DHCP 서버가 하나 이상 존재할 수 있기 때문이다.
위에서 알 수 있듯이 클라이언트는 소속된 네트워크 상에서 브로드캐스트메시지를 전송한다. 이렇게 되면 네트워크 내의 모든 DHCP 서버가 이 메시지를 받는다. 만약 서버가 한 대라면 Dicover -> Offer -> ACK 순서로도 가능하겠지만(TCP가 그러한 것처럼) 만약 서버가 두 대 이상이라면, 클라이언트는 다른 IP주소를 담은 여러개의 Offer 메시지를 받게 된다. 클라이언트는 이런 제안들 중 하나를 선택해야 하고 이때 Request 메시지를 다시 브로드 캐스트로 보내 예를 들어 “나는 A 서버가 제안한 192.168.0 IP주소를 사용할거야”같이 네트워크 전체에 알린다. 이렇게 브로드 캐스트로 알리는 이유는 선택받지 못한 다른 서버들을 위함이다. 선택받지 못한 서버들은 해당 클라이언트가 내 제안(Offer)를 선택하지 않았음을 인지하고, 제안했던 IP주소를 다른 클라이언트에게 할당할 수 있도록 회수한다. 이렇게 되면 다른 클라이언트들을 위한 자리를 확보할 수 있기 때문에 더욱 효율적이다.
만약 Request과정이 없다면, 클라이언트는 어떤 서버의 제안을 수락했는지 다른 서버들에게 알릴 방법이 없을 뿐더러 어떤 DHCP서버를 선택할지 요청을 전달할 수도 없다. Request 단계는 여러 DHCP 서버 중 하나를 선택하고, 선택되지 않은 서버들에게 그 사실을 알려서 IP 주소를 효율적으로 관리하기 위해 필수적인 과정이라 할 수 있다.
3. IP 주소의 유효기간
IP주소는 한정된 자원이기 때문에, 네트워크를 떠난 기기가 IP를 계속 차지하고 있으면 자원이 고갈된다. 카페처럼 유동 인구가 많은 곳에서는 기기들이 계속 바뀌므로, 사용하지 않는 IP를 회수하여 새로운 기기에 재할당해야 한다.
DHCP 서버는 IP 주소를 할당할 때 “이 IP는 N시간 동안 유효 합니다”라는 임대 기간을 알려준다. 클라이언트는 이 기간동안만 해당 IP를 사용할 수 있으며, 기간이 만료되기 전에 서버에 갱신 요청을 해야 한다.
DHCP서버에 IP를 할당 받고 나갔다가 다시 오면?
이 경우, IP 임대 기간이 만료되었는지 여부에 따라 동작이 달라진다.
-
임대 기간이 만료되지 않았을 경우 (예: 잠시 나갔다 온 경우)
- 클라이언트(내 스마트폰)는 이전에 할당받았던 IP 주소를 기억하고 있다.
- 네트워크에 다시 접속하면, 전체 DORA 과정을 거치지 않고 바로 해당 DHCP 서버에게 “저번에 쓰던 IP 주소 계속 써도 될까요?”라고 직접
Request
메시지를 보낸다. - 서버가 허락하면 **
ACK
**를 받아 더 빠르게 IP를 할당받고 연결됩니다.
-
임대 기간이 만료되었을 경우 (예: 다음 날 다시 온 경우)
- 내 스마트폰이 가지고 있던 IP 주소의 유효기간이 지났으므로, 그 IP는 DHCP 서버에 의해 회수되어 다른 사람이 사용하고 있을 수 있다.
- 내 스마트폰은 유효한 IP가 없는 상태이므로, 처음 접속할 때와 똑같이
Discover
부터 시작하는 전체 DORA 4단계 과정을 다시 거친다. - 이때 이전에 사용했던 IP를 다시 받을 수도 있지만, 대부분의 경우 사용 가능한 다른 IP 주소를 새로 할당받게 된다.
마무리
지금까지 Wi-Fi, DHCP에 대해 알아보았다. 다시한번 정리해보자. 만약 카페에서 Wi-Fi에 연결하여 인스타그램을 보려고 한다 가정했을때,
- 탐색 (Scan): 스마트폰이 “Cafe_WiFi” 신호를 발견.
- 인증 (Authentication): “Cafe_WiFi”를 누르고 비밀번호를 입력. 카페 공유기는 비밀번호가 맞는지 확인.
- 연결 (Association): 공유기는 스마트폰을 관리 목록에 등록한다. 이제 공유기와 데이터를 주고받을 수 있다.
- DHCP 시작 (DORA):
- D(Discover): 스마트폰이 네트워크 전체에 브로드캐스트 Discover 요청을 보낸다.
- O(Offer): 공유기(DHCP 서버)들이 그 메시지를 듣고 응답합니다.
- R(Request): 스마트폰은 그 제안을 수락하며, 다른 서버들도 알 수 있도록 다시 한번 브로드 캐스트로 알린다.
- A(ACK): 공유기가 최종적으로 승인하며 IP 할당을 확정한다.
- 인터넷 통신 시작: 이제 내 스마트폰은 고유 주소를 가지고, 공유기를 통해 인스타그램 서버와 데이터를 주고받을 수 있게된다.
무심코 사용하던 와이파이 연결의 이면에는 이처럼 여러 단계의 약속들이 아주 짧은 시간 안에 유기적으로 동작하고 있었다. 이 글을 통해 와이파이와 DHCP의 동작 원리를 이해하는 데 도움이 되었기를 바랍니다.
개인적으로 공부하고 정리한 글이라 부정확하고 부족한 부분이 있을 수 있습니다. 댓글 남겨주세요!