広告
広告
https://www.7key.jp/nw/tcpip/ip/dhcp.html#dhcp
DHCPは【Dynamic Host Configuration Protocol】の略で、動的にホストの設定を行うためのUDP上で動作するインターネットアプリケーションプロトコルとなっています。RFC2131とRFC2132で規定されています。DHCPの機能はDHCPサーバに登録されたネットワーク情報をクライアントからの問い合わせに応じて与えるもので、BOOTPを拡張したものとなっています(DHCPは上位互換なのでBOOTPからの移行は容易にできる)。よって、メッセージ構造はBOOTPのメッセージ構造とほぼ同じものとなっています(下表1参照)。ただ、DHCPではBOOTPには含まれていなかったドメイン名やDNSサーバアドレス、サブネットマスクやデフォルトゲートウェイアドレスなどなど、TCP/IPを利用してネットワークに接続するために必要なほぼ全ての情報をクライアントに提供する点が大きくBOOTPと異なります。また、サーバ側待ち受けポートが67、クライアント側が68を使う点もBOOTPと同様です。
https://www.7key.jp/nw/tcpip/ip/dhcp.html#message
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) |
Operation | 1は要求リクエスト、2は応答レスポンス |
Hardware Address Types | データリンク層で扱うハードウェアタイプ(Ethernet:1,FDDI:4...) |
Hardware Address Length | オクテット数で表したハードウェアアドレスの長さ(Ethernet,FDDI:6...) |
Hops | BOOTPを要求するクライアントが0を入れ、その後要求するサーバまでのホップ数を通過するルータが加えていく |
Transaction ID | 要求を作成するクライアントが無作為に作成した値。トランザクションの固有番号として識別に使う。 |
Seconds | 要求を作成したクライアントが0を入れ、経過時間を記録する。 |
Flags | - |
Client IP Address | クライアントのIPアドレス(不明な場合は0) |
Your IP Address | クライアントIPアドレスにゼロが入っていた場合、サーバはここにクライアントのIPアドレスを入れて返答する |
Server IP Address | DHCPサーバのIPアドレス |
Relay Agent IP Address | DHCPリレーエージェントのIPアドレス |
Client Hardware Address | クライアントのハードウェアアドレス。余りフィールドは0でパディングする |
Server Name | サーバの名称。クライアントが名称を知らなければ0を入れる |
Boot File Name | 起動ファイルの名称 |
Options | オプションがデータを持つ場合は[99.130.83.99]が先頭。タグ(1)、サイズ(1)、データ(可変)を1セットとして設定される。オプションの詳細はDHCPオプションを参照。 |
https://www.7key.jp/nw/tcpip/ip/dhcp.html#mgtype
DHCPオプション「53」のデータはDHCPメッセージタイプと呼ばれ、クライアントからサーバへの要求やデータの通知など、DHCPメッセージとしての意味を伝えるために使用されます。
値 | メッセージ名 | 意味 |
---|---|---|
1 | DHCPDISCOVER | クライアントがサーバを発見するためのメッセージ |
2 | DHCPOFFER | サーバからクライアントへの設定値候補を通知するメッセージ |
3 | DHCPREQUEST | クライアントが決定したサーバへの取得依頼メッセージ |
4 | DHCPDECLINE | クライアントからサーバへの拒否メッセージ |
5 | DHCPACK | サーバからクライアントへの取得正常終了メッセージ |
6 | DHCPNAK | サーバからクライアントへの取得拒否メッセージ |
7 | DHCPRELEASE | クライアントからサーバへのリリース要求メッセージ |
8 | DHCPINFORM | IPアドレス取得は行わず、オプション取得のみ行う場合にクライアントから送られるメッセージ |
9 | DHCPFORCERENEW | サーバからクライアントへの再構成要求。サーバから能動的に再設定を指示できる。(RFC3203) |
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クライアントにも対応することができることとなります。
https://www.7key.jp/nw/tcpip/ip/dhcp.html#rease
また、DHCPにはリース期間という概念もあります。これは定期的にIPアドレスを再割り当てするもので、この期間を過ぎるとクライアントは現在割り当てられているIPアドレスを一旦破棄し、再度DHCPサーバに割り当てを要求するのです。リース期間前にIPアドレスの利用を終了し、リリース(返却)することも可能です。この機能により、必要最小限のIPアドレスを使いまわすことができるのです。
https://www.7key.jp/nw/tcpip/ip/dhcp.html#work
では改めて詳しく、DHCPを使いネットワークの設定を行うための動作をみてみましょう。ただし、この場合クライアント側に設定ソフトがインストールされていることが条件となります(Windows等多くのOSで標準装備されています)。
以上の動作でクライアントとなるホストはDHCPサーバからIPアドレスを割り当ててもらえるのです。以上の動作は全てブロードキャストで行われます。このことによってクライアントに対する初期設定は一切いらないのですが、ブロードキャストドメイン内にDHCPサーバがあることが前提条件となってしまいます(別途説明をしますリレーエージェントによりネットワーク内の別のサーバを使ってDHCPのやり取りを中継する方法もあります)。
次にリース期間の延長動作についてみてみましょう。リースの際のDHCPACKメッセージでリース期間がホストに通知されています。このリース期間はIPアドレスを使用できる最大期間となっていまして、この期間を過ぎるとDHCPサーバ側で現在のIPアドレスが他のホストに割り当てられる可能性があり、ホストはそのIPアドレスを使用し続けてはならないこととなっています。リース期間の他にも、Renewing期間、Rebinding期間が通知されることもあります。Renewing期間を過ぎると同じDHCPサーバへリースの延長を求めなければなりません(この際の通信はユニキャスト)。Rebinding期間が過ぎるとどのDHCPサーバでも良いので再度DHCPDISCOVERメッセージでIPアドレスを取得し直さなければなりません。
実例としてリース期間が8時間として動作を順にみてみましょう。リース期間はもとより、Renewing期間、Rebinding期間もそれぞれ管理者によって個別に設定を行うことが可能なのですが、RFCではリース期間の半分が過ぎると延長、8分の5が過ぎると再割り当てを行うと言う動作をデフォルト値としていますので、ここではそれに基づいて解説します。
次にIPアドレスのリリース(開放)についてみてみましょう。こちらはいたってシンプルで、クライアントからDHCPサーバに向けてDHCPRELEASEメッセージを送信するだけです。たったこれだけで動的割り当てのDHCPサーバは該当するIPアドレスをアドレスプールに戻し、再利用可能な状態とするのです。
https://www.7key.jp/nw/tcpip/ip/dhcp.html#supplement
DHCPサーバからクライアントへのアドレス配布の仕方は以下の3種類。
広告