DHCP を用いると、IP Address がDHCPサーバーによって割り振られることは
もちろん理解していたが、他にどんな情報が割り振られるのかをあまり意識して
いなかった。
ということで、wireshark でpacketのやりとりを
のぞいてみた
全体的なやりとり
- MAC address
DHCP Server(SuperMic_405f)
DHCP Client(Vmware_2571)
DHCP Discover -> DHCP Offer -> DHCP Request -> DHCP ACK
という流れ
DHCP Discover
DHCP server がネットワーク内に存在するかどうかを、クライアントが見つけるためのPhase。
ブロードキャスト転送を使い、ネットワーク内全体にDHCP Discover で問い合わせ。
お願いしたいIPアドレスがあればそれをRequested IP Addressで、
また、追加でどんな情報が欲しいかをParameter Request List で要求する
DHCP Offer
もしネットワーク内に、DHCPサーバーがいれば、DHCP サーバーがDHCP Offer メッセージで応答する。
(もしDHCPサーバーがいなければ、だれも反応しないで、クライアントはタイムアウトで終了)
ここではクライアントにユニキャスト転送で、直接応答する。
DHCP Offer では、Client に割り振る IP アドレスが返される。
(ここではあくまでOffer であって、まだIP address は確定していない)
IPアドレス以外にも、DHCP server のIPアドレスと、
Clientのネットワーク設定に必要な以下の基本情報が返される
- Subnet mask
- router
- Domain Name
- Doman Name Server
DHCP Request
クライアントは、提案されたIPアドレスを使用する通知をブロードキャストで送信
(もしDHCPサーバーが複数いる場合は、この通知で、自分が提案したアドレスが落選したかどうかを知ることができる)
DHCP ACK
サーバーは、要求を許可するメッセージをクライアントに送信
これで手続きが完了
テストに使用したコマンド
(DHCPサーバーがネットワーク内にいることが前提で)
クライアント側で以下のコマンドを実行することで、DHCPの一連のプロセスがモニタリングできる
$sudo dhclient -r
$sudo dhclient
参考
ほかにもDHCPNAK, DHCPINFOM, DHCPRELEASE, DHCPDECLINE といった、メッセージがある。
メッセージの正しい定義を確認したい場合は、
DHCPを定義しているRFC2131を参照するとよい。
Parameter Request List の定義は