DHCP【Dynamic Host Configuration Protocol】

広告

広告

DHCP とは

最終更新
2005-07-19T00:00:00+09:00
この記事のURI参照
https://www.7key.jp/nw/tcpip/ip/dhcp.html#dhcp

DHCPは【Dynamic Host Configuration Protocol】の略で、動的にホストの設定を行うためのUDP上で動作するインターネットアプリケーションプロトコルとなっています。RFC2131RFC2132で規定されています。DHCPの機能はDHCPサーバに登録されたネットワーク情報をクライアントからの問い合わせに応じて与えるもので、BOOTPを拡張したものとなっています(DHCPは上位互換なのでBOOTPからの移行は容易にできる)。よって、メッセージ構造はBOOTPのメッセージ構造とほぼ同じものとなっています(下表1参照)。ただ、DHCPではBOOTPには含まれていなかったドメイン名DNSサーバアドレス、サブネットマスクデフォルトゲートウェイアドレスなどなど、TCP/IPを利用してネットワークに接続するために必要なほぼ全ての情報をクライアントに提供する点が大きくBOOTPと異なります。また、サーバ側待ち受けポートが67、クライアント側が68を使う点もBOOTPと同様です。

DHCPメッセージ

最終更新
2005-07-19T00:00:00+09:00
この記事のURI参照
https://www.7key.jp/nw/tcpip/ip/dhcp.html#message
DHCPメッセージ
Operation
(1)
Hardware Address Types
(1)
HardWare Address Length
(1)
Hops
(1)
Transaction ID(4)
Seconds(2)Flags(2)
Client IP Address(4)
Your IP Address(4)
Server IP Address(4)
Relay Agent IP Address(4)
Client Hardware Address(16)
Server Name(64)
Boot File Name(128)
Options(var)
各フィールド説明
Operation1は要求リクエスト、2は応答レスポンス
Hardware Address Typesデータリンク層で扱うハードウェアタイプ(Ethernet:1,FDDI:4...)
Hardware Address Lengthオクテット数で表したハードウェアアドレスの長さ(Ethernet,FDDI:6...)
HopsBOOTPを要求するクライアントが0を入れ、その後要求するサーバまでのホップ数を通過するルータが加えていく
Transaction ID要求を作成するクライアントが無作為に作成した値。トランザクションの固有番号として識別に使う。
Seconds要求を作成したクライアントが0を入れ、経過時間を記録する。
Flags-
Client IP AddressクライアントのIPアドレス(不明な場合は0)
Your IP AddressクライアントIPアドレスにゼロが入っていた場合、サーバはここにクライアントのIPアドレスを入れて返答する
Server IP AddressDHCPサーバのIPアドレス
Relay Agent IP AddressDHCPリレーエージェントのIPアドレス
Client Hardware Addressクライアントのハードウェアアドレス。余りフィールドは0でパディングする
Server Nameサーバの名称。クライアントが名称を知らなければ0を入れる
Boot File Name起動ファイルの名称
Optionsオプションがデータを持つ場合は[99.130.83.99]が先頭。タグ(1)、サイズ(1)、データ(可変)を1セットとして設定される。オプションの詳細はDHCPオプションを参照。

DHCPメッセージタイプ

最終更新
2005-07-19T00:00:00+09:00
この記事のURI参照
https://www.7key.jp/nw/tcpip/ip/dhcp.html#mgtype

DHCPオプション「53」のデータはDHCPメッセージタイプと呼ばれ、クライアントからサーバへの要求やデータの通知など、DHCPメッセージとしての意味を伝えるために使用されます。

DHCPメッセージ
メッセージ名意味
1DHCPDISCOVERクライアントがサーバを発見するためのメッセージ
2DHCPOFFERサーバからクライアントへの設定値候補を通知するメッセージ
3DHCPREQUESTクライアントが決定したサーバへの取得依頼メッセージ
4DHCPDECLINEクライアントからサーバへの拒否メッセージ
5DHCPACKサーバからクライアントへの取得正常終了メッセージ
6DHCPNAKサーバからクライアントへの取得拒否メッセージ
7DHCPRELEASEクライアントからサーバへのリリース要求メッセージ
8DHCPINFORMIPアドレス取得は行わず、オプション取得のみ行う場合にクライアントから送られるメッセージ
9DHCPFORCERENEWサーバからクライアントへの再構成要求。サーバから能動的に再設定を指示できる。(RFC3203)

