DHCP란
평소 컴퓨터를 켜면 무엇을 하는가. 메일을 확인하거나, 메신저를 켜거나, 게임을 한다. 그리고 이 중 인터넷 연결없이 돌아가는 것은 없다. TCP/IP 프로토콜에서 인터넷으로 다른 컴퓨터와 연결하기 위해서는 연결하고 싶은 컴퓨터의 주소를 알아야한다. 여기서 쓰이는 주소가 바로 IP 주소인데, 이 IP 주소를 관리하기 위한 일종의 규약이 DHCP(Dynamic Host Configuration Protocol)인 것이다.
실은 이렇다. 우리는 아무런 생각없이 써온 IP주소는 모두 DHCP 서버의 관리를 받고 있었던 것이다. 즉, 우리가 인터넷에 접속할때 DHCP 서버에 쓸 수 있는 IP 주소를 요청하고 DHCP 서버는 이 요청을 받아들여 IP 주소를 정해진 시간동안 우리에게 할당해주는 식이다. 또한, 시간이 지나면 DHCP 서버에게 다시 IP주소 사용 연장요청을 해야한다.
그렇다면 왜 DHCP를 쓰는 것일까? 간단하다. 중앙관리의 효율성 때문이다. IP 자원은 한정되어 있다. 때문에 중앙에서 이를 관리하면서 안쓰는 자원은 빨리빨리 회수를 할 수 있는 것이다. 또 중앙에서 관리하기 때문에 서로 다른 PC가 같은 IP를 쓸 일도 없다. 즉, 충돌문제도 예방하는 것이다.
DHCP의 구조
출처 : 한빛미디어
설명한 내용을 그림으로 표현해보면 위와 같다. 특정 네트워크 영역에서 DHCP 클라이언트들이 IP 주소를 요청하고, DHCP 서버는 요청을 받아서 IP 주소를 할당해주는 식이다. 이와 함께, 클라이언트의 TCP/IP 설정이 초기화되고 다른 PC와 통신을 할 수 있게되는 것이다.
여기서 생기는 한가지 의문이 있다. 분명 IP 주소가 없으면 통신을 할 수 없다고 했다. 그렇다면 Client는 처음에 DHCP 서버에 어떻게 요청을 보낼까? 답은 브로드캐스트이다. 즉, 같은 네트워크 영역(서브넷)에 있는 모든 PC들에게 요청을 보내는 것이다. "저는 A라는 클라이언트 인데요, 이 편지를 받는분중에 DHCP 서버님이 계신다면 저에게 답장을 좀 주세요!"라는 메세지를 적어서 사방에 뿌리는 것이다. 그러면 DHCP 서버는 해당 메세지를 보낸 클라이언트에게 IP를 할당해주는 것이다. 이렇게 브로드캐스트를 사용하려면 기본적으로 빠른 통신 속도가 필요한데, 이러한 이때문에 DHCP는 UDP 프로토콜을 기반으로 작동한다.
DHCP의 원리
위에서 설명하기를, DHCP 서버는 정해진 시간동안 IP 주소를 할당해준다고 하였다. 그렇다면 그 시간이 지나고서는 무슨 일이 벌어질까? PC방의 선불 시간이 끝났을때처럼 자동으로 인터넷이 끊겼던 일은 분명 없었는데 말이다. 다행히도 IP 주소의 임대 시간(Lease Time)이 끝나더라도, DHCP 서버에 갱신 요청(IP Address Renewal)을 한다면 IP 주소를 계속 쓸 수 있다. 물론 IP가 더이상 필요 없어지면 IP 주소를 반납(IP Address Release)하기도 한다.
개략적인 절차는 아래의 그림에서 잘 표현되고 있다.
출처 : NETMANIAS
그림의 4단계를 조금 더 상세히 설명하자면,
1. DHCP Server Discovery
클라이언트는 처음에 DHCP 서버의 주소를 모른다. 때문에 사방(서브넷)으로 DHCP 서버를 찾는 메세지를 브로드캐스팅한다.
2. DHCP Server Offer
DHCP가 브로드캐스트 메세지를 받으면 클라이언트에게 서버 자신의 IP 주소를 알려준다. 이와 함께 클라이언트가 사용할 IP주소, DNS 정보, IP 주소의 사용 시간(Lease Time)을 전달한다. 그런데, 이 DHCP 서버 또한 클라이언트의 주소를 알지 못하여 메세지를 보낼 수 없다.(아직 IP 주소 할당이 안됐다!) 그렇기 때문에 마찬가지로 브로드캐스팅하여 이 정보를 사방으로 뿌린다.
3. DHCP Request
클라이언트는 서버로부터 응답을 전해받는다. 그런데, 응답을 전해온 DHCP가 여럿일 수 있다. 그 경우 클라이언트는 이제 갑의 위치에 올라서 자신에게 가장 유리한 최적 서버를 선택하고, 해당 서버에 DHCP 요청 메세지를 보낸다.
4. DHCP ACK
메세지를 받은 서버는 "그럼 우리 이 계약을 확정하자"라는 의미로 ACK 메세지를 클라이언트에게 보낸다.
이렇듯 우리가 아무생각 없이 인터넷을 사용하는 동안 실은 뒤에서 엄청난 일들이 벌어지고 있던 것이다. 늘 수고해주는 DHCP 서버에게 심심한 감사의 말을 전한다.
참고
http://blog.naver.com/PostView.nhn?blogId=cmw1728&logNo=221075863208
http://jwprogramming.tistory.com/35
https://jinheeahn.wordpress.com/2015/06/04/dhcp-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/
'IT > 기타' 카테고리의 다른 글
맥북에서 키노트로 이미지 추출하는법 (0) | 2018.03.01 |
---|---|
[전산학] CPU 스케줄링 (0) | 2016.12.06 |