DHCP(Dynamic Host Configuration Protocol)는 동적 호스트 구성 프로토콜로 인터넷의 IP, 서브넷마스크, 기본 게이트웨이 등의 설정을 자동적으로 제공해주는 UDP 기반 비연결형 서비스 프로토콜이다.
Q. 이 프로토콜을 왜 써 ?
A. 통신을 하기 위해서는 IP 주소가 필요한데 필요할 때마다 사용자가 직접 설정해서 사용한다면 너무 번거롭고 시간이 많이 소요되며 오류가 발생할 확률이 높다.

클라이언트 → DHCP 서버
브로드캐스트 (Destination MAC : FF:FF:FF:FF:FF:FF)
클라이언트가 자신의 MAC 주소를 기반으로 DHCP 서버를 찾는 브로드캐스트 메세지를 보낸다.
DHCP 서버 → 클라이언트
브로드캐스트 혹은 유니캐스트. 클라이언트가 보낸 DHCP Discover 메세지의 Broadcast flag가 1 이면 브로드캐스트로, 0이면 유니캐스트.
DHCP 서버가 자신이 존재함을 알리면서 클라이언트에게 할당할 네트워크 정보를 포함하여 보낸다.
Client MAC : 클라이언트 MAC 주소
Your IP : 단말에 할당(임대)할 IP 주소
Subnet Mask (Option 1)
Router (Option 3) : 단말의 Default Gateway IP 주소
DNS (Option 6) : DNS 서버 IP 주소
IP Lease Time (Option 51) : 단말이 IP 주소(Your IP)를 사용(임대)할 수 있는 기간(시간)
DHCP Server Identifier (Option 54) : 본 메시지(DHCP Offer)를 보낸 DHCP 서버의 주소. 2개 이상의 DHCP 서버가 DHCP Offer를 보낼 수 있으므로 각 DHCP 서버는 자신의 IP 주소를 본 필드에 넣어서 단말에 보냄
Q. DHCP Offer 과정에서는 아직 클라이언트에 IP 주소가 할당되지 않은 상태인데 어떻게 유니캐스트가 가능한거야?
A. Relay Agent와 DCHP Server가 같은 L2 레이어에 존재한다면 IP 주소가 브로드캐스트여도 MAC 주소를 통해 유니캐스트로 전송할 수 있다. 브로드캐스트와 유니캐스트 모두 같은 결과를 도출하지만 대부분의 네트워크에서는 트래픽 감소를 위해 브로드캐스트보다 유니캐스트를 선호한다.
DHCP Offer 중 클라이언트의 IP 주소는 확정되지 않았으므로 offer 메세지의 dst IP 주소가 0.0.0.0 으로 설정된다. 따라서 IP 프로토콜을 자신의 주소로 setup이 되어 있지 않더라도 filtering을 하지 않고 UDP로 올려주게끔 구현을 해야한다.
클라이언트 → DHCP 서버
브로드캐스트 (Destination MAC : FF:FF:FF:FF:FF:FF)
클라이언트가 DHCP 서버의 존재와 제공하는 네트워크 정보를 알고 있는 상황에서 DHCP Request를 통해 하나의 DHCP 서버를 선택해 해당 클라이언트가 제공받고자 하는 네트워크 정보를 요구한다.
Client MAC : 클라이언트 MAC 주소
Request IP Address : 클라이언트가 사용할 IP 주소
DHCP Server Identifier : DHCP 서버의 IP 주소. 2대 이상의 DHCP 서버가 오퍼를 보낸 경우, 클라이언트가 선택할 DHCP 서버의 IP 주소.
Q. DHCP Offer 단계에서 DHCP 서버가 본인의 IP 주소를 함께 보낼텐데 왜 브로드캐스팅을 하는 거야?
A. DHCP 서버는 하나가 아니라 여러 개 일수도 있다. 따라서 선택받지 못한 DHCP 서버는 DHCP Request 메세지를 수신함으로서 자신이 클라이언트에게 거부되었음을 알 수 있다.
DHCP 서버 → 클라이언트
브로드캐스트 혹은 유니캐스트. 클라이언트가 보낸 DHCP Discover 메세지의 Broadcast flag가 1 이면 브로드캐스트로, 0이면 유니캐스트.
DHCP 서버가 클라이언트에게 네트워크 정보를 전달한다.
Client MAC : 단말의 MAC 주소
Your IP : 클라이언트에게 임대할 IP 주소
Subnet Mask (Option 1)
Router (Option 3) : 단말의 Default Gateway IP 주소
DNS (Option 6) : DNS 서버 IP 주소
IP Lease Time (Option 51) : 클라이언트가 해당 IP를 사용할 수 있는 기간
DHCP Server Identifier : DHCP Ack를 보낸 DHCP 서버의 주소

일반적으로 DHCP 메세지는 브로드캐스팅 되기 때문에 클라이언트와 DHCP 서버는 항상 같은 서브넷(LAN) 상에 존재해야 한다. 그 이유는 라우터가 브로드캐스팅 패킷 (MAC : FF:FF:FF:FF:FF:FF, IP : 255.255.255.255) 를 다른 네트워크 상으로 전달하지 않기 때문이다. 이러한 제약사항으로 인해 DHCP 서버가 각 서브넷 마다 존재해야 하는데 이는 매우 비효율적인 구조이다.
이를 해결하기 위해 DHCP Relay Agent 라는 개념이 생겼으며 해당 기능을 라우터에 적용하여 서로 다른 서브넷 간에 위치하는 클라이언트와 DHCP 서버 간의 통신이 가능하게 한다.
클라이언트가 브로드캐스트 메세지를 보내면 라우터가 이를 유니캐스트로 변환하여 DHCP 서버로 전달한다.
SIP : DHCP Relay Agent
DIP : DHCP Server
DHCP Server가 DHCP Relay Agent로 발신하고 DHCP Relay Agent가 호스트로 브로드캐스트 혹은 유니캐스트로 전송한다.
SIP : DHCP Server
DIP : DHCP Relay Agent
클라이언트가 브로드캐스트 메세지를 보내면 라우터가 이를 유니캐스트로 변환하여 DHCP 서버로 전달한다.
SIP : DHCP Relay Agent
DIP : DHCP Server
DHCP Server가 DHCP Relay Agent로 발신하고 DHCP Relay Agent가 호스트로 브로드캐스트 혹은 유니캐스트로 전송한다.
SIP : DHCP Server
DIP : DHCP Relay Agent