アドレスプール

最終更新
2005-07-19T00:00:00+09:00
この記事のURI参照
https://www.7key.jp/nw/tcpip/ip/dhcp.html#addressp

更に、BOOTPに比べてDHCPが大きく拡張された機能の1つとして、IPアドレスのプール機能を挙げることができます。BOOTPではあらかじめBOOTPサーバMACアドレスとIPアドレスの対応表を登録してクライアントからの要求に応じていました。これはネットワークの規模によっては大変な労力となります。100台のネットワーク機器があれば100台分の情報を、1,000台のネットワーク機器があれば1,000台分の情報を登録しなければならないのですから。そこでDHCPでは、利用できるIPアドレスをあらかじめ登録し、DHCPサーバはそのIPアドレスの範囲から個々のクライアントに重複の無いようにIPアドレスを割り当てる機能を提供します。このあらかじめ用意されていますIPアドレス範囲のことをアドレスプールと呼びます。つまり、サーバ側で管理するIPアドレスを固定的なものとみるか、再利用可能な資源とみるかがBOOTPとDHCPの大きな違いとなっているのです(後に説明をしますリース期間もこの違いに一役買っています)。具体的な動作はBOOTPと大差ありません。クライアントはTCP/IPを利用する際にブロードキャストでDHCPメッセージを送信します。この要求に対してDHCPサーバでは登録のあるクライアントでは固定IPアドレスを、それ以外には自動割り当て用IPアドレスをアドレスプールの中から提供をします(後に詳しく説明します)。

補足

DHCPには特定のMACアドレスクライアントに対して特定のIPアドレスを割り当てるエントリも設定できます。このことによりDHCPサーバを用意すれば、BOOTPクライアントにも対応することができることとなります。

リース期間

最終更新
2005-07-31T00:00:00+09:00
この記事のURI参照
https://www.7key.jp/nw/tcpip/ip/dhcp.html#rease

また、DHCPにはリース期間という概念もあります。これは定期的にIPアドレスを再割り当てするもので、この期間を過ぎるとクライアントは現在割り当てられているIPアドレスを一旦破棄し、再度DHCPサーバに割り当てを要求するのです。リース期間前にIPアドレスの利用を終了し、リリース(返却)することも可能です。この機能により、必要最小限のIPアドレスを使いまわすことができるのです。

DHCPの動作

最終更新
2005-08-06T00:00:00+09:00
この記事のURI参照
https://www.7key.jp/nw/tcpip/ip/dhcp.html#work

リース

では改めて詳しく、DHCPを使いネットワークの設定を行うための動作をみてみましょう。ただし、この場合クライアント側に設定ソフトがインストールされていることが条件となります(Windows等多くのOSで標準装備されています)。

  1. クライアントとなるホストDHCPDISCOVERメッセージをブロードキャストします。
  2. ブロードキャストドメイン内にある全てのDHCPサーバからDHCPOFFERと言う設定値候補が返信されます。
  3. クライアントとなるホストは過去に使用したことのあるデータがあれば優先的にそれを選択、なければ任意の設定値候補を選択し、DHCPREQUESTメッセージをブロードキャストします。
  4. クライアントに選択されたサーバはクライアントの情報が正しい事を確認した後にDHCPACKを返信します。ここで正しく無い(他のホストにリースされた等)と判断した場合にはDHCPNACKメッセージを返すこととなります(DHCPNACKメッセージを受け取ったクライアントは最初から以上の動作をやり直します)。
  5. DHCPACKメッセージを受け取ったクライアントはネットワーク設定が完了し、使用状態となります。

