[네트워크] 4-5. DHCP

kkado·2023년 5월 31일
0

네트워크

목록 보기
23/49
post-thumbnail

⚠️ 들어가기 앞서
경북대학교 컴퓨터학부 COMP0414-001 컴퓨터망 과목을 공부하며 정리한 글입니다.


지난번 글에서는 IP 주소와 클래스, 그리고 서브넷의 개념에 대해 알아보았고, 이 글에서는 실질적으로 IP 주소가 어떻게 할당되는지를 알아보려고 한다.

DHCP

호스트가 자신의 IP 주소를 할당받아 사용하는 hard-coded 방식을 사용하면 호스트가 네트워크를 사용하지 않을 때에도 그 호스트의 IP 주소를 사용할 수 없기 때문에 비효율적이다. 따라서 DHCP 방식을 사용한다.

DHCP는 Dynamic Host Configuration Protocol(동적 호스트 구성 프로토콜)의 약자로, IP 네트워크에 사용되는 네트워크 프로토콜이다. DHCP는 IP 주소 및 기타 통신 매개변수를 네트워크에 연결된 장치에 자동으로 할당한다. (NordVPN)

'내 주소' 라는 개념이 없이 동적으로 IP 주소를 할당해 주기 때문에 사용하지 않는 동안 낭비되는 IP 주소가 없게 된다.

각 네트워크에는 DHCP 서버가 있다. 호스트가 네트워크에 접속하면, IP 주소를 할당받기 위해 DHCP 서버와 통신한다. 과정을 먼저 간략히 살펴보면 다음과 같다.

  • 호스트가 DHCP discover 메시지를 보냄 (optional)
  • DHCP 서버가 DHCP offer 메시지를 보냄 (optional)
  • 호스트가 IP 주소를 요청하는 DHCP request 메시지를 보냄
  • DHCP 서버가 이에 응답하는 DHCP ack 메시지를 보냄

DHCP의 동작 과정

DHCP를 사용해서 클라이언트가 IP 주소를 할당받는 과정을 도식화하면 위 그림과 같다.

1) DHCP discover

👦🏻 : 안녕하세요, 저는 클라이언트인데요... 거기 DHCP 서버 계십니까?

클라이언트는 먼저 서버를 찾기 위해 메시지를 보낸다. DHCP 서버의 주소를 모르기 때문에 브로드캐스팅 해야 한다. 브로드캐스트 메시지이므로 DHCP 서버를 포함해 서브넷 안의 모든 호스트가 이 메시지를 들을 수 있다.

2) DHCP offer

🦊 : 안녕하세요, 저는 DHCP 서버입니다. 제 주소는 1.1.1.254이구요, 님이 사용할 수 있는 IP 주소는 1.1.1.5 입니다.

서버는 이에 응답한다. 아직 클라이언트는 IP 주소가 없기 때문에 서버 역시 브로드캐스트 메시지를 보낸다. 다만 자신의 IP 주소 (source IP address)는 알려준다.

3) DHCP request

👦🏻 : 네! 그 주소 사용하겠습니다. 저한테 할당 해 주시겠어요?

DHCP 서버의 존재 및 자기가 사용할 수 있는 IP 주소를 알아낸 클라이언트는 그 주소의 할당 요청을 서버에게 보낸다. 이 때도 브로드캐스트 메시지로 보낸다.

"응답한 DHCP 서버가 자기 주소 알려줬는데 왜 브로드캐스트로 보내지?"
-> 여러 개의 DHCP 서버가 존재할 수 있고, 그 서버들에게 모두 "내가 이 주소를 사용하고 싶다" 라는 사실을 알려야 하기 때문에

4) DHCP ack

🦊 : 알겠습니다. 이제부터 그 주소 사용하셔도 됩니다. 필요한 네트워크 자원 할당해 드릴게요.

서버는 알겠다는 메시지와 함께 다양한 네트워크 정보들을 전달한다. 다음과 같은 정보들이 포함된다.

  • first-hop router (다음 향할 라우터)의 주소
  • DNS 서버의 이름과 IP 주소
  • 네트워크 마스크 (어디까지가 네트워크 주소인지를 나타냄)

IP address: How to get one?

네트워크는 어떻게 서브넷 부분을 얻을까?

ISP가 가지고 있는 IP address 중 일부분을 취하게 된다.

어떤 ISP의 네트워크인지를 나타내는 ISP block 부분(... ... 0001 까지) 뒤에 각 organization마다 다른 subnet 네트워크 주소를 추가로 할당받고 있음을 확인하고 (000 부터 111 까지), 서브넷 마스크 부분이 /20에서/23으로 바뀐 것을 확인하자.

Hierarchical addressing

효율적인 라우팅을 위해 계층을 나누어서 관리한다.

위와 같이 Fly-By-Night-ISP ISP가 있고 ISPs-R-Us ISP가 있다고 하자. 두 네트워크는 서로 네트워크 주소가 다르다. 그리고 각각의 네트워크는 특정 요청을 자신한테로 보내면 된다는 것을 인터넷에 알려준다.

예컨대 Fly-By-Night-ISP ISP는 "200.23.16.0/23 으로 시작하는 IP는 나한테로 보내시오" 라고 한다.

이 때 organization 1이 ISPs-R-Us 밑으로 이동한다고 해보자.

그럼 이렇게 뻐꾸기 자식마냥 다른 자식들과 다른 녀석이 ISPs-R-Us 밑으로 들어오게 된다. 그러면 이동한 organization 1은 주소를 변경해야 할까?

답은 '변경하지 않아도 된다' 이다. 이렇게 해도 문제가 없는 것이, 기본적으로 routing algorithm은 longest prefix matching 원칙을 따르기 때문이다. 즉 200.23.18.0/23200.23.16.0/20 중에서 전자가 더 long prefix 이므로, organization 1로 향하는 패킷을 정상적으로 ISPs-R-Us 쪽으로 보낼 수 있다.


ISP는 ICANN(Internet Corporation for Assigned Names and Numbers, 국제인터넷주소관리기구)을 통해 ISP block을 할당받는다.

다음 글에서 다룰 NAT을 통해 IP 주소를 절약할 수 있으나 IPv4 체계 하에서 할당할 수 있는 IP 주소가 모두 소진된지는 꽤 오래 되었으며, 128비트 주소 체계를 사용하는 IPv6가 등장하였다.

profile
베이비 게임 개발자

0개의 댓글