Lesson1では,DHCPの役割について説明した。Lesson2では,パソコンのDHCPクライアントが設定情報を取得するしくみについて少し詳しく見てみよう。

提案を受けてから正式に要求

 パソコンをネットワークにつなぐと,パソコンのDHCPクライアントはDHCPサーバーと2往復のメッセージをやりとりする(図2)。

図2●DHCPクライアントは2往復のやりとりで設定情報を受け取る   図2●DHCPクライアントは2往復のやりとりで設定情報を受け取る
最初の1往復で設定情報の提示を受け取り,それでよければ次の1往復で割り当てを受ける。 [画像のクリックで拡大表示]

 DHCPクライアントはまず,DHCPサーバーを探すために「DHCPディスカバー」というメッセージを送信する(図2の(1))。DHCPサーバーがどこにいるかはわからないので,すべてのマシンに届ける「ブロードキャスト」という方法で送信する。

 DHCPディスカバーを受け取ったDHCPサーバーは,パソコンのIPアドレスや,ルーターに通信を依頼する範囲を示す「サブネット・マスク」,ルーターの場所を示す「デフォルト・ゲートウエイ・アドレス」,DNSサーバーのアドレスなど,設定情報を用意する。それらの情報を「DHCPオファー」というメッセージに入れてDHCPクライアントに送信する(同(2))。

 この1往復で,DHCPサーバーを探し出して,設定情報を受け取ることになる。

 次にDHCPクライアントは,使いたい設定情報を「DHCPリクエスト」で伝える(同(3))。DHCPリクエストを受け取ったDHCPサーバーは,OKを意味する「DHCPアック」を返信する(同(4))。これをDHCPクライアントが受け取った段階で設定割り当ては完了だ。

 単純に考えれば,最初にDHCPオファーで送信された情報をDHCPクライアントがそのまま設定してしまえばよいように思える。そうしないのは,DHCPサーバーがネットワーク上に二つ以上存在することがあるからだ。そのようなときに,どのサーバーからの設定情報を使用するのかをすべてのDHCPサーバーに通知する必要がある。自分が送信した設定情報が採用されなかったことがわかれば,DHCPサーバーはその情報を別のDHCPクライアントで使えるようになるからだ。

 図2をもういちど見てみよう。DHCPクライアントは相手のDHCPサーバーのIPアドレスがわかっているのに,DHCPリクエストをブロードキャストで送信している。ここでブロードキャストを使うのは,どのDHCPサーバーから送られてきた設定情報を使うかを,すべてのDHCPサーバーに知らせるためである。

特別なアドレスを使って通信する

 このようなDHCPのメッセージは,どうやってやりとりしているのだろう。通信に必要な設定情報を取得するために通信する。冷静に考えると,そこに矛盾があるように思える。

 でも大丈夫。設定前のパソコンは,設定情報の取得が完了するまでの間,「0.0.0.0」という特別なIPアドレスを使って通信する。つまり,送信元IPアドレスを「0.0.0.0」にしてDHCPディスカバーやDHCPリクエストを送信する。

 ただし,「0.0.0.0」ではネットワーク上のどこを指すかはわからない。ではDHCPサーバーは,どのようにあて先を指定して返信するのだろうか。原則としてDHCPサーバーは,クライアントからのIPパケットを運んでくるLANフレームに書き込まれている送信元の「MACアドレス」をあて先に指定する。ただし,クライアントの中にはIP設定が終わるまで自分あてのLANフレームをうまく受け取れないものがある。このようなときはクライアントからのDHCPメッセージに書き込まれた指定に従って,ブロードキャストで応答することもある。