DHCP는 IP 주소를 네트워크에 연결된 장치에 자동으로 할당한다.
-> 가정용 네트워크에서는 라우터가 IP 주소를 장치에 할당하는 DHCP서버역할을 함.
UDP기반 프로토콜, 서버가 클라이언트에게 IP주소를 실시간으로 부여할 수 있도록 함
정적IP주소는 IP주소가 수동으로 설정되지만, DHCP는 사용 가능한 IP주소를 자동으로 확인하고 클라이언트에게 IP주소를 부여한다.
DHCP는 응용계층의 프로그램으로 TCP/IP의 네트워크 계층(IP 프로토콜)을 보조한다.
클라이언트가 DHCP서버를 찾는다.
사용자의 데이터그램은 근윈지 주소가 0.0.0.0(자기도 모름), 목적지 주소가 255.255.255.255로 브로드 캐스트 메시지를 날린다.
DHCP 서버는 해당 클라이언트에게 IP주소를 제공한다.
DHCP서버(브로드캐스트를 갈겼기 때문에 복수의 서버일수도 있음)는 your-IP-address필드를 제안된 IP주소로 지정하고 클라이언트에게 DHCPOFFER메시지로 응답한다.
클라이언트는 가장 좋은제안을 한 DHCP서버에게 해당 IP를 사용하겠다고 한다.
클라이언트는 하나 혹은 그 이상의 제안을 받고(브로드 캐스트한 서버들의 응답) 그 중 가장 좋은 것을 고른다. 그리고 DHCPREQUEST메시지를 가장 좋은 제안을 보내온 서버로 전송한다.
DHCP서버는 클라이언트에게 IP주소를 할당한다.
선택된 서버는 클라이언트가 요청한 IP주소가 유효한 경우 DHCPPACK메시지로 클라이언트에게 응답한다.
만약 서버가 그 주소를 줄수 없다면(동시에 다른 호스트에게 제안되었고, 그 호스트가 먼저 할당받음) 서버는 DHCPNACK메시지를 전송한다.(거절) 클라이언트가 처음과정부터 IP를 찾게 됨.
문제점: 만약에 1,2,3번까지만 하면 DHCP starvation이 발생한다.
*DHCP Starvation 공격
DHCP 서버의 할당 가능한 IP를 모두 소진하게 만들어 IP할당이 불가능하게 하는 공격
ex> discover메시지를 서로 다른 MAC주소로(IP=0.0.0.0) 대량으로 보내게 되면 이에 대한 제안이 올것이고 여기서 request 메시지까지 보내고 실제로는 할당하지 않는다.
PC를 로그오프하거나 ipconfig/release를 하면 할당받은 IP주소를 다시 DHCP서버에 반납한다.