본문 바로가기

WIZnet DHCP/4.DHCP Packet 설명 1

DHCP 패킷 설명 ver.1

지난 시간에 이어서 Wireshark로 Capture한 Packet에 대한 설명을 하면서 DHCP가 어떻게 동작하는지 알아보겠습니다.



DHCP가 무엇인지 잘 모르신다면 아래의 링크를 확인해주세요.

DHCP 시작하기 !  – https://jinheeahn.wordpress.com/2015/04/29/dhcp시작하기!

DHCP 전체 동작 과정 및 Protocol 분석 – https://jinheeahn.wordpress.com/2015/06/04/dhcp 분석


더불어서 DHCP의 Packet을 잡는 방법도 게시하였습니다.

DHCP packet 잡아보기 – https://jinheeahn.wordpress.com/2015/10/28/3-DHCP 패킷 잡기!!



자, Packet에 대한 설명 시작하도록 하겠습니다.

제목 없음1

DHCP의 Packet은 위 그림처럼 구성되어 있는데요, 각 영역이 TCP/IP Protocol 계층과 동일하게 구성되어 있습니다.

그런데 여기서 실제 Wireshark로 Packet을 Capture한 것이 정말 저런식으로 Packet이 전송되는지 비교 해보겠습니다.



  1. Ethernet Layer (Header)


제목 없음4

위 그림 처럼 Ethernet Frame은 저런 Pakcet을 그려요. 그림이랑 비교해보시면 동일하다는 것을 아실 수 있습니다.

첨언을 하자면 DHCP은 Application이죠.

각 Packet Frame을 전송할 때는 OSI 7계층 or TCP/IP 4계층을 이용해서 전송할 수 있는 통로를 만들고 Application을 이용하여 Data 통신을 합니다. 예로 HTTP(웹), FTP(파일전송시스템) 등이 있죠

만약 무슨말인지 모르겠다면, 제가 업로드한 다른 글을 참조해주세요. 자세하게 설명되어 있습니다.

DHCP 전체 동작 과정 및 Protocol 분석 – https://jinheeahn.wordpress.com/2015/06/04/dhcp 분석



2. IP Layer (Header)

제목 없음5

IP Header은 위 그림처럼 구성되어 있습니다.

IP영역에서는 상위 계층인 Transport가 어떤 형태로 되어있는지 알려줍니다.

8번을 보시면 프로토콜 종류는 "UDP"라고 되어있죠.

이 밖에 위 그림을 보고 Header 구성이 어떻게 되어있는지 아는 것도 무척 중요하겠죠??



3. Transport Layer


제목 없음6

IP영역에서 UDP인지 알려주었고 UDP 계층으로 넘어왔습니다.

여기서 중요하게 보셔야할 점은 Port입니다. Source Port / Destination Port가 어떻게 되어 있는지를 유심히 보시면 되요.

나머지는 위 그림을 참조해주세요.



자 이제 본격적으로 DHCP Packet을 보도록 하겠습니다.

  1. DHCP Discover



제목 없음7

Discover는 요청하는 메세지입니다.

이 메세지를 보내면 DHCP Server에서는 Offer라는 메세지를 보내주게 됩니다.

그런데 위 패킷을 보면 Bootstrap Protocol이라고 적혀있습니다.

이 말은 Packet 자체는 BOOTP로 Format 형식을 지원한다는 의미입니다.



Packet에 대한 좀 더 자세한 설명은 다음과 같습니다.

  • Operation code (Message type)

–이 8bit는 BOOTP packet의 type을 나타낸다. Request: 0x01, Reply: 0x02

  • Hardware type

–이 필드는 physical network의 type을 나타낸다. Ethernet: 0x01

  • Hardware address length

–Physical address의 길이를 나타낸다. Ethernet: 0x06

  • Hop count

–Packet이 지날 수 있는 최대의 hop을 결정한다. (Gateway 수) Local 망이면 0x00

  • Transaction ID

