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 패킷 임을 나타낸다.
;
;