TCP/IP とデータ通信

クライアント情報の配信

最初の機能を実行するにあたり、DHCP プロトコルはクライアントのハードウェアインタフェースに接続されているネットワークに対して有効な IP アドレスを提供します。IP アドレスを使用する権利は設定された期間だけ与えられ、これをリースと呼びます。この点が、従来の静的構成と異なります。クライアントが、元のリースよりも長い期間に渡ってこの IP アドレスを使用したいと希望する場合は、サーバーとの間で DHCP を介してリースの延長についてネゴシエーションを定期的に行う必要があります。クライアントに IP アドレスが不要になった場合、マシンのユーザーはリースを放棄して、使用可能な IP アドレスのプールへ IP アドレスを戻すことができます。ユーザーが戻さない場合、その IP アドレスはリースの期限が切れると自動的に回収されます。

クライアント側の DHCP プロトコルを Solaris 上に実装する場合には、複数の条件を満たす必要があります。サンのワークステーションを起動することは、構成や起動が必要なサービスが多様でかつその数が多いため、複雑なプロセスです。DHCP による解決策はすべて、すでに使用されているその他の方法 (特に、逆アドレス解決プロトコル (RARP) および静的な構成) と併存する必要があります。ワークステーションの起動後、スーパーユーザーがネットワークのアドレスを変更することができることを認識できる必要があります。複数のインタフェースが構成できる必要があります。人間による制御に応答する必要があり、さらにプロトコルの状態についての報告と統計を提供できる必要があります。

Solaris DHCP クライアントは、複数の機能を実装することによってこれらの条件を満たします。最初の起動から数日または数週間後にはリースを更新する必要があるため、DHCP を受け持つエージェントを、クライアント上でデーモンとして動作させる必要があります。このデーモン、すなわち DHCP エージェントあるいは dhcpagent(1M) (dhcpagent(1M) のマニュアルページを参照) は、プロトコルの対話をすべて受け持ちます。デーモンは、サーバーへの接続の際には、DHCP プロトコルの全パケットの送受信を行います。このデーモンは、以下のことを実行します。

エージェントの役割はこれですべてです。クライアントが動作している可能性がある、より上位のレベルについては、このデーモンはまったく関知しません。

開始時点では、エージェントは DHCP がどのインタフェースを構成するかについては何も想定しないで他のエンティティからの命令を待機します。これらの命令は制御プロトコルによってエージェントへ引き渡されますが、さらに、この制御プロトコルによって状態とその他の情報がエージェントからコントローラへ戻されます。ユーザーはこのコントローラによってエージェントの動作を制御することができ、エージェントの動作の制御は、このコントローラによって ifconfig(1M) コマンドの新規機能を介して実現されます。

ifconfig コマンドには、インタフェース上での DHCP の開始や終了を行う、DHCP 専用の新しいコマンド行オプションがあります。DHCP が開始されると、エージェントはプロトコルの命令に応じてサーバーとの間でパケットの送受信を行います。

最も簡単な例として、DHCP によってインタフェースが正常に構成された場合を考えます。エージェントは、リースの存続期間を記録し、インタフェースが構成済みである旨を ifconfig に通知し、受け取った構成をディスクに書き込んで休眠状態になります。

事前に設定された将来のある時点 (通常はリース存続期間を 50% 経過した時点) になると、エージェントは再び休眠状態から覚めて、リースの延長についてネゴシエーションを行います。このネゴシエーションは、ワークステーションが動作している間は何回でも無制限に行うことができます。最後には、システムを停止する時が来ます。その場合は、ifconfig によってエージェントに通知して、リースを放棄することができます。リースを放棄すると、ディスク上に格納されている構成情報はもはや有効でなくなるため削除されます。

エージェントは、数多くの別々のインタフェースを同時に追跡することができますが、それらのインタフェースの更新を同時に行う必要はありません。

上記の例は最も単純な場合ですが、状況がより複雑な場合も考えられます。エージェントが、自己のプロトコルメッセージに対する応答をまったく受け取らない場合もあります。その場合、エージェントはディスクに格納されていた構成を使用することができます。ただし、それが可能なのは、その構成に関連付けられたリースの期限が切れていない場合に限られます。有効な構成が見つからない場合、エージェントは定義済みの再伝送スケジュールを使用して DHCP を再試行を継続することもできますが、インタフェースの構成に失敗することもあります。どちらになるかは、インタフェースが主インタフェースとして指定されているかどうかに依存します。インタフェースが主インタフェースとして指定されている場合、エージェントは DHCP の再試行を継続します。インタフェースが主インタフェースとして指定されていない場合、エージェントは ifconfig コマンドに失敗します。

さらにエージェントは、人間の介入が発生した可能性も考慮する必要があります。エージェントが休眠状態から覚めた際に、IP アドレスとインタフェースの状態が受け取った構成と一致していないことを発見した場合、エージェントはそのインタフェースをアクティブリストからはずします。リースの取得がエージェントに対して再度要求されるまでは、インタフェースに対しては DHCP 操作は何も発生しません。