DHCP(Dynaminc Host Config Protocol)
호스트의 주소를 자동으로 설정해주는 프로토콜이다. 2-30년전 컴퓨터를 사용할 때는 직접 컴퓨터의 IP 주소를 설정하고 여러가지 세팅을 해야만 인터넷에 접속할 수 있었다. 그런데 요즘 컴퓨터들은 전원만 꽂으면 사용할 수 있는데 이것이 DHCP 라는 프로토콜 덕분이다. DHCP의 목적은 호스트가 자신의 IP주소를 네트워크에 있는 서버로부터 자동으로 얻는 것이다.
장점
주소의 재사용이 가능하다
예를 들어 한 학과에 300명의 학생이 있다고 하자. 이 학생들이 학교에서 컴퓨터를 사용하기 위해서 인터넷에 접속하고 싶다면 300대의 컴퓨터 모두 IP주소가 할당되어야 할 것이다. 결국 300개의 IP주소가 필요하다는 것이다. 하지만 300명이 동시에 접속하고 있을 확률은 거의 없다. 결국 동시에 인터넷에 접속하는 컴퓨터의 수는 100대 정도일 것이므로 IP는 100개정도만 확보하고 있으면 될 것이다. 따라서 학과에서는 100개의 IP 주소만을 가지고 현재 인터넷에 접속중인 컴퓨터에만 IP를 동적으로 할당하면 될 것이다.
IP주소는 32bit 주소로서 인터넷이 설계될 60년대 말, 70년대 초에는 32bit 정도면 전 세계의 컴퓨터를 다 수용할 수 있을것이라고 예상했었다. 하지만 인구가 늘어나고 모든 사람들이 한 대 이상의 컴퓨터나 전자기기를 가지게 되면서 IP주소가 부족해지게 되었다. 그래서 IP 주소를 모든 컴퓨터, 스마트폰, 태블릿 등에 할당하기 보다는 '현재 사용하고 있는 + 현재 인터넷에 접속하고 있는 컴퓨터에만 IP 주소를 할당하면 32bit 주소로도 계속 커버할 수 있지 않을까' 하는 생각으로 만들어진 프로토콜이 DHCP이다.
DHCP의 동작
오른쪽의 노트북이 네트워크에 접속했다. 그리고 이 네트워크 내에는 223.1.2.5라는 주소를 가진 DHCP 서버가 있다고 가정하자.
- 클라이언트 노트북이 전원이 켜지고 자신의 IP주소가 할당되어 있지 않기 때문에 source 주소가 0.0.0.0이라고 되어있는 메시지를 255.255.255.255 주소로 전송한다. 이때는 목적지의 주소조차 모르기 때문에 모든 bit를 1로 설정해서 메시지를 전송하게 된다. 이를 BroadCasting 이라고 하고 255.255.255.255.를 Broadcast IP 라고 한다.
- 네트워크 내의 모든 컴퓨터들이 위 메시지를 받겠지만 DHCP 서버가 아니고서는 관심을 갖지 않을 것이다. 하지만 DHCP 서버가 이 메시지를 받으면 관심을 가지고, 컴퓨터가 사용할 수 있는 IP주소를 반환해 준다. 이를 DHCP offer 메시지라고 한다. 위 그림에서는 223.1.2.4 라는 IP주소를 주었다. 하지만 DHCP 서버도 목적지 주소를 알 수 없기 때문에 (0.0.0.0으로부터 메시지를 받았기 때문에) IP 주소가 담긴 메시지를 브로드캐스트 한다. 이 때 처음에 받았던 메시지에 담겨있던 transaction ID를 메시지에 담아서 브로드캐스트 한다.
- 브로드캐스트된 메시지를 받은 클라이언트는 transaction ID를 보고 자신이 보냈던 메시지에 대한 응답임을 확인한다. 그리고 새로 받은 IP를 사용하겠다는 request메시지를 다시 DHCP 서버를 향해 브로드캐스팅 하게 된다. 이때도 아직 자신의 IP 주소를 0.0.0.0으로 두고 브로드캐스팅 한다.
- DHCP는 메시지를 다시 확인하고 ACK 메시지를 클라이언트를 향해 브로드캐스팅 하게 된다.
- DHCP서버로부터 ACK 메시지를 받으면 그때부터 클라이언트는 할당받은 223.1.2.4라는 IP 주소를 사용하게 된다. 이때 lifetime 도 같이 설정되는데 위 그림에서는 3600초로 설정되었다. 이는 1시간이 지나면 다시 갱신 메시지를 통해서 IP 주소의 사용 시간을 갱신해 줘야 한나는 뜻이다.
궁금한점 : 처음에 DHCP로부터 사용가능한 IP 주소를 받으면 그 때부터 바로 해당 IP를 사용해도 되지 않을까?
네트워크 통신을 2단계로 줄일 수 있을 것 같은데 왜 확인과정을 한번 더 거쳐서 4단계 통신을 하는걸까?
위 물음에 대한 답은 간단하다. DHCP 서버가 반드시 한 대가 아니라 두 대 이상이 있을 수 있기 때문이다.
예를 들어 총 2대의 DHCP 서버들이 클라이언트의 요청에 각각 새로운 IP를 전송해주면, 클라이언트는 이 중에서 어떤 IP를 사용할 지 결정해서 사용 request 메시지를 보내야 할 것이다. 이는 IP 주소의 낭비를 막을 수도 있고, 추가적인 DHCP에게도 자신이 특정 IP를 사용한다는 것을 알릴 수 있게 된다.
추가적인 동작
DHCP는 애플리케이션 계층에 있는 프로토콜로써 실제 전송 프로토콜로는 UDP를 사용한다. 클라이언트의 메시지는 UDP 세그먼트로 캡슐화 되어 전송이되고, 브로드캐스트를 통해 전송된 메시지가 DHCP 서버에 도착하면 DHCP 서버의 트랜스포트 계층은 주소를 확인해 보고 메시지를 애플리케이션 계층으로 역다중화시켜 보내준다. 그러면 애플리케이션 계층에서 DHCP offer 메시지를 전송한다.
DHCP 서버는 클라이언트가 사용할 IP주소 외에도 2가지 정보를 더 준다. 바로 First-Hop Router주소와 DNS 서버 주소를 함께 주게된다. 인터넷을 설정한다는 것은 IP 주소만 필요한 것이 아니라, 클라이언트와 연결된 기본 게이트웨이(컴퓨터가 처음 접속할 때 맨 처음 거치게 되는 라우터)와 네트워크 내에서 사용 가능한 DNS 서버 주소를 같이 줘야 한다.
위 그림은 내 컴퓨터의 이더넷 정보이다.
MAC주소와 MTU(최대 전송 단위), 링크 속도(연결된 공유기의 회사가 정해준다), DHCP 사용여부, DHCP 임대 시작, 만료 날짜, IPv4주소, 기본 게이트웨이, DNS서버 등등 다양한 정보가 있음을 알 수 있다.
'CS > Network' 카테고리의 다른 글
[Network] 트랜스포트 계층 : 혼잡제어 (0) | 2021.11.29 |
---|---|
[Network] 무선 네트워크 : Wireless LAN(Wi-Fi) (0) | 2021.11.18 |
[Network] 가상 근거리 네트워크(VLAN) (0) | 2021.11.06 |
[Network] 링크 계층 스위치 (0) | 2021.11.05 |
[Network] 이더넷(Ethernet) (0) | 2021.11.05 |