DHCP란?
새로운 PC나 모바일 기기 등의 장치를 추가했을 때, 네트워크 설정을 대부분 1~2 순위로 하게 될 텐데요. 여기에는 IP 주소를 사용자가 직접 설정하는 고정 IP 방식과, 그와 반대로 적절한 IP 주소 후보에서 알아서 골라 네트워크에 붙은 장비에 할당해주는 동적 IP 방식이 존재합니다.
동적 IP 방식의 핵심이 되는 메커니즘이 DHCP인데요. DHCP(Dynamic Host Configuration Protocol)는 네트워크 내에서 IP 주소의 배분과 네트워크 configuration을 체계적으로 관리해주는 프로토콜입니다.
동적 IP 할당 방식을 사용하는 근거리 통신망(LAN) 내에는 DHCP 서버가 하나씩 있어, 네트워크 내에서 사용할 신규 IP 주소 발급 요청을 처리합니다. 대부분 가정이나 작은 회사에서는 라우터가 DHCP 서버의 역할을 합니다. 이보다 더 큰 네트워크에서는 서버급 PC로 DHCP 서버를 구축하기도 합니다.
네트워크 접속을 위해선, IP 주소 뿐만 아니라, 서브넷 마스크, 기본 게이트웨이, DNS 서버 정보도 적절히 설정되어 있어야 하는데요. DHCP 서버는 이러한 정보들을 사용자가 일일이 기억하거나 설정해야하는 부담을 덜어줍니다.
네트워크에 연결된 대부분의 기기들, 이를테면 컴퓨터, 스위치, 스마트폰, 게임 콘솔 등이 DHCP의 도움을 받아 쉽게 주변 기기나 인터넷과 통신할 수 있습니다.
고정 IP 할당 방법과 비교했을 때, 사용자의 실수로 서로 다른 기기가 같은 IP 주소를 가져 충돌이 일어나는 케이스를 크게 줄여나갈 수 있습니다.
더군다나 휴대폰과 같은 이동 통신 장비는 여기저기 네트워크를 넘나드는 일이 잦은데요. 그 때마다 네트워크에 속한 DHCP가 알아서 IP 주소를 잡아주기 때문에 Wifi 등에 붙기만 하면 사용자는 곧바로 네트워킹을 할 수 있습니다.
DHCP 메커니즘
DHCP에 의해 IP 주소가 부여되는 과정은 UDP의 68번 포트를 사용하는 패킷을 통해 확인할 수 있습니다.
DHCP Discover
먼저, 기기(클라이언트)가 특정 네트워크에 붙으면 해당 네트워크가 동적 IP 할당 기능을 제공하는지 확인해야 합니다. 즉, 네트워크 내에 DHCP 서버가 켜져 있는 지를 알아야겠죠. 그래서 클라이언트는 ‘DHCP Discover’이라는 메시지를 브로드캐스팅하여 DHCP 서버가 이에 반응해주기를 기다립니다.
DHCP Discover 메시지 내부를 살펴보면, 아직 IP 주소가 할당되지 않았기 때문에 source IP
필드가 전부 0으로(0.0.0.0
) 채워진 것을 볼 수 있습니다. 그리고 DHCP 서버의 위치가 아직 파악되지 않은 상태라 destination IP
는 Broadcasting 주소(255.255.255.255
)가 찍힙니다.
DHCP Offer
DHCP Discover 패킷이 돌아다니다가 DHCP 서버(아래 예시에서는 Cisco-Li_c8
)가 이를 발견하면, DHCP 서버는 IP 주소 하나를 골라 DHCP Offer packet에 보냅니다.
DHCP Offer 메시지를 보내는 의도는 “~이러한 IP 주소를 줄 수 있는데 이거 쓸래?”로 해석할 수 있습니다.
DHCP Request
그러면 클라이언트는 해당 IP를 사용하고 싶다는 의사를 DHCP Request packet에 담아 전달합니다. 클라이언트가 요청한 IP의 주소는 option(50)
에서 확인할 수 있습니다.
DHCP ACK
DHCP 서버는 클라이언트의 IP 할당 요청을 수락하고, 이를 ACK 패킷으로 응답하여 클라이언트에게 주소 할당이 성공적으로 되었음을 확인 시켜줍니다. 만일 서버가 해당 기기한테 IP 주소를 줄 수 없다고 결정하면 ACK 대신 NAK을 보내게 됩니다.
DHCP Inform/ACK
IP 주소가 확정되면, 이제부터 클라이언트는 IP 헤더에 부여 받은 주소를 사용할 수 있습니다. 앞으로 남은 일은 DHCP 서버로부터 기타 네트워크 설정과 관련된 추가 정보를 제공 받는 것인데요.
클라이언트는 마지막으로 DHCP Inform 메시지를 보내어 필요한 추가 정보(ex., 서브넷 마스크, DNS 정보 등)를 DHCP 서버에 요청합니다. DHCP 서버는 동일하게 ACK 메시지를 보내 클라이언트의 요구를 수용하는데요. 아까와는 다르게 Destination IP
가 확실하게 어디인지(192.168.1.104
) 나타내고 있는 것을 볼 수 있습니다.