본 글은 Computer Networking: a Top Down Approach의 DHCP 챕터를 정리한 글입니다.
주소 블록(block of IP address)를 확보한 조직이라면, 조직 내의 호스트 및 라우터에 개별 IP 주소를 할당할 수 있다.
일반적으로 라우터는 수동 IP로 구성한다.
반면에 호스트 주소는 DHCP로 구성한다. (수동으로 구성할 수도 있긴 함)
DHCP를 사용하면 호스트가 자동으로 IP 주소를 획득(할당)할 수 있다.
특정 호스트가 네트워크에 연결할 때마다 동일한 IP 주소를 받도록 구성하거나, 임시 IP 주소를 할당할 수 있다.
호스트 IP 주소 할당 외에도 서브넷 마스크, 기본 게이트웨이(첫번째 홉 라우터), 로컬 DNS 서버 주소와 같은 추가 정보를 DHCP를 통해 알 수 있다.
네트워크를 자동화해주는 DHCP의 기능 때문에 DHCP는 플러그 앤 플레이 혹은 제로 컨피규레이션 이라고도 불린다.
만약 이런 자동화 기능이 없다면 얼마나 불편할지 생각해보자.
대학생이 기숙사에 거주하며 도서관과 교실에 수시로 이동한다.
이 학생이 각 위치에서 노트북을 사용할 때, 각 위치에 새로운 서브넷이 존재하기 때문에 위치마다 새로운 IP 주소가 필요하다.
이렇게 많은 사용자가 드나들면서 제한된 시간동안 주소가 필요한 곳에 DHCP는 매우 이상적이다.
네트워크 관리자가 각 위치의 노트북에게 새로운 IP 주소를 수동으로 제공하는 것은 쉽지 않으며, 모든 노트북 사용자가 그럴 만한 능력을 가지기가 힘들다.
클라이언트란, 다르게 말하면 자신의 IP 주소를 포함한 네트워크 구성 정보를 얻으려는 호스트이다.
서브넷에 DHCP 서버가 존재할 수도 있고 안 할 수도 있다.
존재하지 않는다면, 해당 네트워크 DHCP의 서버 주소를 알고 있는 DHCP 릴레이 에이전트(일반적으로 라우터)가 필요하다.
(yiaddr
은 클라이언트에게 할당되는 주소를 의미한다)
가장 먼저 통신할 DHCP 서버를 찾는다.
클라이언트는 UDP를 기반으로 하는 67 포트에 DHCP 검색(discover) 메시지를 송신한다. (IP 데이터그램으로 캡슐화됨)
이때 DHCP 서버의 주소를 알지 못하기 때문에, 도착 IP 255.255.255.255
와 소스 IP 0.0.0.0
을 Link layer에 데이터그램에 담아 전달한다.
그리고 Link layer가 이 프레임을 서브넷의 모든 노드에 전송(브로드캐스트)한다.
DHCP 검색 메시지를 수신한 DHCP 서버는 모든 클라이언트에게 DHCP 오퍼 메시지로 응답(브로드캐스트)한다. (같은 서브넷에 존재한다면 유니캐스트 할 수도 있다)
이 오퍼 메시지에는 다시 255.255.255.255
주소가 브로드캐스트에 쓰인다.
서브넷에는 여러 DHCP 서버가 존재할 수 있어, 클라이언트는 그 중에 선택하면 된다.
DHCP 오퍼 메시지에 기록된 데이터
검색 데이터의 트랜잭션 ID
클라이언트에게 제안하는 IP 주소
네트워크 마스크
IP 주소 유효 기간 (일반적으로 몇 시간 혹은 며칠로 정해짐)
서버 오퍼 중 하나를 선택해서 DHCP 요청 메시지로 응답한다.
이때도 각 DHCP 서버에 중복이 생기지 않기 위해 브로드캐스트한다.
서버가 DHCP 요청 메세지를 받아 이전 데이터들(구성 매개변수)이 기록됐는지 확인하고 ACK 메시지로 응답한다.
위 과정을 거치면 클라이언트가 유효 기간 동안 DHCP에 할당된 IP 주소를 사용하게 된다. (주소가 만료될 것을 염두에 두고 유효 기간을 갱신하는 메커니즘도 제공한다)
클라이언트가 새로운 서브넷에 연결할 때마다 DHCP에서 새로운 IP 주소를 가져온다.
그래서 서브넷을 옮기면 애플리케이션에 대한 TCP 연결을 유지할 수가 없다.
그로 인해 모바일 네트워크에서는 IP와 TCP 연결을 유지하기 위해 MME, S-GW 등이 활용되고 있다.
DHCP는 자동으로 IP 주소를 할당해주는 프로토콜이다.
클라이언트가 위치를 옮기며 새로운 서브넷에 접속할 때마다 자동으로 새로운 IP를 제공해준다.
DHCP를 통해 IP 주소를 할당 받기 위해 네 과정을 거친다.
클라이언트는 DHCP 서버를 찾기 위해 DHCP 요청 메시지를 브로드캐스트하고, DHCP는 해당 메시지를 받아 네트워크 구성 정보가 담긴 DHCP 오퍼 메시지를 브로드캐스트한다.
다른 서브넷에 접속하면 DHCP가 새로운 IP 주소를 할당하게 되고, TCP 연결은 끊긴다.