[7/29] 패킷트레이서 활용 소수전공 6차시

DHCP란?


DHCP는 Dynamic Host Configuration Protocol이다. 직역하자면 '동적 호스트 설정 프로토콜(통신규약)'이다.

라우터는 인터페이스 및 호스트에 IP 주소를 할당해 줄 수 있다. 예전에는 각 PC마다 고정 IP 설정을 도입하여 사용 하거나, RFC 903에 정의된 것처럼 RARP를 도입하여 동적으로 적절한 IP 주소를 취득할 수 있게 구현하여 사용하였다. 고정 IP 설정의 단점은 무엇보다도 IP 설정에 실수가 있는 경우 인터넷이 안 된다. 예를 들어 실수로 오타가 날 경우도 있고, 실수로 다른 컴퓨터와 동일한 IP를 할당하여 충돌나는 경우도 존재한다. 그외에도 사용하지 않고 꺼놓은 컴퓨터에도 모두 IP를 하나씩 할당해야 하다 보니 IP가 모자라는 문제도 발생한다. 후자로 사용한 RARP의 단점은 데이터 링크계층에서 작동되었어야 했으므로 하드웨어로서 구현이 어려웠으며, 서버가 각각의 네트워크에 존재해야만 한다는 단점이 있어 추후 DHCP가 발표되며 사장되었다.

이런 문제를 해결하기 위해서 IP를 필요로 하는 컴퓨터에게 자동으로 할당해서 사용할 수 있도록 해주고, 사용하지 않으면 반환받아 다른 컴퓨터가 사용할 수 있도록 해주는 것이 DHCP이다.

보통 라우터에 해당 기능이 탑재되지만, 별도의 서버에 DHCP 서비스를 설정하여 사용할 수도 있다. 라우터는 단지 게이트웨이 역할만 하고, DHCP 서버는 별도로 두는 구성도 많이 사용된다.

DHCP Lease


DHCP의 경우 IP를 할당해 주는 것을 **임대(Lease)**라고 한다. 이 임대에는 임대 기간이 있는데, 말 그대로 해당 IP 주소를 사용할 수 있는 기간을 말한다. 즉, 임대 기간이 끝나면 해당 IP 주소는 DHCP 주소 풀로 반환이 된다는 것이다. 임대 기간은 장소에 따라서 적당한 값을 찾아서 설정하면 된다. 유동인구가 많은 가게 등지에서 임대 기간을 8일로 두게 된다면 순식간에 주소 풀이 동날 것이고, 더 이상 IP 주소를 할당할 수 없게 되어버린다. 이런 유동인구가 많은 지역에서는 임대 기간을 2~3시간 정도로 짧게 설정하는 편이 좋다. 가끔 카페에서 오래 있거나 할 때, 멀쩡히 잘 사용하던 네트워크가 갑자기 네트워크 로그인을 하라고 뜨는 이유가 임대기간이 끝났기 때문이다. 가정이나 기업 등에서는 기본값을 8일~30일 등으로 길게 잡는다. ipTIME 공유기의 경우 기본적으로 임대 기간이 7200초(2시간)이다.

DHCP Lease는 다음과 같은 과정으로 진행된다.

  1. DHCP Discover

    IP 주소가 할당되지 않은 클라이언트는 MAC 주소를 기반으로 IP 주소를 받아오기 위해 로컬 네트워크에 Discover 패킷을 Broadcast한다. 이때, Broadcast로 뿌려진 패킷은 해당 네트워크 내의 모든 호스트에게 날아가게 된다. 이 Discover 패킷에는 IP 주소가 필요한 호스트의 MAC 주소가 담겨져 있어서 DHCP 서버가 응답할 때 패킷을 수신할 수 있게 된다. 호스트들이 패킷을 받고 나서, DHCP 서버가 Discover 패킷을 받게 되면 2단계로 넘어간다. 물론 이 때, 다른 호스트들은 '어? 내 패킷이 아니네?' 하고 패킷을 폐기한다.

  2. DHCP Offer

    DHCP 서버가 Discover 패킷을 받게 되면, DHCP 서버는 Offer 패킷을 Broadcast한다. 이때, MAC 주소에 아까 Discover 패킷을 보낸 호스트의 MAC 주소를 적어서 보낸다. 마찬가지로 Broadcast이기 때문에 해당 네트워크의 호스트 전체에 패킷이 날아가지만 역시 Discover를 보낸 호스트 이외의 다른 호스트는 패킷을 전부 폐기한다. Discover를 보낸 호스트가 Offer 패킷을 받으면 3단계로 넘어간다.

  3. DHCP Request

    해당 호스트는 Offer를 받았으면 해당 네트워크에는 DHCP 서버가 있다고 판단, Request 패킷을 Broadcast한다. Request 패킷은 말 그대로 IP 내놔. 이 역시 Broadcast이기 때문에 해당 네트워크의 호스트 전체에게 날아가고, DHCP 서버 이외의 다른 호스트는 패킷을 폐기한다. DHCP 서버가 Request 패킷을 받으면 4단계로 진행한다.

    이 때 Request 패킷을 Broadcast 하는 이유는 DHCP 서버가 1대 이상일 수 있기 때문이다.

  4. DHCP ACK

    DHCP 서버는 Request 패킷을 받으면 자신의 IP 임대 풀에서 할당 가능한 IP 주소를 찾는다. 예를 들어 게이트웨이와 DHCP가 모두 192.168.0.1일 경우 192.168.0.1을 제외한 0.2~0.254까지의 임대 풀을 가지고 있다. 이 임대 풀에서 가장 앞에 있는 IP 주소부터 할당하게 되는데, 사용 중이 아닌 경우엔 해당 IP 주소를 할당을 하게 된다. 여기서는 192.168.0.2를 할당한다고 가정 하면, "Your (Client) IP Address: 192.168.0.2 (192.168.0.2)" 이런 패킷을 날리게 된다. 역시 Broadcast로 전송되며, 호스트가 이 패킷을 정상적으로 받았다면 IP 주소가 할당된다.

이 과정을 흔히 DORA라고 부른다.

DHCP Renewal


임대 기간이 끝나면 IP 주소를 반환하게 된다. 만약 임대 기간이 1시간이라면, 1시간마다 IP 주소를 반환하고 다시 임대하면 불필요한 브로드캐스트 트래픽을 발생시키게 된다. 이것이 전혀 효율적이지 않기 때문에 DHCP에는 **임대 갱신(Lease Renewal)**이라는 것이 있다.