1. Introduction
TCP/IP를 사용하는 각각의 컴퓨터는 IP주소를 가진다.
컴퓨터가 classless addressing을 사용하거나 subnet의 멤버인 경우, subnet mask도 필요하다.
결국, 다음과 같은 네가지 정보가 필요하다
- The IP address of the computer
- The subnet mask of computer
- The IP address of a router
- The IP address of a name server
이 정보들은 configuration file에 저장되어 bootstrap process가 실행되는 동안 불러온다.
DHCP
DHCP는 Dynamic Host Configuration Protocol의 약어로,
위의 4가지 정보를 디스크가 없거나 처음 부팅되는 컴퓨터에게 제공한다.
2. DHCP Operation
DHCP 클라이언트와 서버는 같은 네트워크에 있을 수도, 다른 네트워크 상에 있을 수도 있다.
각각의 상황을 살펴보자고
client 와 server가 같은 네트워크 상에 있는 경우
- DHCP 서버는 UDP port number 67로 passive open을 하고 클라이언트를 기다린다
- 클라이언트는 port number 68로 active open을 한다. 메세지는 UDP datagram으로 캡슐화된다(source port 67, destination port68). UDP user datagram은 IP datagram으로 IP datagram으로 캡슐화된다.
source IP address 는 전부 0, destination IP address는 전부 1로 설정된다
- 서버는 broadcast나 unicast로 응답한다. 서버가 클라이언트의 IP주소를 알기 때문에 unicast도 가능하다. Physical 주소도 알기 때문에 ARP가 필요없다. 하지만 시스템이 ARP을 bypass하는 것을 허락하지 않기 때문에 broadcast주소를 사용한다~
client와 server가 다른 네트워크 상에 있는 경우
- DHCP request 는 broadcast다. 왜냐하면 client가 server의 IP주소를 모르기 때문이다.
- relay agent는 DHCP 서버의 unicast address를 알고 port67번에서 broadcast 메세지를 기다린다.
- relay agent가 packet을 받으면, unicast datagram으로 캡슐화되어 DHCP서버에 보낸다.
- 이 datagram은 라우터를 거쳐 DHCP서버에 도착한다. DHCP서버는 relay agent로 부터 온 메세지임를 안다. 왜냐하면 메세지에 relay agent의 IP주소 필드가 있기 때문이다.
- relay agent는 서버에서 응답을 받아 DCHP client에 보낸다.
Use of UDP ports
DHCP server는 67번 포트, client는 68번 포트를 사용한다.
- Operation code:DHCP 패킷이 request(1)인지 reply(2)인지 정의
- Hardware type:physical network type을 정의한다. Ethernet은 1이다
- Hardware length:physical address를 담고있다. Ethernet은 6이다
- Hop count:패킷이 최대 몇개의 hop을 지날 수 있는지 담고있다
- Transaction ID:client에 의해 설정되며, reply와 request를 매치한다. 서버는 reply에 같은 값을 넣어서 전송한다.
- Number of seconds:클라이언트가 시작된 후 지난 시간을 기록한다
- Flag:leftmost bit만 바뀌고 나머지 비트는 0이다. LMB가 0이면 unicast, 1이면 broadcast
- Client IP address:client 의 IP주소. 클라이언트가 정보 없으면 다 0으로 채움
- Your IP address:client의 IP주소, 서버가 채운다.
- Server IP address:server의 IP주소 서버가 채움
- Gateway IP:라우터의 IP주소. 서버에 의해 채워짐
- Client hardware address:client의 physical address
- Server name:서버가 채움
- Boot filename:reply packet에서 서버가 채움. boot file의 full pathname정보가 있다
Options for DHCP
3. Configuration
The DHCP has been devised to provide static and dynamic address allocation
Static Address Allocation
DHCP서버는 physical address를 IP address에 바인딩하는 데이터베이스를 가진다.
Option with tag 53
DHCP client transition diagram
-
INIT state
처음 DHCP client가 실행되면, client는 DHCPDISCOVER 메세지를 broadcast한다. 포트번호 67
-
SELECTING state
클라이언트가 요청한 타입의 서비스가 가능한 서버는 DHCPOFFER메세지와 함께 응답한다. 이 메세지에 서버는 IP주소/duration을 제공한다.
이 DHCPOFFER메세지 보낸 서버는 제공한 IP주소 잠궈서 다른 클라이언트가 접근 못하게 한다.
클라이언트는 DCHPREQUEST메세지를 여러 서버 중 선택한 서버에 보낸다.
-
REQUESTING state
클라이언트는 DHCPACk 메세지를 서버로 부터 받기 전까지 requesting state에 있는다.
-
BOUND state
DHCPACK을 받고, 클라이언트는 BOUND state에 들어간다. 이 state에서 client는 IP주소를 계약 기간동안 사용할 수 있다. 기간의 50퍼센트에 도달할 경우 client는 다른 DCHPREQUEST를 요청한다. DHCPRELEASE 메세지로 취소하고 처음으로 돌아갈 수도 있다.
-
RENEWING state
DHCPREQUEST를 요청하고 RENEWING 상태에 있는 경우, DHCPACK 를 받으면 타이머를 리셋하고 bound state로 돌아간다. DHCPACK못받고 만료 기간의 87.5퍼센트가 지난 경우 rebinding state로 간다.
-
REBINDING state
클라이언트는 DHCPACK을 받으면 bound state에 돌아가서 타이머를 리셋하고, 만료 시간에 도달하면 처음의 상태로 돌아가 다른 IP주소를 할당받는다.
Exchanging message
위의 다이어그램을 진행하는 과정이다