Golang DHCP Client Demonstration
A toy golang DHCP client to explore the DHCP protocol.
Randomizes request MAC address as to not step on the same lease over and over.
Usage
./compile.sh
./toydhcp [-ip4 address]
Outline
DHCP Protocol Diagram
Wikipedia - Gelmo96 / CC BY-SA (https://creativecommons.org/licenses/by-sa/4.0)
DHCP Packet Sequence
DISCOVER
OFFER
REQUEST
(N)ACKNOWLEDGE
DHCP Option Codes
A small selection of important DHCP Option Codes
-
53 - DHCP Message Type (1B) - Indicates the specific type of DHCP message: DISCOVER(1), OFFER(2), REQUEST(3), DECLINE(4), ACK(5), NACK(6), RELEASE(7), INFORM(8)
-
50 - Requested IP Address (4B)
-
54 - DHCP Server Address (4B)
-
51 - Lease Time in Seconds (4B)
-
3 - Router IP Address (4B)
-
1 - Network Subnet Mask (4B)
-
255 - End Mark (1B)
Additional Reading
Wikipedia.org - DHCP
The TCP/IP Guide - DHCP Options