7.12 Dynamic Host Configuration Protocol(DHCP)

DHCPは自動的にホストにIPアドレスや、ゲートウェイ(デフォルトのルータ)、DNSの アドレスなど、ホストがネットワークにつながった際に必要な情報をホストに適切に 渡すためのプロトコルです。従って、現在ではDHCPが無ければ、ほとんどのネットワーク につなげることは出来ないと言っても構わないでしょう。

DHCPの一番のポイントは、IPアドレスを持たないホストにどうやってIPアドレスを 渡すのかという、 言わば卵と鶏の問題に似た点にあります。DHCP自体はアプリケーション層 のサービスであり、それ自体はポート番号を使いますが、ホスト側(IPアドレスを貰う 側)は 0.0.0.0 というIPアドレスを用い、 宛先に 255.255.255.255 というオールブロード キャストアドレスを用います。 これは、ネットワークのセグメントもホストには分からないからです。 一方、サーバ側は必ずこのセグメントにあるか、または自身の配下の中継プログラム がこのセグメントにあるので、このブロードキャストを捕らえることが出来、そこで ホストにプールしてあるIPアドレスから適当なものを選んでホストに貸し与えるように なっているのです。 つまり、DHCPではブロードキャストが届かなければサービスは不可能 なのです (例外は先に述べた中継のプログラムがある場合ですが、これも無いと全くサービス 出来ません)。

DHCPで貸し与えたIPアドレスは貸し出し期間があります。何故ならば、永久に貸し出した 場合には、資源が当然枯渇することが考えられるからです。ホストがこの貸し出し期限を 越えた場合には、延長を申請することが出来ます。但し、最大貸し出し期間を越えては 延長は出来ず、その場合には一から借り出し手続きをやり直さないといけません。

\epsfile{file=dhcp}

DHCPは以上のような特殊性のために、ホスト側の使うポート番号とサーバ側のポート番号 の両方が決められていて、それぞれ68番と67番を使います。なお、DHCPは、元々はBOOTP というプロトコルを発展させたもので、BOOTPの機能を含んでいます。BOOTPでは、ネットワーク 上からホストが立ち上がるためのプログラムをダウンロードしてブートすることが可能に なっているために、同じことがDHCPでは可能です。また、動的にIPを貸すだけではなく、 MACアドレスなどを元にして、固定的にIPを与えることが可能であるために、多くのPCを 管理するような場合でも固定的にPCに設定をするのではなく、 DHCPを使うことで、 引っ越しやネットワークの変更時に柔軟に対応することが出来ます。

DHCPの欠点は、TCP/IP自体に含まれておらず、 単なる外部的なサービスであるという点です。 これは簡単に言ってしまえば、どこでもDHCPが動いている訳ではないという事であり、 どこに繋いでも常にIPが取れることが保証されていないという事です。 次世代のIPv6では、 こうした欠点を乗り越えるために、 IP自体は必ず自動的に取得できるようになっていますが、 DNSやその他の情報をどうやって与えるのかという点では、 やはりDHCPに一日の長があり、 IPv6でもDHCPを必要とする場合もあります。

また、先に述べたように、中継を利用すれば一台のサーバに集中して管理することが 可能になります。 これによって、大きなネットワークでのIPアドレスの管理が楽になります が、一方ではそのサーバに問題があった場合にどうするのかという問題も生じます。 現在、ISC(Internet Software Consortium:DNSの実装BINDなどを提供している団体) から提供されている DHCPの新しいバージョンでは、複数のDHCPサーバの協調動作や、動的なDNSへの登録機能 などを持ったものが提供され始めています。



Noriyo Kanayama