이 포스트는 널널한 개발자님 강의를 참조하여 작성한 포스트입니다.
우리가 인터넷을 사용하려고 하면 설정해야 할게 되게 많다. 기본적으로 호스트를 식별해주는 유니크한 값인 IP주소를 설정해야 한다. IPv4에서 32bit 어떤 숫자값이 나와야 한다. 근데 그 값이 어떤 값인지 우리는 알 수 없다. 무엇보다도 우리가 인터넷이라는 것을 돈 주고 사용하는데 그 인터넷 서비스를 제공해주는 회사를 IPS라고 한다. 즉, IPS쪽에서 IP주소들을 가지고 있는데 이 주소들중에 1개를 부여해준다. 다음에 서브넷 마스크 설정을 해줘야 한다. 그리고 무엇보다도 게이트웨이 IP 주소 설정을 해줘야 한다. 즉, IP주소, 서브넷마스크, 게이트웨이 설정이 L3에 대한 설정이다. 그리고 추가적으로 L4설정인 DNS설정을 해줘야 한다. 그래야 네이버를 접속을 하면 네이버의 IP주소를 DNS서버가 알려주게 되어 있다. 그래서 이런것들을 우리가 인터넷을 사용하려면 직접 사용해야 한다. 그런데 사실 우리가 PC를 사용하면서 이런 설정을 해본 기억이 있지는 않을 것이다. 보통 우리는 자동설정이라는 것을 이용한다. 근데 여기서 자동이라고 한다 하는 것은 DHCP를 이용하겠다는 것인데 여기서 DHCP가 무엇일까?
인터넷을 쓰기 위해서는 호스트에 대한 TCP/IP설정을 잡아줘야 한다. 즉, IP주소 + 게이트웨이 + 서브넷 마스트 + DNS 설정을 해줘야 인터넷을 이용할 수 있다. 그런데 DHCP를 이용하게 되면 자동으로 된다는게 핵심이다. 그러면 어떻게 자동으로 되는걸까?
DHCP는 구성이 클라이언트와 서버로 구성이 되는데 이 자동이라고 할만한 모든 설정이 서버가 가지고 있다. 그래서 클라이언트가 접속을 하면 서버가 설정을 자동으로 하게 알려준다. 그래서 당연히 네트워크상 서버가 존재해야 하고 서버한테 필요정보를 runtime에 요청한다.
작동방식은 생각보다 간단하다. 위 그림에 게이트웨이의 IP를 편의상 192.168.0.1이라고 하고 서브넷 마스크를 255.255.255.0이라고 하자. 그리고 5번PC가 DHCP 서버라고 생각하자. 그런데 여기서 1번 PC가 전원이 켜졌을 때 그 때 네트워크로 Broadcast Packet이 나간다. 여기서 Broadcast에 주목하자. 그니까 쉽게 네트워크로 '우리 중에 DHCP 서버가 있니?'라고 Discovery Traffic을 보낸다.
그러면 이게 브로드캐스트가 되니까 L2 Access Switch에 도달하면 L2 Access Switch가 브로드캐스팅을 한다. 그걸 up-link로 전달하고 그 up-link에서 또 퍼진다. 즉, 브로드캐스트가 발생하면 네트워크 전체에 퍼질것이고 그 때 DHCP 서버가 응답할 것이다. 즉, 누군가 어떤 request를 하면 여기에 대해 response를 보낼 것이다. 그러면 1번 PC가 다시 요청을 해서 '저번에 192.168.0.10이라는 IP주소를 할당받았었는데 그 주소 계속 써도 되는거니?'라고 묻고 DHCP 서버가 OK라고 하면 그 주소를 계속 쓰는 것이고 아니면 새로운 IP주소를 할당 받는다. 이 DHCP 서버가 IP주소뿐만 아니라 게이트웨이, 서브넷마스크, DNS주소도 같이 준다.
즉, DHCP 서버는 이러한 정보들을 pool이라는데 관리하는데 이 pool에서 정보를 꺼내줘서 할당을 할 때 중복을 방지하기 위해 각종 메커니즘으로 통제를 한다.
결론적으로 DHCP 서버에서 가장 핵심은 브로드캐스트 도메인안에 묶여야 한다.