DHCP 프로토콜 설명
DHCP 프로토콜은 동적으로 호스트 IP를 부여하기 위한 프로토콜이다.
참고: 위키백과, http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol
RFC 2131, http://tools.ietf.org/html/rfc2131
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