DHCP(Dynamic Host Configuration Protocol)

DHCP 프로토콜 설명

DHCP 프로토콜은 동적으로 호스트 IP를 부여하기 위한 프로토콜이다.

참고: 위키백과, http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol

RFC 2131, http://tools.ietf.org/html/rfc2131

[그림] DHCP 호스트 상태 및 동작 원리

DHCP 호스트 상태 및 동작 원리 설명

INIT: 초기 상태

    DHCP Discover 메시지를 67번 포트를 사용하여 브로드캐스트한다.

SELECTING: 선택 상태

    DHCP Discover 메시지를 보낸 후의 상태이다.

    서버에서 DHCP Offer 메시지를 수신한다.

REQUESTING: 요청 상태

    DHCP Request 메시지를 보낸 후의 상태이다.

BOUND: 바운드 상태

    DHCP ACK를 받은 후의 상태이다.

    임대 시간의 50%가 지나면 DHCP Request를 보내고 RENEWING 상태로 전이한다.

    임대 시간이 만료하면 DHCP Release를 보내고 INIT 상태로 전이한다.

RENEWING: 재설정 상태

    BOUND 상태에서 임대 시간의 50%가 지나 DHCP Request를 보낸 후의 상태이다.

    DHCP ACK를 받으면 다시 BOUND 상태로 전이한다.

    임대 시간의 87.5%가 지나면 DHCP Request를 보내고 REBINIDING 상태로 전이한다.

REBINDING: 재연결 상태

    RENEWING 상태에서 임대 시간의 87.5%가 지나 DHCP Request를 보낸 후의 상태이다.

    DHCP ACK를 받으면 BOUND 상태로 전이한다.

    DHCP NACK를 받으면 INIT 상태로 전이한다.

프로토콜 스택

DHCP 메시지는 옵션의 op 코드가 53이다.

OP: 요청(1), 응답(2)

HTYPE: ethernet일 때는 1

HLEN: ethernet일 때는 6

HOPS: 패킷이 전달할 때 경유할 수 있는 최대 홉 개수

XID: 요청과 응답을 확인하기 위한 트랜잭션 식별값

SECS: 클라이언트가 부팅 후 경과 시간(단위: 초)

Flags:맨 왼쪽 비트(0:유니 캐스트, 1:브로드 캐스트)만 사용하고 나머지는 0

CIADDR: 클라이언트 IP 주소(모를 때는 0.0.0.0)

YIADDR: 클라이언트 IP 주소, 요청의 응답으로 서버에서 채워줌

SIADDR: 서버의 IP 주소, 요청의 응답으로 서버에서 채워줌

GIADDR: 라우터의 IP 주소, 요청의 응답으로 서버에서 채워줌

CHADDR: 클라이언트 물리 주소

Server Name: 서버의 도메인 이름, 요청의 응답으로 서버에서 선택적으로 채워줌

Boot File name: 부트 파일의 전체 경로명, 요청의 응답으로 서버에서 선택적으로 채워줌

DHCP 쿠키: 0x63(99), 0x82(130), 0x53(83), 0x63(99)

Options: 옵션 OP(1) + 길이(1) + 값(가변)

0- Padding(1), 길이와 값이 없음
1- Subnet Mask
2 - Time Offset
3 - Router
4 - Time Server
5- Name Server
6 - Domain Name Server
7 - Log Server
8- Cookie Server
9 - LPR Server
10 - Impress Server
11 - Resource Location Server
2- Host Name
13 - Boot File Size
14 - Merit Dump File
15 - Domain Name
16 - Swap Server
17 - Root path
18 - Extensions Path
19 - IP Forwarding Enable/Disable
20 - Non Local Source RoutingEnablbe/Disable
21 - Policy Filter
22 - Maximum Datagram Reassembly Size
23- Default IP TTL
24 - Path MTU Aging Timeout
25 - Path MTU Plateau Table
26- Interface MTU
27 - All Subnets are Local
28 - Broadcast Address
29 - Perform Mask Discovery
30 - Mask Supplier
31 - Perform RouterDiscover
32 - Router Solicitation Address
33 - Static Route
34 - Trailer Encapsulation Option
35 - ARP Cache Timeout
36 - EthernetEncapsulation
37 - TCP Default TTL
38 - TCP Keepalive Interval
39 - TCP KeepaliveGarbage
40 - Network Information Service Domain
41 - Network InformationServers
42 - Network Time Protocol Servers
43 - Vendor Specific Information
44 - NetBIOS over TCP/IP Name Server
45 - NetBIOS over TCP/IP DatagramDistribution Server
46 - NetBIOS over TCP/IP Node Type
47 - NetBIOS over TCP/IP Scope
48 - X Window System Font Server
49 - X Window System Display Manager
50 - Requested IP Address
51 - IP AddressLease Time
52 - Option Overload
53 - DHCP Message Type
   1:Discover, 2:Offer , 3: Request, 4: Decline 5: Ack ,6: NAK, 7: Release,7: Inform
54 - Server Identifier
55 - Parameter Request List
56 - Message
57 - Maximum DHCP Message Size
58 - Renewal Time Value
59 - Rebinding Time Value
60 - Vendor class identifier
61 - Client Identifier
64 - Network Information Service and Domain
65 - Network InformationService and Servers
66 - TFTP Server name
67 - Bootfile name
68 - Mobile IP Home Agent
69 - SMTP Server
70 - POP3 Server
71 - NNTP Server
72 - WWW Server
73 - Default Finger Server
74 - Default IRC Server
75 - StreetTalk Server
76 - STDA Server
81 - Client Full Domain Name: 길이(1), Flags(1)
   Flags(비트) - 예약 4, 서버업데이트 1, ASCII Encoding 1, Override 1, Server of Client 1
116 - DHCP Auto: 길이(1), 자동여부(1, 0:수동, 1:자동)
255 - End of option