DHCP란?
호스트에 IP주소를 수동으로도 할당할 수 있지만, DHCP(Dynamic Host Configuration Protocol, 동적 호스트 구성 프로토콜)이 더 많이 쓰인다. DHCP는 말그대로 호스트가 IP주소를 자동으로 얻을 수 있게 해준다.
Plug-and-play protocol or zero-configuration protocol
이러한 특성 때문에 플러그 앤 플레이 프로토콜 또는 제로 구성 프로토콜이라고도 한다. 예를 들어 학교에서 WIFI를 사용한다고 해보자. 나는 신공학관에서 정보문화관으로 이동하면서 새로운 IP주소가 필요할 것이다. 많은 사용자가 이동하고, 주소들이 제한된 시간에서만 필요한 경우 수동 할당보다는 DHCP가 적합하다.
client-server 프로토콜
DHCP는 client-server 프로토콜이다.
클라이언트(교수님) = IP 주소를 포함하고, 네트워크 설정을 위한 정보를 얻어야 하는 호스트
서버(학부생들) = 각 서브넷에 DHCP 서버가 있을 수도 있고, 없으면 라우터(DHCP 연결 에이전트)가 있다.
DHCP 프로토콜 4단계를 '🥵🥵강의실에서 애타게 대학원생을 찾는 교수님🥵🥵'예시로 이해해보자!
새로운 호스트가 도착했을 때 네트워크 상에서 수행되는 DHCP 프로토콜 4단계

1. DHCP 서버 발견 (discover)
새롭게 도착한 호스트가 상호작용할 DHCP를 발견한다. DHCP discover message를 사용하여 수행되고, 클라이언트는 67번 포트로 UDP 패킷을 보낸다. UDP 패킷은 IP 데이터그램으로 캡슐화된다.
Q. 호스트는 자신이 접속될 네트워크 IP 주소도 모르고, 해당 네트워크의 DHCP 서버 주소도 모른다. 그러면 이 데이터그램을 누구에게 보낼 것인가?
A. DHCP 클라이언트는 DHCP discover message를 포함하는 IP 데이터그램을 생성하는데, 이 메시지 내의 목적지 IP를 브로드캐스트 IP 주소 255.255.255.255로 설정하고 출발지 IP는 0.0.0.0으로 설정한다. DHCP 클라이언트는 링크 계층으로 IP 데이터그램을 보내고, 이 프레임은 서브넷에 연결된 모든 노드로 브로드캐스트 된다.
Q. 왜 출발지&목적지 IP가 0.0.0.0 -> 255.255.255.255일까?
A. 새로 네트워크에 접속한 호스트는 현재 IP주소가 없고, 어느 DHCP 서버가 존재하는지도 모른다. DNS, HTTP처럼 명확한 서버 주소가 있는 것도 아니고 완전히 초기상태이므로 0.0.0.0이다. 255.255.255.255는 브로드캐스트 주소로, 같은 네트워크상 모든 노드에게 전송한다. 교수님이 큰 강의실 안에서 대학원생을 찾는다. '누가 내 대학원생이 될래!!!' 하고 소리지르면 모든 학생들이 듣는다. 그것이 브로드캐스트.

