概要

DHCPはIPアドレスをはじめとするTCP/IPの設定を自動的に配布するために利用するプロトコルです。DHCPは非常によく利用されているプロトコルです。その仕組をしっかりと理解しておきましょう。

DHCPとは

DHCP(Dynamic Host Configuration Protocol)は、IPアドレスなどのTCP/IPの通信に必要な設定を自動的に行うためのプロトコルです。

TCP/IPで通信を行うためには、TCP/IPの設定が正しく行われていることが大前提です。設定が間違ってしまっていると、当然、正常な通信はできません。具体的な設定内容としては、以下が挙げられます。

  • IPアドレス/サブネットマスク
  • デフォルトゲートウェイのIPアドレス
  • DNSサーバのIPアドレス

IT技術に慣れているユーザであれば、こうした設定を難なくできるでしょう。しかし、あまり慣れていないユーザにとっては、TCP/IPの設定をユーザ自身で行うことはハードルが高い場合があります。たとえ、慣れているユーザであっても設定ミスをしてしまうことはよくあります。設定ミスなどをなくすためには、設定の自動化が有効です。そのためのプロトコルがDHCPです。

DHCPによって、ホストをネットワークに接続すれば、自動的に必要なTCP/IPの設定を行うことができます。IT技術に慣れていないユーザでも正しい設定ができます。また、単純な設定ミスによるトラブルを防ぐこともできます。

DHCPメッセージのカプセル化

DHCPは、トランスポート層にUDPを利用するアプリケーション層に位置するプロトコルです。DHCPは、アプリケーション層に位置するプロトコルですが、アプリケーションの機能やデータのフォーマットを定義しているのではなく、TCP/IPの通信を行うために必要な設定を行うことが目的であることに注意してください。

DHCPメッセージはUDPヘッダでカプセル化します。ウェルノウンポート番号67と68です。DHCPサーバは67でDHCPクライアントが68です。さらにIPヘッダでカプセル化します。そして、イーサネットヘッダや802.11(Wi-Fi)ヘッダでカプセル化して、物理的な信号を伝送媒体へ送り出します。

図 DHCPメッセージのカプセル化
図 DHCPメッセージのカプセル化

DHCPの動作の概要

DHCPを利用するには、あらかじめDHCPサーバを用意し、配布するIPアドレスなどのTCP/IPの設定を登録しておきます。DHCPサーバとして、Windows/Linuxサーバを利用することができます。また、ルータ/レイヤ3スイッチにもDHCPサーバ機能が備わっています。

DHCPサーバに登録していれるTCP/IP設定情報をDHCPプールと呼びます。DHCPクライアントのホストがネットワークに接続すると、DHCPサーバとの間で以下の4つのメッセージをやり取りして、自動的にTCP/IPの設定を行います。

  1. DHCP DISCOVER
  2. DHCP OFFER
  3. DHCP REQUEST
  4. DHCP ACK
 図  DHCPの概要
図 DHCPの概要

以上のようなDHCPのやり取りはブロードキャストを利用します。そもそもDHCPクライアントには自分のIPアドレスがわかりません。もちろん、DHCPサーバのIPアドレスもわかりません。アドレスがわからなくても、とりあえず何らかのデータを送りたいというときにブロードキャストを利用します。ブロードキャストで同じネットワーク上のすべてに送っておけば、同じネットワーク上にDHCPサーバが存在していれば、DHCPサーバが返事を返してくれるだろうという考えです。ブロードキャストを利用するため、DHCPサーバとDHCPクライアントは原則として同じネットワーク上に接続されている必要があります。ネットワークを相互接続するルータはブロードキャストを他のネットワークに転送しないためです。

また、DHCPで設定情報を取得すると、ホストのIPアドレスがコロコロと頻繁に変わってしまう可能性があります。IPアドレスが変わってしまうと、ホストを特定するのに手間がかかることになります。DHCPでIPアドレスを自動的に設定する際、決まったIPアドレスを配布することもできます。

DHCPリレーエージェント

DHCPクライアントとDHCPサーバは同じネットワーク上であることが前提ですが、それが難しいこともあります。企業の社内ネットワークは、部署ごとなどで複数のネットワークに分割されています。各ネットワークにDHCPサーバを準備すると、たくさんのDHCPサーバが必要になり、サーバの管理が煩雑になってしまいます。複数のネットワーク上のDHCPクライアントに対して、1台のDHCPサーバでTCP/IPの設定情報を配布できるようにしたいと考えるのは、自然なことでしょう。

1台のDHCPサーバで複数のネットワークのDHCPクライアントにTCP/IP設定情報を配布するためには、各ネットワークのDHCPプールを設定しておきます。そして、DHCPリレーエージェント機能を利用します。

DHCPリレーエージェントとは、DHCPのブロードキャストメッセージをユニキャストに変換する機能です。DHCPリレーエージェント機能は、ルータで利用することが一般的です。DHCPクライアントが接続されているネットワーク上のルータでDHCPリレーエージェント機能を有効にします。

DHCPリレーエージェントによって、次のようにDHCPサーバはネットワークが異なるDHCPクライアントへTCP/IP設定情報を配布します。

  1. DHCPクライアントがDHCPDISCOVERをブロードキャストで送信します。
  2. DHCPリレーエージェントを有効にしているルータがDHCPクライアントからのDHCPDISCOVERのブロードキャストメッセージを受信すると、DHCPサーバのIPアドレスを宛先IPアドレスとしてユニキャストに変換して転送します。このとき、DHCPリレーエージェントのIPアドレスの情報も付加します。
  3. DHCPサーバは、DHCPリレーエージェントのIPアドレスの情報からクライアントに配布すべてきDHCPプールを判断します。そして、適切なDHCPプールからDHCPリレーエージェントのルータへDHCPOFFERを返します。
  4. ルータはDHCPOFFERをブロードキャストに変換して転送します。

以降、DHCPREQUEST、DHCPACKも同じように転送します。

図 DHCPリレーエージェントの概要
図 DHCPリレーエージェントの概要

関連記事

DHCPリレーエージェントについてさらに詳しく以下の記事でまとめています。

DHCPサーバの配置について、以下の記事でまとめています。

まとめ

ポイント

  • DHCPによって、IPアドレスをはじめとするTCP/IP設定を自動的に行うことができます。
  • DHCPの主なメッセージは以下の4つです。
    • DHCPDISCOVER
    • DHCPOFFER
    • DHCPREQUEST
    • DHCPACK
  • DHCPメッセージはブロードキャストベースでやり取りします。そのため、DHCPサーバとDHCPクライアントは原則として同一ネットワーク上に接続しなければいけません。

TCP/IP