next up previous contents
Next: 13.2 色々な DHCP の実装 Up: 13. DHCP Previous: 13. DHCP

13.1 どうやって通信するか?

以下簡単に IP アドレスが不明な段階でどうやってサーバとクライアントが通信 するかを解説します。但し、DHCP を使う上で必要 最低限のスケッチを与える事を目標としますので、厳密には正しくない表現も ありますので、疑問の方は、RFC951,2131,2132 などの文書を読んで下さい。

TCP/IP では、IP がなければ通信は出来ない筈です。しかし、ここで問題になっている のは、その IP を他から提供してもらう事なのです。ここに、DHCP の実装上の問題が あり、システムによっては動かない場合もある理由があります。ここで TCP/IP が階層構造を持っていたことを思い出して下さい。最低限の通信のための仕組み は IP がない状態でも TCP/IP には実はあるのです。そうです、MAC アドレスです。 MAC アドレスさえ分かれば、相手への通信は原理的には可能です。そこで、DHCP に よってサービスを受けたいクライアントは、まず、ブロードキャストを流します。 通常 IP でのブロードキャストアドレスは、[ネットワーク部].255 の形 なのですが、クライアントはまだ IP そのものが分からない訳ですから、この ネットワーク部分そのものが分かりません。そこで all 1 のブロードキャストを 送り出します。一方、自分の IP アドレスには 0.0.0.0 を用います。 このパケットには、当然自分の MAC アドレスは入っている訳ですから、 同じネットワーク上にある DHCP サーバはこのパケットをキャッチすれ ば、サービスを要求しているクライアントの MAC アドレスを知ることが出来るので す。宛て先 IP アドレスには、255.255.255.255 を用いますが、これは重要です。 何故ならば、クライアントはまだネットワーク部を知らない訳ですから、202.11.100.255 のようなブロードキャストはクライアントは捕捉出来ないのです。

このようにして、概略ですが2点間の通信が可能となります。

この仕組みは実は、BOOTP (Bootstrap Protocol) というものを発展させたもので、 基本的には TCP/IP の RARP (Reverse Address Resolution Protocol) という仕組みが 用意されていたのです。BOOTP は、例えばディスクのない X 端末などをどうやって 動かすかということを目的に作られました。随分と昔から実はちゃんとタネは用意 されていたのです。



Noriyo Kanayama