–이 필드는 client에 의해 request packet에 채워지고, reply packet에서 자기가 보낸 request에 대한 reply인지를 구별하는데 사용된다. (응답 시 구분을 위함)

–즉, 각 DHCP client의 메시지를 구분하는 용도로 사용.(메시지의 ID)
Server는 당연히 이 필드에 같은 값을 반환한다

  • Sec (seconds elapsed)

–Client가 IP주소를 취득 / 갱신을 시작한 이후의 경과 시간(초)

  • Flag

–Client가 보내는 BOOTP Flag Type에 따라 Reply packet Type이 정해진다. (Unicast : 0x0000 , Broadcast : 0x8000)

–로컬에서는 IP와 subnet만 있어도 주변 통신 가능

–하지만 다른 외부 네트워크와 연결 시에는 Router(gateway)가 있어야 통신 가능

  • Client IP address

–Client의 현재 IP address

–Client가 할당 받은 IP address이기도 하다.

–IP의 임대 기간을 갱신하거나, 반납할 때 사용된다.

  • Your IP address

–DHCP Server로 부터 할당 받는 IP

  • Server IP address (Next server IP address)

–DHCP Server로 부터 응답 Packet이 올 때 포함되는 Server의 IP address

  • Gateway IP address (Relay agent IP address)

–DHCP Server로 부터 할당 받는 Router IP address를 나타낸다.

  • Client hardware address ( Client MAC address)

–16byte의 Client의 Physical address가 채워진다.

–IPv4에서 MAC주소는 6byte를 사용한다.

  • Server name (host name)

–64byte의 공간을 가지며 Server에 의해 응답 Packet으로 온다. 이곳에는 Server의 domain name을 포함한다.

  • Boot filename

–Server에 의해 응답 Packet으로 오며, 128byte의 공간에 boot file의 full pathname을 포함한다. 이 정보를 이용해 Client는 다른 부팅 정보를 얻을 수 있다. (for TFTP , use to BOOTP)

  • Magic Cookie (Options에 포함됨)

–DHCP와 BOOTP를 판별하는 코드

–Magic cookie는 Vender의 정보를 가지며 FRC951, RFC1048을 보면 다음과 같은 값으로 정해져 있다.

–10진수(99,130,83,99) , 16진수(63,82,53,63)

  • Options

–이 64bytes의 필드는 두 가지 목적으로 사용된다. 즉, 부가적인 정보를 실을 수 있으며, 특정 vendor의 정보도 실어 나를 수 있다.(Magic cookie) 이 필드는 오직 reply에 의해서만 사용된다. Client가 message reading을 끝마치면, 이 정보를 찾고 만약 있다면 다음 60bytes는 option임을 나타낸다.Option은 3개의 필드로 구성된다. 1byte tag, 1byte length, variable-length-value. Length 필드는 value field의 길이를 나타내며, 4byte를 곱하면 길이가 나온다.



BOOTP(DHCP) Packet 설명이 아직 끝나지 않았습니다.

추가적으로 Option Packet이 있습니다.

이 Option Packet은 DHCP에서 아주 중요한 역할을 합니다.

Option Packet에서 실제 Network정보가 담겨있습니다. 더불어 Packet에 대한 각종 정보 및 원하는 IP를 요청하는 부분까지 Option Packet에서 처리가 됩니다.

제목 없음8

위 그림을 보시면 Option Packet은 위와같이 구성되어 있습니다.

제목 없음9

**DHCP에서는 Option Packet이 매우 중요합니다.

그렇다고 수십 종류의 Option Packet을 다 알필요는 없고, 정말 필요한 Option만 알면 됩니다.

실제 Option Pakcet은 60, 53, 54, 51, 55 이 정보만 있으면 구현이 가능합니다.



다음으로는 DHCP Packet Option에 대한 설명을 보겠습니다.

제목 없음10

제목 없음11

제목 없음12


가장 많이 사용되는 Option Packet입니다. 참고해주세요.

다음은 Offer Packet에 대해 알아보도록 하겠습니다.