DHCP(Dynamic Host Configuration Protocol) その2
目次
DHCPの階層構造
DHCPは、TCP/IPアプリケーション層のプロトコルでトランスポート層にはUDPを使っています。DHCPのポート番号は67と68の2つあり、DHCPサーバは67をDHCPクライアントは68を使います。階層構造は次の図のようになっています。
DHCPを利用するためには、DHCPサーバが必要です。Windows2000 ServerやLinuxなどのサーバOSでは、たいてい標準でDHCPサーバの機能がついています。また、サーバOSだけでなく、ルータなどにもDHCPサーバ機能がついているものもあります。
そして、DHCPサーバにクライアントに対して自動的に配布するIPアドレスの範囲を設定します。このアドレスの範囲のことをアドレスプールと呼んでいます。アドレスプールのほかに、オプションとしてサブネットマスクやデフォルトゲートウェイのIPアドレス、DNSサーバのIPアドレスなども自動的に配布するように設定できます。
また、DHCPで配布するIPアドレスは一定期間貸し出す(リース)形になっています。アドレスプールを設定するときには、いっしょにリースの有効期間も設定します。リース期間として、期限なしを割り当てることもできます。
DHCPのプロセス
DHCPクライアントが起動すると、DHCPサーバを探さなくてはいけません。でも、これからIPアドレスをもらおうとしているのですから、自分のIPアドレスはもちろんありませんし、DHCPサーバのIPアドレスもわかりません。じゃ、どうやってDHCPサーバを探せばいいのかな?って思いますね。
通信したい相手がよくわからないというケースはよくあるのですが、こういうときブロードキャストを使います。ブロードキャストでとりあえずみんなに届くように送れば、ネットワーク上のDHCPサーバが受け取ってくれるだろうっていう考え方です。
このDHCPサーバを探すためのブロードキャストをDHCPDISCOVERといいます。ちなみに、このブロードキャストはIPレベルのブロードキャストなんで、送信先IPアドレスを255.255.255.255または、ホスト部をすべてビット1にして送っています。送信元IPアドレスはまだわからないので、0.0.0.0として送信します。
サーバはDHCPDISCOVERを受け取って、UDPヘッダのあて先ポート番号をみると「あっ、だれかIPアドレスを欲しがっているな」ということがわかります。するとDHCPサーバはアドレスプールから利用可能なIPアドレスをクライアントに教えてあげます。これをDHCPOFFERといいます。
DHCPOFFERによって、利用可能なIPアドレスを教えてもらったDHCPクライアントは自分が使いたいIPアドレスを選択して、サーバに「このIPアドレスを使わせてね」ということを通知します。これをDHCPREQUESTといいます。
REQUESTを受け取ったDHCPサーバは、IPアドレスの整合性をチェックして問題がなけらば「使っていいよ~」ということを、DHCPACKでクライアントに通知します。
DHCPACKを受け取ったクライアントは無事にそのIPアドレスを自分のものとして使うことができるようになります。
ほかにもまだまだ細かいことはいっぱいあるのですが、DHCPを使ってIPアドレスを自動的に設定するプロセスとしてはこんな風になっているんだなぁって思ってもらえばいいでしょう。
ただし、DHCPを使うときには気をつけなくはいけないことがいくつかあります。次回、DHCPを使うときに注意しなくてはいけないことについてお話をしていきます。もし、ひまだったら何を注意しなくてはいけないのかをちょっと考えてみてくださいね。