Address block 할당받기
하나의 그룹이 자신들만의 서브넷을 할당받기 위해선 ISP를 통해야 합니다. 네트워크 관리자는 ISP에게 서브넷 할당을 요청하면 ISP 자신들이 가지고 있던 subnet block에서 일부분을 할당해 줍니다. 예를 들어 ISP가 200.23.16.0/20이라는 subnet block을 가지고 있고 이를 8개의 동일한 갯수의 IP를 할당할 수 있는 작은 address block으로 나눴다면 subnet block을 요청한 조직 하나는 200.23.16.0/23, 200.23.18.0/23, …, 200.23.30.0/23 중 하나를 할당받을 것입니다. 위와 같은 과정을 통하기 위해선 ISP 역시 우선 subnet block을 할당받아야 합니다. 또 한 public IP는 전 세계적으로 고유해야 하기 때문에 결국 최상위에서 누군가가 IP를 관리하고 있어야 합니다. ICANN(Internet Corporation for Assigned Names and Numbers)라는 비영리 파트너십이 이 역할을 합니다. ICANN은 IP 주소 관리뿐만 아니라 수많은 인터넷에 연결된 컴퓨터가 서로를 찾을 수 있게 하는 식별자를 모두 관리하고 감독합니다. 때문에 DNS 루트 서버 역시 ICANN이 관리합니다.
DHCP(Dynamic Host Configuration Protoco)로 주소 할당받기
하나의 조직이 subnet block을 할당받았다면, subnet에 속하는 IP 주소들을 자신들 네트워크에 존재하는 호스트와 서브넷의 인터페이스에 할당할 수 있습니다. IP 주소를 수작업으로 일일이 지정해 줄 수도 있지만 다수의 호스트가 존재한다면 너무 많은 시간이 걸립니다. 따라서 DHCP를 사용해 자동으로 IP 주소를 호스트에게 할당합니다. DHCP를 통해 하나의 호스트가 받는 IP 주소는 매번 같을 수도 있고 다를 수도 있습니다. IP 주소 동일 여부는 네트워크 관리자가 세팅하기 나름입니다. 또 한, 호스트는 DHCP를 통해 자신의 IP뿐만 아니라 서브넷 마스크, first-hop router의 주소, 로컬 DNS server 주소도 알 수 있습니다.
DHCP를 이용하면 호스트는 네트워크, 커넥션에 관련된 세팅을 할 필요 없이 주소 풀 내에 있는 주소를 할당받을 수 있습니다. 즉, plug-and-play 한 프로토콜입니다. 이 때문에 다수의 네트워크 접속과 끊음이 발생하고 하나의 호스트가 일정 시간만 네트워크에 접속해 있는 도서관이나 카페 등 장소에 적합합니다. 이 부분에서 어느 정도 예상을 했겠지만 동적 IP 할당이 바로 DHCP를 통해 이루어집니다. 동적 IP는 통상적으로 lease time이 존재해 이 시간 동안만 IP를 사용할 수 있습니다. 그 때문에 IP 주소를 갱신하는 기능도 DHCP가 제공합니다.
DHCP는 client-server 프로토콜입니다. 여기서 클라이언트란 자신의 IP 주소를 포함해 네트워크와 관련된 정보를 얻기를 대기 중인 호스트입니다. DHCP 서버는 같은 서브넷 내부에 위치해 있습니다. 같은 서브넷 내에 DHCP 서버가 없는 경엔 에이전트(라우터를 주로 사용)를 통해 필요한 DHCP의 주소를 얻어 사용합니다. 위와 같이 하나의 서브넷 내에 DHCP 서버가 존재하고 해당 서브넷으로 새로운 클라이언트가 접속했다면 다음과 같은 절차를 통해 IP를 할당합니다.
- DHCP server discover: 클라이언트가 자신이 사용할 DHCP 서버를 탐색합니다. 이는 DHCP discover message를 통해 이루어지며 UDP , 67번 포트를 사용합니다. IP datagram에 의해 이때, 클라이언트는 DHCP의 주소를 모르고 자신의 주소도 모릅니다. 그래서 IP를 할당받지 않았을 때 호스트 자신을 나타내는 특수 IP 주소인 0.0.0.0을 source IP address로 지정합니다. 그리고 limited broadcasting을 사용하기 때문에 destination IP addrss는 255.255.255.255로 지정합니다. 이 IP 패킷이 link layer에 도착하면 frame들이 해당 서브넷에 연결된 모든 노드들에게 broadcast 됩니다.
- DHCP server offer: DHCP 서버가 위 과정에서 클라이언트가 보낸 DHCP discover message를 수신했다면 이에 대한 응답으로 DHCP offer message를 255.255.255.255 IP를 이용해 limited broadcast 합니다. 이때, DHCP 서버가 broadcast를 하는 이유는 하나의 서브넷 내에 물리적인 DHCP 서버가 여러 대 있을 수 있기 때문입니다. 이 경우 클라이언트는 어떤 DHCP 서버를 사용할지 골라야 합니다. 서버가 응답한 offer message에는 서버 자신이 받은 discover message에 대한 transaction ID, 서버가 제안하는 IP 주소, 서브넷 마스크, IP address lease time(해당 IP 주소가 유효한 시간. 통상적으로 수시간~수일)이 존재합니다.
- DHCP request: 클라이언트가 자신이 사용할 DHCP 서버를 선택하고 선택한 DHCP 서버에게 이를 알립니다. 그러면서 DHCP request message도 함께 보냅니다. 이 메시지에는 여러 파라미터들이 존재합니다.
- DHCP ACK: 서버는 DHCP request message에 대한 응답으로 DHCP ACK message를 보내면서 DHCP request로 받은 파라미터들을 확인하고 승인합니다.
위 과정을 도식화하면 다음과 같습니다. 여기서 yiaddr(your internet address)이란 새로 도착한 클라이언트에게 할당될 주소를 담는 필드입니다.