본문 바로가기

Computer Network

[Lecture] DHCP

IPv4의 기본적인 문제점

  • address space 부족
  • security

 

대안

  1. IPv6사용 - 96년도에 디자인했고, 앞으로 나오는 요구사항을 맞출 수 있다는 보장이 없음 (부정적 의견)
  2. 새로운 프로토콜 - 동적으로 변화가 가능한(요구사항 반영 가능한) 유연한 IP를 만들자는 아이디어가 있다

 

IPv4 를 사용하면서 얻은 가장 큰 교훈

  • 미래를 예측할 수 없다
  • 아키텍쳐(생태계)가 하나 들어오면 바꾸기가 어렵다

 

IPv6로 바꾸기 어려운 이유

전세계 존재하는 모든 라우터가 IPv6으로 바뀌어야하는데, 각 라우터의 소유자가 다 다르다(KT,SKT등 통신 사업자)

생태계적인 문제로 타협이 어렵다

 


라우터는 포워딩만 해야한다.. 근데 여러가지가 곁들여진 ..

 

DNS가 라우터로 가져오고, naver computer IP로 향하는 패킷이 라우터로 나간다

DNS 서버에 DNS Query를 보내고, 해당 도메인의 IP 주소를 얻은 후에 그 IP 주소를 사용하여 목적지 서버와의 통신이 라우터를 거쳐 나가게 된다

 

DHCP란?

IP 192.168.1.47
Subnet Mask 255.255.255.0
Router 192.168.1.1
DNS 192.168.1.1

 

IP정보 : 192.168.1은 subnet ID주소 (고정 IP X, 유동 IP O)

Router정보 : 바로 앞에 있는 라우터 주소 ( 192.168.1.1 : 같은 네트워크에 첫번째 있는 것)

DNS : local name server의 IP주소

 

 

DHCP는 Host Configuration정보들을 동적으로 제공해주는 것이다

ㄴDynamic Host Configuration Protocol

 

goal : allow host to dynamically obtain its IP address from network server when it joins network

  • can renew its lease on address in use
  • allows reuse of addresses (only hold address while connected/"on")
  • support for mobile users who want to join network(more shortly)

 

IP의 바뀌는 주소는 유일하지 않다. 라우터를 통해서 나갔는데, 또 NAT에 묶여있을 수 있다.

(내부에선 IP주소가 다르지만 나갈땐 다 같다)

* GWR : gatewayrouter (첫번째 host)

 

e.g. 10000명이 네트워크를 사용한다고 할 때, 고정 IP를 10000개 산다면 비용적인 측면에서 손해이다

따라서, 약 1000개의 IP주소만 사서 빌려주고 다시 회수한다 (DHCP이용)

 

DHCP client-server scenario

어떤 식으로 DHCP server한테 정보를 얻어낼까?

 

(1) DHCP discover

어떤 네트워크 망에서 노트북을 키면, DHCP서버한테 DHCP discover 메세지를 보낸다

src : 0.0.0.0 = "난 아직 무명이야" ; 68 = 68번이야

dest : 255.255.255.255 = "subnet에 있는 모든 맴버들아 ! 내 메세지를 받아" ; 67 = 67번이야

ㄴ모두 1이면 broad cast이다

 

(2) DHCP offer

다른 서버는 67번이 안열려있기 때문에 스택에서 Link로 올라오다가 drop된다. 67번을 열고 기다리고 있는 DHCP server만 의미있게 받고 offer한다

dest : 68번이 아직 IP주소가 없기 때문에 모든 멤버에게 보낸다. 68번이 열려있고, transaction ID가 같은 멤버를 찾는다

yiaddrr: 223.1.2.4 = "지금부터 넌 223.1.2.4를 1시간동안 쓸 수 있다"

 

(3) DHCP request

src : IP주소가 확정되지 않았으므로 여전히 무명이다

yiaddrr : 223.1.2.4 = "네가 보내준 이 주소를 쓰고 싶다"

transaction ID : request의미

etc : 라우터, DNS 정보도 다 들어가 있었다는 걸 유념

 

DHCP request도 broadcast를 했다. 주소를 쓰지 않는 이유는 내부에 DHCP server 여러개가 있을 수 있기 때문이다

(선택을 받았는지 확인한다)

Q. 어떤 기준으로 선택할까?

A. 일반적으로

  1. 먼저 응답한 DHCP 서버 선택 (First Come, First Serve)
  2. 가장 낮은 IP 주소 제공: DHCP 서버들은 자신들이 할당할 수 있는 IP 주소 범위를 알고 있다. 클라이언트는 DHCP Discover 메시지를 보내면서 동시에 자신에게 할당된 IP 주소를 요청한다. 여러 DHCP 서버가 응답할 경우, 클라이언트는 가장 낮은 IP 주소를 가진 DHCP Offer를 선택한다.

 

각 layer별로 주소가 있다. 어떤 주소간의 모두 1이면 broadcast를 의미한다

 

IP datagram format

 

네트워크 links는 MTU(max.transfer size)를 갖는다 //최대 전송가능한 크기; link타입마다 다르다

fragflag : 뒤로 fragment됐는지 알려준다 (뒤에 남은 쪼개진 조각이 있을때만 1)

offset : 쪼개진 packet이 전체 packet에서 시작하는 포인트 나누기8(/8) 한 값이다 (header 값 줄이기 위한 노력)

데이터 길이가 크면, 나눠서 보낸다 (서로 다른 패킷으로 전송 => 재조립한다 => 원래 기존 패킷으로 저장)

패킷 전송 중 하나가 없어지면, TCP재전송이 발생한다