DHCP (Dynamic Host Configuration Protocol)

インターネットに接続されている全ての端末にはIPアドレスが必要です。 会社や自宅のネットワークで、自分で設定した覚えが無いのに、何故手元のPCでIPアドレスが勝手についているか不思議に思ったことはないでしょうか? 自動的にIPアドレスその他の情報が設定されるのは、DHCPというプロトコルがそのネットワークで動作しているからです。

ここでは、IPアドレスの割り当てなどを自動的に行うDHCPに関する説明を行います。 詳細は省いてありますので、詳細を知りたい方はRFC2131をご覧下さい。

1. DHCPの役割

DHCPは、IPアドレスなどを自動的に割り当てるためのプロトコルです。 DHCPが存在する以前は、ユーザが各自で通信に必要な情報を取得し、設定していました。 しかし、設定する値はネットワークによって異なっていて、しかも、IPアドレスは重なってはいけないので、利用可能な空いているIPアドレスを把握しなくてはなりませんでした。 DHCPで自動的にIPアドレスその他を割り当てる事により、インターネットに接続するための負荷が大幅に軽減されました。

DHCPを利用して自動的に設定できる情報を以下に示します。(注意:下記だけではなく、他にも様々な情報が設定できます。)

  • IPアドレス
  • ネットマスク
  • ブロードキャストアドレス
  • デフォルトルータ
  • DNS

2. DHCPの動作

では、実際にどのように動作しているのかを説明します。 DHCP動作例として図1のようなトポロジを利用します。

図1. DHCP動作のトポロジ例

図1では、同一セグメント内に「DHCPサーバ」と「DHCPクライアント」があります。 DHCPサーバは、そのセグメントで利用可能なIPアドレスや接続に必要な各種情報を知っているサーバです。 DHCPクライアントは、そのネットワークの事は何も知りませんが、インターネットに接続したいので、「情報をくれ!」と叫んでみます。

DHCPを使ってDHCPクライアントがネットワーク接続に必要な情報を取得して設定するまでの流れを図2に示します。

図2. DHCP:設定時の挙動

まず、DHCPクライアントは何もわからないので、「誰かDHCP話せる人助けて!」と叫びます。 DHCPクライアントからの叫びはブロードキャストアドレス255.255.255.255に対して行なわれます。 この叫びはDHCP Discoverです。

DHCPクライアントからの叫びを聞いたDHCPサーバは、「こんな設定で如何でしょうか?」というDHCP Offerを送ります。 DHCP Offerを受けたDHCPクライアントは、DHCPサーバから受け取った設定情報を気に入れば「これを使わせてください」(DHCP Request)と言います。 DHCPサーバは、それを了承するとDHCP ACKを返します。

何故、DHCPクライアントはDHCP Offerを受け取ってすぐに設定しないのだろう?と不思議に思った人はエライです。 これは、複数のDHCPサーバが存在している状態で、一つのDHCP Discoverに対して2つ以上のOfferがあったときに、DHCPクライアントがどれか一つを選んでDHCP Requestを投げれるようにしたものです。 詳細はRFC2131をご覧下さい。

DHCPクライアントが、電源を切るなどの理由でIPアドレスが不要になった時の処理を図3に示します。

図3. DHCP:終了時の挙動

DHCPサーバはそのセグメントで現在空いているIPアドレスを管理し、DHCPクライアントに配っています。 そのため、DHCPクライアントがIPアドレスを使わなくなったときには教えてもらった方が効率が良いです。 (教えてもらわなくても、タイムアウトする仕組みはあります。) 図3は、DHCPクライアントが「もう、使わなくなったよ」とDHCPサーバに教えるDHCP Releaseを示しています。

今では普通に使われているDHCPですが、実はかなりありがたいものです。 興味を持たれた方はさらに掘り下げて詳細を調べてみては如何でしょうか。