브로드캐스트지만 사랑만 있으면 상관없잖아? DHCP discover는 🥵무차별 브로드캐스트🥵지만 IP를 향한 간절한 마음만 있다면?
2. DHCP 서버 제공 (offer)
discover message를 DHCP 서버가 받았다. DHCP 서버가 다시 클라이언트로 offer message로 응답한다.
이때에도 다시 IP 브로드캐스트 주소 255.255.255.255를 사용하여 서브넷의 모든 노드로 브로드캐스트를 한다.
Q. 이 서버는 왜 브로드캐스트를 할까?
A. 클라이언트가 아직 IP주소를 가지지 않기 때문이다. 서버는 클라이언트의 정확한 IP주소를 모른다. discover 할 때도 클라이언트에서 출발지 IP가 0.0.0.0이었기 때문이다. 서브넷에는 여러 DHCP 서버가 존재하기 때문에, 여러 DHCP 서버가 동시에 offer를 보낼 수도 있다. 클라이언트는 여러 DHCP offer message로부터 가장 최적의 위치에 있는 DHCP 서버를 선택한다. 메시지는 수신된 discover message의 트랜잭션 ID, 클라이언트에 제공된 IP주소(yiaddr, Your IP Address) , 서브넷, IP 주소 임대 기간 (IP address lease time, IP 주소가 유효한 시간), DNS, Gateway 정보를 포함한다. 여기에서 lease time(lifetime)도 제공되는데, DHCP 서버가 클라이언트에게 IP 주소를 사용할 수 있도록 허락한 시간이다.
[정리] 교수님의 대학원생 discover에 많은 학생들이 offer를 한다. yiaddr은 '찜'해놓는 시스템이다. offer를 보내면서 학생들은 '나를 찜해주세요'한다. 그리고 '나를 이만큼 노예로 부릴 수 있어요'하며 lifetime도 제시한다.

Q. 브로드캐스트는 어디까지 갈까?
A. 여기에서 255.255.255.255는 동일 서브넷이 있는 모든 노드를 의미한다. 따라서 라우터를 통과하지 않는다 (서브넷 통신이기 때문)
강의실 안에서 교수님이 소리를 지르면 강의실 안에 있는 학생들만 귀가 아프다. 문(라우터)을 통과하지 않는 범위 내의 학생들만 들을 수 있다.
3. DHCP 요청 (request)
이제 클라이언트가 하나의 서버를 선택해서 '이 IP주소를 쓸게요!'라고 공식적으로 DHCP request message를 보낸다.
교수님은 여러 학생들의 대학원생 offer에 오직 하나의 학생에게 request를 한다. '이 학생 쓸게요!'
여전히 출발지 IP는 0.0.0.0이다. 목적지 IP도 아직 255.255.255.255이다. 왜냐하면 클라이언트가 누구에게 OK를 했는지 공개적으로 알려야 하기 때문이다. '이 학생은 내 대학원생입니다!'
《Request 메시지를 보냈더니, 약혼으로 착각해버린 교수님과 동거생활이 시작됐다!?》
하지만 이 단계에서는 아직 서버가 OK를 한 건 아니다. 즉, 청혼은 했지만 결혼은 아닌상태. 클라이언트는 아직 IP를 확정받지 않았는데, 서버는 이미 마음속 결혼식장 예약중.

Q. 왜 아직도 출발지 IP 가 0.0.0.0일까?
A. DHCP request를 보내는 시점까지는 IP가 공식적으로 할당된 상태가 아니다. DHCP 서버의 최종 승인(ACK)을 받아야 IP 주소 사용이 확정된다.
4. DHCP ACK
《ACK은 고백의 신호!? 드디어 시작하는 교수님과 나의 IP 러브스토리》
서버는 DHCP 요청 메시지에 대해 요청된 파라미터를 확인하는 DHCP ACK message로 응답한다. 이 순간부터 IP주소가 yiaddr로 확정이 된다. 이제 찜이 아니라 학생은 온전히 교수님의 것이다...🥵
클라이언트가 DHCP ACK 메시지를 받으면 상호작용이 종료되고, 클라이언트는 DHCP 할당 IP주소를 임대 기간동안 사용할 수 있다. 클라이언트가 임대 기간 만료 후에도 이 주소를 사용할 경우를 위해, DHCP는 클라이언트가 IP주소 임대를 갱신(renew)할 수 있는 매커니즘을 제공한다.

[참고자료] 컴퓨터네트워킹 하향식 접근 제 8판, James F. Kurose, Keith W.Ross
'CS' 카테고리의 다른 글
| [CS] 웹 요청 전체 과정 정리하기 (0) | 2025.06.11 |
|---|---|
| [인덱스 채우기] 인덱스란?, B-Tree(+B+Tree), 클러스터 인덱스 (0) | 2025.05.09 |
| 잘못된 보안 설정 (1) | 2024.09.18 |
| 입력 값 조작 공격 (3) | 2024.09.18 |