지난 시간에 이어서 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에 대한 설명 시작하도록 하겠습니다.
DHCP의 Packet은 위 그림처럼 구성되어 있는데요, 각 영역이 TCP/IP Protocol 계층과 동일하게 구성되어 있습니다.
그런데 여기서 실제 Wireshark로 Packet을 Capture한 것이 정말 저런식으로 Packet이 전송되는지 비교 해보겠습니다.
- Ethernet Layer (Header)
위 그림 처럼 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)
IP Header은 위 그림처럼 구성되어 있습니다.
IP영역에서는 상위 계층인 Transport가 어떤 형태로 되어있는지 알려줍니다.
8번을 보시면 프로토콜 종류는 "UDP"라고 되어있죠.
이 밖에 위 그림을 보고 Header 구성이 어떻게 되어있는지 아는 것도 무척 중요하겠죠??
3. Transport Layer
IP영역에서 UDP인지 알려주었고 UDP 계층으로 넘어왔습니다.
여기서 중요하게 보셔야할 점은 Port입니다. Source Port / Destination Port가 어떻게 되어 있는지를 유심히 보시면 되요.
나머지는 위 그림을 참조해주세요.
자 이제 본격적으로 DHCP Packet을 보도록 하겠습니다.
- DHCP Discover
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에서 처리가 됩니다.
위 그림을 보시면 Option Packet은 위와같이 구성되어 있습니다.
**DHCP에서는 Option Packet이 매우 중요합니다.
그렇다고 수십 종류의 Option Packet을 다 알필요는 없고, 정말 필요한 Option만 알면 됩니다.
실제 Option Pakcet은 60, 53, 54, 51, 55 이 정보만 있으면 구현이 가능합니다.
다음으로는 DHCP Packet Option에 대한 설명을 보겠습니다.
가장 많이 사용되는 Option Packet입니다. 참고해주세요.
다음은 Offer Packet에 대해 알아보도록 하겠습니다.