(57)【要約】【課題】  無効等の状態を有するマシンがネットワークリソースにアクセスすることを確実に制限するための、システムおよび方法を提供する。【解決手段】  クライアントマシン上に位置する検証調整クライアント（ＱＣＣ）は、ヘルスのステートメントを複数の検疫ポリシークライアントから獲得する。ＱＣＣはこれらのステートメントをパッケージし、パッケージを検疫実施クライアント（ＱＥＣ）に提供する。ＱＥＣはパッケージを検疫実施サーバ（ＱＥＳ）に、ネットワークアクセスの要求と共に送信する。ＱＥＳはパッケージを検疫調整サーバ（ＱＣＳ）に渡し、ＱＣＳはパッケージを分解し、個々のステートメントを対応する検疫ポリシーサーバ（ＱＰＳ）に渡す。ＱＰＳはステートメントを妥当性検査し、ＱＣＳに結果を通知する。クライアントが有効なステートメントを提供した場合、ＱＥＳはクライアントに、ネットワークへのアクセスを許可する。【選択図】  図２
2005318615.tif 000002
【特許請求の範囲】
【請求項１】
検疫ポリシーを実施するサーバと対話するためのネットワーク検疫クライアントであって、
ネットワークプロトコルを通じて前記サーバと通信するための少なくとも１つの実施クライアントと、
少なくとも１つのヘルスのステートメントを少なくとも１つのポリシークライアントから獲得するための調整クライアントとを備え、前記調整クライアントは、それを通じて前記少なくとも１つのポリシークライアントが前記調整クライアントと通信するインターフェイスをエクスポーズし、前記調整クライアントは前記少なくとも１つのヘルスのステートメントを、ヘルスのステートメントリストにアセンブルし、前記少なくとも１つの実施クライアントに、前記ヘルスのステートメントリストを提供することを特徴とするネットワーク検疫クライアント。
【請求項２】
前記少なくとも１つの実施クライアントは前記ヘルスのステートメントリストを使用して、前記サーバからのネットワークリソースへのアクセスを得ることを特徴とする請求項１に記載のネットワーク検疫クライアント。
【請求項３】
前記少なくとも１つの実施クライアントは、動的ホスト制御プロトコルクライアント、仮想プライベートネットワーククライアント、およびＩＰｓｅｃクライアントのうち１つであることを特徴とする請求項１に記載のネットワーク検疫クライアント。
【請求項４】
前記調整クライアントは前記少なくとも１つのポリシークライアントと、前記少なくとも１つのポリシークライアントによって提供されたインターフェイスを通じて通信することを特徴とする請求項１に記載のネットワーク検疫クライアント。
【請求項５】
前記調整クライアントおよび実施クライアントは、コンピュータのオペレーティングシステム内に備えられることを特徴とする請求項１に記載のネットワーク検疫クライアント。
【請求項６】
前記少なくとも１つのポリシークライアントは、ネットワークポリシーを少なくとも１つのポリシーサーバから獲得し、ホストコンピュータが前記ネットワークポリシーに準拠することを指示するヘルスのステートメントを生成することを特徴とする請求項１に記載のネットワーク検疫クライアント。
【請求項７】
請求項１に記載の方法を実行するためのコンピュータ可読命令を含むことを特徴とするコンピュータ可読メディア。
【請求項８】
クライアントがネットワーク検疫ポリシーに準拠するための方法であって、
ポリシーを１つまたは複数のポリシーサーバから獲得するステップと、
システム診断を実行して、前記クライアントが獲得されたポリシーに準拠するかどうかを判断するステップと、
前記クライアントが獲得されたポリシーに準拠できない場合、前記クライアントのセキュリティ状態を修正するステップと、
ヘルスのステートメントのリストを生成するステップであって、各ヘルスのステートメントは、前記クライアントが対応するポリシーに準拠することを指示するステップと、
前記ヘルスのステートメントのリストを検疫サーバへ、妥当性検査のために送信するステップとを備えることを特徴とする方法。
【請求項９】
前記クライアントのセキュリティ状態を修正するステップは、ソフトウェアパッチを修正サーバからダウンロードするステップを含むことを特徴とする請求項８に記載の方法。
【請求項１０】
各ヘルスのステートメントは、前記クライアントが指定されたポリシーに準拠するかどうかを判断することを担うポリシークライアントによって、生成されることを特徴とする請求項８に記載の方法。
【請求項１１】
前記ヘルスのステートメントのリストが有効とされる場合、ヘルス証明書を前記検疫サーバから受信するステップをさらに備え、前記ヘルス証明書は、前記検疫サーバおよびネットワーク上の他のコンピュータに、前記クライアントが前記ネットワークのためのセキュリティポリシーに準拠することを指示することを特徴とする請求項８に記載の方法。
【請求項１２】
前記ヘルスのステートメントのリストは前記検疫サーバへ、プロトコル実施クライアントによって送信され、前記プロトコル実施クライアントによって実施されたプロトコルは、動的ホスト制御プロトコル、仮想プライベートネットワークプロトコル、ＩＰｓｅｃプロトコルおよびＩＥＥＥ  ８０２．１Ｘプロトコルのうち１つであることを特徴とする請求項８に記載の方法。
【請求項１３】
請求項８に記載の方法を実行するためのコンピュータ可読命令を含むことを特徴とするコンピュータ可読メディア。
【請求項１４】
ネットワーク検疫ポリシーを実施するためのネットワーク検疫サーバであって、
ネットワークプロトコルを通じて少なくとも１つのクライアントと通信するための少なくとも１つの実施サーバと、
前記実施サーバからの少なくとも１つのヘルスのステートメントを含むヘルスのステートメントのリストを受信し、少なくとも１つのポリシーサーバをクエリして前記少なくとも１つのヘルスのステートメントを検証するための、調整サーバとを備えることを特徴とするネットワーク検疫サーバ。
【請求項１５】
各ヘルスのステートメントが検証される場合、前記調整サーバは前記少なくとも１つの実施サーバに、前記少なくとも１つのクライアントにネットワークリソースへのアクセスを許可するように命令することを特徴とする請求項１４に記載のネットワーク検疫サーバ。
【請求項１６】
各ヘルスのステートメントが検証されない場合、前記調整サーバは前記少なくとも１つの実施サーバに、前記少なくとも１つのポリシーサーバから獲得された検疫ポリシーを実施するように命令することを特徴とする請求項１４に記載のネットワーク検疫サーバ。
【請求項１７】
前記調整サーバは、それを通じて前記少なくとも１つのポリシーサーバが調整サーバと通信するインターフェイスをエクスポーズすることを特徴とする請求項１４に記載のネットワーク検疫サーバ。
【請求項１８】
前記調整サーバは前記少なくとも１つのポリシーサーバと、前記少なくとも１つのポリシーサーバによって提供されたインターフェイスを通じて通信することを特徴とする請求項１４に記載のネットワーク検疫サーバ。
【請求項１９】
ネットワーク検疫管理のための方法であって、
リモートに位置する動的ホスト制御プロトコル（ＤＨＣＰ）サーバから、ネットワークリソースを要求するクライアントから獲得されたヘルス証明書を受信するステップであって、前記ヘルス証明書は前記クライアントのシステム状態を反映するステップと、
前記ヘルス証明書を妥当性検査するステップと、
前記ヘルス証明書が有効である場合、前記ＤＨＣＰサーバに、前記要求を許可するように命令するステップと、
前記ヘルス証明書が無効である場合、前記ＤＨＣＰサーバに、前記要求を許可しないように、および、前記クライアントを検疫させるように命令するステップとを備えることを特徴とする方法。
【請求項２０】
請求項１９に記載の方法を実行するためのコンピュータ可読命令を含むことを特徴とするコンピュータ可読メディア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にネットワークアクセス管理に関し、より詳細には、クライアントがネットワークリソースにアクセスすることを許可する前に、クライアントのセキュリティ状態をチェックすることに関する。
【背景技術】
【０００２】
コンピュータネットワークでは、クライアント、サーバおよびピアは通常、信頼モデルおよびメカニズムを使用して、ファイル、プリンタ、他のコンピュータ、またはネットワーク上でアクセス可能ないかなるものなど、ネットワークリソースへのアクセスを、無許可のユーザが得ないことを確実にする。これらの信頼モデルおよびメカニズムは、悪意のないユーザを識別するために使用される。しかし、ユーザのマシンがユーザの知識なしにネットワークに危険をもたらすことは、可能である。例えば、マシンはウィルスを含む場合があり、または、ユーザが気付かないセキュリティホールを有する場合がある。したがって、いかにユーザに悪意がないとしても、ユーザのマシンの安全でない状態は、セキュリティの欠陥が修復されるまで、ネットワークから隔離されるべきである。このセキュリティ問題は、３つのネットワーキング環境、すなわち、動的ホスト構成プロトコル（ＤＨＣＰ）、仮想プライベートネットワーク（ＶＰＮ）、ＩＥＥＥ  ８０２．１Ｘ、およびインターネットプロトコルセキュリティ（ＩＰｓｅｃ）への、特定の適用を有する。
【０００３】
ＤＨＣＰはインターネットプロトコル（ＩＰ）割り振り仕様であり、この仕様により、サーバはＩＰアドレスをクライアントに、特定の時間に渡って割り振りまたは「リース」することができる。ＤＨＣＰクライアントは、それ自体をネットワークに最初に接続するとき、ＤＨＣＰ  ＤＩＳＣＯＶＥＲパケットをブロードキャストする。ローカルセグメント上のＤＨＣＰサーバはこのブロードキャストをインターセプトし、ＩＰアドレス、および、クライアントにネットワークアクセスをプロビジョンするために必要な他の情報を含む、ＤＨＣＰ  ＯＦＦＥＲパケットを戻す。クライアントは複数のＤＨＣＰ  ＯＦＦＥＲパケットをいくつかの異なるサーバから受信することができ、クライアントはこれらのサーバの間で選択し、選択された明示的サーバを識別するＤＨＣＰ  ＲＥＱＵＥＳＴパケットをブロードキャストしなければならない。選択されたサーバはクライアントに、リースが終了されることを伝えるＤＨＣＰＡＣＫを戻すようになる。オファーが、ある理由のために、おそらくタイムアウトのため、または、別のクライアントがリースを割り振るために、もはや有効でない場合、選択されたサーバはＤＨＣＰＮＡＫメッセージにより応答しなければならない。これは、クライアントに別のＤＨＣＰＤＩＳＣＯＶＥＲパケットを送信させ、プロセスを反復して開始するようになる。
【０００４】
クライアントがネットワークアドレスをある他の手段（例えば、手動の構成）を通じて得ている場合、クライアントはＤＨＣＰＩＮＦＯＲＭ要求メッセージを使用して、他のローカル構成パラメータを得ることができる。ＤＨＣＰＩＮＦＯＲＭメッセージを受信するサーバはＤＨＣＰＡＣＫメッセージを、クライアントに適切ないずれかのローカル構成パラメータにより構築する。クライアントがリースを有した後、リース満了に先立って、別のＤＨＣＰ  ＲＥＱＵＥＳＴメッセージを通じて、リースが更新されなければならない。クライアントがリースの使用を、その満了日に先立って終了する場合、クライアントはＤＨＣＰ  ＲＥＬＥＡＳＥメッセージをサーバに送信して、リースを他のノードにとって使用可能にすることができるようにする。サーバがリースの終了までにクライアントから連絡をもらわない場合、サーバはこのリースに非更新のマークを付け、他のクライアントが使用するためにリースを使用可能にする。
【０００５】
従来のＤＨＣＰプロビジョニングシステムでは、ＤＨＣＰサーバは認証手順を実施して、ネットワークアクセスを要求するクライアントが検証済みのクレデンシャルを有することを確実にすることができる。例えば、クライアントにＤＨＣＰ  ＯＦＦＥＲを提供する前に、組織のローカルエリアネットワーク（ＬＡＮ）上のＤＨＣＰサーバは、ユーザがＬＡＮにアクセスするための許可を有することを明示するためのアクセスコードを必要とする。認証手順は、無許可または悪意のあるユーザがネットワークリソースへのアクセスを得ることを防止する。しかし、従来の認証手順は、安全でない、または悪意さえあるマシンがネットワークにアクセスすることを防止しない。ユーザは、ネットワークにアクセスするための有効な許可を有する場合があるが、ユーザのマシンは、ウィルスに感染する可能性があり、または、セキュリティホールを含む可能性があり、マシンがネットワークへのアクセスを許可される前に修正されるべきである。
【０００６】
不良セキュリティ状態を有するマシンがネットワークにリスクをもたらすもう１つの環境は、ＶＰＮである。ＶＰＮは、プライベートネットワークの拡張であって、インターネットのような共有または公衆ネットワークを介するリンクを含む。ＶＰＮは、共有または公衆インターネットワークを介して２つのコンピュータの間で、ポイントツーポイントのプライベートリンクの特性をエミュレートする方法で、データを送信することを可能にする。仮想プライベートネットワークを構成および作成する動作は、仮想プライベートネットワーキングとして知られる。ポイントツーポイントリンクをエミュレートするために、共有または公衆トランジットインターネットワークを通過してそのエンドポイントに到達することを可能とする、ルーティング情報を提供するヘッダにより、データはカプセル化またはラップされる。プライベートリンクをエミュレートするために、送信されるデータは機密性のために暗号化される。共有または公衆ネットワーク上でインターセプトされるパケットは、暗号鍵なしで解読不可能である。プライベートデータがカプセル化される接続の部分は、トンネルとして知られる。プライベートデータが暗号化される接続の部分は、仮想プライベートネットワーク（ＶＰＮ）接続として知られる。
【０００７】
ＶＰＮはまた認証プロトコルをも使用する。ネットワークアクセスサーバ（ＮＡＳ）はＶＰＮクライアントに、チャレンジを送信し、チャレンジはセッションＩＤおよび任意のチャレンジ文字列からなりリモートクライアントへ送信される。リモートクライアントはユーザ名および暗号化された形式のチャレンジ文字列、セッションＩＤ、およびＭＤ４ハッシュパスワードを戻さなければならない。このデザインは、パスワードのＭＤ４ハッシュのハッシュを使用し、追加のレベルのセキュリティを提供し、これは、サーバがクリアテキストパスワードの代わりにハッシュパスワードを格納することを可能にするからである。しかし、またしても従来の認証手順は、安全でない、または悪意さえあるマシンがネットワークにアクセスすることを防止しない。ＶＰＮクライアントは有効な認証を提示することができるが、ＶＰＮクライアントマシン自体はウィルスに感染する可能性があり、または、セキュリティホールを含む可能性があり、マシンがＶＰＮへのアクセスを許可される前に修正されるべきである。
【０００８】
ユーザ認証が不十分であるさらにもう１つの環境は、ＩＰｓｅｃの使用である。ＩＰｓｅｃは、機密性を確実にする２つのファンクション、すなわち、データ暗号化およびデータ完全性を定義する。ＩＰｓｅｃは認証ヘッダ（ＡＨ）を使用してソース認証および完全性を暗号化なしで提供し、カプセル化セキュリティペイロード（ＥＳＰ）を使用して認証および完全性を暗号化と共に提供する。ＩＰｓｅｃでは、送信者および受信者のみがセキュリティキーを知っている。認証データが有効である場合、受信者は、その通信が送信者から来たこと、および、その通信が転送中に変更されなかったことを知る。
【０００９】
ＩＰｓｅｃを、ＴＣＰ／ＩＰスタックの下の層として想定することができる。この層は、各コンピュータ上のセキュリティポリシー、および、送信者と受信者の間のネゴシエートされたセキュリティ関連付けによってコントロールされる。ポリシーは、フィルタおよび関連付けられたセキュリティビヘイビアのセットからなる。パケットのＩＰアドレス、プロトコルおよびポート番号がフィルタにマッチする場合、パケットは、関連付けられたセキュリティビヘイビアを受ける。第１のこのようなパケットは、送信者と受信者の間のセキュリティ関連付けのネゴシエーションをトリガする。インターネット鍵交換（ＩＫＥ）は、このネゴシエーションのための標準プロトコルである。ＩＫＥネゴシエーション中に、２つのコンピュータが認証およびデータセキュリティの方法において合意し、相互認証を実行し、次いで、後続のデータ暗号化のための共有鍵を生成する。
【００１０】
セキュリティ関連付けが確立された後、データ送信はコンピュータ毎に進行することができ、データセキュリティ処理を、リモート受信者に送信するパケットに適用することができる。この処理は単に、送信されたデータの完全性を確実にすることができ、または、このデータを暗号化することもできる。ＩＰペイロードのためのデータ完全性およびデータ認証は、ＩＰヘッダとトランスポートヘッダの間に位置する認証ヘッダによって提供することができる。認証ヘッダは認証データおよびシーケンス番号を含み、認証データおよびシーケンス番号は共に、送信者を検証し、メッセージが転送中に改変されていないことを確実にし、リプレイアタックを防止するために使用される。
【００１１】
しかし、またしても従来の認証手順は、安全でない、または悪意さえあるマシンがネットワークにアクセスすることを防止しない。コンピュータは有効な認証を提示することができるが、マシン自体はウィルスに感染する可能性があり、または、セキュリティホールを含む可能性があり、マシンが別のコンピュータのネットワークリソースへのアクセスを許可される前に修正されるべきである。
【００１２】
ＩＥＥＥ  ８０２．１ｘは、認証済みのネットワークアクセスを８０２．１１無線ネットワークおよび有線イーサネット（登録商標）ネットワークに提供する、ポートベースのネットワークアクセス制御のための規格である。ポートベースのネットワークアクセス制御は、スイッチ型ローカルエリアネットワーク（ＬＡＮ）インフラストラクチャの物理特性を使用して、ＬＡＮポートに接続されるデバイスを認証し、認証プロセスが失敗する場合にそのポートへのアクセスを防止する。
【００１３】
ポートベースのネットワークアクセス制御の対話中に、ＬＡＮポートは２つの役割、すなわち、オーセンティケータまたはサプリカントのうち１つを採用する。オーセンティケータの役割では、ＬＡＮポートは、そのポートを通じてアクセスすることができるサービスにユーザがアクセスすることを許可する前に、認証を実施する。サプリカントの役割では、ＬＡＮポートは、オーセンティケータのポートを通じてアクセスすることができるサービスへのアクセスを要求する。認証サーバは、分離したエンティティであることも、オーセンティケータと同一場所に配置されることも可能であり、サプリカントのクレデンシャルを、オーセンティケータの代わりにチェックする。認証サーバは次いでオーセンティケータに応答し、サプリカントがオーセンティケータのサービスにアクセスすることを許可されるかどうかを指示する。
【００１４】
オーセンティケータのポートベースのネットワークアクセス制御は、ＬＡＮへの２つの論理アクセスポイントを、１つの物理ＬＡＮポートを通じて定義する。第１の論理アクセスポイントは、非制御ポートであり、コンピュータの許可状態にかかわらず、オーセンティケータとＬＡＮ上の他のコンピュータの間のデータ交換を可能にする。第２の論理アクセスポイントは、制御されたポートであり、認証されたＬＡＮユーザとオーセンティケータの間のデータ交換を可能にする。ＩＥＥＥ  ８０２．１ｘは、リモート認証ダイヤルインユーザサービス（ＲＡＤＩＵＳ）など、標準セキュリティプロトコルを使用して、集中ユーザ識別、認証、動的鍵管理、およびアカウンティングを提供する。
【００１５】
しかし、またしても従来の認証手順は、安全でない、または悪意さえあるマシンがネットワークにアクセスすることを防止しない。コンピュータは有効な認証を提示することができるが、マシン自体はウィルスに感染する可能性があり、または、セキュリティホールを含む可能性があり、マシンが別のコンピュータのネットワークリソースへのアクセスを許可される前に修正されるべきである。したがって、当技術分野において、クライアントが安全になるまで、クライアントにネットワークアクセスがプロビジョンされず、クライアントのセキュリティ状態を証明することができることを確実にするための、システムおよび方法についての必要性がある。
【発明の開示】
【発明が解決しようとする課題】
【００１６】
前述に鑑みて、本発明は、検疫ポリシーを実施するサーバと対話するためのネットワーク検疫クライアントを提供し、ネットワーク検疫クライアントは、ネットワークプロトコルを通じてサーバと通信するための少なくとも１つの実施クライアント、および、少なくとも１つのヘルスのステートメントを少なくとも１つのポリシークライアントから獲得するための調整クライアントを備え、調整クライアントは、それを通じて少なくとも１つのポリシークライアントが調整クライアントと通信するインターフェイスをエクスポーズし、調整クライアントは少なくとも１つのヘルスのステートメントを、ヘルスのステートメントリストにアセンブルし、少なくとも１つの実施クライアントに、ヘルスのステートメントリストを提供する。
【課題を解決するための手段】
【００１７】
本発明の一実施形態では、少なくとも１つの実施クライアントはヘルスのステートメントリストを使用して、サーバからのネットワークリソースへのアクセスを得る。本発明の特徴を踏まえて、少なくとも１つの実施クライアントは、動的ホスト制御プロトコルクライアント、仮想プライベートネットワーククライアント、およびＩＰｓｅｃクライアントのうち１つである。調整クライアントは少なくとも１つのポリシークライアントと、少なくとも１つのポリシークライアントによって提供されたインターフェイスを通じて通信する。調整クライアントおよび実施クライアントを、コンピュータのオペレーティングシステム内に備えることができる。
【００１８】
本発明のもう１つの実施形態は、ネットワーク検疫ポリシーを実施するためのネットワーク検疫サーバを備え、ネットワーク検疫サーバは、ネットワークプロトコルを通じて少なくとも１つのクライアントと通信するための少なくとも１つの実施サーバ、および、実施サーバからの少なくとも１つのヘルスのステートメントを含むヘルスのステートメントのリストを受信し、少なくとも１つのポリシーサーバをクエリして少なくとも１つのヘルスのステートメントを検証するための調整サーバを含む。各ヘルスのステートメントが検証される場合、調整サーバは少なくとも１つの実施サーバに、少なくとも１つのクライアントにネットワークリソースへのアクセスを許可するように命令する。各ヘルスのステートメントが検証されない場合、調整サーバは少なくとも１つの実施サーバに、少なくとも１つのポリシーサーバから獲得された検疫ポリシーを実施するように命令する。本発明の特徴を踏まえて、調整サーバは、それを通じて少なくとも１つのポリシーサーバが調整サーバと通信するインターフェイスをエクスポーズする。調整サーバは少なくとも１つのポリシーサーバと、少なくとも１つのポリシーサーバによって提供されたインターフェイスを通じて通信する。
【００１９】
本発明のもう１つの実施形態では、ポリシークライアントが検疫クライアントと通信することを可能にするためのアプリケーションプログラミングインターフェイスが提供され、このアプリケーションプログラミングインターフェイスは、ポリシークライアントを検疫クライアントにバインドするためのバインドコール、および、検疫クライアントに、検疫ポリシー内の変更を通知するための通知コールを備える。
【００２０】
本発明のさらにもう１つの実施形態では、検疫クライアントがポリシークライアントと通信することを可能にするためのアプリケーションプログラミングインターフェイスが提供され、このアプリケーションプログラミングインターフェイスは、ヘルスのステートメントをポリシークライアントから得るための取得コールを備える。
【００２１】
本発明のさらにもう１つの実施形態では、ポリシーサーバが検疫サーバと通信することを可能にするためのアプリケーションプログラミングインターフェイスが提供され、このアプリケーションプログラミングインターフェイスは、ポリシークライアントを検疫クライアントにバインドするためのバインドコール、および、ヘルスのステートメントが有効であるとシグナル通知するための応答コールを備える。
【００２２】
本発明のさらなる実施形態では、検疫サーバがポリシーサーバと通信することを可能にするためのアプリケーションプログラミングインターフェイスが提供され、このアプリケーションプログラミングインターフェイスは、ヘルスのステートメントをポリシーサーバによって妥当性検査するための妥当性検査コールを備える。
【００２３】
本発明のなおさらなる実施形態では、ネットワーク検疫管理のための方法は、リモートに位置する動的ホスト制御プロトコル（ＤＨＣＰ）サーバから、ネットワークリソースを要求するクライアントから獲得されたヘルスのステートメントを受信することを含み、ヘルスのステートメントはクライアントのシステム状態を反映し、さらに、ヘルスのステートメントを妥当性検査すること、ヘルスのステートメントが有効である場合、ＤＨＣＰサーバに、要求を許可するように命令すること、および、ヘルスのステートメントが無効である場合、ＤＨＣＰサーバに、要求を許可しないように、および、クライアントを検疫させるように命令することを含む。
【００２４】
本発明の追加の特徴および利点は、添付の図面を参照して進行する、以下の例示的実施形態の詳細な説明から明らかにされる。
【００２５】
本明細書に組み込まれ、本明細書の一部を形成する添付の図面は、本発明のいくつかの態様を例示し、本明細書と共に、本発明の原理を説明する役目を果たす。図面においては以下の通りである。
【００２６】
本発明を、ある好ましい実施形態に関連して説明するが、本発明をこれらの実施形態に限定する意図はない。それどころか、この意図は、付属の特許請求の範囲によって定義されるような本発明の要旨および範囲内に含まれるすべての代替物、修正および均等物を包含することである。
【発明を実施するための最良の形態】
【００２７】
図面では、類似の参照番号は類似の要素を指し、本発明は、適切なコンピューティング環境において実施されるものとして例示される。以下の説明は本発明の実施形態に基づき、本明細書で明示的に説明されない代替実施形態に関して、本発明を限定するものとして解釈されるべきではない。
【００２８】
以下の説明では、本発明を、特に断りのない限り、１つまたは複数のコンピューティングデバイスによって実行されるオペレーションの動作および記号表現を参照して説明する。したがって、このような動作およびオペレーションは時として、コンピュータにより実行されるものとして呼ばれ、これらの動作およびオペレーションには、コンピューティングデバイスの処理装置による、構造化形式でデータを表現する電気信号の操作が含まれる。この操作はデータを変換し、あるいはデータをコンピューティングデバイスのメモリシステム内のロケーションで維持し、この操作は、当業者によってよく理解される方法でデバイスのオペレーションを再構成、またはそうでない場合は変更する。データが維持されるデータ構造は、データのフォーマットによって定義された特定のプロパティを有するメモリの物理ロケーションである。しかし、本発明は前述との関連で説明されているが、限定するように意味されず、以下に説明する様々な動作およびオペレーションをハードウェアにおいて実施することもできることは、当業者には理解されよう。
【００２９】
本発明を使用することができるネットワーク環境の一実施例をこのとき、図１Ａを参照して説明する。例示的ネットワークには、雲によって表現されるネットワーク１１１を介して、互いに通信するいくつかのコンピュータ１１０が含まれる。ネットワーク１１１には、ルーター、ゲートウェイ、ハブなど、多数の周知のコンポーネントが含まれる場合があり、コンピュータ１１０が有線および／または無線メディアを介して通信することを可能にする。ネットワーク１１１を介して互いに対話するとき、１つまたは複数のコンピュータは他のコンピュータに対して、クライアント、ネットワークサーバ、検疫サーバ、またはピアとしての機能を果たすことができる。したがって、本発明の様々な実施形態を、クライアント、ネットワークサーバ、検疫サーバもしくはピア、またはそれらの組み合わせにおいて実施することができるが、本明細書に含まれる特定の実施例は、これらのタイプのコンピュータのすべてに言及するとは限らない。
【００３０】
図１Ｂは、本発明を実施することができる適切なコンピューティングシステム環境１００の一実施例を例示する。コンピューティングシステム環境１００は、適切なコンピューティング環境の一例でしかなく、本発明の使用または機能性の範囲についてのいかなる限定をも示唆するように意図されない。コンピューティング環境１００は、例示的コンピューティング環境１００に例示されたコンポーネントのいずれか１つまたは組み合わせに関係するいかなる依存性も要件も有するものとして解釈されるべきではない。
【００３１】
本発明は、多数の他の汎用または専用のコンピューティングシステム環境または構成と共に動作する。本発明と共に使用するために適切である可能性のある周知のコンピューティングシステム、環境および構成の例には、それだけに限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブルなコンシューマエレクトロニクス、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれる。
【００３２】
本発明を一般に、プログラムモジュールなど、コンピュータによって実行されるコンピュータ実行可能命令に関連して説明することができる。一般に、プログラムモジュールには、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造などが含まれ、これらは特定のタスクを実行するか、あるいは特定の抽象データ型を実装する。本発明をまた分散コンピューティング環境において実施することもでき、この環境ではタスクが、通信ネットワークを通じてリンクされるリモート処理デバイスによって実行される。分散コンピューティング環境では、プログラムモジュールは、メモリストレージデバイスを含む、ローカルおよびリモートのコンピュータストレージメディア上に位置することができる。
【００３３】
図１Ｂを参照すると、本発明を実施するための例示的システムには、コンピュータ１１０の形態における汎用コンピューティングデバイスが含まれ、コンピュータ１１０は、本発明との関連において、クライアント、ネットワークサーバ、検疫サーバまたはピアとしての機能を果たすことができる。コンピュータ１１０のコンポーネントには、それだけに限定されないが、処理装置１２０、システムメモリ１３０、および、システムメモリ１３０を含む様々なシステムコンポーネントを処理装置１２０に結合するシステムバス１２１が含まれる可能性がある。システムバス１２１はいくつかのタイプのバス構造のいずれかにすることができ、これらのバス構造には、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスが含まれる。例として、限定ではなく、このようなアーキテクチャには、業界標準アーキテクチャバス、マイクロチャネルアーキテクチャバス、拡張ＩＳＡバス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｅローカルバス、および、メザニンバスとしても知られるＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔバスが含まれる。
【００３４】
コンピュータ１１０には通常、様々なコンピュータ可読メディアが含まれる。コンピュータ可読メディアは、コンピュータ１１０によってアクセスすることができるいかなる使用可能なメディアであってもよく、揮発性および不揮発性メディア、リムーバブルおよび非リムーバブルメディアが含まれる。例として、限定ではなく、コンピュータ可読メディアには、コンピュータストレージメディアおよび通信メディアが含まれる場合がある。コンピュータストレージメディアには、揮発性および不揮発性、リムーバブルおよび非リムーバブルのメディアが含まれ、これらのメディアはコンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなど、情報の格納のためのいずれかの方法または技術において実施される。コンピュータストレージメディアには、それだけに限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスクもしくは他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または、所望の情報を格納するために使用することができ、コンピュータ１１０によってアクセスすることができる他のいかなるメディアもが含まれる。通信メディアは通常、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを、搬送波または他の移送メカニズムなどの変調データ信号において実施し、いかなる情報配信メディアをも含む。「変調データ信号」という用語は、信号における情報をエンコードするような方法でその特性の１つまたは複数が設定または変更されている信号を意味する。例として、限定ではなく、通信メディアには、有線ネットワークまたは直接有線接続などの有線メディア、ならびに、音響、ＲＦ、赤外線および他の無線メディアなどの無線メディアが含まれる。上記のいずれの組み合わせもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【００３５】
システムメモリ１３０には、読み取り専用メモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性および不揮発性メモリの形態におけるコンピュータストレージメディアが含まれる。基本入出力システム１３３（ＢＩＯＳ）は、起動中など、コンピュータ１１０内の複数の要素の間で情報を転送する助けとなる基本ルーチンを含み、通常はＲＯＭ１３１に格納される。ＲＡＭ１３２は通常、処理装置１２０によって即時アクセス可能または現在操作中であるデータおよびプログラムモジュールを含む。例として、限定ではなく、図１Ｂは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６およびプログラムデータ１３７を例示する。
【００３６】
コンピュータ１１０にはまた、他のリムーバブル／非リムーバブル、揮発性／不揮発性のコンピュータストレージメディアもが含まれる場合がある。例としてのみ、図１Ｂは、非リムーバブル、不揮発性の磁気メディアに対する読み書きを行うハードディスクドライブ１４１、リムーバブル、不揮発性の磁気ディスク１５２に対する読み書きを行う磁気ディスクドライブ１５１、および、ＣＤ  ＲＯＭまたは他の光メディアなど、リムーバブル、不揮発性の光ディスク１５６に対する読み書きを行う光ディスクドライブ１５５を例示する。例示的コンピューティング環境１００で使用することができる他のリムーバブル／非リムーバブル、揮発性／不揮発性のコンピュータストレージメディアには、それだけに限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれる。ハードディスクドライブ１４１は通常、システムバス１２１に、インターフェイス１４０などの非リムーバブルメモリインターフェイスを通じて接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は通常、システムバス１２１に、インターフェイス１５０などのリムーバブルメモリインターフェイスによって接続される。
【００３７】
上述し、図１Ｂに例示したドライブおよびそれらの関連付けられたコンピュータストレージメディアは、コンピュータ１１０用のコンピュータ可読命令、データ構造、プログラムモジュールおよび他のデータのストレージを提供する。図１Ｂでは、例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６およびプログラムデータ１４７を格納するものとして例示される。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６およびプログラムデータ１３７と同じものであっても異なるものであってもよいことに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６およびプログラムデータ１４７には異なる番号が与えられて、最低でも、それらが異なるコピーであることが例示される。
【００３８】
ユーザはコマンドおよび情報をコンピュータ１１０へ、キーボード１６２、および、一般にマウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイス１６１など、入力デバイスを通じて入力することができる。他の入力デバイス（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどが含まれる可能性がある。これらおよび他の入力デバイスはしばしば処理装置１２０へ、システムバス１２１に結合されるユーザ入力インターフェイス１６０を通じて接続されるが、パラレルポート、ゲームポートまたはユニバーサルシリアルバスなど、他のインターフェイスおよびバス構造によって接続される場合がある。モニタ１９１または他のタイプの表示デバイスもまたシステムバス１２１へ、ビデオインターフェイス１９０などのインターフェイスを介して接続される。モニタ１９１に加えて、コンピュータ１１０には、スピーカ１９７およびプリンタ１９６など、出力周辺インターフェイス１９５を通じて接続することができる他の周辺出力デバイスが含まれる場合もある。
【００３９】
コンピュータ１１０はネットワーク環境において、リモートコンピュータ１８０など、１つまたは複数のリモートコンピュータへの論理接続を使用して動作することができる。リモートコンピュータ１８０は、別のパーソナルコンピュータ、サーバ、ルーター、ネットワークＰＣ、ピアデバイスまたは他の共通ネットワークノードにすることができ、通常は、パーソナルコンピュータ１１０に関連して上述した要素の多数またはすべてを含むが、メモリストレージデバイス１８１のみを図１Ｂに例示した。図１Ｂに示す論理接続には、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３が含まれるが、他のネットワークも含まれる場合がある。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネットおよびインターネットにおいて一般的である。
【００４０】
ＬＡＮネットワーキング環境において使用されるとき、パーソナルコンピュータ１１０はＬＡＮ１７１へ、ネットワークインターフェイスまたはアダプタ１７０を通じて接続される。ＷＡＮネットワーキング環境において使用されるとき、コンピュータ１１０には通常、モデム１７２、またはインターネットなどのＷＡＮ１７３を介して通信を確立するための他の手段が含まれる。モデム１７２は内部であっても外部であってもよく、システムバス１２１へ、ユーザ入力インターフェイス１６０または他の適切なメカニズムを介して接続することができる。ネットワーク環境では、コンピュータ１１０に関連して示したプログラムモジュールまたはその一部を、リモートメモリストレージデバイス１８１に格納することができる。例として、限定ではなく、図１Ｂはリモートアプリケーションプログラム１８５を、メモリデバイス１８１上に存在するものとして例示する。図示のネットワーク接続は例示的であり、複数のコンピュータの間で通信リンクを確立する他の手段を使用することができることは理解されよう。
【００４１】
以下の説明では、特に明記しない限り、本発明を、１つまたは複数のコンピュータによって実行される、動作、およびオペレーションの記号表現を参照して説明する。したがって、このような動作およびオペレーションは時として、コンピュータにより実行されるものとして呼ばれ、このような動作およびオペレーションには、コンピュータの処理装置による、データを構造化形式で表現する電気信号の操作が含まれることは理解されよう。この操作はデータを変換するか、あるいはデータをコンピュータのメモリシステム内のロケーションで維持し、この操作は、当業者によってよく理解される方法でコンピュータのオペレーションを再構成、またはそうでない場合は変更する。データが維持されるデータ構造は、データのフォーマットによって定義された特定のプロパティを有するメモリの物理ロケーションである。しかし、本発明は前述との関連で説明されているが、限定するように意味されず、以下で説明するいくつかの動作およびオペレーションをハードウェアにおいて実施することもできることは、当業者には理解されよう。
【００４２】
図２を参照すると、本発明の一実施形態は、少なくとも３つのコンピュータ、すなわち、クライアント２１０、ポリシーサーバ２２０、および検疫実施サーバ（ＱＥＳ）２３０を備える。クライアント２１０からＱＥＳ２３０へのマシン対話には２つのバージョンがあり、対話がヘルスのステートメントのリスト（ＳｏＨ）およびＳｏＨ応答からなるバージョン、および、対話がヘルス証明書（ＢｏＨ）からなるバージョンがある。本発明のもう１つの実施形態はさらに、クライアント２１０に、クライアントをポリシーサーバ２２０からダウンロードされたポリシーに準拠させるために必要なソフトウェアおよびパッチアップデートを提供するための、修正サーバ２４０を含む。
【００４３】
ポリシーサーバ２２０は、例えば、オペレーティングシステム（ＯＳ）バージョン、アンチウィルスシグネチャバージョンなど、管理者がクライアントにチェックすることを望む検査ポリシーを含む。ポリシーサーバの例は、Ｗｉｎｄｏｗｓ（登録商標）Ｕｐｄａｔｅ  Ｓｅｒｖｅｒ（ＷＵＳ）およびアンチウィルスシグネチャアップデートサーバである。ポリシーサーバはまた、クライアントがクライアントを正しい構成に変更するために必要とする情報、例えば、パッチ、アンチウィルスアップデートなども変更する。ネットワークは複数のポリシーサーバを含む場合があり、すなわち、パッチのためのあるポリシーサーバ、および、アンチウィルスサービスのための別のポリシーサーバがある場合がある。クライアント検査および構成のポリシーのための管理者は、ポリシーをこのためにポリシーサーバ上で変更することができる。ポリシーサーバはクライアントに、検査ポリシー、および、ポリシー管理者がポリシーサーバに構成する修正変更をダウンロードする。ポリシーサーバは、クライアント２１０からのＳｏＨが有効であることを、ＱＥＳ２３０がチェックすることを可能にする。
【００４４】
ポリシー管理者はポリシーを、ポリシーサーバ２２０上のクライアントに適用されるように設定する。このポリシーはダウンロードされ、クライアント２１０に適用される。クライアント２１０がネットワークリソース要求、例えば、ＤＨＣＰ、８０２．１Ｘなどを行うとき、クライアント２１０はＳｏＨのリストをその要求と共に供給する。ＱＥＳ２３０はこれらのＳｏＨを妥当性検査し、ポリシーサーバ２２０にコンタクトして、期待されたクライアントポリシーを得て、ネットワークリソースのための応答およびＳｏＨ応答のリストを戻す。ネットワーク管理者は、検疫ポリシーをＱＥＳ２３０上で構成することができる。クライアント２１０上のユーザは、マシンが検疫の理由によりネットワークリソースを拒否される場合、通知を受け、クライアントが問題を修正するために何を行っているかについてのより詳細な情報を要求することができる。ユーザはまた、サポート情報を要求することもできる。
【００４５】
クライアント２１０は１つまたは複数のポリシーサーバと通信することができ、すなわち、クライアントはポリシーおよび構成を複数の異なるポリシーサーバ、例えば、パッチ用のＷＵＳサーバおよびアンチウィルスシグネチャサーバから得ている場合がある。クライアント２１０はまた、１つまたは複数のＱＥＳ２３０とも通信して、ネットワークリソースを要求する。クライアントは、クライアントが検疫される場合、吹きだし（ｂａｌｌｏｏｎ）およびアイコンをシストレイ（ｓｙｓｔｒａｙ）内でユーザに表示する。ユーザは検疫状況についての詳細を要求することができる。これには、どのポリシーが最新であるかが含まれる。ユーザは、検疫についてのサポート情報を見ることを要求することができる。クライアント２１０はネットワークリソースを要求し、ネットワークリソースには、ＤＨＣＰ  Ｄｉｓｃｏｖｅｒ、Ｒｅｑｕｅｓｔ、８０２．１Ｘ認証、ＶＰＮ認証およびＩＰｓｅｃ  ＩＫＥ交換が含まれる。クライアント２１０はそのＳｏＨのリストを供給し、ＱＥＳ２３０はＳｏＨのリストを妥当性検査して、ネットワークリソースへのどの程度の量のアクセスが与えられるかを判断する。ＱＥＳはネットワークリソースの要求に、ネットワークリソースへの完全アクセスまたはネットワークリソースへの制限されたアクセスにより応答する。
【００４６】
ＱＥＳ２３０はネットワーク要求をクライアントから受信し、この要求は例えば、ＤＨＣＰ要求、８０２．１Ｘ認証要求、ＩＰｓｅｃ  ＳＡ要求などである。このネットワーク要求の一部として、クライアント２１０は１つまたは複数のＳｏＨを送信する。ポリシーの各タイプにつき１つのＳｏＨがあり、例えば、パッチのためのヘルスの状態を記述するあるＳｏＨがあり、アンチウィルスのためのヘルスの状態を記述する別のＳｏＨなどがある。ＱＥＳ２３０は必要であれば、その特定のタイプのポリシーのためのポリシーサーバと通信することによって、各ＳｏＨを妥当性検査する。クライアント２１０は、２つの場合に複数のＱＥＳ２３０と通信し、これらの場合はすなわち、複数のタイプのＱＥＳ２３０（例えば、８０２．１Ｘ  ＲＡＤＩＵＳサーバおよびＤＨＣＰサーバ）が配置されるとき、および、クライアント２１０とＱＥＳ２３０の間のプロトコルが１つのタイプの複数のＱＥＳをサポートする（例えば、ＤＨＣＰはブロードキャストに１つのＤＨＣＰ  Ｄｉｓｃｏｖｅｒを送信し、このＤＨＣＰ  Ｄｉｓｃｏｖｅｒに複数のＤＨＣＰ  ＱＥＳが応答する場合がある）ときである。ネットワーク管理者は、クライアントマシンからのＳｏＨを妥当性検査するために使用するポリシーサーバのためのＱＥＳ２３０、ならびに、妥当性検査が成功または失敗するときのアクセスの量を構成することができる。
【００４７】
修正サーバ２４０は、マシンの状態を修正するため、すなわち、マシンの状態を変更して、マシンがもはや検疫されないようにするための情報を提供するために使用することができる、いかなるサーバであってもよい。この情報は、ソフトウェアまたは構成情報である場合がある。検疫済みのマシンは未検疫マシンと通信することができないので、修正サーバは、検疫済みのネットワークから使用可能である。修正サーバは通常、検疫されていないマシンと通信するためにも使用可能となる。例として、限定ではなく、修正サーバの例は、（１）ｗｗｗ．ｗｉｎｄｏｗｓｕｐｄａｔｅ．ｃｏｍであり、そこでＭｉｃｒｏｓｏｆｔ社はＷｉｎｄｏｗｓ（登録商標）  ＯＳセキュリティアップデートを配布し、クライアントアップデートサービスおよびＷＵＳクライアントは、このロケーションからセキュリティアップデートをダウンロードすることができる。Ｗｉｎｄｏｗｓ（登録商標）アップデートが修正サーバとして使用される場合、インターネットは、検疫済みのマシンにとって直接またはブラウザプロキシを介してアクセス可能である必要がある。（２）ＳＭＳサーバであり、そこからＳＭＳクライアントは構成情報、スクリプトおよびソフトウェアをダウンロードする。（３）ドメインコントローラであり、構成をクライアントマシンに配置するための様々な方法を有する。これらの方法の１つが使用される場合、ドメインコントローラは修正サーバであり、検疫済みのマシンによってアクセス可能である必要がある。
【００４８】
図３は、クライアント２１０、ポリシーサーバ２２０、ＱＥＳ２３０および修正サーバ２４０の間の対話を例示する。ステップ３１０で、クライアントはＱＥＳに、クライアントのセキュリティおよびソフトウェア状態を示すＳｏＨのリストを送信する。ステップ３２０で、クライアントが、ＢｏＨを含むＳｏＨ応答を受信する場合、クライアントが終了され、このとき検疫を終了することができる。しかし、ＳｏＨ応答がＢｏＨを含まない場合、ステップ３３０で、クライアントはポリシーアップデートをポリシーサーバからダウンロードする。これらのポリシーに基づいて、次いでステップ３４０で、クライアントは必要なアップデートを修正サーバからダウンロードする。次いでステップ３５０で、クライアントはシステムヘルスチェックを実行して、新しいＳｏＨリストを生成する。次いで、プロセスはステップ３１０に戻り、ＢｏＨ獲得を再度試みる。
【００４９】
図４に着目すると、クライアントマシンは、３つのソフトウェアコンポーネントである、検疫ポリシークライアント（ＱＰＣ）４１０、検疫調整クライアント（ＱＣＣ）４２０および検疫実施側クライアント（ＱＥＣ）４３０からなる。クライアントマシンは１つまたは複数のＱＰＣ、例えばＱＰＣ４１０ａ、ＱＰＣ４１０ｂおよびＱＰＣ４１０ｃを含むことができる。各ＱＰＣは１つまたは複数のポリシーサーバ４４０と通信し、ポリシーサーバ４４０はネットワークのためのポリシーおよび構成を提供する。ＱＰＣは、１つまたは複数のポリシーサーバ４４０を提供する同じエンティティによって供給され、これはＱＰＣが、ポリシーサーバ４４０が提供するポリシーおよび構成のタイプを理解しなければならないからである。各ＱＰＣはＳｏＨをＱＣＣ４２０に供給する。ＱＰＣはまたＱＣＣ４２０に、それらのＳｏＨが変化するときに通知し、例えば、ＱＰＣがそのポリシーサーバ４４０と通信中であるので、ポリシーサーバ４４０は、必要とされた構成および検査要件を変更することができる。ＱＰＣ４１０はこの新しいポリシーを実行し、異なるＳｏＨを作成するようになる。ＳｏＨを様々なＱＰＣから収集する単一のＱＣＣがある。ＱＣＣ４２０は、ＱＰＣが使用可能でない（例えば、マシンブート）場合に、これらのＳｏＨをキャッシュする。ＱＣＣ４２０は、ＳｏＨのリストを１つまたは複数のＱＥＣ４３０へ、ＱＥＣからの要求に応じて提供する。
【００５０】
クライアントマシンは、１つまたは複数のＱＥＣ、例えば、ＤＨＣＰのためのＱＥＣ４３０、ＩＰｓｅｃのためのＱＥＣ４３０ｂ、および８０２．１ＸのためのＱＥＣ４３０ｃを含むことができる。各ＱＥＣはＱＥＳ４５０と通信する。ＱＥＣ４３０は通常、既存のコンポーネントであり、ネットワークリソースの要求を行うプロトコルを使用して通信する。検疫は、クライアントのヘルスの状態についての情報を、ＱＥＣ４３０を介してＱＥＳプロトコルへ搬送することによって、得られたリソースを制限することによって実施され、ＱＥＳプロトコルの例は、ＤＨＣＰ、ＩＥＥＥ  ８０２．１ＸおよびＶＰＮのためのＰＥＡＰ、およびＩＰｓｅｃである。ＤＨＣＰでは、ＤＨＣＰプロトコルはＳｏＨのリストを搬送する。ＱＥＣ４３０は、ネットワーク要求を行う必要があるとき、ＳｏＨのリストをＱＣＣ４２０から得る。
【００５１】
図５を参照すると、クライアント５６０は検疫サーバ（ＱＳ）５１０と、ＳｏＨのリストをプロトコル特定の検疫実施サーバ（ＱＥＳ）５４０に送信することによって、通信することができ、ＱＥＳ５４０はこのリストをＱＣＳ５３０に渡す。ＱＳ５１０は１つまたは複数のポリシーサーバ５５０と通信して、検疫ポリシーサーバ（ＱＰＳ）５２０のためのポリシーアップデートを得ることができる。ＱＣＳ５３０は次いで、ＢｏＨのリストを１つまたは複数のＱＰＳ５２０に送信してＱｏＨを妥当性検査することによって、ＢｏＨが発行されるべきであるかどうかを判断することができる。ＱＰＳ５２０はＳｏＨ応答をＱＣＳ５３０に送信し、ＱＣＳ５３０はこのＳｏＨ応答を適切なＱＥＳ５４０に与え、ＱＥＳ５４０は次いでこのＳｏＨ応答をクライアント５６０に送信する。ＢｏＨが発行されるべきである場合、ＱＣＳ５３０はＢｏＨをＳｏＨ応答と共に含める。
【００５２】
図６は、本発明の一実施形態のコンポーネントの例示的対話を例示する。ステップ６０１で、ＱＰＣは、アップデートされたポリシーをクライアントにダウンロードする。ダウンロードされたポリシーは、ＱＰＣのタイプ、例えば、パッチクライアントまたはアンチウィルスクライアントに特定である。ステップ６０２で、ＱＰＣはＱＣＣへ、そのＱＰＣのポリシーに関するポリシー変更を通知する。ステップ６０３で、ＱＣＣは１つまたは複数のＱＥＣへ、ポリシーにおける変更を通知する。次いでステップ６０４で、ＱＥＣはＳｏＨのリストをＱＣＣから要求する。ステップ６０５で、ＱＣＣはすべてのＳｏＨを１つまたは複数のＱＰＣから要求する。ステップ６０６で、各ＱＰＣはそのＳｏＨを送信する。次いでステップ６０７で、ＱＣＣはＳｏＨのリストをＱＥＣに転送する。ステップ６０８で、ＱＥＣはＳｏＨのリストをＱＳのＱＥＳに通信し、ＢｏＨを要求する。ステップ６０９で、ＱＥＳはＳｏＨの妥当性検査を要求する。ＱＣＳはＳｏＨを受信し、各ＳｏＨを適切なＱＰＳへ妥当性検査のために転送する。ＱＰＳが現在のポリシーを有していない場合、ステップ６１１で、ＱＰＳは現在のポリシーをポリシーサーバからダウンロードする。次いで、ＱＰＳはＳｏＨを妥当性検査し、ステップ６１２で結果をＳｏＨ応答としてＱＣＳに転送する。ＱＣＳはＳｏＨ応答を収集し、ステップ６１３でＳｏＨ応答をＱＥＳに転送して、ステップ６１４でＱＥＳがＳｏＨ応答を適切なＱＥＣに、それらの共有プロトコルに従って転送することができるようにする。ＳｏＨが有効とされた場合、ＱＣＳはさらにＢｏＨをＳｏＨ応答と共に含める。
【００５３】
さらに、図７を参照すると、全体のアーキテクチャは、クライアントとしての機能を果たすコンポーネント、およびサーバとしての機能を果たすコンポーネントからなる（クライアントおよびサーバコンポーネントは同じマシン上に存在することができ、例えば、ＩＰｓｅｃは、ピアに要求を行うときにクライアントになることができ、ピアから要求を受け入れるときにサーバになることができる）。ＱＰＣはマシンの状態を得て、変更することができ、すなわち、ＱＰＣは、マシンを「健全」または「不健全」にすると管理者が判断したマシンの状態を得る。ＱＰＣはＱＣＣにＳｏＨを提供する。ＱＣＣは、ＱＥＣがクライアントのＳｏＨを必要とするときについて情報を格納する。ＱＥＣがネットワーク要求を行う必要があるときは常に、ＱＥＣはＳｏＨをＱＣＣから得て、ＱＥＣのＱＥＳに送信する。ＱＥＳはＳｏＨをＱＣＳに渡す。ＱＣＳはＳｏＨを正しいＱＰＳに渡す。ポリシーサーバ／ＱＰＳはマシンの状態をチェックし、ＱＣＳに、クライアントマシンが「健全」であるか「不健全」であるかを通知する。ＱＥＣおよびＱＥＳは、例えば、ＶＰＮ、ＤＨＣＰおよびＩＰｓｅｃなど、ネットワークリソースへのアクセスを許可または却下することができる、様々な技術である。ＱＥＳコンポーネントは、ＱＣＳが、クライアントマシンが「健全」であると判断するか、「不健全」であると判断するか、および、実施側が役割を果たすべきであるかどうかについてのポリシー判断に応じて、ネットワークリソースを与えるか、あるいは拒否し、すなわち、ＱＣＳは、ＱＰＳからの結果をログするが、ＱＰＳからの結果にかかわらず成功を戻すように選択することができる。
【００５４】
あらゆるＱＰＳがマッチするＱＰＣを有することは必要とされない。ＱＣＳは、「バインド」コールをＱＣＳに行ったあらゆるＱＰＳをコールする。ＳｏＨがＱＰＳのために使用可能でない場合、空のＳｏＨが渡され、空のＳｏＨ応答が戻される。ＱＥＳが、ネットワークリソースを供給または拒否するネットワーク技術であることに加えて、ＱＥＳはまた、スタンドアロンの検疫サーバになることもできる。この役割では、検疫サーバＱＥＳはＱＰＣの「ヘルスの状態」を受け入れ、様々なＳｏＨを妥当性検査し、ＱＣＣへ、他のＱＥＣ／ＱＥＳによって使用することができるＢｏＨを戻すことができ、ＱＥＳは必ずしもそれ自体のＱＰＳを使用してクライアントのマシンの状態を妥当性検査する必要はない。
【００５５】
ＱＰＣとポリシーサーバの間で使用されるプロトコルは、ＱＰＣおよびポリシーサーバによって決まる（例えば、ＷＵＳはそれ自体のプロトコルを定義する）。ＱＣＣとＱＣＳの間で使用されたプロトコルは、ＳｏＨおよびＳｏＨ応答バッファを搬送する。プロトコルは実施側プロトコルを介して搬送される。ＱＥＣとＱＥＳの間で使用されるプロトコルは、実施側技術によって決まる。ＤＨＣＰ  ＱＥＣ／ＱＥＳは、ＤＨＣＰプロトコルを使用する。ＳｏＨおよびＳｏＨ応答は、ＤＨＣＰベンダーオプションを介して搬送される。ＰＥＡＰ  ＱＥＣ／ＱＥＳはＰＥＡＰｖ２プロトコルを使用する。ＳｏＨおよびＳｏＨ応答は、ＰＥＡＰ  ＴＬＶを介して搬送される。ＳｏＨおよびＳｏＨ応答はまた、ＸＭＬとしてＳＯＡＰを介して搬送される場合もある。
【００５６】
図８に着目すると、本発明の一実施形態では、ＱＥＣ／ＱＥＳはＤＨＣＰを使用して通信する。ＤＨＣＰ検疫はマシンにデフォルトゲートウェイアドレスを与えないが、ＤＨＣＰ、ＤＮＳおよびパッチサーバ（例えば、ＷＵＳ）など、選択されたマシンへの静的ルートを与える。ＤＨＣＰ検疫はまた、供給されたＩＰアドレスのためのネットマスクを２５５．２５５．２５５．２５５に設定し、通常のローカルサブネットへのルートが存在しないようにする。したがって、アプリケーションが、許可されたもの以外のいずれかのＩＰアドレスに送信しようと試みるとき、宛先到達不能エラーがＴＣＰ／ＩＰスタックにおいて発生するようになる。これは管理されたマシンであるので、ＤＨＣＰサーバはＱＰＳをマシン内に含めることができる。
【００５７】
ＱＰＣおよびＱＰＳ／ポリシーサーバ８５０、例えば、ＳＭＳまたはＷＵＳは、クライアント８１０のためのポリシーをサーバ８６０からクライアント８１０に転送することができる。ＱＰＣ８２０はサーバに、事前定義された間隔でアップデートについてポーリングするようになる。ＱＰＣ８２０は、マシンの「ヘルスの状態」が変化するときは常に、ＱＣＣ８３０にそのＳｏＨをパブリッシュするようになる。ＱＣＣ８３０はＳｏＨを各ＱＰＣ８２０からＳｏＨのリストに収集するようになる。ＳｏＨが変化しているときは常に、ＱＣＣ８３０はすべてのＱＥＣに通知する。ＱＥＣ（ＤＨＣＰクライアント）８４０がＩＰアドレスまたはＩＰアドレスの更新を要求することを望むとき、ＳｏＨのリストをＱＰＣおよびＳｏＨキャッシュから、ＱＣＣ８３０を介して得て、ＱＥＳ（ＤＨＣＰサーバ）８９０へ、１つまたは複数のＤＨＣＰオプションを使用して渡す。ＱＥＳ（ＤＨＣＰサーバ）８９０はＳｏＨのリストをＱＣＳ８８０に与え、ＱＣＳ８８０は各ＳｏＨを正しいＱＰＳ８７０に渡す。各ＱＰＳ８７０はそのポリシーサーバ８５０にコンタクトして、クライアントのためのＳｏＨが正しく、そのクライアントについて現在のものであること、例えば、このクライアント上にインストールされるべきパッチがないことを、妥当性検査することができる。クライアントが現在の正しいものである場合、ＱＰＳ８７０は成功をＱＣＳ８８０に戻す。すべてのＱＰＳが成功をＱＣＳ８８０に戻す場合、ＱＣＳ８８０は成功をＱＥＳ（ＤＨＣＰサーバ）８９０に戻す。ＱＥＳ（ＤＨＣＰサーバ）８９０は次いで、正しいＤＨＣＰオプションをＱＥＣ（ＤＨＣＰクライアント）８４０に、ＢｏＨを含めて戻す。
【００５８】
図９に着目すると、本発明の一実施形態では、ＱＥＣ／ＱＥＳはＩＰｓｅｃプロトコルを使用して通信する。ＩＰｓｅｃ検疫実施はリジェクトによって機能し、検疫中のクライアントマシンからＩＰｓｅｃ  ＳＡをセットアップする。検疫中でないマシンは、検疫中のマシンからＩＰｓｅｃ  ＳＡを受け入れないようになる。検疫システムは、いくつかのマシンおよびデバイスを免除するための方法を必要とする。検疫クライアントは、いくつかのＯＳ上でのみサポートされ、他のＯＳを実行するマシンは常に検疫されるか、あるいは、ネットワーク管理者は、このマシンがポリシーチェックを実行しないがなお未検疫マシンに通信することを許可されるようになることを、受け入れなければならない。ＩＰｓｅｃクライアントはネットワークリソースを別のクライアントから直接要求するので、ピアＩＰｓｅｃクライアントはＱＰＳを直接使用することができない。ＱＣＣは検疫サーバＱＥＣを使用してＢｏＨを得なければならず、ＢｏＨは、ＩＰｓｅｃがＩＫＥを変更することなくＩＫＥにおいてピアに渡すことができるＸ．５０９証明書となる。
【００５９】
ＱＰＣおよびＱＰＳ／ポリシーサーバ（例えば、ＳＭＳまたはＷＵＳ）９６０は、クライアント９１０のためのポリシーをサーバ９７０からクライアント９１０に通信するようになる。ＱＰＣ９２０は、ポリシーサーバを一定の間隔でアップデートについてポーリングするようになる。ＱＰＣ９２０は、マシンの「ヘルスの状態」が変化するときは常に、ＱＣＣ９３０にそのＳｏＨをパブリッシュするようになる。ＱＣＣ９３０はＳｏＨを各ＱＰＣからＳｏＨのリストへ収集するようになる。ＳｏＨが変化しているときは常に、ＱＣＣ９３０はすべてのＱＥＣに通知する。ＱＳ  ＱＥＣ９４０はこの通知を受信すると、ＳｏＨを得て、ＱＳ  ＱＥＳ９７６に送信する。検疫サーバＱＥＳ９７６はＳｏＨのリストをＱＣＳ９７４に与え、ＱＣＳ９７４は各ＳｏＨを正しいＱＰＣ９７２に渡す。各ＱＰＳはそのポリシーサーバ９６０にコンタクトして、クライアントのためのＳｏＨが正しく、そのクライアントについて現在のものであること、例えば、このクライアント上にインストールされるべきパッチがないことを、妥当性検査することができる。クライアントが現在の正しいものである場合、ＱＰＳ９７２は成功をＱＣＳ９７４に戻す。すべてのＱＰＳが成功をＱＣＳ９７４に戻す場合、ＱＣＳ９７４は成功を検疫サーバＱＥＳ９７６に戻す。ＱＣＳ９７４が成功を戻した場合、検疫サーバＱＥＳ９７６はＢｏＨをＱＳ  ＱＥＣ９４０に戻す。次いで、ＱＳ  ＱＥＣ９４０はＢｏＨをＱＣＣ９３０に戻し、ＱＣＣ９３０はＢｏＨをキャッシュする。次いで、ＱＣＣ９３０は、ＢｏＨが変化しているという通知をすべての実施側に送信する。ＩＰｓｅｃが、ＩＫＥ  ＳＡをピアにセットアップするように要求されるとき、ＱＥＣ（ＩＰｓｅｃ）９５０はＢｏＨをＢｏＨキャッシュから得て、ピア９８０のＱＥＳ（ＩＰｓｅｃ）９８４に渡す。ＱＥＳ（ＩＰｓｅｃ）９８４はＢｏＨをＱＣＳ９８２に渡し、ＱＣＳ９８２はＢｏＨを妥当性検査して、（有効とされた場合）成功をＱＥＳ（ＩＰｓｅｃ）９８４に戻し、ＱＥＳ（ＩＰｓｅｃ）９８４は次いでリモートＩＫＥ通信を受け入れる。
【００６０】
本発明のもう１つの実施形態では、システムはＶＰＮ実施を使用する。ＶＰＮ実施は、クライアントが検疫中であるべきである場合、ＩＰフィルタをＶＰＮサーバ上に置いて、ＶＰＮサーバを通じて到達することができるサーバがＤＮＳ、ＤＨＣＰおよび修正サーバのみであるようにすることによって機能する。ＳｏＨおよびＳｏＨ応答の検疫交換は、いずれかの必要とされたユーザまたはマシン認証の後にＰＥＡＰｖ２においてチェーニングされる新しいＥＡＰメソッドなしに、ＥＡＰ交換として実行される。埋め込みＥＡＰ認証を含むＰＥＡＰセッションおよびＥＡＰ検疫セッションが完了するまで、全体のＥＡＰセッションは完了しない。ＰＥＡＰｖ２セッションの完了が成功する場合、全体のＥＡＰセッションの完了は成功する。すべての埋め込みＥＡＰメソッドの完了が成功する場合、ＰＥＡＰｖ２セッションの完了は成功する。埋め込みＥＡＰメソッドが実行される順序はＲＡＤＩＵＳサーバによって決定され、ＲＡＤＩＵＳサーバは、どのＥＡＰメソッドの実行が成功しなければならないか、およびどの順序であるかにより、構成される。クライアントＰＥＡＰは、どの埋め込みＥＡＰメソッドがＲＡＤＩＵＳサーバによる要求となることが可能にされるかにより、構成されるようになる。
【００６１】
本発明のさらにもう１つの実施形態では、システムはＩＥＥＥ  ８０２．１Ｘ実施を使用する。ハワイ州におけるＩＥＥＥ  ８０２．１Ｘ実施は、ＩＥＥＥ  ８０２．１Ｘにおいて搬送されるＥＡＰにおいて搬送されたＰＥＡＰｖ２プロトコルを使用する。ＩＥＥＥ  ８０２．１Ｘ実施は、クライアントが検疫中であるべきである場合、ＩＰフィルタをＮＡＳ（イーサネット（登録商標）スイッチまたは無線アクセスポイント）上に置いて、ＮＡＳを通じて到達することができるサーバがＤＮＳ、ＤＨＣＰおよび修正サーバのみであるようにすることによって機能する。
【００６２】
図１０を参照して、本発明のもう１つの実施形態を説明する。この実施形態では、ネットワークは、クライアントにネットワークリソースへのアクセスをプロビジョンするための複数のＤＨＣＰサーバを含む。各ＤＨＣＰサーバ１０３０は、以前に説明したＱＥＳを含む。ネットワーク１０２０はさらに、リモート認証ダイヤルインユーザサービス（ＲＡＤＩＵＳ）サーバ１０４０を含み、ＲＡＤＩＵＳサーバ１０４０は、以前に説明したＱＣＳおよびＱＰＳを含む。このように、この実施形態では、検疫調整およびポリシー管理が、ネットワーク１０２０全体のための単一のＲＡＤＩＵＳサーバ上で中心に位置する。クライアント１０１０がＤＨＣＰサーバ１０３０の１つからのネットワークリソースへのアクセスを要求するとき、ＤＨＣＰサーバのＱＥＳはＲＡＤＩＵＳサーバ１０４０のＱＣＳおよびＱＰＳに依拠して、ヘルスのステートメントを認証する。ＲＡＤＩＵＳサーバ１０４０が、クライアントによって提供されたヘルスのステートメントを有効とする場合、ＤＨＣＰサーバ１０３０はクライアントにネットワークへのアクセスを許可する。ヘルスのステートメントが有効とされない場合、ＲＡＤＩＵＳサーバ１０４０によって提供されたポリシーに従って、ＤＨＣＰサーバ１０３０はクライアントを検疫させる。
【００６３】
ネットワークインフラストラクチャサポートを提供するＤＮＳサーバは、検疫済みおよび未検疫マシンにとってアクセス可能である必要がある。ネットワーク管理者はインターネットプロキシサーバを、検疫済みのマシンにとってアクセス可能にして、これらのマシンがインターネットにアクセスできるようにするように選択することができる。
【００６４】
本発明のアーキテクチャは複数のＱＰＣをサポートし、これらのＱＰＣには以下が含まれる。（１）ＡＶが実行中であるかどうか、ＡＶのバージョン、ＡＶが使用中であるシグネチャバージョン、ＡＶがリアルタイムでチェック中であるかどうかなどについてのＳｏＨを与える、アンチウィルスＱＰＣ。（２）存在するかあるいは存在しないファイルまたはレジストリエントリをチェックするＱＰＣ。これは、ＩＣＦおよびＩＣＳ構成などのＯＳ構成、マルウェアがインストールされるかどうかなどのチェックを可能にする。（３）各プロセスがセットアップするＴＣＰ／ＩＰ接続の数をチェックするＱＰＣ。ＱＰＳは次いで、多数の接続を開くアプリケーションを有するクライアントを検疫することができる。このタイプのビヘイビアは、サーバまたはピアツーピアアプリケーションを除いて、正しくなる可能性が低い。また、ＱＰＣなしにＱＰＳをサポートすることも可能である。これは、ネットワークビヘイビアチェックが、クライアントが検疫されるべきであるかどうかに入力を提供することを可能とする。
【００６５】
上述のソフトウェアコンポーネントによってエクスポーズされたインターフェイスにアクセスするために使用されたプログラミングモデルを、このとき説明する。検疫実施システムは、ＱＰＣとＱＣＣの間のクライアント上のパブリックＡＰＩ、および、ＱＰＳとＱＣＳの間のサーバ側のパブリックＡＰＩを有する。各ＡＰＩはＣＯＭインターフェイスであり、リモートでコール可能ではない。両方のＡＰＩは、初期化にとって安全として、または、スクリプティングにとって安全としてマークされない。クライアントＡＰＩは同期であり、サーバＡＰＩは非同期である。ＱＥＣとＱＣＣの間、および、ＱＥＳとＱＣＳの間で使用される、追加のＣＯＭ  ＡＰＩがある。
【００６６】
検疫調整クライアント＜−検疫ポリシークライアント（ＩＱｕａｒＰｏｌｉｃｙＣｌｉｅｎｔＢｉｎｄｉｎｇ）  
このインターフェイスはＱＣＣによってエクスポーズされる。このインターフェイスはＱＰＣによって使用される。このインターフェイスは、ＬｏｃａｌＳｙｓｔｅｍおよびＮｅｔｗｏｒｋＳｅｒｖｉｃｅに対してＡＣＬされる。このインターフェイスは、ＱＰＣが検疫プラットフォームに通信するためのメインエントリポイントである。このインターフェイスはＱＰＣによって、グローバルインターフェイステーブルを介してアクセスされる。このインターフェイスは、ＱＣＣサービスへのプロセス間通信を担う。ＱＣＣサービスが実行中でない場合、ＣＯＭはサービスを開始するように構成されるようになる。ＱＣＣサービスがアップグレードのために使用不可にされる場合、ＱＣＣサービスが実行中になるまで、ＱＰＣはＱＣＣＱＰＣ−＞Ｂｉｎｄをポーリングする。
【００６７】
Ｉｎｉｔｉａｌｉｚｅ（ＱＰＣ＿ＩＤ，Ｐｒｏｄｕｃｔ  ＧＵＩＤ，ＱＰＣＱＣＣ  ＣＬＳＩＤ，ＱＰＣ＿ＲＥＡＤ  ＣＬＳＩＤ，ＱＰＣＱＣＣＩＦ）。このＡＰＩは、ＱＰＣがそのＱＰＰＱＣＣインターフェイスをＱＣＣに供給するために、ランタイムにコールされる。Ｐｒｏｄｕｃｔ  ＧＵＩＤは製品のすべてのバージョンについて同じでなければならない。可能である場合、製品の異なるバージョンもまた同じＱＰＣ＿ＩＤ／ＱＰＳ＿ＩＤを使用し、バージョニングをＳｏＨに追加するべきである。そうでない場合、新しいバージョンは、異なるＱＰＣ＿ＩＤ／ＱＰＳ＿ＩＤだが同じＰｒｏｄｕｃｔ  ＧＵＩＤを使用するべきである。ＱＰＣＱＣＣ  ＣＬＳＩＤは、ＣＯＭオブジェクトのためのＣＬＳＩＤであり、ＱＰＣＱＣＣインターフェイスを実装するインターフェイスをサポートしなければならない。ＱＰＣは、ＣｏＣｒｅａｔｅＩｎｓｔａｎｃｅ（ＱＰＣＱＣＣ  Ｃｌａｓｓ  ＧＵＩＤ，ＱＰＣＱＣＣ  ＩＦ  ＧＵＩＤ，＆オブジェクト）を使用して、ＱＰＣＱＣＣＩＦを作成しなければならない。ＱＰＣ＿ＲＥＡＤ  ＣＬＳＩＤは、ＱＰＣ＿ＲＥＡＤインターフェイスのＣＬＳＩＤである。このインターフェイスは、ＱＰＣからの情報のクエリをサポートする。
【００６８】
Ｕｎｉｎｉｔｉａｌｉｚｅ（ＱＰＣ＿ＩＤ）。このＡＰＩは、ＱＰＣが終了中であるとき、ランタイムでコールされる。ＱＰＣは、このコールを行う前にＱＣＣにおける未解決のコールを有していないことを確認するべきであり、このコールが行われた後にＱＣＣに対するそれ以上のコールを行うべきではない。ＱＰＣはこのコールが行われるまで、ＱＰＣＱＣＣおよびＱＰＣ＿ＲＥＡＤ  ＩＦを破棄するべきではない。ＱＰＣＱＣＣおよびＱＰＣ＿ＲＥＡＤへのすべてのコールが戻された後、ＱＣＣはこのコールを戻すようになる。ＱＰＣは、Ｕｎｂｉｎｄへのコールを行うとき、ＱＰＣＱＣＣおよびＱＰＣ＿ＲＥＡＤへのいかなるコールでも失敗するべきである。
【００６９】
ＮｏｔｉｆｙＳｏＨＣｈａｎｇｅ（ＱＰＣ＿ＩＤ）。このＡＰＩはＱＣＣに、ＱＰＣによって保持されたＳｏＨ状態が変化したことを通知する。
【００７０】
ＱｕｅｒｙＳｙｓｔｅｍＱｕａｒａｎｔｉｎｅＳｔａｔｅ（ＱＰＣ＿ＩＤ，＊Ｑ／ＮＱ／Ｐｒｏｂａｔｉｏｎ，＊ＰｒｏｂａｔｉｏｎＴｉｍｅ）。このＡＰＩは、ＱＰＣが現在のクライアント検疫状態をクエリすることを可能にする。
【００７１】
検疫調整クライアント＜−検疫実施クライアント（ＩＱｕａｒＥｎｆｏｒｃｅｍｅｎｔＣｌｉｅｎｔＢｉｎｄｉｎｇ）
ＱＣＣによって、ＱＥＣによる使用のためにエクスポーズされたインターフェイス。このインターフェイスは、ＬｏｃａｌＳｙｓｔｅｍおよびＮｅｔｗｏｒｋＳｅｒｖｉｃｅのみに対してＡＣＬされる。このインターフェイスは、ＱＣＣによってエクスポーズされ、ＱＥＣによって使用される。このインターフェイスはＱＥＣによって、グローバルインターフェイステーブルを介してアクセスされる。このインターフェイスは、ＱＥＣがＱＣＣに通信するために使用するメインエントリポイントである。
【００７２】
Ｉｎｉｔｉａｌｉｚｅ（ＱＥＣ＿ＩＤ，ＱＥＣＱＣＣ  ＣＬＳＩＤ，ＱＥＣ＿ＲＥＡＤ  ＣＬＳＩＤ，ＱＥＣＱＣＣＩＦ）。このＡＰＩは、ＱＥＣがそのＱＥＣＱＣＣインターフェイスをＱＣＣに供給するために、ランタイムにコールされる。ＱＥＣＱＣＣ  ＣＬＳＩＤは、タイプＱＥＣＱＣＣのインターフェイスをエクスポーズしなければならない。ＱＥＣＱＣＣＩＦは、ＱＥＣＱＣＣ＿Ｃｌａｓｓ＿ＧＵＩＤから得られたインターフェイスである。
【００７３】
Ｕｎｉｎｉｔｉａｌｉｚｅ（ＱＥＣ＿ＩＤ）。このＡＰＩは、ＱＥＣが終了中であるとき、ランタイムでコールされ、ＱＥＣＱＣＣインターフェイスはもはや使用されるべきではない。
【００７４】
ＱｕｅｒｙＳｏＨｓ（ＱＥＣ＿ＩＤ，ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦ）。このＡＰＩはＱＥＣによって、ＱＥＣがそのＱＥＳに供給するためにＳｏＨのリストを必要とするときにコールされる。ＳｏＨバッファフォーマットはＱＥＣによって理解されないようになり、ＱＥＳに透過的に渡されなければならない。ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦはＱＥＣによって割り振られ、ＱＣＣへ渡され、次いで必要な場合はＱＰＣに渡される。ＱＣＣおよびＱＰＣは、トランザクションについての情報を設定およびクエリすることができる。このＡＰＩが戻された後、ＱＣＣおよびＱＰＣはＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦにアクセスすることができない。ファンクションは、ＱＣＣにバインドされた各ＱＰＣについてＱｕｅｒｙＳｏＨをコールし、次いで、ＱＮａｍｅのためのキャッシュにおいて使用可能ないずれかの追加のＳｏＨを付加するようになる。戻る前に、このファンクションはＴｅｓｔＳｏＨＨａｓｈをＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦにおいてコールしなければならない。ファンクションがＳ＿ＯＫを戻す場合、ＱｕｅｒｙＳｏＨはＳ＿ＦＡＬＳＥを戻して、ＳｏＨが変化していないことを指示し、そうでない場合、このファンクションは、ＳｅｔＳｏＨＨａｓｈをＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦ上でコールすることによって、ＳｏＨ  Ｈａｓｈをアップデートする。ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅが検疫を可能にしているかどうかにかかわらずなど、ＱＥＣは常にＱｕｅｒｙＳｏＨをコールするべきである。ＱＥＣが行うための検疫作業がない場合、ＱＣＣはＮＯ＿ＱＵＡＲＡＮＴＩＮＥ＿ＩＮＦＯＲＭＡＴＩＯＮの状況と共に戻るようになる。
【００７５】
ＱｕｅｒｙＳｏＨＲｅｓｐｏｎｓｅＱｕａｒａｎｔｉｎｅＳｔａｔｅ（ＱＥＣ＿ＩＤ，ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦ，＊Ｑ／ＮＱ）。このＡＰＩはＱＥＣによって、ＱＣＳ  ＳｏＨＲｅｓｐｏｎｓｅから検疫／非検疫状態を得るためにコールされる。
【００７６】
ＮｏｔｉｆｙＣｏｎｎｅｃｔｉｏｎＳｔａｔｅＵｐ（ＱＥＣ＿ＩＤ，ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦ）。このＡＰＩは、ＳｏＨＲｅｓｐｏｎｓｅのリストがそのＱＥＳによって戻され、ＱＥＣがこの応答を使用する準備ができた状態であるとき、ＱＥＣによってコールされる。ＳｏＨＲｅｓｐｏｎｓｅのリストはＱＥＣによって設定されており、そのバッファフォーマットはＱＥＣによって理解されてはならず、ＱＣＣに透過的に渡されなければならない。ＱＥＳ／ＱＥＣがＳｏＨＲｅｓｐｏｎｓｅをトランスポートすることができなかった場合、ＳｏＨＲｅｓｐｏｎｓｅは空である場合がある。ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦはＱＥＣによって割り振られ、ＱＣＣに渡され、次いで必要な場合はＱＰＣに渡される。ＱＣＣおよびＱＰＣは、トランザクションについての情報を設定およびクエリすることができる。
【００７７】
ＮｏｔｉｆｙＣｏｎｎｅｃｔｉｏｎＳｔａｔｅＤｏｗｎ（ＱＥＣ＿ＩＤ，ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦ）。このＡＰＩは、接続がダウン状態に変更されており、ＱＣＣがシステム検疫状態をアップデートする必要がある可能性があることをＱＣＣに通知するために、ＱＥＣによってコールされる。
【００７８】
ＮｏｔｉｆｙＳｏＨＣｈａｎｇｅＦａｉｌｕｒｅ（ＱＥＣ＿ＩＤ）。このＡＰＩは、ＱＥＣがＮｏｔｉｆｙＳｏＨＣｈａｎｇｅにおいて動作することに失敗した場合、ＱＥＣによってコールされる。次いで、ＱＣＣはタイマを始動し、タイマが満了したとき、ＱＥＣＱＣＣ−＞ＮｏｔｉｆｙＳｏＨＣｈａｎｇｅをコールするべきである。
【００７９】
検疫ポリシークライアント＜−検疫調整クライアント（ＩＱｕａｌＰｏｌｉｃｙＣｌｉｅｎｔＣａｌｌｂａｃｋ）
ＱＰＣは、ＱＣＣによる使用のためにインターフェイスをエクスポーズする。このインターフェイスは、ＬｏｃａｌＳｙｓｔｅｍおよびＮｅｔｗｏｒｋＳｅｒｖｉｃｅにＡＣＬされ、リモートでアクセス可能ではない。このインターフェイスはＱＰＣによってエクスポーズされ、ＱＣＣによって使用される。これをコールするＱＣＣを含むいかなるコードも、ＱＰＣがコール側に成りすますことができないコンテキストを使用しなければならない。ＱＰＣがＢｉｎｄをＱＣＣ上でコールするとき、ＱＰＣは、ＱＣＣがＱＰＣＱＣＣインターフェイスインスタンスを作成するために使用するＣｌａｓｓ  ＧＵＩＤを渡す。
【００８０】
ＱｕｅｒｙＳｏＨｓ（ＱＰＣ＿ＩＤ，ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅＲｅａｄ  ＩＦ）。このＡＰＩはＱＣＣによって、ＳｏＨについてクエリするためにコールされる。ＱＰＣはＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ−＞ＳｅｔＳｏＨをコールして、それらのＳｏＨを設定しなければならない。ＱＰＣがネットワーク毎に異なるＳｏＨを扱う場合、ＱＰＣはＱＮａｍｅをＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦ上でクエリして、正しいＳｏＨを戻すべきである。
【００８１】
ＰｒｏｃｅｓｓＳｏＨＲｅｓｐｏｎｓｅ（ＱＰＣ＿ＩＤ，ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅＲｅａｄ  ＩＦ，＊ＱＰＳ＿Ｒｅｓｕｌｔ）。ＱＰＣは、ＱＣＣからのＳｏＨ応答インターフェイスを処理する。ＰｒｏｃｅｓｓＳｏＨＲｅｓｐｏｎｓｅがコールされているべきであるとき、ＱＰＣがＱＣＣにバインドされなかった場合、ＳｏＨＲｅｓｐｏｎｓｅは廃棄される。ＱＮａｍｅは、ＳｏＨ応答を戻したネットワークの検疫名である。ＱＥＳ／ＱＥＣがＳｏＨＲｅｓｐｏｎｓｅをトランスポートすることができなかった場合、ＳｏＨＲｅｓｐｏｎｓｅは空である場合がある。ＱＰＳ＿Ｒｅｓｕｌｔは、ＱＰＳから戻され、そのＳｏＨＲｅｓｐｏｎｓｅにおいてＱＰＣに戻されたＨＲＥＳＵＬＴである。ＱＰＳ＿Ｒｅｓｕｌｔは、ＱＣＣ／ＱＥＣロギング情報と共にログされるようになる。
【００８２】
ＮｏｔｉｆｙＳｙｓｔｅｍＱｕａｒａｎｔｉｎｅＳｔａｔｅＣｈａｎｇｅ（ＱＰＣ＿ＩＤ，Ｑ／ＮＱ）。ＱＰＣに、システム検疫状態が変化していることを通知する。
【００８３】
ＱｕｅｒｙＳｔａｔｕｓ（ＱＰＣ＿ＩＤ，＊Ｓｔａｔｅ，＊Ｐｅｒｃｅｎｔａｇｅ，＊ＭｅｓｓａｇｅＩＤ）。ＱＰＣの現在の状態、および、そのポリシー構成およびよってそのＳｏＨにおいて最新になる過程の進行を記述するＭｅｓｓａｇｅを供給する。Ｓｔａｔｅは、Ｉｎ  Ｐｒｏｇｒｅｓｓ、Ｃｏｍｐｌｅｔｅｄ  ｓｕｃｃｅｓｓｆｕｌｌｙ、Ｆａｉｌｅｄ  ｔｏ  ｃｏｍｐｌｅｔｅのうち１つである。Ｐｅｒｃｅｎｔａｇｅは０から１００％であり、−１の戻りは、ＱＰＣが％をサポートしないことを意味する。Ｍｅｓｓａｇｅは、ＱＰＣ＿ＲＥＡＤ  ＩＦと共に使用することができるＭｅｓｓａｇｅＩＤでなければならない。
【００８４】
検疫実施クライアント＜−検疫調整クライアント（ＩＱｕａｒＥｎｆｏｒｃｅｍｅｎｔＣｌｉｅｎｔＣａｌｌｂａｃｋ）
ＱＥＣは、ＱＣＣによって使用するためのインターフェイスをエクスポーズする。このインターフェイスはＱＥＣによってエクスポーズされ、ＱＣＣによって使用される。このインターフェイスは、ＬｏｃａｌＳｙｓｔｅｍおよびＮｅｔｗｏｒｋＳｅｒｖｉｃｅにＡＣＬされ、リモートでアクセス可能ではない。ＱＥＣがＢｉｎｄをＱＣＣ上でコールするとき、ＱＥＣは、ＱＣＣがＱＥＣＱＣＣインターフェイスインスタンスを作成するために使用するＣｌａｓｓ  ＧＵＩＤを渡す。
【００８５】
ＮｏｔｉｆｙＳｏＨＣｈａｎｇｅ（ＱＥＣ＿ＩＤ）。このＡＰＩはＱＥＣに、ＱＣＣによって保持されたＳｏＨ状態が変化していることを通知する。ＱＥＣはこのコールを無視するべきではないが、ＱＥＣがビジーである場合、このコールを無視することはできるが、推奨されない。ＱＣＣは、システムが検疫中である間に、このＡＰＩを周期的に使用するようになる。
【００８６】
ＱｕｅｒｙＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ（ＱＥＣ＿ＩＤ，＊Ｎｕｍｂｅｒ＿ＩＦｓ，＊ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ［］）。このＡＰＩはＱＥＣを、その検疫インターフェイスＩＤのリストについてクエリする。ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅのフォーマットは、ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦのアレイである。
【００８７】
ＲｅｓｅｔＱｕａｒａｎｔｉｎｅＳｔａｔｅ（ＱＥＣ＿ＩＤ）。このＡＰＩは、ＱＣＣが検疫を可能または不可にするとき、ＱＣＣによってコールされる。ＱＥＣはいかなる検疫構成をもリセットするべきである。
【００８８】
ＳｏＨＳｔａｔｅ  ＩＦ
このインターフェイスは、ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅおよびＴｒａｎｓａｃｔｉｏｎＳｔａｔｅインターフェイスによって使用される。ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅおよびＴｒａｎｓａｃｔｉｏｎＳｔａｔｅは、このインターフェイスのインスタンスを使用して、ＳｏＨのリストを含み、ＳｏＨＲｅｓｐｏｎｓｅのリストを含む。
【００８９】
ＱｕｅｒｙＳｏＨＳｔａｔｅＲｅａｄ：このＡＰＩはＱＣＣおよびＱＣＳによって、ＳｏＨＳｔａｔｅＲｅａｄインターフェイスを得るために使用される。ＳｅｔＬｉｓｔＯｆＳｏＨＲｅｓｐｏｎｓｅｓ（ＳｏＨＲｅｓｐｏｎｓｅ）：このＡＰＩはＱＥＣによって、ＳｏＨＲｅｓｐｏｎｓｅのリストを設定するために使用される。ＱｕｅｒｙＬｉｓｔＯｆＳｏＨＲｅｓｐｏｎｓｅｓ（＊ＳｏＨＲｅｓｐｏｎｓｅ）：このＡＰＩはＱＥＳによって、ＳｏＨＲｅｓｐｏｎｓｅのリストをクエリするために使用される。ＳｅｔＳｏＨＲｅｓｐｏｎｓｅ（ＱＰＳ＿ＩＤ，ＳｏＨＲｅｓｐｏｎｓｅ）：このＡＰＩはＱＣＳによって、ＳｏＨＲｅｓｐｏｎｓｅを設定するために使用される。ＳｅｔＬｉｓｔＯｆＳｏＨｓ（ＳｏＨｓ）：このＡＰＩはＱＥＳによって、ＳｏＨのリストを設定するために使用される。トランザクションＩＤは、ＱＣＣ  ＳｏＨからコピーされるべきである。ＳｏＨのリスト内にＱＣＣ  ＳｏＨがない場合、トランザクションＩＤが作成され、割り当てられるべきである。このＡＰＩは、ＳｏＨのリストのいかなる使用の前にも、ＳｏＨのリストのフォーマットを妥当性検査するべきである。ＱｕｅｒｙＬｉｓｔＯｆＳｏＨｓ（ＳｏＨｓ）：このＡＰＩはＱＥＳによって、それらのまたは別のＳｏＨについてクエリするために使用される。ＳｅｔＳｏＨ（ＱＰＳ＿ＩＤ，ＳｏＨ）：このＡＰＩはＱＣＣによって、ＳｏＨを設定するために使用される。ＳｅｔＱＣＳＱＰＳ＿ＩＤｓ：このＡＰＩは、ＱＣＳ  ＳｏＨＲｅｓｐｏｎｓｅ内で好ましいＱＰＳ＿ＩＤを設定するために使用される。ＱｕｅｒｙＱＣＳＱＰＳ＿ＩＤｓ：このＡＰＩは、ＱＣＳ  ＳｏＨＲｅｓｐｏｎｓｅから好ましいＱＰＳ＿ＩＤを読み取るために使用される。ＳｅｔＱＣＣＣｌｉｅｎｔＮａｍｅ：このＡＰＩは、クライアント名をＱＣＣ  ＳｏＨ内で設定するために使用される。ＱｕｅｒｙＱＣＣＣｌｉｅｎｔＮａｍｅ：このＡＰＩは、クライアント名をＱＣＣ  ＳｏＨから読み取るために使用される。ＳｅｔＱＣＳＣｌｉｅｎｔＳｔａｔｅ：このＡＰＩは、ＱＣＳが決定しているクライアント状態を設定するために使用される。ＱｕｅｒｙＱＣＳＣｌｉｅｎｔＳｔａｔｅ：このＡＰＩは、クライアント状態をＱＣＳ  ＳｏＨＲｅｓｐｏｎｓｅから読み取るために使用される。ＳｅｔＱＣＣＣｌｉｅｎｔＳｔａｔｅ：このＡＰＩは、現在のクライアント状態をＱＣＣ  ＳｏＨ内で設定するために使用される。ＱｕｅｒｙＱＣＣＣｌｉｅｎｔＳｔａｔｅ：このＡＰＩは、クライアント状態をＱＣＣ  ＳｏＨから読み取るために使用される。ＳｅｔＱＣＣＴｒａｎｓａｃｔｉｏｎＩＤ：このＡＰＩは、現在のクライアント状態をＱＣＣ  ＳｏＨ内で設定するために使用される。ＱｕｅｒｙＱＣＣＴｒａｎｓａｃｔｉｏｎＩＤ：このＡＰＩは、クライアント状態をＱＣＣ  ＳｏＨから読み取るために使用される。
【００９０】
ＳｅｔＱＣＳＴｒａｎｓａｃｔｉｏｎＩＤ：このＡＰＩは、現在のクライアント状態をＱＣＣ  ＳｏＨ内で設定するために使用される。ＱｕｅｒｙＱＣＳＴｒａｎｓａｃｔｉｏｎＩＤ：このＡＰＩは、クライアント状態をＱＣＣ  ＳｏＨから読み取るために使用される。ＳｅｔＱＣＣＯＳＶｅｒｓｉｏｎ：このＡＰＩは、現在のクライアント状態をＱＣＣ  ＳｏＨ内で設定するために使用される。ＱｕｅｒｙＱＣＣＯＳＶｅｒｓｉｏｎ：このＡＰＩは、クライアント状態をＱＣＣ  ＳｏＨから読み取るために使用される。ＳｅｔＱＣＣＯＳＳＰＶｅｒｓｉｏｎ：このＡＰＩは、現在のクライアント状態をＱＣＣ  ＳｏＨ内で設定するために使用される。ＱｕｅｒｙＱＣＣＯＳＳＰＶｅｒｓｉｏｎ：このＡＰＩは、クライアント状態をＱＣＣ  ＳｏＨから読み取るために使用される。ＳｅｔＱＣＣＰｒｏｃｅｓｓｏｒＡｒｃｈｉｔｅｃｔｕｒｅ：このＡＰＩは、現在のクライアント状態をＱＣＣ  ＳｏＨ内で設定するために使用される。ＱｕｅｒｙＱＣＣＰｒｏｃｅｓｓｏｒＡｒｃｈｉｔｅｃｔｕｒｅ：このＡＰＩは、クライアント状態をＱＣＣ  ＳｏＨから読み取るために使用される。ＳｅｔＱＣＳＱＰＳ＿Ｒｅｓｕｌｔｓ：このＡＰＩは、現在のクライアント状態をＱＣＣ  ＳｏＨ内で設定するために使用される。ＱｕｅｒｙＱＣＳＱＰＳ＿Ｒｅｓｕｌｔｓ：このＡＰＩは、クライアント状態をＱＣＣ  ＳｏＨから読み取るために使用される。ＳｅｔＱＣＳＱＮａｍｅ：このＡＰＩは、現在のクライアント状態をＱＣＣ  ＳｏＨ内で設定するために使用される。ＱｕｅｒｙＱＣＳＱＮａｍｅ：このＡＰＩは、クライアント状態をＱＣＣ  ＳｏＨから読み取るために使用される。ＳｅｔＱＣＳＱＣＳＮａｍｅ：このＡＰＩは、現在のクライアント状態をＱＣＣ  ＳｏＨ内で設定するために使用される。ＱｕｅｒｙＱＣＳＱＣＳＮａｍｅ：このＡＰＩは、クライアント状態をＱＣＣ  ＳｏＨから読み取るために使用される。ＳｅｔＱＣＳＰｒｏｂａｔｉｏｎＴｉｍｅ：このＡＰＩは、現在のクライアント状態をＱＣＣ  ＳｏＨ内で設定するために使用される。ＱｕｅｒｙＱＣＳＰｒｏｂａｔｉｏｎＴｉｍｅ：このＡＰＩは、クライアント状態をＱＣＣ  ＳｏＨから読み取るために使用される。ＳｅｔＱＣＳＵＲＬ：このＡＰＩは、現在のクライアント状態をＱＣＣ  ＳｏＨ内で設定するために使用される。ＱｕｅｒｙＱＣＳＵＲＬ：このＡＰＩは、クライアント状態をＱＣＣ  ＳｏＨから読み取るために使用される。
【００９１】
ＳｏＨＳｔａｔｅＲｅａｄ  ＩＦ
このインターフェイスは、ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅおよびＴｒａｎｓａｃｔｉｏｎＳｔａｔｅインターフェイスによって使用される。このインターフェイスは、ＳｏＨおよびＳｏＨＲｅｓｐｏｎｓｅについてクエリするために、ＱＰＣおよびＱＰＳに渡される。
【００９２】
ＱｕｅｒｙＳｏＨＲｅｓｐｏｎｓｅ（ＱＰＳ＿ＩＤ，ＳｏＨ）：このＡＰＩはＱＣＣおよびＱＰＣによって、それらまたは別のＳｏＨＲｅｓｐｏｎｓｅについてクエリするために使用される。ＱｕｅｒｙＳｏＨ（ＱＰＳ＿ＩＤ，ＳｏＨ）：このＡＰＩはＱＣＳおよびＱＰＳによって、それらまたは別のＳｏＨについてクエリするために使用される。
【００９３】
ＱＥＣ／ＱＣＣのための接続状態（ＩＱｕａｒＣｌｉｅｎｔＣｏｎｎｅｃｔｉｏｎ）
このインターフェイスはＱＥＣによって、検疫状態を有する一意のネットワーク「インターフェイス」毎に状態を管理するために使用される。このインターフェイスは、ＬｏｃａｌＳｙｓｔｅｍおよびＮｅｔｗｏｒｋＳｅｒｖｉｃｅにＡＣＬされ、リモートでアクセス可能ではない。このインターフェイスはＱＥＣおよびＱＣＣにエクスポーズされる。ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅＲｅａｄインターフェイスは、ＱＣＣ、ＱＥＣおよびＱＰＣにエクスポーズされる。ネットワーク「インターフェイス」は物理ＮＩＣにマップすることができ、あるいは、例えばＩＰｓｅｃなど、別のマシンへの論理接続にマップすることができる。
【００９４】
ＱｕｅｒｙＣｏｎｎｅｃｔｉｏｎＳｔａｔｅＲｅａｄ：このＡＰＩは、ＱＣＣがＣｏｎｎｅｃｔｉｏｎＳｔａｔｅＲｅａｄインターフェイスについてクエリすることを可能にする。ＱｕｅｒｙＳｏＨＳｔａｔｅ：このＡＰＩは、ＱＥＣおよびＱＣＣがＳｏＨＳｔａｔｅインターフェイスについてクエリすることを可能にする。ＳｅｔＭａｘＳｉｚｅ：ＱＥＣがその最大のサポートされたＳｏＨのリストのサイズを設定することを可能にする。ＳｅｔＱＮａｍｅ：ＱＣＣはＱＮａｍｅをＱＣＳから受信し、ＱＮａｍｅをＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦ上で設定する。ＳｅｔＱＣＳＮａｍｅ：このＡＰＩは、ＱＣＣがこのＣｏｎｎｅｃｔｉｏｎＳｔａｔｅにおいて使用された現在のＱＣＳを設定することを可能にする。ＳｅｔＰｒｅｆｅｒｒｅｄＱＰＳ＿ＩＤｓ：ＱＣＣによって、ＱＣＳのために好ましいＱＰＳ＿ＩＤを設定するために使用される。ＳｅｔＵＲＬ：ＱＣＣによって、ＱＣＳのためのＵＲＬを設定するために使用される。ＳｅｔＳｏＨＨａｓｈ：ＳｏＨのＨａｓｈは、ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦオブジェクト内に格納される。ＳｅｔＴｒａｎｓａｃｔｉｏｎＩＤ（ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅＩＤ，Ｌｅｎｇｔｈ）：このＡＰＩはＱＥＣによって、トランザクションＩＤを設定するために使用される。ＱＥＣはＣｏｎｎｅｃｔｉｏｎＳｔａｔｅのためのＩＤにおいて渡すべきであり、例えばＤＨＣＰでは、これはＮＩＣ  ＭＡＣアドレスであるべきである。ＳｅｔＴｒａｎｓａｃｔｉｏｎＩＤはこれを乱数によりハッシュし、８バイトハッシュを生成するべきである。ＳｅｔＱｕａｒａｎｔｉｎｅＳｔａｔｅ（Ｑｕａｒａｎｔｉｎｅ＿Ｅｎａｂｌｅ，Ｑｕａｒａｎｔｉｎｅ／Ｐｒｏｂａｔｉｏｎ／Ｎｏｎ−ｑｕａｒａｎｔｉｎｅ）：ＱＣＳから戻されたＱＣＳ−＞ＱＣＣ  ＳｏＨにおける結果によって決まる、Ｑｕａｒａｎｔｉｎｅ／Ｎｏｔ  Ｑｕａｒａｎｔｉｎｅ状態を設定する。ＳｅｔＰｒｏｂａｔｉｏｎＴｉｍｅ（ＰｒｏｂａｔｉｏｎＴｉｍｅ）：プロベーション時間をこのＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦにおいて設定する。これは、ＱＣＳ／ＱＣＣ  ＳｏＨがプロベーション時間およびプロベーションの検疫状態を含んだ場合にのみ、コールされるべきである。ＰｒｏｂａｔｉｏｎＴｉｍｅは秒単位である。このＡＰＩは、ＴｅｓｔＰｒｏｂａｔｉｏｎＴｉｍｅのためにプロベーション満了時間を保存する。０のＰｒｏｂａｔｉｏｎＴｉｍｅは、ＰｒｏｂａｔｉｏｎＴｉｍｅが設定されないことを意味する。ＳｅｔＱＥＣＩｎｆｏ（ＥｎｕｍＴｙｐｅ，ＱＥＣＩｎｆｏ）：ＥｎｕｍＴｙｐｅは、ＱＥＣからの、ＱＥＣについての情報を含む。ＱＥＣＩｎｆｏはＱＥＣ  ＥｎｕｍＴｙｐｅによって決まるが、以下のＤＨＣＰ  ＱＥＣ（クライアントＩＰアドレス，クライアントＭＡＣアドレス）、ＰＥＡＰ  ＱＥＣ、およびＩＰｓｅｃ  ＱＥＣを含む。Ｓｅｒｉａｌｉｚｅ（出力バッファ，＊サイズ）：このＡＰＩは、ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦ構成を出力バッファに書き込む。出力バッファは、非アドミンが読み取りのためにも書き込みのためにもアクセスすることができるいずれかの場所に置かれるべきではない。Ｄｅｓｅｒｉａｌｉｚｅ（＊入力バッファ，サイズ）：このＡＰＩは、入力バッファをＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦ構成に読み込む。このＡＰＩは、ＤＨＣＰ  ＱＥＣによって、ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ情報をレジストリに保存およびリストアするために、Ｓｅｒｉａｌｉｚｅと共に使用されることが可能である。レジストリデータは、管理者にとってのみアクセス可能であるべきである。
【００９５】
ＱＰＣのための接続状態（ＩＱｕａｒＰｏｌｉｃｙＣｌｉｅｎｔＣｏｎｎｅｃｔｉｏｎ）
このインターフェイスはＱＥＣによって、検疫状態を有する一意のネットワーク「インターフェイス」毎に状態を管理するために使用される。このインターフェイスは、ＬｏｃａｌＳｙｓｔｅｍおよびＮｅｔｗｏｒｋＳｅｒｖｉｃｅにＡＣＬされ、リモートでアクセス可能ではない。このインターフェイスはＱＥＣ、ＱＣＣおよびＱＰＣにエクスポーズされる。ネットワーク「インターフェイス」は物理ＮＩＣにマップすることができ、あるいは、例えばＩＰｓｅｃなど、別のマシンへの論理接続にマップすることができる。テーブルは、メソッド、および、どのコンポーネントが各メソッドを使用するかをリストする。
【００９６】
ＱｕｅｒｙＳｏＨＳｔａｔｅＲｅａｄ：このＡＰＩは、ＱＰＣがＳｏＨＳｔａｔｅＲｅａｄインターフェイスについてクエリすることを可能にする。ＱｕｅｒｙＭａｘＳｉｚｅ：ＭａｘＳｉｚｅは、ＱＥＣが、ＱＣＣが戻すことができるＳｏＨバッファの最大サイズを指定することを可能にする。ＱｕｅｒｙＱＮａｍｅ：ＱＮａｍｅは、ＳｏＨがそれについてクエリされている検疫名を指定する。ＱＥＣがＱＮａｍｅを知らない場合、ＱＥＣは“”を使用するものとする。ＱＣＣは、“”ＱＮａｍｅと共にパブリッシュされたＳｏＨ、または、使用された最後のＳｏＨを戻すものとする。ＱｕｅｒｙＱＣＳＮａｍｅ：知られている場合、このＣｏｎｎｅｃｔｉｏｎＳｔａｔｅにおける現在のＱＣＳをクエリする。ＱｕｅｒｙＰｒｅｆｅｒｒｅｄＱＰＳ＿ＩＤｓ：ＱＣＣによって、ＱＣＳのための好ましいＱＰＳ＿ＩＤをクエリするために使用される。ＱｕｅｒｙＵＲＬ：ＱＣＣによって、ＱＣＳのためのＵＲＬをクエリするために使用される。ＴｅｓｔＳｏＨＨａｓｈ：ＳｅｔＳｏＨによってちょうど設定されたＳｏＨのＨａｓｈが生成され、以前に格納されたハッシュと比較され、Ｈａｓｈがマッチする場合にこのファンクションはＳ＿ＯＫを戻し、そうでない場合はＳ＿ＦＡＬＳＥが戻される。ＱｕｅｒｙＴｒａｎｓａｃｔｉｏｎＩＤ（＊ＩＤ）：このＡＰＩは、ＳｅｔＴｒａｎｓａｃｔｉｏｎＩＤによって設定され、ＱＣＣ、ＱＥＣおよびＱＰＣによって使用された、トランザクションＩＤを戻す。これらがログするとき、これらはこのＩＤをログに追加するべきである。ＱｕｅｒｙＱＥＣＩｎｆｏ（ＥｎｕｍＴｙｐｅ，ＱＥＣＩｎｆｏ）：ＥｎｕｍＴｙｐｅは、ＱＥＣからの、ＱＥＣについての情報を含む。ＱＥＣＩｎｆｏはＱＥＣ  ＥｎｕｍＴｙｐｅによって決まるが、以下のＤＨＣＰ  ＱＥＣ（クライアントＩＰアドレス，クライアントＭＡＣアドレス）、ＰＥＡＰ  ＱＥＣ、およびＩＰｓｅｃ  ＱＥＣを含む。ＱｕｅｒｙＱｕａｒａｎｔｉｎｅＳｔａｔｅ（＊Ｑｕａｒａｎｔｉｎｅ＿Ｅｎａｂｌｅ，＊Ｑｕａｒａｎｔｉｎｅ／Ｐｒｏｂａｔｉｏｎ／Ｎｏｎ−Ｑｕａｒａｎｔｉｎｅ）：検疫／プロベーションおよび非検疫の検疫状態を戻す。ＴｅｓｔＰｒｏｂａｔｉｏｎＴｉｍｅ（＊Ｐａｓｓｅｄ）：これは、ＳｅｔＰｒｏｂａｔｉｏｎＴｉｍｅがコールされて以来、ＰｒｏｂａｔｉｏｎＴｉｍｅが経過しているかどうかを戻す。ＰｒｏｂａｔｉｏｎＴｉｍｅが設定されなかった場合、ＰａｓｓｅｄはＦａｌｓｅを戻すようになる。ＱｕｅｒｙＰｒｏｂａｔｉｏｎＴｉｍｅ（＊ＰｒｏｂａｔｉｏｎＴｉｍｅ）：このＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦにおけるプロベーション時間をクエリする。ＰｒｏｂａｔｉｏｎＴｉｍｅが設定されなかった場合、０を戻す。ＳｅｔＱＰＣＩｎｆｏ（Ｉｎｆｏ，Ｌｅｎｇｔｈ  ｏｆ  Ｉｎｆｏ、Ｓｉｚｅ）：ＱＰＣはＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦオブジェクトについてのある情報を保存することができ、例えば、この検疫インターフェイスにより使用されるべきであるポリシーサーバ名／アドレスを保存することができる。情報のＭａｘＳｉｚｅは２５６バイトである。Ｈａｎｄｌｅまたはポインタは格納されるべきではない。ＱｕｅｒｙＱＰＣＩｎｆｏ（＊Ｉｎｆｏ，＊Ｌ��ｎｇｔｈ  ｏｆ  Ｉｎｆｏ）：このＡＰＩは、ＱＰＣが、ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦに対して以前に保存された情報についてクエリすることを可能にする。戻りバッファは少なくとも２５６バイトのサイズであり、すなわち、ＳｅｔＱＰＣＩｎｆｏを介して設定することができる最大サイズであると予想される。
【００９７】
検疫調整クライアント管理ＩＦ
ＱＣＣは２つの管理インターフェイスをエクスポーズする。１つは読み取り用であり、１つは書き込み用である。ＣＯＭオブジェクトはｓｉｎｇｌｅｔｏｎであり、Ｃｏｍグローバル実行テーブル内でエクスポーズされる。ＣＯＭオブジェクトは、それがすべてのＷＩＮＳＴＡインスタンス内のｎｅｔｓｈｅｌｌ．ｄｌｌへのアクセスである方法で、グローバルテーブル内でエクスポーズされる。
【００９８】
ＩＱｕａｒＣｌｉｅｎｔＩｎｆｏ：このインターフェイスはあらゆるものにＡＣＬされ、リモートでアクセス可能ではない。ＱＣＣ、および、これをコールするＱＣＣ  ＵＩを含むいかなるコードも、ＱＰＣがコール側に成りすますことができないコンテキストを使用しなければならない。ＥｎｕｍＱＰＣ（＊ＱＰＣ＿ＩＤｓ，＊ＱＰＣ＿ＲＥＡＤ  ＣＬＳＩＤ［］）：ＱＣＣに登録されたＱＰＣおよびそれらのＱＰＣ＿ＲＥＡＤ  ＩＦのリストをエニュメレートする。ＥｎｕｍＱＥＣ（＊ＱＥＣ＿ＩＤｓ，＊ＱＥＣ＿ＲＥＡＤ  ＣＬＳＩＤ［］）：ＱＣＣに登録されたＱＥＣおよびそれらのＱＥＣ＿ＲＥＡＤ  ＩＦのリストをエニュメレートする。ＱｕｅｒｙＳｙｓｔｅｍＱｕａｒａｎｔｉｎｅＳｔａｔｅ（＊Ｑｕａｒａｎｔｉｎｅ＿Ｅｎａｂｌｅ，＊Ｑｕａｒａｎｔｉｎｅ／Ｐｒｏｂａｔｉｏｎ／Ｎｏｎ−ｑｕａｒａｎｔｉｎｅ）：システムの検疫状態をクエリする。ＱｕｅｒｙＱＰＣＳｔａｔｅ（ＱＰＣ＿ＩＤ，＊ｂｉｎｄ／ｕｎｂｉｎｄ，＊ｄａｔｅｔｉｍｅ，＊ＳｏＨ）：ＱＣＣ状態をＱＰＣ＿ＩＤについてクエリする。ｂｉｎｄ／ｕｎｂｉｎｄ状態が戻される。ＡＰＩは、ＳｏＨがアップデートされた最後の時間／日付を戻し、現在のＳｏＨが戻される。ＱｕｅｒｙＱＥＣＱｕａｒａｎｔｉｎｅＳｔａｔｅ（ＱＥＣ＿ＩＤ，＊ｂｉｎｄ／ｕｎｂｉｎｄ，＊ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦ［］）：ＱＣＣ状態をＱＥＣ＿ＩＤについてクエリする。ｂｉｎｄ／ｕｎｂｉｎｄ状態が戻される。ＱＥＣのためのＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦのリストが戻され、ＱＥＣ＿ＩＤがバインドされない場合、これは空になる。ＱｕｅｒｙＳｔａｔｕｓ（ＱＰＣ＿ＩＤ，ＬＡＮＧＩＤ，＊Ｓｔａｔｅ，＊Ｐｅｒｃｅｎｔａｇｅ，＊ＭｅｓｓａｇｅＩＤ）：ＱＰＣの現在状態、および、そのＳｏＨを修正する過程の進行を記述するＭｅｓｓａｇｅを供給する。状態は、（１）検疫されたがアップデートが失敗した。ユーザは管理者またはサポートウェブサイトからの支援を得なければならない場合がある、（２）検疫され、アップデートが進行中である、および（３）検疫され、すべてのアップデートが成功した、のうち１つである。Ｐｅｒｃｅｎｔａｇｅは０から１００％であり、−１の戻りは、ＱＰＣが％をサポートしないことを意味する。Ｍｅｓｓａｇｅは、ＱＰＣ＿ＲＥＡＤ  ＩＦと共に使用可能なＭｅｓｓａｇｅＩＤでなければならない。Ｍｅｓｓａｇｅはまた、何をＱＰＣが行っているかについてのローカルテキストに、ＱＰＳ＿Ｒｅｓｕｌｔについてのテキストを加えたものでもあるべきである。
【００９９】
ＩＱｕａｒＣｌｉｅｎｔＣｏｎｆｉｇ：このインターフェイスは、ＬｏｃａｌＳｙｓｔｅｍおよびＮｅｔｗｏｒｋＳｅｒｖｉｃｅにＡＣＬされ、リモートでアクセス可能ではない。このインターフェイスはＡＰＩを有していない。
【０１００】
検疫ポリシークライアント管理ＩＦ
ＩＱｕａｒＰｏｌｉｃｙＣｌｉｅｎｔＩｎｆｏ：このインターフェイスはあらゆるものにＡＣＬされ、リモートでアクセス可能ではない。ＱＣＣ、および、これをコールするＱＣＣ  ＵＩを含むいかなるコードも、ＱＰＣがコール側に成りすますことができないコンテキストを使用しなければならない。ＱｕｅｒｙＦｒｉｅｎｄｌｙＮａｍｅ（ＱＰＣ＿ＩＤ，＊ＭｅｓｓａｇｅＩＤ）：このＡＰＩは、ＱＰＣのフレンドリ名のためのＭｅｓｓａｇｅＩＤを戻す。ＱｕｅｒｙＱＰＳＲｅｓｕｌｔ（ＱＰＣ＿ＩＤ，ＱＰＳ＿Ｒｅｓｕｌｔ，＊ＭｅｓｓａｇｅＩＤ）：このＡＰＩは、ＱＰＳ＿ＲＥＳＵＬＴのためのＭｅｓｓａｇｅＩＤを戻す。ＱｕｅｒｙＭｅｓｓａｇｅ（ＱＰＣ＿ＩＤ，ＬＡＮＧＩＤ，ＭｅｓｓａｇｅＩＤ、＊Ｍｅｓｓａｇｅ）：このＡＰＩは、ＭｅｓｓａｇｅＩＤのためのユニコード文字列、および、指定されたＬＡＮＧＩＤを戻す。ＬＡＮＧＩＤのための文字列が存在しない場合、デフォルトシステムＬＡＮＧＩＤのための文字列が戻されなければならない。
【０１０１】
ＩＱｕａｒＰｏｌｉｃｙＣｌｉｅｎｔＣｏｎｆｉｇ：このインターフェイスはＡＰＩを有していない。
【０１０２】
検疫実施クライアント管理ＩＦ
ＩＱｕａｒＥｎｆｏｒｃｅｍｅｎｔＣｌｉｅｎｔＩｎｆｏ：このインターフェイスはあらゆるものにＡＣＬされ、リモートでアクセス可能ではない。ＱｕｅｒｙＦｒｉｅｎｄｌｙＮａｍｅ（ＱＰＣ＿ＩＤ，＊ＭｅｓｓａｇｅＩＤ）：このＡＰＩは、ＱＥＣのフレンドリ名のためのＭｅｓｓａｇｅＩＤを戻す。ＱｕｅｒｙＭｅｓｓａｇｅ（ＱＰＣ＿ＩＤ，ＬＡＮＧＩＤ，ＭｅｓｓａｇｅＩＤ、＊Ｍｅｓｓａｇｅ）：このＡＰＩは、ＭｅｓｓａｇｅＩＤのためのユニコード文字列、および、指定されたＬＡＮＧＩＤを戻す。ＬＡＮＧＩＤのための文字列が存在しない場合、デフォルトシステムＬＡＮＧＩＤのための文字列が戻されなければならない。
【０１０３】
ＩＱｕａｒＥｎｆｏｒｃｅｍｅｎｔＣｌｉｅｎｔＣｏｎｆｉｇ：このインターフェイスはＡＰＩを有していない。
【０１０４】
ＱＥＣの初期化中、ＱＥＣはＱＣＣＱＥＣ−＞ＢｉｎｄをＱＣＣ上でコールし、それ自体のＱＥＣＱＣＣインターフェイスのためのそのクラスＧＵＩＤを渡す。ＱＣＣはＢｉｎｄコールを受信すると、ＱＥＣのためのＱＥＣＱＣＣインターフェイスを作成およびクエリする。ＱＰＣの初期化中、ＱＰＣはＱＣＣＱＰＣ−＞ＢｉｎｄをＱＣＣ上でコールし、それ自体のＱＰＣＱＣＣインターフェイスのためのそのクラスＧＵＩＤを渡す。ＱＣＣはＢｉｎｄコールを受信すると、ＱＰＣのためのＱＰＣＱＣＣインターフェイスを作成およびクエリする。ＱＣＣは、加えて、ＱＥＣＱＣＣ−＞ＮｏｔｉｆｙＳｏＨＣｈａｎｇｅを使用して、可能性のあるＳｏＨ変更をＱＥＣに通知する。
【０１０５】
ＱＰＣは、それ自体のＳｏＨを変更するとき、ＮｏｔｉｆｙＳｏＨＣｈａｎｇｅをＱＣＣＱＰＣインターフェイス上でコールすることによって、ＱＣＣに通知する。ＱＣＣは、それに登録される各ＱＥＣをコールし、ＮｏｔｉｆｙＳｏＨＣｈａｎｇｅを各ＱＥＣＱＣＣインターフェイス上でコールする。各ＱＥＣはその検疫「インターフェイス」を、検疫が可能にされるいずれかの「インターフェイス」について調べる。これらの各インターフェイスについて、ＱＥＣはＱｕｅｒｙＳｏＨをＱＣＣ上でコールし、各検疫「インターフェイス」のためのＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦを渡す。ＱＣＣはＱｕｅｒｙＳｏＨを、Ｂｉｎｄをコールしている各ＱＰＣについて、ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅＩＦをパラメータとしてコールするようになる。ＱＣＣは次いで、ＱＣＣキャッシュ内に保持される正しいＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦのためのいかなるＳｏＨをも付加し、ＳｏＨのリストをＱＥＣへ、ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦ上で使用するために戻すようになる。ＱＣＣはまた、ＳｏＨのリストを生成した後、ＱｕｅｒｙＳｏＨから戻る前に、ＱｕｅｒｙＳｏＨＨａｓｈをコールして、ＳｏＨのリストが前回から不変であるかどうかをチェックしなければならない。ＱｕｅｒｙＳｏＨＨａｓｈが、Ｓ＿ＯＫを戻す場合、ＳｏＨのリストは不変であり、ＱｕｅｒｙＳｏＨはＳ＿ＦＡＬＳＥを戻すべきである。ＱｕｅｒｙＳｏＨＨａｓｈがＳ＿ＦＡＬＳＥを戻す場合、ＳｏＨのリストは異なる。ＱＣＣは次いでＳｅｔＳｏＨＨａｓｈをコールして、保存されたハッシュを新しいＳｏＨのリストにアップデートしなければならない。ＱＣＣはまた、ＳｏＨのリストを生成するときにＱｕｅｒｙＭａｘＳｉｚｅをコールしなければならず、ＳｏＨのリストを含むバッファはＭａｘＳｉｚｅより大きくてはならない。ＳｏＨのリストは、ＭａｘＳｉｚｅ内に収まる最大数の完全ＳｏＨになるように切り捨てられるべきである。
【０１０６】
ＳｏＨのリストは次いで、ＱＥＣによってそのＱＥＳ対応物に送信されるようになり、ＱＥＳ対応物は、これらのリストをそのＱＣＳに送信することによって処理するようになる。ＱＣＳはＳｏＨＲｅｓｐｏｎｓｅのリストをＱＥＳに渡して、ＱＥＣに戻すようにする。ＱＥＣはＳｏＨＲｅｓｐｏｎｓｅのリストを受信すると、ＰｒｏｃｅｓｓＳｏＨＲｅｓｐｏｎｓｅｓをＱＣＣＱＥＣインターフェイス上でコールするようになる。ＱＣＣはＳｏＨＲｅｓｐｏｎｓｅのリストを分割し、Ｂｉｎｄをコールしている各ＱＰＣについてＰｒｏｃｅｓｓＳｏＨＲｅｓｐｏｎｓｅをコールするようになり、ＳｏＨＲｅｓｐｏｎｓｅはＳｏＨＲｅｓｐｏｎｓｅのリスト内にある。ＢｉｎｄをコールしていないＱＰＣについてのいかなるＳｏＨＲｅｓｐｏｎｓｅも、廃棄されるようになる。ＱＣＣがＰｒｏｃｅｓｓＳｏＨＲｅｓｐｏｎｓｅｓファンクションを処理中であるとき、いくつかのＡＰＩを、ＰｒｏｃｅｓｓＳｏＨＲｅｓｐｏｎｓｅｓに渡されるＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦ上で使用する。ＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦはＱＥＣによって作成および管理され、ＰｒｏｃｅｓｓＳｏＨＲｅｓｐｏｎｓｅｓが完了するとき、ＱＣＣもＱＰＣもＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦを使用することを許可されない。ＱＣＣはＳｅｔＱＮａｍｅをコールして、検疫名をＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦ上に設定することができる。ＱＮａｍｅはＱＣＳによって、ＱＣＳ−＞ＱＣＣ  ＳｏＨ内で供給される。
【０１０７】
ＱＥＣネットワーク要求ＡＰＩ対話をこのとき説明する。ＱＥＣがネットワーク要求を行うことが必要であるとき、送信するためのＳｏＨを得ることが必要である。ＱＥＣはＱｕｅｒｙＳｏＨをＱＣＣ上でコールして、これを行う。インターフェイスはＮｏｔｉｆｙＳｏＨＣｈａｎｇｅのためのものと同じであるが、ただし、対話は、ＮｏｔｉｆｙＳｏＨＣｈａｎｇｅをコールするＱＰＣによってではなく、ＱＥＣによって開始される。
【０１０８】
検疫ポリシーサーバ＜−検疫調整サーバ（ＩＱｕａｒＰｏｌｉｃｙＳｅｒｖｅｒＢｉｎｄｉｎｇ）
このＡＰＩは、ＬｏｃａｌＳｙｓｔｅｍおよびＮｅｔｗｏｒｋＳｅｒｖｉｃｅにＡＣＬされる。ＱＰＳは、ＱＣＳによって使用されるインターフェイスをエクスポーズする。ＱＣＳはＣｏＣｒｅａｔｅＩｎｓｔａｎｃｅをコールして、このインターフェイスを得る。Ｉｎｉｔｉａｌｉｚｅ（ＱＰＳ＿ＩＤ）、Ｕｎｉｎｉｔｉａｌｉｚｅ（ＱＰＳ＿ＩＤ）、ＶａｌｉｄａｔｅＳｏＨ（ＱＰＳ＿ＩＤ，ＴｒａｎｓａｃｔｉｏｎＳｔａｔｅＲｅａｄ  ＩＦ）：このＡＰＩはＱＣＳによって、ＱＰＳがそのＳｏＨを妥当性検査することを要求するためにコールされる。ＱＰＳはＴｒａｎｓａｃｔｉｏｎＳｔａｔｅＲｅａｄ−＞ＱｕｅｒｙＳｏＨをコールして、そのＳｏＨを得なければならない。ＳｏＨバッファが空である場合、ＴｒａｎｓａｃｔｉｏｎＳｔａｔｅＲｅａｄ−＞ＯｎＶａｌｉｄａｔｅＳｏＨＣｏｍｐｌｅｔｅにおけるＳｏＨＲｅｓｐｏｎｓｅバッファは空でなければならない。ＱＰＳはこのコールを即時に返し、妥当性検査が完了するとき、ＴｒａｎｓａｃｔｉｏｎＳｔａｔｅＲｅａｄ−＞ＯｎＶａｌｉｄａｔｅＳｏＨＣｏｍｐｌｅｔｅをコールしなければならない。
【０１０９】
検疫調整サーバ＜−検疫実施サーバ（ＩＱｕａｒＥｎｆｏｒｃｅｍｅｎｔＳｅｒｖｅｒＢｉｎｄｉｎｇ）
このインターフェイスは、ＬｏｃａｌＳｙｓｔｅｍおよびＮｅｔｗｏｒｋＳｅｒｖｉｃｅにＡＣＬされる。このインターフェイスはＱＥＳによって、グローバルインターフェイステーブルを介してアクセスされる。ＶａｌｉｄａｔｅＳｏＨｓ（ＱＥＳ＿ＩＤ，ＴｒａｎｓａｃｔｉｏｎＳｔａｔｅ  ＩＦ，ＲｅｓｐｏｎｓｅＴｉｍｅ）：このＡＰＩはＱＥＳによって、ＱＣＳがＳｏＨのリストを妥当性検査することを要求するためにコールされる。ＱＣＳはＴｒａｎｓａｃｔｉｏｎＳｔａｔｅＲｅａｄ−＞ＱｕｅｒｙＳｏＨをコールして、そのＳｏＨを得なければならない。ＳｏＨバッファフォーマットはＱＥＳによって理解されるようにならず、ＱＣＳに透過的に渡されなければならない。このコールは即時に戻らなければならず、ＱＣＳは、ＴｒａｎｓａｃｔｉｏｎＳｔａｔｅ−＞ＯｎＶａｌｉｄａｔｅＳｏＨＣｏｍｐｌｅｔｅを検疫状態結果と共にコールするようになる。ＲｅｓｐｏｎｓｅＴｉｍｅは、ＱＣＳが、結果がＱＥＳにとって有用となるために、ＯｎＶａｌｉｄａｔｅＳｏＨｓＣｏｍｐｌｅｔｅをコールしなければならない時間である。
【０１１０】
ＱＣＳ／ＱＥＳのためのトランザクション状態（ＩＱｕａｒＳｅｒｖｅｒＴｒａｎｓａｃｔｉｏｎ）
このインターフェイスは、ＬｏｃａｌＳｙｓｔｅｍおよびＮｅｔｗｏｒｋＳｅｒｖｉｃｅにＡＣＬされる。このインターフェイスは、ＱＥＳおよびＱＣＳにエクスポーズされる。ＴｒａｎｓａｃｔｉｏｎＳｔａｔｅＳｔａｔｅＲｅａｄ（セクションエラー！参照ソースが見つからないを参照。）インターフェイスは、ＱＣＳ、ＱＥＳおよびＱＰＳにエクスポーズされる。ＱｕｅｒｙＱＣＳＳｔａｔｅＲｅａｄ（＊ＱＣＳＳｔａｔｅＲｅａｄ  ＩＦ）：このＡＰＩは、インターフェイスをＱＣＳＳｔａｔｅＲｅａｄに戻す。ＱｕｅｒｙＳｏＨＳｔａｔｅ：このＡＰＩは、ＱＥＳおよびＱＣＳがＳｏＨＳｔａｔｅインターフェイスについてクエリすることを可能にする。ＳｅｔＱＥＳＩｎｔｅｒｆａｃｅｓ（ＱＥＳ＿ＩＤ，ＱＥＳＴｒａｎｓａｃｔｉｏｎＳｔａｔｅ  ＩＦ，ＱＥＳ＿ＲＥＡＤ  ＩＦ）：このＡＰＩは、このＴｒａｎｓａｃｔｉｏｎＳｔａｔｅインスタンスによって使用される、ＱＥＳＴｒａｎｓａｃｔｉｏｎＳｔａｔｅおよびＱＥＳ＿ＲＥＡＤインターフェイスを設定する。ＱＥＳはこれらのインターフェイスを、使用後に正しく参照解除しなければならない。ＳｅｔＱＣＳＩｎｔｅｒｆａｃｅ（ＱＣＳＴｒａｎｓａｃｔｉｏｎＳｔａｔｅ  ＩＦ）：このＡＰＩは、このＴｒａｎｓａｃｔｉｏｎＳｔａｔｅインスタンスによって使用される、ＱＣＳＴｒａｎｓａｃｔｉｏｎＳｔａｔｅインターフェイスを設定する。ＱＥＳはこれらのインターフェイスを、使用後に正しく参照解除しなければならない。ＯｎＶａｌｉｄａｔｅＳｏＨｓＣｏｍｐｌｅｔｅ：ＱＣＳは、ＶａｌｉｄａｔｅＳｏＨｓの処理を完了するとき、このインターフェイスをコールするようになる。このファンクションは、ＱＥＳＴｒａｎｓａｃｔｉｏｎＳｔａｔｅ−＞ＯｎＶａｌｉｄａｔｅＳｏＨｓＣｏｍｐｌｅｔｅをコールする。ＳｅｔＱｕａｒａｎｔｉｎｅＣｏｎｆｉｇ：このＡＰＩはＱＥＳによって、このＶａｌｉｄａｔｅＳｏＨｓのために使用されるＱＣＳ構成を指定するために使用される。このＡＰＩは、ＱＥＳがＱＣＳに、この要求を行うクライアントの接続性が検疫判断によって影響を受けることを免除されるように、指定することを可能にする。ＱＣＳはこの情報をロギング情報に追加するべきである。ＭｅｓｓａｇｅＩＤは、免除のための理由についてのＩＤであり、例えば、Ｒｅｓｅｒｖａｔｉｏｎ、Ｓｃｏｐｅ、Ｄｏｍａｎｅ  ｎａｍｅ  ｍａｔｃｈ、ＢＯＯＴＰである。ＭｅｓｓａｇｅＩＤは、免除がログされるときにログされる。ＳｅｔＭａｘＳｉｚｅ（ＭａｘＳｉｚｅ）：ＱＥＳによって、ＱＣＳが戻すＳｏＨＲｅｓｐｏｎｓｅの最大サイズを指定するために使用される。ＳｅｔＣｌｉｅｎｔＮａｍｅ（クライアントマシン／ドメインネーム）：ＱＣＳによって、クライアントマシン／ドメインネームをＱＣＣ  ＳｏＨから設定するために使用され、ログのために使用される。ＳｅｔＣｌｉｅｎｔＳｔａｔｅ（Ｑｕａｒａｎｔｉｎｅ／Ｐｒｏｂａｔｉｏｎ／Ｎｏｎ−ｑｕａｒａｎｔｉｎｅ）：ＱＥＳまたはＱＣＳによって、クライアント検疫状態をＱＣＣ  ＳｏＨから設定するために使用される。ＱＣＳは、ＱＥＳがこれを設定することができなかった場合にのみ、これを設定するべきである。ＳｅｔＣｏｎｎｅｃｔｉｏｎＳｔ��ｔｅ（ＵＰ／Ｄｏｗｎ）：ＱＥＳによって、現在の接続状態を設定するために使用される。Ｃｌｅａｒ：再使用されている場合、オブジェクト状態を再設定するために使用することができる。
【０１１１】
ＱＰＳのためのトランザクション状態（ＩＱｕａｒＰｏｌｉｃｙＳｅｒｖｅｒＴｒａｎｓａｃｔｉｏｎ）
このインターフェイスは、ＬｏｃａｌＳｙｓｔｅｍおよびＮｅｔｗｏｒｋＳｅｒｖｉｃｅにＡＣＬされる。このインターフェイスは、ＱＥＳ、ＱＣＳおよびＱＰＳにエクスポーズされる。ＯｎＶａｌｉｄａｔｅＳｏＨｓＣｏｍｐｌｅｔｅ（ＳｏＨＲｅｓｐｏｎｓｅ）：ＱＰＳは、ＶａｌｉｄａｔｅＳｏＨの処理を完了するとき、このインターフェイスをコールするようになる。このファンクションは、ＱＣＳＴｒａｎｓａｃｔｉｏｎＳｔａｔｅ−＞ＯｎＶａｌｉｄａｔｅＳｏＨｓＣｏｍｐｌｅｔｅをコールする。このファンクションは、ＴｒａｎｓａｃｔｉｏｎＳｔａｔｅ−＞ＳｅｔＳｏＨＲｅｓｐｏｎｓｅを、渡されたＳｏＨＲｅｓｐｏｎｓｅと共にコールする。ＡＰＩは、ＳｅｔＳｏＨＲｅｓｐｏｎｓｅをコールする前にＳｏＨＲｅｓｐｏｎｓｅを妥当性検査しなければならない。ＱｕｅｒｙＳｏＨＳｔａｔｅＲｅａｄ（ＳｏＨＳｔａｔｅＲｅａｄ）：このＡＰＩは、ＳｏＨＳｔａｔｅＲｅａｄインターフェイスを得るために使用される。ＱｕｅｒｙＣｌｉｅｎｔＳｔａｔｅ（＊Ｑｕａｒａｎｔｉｎｅ／Ｐｒｏｂａｔｉｏｎ／ｎｏｎ−ｑｕａｒａｎｔｉｎｅ）：ＱＰＳによって、クライアント検疫状態を得るために使用することができる。ＱｕｅｒｙＱＥＳ（＊ＱＥＳ＿ＩＤ，＊ＱＥＳ＿ＲＥＡＤ  ＣＬＳＩＤ）：このＡＰＩは、ＳｅｔＱＥＳＩｎｔｅｒｆａｃｅｓをコールしたＱＥＳのためのＱＥＳ＿ＩＤおよびＱＥＳ＿ＲＥＡＤ  ＩＦを戻す。ＱｕｅｒｙＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ（ＵＰ／Ｄｏｗｎ）：ＱＣＳによって、現在の接続状態をクエリするために使用される。ＱｕｅｒｙＱｕａｒａｎｔｉｎｅＣｏｎｆｉｇ：このＡＰＩはＱＣＳによって、このＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦのために使用されるＱＣＳ構成を得るために使用される。構成パラメータには以下が含まれる。Ｑｕａｒａｎｔｉｎｅ  Ｓｔａｔｅ  Ｏｎ／Ｏｆｆ／Ｐｒｏｂａｔｉｏｎ：クライアントが検疫されるべきであり、免除は使用されないと、ＱＰＳが述べる場合、ＱＣＳが行うべき判断。Ｐｒｏｂａｔｉｏｎ  ｐｅｒｉｏｄ：プロベーションが、選択されたクライアント状態である場合、使用するべきプロベーション期間。Ｑｕａｒａｎｔｉｎｅ  Ｌｏｇｇｉｎｇ  ｅｎａｂｌｅｄ：検疫判断はログされるべきであるが、ユーザ接続性は影響を受けるべきではない。Ｃｏｎｎｅｃｔｉｖｉｔｙ  Ｅｘｅｍｐｔ  Ｎｏｔ−Ｑｕａｒａｎｔｉｎｅ  ａｗａｒｅ  ｃｌｉｅｎｔｓ：ＳｏＨを設定しないいかなるクライアントも免除する。Ｆａｉｌｕｒｅ  ＵＲＬ：障害時にクライアントに戻されるＵＲＬ。Ｒｅｇｕｌａｒ  ｅｘｐｒｅｓｓｉｏｎ  ｅｘｅｍｐｔｉｏｎ：マシン／ドメインネーム例外のために使用される。Ｅｘｅｍｐｔ  ｒｅａｓｏｎ：このトランザクションがＱＥＳから免除されるべき理由。ＱｕｅｒｙＴｒａｎｓａｃｔｉｏｎＩＤ（＊ＩＤ）：このＡＰＩは、ＱＣＳ、ＱＥＳおよびＱＰＳによって使用される。これらがログするとき、このＩＤをログに追加するべきである。ＱｕｅｒｙＭａｘＳｉｚｅ（＊ＭａｘＳｉｚｅ）：このＡＰＩは、ＱＣＳが、ＱＥＳが受け入れることができるＳｏＨＲｅｓｐｏｎｓｅのリストの最大サイズを得ることを可能にする。ＱｕｅｒｙＣｌｉｅｎｔＮａｍｅ（＊クライアントマシン／ドメイン���ーム）：ＱＰＳによって、例えばロギングのために、クライアントマシン／ドメインネームを得るために使用することができる。
【０１１２】
検疫調整サーバ＜−ＴｒａｎｓａｃｔｉｏｎＳｔａｔｅ（ＩＱｕａｒＰｏｌｉｃｙＳｅｒｖｅｒＣａｌｌｂａｃｋ）
ＱＣＳは、ＴｒａｎｓａｃｔｉｏｎＳｔａｔｅによって使用されるインターフェイスをエクスポーズする。このインターフェイスは、ＬｏｃａｌＳｙｓｔｅｍおよびＮｅｔｗｏｒｋＳｅｒｖｉｃｅにＡＣＬされる。このインターフェイスは、ＴｒａｎｓａｃｔｉｏｎＳｔａｔｅインスタンスへ、ＱＣＳによってＴｒａｎｓａｃｔｉｏｎＳｔａｔｅ−＞ＳｅｔＱＣＳＩｎｔｅｒｆａｃｅ  ＡＰＩを使用して与えられる。ＯｎＶａｌｉｄａｔｅＳｏＨＣｏｍｐｌｅｔｅ（ＴｒａｎｓａｃｔｉｏｎＳｔａｔｅ  ＩＦ，Ｑ／ＮＱ，ＱＰＳ＿Ｒｅｓｕｌｔ）：このＡＰＩは、ＴｒａｎｓａｃｔｉｏｎＳｔａｔｅによってＯｎＶａｌｉｄａｔｅＳｏＨＣｏｍｐｌｅｔｅ上でコールされる。ＱＰＳ＿Ｒｅｓｕｌｔは、なぜＱＰＳがＱ／ＮＱ結果を戻したかを説明するＨＲＥＳＵＬＴである。ＱＰＳがＩＮＶＡＬＩＤ＿ＳＯＨのＨＲＥＳＵＬＴを戻す場合、ＱＣＳは、ＴｒａｎｓａｃｔｉｏｎＳｔａｔｅ−＞ＯｎＶａｌｉｄａｔｅＳｏＨｓＣｏｍｐｌｅｔｅを、ＩＮＶＡＬＩＤ＿ＳＯＨのＨＲＥＳＵＬＴと共にコールするべきである。
【０１１３】
検疫実施サーバ＜−ＴｒａｎｓａｃｔｉｏｎＳｔａｔｅ（ＩＱｕａｒＥｎｆｏｒｃｅｍｅｎｔＳｅｒｖｅｒＣａｌｌｂａｃｋ）
ＯｎＶａｌｉｄａｔｅＳｏＨｓＣｏｍｐｌｅｔｅ（ＴｒａｎｓａｃｔｉｏｎＳｔａｔｅ  ＩＦ，Ｑ／ＮＱ）：ＳｏＨＲｅｓｐｏｎｓｅバッファフォーマットはＱＥＳによって理解されないようになり、ＱＥＣに透過的に渡されなければならない。ＱＰＳがＨＲＥＳＵＬＴ  ＩＮＶＡＬＩＤ＿ＳＯＨによりＯｎＶａｌｉｄａｔｅＳｏＨＣｏｍｐｌｅｔｅで失敗したか、ＱＣＳがＳｏＨのリストの妥当性検査で失敗した場合、ＩＮＶＡＬＩＤ＿ＳＯＨのＨＲＥＳＵＬＴを渡すべきである。
【０１１４】
検疫調整サーバ管理ＩＦ（ＱＣＳ）
ＱＣＳは２つの管理インターフェイスをエクスポーズし、１つは読み取り用、１つは書き込み用である。書き込みインターフェイスは管理者のみにとってアクセス可能である。読み取りインターフェイスは、すべてのユーザによってアクセス可能である。ＣＯＭオブジェクトはｓｉｎｇｌｅｔｏｎであり、Ｃｏｍグローバル実行テーブル内でエクスポーズされる。ＣＯＭオブジェクトは、それがすべてのＷＩＮＳＴＡインスタンス内のｎｅｔｓｈｅｌｌ．ｄｌｌへのアクセスである方法で、グローバルテーブル内でエクスポーズされる。インターフェイスは、以下の通りである。ＩＱｕａｒＳｅｒｖｅｒＩｎｆｏ：このインターフェイスは、あらゆるものにＡＣＬされる。ＥｎｕｍＱＰＳ（＊ＱＰＳ＿ＩＤｓ，＊ＱＰＳ＿ＲＥＡＤ  ＣＬＳＩＤ［］）：ＱＣＳに登録されたＱＰＳのリストをエニュメレートする。ＩＱｕａｒＳｅｒｖｅｒＣｏｎｆｉｇ：このインターフェイスは、ＬｏｃａｌＳｙｓｔｅｍおよびＮｅｔｗｏｒｋＳｅｒｖｉｃｅにＡＣＬされ、リモートでアクセス可能ではない。このインターフェイスはＡＰＩを有していない。
【０１１５】
検疫ポリシーサーバ管理ＩＦ（ＱＰＳ）
このインターフェイスは、ＬｏｃａｌＳｙｓｔｅｍおよびＮｅｔｗｏｒｋＳｅｒｖｉｃｅにＡＣＬされ、リモートでアクセス可能ではない。ＩＱｕａｒＰｏｌｉｃｙＳｅｒｖｅｒＩｎｆｏ：ＱｕｅｒｙＦｒｉｅｎｄｌｙＮａｍｅ（ＱＰＳ＿ＩＤ，＊ＭｅｓｓａｇｅＩＤ）：このＡＰＩは、ＱＰＳのフレンドリ名のためのＭｅｓｓａｇｅＩＤを戻す。ＱｕｅｒｙＱＰＳＲｅｓｕｌｔ（ＱＰＳ＿ＩＤ，ＱＰＳ＿Ｒｅｓｕｌｔ，＊ＭｅｓｓａｇｅＩＤ）：このＡＰＩは、ＱＰＳ＿ＲＥＳＵＬＴのためのＭｅｓｓａｇｅＩＤを戻す。ＱｕｅｒｙＭｅｓｓａｇｅ（ＱＰＳ＿ＩＤ，ＬＡＮＧＩＤ，ＭｅｓｓａｇｅＩＤ，＊Ｍｅｓｓａｇｅ）：このＡＰＩは、ＭｅｓｓａｇｅＩＤのためのユニコード文字列、および、指定されたＬＡＮＧＩＤを戻す。ＬＡＮＧＩＤのための文字列が存在しない場合、デフォルトシステムＬＡＮＧＩＤのための文字列が戻されなければならない。ＩＱｕａｒＰｏｌｉｃｙＳｅｒｖｅｒＣｏｎｆｉｇ：このインターフェイスはＡＰＩを有していない。
【０１１６】
検疫実施サーバ管理ＩＦ（ＱＥＳ）
このインターフェイスは、ＬｏｃａｌＳｙｓｔｅｍおよびＮｅｔｗｏｒｋＳｅｒｖｉｃｅにＡＣＬされ、リモートでアクセス可能ではない。ＩＱｕａｒＥｎｆｏｒｃｅｍｅｎｔＳｅｒｖｅｒＩｎｆｏ：ＱｕｅｒｙＦｒｉｅｎｄｌｙＮａｍｅ（ＱＥＳ＿ＩＤ，＊ＭｅｓｓａｇｅＩＤ）：このＡＰＩは、ＱＥＳのフレンドリ名のためのＭｅｓｓａｇｅＩＤを戻す。ＱｕｅｒｙＭｅｓｓａｇｅ（ＱＥＳ＿ＩＤ，ＬＡＮＧＩＤ，ＭｅｓｓａｇｅＩＤ、＊Ｍｅｓｓａｇｅ）：このＡＰＩは、ＭｅｓｓａｇｅＩＤのためのユニコード文字列、および、指定されたＬＡＮＧＩＤを戻す。ＬＡＮＧＩＤのための文字列が存在しない場合、デフォルトシステムＬＡＮＧＩＤのための文字列が戻されなければならない。ＱｕｅｒｙＩｎｆｏ（ＥｎｕｍＴｙｐｅ，ＱＥＳＩｎｆｏ）：ＥｎｕｍＴｙｐｅは、ＱＥＣからの、クライアントについての情報を含む。ＱＥＳＩｎｆｏはＱＥＳによって決まるが、以下のＤＨＣＰ  ＱＥＳ（提案されたクライアントＩＰアドレス、リース時間、クライアントＭＡＣアドレス）、ＰＥＡＰ  ＱＥＳ（ＲＡＤＩＵＳ属性）を含む。ＩＱｕａｒＥｎｆｏｒｃｅｍｅｎｔＳｅｒｖｅｒＣｏｎｆｉｇ：ＳｅｔＩｎｆｏ（ＥｎｕｍＴｙｐｅ，ＱＥＳＩｎｆｏ）：このＡＰＩはＱＥＳによって、ＱＥＳ情報を設定するために使用される。
【０１１７】
このとき、本発明のコンポーネントを、上述のＡＰＩに鑑みてより詳細に説明する。
【０１１８】
ヘルスのステートメントは、各ＱＰＣからの情報の集まりである。各ＱＰＣからの情報は、各クライアントによってチェックされたクライアントの状態を記述する。ＳｏＨはＱＣＳコンポーネントに渡され、ＱＣＳコンポーネントはＳｏＨを解析し、情報の各部分を正しいＱＰＳに渡して妥当性検査する。ＱＣＣは、各ＱＰＣから情報をキャッシュすることを担う。各ＱＰＣは、それらのポリシー情報が変化するときは常に、その情報をＱＣＣにパブリッシュする。ＱＣＣは、１つまたは複数のＳｏＨを含む単一のパケットを作成する（常にＱＣＣ  ＳｏＨがある）。ＱＣＣはこの単一のパケットをＱＥＣに供給する。ＱＥＣ／ＱＥＳは、ＱＥＣ／ＱＥＳプロトコルのために必要とされる場合、フラグメント化／フラグメント解消を担う。ＱＣＳは、１つまたは複数のＳｏＨ応答を含む単一のパケットを作成する（常にＱＣＳ  ＳｏＨ応答がある）。ＱＣＳはこの単一のパケットをＱＥＳに供給する。ＱＥＳ／ＱＥＣは、ＱＥＳ／ＱＥＣプロトコルのために必要とされる場合、フラグメント化／フラグメント解消を担う。ＱＰＣおよびＱＰＳは、新しい情報をＳｏＨの最後に追加することによって、ＳｏＨにおけるバージョニングを含む。ＳｏＨをバージョニングすることが可能でない場合、ＱＰＣおよびＱＰＳは新しいＱＰＣ＿ＩＤ／ＱＰＳ＿ＩＤを割り振ることができるが、Ｂｉｎｄコール（後述）は同じＰｒｏｄｕｃｔＧＵＩＤを使用しなければならない。
【０１１９】
ＱＰＣはチェックのセットを行い、そのＳｏＨをＱＣＣにパブリッシュする。ＳｏＨは、クライアントが正しい状態にあることをチェックするためにＱＰＳが使用することができる情報を含む。ＱＰＳは、ＳｏＨ応答バッファをクライアントに戻すことができる。これは、例えば、サーバにポーリングしてアップデートされたチェックを得るなど、障害が発生する場合に何を行うべきであるかをＱＰＣに通知するために使用される。これはまた、そこからその情報を得るために使用中であるべきサーバの名前など、情報をクライアントに供給するために使用することもできる。ＱＰＣは、ＬｏｃａｌＳｙｓｔｅｍおよびＮｅｔｗｏｒｋＳｅｒｖｉｃｅのコンテキストにおいて実行中のサービスとして、実行される。ＱＣＣのためにエクスポーズするＣＯＭインターフェイスは、ローカルマシンアカウントＬｏｃａｌＳｙｓｔｅｍおよびＮｅｔｗｏｒｋＳｅｒｖｉｃｅに対してのみＡＣＬされなければならない。ＱＣＣがユーザインターフェイス（ＵＩ）をユーザに表示して、なぜマシンが検疫中であるかについての情報、および、マシンを検疫から出す過程の進行を示すことを可能にするため、ＱＰＣは状況ＡＰＩ（後述）を供給して、ＱＣＣが各ＱＰＣに、その状態、および、そのポリシーサーバとマッチするようにクライアントをアップデートする過程のＱＰＣの進行を、クエリすることができるようにする。ネットワーキングを有するＳａｆｅモードのマシンは、ＱＣＣを実行中にするべきではない。ＱＥＣは、実行中である場合、検疫コールをバイパスする。ＱＰＣは、実行中である場合、検疫コールをバイパスする。
【０１２０】
ＱＣＣは、クライアントのためのマルチプレクサ／コントローラである。ＱＣＣは、各ＱＰＣからＳｏＨ情報を収集し、ＳｏＨをキャッシュする。新しいＳｏＨがＱＰＣによって供給されるとき、キャッシュがアップデートされる。キャッシュ内のエントリは、ＱＰＣ  ＣＯＭオブジェクトがマシンからアンインストールされるとき、削除される。これは、ＱＰＣ  ＣＯＭ  ＧＵＩＤがＱＣＣＱＰＣ−＞Ｂｉｎｄコール（後述）において渡されるので、削除される。ＱＣＣは、検疫状態が変化するとき、ＱＰＣへの通知メカニズムを提供し、ならびに、ＱＰＳとＱＰＣの間の通信チャネルを提供する。ＱＣＣはシステム検疫状態を維持し、各ＱＰＣから状況情報を収集し、両方をＱＣＣ  ＵＩに提供する。ＱＣＣは、ＳｏＨのリストをＱＥＣに供給し、ＳｏＨ応答をＱＰＣに渡す。
【０１２１】
ＱＣＣは、ＱＰＣが上記のサービスをＱＰＣに提供するためのＡＰＩをサポートする。このＡＰＩは、ローカルマシンアカウントＬｏｃａｌＳｙｓｔｅｍおよびＮｅｔｗｏｒｋＳｅｒｖｉｃｅに対してのみＡＣＬされる。もう１つのＡＰＩは、ＱＣＣ  ＵＩにとって、検疫状態および他の状況情報についてクエリして、ユーザに表示するために使用可能である。ＱＣＣ  ＵＩはユーザコンテキスト内で実行し、そのため、ＱＣＣ  ＵＩのためのＱＣＣ  ＡＰＩは、あらゆるものに対してＡＣＬされなければならない。ＱＣＣはサービスとして実装され、すべてのＱＥＣはこのサービスに依存する。ＱＣＣはＮｅｔｗｏｒｋＳｅｒｖｉｃｅとして実行する。ＱＰＣは初期化中にＢｉｎｄをコールしようと試み、ＱＣＣが実行中でないためにこのコールが失敗する場合、ＱＰＣは周期的にＢｉｎｄをコールしようと試みる。ＱＰＣは、そのＳｏＨが変化するときは常に、ＮｏｔｉｆｙＳｏＨＣｈａｎｇｅをコールする。ＱＣＣはＮｏｔｉｆｙＳｏＨＣｈａｎｇｅを各ＱＥＣ上でコールするようになる。ＱＣＣは、システムが検疫中である限り、ＮｏｔｉｆｙＳｏＨＣｈａｎｇｅを各ＱＥＣ上で周期的にコールする。ＱＣＣおよびＱＣＳはＳｏＨ／ＳｏＨＲｅｓｐｏｎｓｅフォーマットを使用して、それら自体の情報を交換し、これは例えば、ＱＣＳがＱＣＣに、それが検疫されているかどうかを通知するためである。ＱＣＣはＳｏＨをバッファにパックして、ＱＥＣに渡す。ＱＣＣおよびＱＣＳは常に、それ自体のＳｏＨをバッファ内に最初に入れるようになる。ＱＣＣおよびＱＣＳは、すべてのＱＰＣおよびＱＰＳからのＳｏＨを含むようになる。ＱＣＣは、ＱＣＳからの必要とされたＱＰＳ＿ＩＤのリストを有する場合、これらのＳｏＨを、ＱＣＣ  ＳｏＨに挿入した後にＱＣＳ  ＳｏＨで指定された順序で挿入しなければならない。
【０１２２】
ＱＥＣ  ＭａｘＳｉｚｅが小さすぎる場合、ＭａｘＳｉｚｅに到達されるまで、ＱＣＣは完全なＳｏＨを挿入するべきである。ＱＥＣはできる限り多くの情報をＱＥＳ／ＱＣＳ／ＱＰＳに渡すようになる。欠落しているＳｏＨが検疫ポリシーに影響を与える場合、マシンは検疫されるようになるが、ＱＣＳ  ＳｏＨＲｅｓｐｏｎｓｅは、ＱＥＳ／ＱＣＳ／ＱＰＳサーバ上で実行中であるＱＰＳのためのＱＰＳ＿ＩＤのリストを戻し、ＱＣＣが最小限の情報を再試行において提供することができるようにする。ＱＣＳがプロベーションの検疫時間をプロベーション時間と共に戻す場合、ＱＣＣはプロベーション時間をＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦ上で保存する。ＱＣＣは次いで、プロベーション時間のタイマを始動する。プロベーション時間が満了するとき、ＱＣＣは、すべてのＱＥＣへのＮｏｔｉｆｙＳｏＨＣｈａｎｇｅをトリガする。ＱＥＣがＱｕｅｒｙＳｏＨをコールするとき、ＱＣＣはＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ  ＩＦ  プロベーション時間をチェックし、プロベーション時間が満了される場合、ＳｏＨが変化しているかどうかにかかわらず、ＳｏＨのリストを戻す。システム状態がＰｒｏｂａｔｉｏｎである場合、プロベーション時間は、最初のＣｏｎｎｅｃｔｉｏｎＳｔａｔｅプロベーション時間が満了するまでの時間である。ＱＥＣがＱＣＣＱＥＣ−＞ＮｏｔｉｆｙＳｏＨＣｈａｎｇｅＦａｉｌｕｒｅをコールする場合、ＱＣＣはタイマを実行しなければならず、タイマが満了するとき、ＱＥＣＱＣＣ−＞ＮｏｔｉｆｙＳｏＨＣｈａｎｇｅをコールしなければならない。ＱＰＣがＱｕｅｒｙＳｙｓｔｅｍＱｕａｒａｎｔｉｎｅＳｔａｔｅをコールする場合、ＱＣＣは、個々のＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ検疫状態を結合して単一のシステム状態を作成していなければならない。個々の状態は、以下のルールを以下の順序で使用して結合され、すなわち、Ｑｕａｒａｎｔｉｎｅ状態におけるいずれかのＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ−＞Ｓｙｓｔｅｍ状態はＱｕａｒａｎｔｉｎｅである、Ｑｕａｒａｎｔｉｎｅ状態においてＣｏｎｎｅｃｔｉｏｎＳｔａｔｅがなく、Ｐｒｏｂａｔｉｏｎ状態におけるいずれかのＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ−＞Ｓｙｓｔｅｍ状態はＰｒｏｂａｔｉｏｎである、Ｎｏｎ−Ｑｕａｒａｎｔｉｎｅ状態におけるすべてのＣｏｎｎｅｃｔｉｏｎＳｔａｔｅ−＞Ｓｙｓｔｅｍ状態は非検疫である。ＱＣＣはサービスであるので、ｓｖｃｈｏｓｔにおいて実行するようになり、停止されるとき、すべてのそのｄｌｌをアンロードする。ＱＣＣはＱＥＣへのコールを監視し、ＡＰＩが短時間（Ｘ分）内に戻らない場合、ＱＣＣイベントはこれをログし、使用されたＱＰＣのリストからこのＱＰＣを除去し、そのＱＰＣからのいかなるコールも無視する。ＱＣＣはＱＰＣへのコールを監視し、ＡＰＩが短時間（Ｘ分）内に戻らない場合、ＱＣＣイベントはこれをログし、使用されたＱＥＣのリストからこのＱＥＣを除去する。このサービスは再始動可能である。ＱＥＣおよびＱＰＣは、再起動されているＱＣＣから回復することができるべきである。
【０１２３】
ＱＣＣ、またはＱＥＣのいずれかがキルされるかクラッシュする場合、ＳｏＨが無効であるとき、システムは自動的に検疫に入らなければならない。ＱＣＣＱＰＣおよびＱＣＣＱＥＣ  ＣＯＭオブジェクトは、ＱＣＣサービスを自動始動するように構成される。ＱＣＣは、マシンブートにおいて始動するように構成される。ＱＣＣはＳｏＨをＱＰＣからキャッシュする（ＱＣＣ  ＳｏＨをキャッシュしない）。キャッシュは、サービスおよびシステムの再始動に渡って持続する。ＱＣＣは、検疫クライアントが使用可能にされるかどうかを構成する、レジストリパラメータを有する。レジストリパラメータが設定されるとき、ＱＣＣは自動的に検疫サポートを可能および不可にする。検疫が不可にされるとき、ＱｕｅｒｙＳｏＨはＳｏＨを戻さない（ＱＣＣ  ＳｏＨを含まない）。ＱＣＣＱＰＣ−＞ＮｏｔｉｆｙＳｏＨＣｈａｎｇｅは、アクションなしで戻る。ＱＣＣＱＥＣ−＞ＰｒｏｃｅｓｓＳｏＨＲｅｓｐｏｎｓｅｓはＱＣＳ  ＳｏＨＲｅｓｐｏｎｓｅを処理するが、他のＳｏＨＲｅｓｐｏｎｓｅを処理しない。ＱＣＣ＿ＲＥＡＤ−＞ＱｕｅｒｙＱｕａｒａｎｔｉｎｅＳｔａｔｅは、検疫状態をＱＣＳ  ＳｏＨＲｅｓｐｏｎｓｅにおいて戻す。ＱＣＳは情報をＱＣＣへ、ＱＣＳ  ＳｏＨＲｅｓｐｏｎｓｅにおいて送信する。ＱＣＳはこの情報をキャッシュする。情報のためのインデックスは、ＱＣＳ  ＳｏＨＲｅｓｐｏｎｓｅにおけるＱＣＳ  ＧＵＩＤである。
【０１２４】
ユーザは、マシンが検疫されるかどうかを承知する必要がある。この情報は２つのレベルで示され、すなわち、システム全体では、マシンが検疫中であるかどうか、どのＱＰＣに障害が起こっているかであり、接続毎には、ＤＨＣＰ、８０２．１ＸおよびＶＰＮではこれは接続毎であり、ＩＰｓｅｃではこれはピアマシンへの接続毎である。システム全体の情報では、システムが検疫中であるとき、アイコンはシステムトレイ内に表示される。情報テキストを有する吹きだしが表示され、ユーザは吹きだしをクリックして状況ダイアログを得る。検疫状況ダイアログはＱＣＣ＿ＲＥＡＤ−＞ＱｕｅｒｙＳｔａｔｕｓを、ＱＣＣ＿ＩＤのＱＰＣ＿ＩＤ（０、０、３１１および０）と共にコールする。ＱＣＣはこれを使用して、ＢｉｎｄをコールしていないＱＰＣについての状況情報を戻す。具体的には、システムが検疫され、ＳｏＨ応答が、ＱＰＣに配信することができなかったＱＣＣに供給される場合、ＱＣＣ＿ＩＤについてのＱＣＣ＿ＲＥＡＤ−＞ＱｕｅｒｙＳｔａｔｕｓは、検疫クライアントが欠落していることを示す。状況ダイアログはある全体的なテキストおよびメッセージをＱＰＣ毎に表示し、各ＱＰＣの状況を示す。ＱＣＳ  ＳｏＨ内のＵＲＬからウェブページを表示するためのボタン、ならびに、Ｎｅｔｗｏｒｋ  Ｃｏｎｎｅｃｔｉｏｎｓフォルダを表示するためのボタンもまた表示される。ウェブページは、制限付きのＩＥブラウザ内で表示され、基本ＨＴＭＬのみが使用可能にされ、ＡｃｔｉｖｅＸ、Ｊａｖａ（登録商標）または他のスクリプティング、リンク、ＤＨＴＭＬは許可されない。検疫状況情報（例えば、検疫中のマシン）の表示は、エクスプローラを実行中のすべてのインタラクティブなウィンドウステーション上で発生する。これは、ユーザの簡易切り替えを実行中のすべてのユーザ、およびターミナルサーバにログオンしているすべてのユーザについての検疫状況情報の表示を使用可能にする。コマンドラインユーティリティｎｅｔｓｈは、システム全体の検疫情報を表示する。検疫システムはまた、ｎｅｔｓｈを介して使用可能または使用不可にすることもできる。ＱＣＣはファイルをトレースすることができ、トレースの使用可能／使用不可はｎｅｔｓｈを介して行われる。検疫状態が変化するときは常に、ＱＣＣは以下をトレースファイルにログし、すなわち、Ｑｕａｒａｎｔｉｎｅ／Ｐｒｏｂａｔｉｏｎ／Ｎｏｎ−Ｑｕａｒａｎｔｉｎｅ状態、ＱＰＣのＢｏｕｎｄ，Ｔｒａｎｓａｃｔｉｏｎ  ＩＤ、ＱＥＳ  ＧＵＩＤ、ＱＮＡＭＥ  ＧＵＩＤ、ＱＥＣＩｎｆｏｒｍａｔｉｏｎ：ＮＩＣ  ＭＡＣアドレス、ＩＰアドレス、ＱＰＣからの診断情報と共に障害を起こしたＱＰＣ、処理されなかったＳｏＨ応答  ＱＰＳ＿ＩＤ、および、ＳｏＨおよびＳｏＨ応答のコンテンツである。
【０１２５】
ＱＥＣコンポーネントは検疫実施を提供する。いくつかの可能なＱＥＣがあり、すなわち、ＤＨＣＰ、ＶＰＮ、ＰＥＡＰおよびＩＰｓｅｃである。ＱＥＣはＢｏＨまたはＳｏＨのいずれかを使用して、クライアントの状態を証明する。ＤＨＣＰ  ＱＥＣはＳｏＨをＤＨＣＰサーバに通信する。ＩＰｓｅｃ  ＱＥＣはＢｏＨのみを使用する。インターフェイスが例えばＰｎＰイベントに到達するか、そこに行くとき、ＱＥＣはＱＣＣＱＥＣ−＞ＮｏｔｉｆｙＩｎｔｅｒｆａｃｅＳｔａｔｅＣｈａｎｇｅをコールする。インターフェイスがＭｅｄｉａｓｅｎｓｅ接続／切断を生成する場合、ＱＥＣはＱＣＣＱＥＣ−＞ＮｏｔｉｆｙＩｎｔｅｒｆａｃｅＳｔａｔｅＣｈａｎｇｅを生成する。例えば、ＩＰアドレス、８０２．１Ｘキーなど、インターフェイス上の接続性が変化する場合、ＱＥＣはＱＣＣＱＥＣ−＞ＮｏｔｉｆｙＩｎｔｅｒｆａｃｅＳｔａｔｅＣｈａｎｇｅを生成する。ＱＥＣおよびＱＥＳは、ＳｏＨのリストおよびＳｏＨ応答のリストのバッファのフォーマットを理解しない。ＱＣＣがＱＥＣＱＣＣ−＞ＮｏｔｉｆｙＳｏＨＣｈａｎｇｅをコールするとき、ＱＥＣはコールを即時に戻す。ＱＥＣが、いずれかの理由のためにＮｏｔｉｆｙＳｏＨＣｈａｎｇｅを処理することができないことを発見する場合、通知を保存して後に処理することができ、あるいは、ＱＣＣＱＥＣ−＞ＮｏｔｉｆｙＳｏＨＣｈａｎｇｅＦａｉｌｕｒｅをコールして、ＮｏｔｉｆｙＳｏＨＣｈａｎｇｅを無視することができる。この場合、ＱＣＣはタイマを始動するようになる。タイマが満了するとき、ＱＣＣはＱＥＣＱＣＣ−＞ＮｏｔｉｆｙＳｏＨＣｈａｎｇｅをすべてのＱＥＣ上でコールするようになる。
【０１２６】
ＤＨＣＰ  ＱＥＣは、ＳｏＨのリストを含むバッファをＱＣＣから得る。必要とされる場合、ＤＨＣＰクライアントはバッファをフラグメント化し、各フラグメントをＤＨＣＰオプションに入れて、ＤＨＣＰ  Ｄｉｓｃｏｖｅｒ、ＤＨＣＰ  ＲｅｑｕｅｓｔおよびＤＨＣＰ  Ｉｎｆｏｒｍにおいて送信されるようにする。ＳｏＨはＤＨＣＰ  ＤｅｃｌｉｎｅおよびＤＨＣＰリリースに追加されない。使用されるＤＨＣＰオプションは、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｖｅｎｄｏｒオプションである。ＤＨＣＰ  ＱＥＣおよびＱＥＳは、ＳｏＨのリストのフォーマットも、個々のＳｏＨのフォーマットも、ＳｏＨＲｅｓｐｏｎｓｅを含むバッファも理解しない。
【０１２７】
ＰＥＡＰ  ＱＥＣは、ＳｏＨまたはＢｏＨを使用することができる。ＳｏＨ／ＳｏＨＲｅｓｐｏｎｓｅが使用される場合、これらはＰＥＡＰトンネル内で交換されて、サーバの認証およびＳｏＨ／ＳｏＨＲｅｓｐｏｎｓｅ交換の保護を提供するようにしなければならない。ＰＥＡＰ  ＱＥＣがＶＰＮと共に使用され、クライアントがポリシーサーバ、例えばＷＵＳを使用するように構成されないとき、ＱＰＳはクライアントで障害を起こすようになる。ＱＰＣがそのポリシーサーバについての構成情報を必要とする場合、ＱＰＳはこれをＱＰＣにそのＳｏＨＲｅｓｐｏｎｓｅにおいて供給するべきであり、例えば、ＷＵＳ  ＱＰＳはＷＵＳサーバ名をＳｏＨＲｅｓｐｏｎｓｅに入れるべきである。
【０１２８】
ＩＰｓｅｃ  ＱＥＣはＢｏＨを使用する。これは、ＩＰｓｅｃ実施検疫システムが検疫サーバの配置を必要とすることを意味する。検疫サーバはＳｏＨを妥当性検査し、ＳｏＨが有効とされる場合、ＢｏＨを発行する。
【０１２９】
本発明の一実施形態では、検疫サーバはＤＨＣＰサーバである。ＤＨＣＰサーバマシンは、ＤＨＣＰ  ＱＥＳ、ＱＣＳおよびＱＰＳを含む。ＤＨＣＰ  ＱＥＳは検疫ＤＨＣＰオプションを処理し、ＳｏＨ情報を収集し、ＳｏＨのリストを生成し、このリストをＱＣＳへ、ＱＣＳＱＥＳ−＞ＶａｌｉｄａｔｅＳｏＨｓを使用して渡す。ＱＣＳは各ＳｏＨを分割し、各ＳｏＨを正しいＱＰＳへ、ＱＰＳＱＣＳ−＞ＶａｌｉｄａｔｅＳｏＨを使用して渡す。ＱＰＳがＱＣＳＱＰＳ−＞ＯｎＶａｌｉｄａｔｅＳｏＨＣｏｍｐｌｅｔｅをコールすることによって、ＱＣＳは結果を各ＱＰＳから収集し、ＴｒａｎｓａｃｔｉｏｎＳｔａｔｅ−＞ＯｎＶａｌｉｄａｔｅＳｏＨｓＣｏｍｐｌｅｔｅをコールすることによって、結果のＤＨＣＰ  ＱＥＳを通知する。ＤＨＣＰ  ＱＥＳは非検疫ＤＨＣＰオプションを得て、クライアントが検疫に入れられない場合、検疫オプションを得て、相当する非検疫オプションの代わりに検疫オプションを使用し、検疫クライアントに送信されるべきでないとして指定されたいかなるオプションをも削除する。
【０１３０】
ＱＰＳはそれらのＳｏＨを妥当性検査し、必要であればそれらのポリシーサーバにアクセスする。各ＱＰＳは検疫または非検疫をＱＣＳに戻す。ＱＰＳはまた、ＱＣＳがＱＣＣに送信するある情報（ＳｏＨ応答）も戻すことができ、ＱＣＣはこの情報をＱＰＣに渡すようになる。ＱＥＣ／ＱＣＣはＳｏＨをＤＨＣＰ  ＤｉｓｃｏｖｅｒおよびＤＨＣＰ  Ｒｅｑｕｅｓｔにおいて送信し、ＱＣＳ／ＱＥＳはこれらを処理し、ＳｏＨ応答をＤＨＣＰ  ＯｆｆｅｒおよびＤＨＣＰ  Ａｃｋにおいて送信する。これは、検疫がＢＯＯＴＰおよびＤＨＣＰクライアントに対して機能することを可能にする。ＤＨＣＰサーバは範囲および検疫属性を発見し、ＶａｌｉｄａｔｅＳｏＨｓをコールする前に、ＴｒａｎｓａｃｔｉｏｎＳｔａｔｅ−＞ＳｅｔＱｕａｒａｎｔｉｎｅＣｏｎｆｉｇおよびＴｒａｎｓａｃｔｉｏｎＳｔａｔｅ−＞ＳｅｔＣｏｎｎｅｃｔｉｖｉｔｙＥｘｅｍｐｔをコールし、Ｃｏｎｎｅｃｔｉｖｉｔｙ  Ｅｘｅｍｐｔフラグなどが知られるようにする。ＤＨＣＰサーバはＶａｌｉｄａｔｅＳｏＨｓを、以下の入力ＤＨＣＰパケット、すなわち、ＤＨＣＰ  Ｄｉｓｃｏｖｅｒ、ＤＨＣＰ  ＲｅｑｕｅｓｔおよびＤＨＣＰ  Ｉｎｆｏｒｍのためにコールする。これは、ＱＣＳがすべてのＤＨＣＰ検疫処理をオーバーライドすることを可能にする。ＤＨＣＰサーバはＶａｌｉｄａｔｅＳｏＨｓを、ＤＨＣＰ  ＤｅｃｌｉｎｅおよびＤＨＣＰ  Ｒｅｌｅａｓｅのためにコールしない。ＤＨＣＰサーバはＱＣＳを、それがクライアントのための有効なＩＰアドレスを有していない限り、ＤＨＣＰ  ＤｉｓｏｃｖｅｒおよびＤＨＣＰ  Ｒｅｑｕｅｓｔのためにコールしない。ＤＨＣＰサーバは、クライアントが有効なリースを有していない限り、ＱＣＳをＤＨＣＰ  Ｉｎｆｏｒｍのためにコールしない。これは、ＤＨＣＰがＩＰアドレスを与えることができないクライアントについての情報を処理またはキャッシュ中でないように行われる。
【０１３１】
ＤＨＣＰサーバ検疫が、ＲＱＣ／ＲＱＳ検疫により使用される場合、ＤＨＣＰサーバのための以下の構成が適用されるべきであり、すなわち、ＶＰＮサーバがＶＰＮクライアントのためのＩＰアドレスを得るためにＤＨＣＰサーバを使用中である場合。次いで、別のＤＨＣＰ範囲が使用されるべきであり、この範囲はＤＨＣＰ検疫を不可にするべきである。ＶＰＮサーバがＶＰＮクライアントのためのＩＰアドレスを得るためにＤＨＣＰサーバを使用中ではないが、ＤＨＣＰ  ｉｎｆｏｒｍメッセージのためのＤＨＣＰオプションを戻すように、ＤＨＣＰ範囲がＤＨＣＰサーバに構成される場合、別のＤＨＣＰ範囲が使用されるべきであり、この範囲はＤＨＣＰ検疫を不可にするべきである。必要とされる場合、ＤＨＣＰサーバはＳｏＨ応答のリストをフラグメント化し、各フラグメントをＤＨＣＰオプションに入れて、ＤＨＣＰ  ＯｆｆｅｒおよびＤＨＣＰ  ＡＣＫにおいて送信されるようにする。ＳｏＨ応答はＤＨＣＰ  ＮＡＫに追加されない。ＤＨＣＰサーバは、以下をパフォーマンスカウンタとして追跡し、これらをまたＤＨＣＰ  ＭＭＣにおいて表示し、これらはすなわち、検疫におけるアクティブリースの数、非検疫におけるアクティブリースの数、プロベーションにおけるアクティブリースの数、ドロップされた検疫要求の数である。ＱＣＳＱＥＳ−＞ＶａｌｉｄａｔｅＳｏＨｓがＱＣＳによって失敗される場合、ＤＨＣＰサーバは、検疫構成が使用可能にされるか、またはプロベーションである場合、この要求をドロップするべきである。これが発生するべきである場合、ＱＥＳは、イベントログを５分おきに、最後の５分間でドロップされた要求の数により生成するべきである。ＯｎＶａｌｉｄａｔｅＳｏＨｓＣｏｍｐｌｅｔｅが障害を有して完了される場合、ＤＨＣＰサーバはクライアントを検疫するべきである。ＱＣＳはＱＣＳ  ＳｏＨＲｅｓｐｏｎｓｅをＳｏＨＲｅｓｐｏｎｓｅのリストに最初に入れなければならないので、これは発生するべきではない。ＱＣＳ  ＳｏＨＲｅｓｐｏｎｓｅの最大サイズは、ＳｏＨＲｅｓｐｏｎｓｅのリストのためのＤＨＣＰ  ＭａｘＳｉｚｅより小さくなるように定義される。ＤＨＣＰサーバは、ＱＣＳが各ＶａｌｉｄａｔｅＳｏＨについて使用するタイムアウトを指定するための、レジストリ構成パラメータを有する。Ｒｅｓｐｏｎｓｅ  Ｔｉｍｅｏｕｔ：ＱＣＳが、ＶａｌｉｄａｔｅＳｏＨをコールするＱＣＳからＱＰＣがＯｎＶａｌｉｄａｔｅＳｏＨＣｏｍｐｌｅｔｅをコールすることを待機する、ミリ秒。これはＱＣＳに、ＱＣＳＱＥＳ−＞ＶａｌｉｄａｔｅＳｏＨにおいて渡される。
【０１３２】
ＱＣＳは、ＳｏＨのリストを妥当性検査するために使用される。ＳｏＨのリストはＱＣＳに、ＱＥＳ（検疫サーバＱＥＳを含む）から供給される。ＱＣＳはＳｏＨのリストを分割し、各ＳｏＨを正しいＱＰＳに渡す。ＱＰＳがＳｏＨについて使用可能でない場合、このＳｏＨはドロップおよび無視される。ＱＣＳは結果を各ＱＰＳから収集し、単一の結果を生成する。この結果は、検疫するかどうかを判断するために使用される。ＱＣＳは、全体的なＱｕａｒａｎｔｉｎｅ／Ｎｏｔ  Ｑｕａｒａｎｔｉｎｅ構成を有して、検疫が発生することなく、システムを配置およびテストすることを可能にする。ＱＣＳがＱＰＳ結果を単一の結果に結合する方法は、ブール方程式（ＱＰＳ＿ＩＤ１｜｜ＱＰＳ＿ＩＤ２）＆＆ＱＰＳ＿ＩＤ３を介する。これは、結果が非検疫となるために、ＱＰＳ＿ＩＤ１またはＱＰＳ＿ＩＤ２のいずれかが未検疫を戻さなければならず、ＱＰＳ＿ＩＤ３が未検疫を戻さなければならないことを意味する。ＱＣＳは、検疫の代わりに、プロベーションおよびプロベーション期間を戻すように構成することができる。ＱＣＳは、ＱＰＳ結果が検疫であるとき、非検疫を戻すように構成することができる。すべての場合において、ＱＣＳは結果を監査ファイルに入れるべきである。ＱＣＳはまた、各ＳｏＨ妥当性検査要求および結果についてのロギング情報を生成し、ロギング結果を監査ファイルに格納する。ネットワーク管理者にとって、この方程式を修正して、チェックからＱＰＳを使用可能または使用不可にすることは容易である。これは、特定のチェックで問題が発生する場合、管理者が容易にチェックを使用不可にすること、例えば、ＡＶポリシーサーバで問題がある場合、ＡＶ  ＱＰＳを使用不可にすることを可能にする。
【０１３３】
ＱＣＳは、ＤＨＣＰ  ＱＥＳによって、および検疫サーバＱＥＳによって使用される。ＱＣＳはＱＥＳによって、ＳｏＨがＱＥＣによって提供されないときにもコールされる。これは、クライアントが検疫をサポートしない場合を処理するためである。これは、ＱＣＳがこれらのクライアントのためのポリシーを決めることを可能にする。ＱＣＳは、検疫をサポートしないクライアントを検疫または非検疫するように選択することができる。そうするかどうかにおける判断は、ネットワーク管理者によって構成可能でなければならない。ＱＣＳは結果をＱＰＳからキャッシュする。ＳｏＨのリストがＳｏＨ応答のリストと同じであるとき、検疫／非検疫／プロベーションが短期間に渡って使用され、デフォルトは３０秒である。デフォルト時間を、レジストリ変数を使用して変更することができる。ＳｏＨのリストのキャッシュにおけるマッチが発見されない場合、ＱＣＳＱＰＳ−＞ＢｉｎｄをコールしたすべてのＱＰＳがそれらのＳｏＨと共に（または、そのＱＰＳ＿ＩＤのためのＳｏＨがない場合、ＳｏＨなしで）コールされる。次いで、ＱＣＳはＲｅｓｐｏｎｓｅ  Ｔｉｍｅｏｕｔミリ秒のためのタイマを実行する。コールされるＱＰＳのいずれかがＯｎＶａｌｉｄａｔｅＳｏＨＣｏｍｐｌｅｔｅをコールしていない場合、ＱＣＳはＯｎＶａｌｉｄａｔｅＳｏＨｓＣｏｍｐｅｔｅを、これまでの結果、および、これまでのＳｏＨＲｅｓｐｏｎｓｅのリストと共にコールするようになり、そうでない場合、最後に予想されたＱＰＳがＱＣＳＱＰＳ−＞ＯｎＶａｌｉｄａｔｅＳｏＨＣｏｍｐｌｅｔｅをコールするとき、ＱＣＳはＱＥＳＴｒａｎｓａｃｔｉｏｎＳｔａｔｅ−＞ＯｎＶａｌｉｄａｔｅＳｏＨｓＣｏｍｐｌｅｔｅをコールする。ＱＣＳは他のいかなる処理の前にも、ＳｏＨのリストを妥当性検査しなければならない。妥当性検査が失敗する場合、ＱＣＳはＴｒａｎｓａｃｔｉｏｎＳｔａｔｅ−＞ＯｎＶａｌｉｄａｔｅＳｏＨｓＣｏｍｐｅｔｅを、失敗と共にコールする。キャッシュは同じＱＰＳについて複数のＳｏＨを格納し、これは、異なるクライアントがＱＰＣに応じて異なるＳｏＨを有する可能性があるからである。ＶａｌｉｄａｔｅＳｏＨ要求がＳｏＨのリストを有していない場合、ＱＣＳがＳｏＨＲｅｓｐｏｎｓｅの空のリストをクライアントに送信する。ＱＣＳはＲｅｓｐｏｎｓｅ  Ｉｎｆｏｒｍａｔｉｏｎをバッファにパックして、ＱＥＳに渡す。ＱＣＳは、ＧＵＩＤである検疫名により構成される。この検疫名はＱＣＣに、ＱＣＳ  ＳｏＨ応答において渡される。ＱＣＳはまたＱＣＳ  Ｎａｍｅ  ＧＵＩＤを最初の実行において生成し、これをあらゆるＱＣＳ  ＳｏＨ応答に含める。ＱＣＣはこのＧＵＩＤを使用して異なるＱＣＳを識別し、ＱＣＳ毎のＱＰＳ＿ＩＤの好ましいリストなど、情報を追跡する。
【０１３４】
クライアントが、異なる検疫名を有する２つ以上のネットワークに接続される場合、各ネットワーク上のＱＰＳは異なるセットのチェックを有する場合があり、そのためそれらのＱＰＣは異なるＳｏＨを有する場合がある。検疫名はＱＰＣに渡され、ＱＰＣは、それが異なるポリシーサーバのための複数のＳｏＨをサポートする場合、ＳｏＨを特定の検疫名に対して発行することができる。ＱＰＣが単一のポリシーサーバのみを扱う場合、ＳｏＨを検疫名なしで発行する。ＱＣＳはＶａｌｉｄａｔｅＳｏＨｓを、ＢｉｎｄをコールしているＱＰＳ上でコールするようになるが、ＱＰＳへのＶａｌｉｄａｔｅＳｏＨｓコールは、ＳｏＨがＳｏＨのリスト内にない場合、空のＳｏＨバッファを含む。これは、ＱＰＣがインストールされていない場合でもＱＰＳがコールされることを可能にし、また、例えばネットワークＩＤＳなど、クライアントソフトウェアを必要とすることなく、クライアントをチェックするＱＰＳをサポートする。この場合のＱＰＳはＳｏＨ応答を供給することができず、外部情報およびＴｒａｎｓａｃｔｉｏｎＳｔａｔｅ  ＩＦ情報に依拠して、クライアントの検疫状態を決定する。
【０１３５】
ＱＣＳは、ＱＣＣ  ＳｏＨからのマシン名を使用して、ＡＤ内のマシンオブジェクトをルックアップする。マシンオブジェクトが存在する場合、Ｑｕａｒａｎｔｉｎｅ接続性免除変数がこのマシンオブジェクト上でチェックされ、マシンがＱｕａｒａｎｔｉｎｅ接続性免除である場合、Ｎｏｎ−ＱｕａｒａｎｔｉｎｅがＱＣＳによって戻されるべきである。Ｑｕａｒａｎｔｉｎｅ免除変数は、Ａｃｔｉｖｅ  Ｄｉｒｅｃｔｏｒｙ内のコンピュータアカウントＵＩ上でエクスポーズされる。ＱＣＳは、すべての他のＱＣＳ処理、例えば、ＱＰＳＱＣＳ−＞ＶａｌｉｄａｔｅＳｏＨおよびＱＣＳＱＰＳ−＞ＯｎＶａｌｉｄａｔｅＳｏＨＣｏｍｐｌｅｔｅのコールの後でのみ、免除を処理する。ＱＣＳは次いで、いかなる免除をも適用する。これは、ＱＰＳがＳｏＨＲｅｓｐｏｎｓｅをそれらのＱＰＣのために生成することができることを意味する。ＱＰＳは、インストレーションでＱＣＳＱＰＳ−＞Ｒｅｇｉｓｔｅｒを介して、ＱＣＳに登録される。Ｒｅｇｉｓｔｅｒは、レジストリパラメータを介する。ＱＣＳは、ＱＰＣ  ＣＯＭオブジェクトをアウトオブプロセスオブジェクトとして作成する。ＱＣＳはレジストリキーを監視し、追加される場合に新しいＣＯＭオブジェクトを作成し、これらがレジストリキーから削除される場合、ＱＰＳの使用を停止する。
【０１３６】
ＤＨＣＰサーバのためのＱＥＳ  ＵＩは、ＱＣＳのためのＵＩを含む。ＳｅｔＱｕａｒａｎｔｉｎｅＣｏｎｆｉｇを介して設定される構成パラメータは、Ｑｕａｒａｎｔｉｎｅ  Ｓｔａｔｅ  Ｏｎ／Ｏｆｆ／Ｐｒｏｂａｔｉｏｎ、Ｐｒｏｂａｔｉｏｎ  ｐｅｒｉｏｄ、Ｑｕａｒａｎｔｉｎｅ  Ｌｏｇｇｉｎｇ  ｅｎａｂｌｅｄ、Ｅｘｅｍｐｔ  Ｎｏｎ−Ｑｕａｒａｎｔｉｎｅ  ａｗａｒｅ  ｃｌｉｅｎｔｓ、Ｆａｉｌｕｒｅ  ＵＲＬ、およびＲｅｇｕｌａｒ  ｅｘｐｒｅｓｓｉｏｎベースのドメインネーム例外である。Ｑｕａｒａｎｔｉｎｅ  Ｓｔａｔｅ  Ｏｎは、ＱＣＳがＳｏＨを妥当性検査することを可能にする。Ｑｕａｒａｎｔｉｎｅ  Ｓｔａｔｅ  Ｏｆｆは、ＱＣＳがＳｏＨを妥当性検査することを無効にする。ＱＣＳは、接続性状態について影響を受けない準拠状態およびＣｏｎｎｅｃｔｉｖｉｔｙについて、Ｕｎｋｎｏｗｎを戻すようになる。Ｐｒｏｂａｔｉｏｎは、ＱＣＳがＳｏＨを妥当性検査することを可能にし、正しい準拠状態を戻すが、非準拠になるクライアントにおいて、ある期間に渡って接続性状態をプロベーションに設定するようになる。Ｐｒｏｂａｔｉｏｎ  ｐｅｒｉｏｄは、非準拠クライアントが、そのクライアントが非準拠になるときに、その接続性を影響されないようにする時間である。
【０１３７】
検疫ポリシークライアントおよび検疫ポリシーサーバは（ポリシーサーバと共に）、クライアントについてのチェックのセットを実施することを担う。検疫ポリシーサーバは、クライアントチェックの結果についての判断を行い、検疫調整サーバに、クライアントチェックがｏｋであるかどうかをレポートする必要がある。実行されるチェックは、検疫ポリシークライアントによって決まる。本発明の一実施形態では、Ｗｉｎｄｏｗｓ（登録商標）に組み込まれたＱＰＣのみがＷＵＳとなる。ＷＵＳはパッチレベルをＷＵＳサーバに対してのみチェックするようになり、ＷＵＳサーバはＭｉｃｒｏｓｏｆｔ（登録商標）ＯＳパッチのみを配置する。ＱＰＳが、例えばネットワークＩＤＳなど、クライアントコンポーネントを必要とすることなくクライアントをチェックすることができる場合、システムはＱＰＳを、ＱＰＣなしに含むことが可能である。この場合、ＱＰＳはＱＣＳにＱｕａｒａｎｔｉｎｅ／Ｎｏｔ  Ｑｕａｒａｎｔｉｎｅにより応答し、ＱＰＣからのＳｏＨを必要とすることはない。このようなＱＰＣが使用されるとき、ＱＣＳはＱＰＳをコールするが、ＳｏＨを提供しない。ＱＰＳは次いで、クライアントマシンが「不健全」であると判断することができる。
【０１３８】
ＱＰＳがＱＰＣに、ＳｏＨＲｅｓｐｏｎｓｅにおいて、ＱＰＣがコンタクトするべきポリシーサーバのアドレス／名前を戻すことが推奨される。ＱＰＣは、そのポリシーサーバとのそれ自体の通信を処理し、必要とされるときに通信を再試行することが期待される。ＱＰＳがＳｏＨで障害を起こすとき、そのポリシーをそのポリシーサーバによりチェックするために、ＱＰＳがヒントをＱＰＣへ、ＳｏＨＲｅｓｐｏｎｓｅにおいて送信することが推奨される。ＱＰＣは、ポリシー構成情報を得るために使用するポリシーサーバの識別を確実にすることを担う。ＱＰＣは、ＳｏＨ情報を生成するために複数のポリシーサーバをサポートすることができる。異なるＳｏＨ情報はＱＮａｍｅ  ＧＵＩＤ毎に追跡されるべきである。これは、Ｗｉｎｄｏｗｓ（登録商標）  Ｕｐｄａｔｅからアップデートを得るように構成されるホームマシンについて当てはまる。ＱＰＣは、ＰｒｏｃｅｓｓＳｏＨＲｅｓｐｏｎｓｅがコールされるとき、それらのポリシーサーバへの接続性が使用可能であると期待するべきではない。ＩＰアドレスは、ＰｒｏｃｅｓｓＳｏＨＲｅｓｐｏｎｓｅがコールされている時間までに構成されていない可能性がある。ＱＰＣは、ＩＰアドレス通知ＡＰＩをこのために使用するべきである。ＱＰＳは、ＴｒａｎｓａｃｔｉｏｎＳｔａｔｅにおけるいかなる情報をも変更するべきではなく、これはクエリのみのためである。これは、このＣＯＭオブジェクトにおいていかなる参照カウントをも増分するべきではない。ＱＰＳは即時に、ＶａｌｉｄａｔｅＳｏＨへのいかなるコールをも戻し、これらの要求を内部でキューイングするべきである。ＱＰＳがそのポリシーサーバと通信する必要がある場合、ＱＰＳはこの通信を他のＶａｌｉｄａｔｅＳｏＨ要求と共にシリアライズするべきではない。ＱＰＳがＶａｌｉｄａｔｅＳｏＨをキューイングすることができず、次いでコールで即時に障害を起こすべきである場合、ＱＰＳは、いくつかのこれらの要求を並列にキューイングおよび処理することができると期待される。ＱＰＳはマルチスレッドアパートメントとして実施されるべきである。
【０１３９】
ＱＰＣおよびＱＰＳは、そのインターフェイスの登録などにおいて、ＣＯＭインストレーションのための標準のルールに従う必要がある。ＱＰＣおよびＱＰＳは、インストレーションにおいてＱＣＣまたはＱＣＳに通知する必要はない。ＱＣＣおよびＱＣＳは、ＱＣＣＱＰＣまたはＱＣＳＱＰＳインターフェイス上のＢｉｎｄ  ＡＰＩがコールされるとき、新しいＱＰＣまたはＱＰＳの使用を開始するようになる。ＱＰＳインストールはＲｅｇｉｓｔｅｒおよびＵｎｒｅｇｉｓｔｅｒレジストリキーを以下のように設定しなければならない。すなわち、ＱＣＳは、ＱＰＳがインストールおよびアンインストールされるとき、ＱＰＳがレジストリキーを介してＱＣＳに通知することを必要とする。ＱＣＳは、それが始動するとき、およびレジストリキーが修正されるとき、ＣｏＣｒｅａｔｅＩｎｓｔａｎｃｅを使用して、各ＱＰＳＱＣＳインターフェイスのアウトオブプロセスインスタンスを作成する。Ｒｅｇｉｓｔｅｒ（ＱＰＳ＿ＩＤ，Ｐｒｏｄｕｃｔ  ＧＵＩＤ，ＱＰＳＱＣＳ  ＣＬＳＩＤ，ＱＰＳ＿ＲＥＡＤ  ＣＬＳＩＤ）：このＡＰＩはレジストリキーとして実装される。ＱＰＳは、インストールされるとき、このレジストリキーをアップデートしなければならない。Ｕｎｒｅｇｉｓｔｅｒ（ＱＰＳ＿ＩＤ）：このＡＰＩはレジストリキーとして実装される。ＱＰＣまたはＱＰＳのアンインストレーションにおいて、レジストリ内のすべてのＣＯＭ登録情報およびすべてのファイルを含む、システム上のすべての残骸は、除去されるべきである。
【０１４０】
ＷＵＳクライアントは、クライアントがＷＵＳサーバからインストールしているべきパッチのリストを得る。ＷＵＳクライアントは、パッチがインストールされるかどうかをチェックし、そうでない場合、パッチをＷＵＳサーバまたはＷｉｎｄｏｗｓ（登録商標）ｕｐｄａｔｅ．ｃｏｍからダウンロードし、これらのパッチをインストールする。ＷＵＳは、最後の同期時間についての情報を含むマシンレコードに関連付けられる署名付きクッキーを使用して、クライアントを識別する。ＷＵＳはクライアントのＩＰアドレスをマシンレコード内で保持するが、これをルックアップのために使用しない。ＱＣＳおよびＱＣＣは、ＱＰＣおよびＱＰＳに通信チャネルを与え、ＱＰＣは、クライアントを識別するための情報をＱＰＳに送信し、状況情報をＱＰＳに供給することができる。ＱＰＳは、必要とされる場合、情報をＱＰＣに供給することができる。ＷＵＳでは、クライアントがＱＰＳチェックに失敗した場合、ＱＰＳは、ＷＵＳクライアントが使用する必要のあるＷＵＳサーバ名を供給することができる。これは、ＷＵＳクライアントがＷＵＳサーバによりプロビジョンされることを可能にする。
【０１４１】
詳細なコンポーネントの対話をこのとき、図７を参照して説明する。全体的な対話は以下の通りである。ＱＰＣはＱＣＣに、ＳｏＨが変化するかどうかを、ＱＣＣＱＰＣ−＞ＮｏｔｉｆｙＳｏＨＣｈａｎｇｅを使用して通知する。ＱＣＣは、ＳｏＨのリストが変化するとき、ＱＥＣＱＣＣ−＞ＮｏｔｉｆｙＳｏＨＣｈａｎｇｅを使用してすべてのＱＥＣに通知する。ＱＥＣがＳｏＨのリストを必要とするとき、ＱＥＣはこのリストをＱＣＣから、ＱＣＣＱＥＣ−＞ＱｕｅｒｙＳｏＨを使用して要求する。ＱＥＣはＳｏＨリストをＱＥＳへ、ＱＥＣ／ＱＥＳによって決まるメカニズムを使用して送信し、例えば、ＤＨＣＰはＤＨＣＰオプションを使用する。ＱＣＣＱＰＣ−＞ＢｉｎｄをコールしているいかなるＱＰＣに対しても、ＱＣＣはＱＰＣＱＣＣ−＞ＱｕｅｒｙＳｏＨをコールし、ＱＣＣは次いでいずれかの追加のＳｏＨをＳｏＨキャッシュから追加する。ＱＣＣは次いでこのリストをＱＥＣに戻す。ＱＥＳはＳｏＨのリストをＱＣＳへ、ＱＣＳＱＥＳ−＞ＶａｌｉｄａｔｅＳｏＨを使用して渡す。ＱＣＳはＳｏＨのリストを分割し、各ＳｏＨを正しいＱＰＳへ、ＱＰＳＱＣＳ−＞ＶａｌｉｄａｔｅＳｏＨを使用して渡す。各ＱＰＳはクライアントのＳｏＨを妥当性検査し、ＱＣＳに、ＳｏＨが正しいかどうかを戻す。ＱＰＳはオプショナルでＱＣＳに、ある情報をＱＰＣにＳｏＨＲｅｓｐｏｎｓｅバッファにおいて渡すように要求することができる。ＱＣＳは異なるＱＰＳからすべての結果を収集し、単一のＱｕａｒａｎｔｉｎｅ／Ｎｏｔ  Ｑｕａｒａｎｔｉｎｅ結果およびＳｏＨＲｅｓｐｏｎｓｅのリストを生成する。ＱＣＳはそれ自体のＳｏＨＲｅｓｐｏｎｓｅをリストに追加し、結果およびリストをＱＥＳに渡す。ＱＥＳはＱｕａｒａｎｔｉｎｅ／Ｎｏ−Ｑｕａｒａｎｔｉｎｅ結果を調べ、検疫を実施特定の方法において実施し、例えば、ＤＨＣＰはデフォルトゲートウェイを供給しない。ＱＥＳはＳｏＨＲｅｓｐｏｎｓｅのリストをＱＥＣに渡す。ＱＥＣは情報クライアントのリストをＱＣＣへ、ＱＣＣＱＥＣ−＞ＰｒｏｃｅｓｓＳｏＨＲｅｓｐｏｎｓｅを使用して渡す。ＱＣＣはＳｏＨＲｅｓｐｏｎｓｅのリストを分割し、正しいＳｏＨＲｅｓｐｏｎｓｅを正しいＱＰＣへ、ＱＰＣＱＣＣ−＞ＰｒｏｃｅｓｓＳｏＨＲｅｓｐｏｎｓｅを使用して渡す。ＱＣＣはそれ自体のＳｏＨＲｅｓｐｏｎｓｅを処理する。ＱＣＣのＳｏＨＲｅｓｐｏｎｓｅは、サーバがクライアントを検疫したかどうかについての情報を含む。ＱＣＣはＱｕａｒａｎｔｉｎｅ／Ｐｒｏｂａｔｉｏｎ／Ｎｏｔ  Ｑｕａｒａｎｔｉｎｅ情報を使用して、メッセージをユーザに表示する。ＱＥＣ／ＱＥＳを介したＱＣＣとＱＣＳの間の通信は、Ｍａｕｉにおいて保護されない。ＱＰＣ／ＱＰＳ通信はＱＰＣ／ＱＰＳによって保護される場合があるが、これは検疫プラットフォームの範囲外である。
【０１４２】
ＤＨＣＰクライアントはネットワークリソースをネットワークサーバ（ＤＨＣＰサーバ）から要求するので、ＤＨＣＰサーバはＱＰＳを含むことができる。ＱＰＣおよびＱＰＳ／ポリシーサーバ、例えば、ＳＭＳまたはＷＵＳは、クライアントのためのポリシーをサーバからクライアントへ通信するようになる。ＱＰＣはサーバを、管理上定義された間隔でポーリングして、アップデートがあるかどうかを確かめるようになる。ＱＰＣは、マシンのＳｏＨが変化するときは常に、ＱＣＣに通知するようになる。ＱＣＣは、ＳｏＨが変化しているときは常に、すべてのＱＥＣに通知する。ＱＥＣ（ＤＨＣＰクライアント）がＩＰアドレスまたはＩＰアドレスの更新を要求するとき、ＱＥＣはＳｏＨをＱＰＣおよびＳｏＨキャッシュから得て、これをＤＨＣＰサーバへ、１つまたは複数のＤＨＣＰオプションを使用して渡す。ＱＥＳ（ＤＨＣＰサーバ）はＳｏＨのリストをＱＣＳに与え、ＱＣＳは各ＳｏＨを正しいＱＰＳに渡す。各ＱＰＳはそのポリシーサーバにコンタクトして、クライアントのためのＳｏＨが正しく、そのクライアントについて現在のものであること、例えば、このクライアント上にインストールされるべきパッチがないことを、妥当性検査することができる。クライアントが現在の正しいものである場合、ＱＰＳは成功をＱＣＳに戻す。すべてのＱＰＳが成功をＱＣＳに戻す場合、ＱＣＳは成功をＤＨＣＰサーバに戻す。ＤＨＣＰサーバは次いで、正しいＤＨＣＰオプションをＤＨＣＰクライアントに戻す。ＤＨＣＰサーバは常に、Ｄｉｓｃｏｖｅｒ、ＲｅｑｕｅｓｔまたはＩｎｆｏｒｍメッセージを受信すると、そのメッセージがＳｏＨ  ＤＨＣＰオプションを含むかどうかにかかわらず、ＱＣＳをコールするようになる。これは、検疫をサポートしないクライアントの処理方法をＱＣＳが決定することを可能にする。ＤＨＣＰ  ＱＥＣは、非検疫可能ＤＨＣＰサーバと通信するとき、機能しなければならない。これは、クライアントが非検疫可能ネットワーク上で機能することを可能にするためである。
【０１４３】
ＰＥＡＰ  ＱＥＣは、検疫可能ＲＡＤＩＵＳサーバと通信中でないときに機能しなければならない。これは、クライアントが非検疫可能ネットワーク上で機能することを可能にするためである。ＰＥＡＰ  ＱＥＣは、ＳｏＨをＲＡＤＩＵＳ  ＱＥＳに供給することを必要とするとき、ＱｕｅｒｙＳｏＨをコールする。これが発生するときは、その上でＰＥＡＰが実行中であるメディアによって決まり、すなわち、ＶＰＮ：ＰＥＡＰは、ＶＰＮトンネルがセットアップされるときにコールされる。ＶＰＮはＰＥＡＰを再実行しない。８０２．１Ｘ：ＰＥＡＰは、８０２．１ＸがＮＡＳへ認証または再認証する必要があるときにコールされる。これは、通信中に複数回、発生する場合がある。ＩＰｓｅｃクライアントはネットワークリソースを別のクライアントから直接要求するので、ピアＩＰｓｅｃクライアントはＱＰＳを直接使用することができない。ＱＣＣは検疫サーバを使用して、ＢｏＨを得なければならない。ＢｏＨはいくつかの形態を取ることができ、すなわち、要求側サーバによりＩＰｓｅｃ  ＳＡを確立するために使用されたＫｅｒｂｅｒｏｓチケットであり、Ｋｅｒｂｅｒｏｓチケットは、グループ（いわゆるクリーングループ）内のそのメンバシップに基づいてマシンに適用されたグループポリシーオブジェクト（ＧＰＯ）に、または、既存の障害のないマシンアカウントに結合される場合がある。ＩＰＳｅｃ  ＳＡを確立するために使用されたＸ．５０９またはＸＲＭＬ証明書。ＳＡの確立を管理するＩＰＳｅｃポリシーは、ＢｏＨと共にｐｌｕｍｂされ、それがもはやポリシーに準拠しないなど、その状態が変化する場合、クライアントによってｕｎｐｌｕｍｂされなければならない。
【０１４４】
クライアントがプロベーション中である場合、Ｘ．５０９またはＸＲＭＬ証明書はプロベーション期間中にのみ有効である。クライアントがプロベーション中であり、クリーングループが使用されてＫｅｒｂｅｒｏｓチケットの配布が管理される場合、２つの要件がサポートされなければならない。Ｋｅｒｂｅｒｏｓチケットは、プロベーション期間よりも長く有効であってはならない。プロベーションが満了するとき、クライアントがアップデートされたＳｏＨを提供していない場合、ＱＥＳは適切な処置を取り、クライアントをクリーングループから除去しなければならない。ＱＰＣおよびＱＰＳ／ポリシーサーバ、例えばＳＭＳまたはＷＵＳは、クライアントのためのポリシーをサーバからクライアントへ通信するようになる。ＱＰＣはサーバを周期的にポーリングして、アップデートがあるかどうかを確かめるようになる。ＱＰＣは、マシンの「ヘルスの状態」が変化するときは常に、ＳｏＨをＱＣＣにパブリッシュするようになる。ＱＣＣは、ＳｏＨを各ＱＰＣからＳｏＨのリストに収集するようになる。ＱＣＣは、ＳｏＨが変化しているときは常に、すべてのＱＥＣに通知する。ＱＳクライアントＱＥＣは、この通知を受信すると、ＳｏＨのリストを得て、これを検疫サーバＱＥＳに送信する。検疫サーバＱＥＳはＳｏＨのリストをＱＣＳに与え、ＱＣＳは各ＳｏＨを正しいＱＰＳに渡す。各ＱＰＳはそのポリシーサーバにコンタクトして、クライアントのためのＳｏＨが正しく、そのクライアントについて現在のものであること、例えば、このクライアント上にインストールされるべきパッチがないことを、妥当性検査することができる。クライアントが現在の正しいものである場合、ＱＰＳは成功をＱＣＳに戻す。すべてのＱＰＳが成功をＱＣＳに戻す場合、ＱＣＳは成功を検疫サーバＱＥＳに戻す。証明書が使用されてＩＰｓｅｃ  ＳＡが確立される場合、検疫サーバＱＥＳは、ＱＣＳがＱＥＳに成功を戻した場合、ＢｏＨをＱＳ  ＱＥＣに戻す。ＱＳ  ＱＥＣは次いでＢｏＨをＱＣＣに戻し、ＱＣＣはこれをキャッシュする。クリーングループが使用される場合、ＱＥＳはクライアントをクリーングループに追加し、ＱＵＡＲ＿ＳＵＣＣＥＳＳをクライアントに戻すようになる。
【０１４５】
これがこの特定のクライアントの最初の妥当性検査である場合、クライアントはこのとき前進し、ＴＧＴをＴＧＳから要求することができる。クライアントがすでにＴＧＴを有しており、クライアントがポリシーチェックで失敗する場合、ＱＥＳはクライアントをクリーングループから除去し、ＴＧＳに、このクライアントがもはやポリシーに準拠しないことを通知しなければならない。ＴＧＴがポリシー準拠の妥当性を超えて有効でないこと、およびよって、そのＴＧＴから発行されたＳＧＴはその期間を超えて有効でないことが強く推奨される。ＱＣＣは次いですべてのＱＥＣに、ＢｏＨが変化しているという通知を送信する。ＩＰｓｅｃが、ＩＫＥ  ＳＡをピアにセットアップすることを要求されるとき、ＩＰｓｅｃはＢｏＨをＢｏＨキャッシュから得て、ＢｏＨを表現するために証明書が使用される場合、ＢｏＨをピアＩＰｓｅｃに渡す。クリーングループが使用される場合、クライアントはＴＧＴを使用して通常の方法でＳＧＴを要求し、次いで、チケットを使用してＳＡを確立するようになる。ピアＩＰｓｅｃはＢｏＨ／チケットをＱＣＳに渡し、ＱＣＳはこれを妥当性検査して、成功をピアＩＰｓｅｃに戻し、ピアＩＰｓｅｃは次いでリモートＩＫＥ通信を受け入れる。
【０１４６】
本発明の様々な実施形態の前述の説明は、例示および説明のために提示された。これは網羅的であるように、または、本発明を、開示された正確な実施形態に限定するように意図されない。多数の修正または変形形態は、上記の教示に照らして可能である。論じた実施形態は、本発明の原理の最良の例示およびその実際的な応用例を提供し、それにより当業者が本発明を様々な実施形態において、企図された特定の使用に適するような様々な修正と共に利用することができるようにするために、選択および説明された。このようなすべての修正および変形形態は、付属の特許請求の範囲が適正に、法的に、公正に権利を与えられる幅に従って解釈されるとき、付属の特許請求の範囲によって決定されるような本発明の範囲内である。
【図面の簡単な説明】
【０１４７】
【図１Ａ】それに渡って本発明が動作する例示的ネットワーク環境を全体的に例示する概略図である。
【図１Ｂ】本発明が存在する例示的コンピュータシステムを全体的に例示するブロック図である。
【図２】本発明のコンポーネントの図式的概観の図である。
【図３】本発明の一実施形態によるヘルス証明書を獲得する方法を例示する図である。
【図４】本発明の一実施形態のソフトウェアコンポーネントを例示する図である。
【図５】本発明の一実施形態による、クライアントがサーバと通信する方法を例示する図である。
【図６】本発明の一実施形態のコンポーネントの例示的対話を例示する図である。
【図７】本発明の一実施形態によるクライアント／サーバアーキテクチャを例示する図である。
【図８】ＤＨＣＰを使用する本発明の一実施形態を例示する図である。
【図９】ＩＰｓｅｃを使用する本発明の一実施形態を例示する図である。
【図１０】複数のＤＨＣＰサーバを使用してクライアントをプロビジョンする、本発明の一実施形態を例示する図である。
【符号の説明】
【０１４８】
４１０  検疫ポリシークライアント（ＱＰＣ）
４２０  検疫調整クライアント（ＱＣＣ）
４３０  検疫実施側クライアント（ＱＥＣ）
４５０  検疫実施サーバ（ＱＥＳ）
５２０  検疫ポリシーサーバ（ＱＰＳ）
５３０  検疫調整サーバ管理ＩＦ（ＱＣＳ）
【図１Ａ】
2005318615.tif 000003
【図１Ｂ】
2005318615.tif 000004
【図２】
2005318615.tif 000005
【図３】
2005318615.tif 000006
【図４】
2005318615.tif 000007
【図５】
2005318615.tif 000008
【図６】
2005318615.tif 000009
【図７】
2005318615.tif 000010
【図８】
2005318615.tif 000011
【図９】
2005318615.tif 000012
【図１０】
2005318615.tif 000013
【外国語明細書】
2005318615000001.pdf