2013년 11월 27일 수요일

DHCP 패킷 분석 - 2






DHCP Discover
DHCP Offer
DHCP Request
DHCP ACK 

4개의 패킷을  차례대로 살펴 보겠습니다.





< DHCP Discover >


1. DHCP Discover

IP 주소를 동적으로 할당 받기를 원하는 클라이언트는 DHCP 서버를 찾기 위해 DHCP Discover 패킷을 목적지 255.255.255.255 로 송신한다. 즉 Broadcast로 패킷을 전파 한다.
;
;
(1) Message type : boot Request

Message type 필드의 값을 보면 패킷이 요청인지 응답인지 알 수 있다.
(1은 요청, 2는 응답)
클라이언트가 DHCP 서버를 찾기 위해 송신 하므로 1의 값이 설정된다.
(DHCP 서버는 응답을 해달라는 요청을 하는 것이기 때문이다.)
;
;
(2) Transaction ID : 0x6b3d8569

하나의 request, reply는 동일한 Transaction ID를 가진다.
이 필드에 0x00000001의 값이 설정되어 요청을 한다면
그에 대한 응답을 받을 때, 0x00000001의 값이 설정 되어 응답을 받는다.
;
;
(3) Bootp flags : 0x0000 (unicast)

Bootp flags 필드의 Broadcast flag 가 1로 설정 되면 서버가 이 패킷을 수신하여 응답을 할 때 Broadcast로 응답 하게 된다사진엔 보이지 않지만 이 값이 0으로 설정 되어 있으므로 이 패킷에 대한 응답을Unicast로 하게 된다.
(서버에게 어느 유형으로 응답을 해달라는 요청 정도로 보면 된다.)
;
;
(4) option: (53) DHCP Message Type

이 필드는 DHCP 패킷이 어느 유형의 패킷인지 나타낸다현재 필드에선 값이 1로 되어 있는데이는 즉DHCP Discover 패킷 임을 알 수 있다.
;
;
;
(5) option: (55) Parameter Request List

이 필드는 클라이언트가 서버로 IP 주소 할당 요청을 하여 그에 대한 응답을 받을 때추가로 받고 싶은 요청 목록이다.
DNS 서버 도메인과 주소, Gateway 주소 등등 여러 가지를 요청 할 수 있다.
;
;







< DHCP Offer >

2. DHCP Offer

클라이언트로 부터 DHCP Discover 패킷을 수신한 서버는 DHCP Offer 패킷으로 응답을 한다.
이 패킷에는 클라이언트에게 할당 가능한 IP 주소와 여러 정보들을 담고 있다.
;
;
(1) Message type = boot Reply (2)

DHCP Offer 패킷은 클라이언트로부터 받은 요청에 대한 응답 패킷이다.
그러므로 이 필드의 값이 2로 설정 되어 있다.
(1=요청 / 2=응답)
;
; 
(2) Transaction ID : 0x6b3d8569

하나의 request, reply 패킷은 이 필드의 동일한 값을 가진다고 위에서 설명 하였다.
위의 DHCP Discover 패킷과 현재 보고 있는 DHCP Offer 패킷을 보면 이 필드의 값이 동일 하므로
하나의 요청에 대한 응답은 이 필드의 값이 같다는 것을 알 수 있다.
;
;
(3) Your (client) IP address: 172.16.99.2 (172.16.99.2)

이 필드의 값은 임대 가능한 IP 주소이다즉 서버에서 제공하려는 주소가 이 필드에 나타나 있다.
;
(4) Client MAC address : vmware_04:9c:c8 (00:0c:29:04:9c:c8)

이 필드는 IP 주소를 제공받을 클라이언트의 MAC 주소가 들어있다.
;
;
(5) option: (53) DHCP Message Type

현재 이 필드에 2의 값이 설정 되어 있다. 2는 DHCP Offer 패킷임 을 나타낸다.
;
;
(6) option~