以上の動作でクライアントとなるホストDHCPサーバからIPアドレスを割り当ててもらえるのです。以上の動作は全てブロードキャストで行われます。このことによってクライアントに対する初期設定は一切いらないのですが、ブロードキャストドメイン内にDHCPサーバがあることが前提条件となってしまいます(別途説明をしますリレーエージェントによりネットワーク内の別のサーバを使ってDHCPのやり取りを中継する方法もあります)。

リース延長

次にリース期間の延長動作についてみてみましょう。リースの際のDHCPACKメッセージでリース期間がホストに通知されています。このリース期間はIPアドレスを使用できる最大期間となっていまして、この期間を過ぎるとDHCPサーバ側で現在のIPアドレスが他のホストに割り当てられる可能性があり、ホストはそのIPアドレスを使用し続けてはならないこととなっています。リース期間の他にも、Renewing期間Rebinding期間が通知されることもあります。Renewing期間を過ぎると同じDHCPサーバへリースの延長を求めなければなりません(この際の通信はユニキャスト)。Rebinding期間が過ぎるとどのDHCPサーバでも良いので再度DHCPDISCOVERメッセージでIPアドレスを取得し直さなければなりません。

実例としてリース期間が8時間として動作を順にみてみましょう。リース期間はもとより、Renewing期間Rebinding期間もそれぞれ管理者によって個別に設定を行うことが可能なのですが、RFCではリース期間の半分が過ぎると延長、8分の5が過ぎると再割り当てを行うと言う動作をデフォルト値としていますので、ここではそれに基づいて解説します。

  1. リース期間の半分である4時間が経過した際に、クライアントとなるホストは延長動作を開始します。
  2. IPアドレスの割り当てを行ったDHCPサーバに対してユニキャストでDHCPREQUESTメッセージを送信します。
  3. DHCPサーバよりDHCPACKメッセージが返信されれば無事IPアドレスリース期間が延長されたこととなり、また4時間は同じIPアドレスを使う事ができます。
  4. しかし、何らかの不具合等によりDHCPACKメッセージが返って来なかった場合、1時間後(リース開始から5時間後)に再割り当ての動作が開始されます。
  5. リース開始と同様で、クライアントとなるホストブロードキャストでネットワーク内にDHCPDISCOVERDHCPREQUESTメッセージを送信します(現在使用しているIPアドレスを要求することもあります)。
  6. DHCPサーバは何も問題が無ければ(他のDHCPサーバによってリース済み等)DHCPACKメッセージを返します。
  7. これでもリース期間内にDHCPACKメッセージが返って来ない場合は、クライアントとなるホストは初期状態(0.0.0.0)に戻ります。

Figure:DHCP-01

リリース

次にIPアドレスリリース(開放)についてみてみましょう。こちらはいたってシンプルで、クライアントからDHCPサーバに向けてDHCPRELEASEメッセージを送信するだけです。たったこれだけで動的割り当てのDHCPサーバは該当するIPアドレスをアドレスプールに戻し、再利用可能な状態とするのです。

補足

最終更新
2005-07-19T00:00:00+09:00
この記事のURI参照
https://www.7key.jp/nw/tcpip/ip/dhcp.html#supplement

DHCPサーバからクライアントへのアドレス配布の仕方は以下の3種類。

自動割り当て
IPアドレスをアドレスプールから期限無しでランダムに割り当てる方法。IPアドレスをどのホストに付与したかをホストのMACアドレスを元に保存し、常に同じIPアドレスを同じホストに割り当てる。
動的割り当て
IPアドレスをアドレスプールから期限付きでランダムに割り当てる方法。IPアドレスが使用されている際は定期的に割り当て期限を延長する。ただし使われなくなったIPアドレスは別のホストに再利用されることもある。
手動割り当て
管理者が手動でMACアドレスとIPアドレスの対応表を設定し、その情報に基づきIPアドレスを割り当てる方法。登録されていないホストにはIPアドレスが割り当てられない。

広告

Copyright (C) 2005 七鍵 key@do.ai 初版:2005年07月19日 最終更新:2005年08月06日