컴퓨터 부팅 시점에는 IP 주소와 네트워크 정보를 가지고 있지 않다. 따라서 DHCP 서버로부터 인터넷을 사용하기 위한 정보들을 응답받는다.
고정 IP와 동적 IP
고정 IP의 문제점은 설정 과정에서 오타가 발생하거나 이미 사용 중인 IP 주소를 사용하면서 충돌이 발생하는 것이다. 또한 컴퓨터를 사용하지 않는 상태에서도 IP 주소를 할당받기 때문에 주소 낭비로 이어진다.
반면에 DHCP를 설정하면 직접 주소를 설정하는 게 아닌 자동으로 설정된다. 또한 DHCP를 통해 할당받은 IP 주소는 영구적으로 사용하는 것이 아닌 임대를 받은 것이므로, 기간이 만료된 IP 주소는 반환하게 된다. 덕분에 IP 주소의 낭비를 줄일 수 있다.
1. DHCP 서버의 역할
DHCP 서버는 IP 주소, 게이트웨이 주소, 서브넷 마스크, DNS 정보를 제공한다. 클라이언트는 DHCP 서버로부터 전달받은 주소들을 사용하기 때문에 인터넷 통신이 가능하다. 사용자는 컴퓨터를 사용할 때마다 인터넷을 사용하기 위한 정보를 직접 입력하지 않고도 DHCP에 의해 자동으로 설정되게 할 수 있다.
2. DHCP 구성
- DHCP 클라이언트
- DHCP 서버에 인터넷 사용을 위한 주소들을 요청하여, 응답받은 값으로 자동으로 TCP/IP 설정을 완료한다. DHCP에 의해 자동으로 TCP/IP 설정이 완료되므로 다른 컴퓨터와 TCP/IP 통신이 가능하다.
- DHCP 서버
- DHCP 클라이언트로부터 요청이 들어오면 사용 가능한 주소들을 제공한다.
3. DHCP 동작 과정
L2 이더넷 계층에서 브로드캐스트 메시지를 전송한다. 다른 네트워크로 트래픽을 전달하는 라우터는 차단되기 때문에, 같은 LAN 내에 존재하는 모든 장치에게만 메시지가 전달된다.
- 라우터 : L3 IP 계층, 다른 네트워크로 패킷 전송
- 스위치 : L2 이더넷 계층, 같은 LAN에 존재하는 장치들에게 프레임을 전달한다.
DHCP 설정 과정에서는 TCP가 아닌 UDP를 사용한다.
- TCP는 유니캐스트 통신으로, 브로드캐스트를 지원하지 않는다.
- UDP는 브로드캐스트 및 멀티캐스트를 지원하므로, DHCP 과정에서 클라이언트가 Discover 및 Request를 브로드캐스트로 전송할 수 있다.
- 클라이언트는 부팅 상태에서 IP 주소가 없는 상태이므로, TCP처럼 3-way handshake가 불가능하다.
- DHCP Discover : 컴퓨터를 부팅하면 Discover 패킷을 전송하여 같은 LAN에 존재하는 DHCP 서버를 찾는다.
- 클라이언트 자신의 IP 주소, DHCP 서버의 IP 주소 둘 다 모르는 상태이다.
- L2 이더넷 계층에서 **브로드캐스트 메시지(MAC : FF:FF:FF:FF:FF:FF)**를 보내어 같은 LAN에 존재하는 모든 장치에게 메시지를 전달한다.
- Discover 패킷에는 클라이언트의 MAC 주소를 포함한다.
- DHCP Offer : 메시지를 받은 DHCP 서버는 사용 가능한 주소를 Offer 패킷에 담아 브로드캐스트 메시지로 전송한다.
- Offer 패킷에는 Client Mac Address, Your IP Address, Subnet Mask, Gateway IP Address, DNS Server, IP Lease Time, DHCP Server Identifier가 포함되어 있다.
- Client Mac Address : 클라이언트의 MAC 주소
- Your IP Address : 사용 가능한 IP 주소
- Gateway IP Address : 게이트웨이 IP 주소
- IP Lease Time : IP 주소 임대 시간
- DHCP Server Identifier : DHCP 서버의 IP 주소
- 같은 LAN 내에 DHCP 서버가 여러 대가 존재한다.
- DHCP Request : 클라이언트는 LAN 내에 존재하는 여러 DHCP 서버로부터 응답을 받고, 이 중에서 하나의 DHCP 서버를 선택하여 사용할 주소를 달라고 하는 브로드캐스트 메시지를 보낸다.
- DHCP ACK : DHCP 서버는 클라이언트가 요청한 주소 정보를 브로드캐스트 메시지로 전송한다.
4가지 과정을 통해 클라이언트는 TCP/IP 통신을 위한 정보들을 제공받아 사용한다. 각 단계에서 클라이언트는 IP 주소가 할당된 상태가 아니기 때문에, DHCP 서버는 1:1 통신인 유니캐스트를 할 수 없다. 따라서 DHCP 서버는 브로드캐스트 메지시를 보내어 동일한 네트워크의 모든 호스트에게 사용 가능한 주소를 전송한다.
- 브로드캐스트 : IP 주소를 모르는 상태에서 동일한 네트워크의 모든 호스트에게 메시지를 전송하는 방법
4. 갱신(Renewal)
DHCP 서버는 클라이언트에게 사용 가능한 IP 주소를 영구적으로 할당하는 것이 아닌, 임대를 해주는 것이다. 따라서 해당 IP 주소를 주어진 시간동안 사용하다가, 시간이 만료되면 반납해야 한다.
DHCP 설정은 4번의 브로드캐스트 메시지를 발생시킨다. 브로드캐스트는 같은 네트워크에 존재하는 모든 장치에게 요청을 보내는 것이므로 비효율적인 방법이다. 따라서 주소를 할당받고 반납하는 과정을 반복하면 네트워크 과부하가 발생할 것이다.
이러한 비효율을 해결하기 위해 갱신을 통해 사용하던 IP 주소의 임대 시간을 연장할 수 있다. 갱신은 DHCP Request, DHCP ACK을 브로드캐스트 메시지로 주고받는다.
- DHCP Request : DHCP 서버에 갱신을 요청하는 패킷을 유니캐스트로 전송한다.
- DHCP ACK : DHCP 서버는 클라이언트에게 ACK 패킷을 유니캐스트로 전송한다.
DHCP 설정 과정에서는 브로드캐스트 메시지를 전송하였으나, 갱신 과정에서는 유니캐스트를 사용한다. 클라이언트와 DHCP 서버 둘 다
IP 주소를 알고 있기 때문에 유니캐스트로 전송이 가능하다.
5. 반환(Release)
DHCP 서버가 제공한 IP 주소의 임대 기간이 만료되었거나, IP 주소를 더이상 사용하지 않는다면 DHCP 서버의 주소풀에 IP 주소를 반환한다. DHCP 서버는 임대해 준 IP 주소와 임대 시간 정보를 가지고 있기 때문에, 클라이언트가 직접 반환하지 않더라도 회수할 수 있다.