DHCP については RFC2131 で規定されていると思います。
要求して許可されるまでの大体の流れとしては、次のような感じでしょうか。
0. IP アドレスを割り当ててほしいクライアントが DHCPDISCOVER をブロードキャストで流し(「私、こういう mac adress なんですが、誰か IP アドレス頂戴」)
0. それを受信した DHCP サーバでアドレスを渡せるものが DHCPOFFER を返し (「うちはこれ貸せるけどどう?」)
0. 複数受けたかもしれない offer に対して使いたいものを DHCPREQUEST し (「あ、これ使わせてください」)
0. 貸し出すために DHCPACK を返す(「じゃ、どうぞ使ってください」)
他に、許可されないケースや、DHCPRELEASE で借りていた IP アドレスを返すフローもあります。
ご存知のことかとは思いますが、DHCP サーバからは IP アドレス以外にもネットワーク構成に関する情報が帰ってきます。典型的なところではサブネットマスク、デフォルトゲートウェイのアドレス、DNS サーバのアドレスなど。
どういうメッセージが実際に流れているかは、実際にパケットキャプチャしてみてみるといいのではないでしょうか。私はよく wireshark を使います。wireshark を使って DHCP 周りを調査したいときの注意は、表示フィルタで DHCP ではなく BOOTP と指定する必要がある、ということです。
適当にググって見つけたサイトですが、こちら もわかりやすいでしょうか。