DHCP 서버는 클라이언트에게 IP 주소 할당을 함과 같이 다른 여러 가지 정보들을 같이 전송한다.
이 옵션이 바로 여러 가지 정보들이다사진을 보면 DHCP 서버 주소임대기간서브넷게이트웨이 등등 여러 가지 정보들을 담고 있다.
;
;
!!!
DHCP Offer 패킷을 수신한 클라이언트는 IP 주소를 바로 사용 하지 않는다.

왜냐하면 여러 DHCP Server로 부터 DHCP Offer 패킷을 수신 하게 되면 그중 가장 빨리 수신한 패킷을 
낸 서버와 두 가지의 절차를 더 수행 한 후 완전히 IP 주소를 할당 받아 사용 할 수 있게 된다.

즉 DHCP Offer 패킷은 클라이언트에게 "나는 이런 IP 주소를 할당 해 줄 수 있다" 라고 제의를 할 뿐 할당을 하는 것은 아니라고 볼 수 있다.
;






< DHCP Request >

3. DHCP Request

클라이언트가 DHCP 서버로 부터 DHCP Offer 패킷을 수신 하면 DHCP Request 패킷을 송신한다.
DHCP 서버로부터 "이런 IP 주소를 할당 해 줄수 있다라는 DHCP Offer 패킷을 받게 되면 클라이언트는 서버에게 "그 IP 주소를 사용 해도 되겠냐?" 라는 의미의 DHCP Request 패킷을 보내게 된다.
만일 여러대의 DHCP 서버로 부터 DHCP Offer 패킷을 수신 하였다면 맨 처음 도착한 DHCP Offer 메세지를 송신한 서버로 DHCP Request 패킷을 보내게 된다.
;
;
(1) Message type : boot Request (1)
DHCP Request 패킷은 이름에서도 볼 수 있듯이 요청을 하는 패킷이므로 1의 값이 설정 되어 있다.
(1=요청 / 2=응답)
;
;
(2) option: (53) DHCP Message Type
이 필드에 3의 값이 설정 되어 있으므로 이 패킷은 DHCP Request 패킷 임을 나타낸다.
;
;
(3) option: (50) Requested IP Address
이 필드에는 DHCP Offer 패킷의 Your (client) IP address 필드의 아이피 주소가 이곳에 들어가게 된다.
서버는 클라이언트에게 Offer 패킷으로 난 너에게 n.n.n.n IP 주소를 할당 해 줄 수 있어” 라는
제의를 하게 되고 클라이언트는 서버에게 DHCP Request 패킷으로 “n.n.n.n의 아이피를 사용해도 괜찮냐?” 라는 요청을 보내게 된다.
;
;
(4) option: (54) DHCP Server Identification
DHCP Request 패킷을 수신 할 서버의 IP 주소가 이 필드에 나타나 있다.
;
;





< DHCP ACK >

4. DHCP ACK 

서버는 클라이언트로 부터 DHCP Request 패킷을 송신 하게 되면 그에대한 응답으로 ACK 패킷을 보내게 된다. (ACK = Acknowledgment // 인정, 승인, 답신 등등 허용한다는 뜻을 가지고 있다)

이 과정이 끝나면 비로소 클라이언트는 할당받은 IP를 사용할 수 있게 되고, 서버는 자신의 DB에 정보를 기록하게 된다.
;
;
(1) Message type : boot Reply (2)

클라이언트에게 최종 응답을 해주는 것 이므로 2의 값이 설정 되어 있다.
(1=요청 / 2=응답)
;
;
(2) option: (53) DHCP Message Type 
현재 DHCP ACK 패킷에는 5의 값이 설정 되어 있다. 즉 5의 값이 설정 되어 있으면 DHCP ACK 패킷 임을 나타낸다.
;
;




[출처] DHCP 패킷 분석 - 2|작성자 육육

댓글 없음:

댓글 쓰기