본문 바로가기
컴퓨터 지식/네트워크&프로토콜

[네트워크📶] DHCP 패킷 분석/ DHCP 특징

by 서상혁 2020. 6. 1.

DHCP 패킷 Format

 

DHCP format

 

Op Code :

1 or 2

1은 request, 2는 reply를 의미합니다.

 

Hardware Type :

어떤 link layer인지를 의미합니다. 대부분 Ethernet이라고 보셔도 될 것 같습니다.

(IPv6은 아에 다른 format의 DHCPv6을 사용하기 때문)

 

Hops :

DHCP relay 의 hops 를 의미합니다. (라우터의 hop이 아님!)

 

Transaction Identifier :

 UDP는 순서대로 차곡차곡 전달하는 프로토콜이 아니죠!

따라서 request와 reply의 짝을 맞춰줄 수 있는 transaction identifier가 필요합니다.

* DHCP relay란?

- DHCP는 RARP와 마찬가지로 broadcast 방식으로 request를 합니다.

하지만 DHCP가 RARP와는 달리 동일 link가 아니어도 server까지 통신이 가능했었죠!

그렇기에 DHCP relay agent 라는 router들을 거쳐 DHCP Server로 전송됩니다.

(보내는 사람 : Client

중계자들 : DHCP relay agent

목적지 서버 : DHCP Server)

 그러한 전송 과정은 unicast로 이루어집니다.

 

Seconds :

request 보내고 난 뒤 경과한 시간!

 

Flags : 

ARP 처럼 broadcast로 reply를 받겠다 : 1

unicast로 reply를 받겠다 : 0

 

CIAddr (Client IP Addr) :

아직 configured 되지 않은 경우 : 0.0.0.0

이미 configured 된 주소가 있는 경우 : 해당 IP 주소

 

YIAddr (Your IP Addr) :

서버한테 요청한 주소(요청받은 주소)

 

SIAddr (Server IP Addr) :

특정 서버를 지정하고 싶은 경우 : 해당 서버 IP 주소

그렇지 않은 경우 : 0.0.0.0

 

GIAddr (Gateway IP Addr) :

DHCP relay가 존재하는 경우 : 해당 relay IP 주소

그렇지 않은 경우 : 0.0.0.0

 

CHAddr (Client Hardware Addr) :

내가 받을 IP 주소에 매핑되는 MAC 주소입니다. 

DHCP 서버는 이 Hardware Addr 에 상응하는 IP 주소를 reply로 돌려줍니다.

 

Server Name (SName) :

Client 에게 server가 본인의 도메인 이름을 알려줄 때 사용됩니다. (그래서 64바이트나 됩니다.)

 

Boot Filename :

client의 DHCP DISCOVER 이나 서버의 DHCP OFFER에 쓰입니다.

 

Options:

매우 다양한 option이 존재합니다. 대략 200개.

예를 들자면

- DHCP Messsage Type (얘는 반드시 나온다)

- Requested IP Address (이 IP를 쓰고 싶다, 보통 쓰던거 선호)

- Host wide parameter를 가져오기.

- default router address

- DNS address

- Subnet mask 

- Parameter Request List (서버한테 원하는 것들 명시)

등등.

 

Options filed format:

첫 4바이트 : 99.130.83.99 로 시작합니다.

이것이 DHCP 의 option의 시작이라는 것을 판별해주는 것으로,

BOOTP 에서는 79.82.69.79 (O.R.E.O) 로 시작합니다.

그 뒤에는 Option 식별자 1바이트, 옵션 길이 1바이트, 옵션 데이터 순으로 이루어집니다.

 

 

DHCP message 진행 과정

DISCOVER -> OFFER  -> REQUEST -> ACK

 

(1) DHCP DISCOVER

아직 configuration 이 이루어지지 않은 상태일 때, DHCP 서버가 존재하는지 BroadCast로 물어봅니다.

(DHCP 서버를 찾는 과정입니다, client MAC 을 꼭 전달해야 합니다.)

 

(2) DHCP OFFER

서버에서 단말로 응답합니다. "나 여기 있어~" 같은 역할입니다.

Unicast 나 Broadcast 둘다 가능하며, IP주소 뿐만 아니라 여러 데이터들도 같이 전달합니다.

 

(3) DHCP REQUEST

OFFER을 받을지 말지 결정한 후, 서버에게 요청하는 과정입니다. 본인이 사용하고 싶은 네트워크 정보를 전송하며,

특정 서버에게 요청 가능합니다. 하지만 이 또한 BroadCast로 이루어집니다.

 

(4) DHCP ACK

REQUEST를 받아 직접적으로 네트워크 정보를 전달해주는 과정입니다.

Unicast 나 Broadcast 둘다 가능합니다.

 

 


Address lease ( 주소 임대 )

DHCP가 BOOTP와 차별화되는 가장 큰 부분입니다. BOOTP 에서는 IP binding을 사람이 직접 관리해줘야 했습니다. 

lease는 '임대' 를 의미하며, 특정 IP를 정해서 제공받는 것이 아니라, 임대 개념으로 받게 해주는 시스템입니다.

lease는 정해진 시간이 있으며, 일정 기간동안 public IP 주소를 할당해줍니다. 더 쓰려면, 그 시간이 지나기 전에 연장이 필요합니다. 그리고, 이는 보통 자동으로 이루어집니다. (일반적으로 lease time은 3600s = 1 시간)

 

 

Autoconfiguration (자동-구성)

DHCP도 운영체제 하에 자동으로 진행되지만,

Server가 없는 경우에도, 자동으로 IP를 구성할 수 있습니다.

DHCP도 안쓰고, 직접 수동으로 IP를 설정하지 않았다고 하더라도 같은 link끼리 통신을 할 수 있습니다.

이것을 해주는 것이 APIPA(Automatic Private IP Addressing) 입니다.

APIPA는 DHCP가 되지 않을 때, DHCP 서버가 없다 하더라도  private IP 주소를 자동으로 제공해줍니다.

이런 private IP 주소를 받고 난 이후에는 ARP나 ACD를 통해 중복된 주소가 있는지 DAD를 실시해줘야하고,

APIPA용으로 정해진 주소인, 169.254.0.0/16 중 하나의 주소를 부여받습니다.

이 과정을 통해 같은 링크 (255.255.0.0 의 서브넷 마스크인 곳들)와 소규모 통신이 가능하게 됩니다!

 

 

 

 


https://programming119.tistory.com/150?category=904929

 

[네트워크📶] DHCP 역사 / RARP 프로토콜/ BOOTP 프로토콜

DHCP(Dynamic Host Configuration Protocol) DHCP는 동적으로 Host IP 를 결정할 때 이용되는 프로토콜입니다. 동적으로 Host IP 를 결정한다는 것은 '자동으로 IP를 설정해준다' 이정도로 생각하셔도 좋을 것 같..

programming119.tistory.com

 

*출처 : 고려대학교 김효곤 교수님 강의 "인터넷 프로토콜"

728x90

댓글