(57)【特許請求の範囲】
【請求項１】
クライアント計算装置を動作させる方法であって、前記クライアント計算装置によって実行されるステップが、
（Ａ）ネットワークリソースの第１の識別子を入力として受信するステップと、
（Ｂ）前記第１の識別子に適用される適用可能な解決パラメーターの組を決定するために解決パラメーターの組の集合を調べるステップであって、前記ネットワークリソースの前記第１の識別子を、解決パラメーターの各組が前記第１の識別子に適用されるか否かを決定するために前記集合中の前記解決パラメーターの組の各々に関連付けられるパターンと比較するステップを含む、ステップと、
（Ｃ）前記適用可能な解決パラメーターの組を使用して、前記ネットワークリソースの第２の識別子を取得するステップと、
（Ｄ）前記第２の識別子、及びキャッシュにおいて前記第２の識別子と関連付けられる、前記第２の識別子を取得するために前記ステップ（Ｃ）において使用される前記適用可能な解決パラメーターの組の少なくとも１つの識別子を、前記キャッシュに格納するステップと
を含む方法。
【請求項２】
前記適用可能な解決パラメーターの組の前記少なくとも１つの識別子は前記第２の識別子が取得された時間を含む請求項１に記載の方法。
【請求項３】
前記ステップ（Ｃ）は、
（Ｃｌ）前記適用可能な解決パラメーターの組の少なくとも１つのパラメーターによって指定された暗号化プロトコルによって通信チャネルを暗号化するために、前記適用可能な解決パラメーターの組を使用するステップを含む請求項１に記載の方法。
【請求項４】
前記ステップ（Ｃ）は、
（Ｃｌ）前記適用可能な解決パラメーターの組の少なくとも１つのパラメーターによって指定された解決リソースに対する通信チャネルを確立するために、前記適用可能な解決パラメーターの組を使用するステップを含む請求項１に記載の方法。
【請求項５】
実行されるとクライアント計算装置に方法を行わせるコンピューター実行可能命令で符号化された少なくとも１つのコンピューター読み取り可能な記憶媒体であって、前記方法は、
（Ａ）ネットワークリソースの第１の識別子を入力として受信するステップと、
（Ｂ）前記第１の識別子に適用される適用可能な解決パラメーターの組を決定するために、解決パラメーターの組の集合を調べるステップであって、前記ネットワークリソースの前記第１の識別子を、解決パラメーターの各組が前記第１の識別子に適用されるか否かを決定するために前記集合中の前記解決パラメーターの組の各々に関連付けられるパターンと比較するステップを含む、ステップと、
（Ｃ）前記第１の識別子に対応する第２の識別子がキャッシュに存在するか否かを決定するために識別子のキャッシュの内容をレビューするステップであって、前記キャッシュは、前記キャッシュ中の各識別子について、対応する識別子と、前記対応する識別子が取得された格納された解決パラメーターとを含む、レビューするステップと、
（Ｄ）前記第１の識別子に対応する前記第２の識別子が対応する識別子として前記キャッシュ内に存在し、格納された解決パラメーターに関連付けられる場合、前記第２の識別子が取得された前記格納された解決パラメーターを、前記適用可能な解決パラメーターの組と比較するステップと、
（Ｅ）前記格納された解決パラメーターが前記適用可能な解決パラメーターの組と一致する場合、前記キャッシュから前記第２の識別子を返すステップと
を含む、少なくとも１つのコンピューター読み取り可能な記憶媒体。
【請求項６】
前記方法は、
（Ｆ）前記キャッシュ内の前記第２の識別子についての前記格納された解決パラメーターが前記適用可能な解決パラメーターの組と一致しない場合、ネットワークを介して前記ネットワークリソースの前記第２の識別子を取得するステップであって、前記第１の識別子に基づいて前記ネットワークリソースの前記第２の識別子を決定するために前記ネットワークを介して名前解決処理を行うステップを含み、前記名前解決処理は前記適用可能な解決パラメーターの組によって管理される、取得するステップをさらに含む請求項５に記載の少なくとも１つのコンピューター読み取り可能な記憶媒体。
【請求項７】
前記キャッシュ内の前記第２の識別子についての前記格納された解決パラメーターを前記適用可能な解決パラメーターの組と比較する前記ステップ（Ｄ）は、
（Ｄｌ）前記キャッシュ内の前記第２の識別子についての前記格納された解決パラメーターが前記適用可能な解決パラメーターの組と正確に一致するか否かを決定するステップを含む請求項５に記載の少なくとも１つのコンピューター読み取り可能な記憶媒体。
【請求項８】
前記ステップ（Ｄｌ）は、
（Ｄ２）前記適用可能な解決パラメーターの組が、前記キャッシュの前記第２の識別子が取得された時以来不変であったか否かを決定するステップを含む請求項７に記載の少なくとも１つのコンピューター読み取り可能な記憶媒体。
【請求項９】
前記キャッシュ内の前記第２の識別子についての前記格納された解決パラメーターを前記適用可能な解決パラメーターの組と比較する前記ステップ（Ｄ）は、
（Ｄｌ）前記キャッシュ内の前記第２の識別子についての前記格納された解決パラメーターが前記適用可能な解決パラメーターの組と少なくとも同じくらい安全であるか否かを決定するステップを含む請求項５に記載の少なくとも１つのコンピューター読み取り可能な記憶媒体。
【請求項１０】
前記キャッシュにおいて、第１の対応する識別子が取得された格納された解決パラメーターは、前記キャッシュ中に格納された前記第１の対応する識別子を取得するために使用される解決パラメーターの組の少なくとも１つの識別子を含む請求項５に記載の少なくとも１つのコンピューター読み取り可能な記憶媒体。
【請求項１１】
前記解決パラメーターの前記少なくとも１つの識別子は前記キャッシュに格納された前記第１の対応する識別子が取得された時間である請求項１０に記載の少なくとも１つのコンピューター読み取り可能な記憶媒体。
【請求項１２】
前記第１の識別子はテキスト識別子であり、前記第２の識別子は数値識別子である請求項５に記載の少なくとも１つのコンピューター読み取り可能な記憶媒体。
【請求項１３】
ネットワークリソースの第２の識別子と、前記第２の識別子を取り出すために使用された解決パラメーターの組の少なくとも１つの識別子とを含むデータ構造の複数のインスタンスを格納するように構成された少なくとも１つの有形のコンピューター読み取り可能な記憶媒体と、
名前解決処理を実行するように構成された少なくとも１つのプロセッサーと
を具備するクライアント計算装置であって、前記名前解決処理は、
ネットワークリソースの第１の識別子を受信するステップと、
解決処理を管理するための適用可能な解決パラメーターの組を決定するステップであって、解決パラメーターの組の集合中の解決パラメーターの各組が前記第１の識別子に適用されるか否かを決定するために、前記第１の識別子を解決パラメーターの組の各々に関連付けられるパターンと比較するステップを含む、ステップと、
前記第２の識別子のいずれかが前記第１の識別子に対応するか否かを決定するために前記データ構造の前記複数のインスタンスをレビューするステップと、
前記第２の識別子のいずれかが前記第１の識別子に対応する場合、前記第２の識別子を取り出すのに使用される前記解決パラメーターの組の少なくとも１つの識別子が前記適用可能な解決パラメーターの組と一致するか否かを決定するステップと、
前記格納された解決パラメーターが前記適用可能な解決パラメーターの組と一致する場合、前記少なくとも１つの有形のコンピューター読み取り可能な記憶媒体内のキャッシュから前記第２の識別子を返すステップと
を含む、クライアント計算装置。
【請求項１４】
前記名前解決処理は、
（Ｆ）前記格納された解決パラメーターが前記適用可能な解決パラメーターの組と一致しない場合、ネットワークを介して前記ネットワークリソースの前記第２の識別子を取得するステップであって、前記第１の識別子に基づいて前記第１の識別子に対応する前記第２の識別子を決定するために名前解決処理を実行するステップを含み、前記名前解決処理は前記適用可能な解決パラメーターの組によって管理される、取得するステップをさらに含む請求項１３に記載のクライアント計算装置。
【請求項１５】
前記データ構造のインスタンスにおいて、前記格納された解決パラメーターの前記少なくとも１つの識別子は、前記データ構造のインスタンスに格納された前記第２の識別子を取り出すために使用される解決パラメーターの組を含む請求項１３に記載のクライアント計算装置。
【請求項１６】
格納された解決パラメーターの少なくとも１つの識別子が適用可能な解決パラメーターの組と一致するか否かを決定する前記ステップは、前記格納された解決パラメーターが前記適用可能な解決パラメーターの組と正確に一致するか否かを決定するステップを含む請求項１３に記載のクライアント計算装置。
【請求項１７】
格納された解決パラメーターの少なくとも１つの識別子が適用可能な解決パラメーターの組と一致するか否かを決定する前記ステップは、前記適用可能な解決パラメーターの組が、前記第２の識別子が取り出された時以来不変であったか否かを決定するステップを含む請求項１６に記載のクライアント計算装置。
【請求項１８】
前記第１の識別子はテキスト識別子であり、前記第２の識別子は数値識別子である請求項１３に記載のクライアント計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本発明は名前解決技術に関する。
【背景技術】
【０００２】
コンピューター通信ネットワークにおいては、幾つかの異なる技術がネットワークを介してアクセス可能なリソース（資源）の識別のために使用され得る。これらのリソースは、クライアント及びサーバー計算装置などのネットワークに接続されたホストのほか、ルーター、ゲートウェイ、ファイアウォールその他などのネットワークのリソースを含み得る。１つの技術において、リソースは、メディア・アクセス制御（ＭＡＣ）アドレス又はインターネット・プロトコル（ＩＰ）アドレスなどの１つ以上の識別番号によって識別されてもよい。しかし、これらのアドレスがコンピューター間の通信に役立つ一方、そのような識別番号をユーザーが思い出すことはしばしば困難であり、この困難がユーザーにネットワークリソースにアクセスすることを思いとどまらせ得ることが認識されてきた。したがって、リソースはまた、ユーザーによってより容易に思い出されるテキスト識別子（textual identifiers）によってさらに又は代替的に識別されてもよい。リソースを識別するためのテキスト識別子を実施する技術は、ＮｅｔＢＩＯＳ、ローカル・リンク・マルチキャスト名前解決（ＬＬＭＮＲ）及びドメイン・ネーム・システム（ＤＮＳ）を含む。
【０００３】
[0002]そのようなテキスト識別子を提供する技術はまた、ユーザーが容易に思い出すテキスト識別子を、計算装置にとって処理することがより容易である数値識別子（numeric identifier）に一致させる（逆もまた同様である）変換（翻訳）サービスを提供してもよい。例えば、ＤＮＳにおいて、そのドメイン・ネームによって識別されるリソースとの通信を開始するために、ユーザーが計算装置へテキスト識別子（ＤＮＳにおける「ドメイン・ネーム」）を入力する場合、計算装置上のＤＮＳクライアントは、ドメイン・ネームをＩＰアドレスへ「転換する（resolve）」ためにＤＮＳサーバーに問合せを行う。ＤＮＳサーバーは、クエリー（問合せ）を受信すると、ローカルに利用可能な情報によって、又は他のＤＮＳサーバーに問合せを行うことによって、ドメイン・ネームに対応するＩＰアドレスを見つけ、ＤＮＳクライアントに当該ＩＰアドレスを返す。その後、計算装置は、ＩＰアドレスを使用してリソースとの通信を開始することができる。
【０００４】
[0003]幾つかのそのような名前解決技術が悪用され得ることが認識されてきた。例えば、ＤＮＳにおいて、攻撃者は、ＤＮＳサーバーが正当なＩＰアドレスをもって応答する前に、攻撃者のリソースのＩＰアドレスによってＤＮＳクエリーに応答することにより、攻撃者自身のリソース（例えば、攻撃者のサーバー）へ計算装置を誤って導くことができるかもしれない。その後、計算装置は誤って導かれ、正当なリソースではなく攻撃者のリソースに接続する。その後、攻撃者のリソースに接続される間、計算装置は攻撃者に対してデータを開示したり、攻撃者から偽りのデータやマルウェアを受信するかもしれない。
【０００５】
[0004]例えば、ランダム化された識別子をＤＮＳクエリーの各々に含め、クエリーに対する応答にそれらが含まれることを要求することによって、このシナリオの可能性を減少させるために幾つかのセキュリティ技術が実施されてきており、これによって、攻撃者がクエリーのランダム化された識別子を推測又は検出することができない限り、攻撃者がいたずらのアドレスによって応答することを防止することになる。これらのセキュリティ上の問題を解決するために提案された１つのセキュリティ技術は、ＤＮＳによって実施される、ドメイン・ネーム・システム・セキュリティ拡張（ＤＮＳＳＥＣ）プロトコルである。結果を正確なものとして確認することができるように、ＤＮＳＳＥＣは、証明（認証）機関（ＣＡ）によるＤＮＳ結果のデジタル署名を提供する。さらに、インターネット・プロトコル・セキュリティ（ＩＰｓｅｃ）プロトコルとともにＤＮＳ又はＤＮＳＳＥＣを使用することが、ＤＮＳクライアントとＤＮＳサーバーとの間の通信の暗号化及び／又は認証を可能にすべく提案されてきた。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
[0005]出願人は、名前解決処理の安全性又は他の側面を制御するために解決パラメーターの組を受け取る、計算装置における名前解決モジュールによって、ＤＮＳを含む従来の名前解決技術の安全性が改善され得ることを認識し理解した。
【課題を解決するための手段】
【０００７】
名前解決システムの効率的な動作は以前に解決された識別子のキャッシュにより向上される。例えば、名前解決モジュールがテキスト識別子を入力として受信し、対応する数値識別子を取得する場合、数値識別子はキャッシュに格納されてもよく、キャッシュ中の当該識別子は新たな要求に応答するために使用されてもよい。以前に解決された識別子を格納することに加えて、キャッシュは、それらの識別子が解決されたパラメーターを格納してもよく、当該パラメーターはキャッシュ中の識別子の有効性及び安全性を決定するために後に使用されてもよい。そのような実施例において、キャッシュに入れられた情報が識別子を解決するために使用される前に、キャッシュに入れられた識別子が解決されたパラメーターが入力識別子の解決のために指定された現在のパラメーターと一致するかどうかを決定するためにチェックがなされてもよい。例えば、キャッシュに入れられたパラメーターが現在のパラメーターと少なくとも同じくらい強い安全性を提供するかどうかが決定されてもよい。キャッシュに入れられた識別子が取り出された（検索された）パラメーターが新たな要求のために必要とされるパラメーターと少なくとも同じくらい安全（セキュア）な場合、当該識別子がキャッシュから返されてもよい。
【０００８】
[0006]幾つかの実施例において、ネットワークリソースの第１の識別子を入力として受信するステップと、第１の識別子に適用される適用可能な解決パラメーターの組を決定するために解決パラメーターの組の集合を調べるステップと、適用可能な解決パラメーターの組を使用してネットワークリソースの第２の識別子を得るステップとを含む方法が提供される。本方法は、第２の識別子と、当該第２の識別子を得る際に使用される適用可能な解決パラメーターの組についての少なくとも１つの識別子とを、キャッシュに格納するステップをさらに含む。
【０００９】
[0007]他の実施例において、実行されるとコンピューターに方法を行わせるコンピューター実行可能命令で符号化された少なくとも１つのコンピューター読み取り可能な記憶媒体が提供される。当該方法は、ネットワークリソースの第１の識別子を入力として受信するステップと、第１の識別子に適用される適用可能な解決パラメーターの組を決定するために解決パラメーターの組の集合を調べるステップと、第１の識別子に対応する第２の識別子がキャッシュ中に存在するか否かを決定するために識別子のキャッシュの内容をレビューする（読み取る、見直す、review）ステップとを含む。キャッシュは、キャッシュ中の各識別子について、第２の識別子が得られた格納された解決パラメーターを含む。本方法は、第２の識別子が存在する場合、第２の識別子が得られた格納された解決パラメーターを適用可能な解決パラメーターの組と比較するステップと、格納された解決パラメーターが適用可能な解決パラメーターの組と一致する場合、キャッシュから第２の識別子を返すステップとをさらに含む。
【００１０】
[0008]また、さらなる実施例において、ネットワークリソースの第２の識別子及び当該第２の識別子を取り出す（検索する）ために使用された解決パラメーターの組の少なくとも１つの識別子を含むデータ構造の複数のインスタンスを格納するように構成された、少なくとも１つの有形のコンピューター読み取り可能な記憶媒体、及び、名前解決処理を実行するように構成された少なくとも１つのプロセッサーを備える装置が提供される。名前解決処理は、ネットワークリソースの第１の識別子を受信するステップと、解決処理を管理するために適用可能な解決パラメーターの組を決定するステップと、第２の識別子のうちのいずれかが第１の識別子に対応するか否かを決定するためにデータ構造の複数のインスタンスをレビューするステップとを含む。当該処理は、第２の識別子のうちのいずれかが第１の識別子に対応する場合、第２の識別子を取り出すのに使用された解決パラメーターの組の少なくとも１つの識別子が適用可能な解決パラメーターの組と一致するか否かを決定するステップと、格納された解決パラメーターが適用可能な解決パラメーターの組と一致する場合、キャッシュから第２の識別子を返すステップとをさらに含む。
【００１１】
[0009]前述のものは本発明の限定的でない概要であり、本発明は添付の特許請求の範囲によって規定される。
【００１２】
[0010]添付の図面は縮尺どおりに描かれるようには意図されない。図面においては、様々な図中に示される同一又はほぼ同一のコンポーネントの各々は同様の数字によって表される。明瞭にするために、すべての図面においてすべてのコンポーネントがラベル付けされなくともよい。
【図面の簡単な説明】
【００１３】
【図１】[0011]本明細書に記載された原理のうちの幾つかによって動作する技術が作用し得る例示的なコンピューター・システムを示す。
【図２Ａ】[0012]本明細書に記載された原理のうちの幾つかによって実施され得る例示的な解決パラメーターのテーブルを示す。
【図２Ｂ】本明細書に記載された原理のうちの幾つかによって実施され得る例示的な解決パラメーターのテーブルを示す。
【図３】[0013]本明細書に記載された原理のうちの幾つかによって実施され得る名前解決を行う例示的な処理のフローチャートである。
【図４】[0014]本明細書に記載された原理のうちの幾つかによって実施され得る１組の適用可能な解決パラメーターを識別する例示的な処理のフローチャートである。
【図５】[0015]本明細書に記載された原理のうちの幾つかによって実施され得る、数値識別子へテキスト識別子を転換する例示的な処理のフローチャートである。
【図６】[0016]本明細書に記載された原理のうちの幾つかによって実施され得る名前解決処理の結果として、キャッシュに格納された識別子が返されてもよいかどうかを決定する例示的な処理のフローチャートである。
【図７】[0017]本明細書に記載された原理のうちの幾つかによって実施され得る解決パラメーターの組を確立する例示的な処理のフローチャートである。
【図８】[0018]解決パラメーターが入力され得る例示的なユーザー・インターフェースを示す。
【図９】[0019]本明細書に記載された原理のうちの幾つかによって動作する技術を実施し得る例示的な計算装置のコンポーネントのブロック図である。
【図１０】[0020]本明細書に記載された原理によって動作する技術の１つ以上に従って実施され得るモジュールの相互動作性の例示的な方法の図である。
【発明を実施するための形態】
【００１４】
[0021]出願人は、ＤＮＳを含む従来の名前解決技術のセキュリティが改善され得ることを認識し理解した。さらに、従来の名前解決技術は、単一のネットワークインターフェース及びネットワーク・ハードウェアの単一の組を介して幾つかのネットワークに接続するための方法で動作するように設計されておらず、したがって、オーバーレイ・ネットワークの成長が抑止される。
【００１５】
[0022]例えば、ＤＮＳＳＥＣはＤＮＳクエリーの結果が正当であることを保証するために提案されているが、それは多数が受け入れられないと分かった２つの条件に依存する。第１に、ＤＮＳＳＥＣを扱うために、ＤＮＳクエリーに応答することに関与するＤＮＳサーバーの各々（それらは異なる位置にあってもよく、異なるパーティによって管理され得る）を実施しなければならず、それは、全体のインターネットに対するロールアウト（公表）を困難にする。第２に、ＤＮＳクライアントは、正常なＤＮＳでのようにクエリーの解決に対するほとんどの責任をフル・リゾルバー（full resolver）（ＤＮＳサーバー）へ渡す「スタブ・リゾルバー（stub resolver）」ではなく、フル・リゾルバーとして実質的に働く必要がある。結果に署名する際に使用される証明書を発行した証明機関（ＣＡ）が信頼されるべきものかどうか判断するために結果についてデジタル署名を検査することにより、ＤＮＳクライアントに返された結果の各々が正当で正しいことを保証することに対してＤＮＳクライアントが責任をもつことになるので、このことは、クライアントに対して処理を追加した。ＤＮＳクライアントを実行するクライアント計算装置にこの責任を置くことは、計算装置に過度な負担をかける危険を有しており、これはパーソナル・デジタル・アシスタント（ＰＤＡ）及び携帯電話などのそれほど強力でない計算装置において特に懸念される。クライアントからこの負担を取り除くために、それはサーバー又は他のネットワークリソースに置かれてもよい。
【００１６】
[0023]さらに、従来の名前解決技術はオーバーレイ・ネットワークが存在し得る状況で動作するようには構成されていない。過去においては、計算装置は専用のネットワークインターフェースによって各ネットワークに接続され、そのネットワークインターフェースは、ユーザーによって構成され、及び／又は、ネットワークによって実施される名前解決技術をサポートするためのインターフェースを構成することを含む、ネットワークとの相互作用のための各ネットワーク上の装置によって構成された。例えば、ラップトップなどの計算装置が有線ネットワークに接続される場合、ネットワーク上のダイナミック・ホスト・コンフィギュレーション・プロトコル（ＤＨＣＰ）サーバーは、構成パラメーターの中で特に、ＩＰアドレス、ゲートウェイの識別子及びＤＮＳサーバーの識別子を計算装置に提供していた。テキスト識別子を使用したそのインターフェースを介した如何なる通信も、その後、ＤＮＳサーバーによって解決された。計算装置が異なるネットワークに接続したり異なる名前解決技術を使用したりすることを望んだならば、別個のインターフェースが構成されなければならなかった。例えば、第２の有線インターフェースを使用したり、又は無線インターフェースを使用したりすることがあり得た。
【００１７】
[0024]出願人は、現在のネットワークにおいて、「オーバーレイ」ネットワークがより一般的になっていることを認識し理解している。これらのオーバーレイ・ネットワークは同じハードウェア上で既存のネットワークと共存するように構成され、既存のハードウェア・ネットワークの上の論理的なオーバーレイである。オーバーレイ・ネットワークに接続されたネットワーク装置の各々もまた、既存のローカルエリアネットワーク及び／又は既存の広域ネットワークのような１つ以上の既存のハードウェア・ネットワークに接続される。そのようなオーバーレイ・ネットワークは、例えば、マイクロソフト・ダイレクト・アクセスを使用して、様々な方法のうちの任意のものにおいて実施され得る。したがって、オーバーレイ・ネットワークは１つ以上の他のネットワークの制限されたサブグループと考えられてもよい。
【００１８】
[0025]これらの技術を使用すると、所与のハードウェア・ネットワークに接続する計算装置は、したがって、単一のインターフェースを介して基本的なネットワーク及び１つ以上のオーバーレイ・ネットワークを含む複数のネットワークに同時に接続することができる。計算装置（例えば、ＤＮＳサーバー）が名前解決のために通信するべき名前解決プロトコルの種類又はネットワークリソースが、基本的なネットワークの名前解決技術と比較してオーバーレイ・ネットワークにとっては異なってもよいので、従来の名前解決技術はそのようなネットワークをサポートすることができない。さらに、幾つかのネットワークが、そのネットワーク上の幾つかのリソースにアクセスする方法−例えば、ある保護されたサーバー又は他のネットワークリソースの位置／識別−についての幾つかの情報を秘密にして、その情報が潜在的な攻撃者に与えられえることを避けることができるので、特定のサーバー又は他のリソースは、名前解決クエリーの所望の結果の唯一の可能なソースとなり得る。代替的に、特定のネットワークリソースは、オーバーレイ・ネットワークの外部で知られていないか、又はオーバーレイ・ネットワークの外部の別のリソースのテキスト識別子の複製である識別子を有していてもよく、特定のサーバー又は他のリソースは、特定のネットワークリソースにとって名前解決クエリーの所望の結果の唯一の可能なソースであってもよい。したがって、名前解決処理中に計算装置が特定のサーバー又は他のリソースとコンタクトすることが必要かもしれず、これは、たとえオーバーレイ・ネットワークが同じ名前解決技術を使用するとしても、オーバーレイ・ネットワーク上の通信について、基本的なハードウェア・ネットワークとは異なっていてもよい。このため、計算装置がオーバーレイ・ネットワークの各々と通信できるように、計算装置の１つのネットワークインターフェースが、複数のオーバーレイ・ネットワークの各々についてＤＮＳサーバーの複数のアドレスを保持することが必要となり得る。これは、従来の計算装置、ネットワーキング技術及び名前解決技術では可能ではない。
【００１９】
[0026]名前解決技術を安全なものとし、単一ネットワークインターフェースを介してアクセス可能な複数のオーバーレイ・ネットワークを有する現在のネットワークにおいて名前解決技術が機能できることを保証するための原理が本明細書に記載される。幾つかの実施例において、エンドユーザー及び／又は管理者などのユーザーは、インターフェースによってアクセス可能なネットワークの名前解決技術を使用して名前を解決するために、計算装置の１つの、幾つかの又はすべてのネットワークインターフェースによる使用のために計算装置に適用され得る解決パラメーターの組を編集（コンパイル）してもよい。その後、これらの解決パラメーターは、インターフェースによって行われた名前解決処理を管理してもよい。例えば、幾つかのそのような実施例において、他の名前解決技術並びに他の種類のネットワーク及びセキュリティ技術が使用されてもよいことが認識されるべきであるが、解決パラメーターはＤＮＳＳＥＣパラメーター及び／又は直接（ダイレクト）アクセスに関するパラメーターを指定してもよい。これらの解決パラメーターは、例えば、名前解決モジュールによって検討されて名前解決クエリーを組み立てるために使用され得る規則のテーブルに、任意の方法で格納されてもよい。
【００２０】
[0027]解決パラメーターは、名前解決処理を行う方法についての如何なる適切な情報を含んでもよい。さらに、使用される特定のパラメーターは、名前解決が求められるネットワークの種類に依存してもよい。例えば、ＤＮＳＳＥＣが名前解決技術として使用されるネットワークについて、パラメーターは、どのドメインに解決パラメーターが適用されるか、サーバーが応答を認証したことを確認すべきか否か、サーバーと通信する際に暗号化を使用すべきか否か、どの種類の暗号化を使用すべきか、結果に署名するためにどの証明機関を信頼すべきか、及び、どのＤＮＳサーバーが結果について問い合わせられるべきかなどの、セキュリティパラメーターを含み得る。別の例として、ダイレクト・アクセスを使用して実施されるものなど、オーバーレイ・ネットワークについて、どのネットワーク／ドメインに対して解決パラメーターが適用されるか、どのＤＮＳサーバーが結果について問い合わせられるべきか、暗号化が使用されるべきか、どの種類の暗号化が使用されるべきか、結果に署名するためにどの証明機関を信頼すべきか、及び、オーバーレイ・ネットワークと通信するときにどのプロキシー・サーバーが使用されるべきかなど、解決パラメーターが実施される。如何なる適切な解決パラメーターも、それらが実施され得るネットワーク及び名前解決技術に依存して使用することができる。
【００２１】
[0028]本明細書において使用されるとき、名前解決処理は、任意の適切な名前解決プロトコルに従って、テキスト識別子に対応する数値識別子を決定したりその逆を行ったりするために適した任意の技術であってもよい。以下に概説される例において、ドメイン・ネーム・サービス（ＤＮＳ）プロトコルは名前解決プロトコルの例として使用されてもよく、名前解決処理はＤＮＳプロトコルに従うものとして記載されてもよい。しかし、ＤＮＳが本明細書に記載された原理によって動作する技術が動作し得る名前解決プロトコルの一例にすぎず、本発明の実施例はこの点に限定されないので、任意の適切な名前解決プロトコルが実施され得ることが認識されるべきである。
【００２２】
[0029]本明細書における例の多くは入力テキスト識別子に対応する数値識別子を決定するコンテキストにおいて記載されるが、幾つかの実施例において、追加的に又は代替的に、数値識別子を入力としてとり、対応するテキスト識別子を決定する名前解決処理が実施されてもよいことが認識されるべきである。さらに、以下に概説される例は、テキスト識別子及び数値識別子の一対一対応で動作する技術−例えば、単一のテキスト識別子に対応する単一の数値識別子を決定する−について記載しているが、これが単なる１つの例示的な実施例であり、幾つかの実施例において、テキスト識別子が複数の対応する数値識別子を有してもよく、数値識別子が複数の対応するテキスト識別子を有してもよいことが認識されるべきである。
【００２３】
[0010]本明細書に記載された技術は様々なコンピューターシステムにおいて実施され得るものであり、それらの例は、より詳細に以下に記載される。そのようなシステムは、一般に、多くの機能モジュールを実施する適切に構成された計算装置の使用を含み、各々の機能モジュールはそのような技術の実行を完了するために必要とされる１つ以上の動作を提供する。各機能モジュールはそれ自身の方法で実施することができ、すべてを同じ方法で実施する必要はない。本明細書において使用されるとき、機能モジュールは動作上の役割を行うシステムの構造コンポーネントである。動作上の役割は全ソフトウェア要素の一部であってもよい。例えば、機能モジュールは、処理、離散処理又は他の適切な処理ユニットの機能を行ってもよい。機能モジュールはコンピューター実行可能命令を含み、コンピューター記憶媒体上で符号化されてもよい。さらに、そのようなコンピューター実行可能命令は、多くの適切なプログラミング言語並びに／又はプログラミングツールもしくはスクリプトツールのうちの任意のものを使用して書かれてもよく、フレームワーク又は仮想コンピューター上で実行される実行可能な機械語コード又は中間コードとしてコンパイルされてもよい。機能モジュールは、必要に応じて、並列に又は連続的に実行することができ、メッセージ受け渡しプロトコル（message passing protocol）を使用して又は任意の他の適切な方法で、それらが実行されているコンピューター上の共有メモリーを使用して互いとの間で情報を受け渡すことができる。記載される機能モジュール及びタスクの分割は本明細書に記載される例示的な技術を実施し得る機能モジュールの種類の実例にすぎず、本発明は如何なる特定の数、分割又は種類の機能モジュールにおいて実施されるものにも限定されないことが認識されるべきであるが、１つ以上のタスクを実行する例示的な機能モジュールが以下に記載される。幾つかの実施例において、すべての機能が単一の機能モジュールにおいて実施されてもよい。さらに、明瞭にするために、以下においては、機能モジュールが、１つ又は２つの計算装置においてすべて実行されるように記載されているが、幾つかの実施例において、機能モジュールが互いに通信するように構成された多くの別個の計算装置上で実施され得ることが認識されるべきである。例えば、１つの計算装置が、入力モジュールを実行して、テキスト識別子などの第１の識別子を受信し、当該テキスト識別子に対応する数値識別子を決定するための名前解決処理を行うために第２の計算装置上の名前解決モジュールと通信するように構成されてもよい。
【００２４】
[0030]本明細書に記載された原理の１つの例示的な実施例において、計算装置上で実行されるソフトウェア・アプリケーションは、ソフトウェア・アプリケーションが接続を確立したい所望のネットワークリソースのテキスト識別子についての入力をユーザーから受け取ってもよい。例えば、ソフトウェア・アプリケーションはウェブ・ブラウザーであってもよく、テキスト識別子はウェブサイトのドメイン・ネームであってもよく、ネットワークリソースはウェブサイトをホストするウェブサーバーであってもよい。所望のネットワークリソースに対する接続を開くために、ソフトウェア・アプリケーション又は接続モジュールは、数値識別子をネットワークリソースについて使用し、そのため、名前解決モジュール（ここでは「解決モジュール」とも呼ばれる）は、テキスト識別子を、ＩＰｖ４又はＩＰｖ６フォーマットのＩＰアドレスなどのネットワーク・アドレスとして作用する数値識別子へ変換してもよい。
【００２５】
[0031]したがって、ネットワークリソースのテキスト識別子は、数値識別子を得るための名前解決処理を行うように構成された名前解決モジュールに渡され、その後、名前解決モジュールはソフトウェア・アプリケーションに数値識別子を返してもよい。しかし、名前解決処理を行う前に、解決モジュールは、もしあれば、解決パラメーターの組のどれが実行されるべき名前解決処理に適用されるかを決定するために、一群の解決パラメーターの組（解決パラメーターの組の集合）をレビュー（読み取る、見直す、review）してもよい。この集合は、任意の適切なフォーマットで、メモリーなどのコンピューター記憶媒体を含む任意の適切な方法で格納されてもよい。パラメーターの組のどれが適用されるかを決定するべく集合をレビューするために、解決モジュールは、メモリーから集合のうちの幾つか又はすべてを取り出し（検索し）、例えば、入力識別子を、解決パラメーターの特定の組がどのネットワークリソースに適用されるかを示す組のうちの幾つか又はすべてのパラメーターと比較することを含む、任意の種類の比較処理を行ってもよい。
【００２６】
[0032]集合における解決パラメーターの各組は１つ以上のネットワークリソースに適用され、それらが適用されるネットワークリソースの識別子を名前解決処理が決定する方法を管理してもよい。これらの解決パラメーターは、名前解決処理が実行される方法に影響し得る、上述の例示的なパラメーターのうち任意のものを含む、任意の適切なパラメーターを含んでもよい。例えば、名前解決パラメーターの各組は、特定のＤＮＳサーバーなど、数値識別子を決定するために解決モジュールが通信するべき特定の解決リソースを指定してもよい。
【００２７】
[0033]解決モジュールによる集合のレビューは任意の適切な方法で行われてもよい。１つの実施例において、レビューは、識別子間に一致が存在するか否かを決定するために解決パラメーターの組の各々についての識別子とテキスト識別子を比較することを含んでもよい。例えば、１組の解決パラメーターの識別子は「＊．ｃｏｒｐ．ｃｏｎｔｏｓｏ．ｃｏｍ」などのＤＮＳサフィックス（suffix）であってもよく、識別子の後半部分と一致する如何なるテキスト識別子も、それらの解決パラメーターが適用されるものである。したがって、入力テキスト識別子が「ｗｅｂｓｅｒｖｅｒ．ｃｏｒｐ．ｃｏｎｔｏｓｏ．ｃｏｍ」である場合、その組はその識別子に関連付けられた１組のパラメーターであり、１組の適用可能な解決パラメーターと考えることができる。適用可能な解決パラメーターの１つ以上の組が一旦決定されると、名前解決処理は適用可能な解決パラメーターに従って行われてもよい。例えば、パラメーターがＤＮＳサーバーのような特定の解決リソースを指定する場合、その解決リソースに対する接続が確立される；使用すべき暗号化のレベルをパラメーターが指定する場合、名前解決リソースとの通信はそのレベルの暗号化を使用する。
【００２８】
[0034]適用可能なパラメーターを使用して解決リソースへの接続を解決モジュールが一旦確立したならば、テキスト識別子を含み対応する数値識別子を要求する解決要求が当該接続を介して解決リソースに対して発行される。解決リソースは、対応する数値識別子を決定するために、それがローカルに保持する情報を調べたり、又は、適用可能な解決パラメーターに従って別の解決リソースへ要求を転送したりするなど、当技術において知られている様々な処理のうちの任意のものを含む任意の適切な処理を行ってもよい。一旦解決リソースが数値識別子を決定したならば、解決リソースは数値識別子に対して任意の適切な認証プロセスも行ってもよい。例えば、数値識別子を決定し、かつ結果を認証するために使用することができる有効な証明書を提供すると信頼される１つ以上の特定の認証機関を指定するために、ＤＮＳＳＥＣが使用されるべきであると、適用可能な解決パラメーターが指示する場合、解決リソースは、認証処理中、当該１つ以上の特定の認証機関のうちのいずれかによって発行された証明書を使用して結果が署名されたかどうかを決定してもよい。そうであるならば、解決リソースは、解決要求の結果として、計算装置上の解決モジュールに数値識別子を提供してもよい。その後、解決モジュールは、結果が適用可能な解決パラメーターに従って生成されたことを確認し、所望のネットワークリソースへの接続を確立する際に使用するためのソフトウェア・アプリケーションに対して結果を提示してもよい。他方、結果が指定された証明書を使用して署名されなかった場合には、その結果は廃棄されるか、又はそれが解決パラメーターに従って署名されなかったことの指示とともに解決モジュールに提供されてもよい。
【００２９】
[0035]幾つかの異なる利点が、本明細書に記載された原理に従って名前解決処理を行うことにより提供されてもよい。まず、解決パラメーターの組の集合を維持することによって、名前解決処理は、解決処理が安全であること及び結果が信頼できることを保証するために解決パラメーターでパラメーター化することができる。例えば、従来の名前解決技術において、計算装置は、特定の結果からの結果が正当であることを信頼しなければならなかったが、集合からの解決パラメーターは、計算装置内の解決モジュールが、応答が正当であるという高い確信をもって所望のネットワークリソースの識別子（数値又はテキスト）を得るため、特定の信頼された解決リソースに問合せを行うことを可能にする。さらに、解決モジュールは、指定された解決リソースが当該モジュールが求めている対応する識別子を有していることをより確信することができる。さらに、解決パラメーターの集合を使用することによって、例えば、暗号化が使用されるべきか否か、どの種類の暗号化を使用すべきか、及び、どのように暗号化を認証すべきかを指定することによって、解決処理はより安全にすることができる。さらに、通信すべき特定の解決リソースを指定することによって、幾つかの機能が、扱うために構成されていると集合が示す、解決リソースなどのネットワークリソースに押しつけられてもよいので、集合は、計算装置上の解決モジュールがより少数の機能を実行し、計算装置に対してそれほど負担とならないようにすることを可能にする。例えば、１つの例示的なＤＮＳＳＥＣ実施例において、幾つかの認証プロセスは、ＤＮＳサーバーのようなネットワーク中の解決リソース上で行われてもよい。集合を有する解決モジュールはＤＮＳＳＥＣタスクを行うことができる特定の解決リソースとコンタクトすることを知る。さらに、集合を使用して、解決モジュールは、オーバーレイ・ネットワーク中のネットワークリソースのテキスト識別子のために特定の解決リソースとコンタクトしたり、特定の安全（セキュア）なネットワークリソースに関連する識別子を交換するために安全な通信チャネルを使用するなど、異なる入力識別子について異なる名前解決処理を行うことができる。
【００３０】
[0036]本明細書に記載された原理に従って動作するこれらの及び他の技術の追加の機能及び利点は、以下に述べられる例からより完全に理解される。以下の例は、本発明についての理解を容易にし、かつ本明細書に記載した原理の利点を説明するように意図されるが、本発明の実施例の完全な範囲を例示するものではない。
【００３１】
[0037]本明細書に記載された原理に従って動作する技術は、任意の適切な数及び種類のネットワークリソースを含む、任意の適切な数及び種類の計算装置を含む任意の適切なコンピューター・システムにおいて実施することができる。図１は、本明細書に記載された原理の幾つかの例示的な実施が作用し得る、実例となるコンピューター・システムを示す。しかし、他の実施例が任意の他の適切なコンピューター・システムにおいて動作してもよいことが認識されるべきである。
【００３２】
[0038]図１は、ユーザー装置、計算装置１０２、が接続し得る通信ネットワーク１００を含むコンピューター・システムを示す。通信ネットワーク１００は、ホームネットワーク、企業ネットワークのサブネット、インターネット及び／又は他のものなど、より大きな有線及び／又は無線ネットワークの一部を含む任意の適切な有線及び／又は無線ネットワークであってもよい。計算装置１０２はデスクトップパソコンとして示されるが、ラップトップパソコン、ＰＤＡ、スマートフォン、サーバー、ラックマウントのコンピューター、ルーターもしくは交換機などのネットワーク装置、又は他の計算装置などの、任意の適切な計算装置であってもよい。
【００３３】
[0039]計算装置１０２は、解決パラメーターの組の集合を格納するデータ・ストア１０４に結合される。データ・ストア１０４は任意の適切なコンピューター記憶媒体上に符号化され、任意の適切なフォーマットで情報を格納してもよい。データ・ストア１０４に格納された情報の中には、入力テキスト識別子に対応するネットワークリソースの数値識別子を決定するなど、入力第１識別子に対応する第２の識別子を決定するために名前解決処理を管理するために使用することができる解決パラメーターがある。上述のように、解決パラメーターは名前解決処理中に使用され得る任意の適切な情報を含んでもよい。計算装置１０２は、通信ネットワーク１００に接続されたネットワークリソースへの接続を形成するために解決パラメーターが使用されるそのような名前解決処理を実施する１つ以上の機能モジュールを実行するように構成されてもよい。
【００３４】
[0040]データ・ストア１０４に格納された解決パラメーターの組の集合は、任意の適切なユーザー・インターフェースを使用して計算装置１０２に対してローカルなユーザーによって入力されること及び／又は計算装置１０６を使用して管理者によって遠隔に提供されることを含む、様々な方法のうちの任意の方法で提供することができる。一例において、管理者は、計算装置１０６において解決パラメーターを指定し、任意の適切なネットワーク管理技術を通じて計算装置１０２にそれらを押し付けてもよい。例えば、通信ネットワーク１００がワシントン州レドモンドのマイクロソフト株式会社から利用可能なマイクロソフト・ウィンドウズ（登録商標）・ネットワークを含む場合、管理者は、アクティブ・ディレクトリー・プロトコルを介したグループ・ポリシーを使用して、解決パラメーターを押し出すためにドメインコントローラーを使用してもよい。しかし、これが実施され得るネットワーク管理技術の例にすぎず、任意の適切な技術をネットワーク上で利用可能なリソースに従って使用することができることが認識されるべきである。
【００３５】
[0041]計算装置１０２は、ネットワークリソース１０８などのネットワークリソースの識別子（数値又はテキスト）を決定する名前解決処理を行うために解決パラメーターの組の集合を使用してもよく、それは、任意の種類のサーバーなどの、ネットワークを介してアクセス可能な任意の計算装置であってもよい。そうするために、計算装置１０２は、ネットワークリソース１０８の第１の識別子の入力を受信すると、適用可能な解決パラメーターの組を決定するためにデータ・ストア１０４に格納された解決パラメーターの組の集合を調べ、次に、適用可能な解決パラメーターの組によって管理された名前解決処理を行ってもよい。名前解決処理中に、ネットワークリソース１０８の１つ以上の識別子を決定するために、計算装置１０２上で実行される解決モジュールは、名前解決リソース１１０と通信してもよい。如何なる適切な名前解決処理も、以下に述べられる例示的な名前解決処理のうちの任意のものを含む、本明細書に記載された原理に従って実行することができる。そのような処理は、解決リソース１１０として任意の適切なネットワーク装置による任意の適切な方法での情報の交換を含み得る。解決リソース１１０はサーバーとして図１に示されているが、パーソナルコンピューターなどの多目的の装置及びハードウェア名前解決装置などの単一目的の装置を含む解決リソースとして任意の適切な計算装置が使用され得ることが認識されるべきである。
【００３６】
[0042]幾つかの実施例において、通信ネットワーク１００は単一ネットワークでなくてもよいが、その上で１つ以上のオーバーレイ・ネットワーク１００Ａがインスタンス化されるハードウェア・ネットワークであってもよい。オーバーレイ・ネットワーク１００Ａは全体的に通信ネットワーク１００を実施するハードウェア上でインスタンス化されてもよいし、又は通信ネットワーク１００で使用されるハードウェア上で動作してもよい。オーバーレイ・ネットワーク１００Ａはルーター及び交換機などのネットワーク・ハードウェアを通信ネットワーク１００と共有してもよいが、クライアント計算装置及びサーバー計算装置など、幾つかのネットワークリソースがあってもよく、それらはハードウェアを介して通信ネットワーク１００に接続されるが、オーバーレイ・ネットワーク１００Ａの部分でない装置にとってはアクセス可能でない。
【００３７】
[0043]上述のように、これらの特定の解決リソースのみがオーバーレイ・ネットワーク１００Ａ上で利用可能なネットワークリソースについての知識を有しているので、オーバーレイ・ネットワーク上のネットワークリソースと通信するために、計算装置１０２は、オーバーレイ・ネットワーク１００Ａ上で利用可能なネットワークリソースに関する情報を有する特定の解決リソースと通信しなければならないかもしれない。そのような実施例において、解決パラメーターの組の集合は、ネットワークリソース１０８などのネットワークリソースの識別子を得るために名前解決処理中に計算装置１０２が通信することができる１つ以上の特定の解決リソース１１０Ａを指定してもよい。集合における解決パラメーターの組のうちの幾つか又はすべてはオーバーレイ・ネットワーク１００Ａのネットワークリソースと一致する識別子を有してもよい。計算装置１０２の解決モジュールが適用可能な解決パラメーターの組を決定するために集合をレビューする場合、適用可能な解決パラメーターは所望のネットワークリソースの識別子が特定の解決リソース１１０Ａから取り出され得ることを示してもよい。したがって、計算装置１０２によって実行される名前解決処理は、適用可能な解決パラメーターの組でパラメーター化される場合、所望のネットワークリソース１０８の識別子を取り出すために、特定の解決リソース１１ＯＡと通信してもよい。このレビュー及び名前解決処理は、以下に述べられる例示的な技術のうちの任意のものを含む、任意の適切な方法で、実行されてもよいことが認識されるべきである。
【００３８】
[0044]さらに、幾つかの実施例において、適用可能な解決パラメーターはまた、ネットワークリソース１０８に対する通信がプロキシー・サーバー１１２を介して行われるべきであることを明示してもよい。その後、ネットワークリソースの第２の識別子を返す際に、解決モジュールは、さらに又は代替的に、プロキシー・サーバー１１２について、数値又はテキストの識別子などの識別子を返してもよい。
【００３９】
[0045]上述されるように、解決パラメーターの組は名前解決処理を行う際に使用され得る任意の情報を含み得る。図２Ａ及び２Ｂは、２つの例示的なネットワーキング技術を用いて本明細書に記載された原理に従う幾つかの実施例において使用され得る解決パラメーターの組の集合を格納する例示的なデータ構造を示す。さらに、図２Ａ及び２Ｂは２つの異なる技術に関連するパラメーターを含む２つの異なる集合を示すが、幾つかの実施例において、これらの技術が解決パラメーターの同じ組において実施され得ることが認識されるべきである。さらに、集合は任意の適切なデータ構造として実施されてもよく、幾つかの実施例では、１つ以上の組の解決パラメーターの組に関連する情報を各々が格納する他のデータ構造を含んでもよい。これらのデータ構造は、名前解決を要求し得るクライアント計算装置に関連付けられるコンピューター読み取り可能な記憶媒体に格納されてもよい。任意の種類のネットワーキング技術が使用されてもよいので、図２Ａ及び２Ｂに示されるデータ構造及びそれらが格納するパラメーターは、使用され得るデータ構造及びパラメーターの種類の実例にすぎないことが認識されるべきである。
【００４０】
[0046]図２Ａは、集合中の解決パラメーターの２つの例示的な組を備えた、解決パラメーターの集合２００Ａを格納する第１のデータ構造を示す。図２Ａで示されるように、幾つかの実施例において、解決パラメーターの集合は、複数のフィールド及び行を含むテーブルとして組織されてもよく、各フィールドは解決パラメーターの種類を指定し、各行は解決パラメーターの組を指定するが、任意の適切なフォーマットを使用することができるので、他の実施例が可能である。集合２００Ａに示される例示的な解決パラメーターは、ＤＮＳＳＥＣプロトコルを使用すべきか否か、他のＤＮＳセキュリティパラメーターを実施すべきか否か又はどのように使用すべきかなど、ＤＮＳ解決処理に関連するパラメーターを含む。しかし、上述のように、任意の適切な名前解決プロトコルを使用し得るので、ＤＮＳが、本明細書に記載した原理が動作し得る名前解決技術及びプロトコルの種類についての単なる例示的なものであることが認識されるべきである。
【００４１】
[0047]図２Ａに示される第１の実例となる解決パラメーターは「ネーム（名前）」パラメーター２０２である。このパラメーター２０２は、解決パラメーターの組がどの識別子に適用されるかを示し、したがって、当該解決パラメーターの組がどのネットワークリソースに適用され得るかを示す。入力識別子の所与の解決処理に対して集合におけるどの解決パラメーターの組が適用されるかを決定するために、ネーム・パラメーター２０２は、解決モジュールによって使用されてもよい。ネーム・パラメーター２０２は、任意の数値又はテキスト識別子を含む、ネットワークリソースの任意の識別子を格納し得る。例えば、数値識別子は、ＩＰアドレス「１．２．３．４」などの、特定のネットワークリソースの識別子であってもよいし、又はＩＰアドレスサブネット「１５７．０．０．０／８」などの、ある範囲のネットワークリソースの識別子であってもよい。同様に、ネーム・パラメーターに使用され得るテキスト識別子は、「ｉｔｗｅｂ．ｃｏｎｔｏｓｏ．ｃｏｍ．」のような十分に適格なドメイン・ネーム（fully qualified domain name、ＦＱＤＮ）などの、特定のネットワークリソースの識別子であってもよいし、又は「＊．ｃｏｎｔｏｓｏ．ｃｏｍ」のようなＤＮＳサフィックスもしくは「ｉｔｗｅｂ．＊」のようなＤＮＳプレフィックス（prefix）などの、ある範囲のネットワークリソースの識別子であってもよい。
【００４２】
[0048]図２Ａに示される次の解決パラメーターはＤＮＳＳＥＣパラメーター２０４である。より具体的には、例示的な「ＤＮＳＳＥＣ」パラメーターは、ネーム・パラメーターと一致するネットワークリソースの解決処理でＤＮＳＳＥＣ認証が必要であることを示す、２進値（オン又はオフ）を格納する。１組の解決パラメーターのＤＮＳＳＥＣパラメーター２０４がオン／真に設定される場合、解決リソースはＤＮＳＳＥＣプロトコルに従って解決処理を行い、如何なる結果も解決パラメーターに従って認証されることを保証してもよい。解決処理を実行する解決モジュールはまた、ＤＮＳクエリーの如何なる結果もＤＮＳＳＥＣ基準に従って認証されていることを保証してもよく、送信されたＤＮＳ要求において、例えば、「ＤＮＳＳＥＣ  ＯＫ」（ＤＯ）フラグを要求のヘッダーに設定することによって、ＤＮＳＳＥＣ認証が要求されたことを示してもよい。
【００４３】
[0049]次のパラメーターは、計算装置間、例えばＤＮＳクライアント及びＤＮＳサーバー又は他の装置の組の間でのＤＮＳ交換のセキュリティに関連する。第１のパラメーター、「ＩＰｓｅｃ上のＤＮＳ」パラメーター２０６、は、名前解決処理のための通信チャネル上でＩＰｓｅｃを実施すべきかどうかを示す、２進の（オン／オフ又は真／偽）値を格納してもよい。例えば、ＩＰｓｅｃパラメーターが真に設定される場合、名前解決リソースへの接続を確立するとき、解決モジュールは暗号化及び／又は認証処理を行ってもよい。１組の解決パラメーターについての「ＩＰｓｅｃ上のＤＮＳ」がオン／真に設定される場合、その後、解決モジュールは、ＩＰｓｅｃプロトコルのための設定を決定するために当該組の他のパラメーターを調べてもよい。次の２つのパラメーター、「ＩＰｓｅｃ暗号化レベル」２０８及び「ＩＰｓｅｃ  ＣＡ」２１０は、そのようなパラメーターの例である。「ＩＰｓｅｃ暗号化レベル」は、暗号化が使用されるべきかどうか、及び／又はどの種類の暗号化を使用すべきかを指定する任意の値を格納してもよい。「ＩＰｓｅｃ暗号化レベル」パラメーター２０８は、特定の種類の暗号化を示す無（None）／低（Low）／中間（Medium）／高（High）の値を格納してもよく、例えば、「低」は、３重データ暗号化規格（Triple Data Encryption Standard、３ＤＥＳ）又は任意のサイズのアドバンスト・エンクリプション・スタンダード（ＡＥＳ）暗号化を示してもよく、「高」は、１９２又は２５６ビットのＡＥＳ暗号化を示してもよい。代替的に、ＩＰｓｅｃ暗号化レベルは、ＡＥＳ（２５６）などの特定の暗号化標準への参照を格納してもよい。「ＩＰｓｅｃ  ＣＡ」２１０は、解決リソースのための認証証明書を発行すると信頼される１つ以上の認証機関の識別子を格納してもよい。設定されると、ＩＰｓｅｃの認証処理中に、解決モジュールは信頼された解決リソースへの信頼されたＣＡのうちの１つによって発行された認証証明書によって解決結果が認証されることを確認してもよい。さらに、ＤＮＳＳＥＣが作動される場合、その後、ＤＮＳサーバーからの応答は、当該応答中の拡張キー使用（ＥＫＵ）署名が信頼されたＣＡのうちの１つに由来するか否か及びしたがって結果を生成したＤＮＳサーバーが、計算装置に代わってＤＮＳＳＥＣ認証を行うために、解決パラメーターによって認証されることを決定するためにチェックされる。
【００４４】
[0050]図２Ａに示される最後のパラメーター、「ＤＮＳサーバー」２１２、は、解決モジュールが解決処理中に通信するべき１つ以上のＤＮＳサーバーのリストを格納してもよい。解決モジュールへ入力される識別子が解決パラメーターの組のネーム・パラメーターと一致する場合、その後、解決モジュールは、入力識別子に対応する識別子の「ＤＮＳサーバー」パラメーターにリストされた任意のＤＮＳサーバーに問合せを行う。「ＤＮＳサーバー」パラメーターは、任意の適切な数値及び／又はテキスト識別子を含む、ＤＮＳサーバーへの接続を確立するために使用され得る１つ以上のＤＮＳサーバーのための任意の適切な識別子を格納してもよい。
【００４５】
[0051]図２Ａは、集合２００Ａを形成し得る解決パラメーターの組を格納する２つの実例となるデータ構造を示し、各組は集合のパラメーターとして格納され得る実例となる値を含む。これらの組は使用され得る組の種類の例であり、任意の値がパラメーターとして使用されてもよく、任意の数のパラメーターの組が使用されてもよいことが認識されるべきである。
【００４６】
[0052]図２Ｂは、解決パラメーターの集合２００Ｂを格納する第２の例示的なデータ構造を示す。図２Ａにおけるように、集合２００Ｂは、パラメーターを識別する複数のフィールド及び解決パラメーターの組を識別する複数の行を有するテーブルとして組織されるが、任意のフォーマット（形式）を使用し得ることが認識されるべきである。さらに、図２Ｂの例では、解決パラメーターは、オーバーレイ・ネットワークについてのマイクロソフト・ダイレクト・アクセス機能に関して使用され得るものを含む。しかし、任意の適切なオーバーレイ・ネットワーキング技術を含む任意の適切なネットワーキング技術を使用し得るので、ダイレクト・アクセスが本明細書に記載した原理が動作し得るネットワーキング技術及びプロトコルの種類の例示的なものにすぎないことが認識されるべきである。
【００４７】
[0053]図２Ｂに示される第１のパラメーターは「ネーム」パラメーター２２０である。集合２００Ａのネーム・パラメーター２０２と同様、このパラメーターは、解決パラメーターの組が適用され得るネットワークリソースを識別し、入力識別子の所与の解決処理に集合中の解決パラメーターのどの組が適用されるかを決定するために解決モジュールによって使用されてもよい。ネーム・パラメーター２２０は、集合２００Ａに関して上に記載された例示的なパラメーターのうちの任意のものを含む、任意の数値又はテキスト識別子を含むネットワークリソースの任意の識別子を格納してもよい。
【００４８】
[0054]図２Ｂの次のパラメーターは、ダイレクト・アクセス技術に関連する。「ゾーン固有の（Zone-Specific）ＤＮＳサーバー」パラメーター２２２は、オーバーレイ・ネットワーク上で利用可能なネットワークリソースについての名前解決処理の一部として問合せられ得る１つ以上のＤＮＳサーバーの任意の適切な識別子を格納してもよい。上述のように、幾つかのオーバーレイ・ネットワークにおいて、幾つかのネットワークリソースは、オーバーレイ・ネットワークが存在するハードウェア・ネットワーク上のすべての計算装置による一般的なアクセスには利用可能ではないかもしれず、この制限はネットワークリソースの識別子を広く分配しないことにより部分的に強化され得る。オーバーレイ・ネットワーク上のネットワークリソースの識別子を得るために、解決モジュールは解決リソースの１つ又は小さな組とコンタクトしてもよい。したがって、解決モジュールへ入力される識別子が解決パラメーターの組のネーム・パラメーター２２０と一致する場合、解決モジュールは、ネットワークリソースの対応する識別子を得るために「ゾーン固有のＤＮＳサーバー」パラメーター２２２に指定されたＤＮＳサーバーとコンタクトしてもよい。
【００４９】
[0055]「ゾーン固有のプロキシー」２２４は示された次のパラメーターである。ソフトウェア・アプリケーションがオーバーレイ・ネットワーク上のネットワークリソースとコンタクトしていることをソフトウェア・アプリケーションに示し、且つ、その接続を行うためにプロキシー・サーバーを使用するか又はその接続を行うために識別されたプロキシー・サーバーを使用するように当該ソフトウェア・アプリケーションを構成するために、このパラメーター２２４は、解決モジュールによって使用されてもよい。例えば、ソフトウェア・アプリケーションが特定のネットワークリソースへの接続を望み、適用可能な解決パラメーターの組が、プロキシー・サーバーが使用されるべきであることを解決モジュールに示す場合、解決モジュールはソフトウェア・アプリケーションがプロキシー・サーバーを介してネットワークリソースに接続するべきであることをソフトウェア・アプリケーションに示してもよい。集合２００Ｂのプロキシー・サーバー・パラメーター２２４は、リソースの数値及び／又はテキスト識別子を含む任意の許容値、プロキシー・サーバーは必要ではないというヌル値（null value）もしくは他の指標、又はデフォルトのプロキシー・サーバー設定がソフトウェア・アプリケーションによって使用されるべきであることを示す値を格納してもよい。
【００５０】
[0056]次のパラメーター、「ＩＰｓｅｃ上の遠隔（リモート）ＤＮＳ」２２６は、暗号化及び／又は認証によるなど、ＩＰｓｅｃプロトコルに従ってオーバーレイ・ネットワーク上のネットワークリソースへの接続が保護されるべきかどうかを示すために使用される。集合２００Ａの「ＩＰｓｅｃ上のＤＮＳ」パラメーター２０６と同様に、集合２００Ｂの「ＩＰｓｅｃ上のＤＮＳ」パラメーター２２６は、ＩＰｓｅｃを使用するべきかどうかを示す、オン／オフ又は真／偽などの２進値をとってもよい。さらに集合２００Ａと同様に、「遠隔ＤＮＳ暗号化レベル」２２８は、解決リソースへの接続を保証するに際して暗号化を使用すべきか否か及びどんな種類の暗号化を使用すべきかを示す任意の適切な値を格納してもよく、「ＩＰｓｅｃ  ＣＡ」２３０は、解決リソースの認証証明書を発行すると信頼される１つ以上の認証機関の任意の適切な識別子を格納してもよい。
【００５１】
[0057]図２Ａと同様に、図２Ｂはまた、集合２００Ｂを形成し得る解決パラメーターの組を格納する２つの実例となるデータ構造を示し、各々の組は集合のパラメーターに格納され得る実例となる値を含む。これらの組が使用され得る種類の組の例であり、任意の値がパラメーターとして使用されてもよく、任意の数のパラメーターの組が使用されてもよいことが認識されるべきである。
【００５２】
[0058]さらに、２つの集合２００Ａ及び２００Ｂは別個に示され、２つの異なる技術−ＤＮＳセキュリティ／ＤＮＳＳＥＣ及びダイレクト・アクセス−に対処するが、幾つかの実施例において、解決パラメーターの組がこれらの技術の両方及び／又は任意の他の種類のネットワーキング技術を対象とするパラメーターを含んでもよいことが認識されるべきである。例えば、所与のオーバーレイ・ネットワークについて、解決パラメーターの組は、オーバーレイ・ネットワークについて名前解決を行うためにＤＮＳＳＥＣ及び他のＤＮＳセキュリティを使用するように解決モジュールに指示してもよい。
【００５３】
[0059]本明細書に記載された原理に従って動作する幾つかの技術において、解決パラメーターの任意の特定の組の一部ではない追加の解決パラメーターが解決パラメーターの集合に含まれてもよい。これらのグローバルパラメーターはまた、解決処理を管理するために使用されてもよいが、解決パラメーターの組がいつ使用されるべきか、使用されるべきか否かを示してもよく、名前解決での失敗を扱う方法を示してもよく、又はすべての組に適用される解決パラメーターであってもよい。例えば、計算装置が、接続されるハードウェア・ネットワークの計算装置に通知し得るネットワーク位置把握（Network Location Awareness、ＮＬＡ）をサポートする場合、集合は、装置が接続されるネットワークの種類又は識別（ID）に基づいてテーブルのすべて又は一部のレビューを差し控えるべきか否かを示すグローバル設定を含んでもよい。例えば、オーバーレイ・ネットワークが存在する特定のハードウェア・ネットワークに計算装置が接続されないことをＮＬＡが示す場合、「ＮＬＡバイパス」パラメーターは、オーバーレイ・ネットワークを対象とするすべての組をレビューすることを差し控えるべきであることを解決モジュールに示してもよく、又は、特定のオーバーレイ・ネットワークの解決パラメーターのすべての組をレビューすることを差し控えるべきであることを示してもよい。
【００５４】
[0060]加えて又は代替的に、グローバルパラメーターは、特定のネットワークの外部である場合に解決要求を出す方法を示してもよい。例えば、計算装置が特定のハードウェア・ネットワークの外部にある場合、「クエリー振る舞い（Query Behavior）」パラメーターは、ＩＰｖ４の数値識別子の前のＩＰｖ６の数値識別子、又はＩＰｖ６の数値識別子のみなどの、特定の種類の識別子について解決モジュールが問い合わせるべきであることを示してもよい。別のグローバルパラメーターは、第２の識別子が適用可能な解決パラメーターの組に従って配置されないという点で名前解決処理が失敗する場合にどう反応するのかに関連してもよい。この「フォールバック（Fallback）振る舞い」パラメーターは、解決モジュールが代替的な名前解決技術を使用することを試みるべきであることを示してもよいし、又はフォールバックが許可されないことを示してもよい。例えば、当該パラメーターは、ＤＮＳ処理が失敗する場合にＬＬＭＮＲ又はＮｅｔＢＩＯＳの処理が試みられるべきであることを示してもよい。
【００５５】
[0061]これらの例示的な集合及び解決パラメーター、及び任意の適切な集合における他の適切な解決パラメーターは、任意の種類の名前解決技術に従って名前解決処理を実行するために解決モジュールによって使用されてもよい。いかなる適切な名前解決処理が適用可能な解決パラメーターの組によって実施され管理されてもよい。図３は、名前解決が実行され得る処理３００を示す。しかし、いかなる適切な技術が使用されてもよいので、処理３００が実施され得る種類の技術の単なる例であることが認識されるべきである。
【００５６】
[0062]処理３００はブロック３０２において開始し、そこではネットワークリソースの第１の識別子が計算装置の機能モジュールによって受信される。第１の識別子は、ソフトウェア・アプリケーションのユーザー・インターフェースによることを含む適切なユーザー・インターフェースを介したユーザーからを含む、任意の適切なソースによって及び任意の適切なソースから受信されてもよい。第１の識別子は、ＤＮＳプロトコルのドメイン・ネームなどの、名前解決プロトコルに従う任意の適切なテキスト識別子を含む、ネットワークリソースに適した任意の識別子であってもよい。ブロック３０４において、その後、ネットワークリソースの第２の識別子を決定するために、第１の識別子は名前解決モジュールに渡されてもよい。これは任意の理由で行われてもよい。例えば、第１の識別子がソフトウェア・アプリケーションによって受信されたテキスト識別子であった場合、ソフトウェア・アプリケーションは、それが第２の識別子としてネットワークリソースへの接続を確立するためのネットワークリソースの数値識別子を要求することを決定してもよい。しかし、本明細書に記載された原理は任意の適切な動機によって実行される名前解決処理と互換性をもつので、この使用事例は例示的なものにすぎない。
【００５７】
[0063]ブロック３０６において、解決モジュールは、集合が、名前解決が求められる識別子に適用される解決パラメーターの任意の組を有しているか否か決定する。これは任意の適切な方法で行うことができる。例えば、解決モジュールは、データ・ストアから解決パラメーターの組の集合を取り出し、第１の識別子を集合と比較して、もしあれば、解決パラメーターのうちのどの組が第１の識別子に適用されるかを決定してもよい。この比較は、第１の識別子を図２Ａ及び２Ｂにおいて上述された「ネーム」パラメーターと比較することによるなど、任意の方法で行われてもよい。その後、解決モジュールは、モジュールによって実行されるべき名前解決処理に、解決パラメーターの組の１つ以上が適用されることを決定してもよく、処理を管理するために適用可能な解決パラメーターの組を使用するか、又は、任意の適切な方法で解決パラメーターの複数の組をマージすることにより、適用可能な解決パラメーターの組を決定してもよい。
【００５８】
[0064]ブロック３０６の適用可能な解決パラメーターの組の決定は、任意の適切な方法で行われてもよい。それが実行される正確な方法は、集合のフォーマット、及び集合に含まれるように選択された解決パラメーターに依存し得る。図４は決定処理の１つの例を示すが、処理４００が処理３００のブロック３０６の一部として行われ得る動作の単なる例であり、他の処理が可能なことが認識されるべきである。
【００５９】
[0065]処理４００はブロック４０２において開始し、そこで、解決モジュールはデータ・ストアから解決パラメーターの組の集合にアクセスする。図１の例におけるように、このデータ・ストアは解決モジュールが実行されている計算装置にとってローカルかもしれず、又は、コンピューター通信ネットワークなどの任意の適切な通信媒体を介してそれにとって利用可能であってもよい。ブロック４０４において、解決モジュールは、集合における解決パラメーターの各組について、各組がネットワークリソースのどの識別子に適用されるかを示す、識別子を一致させるためのパターンを取り出してもよい。当該パターンは、図２Ａ及び２Ｂに関して上に記載されたネーム・パラメーターを含むネットワークリソースの任意の適切な指標であってもよく、又は、任意の他の数値もしくはテキスト指標であってもよい。ブロック４０６において、パターンに対応する解決パラメーターの組が第１の識別子に適用されるかどうかを判断するために、第１の識別子が各パターンと比較される。例えば、第１の識別子が「ｗｅｂｓｅｒｖｅｒ．ｃｏｒｐ．ｃｏｎｔｏｓｏ．ｃｏｍ」で、パターンが「＊．ｃｏｒｐ．ｃｏｎｔｏｓｏ．ｃｏｍ」（＊はワイルドカード文字である）である場合、その後、ブロック４０６において、解決パラメーターのその組が第１の識別子に適用されると決定されてもよい。
【００６０】
[0066]ブロック４０８において、適用可能な解決パラメーターの組が一旦決定されると、その後、パラメーターの組は名前解決処理を管理するために使用されるべく取り出される。幾つかの実施例においては、解決パラメーターの単一の組のみが適用可能な解決パラメーターの組として取り出されるが、他の複数の解決パラメーターの組が取り出されてもよい。複数の組が得られる場合、解決パラメーターの複数の組から適用可能な解決パラメーターの組を決定するために任意の適切な処理を使用することができる。例えば、パラメーターは、最高レベルのセキュリティを有する、又は最低レベルのセキュリティを有する、又は任意の他の適切な標準を有する、適用可能な解決パラメーターの組を決定するためにマージされてもよい。別の例として、解決パラメーターの複数の組が一致する場合、解決モジュールは最も緊密に一致するパターンを有する組を選択してもよい。例えば、第１の識別子が「ａ．ｃｏｒｐ．ｍｓ．ｃｏｍ」であり、「ｃｏｒｐ．ｍｓ．ｃｏｍ」について集合中に組があり、「ｍｓ．ｃｏｍ」について組がある場合、「ｃｏｒｐ．ｍｓ．ｃｏｍ」の解決パラメーターの組が選択され得る。というのはそれがより具体的であるからである。
【００６１】
[0067]図３の処理３００に戻り、ブロック３０８において、適用可能な解決パラメーターの組が一旦決定されたならば、解決モジュールは適用可能な解決パラメーターの組によってパラメーター化された名前解決処理を行ってもよい。その後、解決モジュールは、解決処理の出力として、ネットワークリソースの第２の識別子を得てもよい。例えば、第１の識別子がテキスト識別子である場合、第２の識別子は、ＩＰアドレスなどの数値識別子であってもよく、その逆もまたあり得る。ブロック３１０において、その後、解決モジュールは、ブロック３０２において第１の識別子を渡した機能モジュールへ第２の識別子を返し、処理は終了する。
【００６２】
[0068]ブロック３０８及び３１０の動作は任意の適切な方法で行われてもよい。図５は、適用可能な解決パラメーターの組によってパラメーター化された名前解決処理が行われてもよい、例示的な処理５００を示す。しかし、任意の適切な処理が任意の適切な名前解決技術及びプロトコルに従って実施されてもよいので、処理５００が、実行され得る名前解決処理の種類の単なる例であることが認識されるべきである。また、処理５００はある解決パラメーターの観点から記載されているが、任意の適切なパラメーターが本明細書に記載された原理に従って使用されてもよいので、これらのパラメーターもまた例示的なものにすぎないことが認識されるべきである。
【００６３】
[0069]図５の処理５００はブロック５０２において開始し、解決モジュールは、「ＤＮＳサーバー」パラメーターによるなど、適用可能な解決パラメーターの組によって識別された名前解決リソースへの接続を確立する。実施される名前解決技術及びプロトコルの種類に依存して、解決リソースの性質は変化し得る。しかし、幾つかの実施例において、名前解決リソースはＤＮＳサーバーのようなネットワークリソースであってもよい。ブロック５０４において、オン／真に設定される「ＩＰｓｅｃ上のＤＮＳ」パラメーターに従って、解決リソースへの接続が保証され得る。接続のセキュリティは、使用する暗号化の種類を識別する「暗号化レベル」パラメーター及び／又は解決リソースの同一性を認証する証明書を発行することができる１つ以上の認証機関を識別する「ＩＰｓｅｃ  ＣＡ」パラメーターなどの他のパラメーターに依存してもよい。ＩＰｓｅｃプロトコルを使用して通信接続を安全にするための技術は当技術分野において知られており、そのためここではこれ以上議論されない。
【００６４】
[0070]ブロック５０６において、解決リソースへの接続が一旦保証（セキュアに）されれば、解決モジュールはチャネルを介して名前解決要求を通信してもよい。解決要求は、第１の識別子、及び解決リソースが従う必要があり得る処理を示す任意のパラメーターを含む、名前解決を行うための任意の適切なデータを含み得る。例えば、解決要求は、適用可能な解決パラメーターの組のパラメーターに従って、ＤＮＳＳＥＣが解決要求のために可能となっており、解決リソースが第２の識別子を返す前にＤＮＳＳＥＣに従って第２の識別子に対して認証処理を行うべきであることを示してもよい。例えば、解決要求は、１つ以上の認証機関に対して、解決パラメーターの組が信頼された結果を返すために信頼されることの１つ以上の指標を含み得るし、解決リソースはこれらのうちの１つが使用されることを確認してもよい。
【００６５】
[0071]解決パラメーターによって選択され示された特定の名前解決技術に従って、ネットワークリソースの第２の識別子を得るために、任意の適切な技術が解決リソースによって実行されてもよい。例えば、解決リソースがＤＮＳサーバーである場合、解決リソースは、解決要求において受信した第１の識別子に対応する第２の識別子についてそれが「知っている」かどうかを決定するために、識別子のそのローカルキャッシュ（local cache）を検査してもよい。第２の識別子がそのキャッシュにない場合、それは別のＤＮＳサーバーに解決要求を渡してもよく、その後、別のＤＮＳサーバーは同じ処理を行ってもよい。元の解決リソースが第２の識別子を含む応答を受信するまで、これは継続する。適用可能な解決パラメーターの組によってＤＮＳＳＥＣが「オン」であるように示される場合、解決リソースが−それ自身のキャッシュ又は別のＤＮＳサーバーのいずれかから−その結果を得るとき、解決リソースは、それが結果の正当性を保証することができる信頼できるソースによって「署名された」か否かを決定するために結果を検討してもよい。結果が有効であると決定される場合、それは解決要求を出した解決モジュールに返されてもよい。
【００６６】
[0072]ブロック５０８において、解決モジュールは、保証されたチャネルを介して解決リソースから応答を受信し、ブロック５１０において、第２の識別子が解決リソースによって認証され且つ信頼された認証機関によって署名されたことを確認する。ブロック５１２において、解決モジュールは、ブロック５１０の決定に基づいて、適用可能な解決パラメーターの組に従って識別子が認証されたかどうかを決定する。第２の識別子が認証された場合、ブロック５１４において、第２の識別子が、（図３のブロック３０２におけるように）第１の識別子の提供により元々要求を出した機能モジュールへ返され、処理は終了する。他方、応答が適用可能な解決パラメーターの組に従って認証されなかった場合、ブロック５１６において、解決モジュールは結果を捨て、結果が見つからなかったことを示すエラーメッセージを機能モジュールに返し、処理は終了する。
【００６７】
[0073]幾つかの実施例において、解決モジュールはまた、ネットワークリソースの識別子のローカルキャッシュを保持してもよい。第２の識別子を含む解決要求に対する応答を受信すると、解決モジュールは、第１の識別子、第２の識別子、及び第２の識別子を得るために使用される解決パラメーターをキャッシュに格納してもよい。その後、解決モジュールが第２の識別子を求める新たな要求を受信する場合、解決モジュールは、それが既に第２の識別子を格納しているか否かを決定するためにキャッシュを検査し、そうであるならば、解決リソースへ解決要求を出すことなく、キャッシュから第２の識別子を返してもよい。図６は、キャッシュを使用してそのような解決処理を行う例示的な処理６００を示す。しかし、処理６００が単なる例であり、任意の適切な技術が本明細書に記載された原理に従って実施され得ることが認識されるべきである。
【００６８】
[0074]処理６００はブロック６０２において開始し、解決モジュールは第１の識別子を受信し、適用可能な解決パラメーターの組を決定する。これは、上に記載された例示的な技術のうちの任意のものによるものを含む、任意の適切な方法で行われてもよい。ブロック６０４において、解決モジュールは、第１の識別子がキャッシュにリストされるかどうかを決定するためにキャッシュを検査してもよい。ブロック６０６における決定に基づいて、第１の識別子がキャッシュにない場合、その後、ブロック６０８において、上述のように、名前解決処理が継続する。第２の識別子が名前解決処理によって得られる場合、その後、当該得る動作について記述する情報がブロック６１０においてキャッシュに格納されてもよい。この情報は、取得処理についての様々な種類のデータ及び命令のうちの任意のものを含んでもよい。例えば、当該情報は、第１の識別子、第２の識別子、及び／又は取得の動作において使用される適用可能な解決パラメーターの組を含んでもよい。情報がキャッシュに一旦格納されると、処理６００は終了する。
【００６９】
[0075]他方、ブロック６０６において第１の識別子がキャッシュにあると決定される場合、ブロック６１２において、第１の識別子と共にキャッシュに格納された解決パラメーターの組が取り出され、ブロック６０２において取り出された適用可能な解決パラメーターの組と比較される。この比較は、キャッシュから返された任意の第２の識別子が適用可能な解決パラメーターの組に従って得られた識別子であることを保証するために行われてもよい。例えば、ブロック６１２の比較は、パラメーターが等しいか、又は、キャッシュに格納された識別子を得るために使用されるパラメーターがブロック６０２において取り出されたパラメーターと少なくとも同じくらい安全であることを決定してもよい。代替的に、ブロック６１２の比較は、キャッシュ中の第２の識別子のソース−第２の識別子が得られた解決リソース−が適用可能な解決パラメーターの組によって要求されるソースと同じであることを決定してもよい。別の例として、キャッシュは、代わりに、第２の識別子が取り出された時間を格納してもよく、解決モジュールは、解決パラメーターが実行のときにおいてキャッシュ中の識別子が検索されたときと同じであるか否かを決定するために解決パラメーターが編集された最後の時間と上記時間を比較してもよい。任意の適切な比較処理がブロック６１２において行われてもよい。
【００７０】
[0076]ブロック６１４において、パラメーターが一致しない場合、得られたいかなる識別子も適切に得られることを保証するために、適用可能な解決パラメーターの組に従って、上に記載されるように、名前解決処理が行われる。しかし、ブロック６１４において、パラメーターが一致することが決定される場合、ブロック６１６において、第２の識別子は、キャッシュから、第１の識別子を提供した機能モジュールに返され、処理６００は終了する。
【００７１】
[0077]機能モジュールによる解決モジュールへの第１の識別子の入力に基づいて第２の識別子を決定するための幾つかの異なる技術が上に記載される。しかし、これらの技術の各々は本明細書に記載された原理に従って実施され得る技術の種類の例にすぎないことが認識されるべきである。ハードウェア・ネットワーク又はオーバーレイ・ネットワークのいずれとして実施されたかにかかわらず、名前解決技術に基づいて、又は、解決モジュールのために提供された解決パラメーターに基づいて、任意の種類の方法が、ネットワークリソースの識別子を決定するべく名前解決処理を行うために実施され得る。
【００７２】
[0078]解決モジュールについて設定される解決パラメーターは任意の適切な方法で提供されてもよい。例えば、１つの実施例において、解決パラメーターは、計算装置のユーザーによってローカルに入力され、計算装置に関連したデータ・ストアに格納されてもよい。別の実施例において、解決パラメーターは、計算装置がネットワークに接続するときにネットワークを介して提供されてもよい。図７は、ネットワークを介して計算装置に解決パラメーターを提供する、１つのそのような後者の処理の例を示す。しかし、図７の処理７００が実例にすぎず、他のものが可能であることが認識されるべきである。さらに、図７の例はマイクロソフト・ウィンドウズのコンピューターネットワークの観点から記載されているが、計算装置がネットワークに接続する時にネットワークによって当該計算装置が設定される他のネットワークが可能であることが認識されるべきである。
【００７３】
[0079]処理７００はブロック７０２において開始し、管理者は、ネットワークのドメインコントローラーに解決パラメーターの集合を入力する。解決パラメーターのこの集合は、ネットワーク用のマイクロソフト・アクティブ・ディレクトリー・グループ・ポリシーの一部としてを含む、任意の適切な方法で入力されてもよい。グループ・ポリシーは、ネットワークに接続された計算装置のグループ及び／又はネットワークのユーザーのグループを含む、ネットワークの任意の一部に適用されてもよい。ブロック７０４において、ドメインコントローラーは、解決パラメーターを受信し、グループ・ポリシーとしてそれを格納し、次に、グループのすべての要素にグループ・ポリシーを送信する。ブロック７０４のこの送信は、１５分ごとなどの設定された期間の後、又はグループの要素（コンピューター又はユーザーのいずれか）がネットワークに参加するか又は署名するときに行われてもよい。ブロック７０６において、本明細書に記載されるような解決モジュールを実行する計算装置は、任意の適切な方法でグループ・ポリシーを受信し、計算装置に関連したデータ・ストアにそれを格納する。その後、ブロック７０８において、名前解決処理を実行する場合、解決モジュールは、上に記載された例示的な技術のうちの任意のものを含む任意の適切な方法で名前解決処理に解決モジュールの集合を適用する。
【００７４】
[0080]任意の適切なユーザー・インターフェースを解決パラメーターを入力するために使用することができる。例えば、幾つかの実施例において、テキストベースのコマンドライン・ツールは解決パラメーターを入力するために使用されてもよい。他の実施例において、グラフィカル・ユーザー・インターフェースは解決パラメーターを入力するために使用されてもよい。図８は、本明細書に記載された原理のうちの幾つかに従って使用され得る１つのそのようなグラフィカル・ユーザー・インターフェースの例を示す。しかし、本発明の実施例は解決パラメーターに対するいかなる特定の入力技術を使用することにも限定されないので、幾つかの実施例が代替的なユーザー・インターフェースを使用し得ることが認識されるべきである。
【００７５】
[0081]グラフィカル・ユーザー・インターフェース８００は、解決パラメーターを入力するために使用され得る多くの制御部（コントロール、controls）を含む。テキストブロック８０２は、図２Ａ及び２Ｂに関して上に記載された「ネーム」パラメーターにおけるように、ネットワークリソースの名前と一致するように使用されるパターンを含む、ネットワークリソースの名前を入力するために使用されてもよい。グラフィカル・ユーザー・インターフェースはまた、ＩＰｓｅｃセキュリティ処理に対して及び／又はＤＮＳＳＥＣなどの安全な名前解決技術に従って識別子に署名することに対して使用され得る認証機関に関連する情報を入力するためのテキストブロック８０４を含んでもよい。ＤＮＳセキュリティに関連する一連の制御部（コントロール）８０６はまた、ＤＮＳＳＥＣ認証を要求するべきか否か、ＩＰｓｅｃを使用するべきか否か、及びＩＰｓｅｃを使用すべき場合にどの種類の暗号化を使用するかなどのパラメーターを示すコントロールとともに、実施されてもよい。別の一連のコントロール８０８はまた、ダイレクト・アクセスなどのオーバーレイ・ネットワークによる使用のために実施されて、ＤＮＳサーバーなどの許容される解決リソースの識別子、使用するプロキシー・サーバーの識別子、ＩＰｓｅｃを使用するべきであるか否か、及びＩＰｓｅｃが実施されるべきである場合のユーザーに対する暗号化の種類などのパラメーターを受け取る。グラフィカル・ユーザー・インターフェース８００はまた、コントロール８０２−８０８の各々に入力されるパラメーターを示す解決パラメーターの組を作成して更新するためのボタン８１０を含む。他のグローバルな解決パラメーターもまた、フレーム８１２を介してグラフィカル・インターフェースへ入力されてもよい。解決パラメーターの組が一旦作成されたならば、それはグラフィカル・ユーザー・インターフェース８００の下部におけるフレーム８１４に表示されてもよく、それはインターフェース８００を使用して入力され得るパラメーターの種類にそろう複数の列を有する。
【００７６】
[0082]グラフィカル・ユーザー・インターフェース８００を使用してパラメーターの組が作成されるか又は更新される場合、当該パラメーターの組は任意の適切なフォーマットで任意の適切なデータ構造に格納されてもよい。データ構造は、図２Ａ及び２Ｂの集合２００Ａ及び２００Ｂなどの解決パラメーターの組の集合を格納するデータ構造に格納されてもよい。これらのデータ構造は、上に議論されるように、任意の適切なコンピューター記憶媒体上に符号化されてもよい。従って、ユーザーがグラフィカル・ユーザー・インターフェース８００を使用してパラメーターを入力する場合、グラフィカル・ユーザー・インターフェース８００は、任意の適切な方法でコンピューター読み取り可能な媒体上に入力パラメーターを記録するために記録処理を開始してもよい。
【００７７】
[0011]本明細書に記載された原理のうちの幾つか又はすべてによって動作する技術は、任意の適切な方法で実施され得る。例えば、幾つかの実施例において、磁気媒体（例えば、ハードディスクドライブ）、コンパクト・ディスク（ＣＤ）、ディジタル・バーサタイル・ディスク（ＤＶＤ）、永続的又は非永続的な固体メモリー（例えば、フラッシュ・メモリー、磁気ＲＡＭなど）、又は任意の他の適切な記憶媒体などの１つ以上のコンピューター読み取り可能な記憶媒体上に符号化されたコンピューター実行可能命令として。当該技術は実施され得る。コンピューター記憶媒体は、図９のコンピューター読み取り可能な記憶媒体９０６として（すなわち、計算装置９００の一部として）、又は別個のコンピューター記憶媒体として実施され得る。本明細書において使用されるとき、「コンピューター読み取り可能な記憶媒体」を含む「コンピューター読み取り可能な媒体」は、その上にデータを記録する処理中にある方法で変更され得る少なくとも１つの物理的な構造を有する有形の記憶媒体を指すことが認識されるべきである。例えば、コンピューター読み取り可能な媒体の物理構造の一部の磁化状態は、記録処理中に変更されてもよい。
【００７８】
[0012]幾つかのそのような実施例において、本明細書に記載された原理に従って動作する技術を実施するコンピューター実行可能命令は、１つ以上のスタンド・アロンの機能モジュール（例えば、上に記載された解決モジュール）として実施され得る。上に記載されるように、「機能モジュール」は、特定の動作上の役割を行うシステムの構造的なコンポーネントであるが、インスタンス化されて、ソフトウェア要素（例えば、関数又は離散処理）の一部又は全体となり得る。一般に、機能モジュールは、特定のタスクを実行するか又は特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。通常、様々な実施例で望まれるように、機能モジュールの機能は組み合わせられてもよいし分散されてもよい。幾つかの実施例において、これらの機能モジュールは、ソフトウェアプログラム・アプリケーションを実施するかもしくは計算装置のオペレーティング・システムを実施する機能モジュールなどの、他の無関係な機能モジュール及び／又はプロセスとインタラクトするように構成されてもよく、また、他の実施例において、モジュールは、ワシントン州レドモンドのマイクロソフト株式会社から入手できるマイクロソフト・ウィンドウズ・オペレーティング・システムなどのオペレーティング・システムのような全体のシステムを当該モジュールとともに形成する、他の機能モジュールとインタラクトするように構成されてもよい（つまり、機能モジュールは、オペレーティング・システムの一部として、又はその外側で実施され得る）。幾つかの実施例において、幾つかの機能モジュールが他のものとは別個に実施され得ること、又は幾つかの機能モジュールが実施されなくてもよいことがさらに認識されるべきである。
【００７９】
[0013]すべての実施例ではなく幾つかの実施例において、本発明の技術は、図１の例示的なコンピューター・システムを含む任意の適切なコンピューター・システムで動作する任意の適切な計算装置上で実行され得るコンピューター実行可能命令として具体化されてもよい。例えば、本明細書において議論された原理のうちの幾つか又はすべてによって動作する技術は、単一の多目的のプログラマブル・デジタル・コンピューター装置、処理能力を共有し本明細書に記載した技術を一緒に実行する２つ以上の多目的のコンピューター装置の協調的なシステム、本明細書に記載した技術を実行することに専念する（一緒に配置され又は地理的に分散された）単一のコンピューター装置又は協調的なコンピューター装置のシステム、本明細書に記載した技術を実行するための１つ以上の特定用途向け集積回路（ＡＳＩＣ）、本明細書に記載した技術を実行するための１つ以上のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、又は任意の他の適切なシステムの上で動作し得る。
【００８０】
[0014]図９は、本明細書に記載された技術を実施するシステムにおいて使用され得る計算装置９００の形式の計算装置の１つの例示的な実施例を示すが、他のものも可能である。さらに、図９が、本明細書に記載した原理に従って動作する計算装置に必要なコンポーネントの描写であるようにも、また包括的な描写であるようにも意図されないことが認識されるべきである。
【００８１】
[0015]計算装置９００は、プロセッサー９０２、ネットワーク・アダプター９０４及びコンピューター読み取り可能な記憶媒体９０６を含んでもよい。計算装置９００は、例えば、デスクトップもしくはラップトップパソコン、ワークステーション、サーバー、メインフレーム、スマートフォン又は任意の他の適切な計算装置であってもよい。ネットワーク・アダプター９０４は、任意の適切なコンピューティング・ネットワークを介して計算装置９００が任意の他の適切な計算装置と通信することを可能にする任意の適切なハードウェア及び／又はソフトウェアであってもよい。コンピューティング・ネットワークは、インターネットを含む、２つ以上のコンピューター間でデータを交換するための任意の適切な有線及び／又は無線通信媒体であってもよい。幾つかの実施例において、ネットワーク・アダプター９０４は、２つ以上の種類のネットワークインターフェース（例えば、イーサネット（登録商標）・アダプターなどの有線ネットワーク・アダプター、及びＩＥＥＥ  ８０２．１１ｇアダプターなどの無線ネットワーク・アダプター）を介して接続を提供する、２つ以上の別個のネットワーク・アダプターとして実施され得る。コンピューター読み取り可能な記憶媒体９０６は、処理されるべきデータ及び／又はプロセッサー９０２によって実行されるべき命令を格納するように構成された任意の適切な有形の記憶媒体であってもよい。プロセッサー９０２は、データ処理及び命令の実行を可能にする。データ及び命令はコンピューター読み取り可能な記憶媒体９０６上に格納され、例えば、計算装置９００のコンポーネント間の通信を可能にし得る。
【００８２】
[0083]コンピューター読み取り可能な記憶媒体９０６上に格納されたデータ及び命令は、本明細書に記載された原理によって動作する技術を実施するコンピューター実行可能命令を含んでもよい。図９の例では、コンピューター読み取り可能な記憶媒体９０６は、上述のように、様々なモジュールを実施し、様々な情報を格納する、コンピューター実行可能命令を格納する。コンピューター読み取り可能な記憶媒体９０６は、計算装置上で実行され得る１つ以上のアプリケーション・プログラム９０８に関連するデータ及び命令を格納する。これらのアプリケーション・プログラムは、ネットワークリソースの第１の識別子を受信し、ネットワークリソースの第２の識別子を得ようとするものを含み得る。コンピューター読み取り可能な記憶媒体９０６はまた、上に記載された例示的な技術のうちの任意のものを含む任意の適切な技術による、第１の識別子に基づいて、ネットワークリソースの第２の識別子を決定するための、名前解決モジュール９１０を含む。コンピューター読み取り可能な記憶媒体９０６はまた、解決パラメーターの組の集合９１２を含む。上述のように、この集合は任意の適切な方法で組織化されフォーマットされてもよく、解決パラメーターは、名前解決モジュール９１０の名前解決処理の実行の管理のために任意の適切なパラメーターを含み得る。１つの実施例において、例えば、集合９１２は、マイクロソフト・ウィンドウズ・オペレーティング・システムのレジストリーの一部としてコンピューター読み取り可能な記憶媒体９０６上で実施され得る。コンピューター読み取り可能な記憶媒体９０６は、名前解決モジュール９１０によって取り出された識別子のキャッシュ９１４をさらに含んでもよい。キャッシュは任意の適切な方法で組織化され、ネットワークリソースの第１及び第２の識別子の組、識別子を得るために使用される解決パラメーターの組、識別子が得られた時間（回数）、及び／又は任意の他の種類の情報を含む、任意の適切な種類の情報も含んでいてもよい。
【００８３】
[0016]最後に、図９の例において、コンピューター読み取り可能な記憶媒体９０６は、解決パラメーターの組の集合に影響を及ぼし、かつ集合の内容を決定するための、アプリケーション・プログラム・インターフェース（ＡＰＩ）機能の組を含んでもよい。例えば、ＡＰＩは、ネットワークリソースの識別子を入力としてとる、特定のネットワークリソースとコンタクトするために使用され得るプロキシーを決定するための、GetProxyInfo関数を実施してもよい。GetProxyInfo関数は、ネットワークリソースに適用される集合中の解決パラメーターの組を見つけるためにリソースの入力識別子を使用してもよく、プロキシー・サーバーが使用されるべきであることを解決パラメーターの組のうちの任意のものが示す場合、プロキシー・サーバーの識別子を返してもよい。GetPolicyTableInfo ＡＰＩ関数もまた、集合の内容（すなわち、解決パラメーターの組）を返すために実施され得る。さらに、GetEffectivePolicy ＡＰＩ関数は、所与の状況に対して適用可能でないかに依存して、集合中の解決パラメーターの組のうちの幾つか（又はすべて）を返すことができる。例えば、解決パラメーターの組のうちの幾つかが特定のネットワークに適用され、計算装置９００がそのネットワークに接続しない場合、次にそれらの組はGetEffectivePolicy関数の出力の一部として返されなくてもよい。また、第２の識別子を決定して当該第２の識別子を返すために、第１の識別子を入力としてとり、解決パラメーターの組の集合によって管理された名前解決処理を実行する、GetAddrInfo関数又はDnsQuery関数が実施されてもよい。本発明の実施例はこの点に限定されないので、これらのＡＰＩ関数が実施され得るＡＰＩ関数の種類の単なる例であることが認識されるべきである。
【００８４】
[0017]本明細書に記載された原理によって動作するモジュール実施技術は、任意の適切な方法でインタラクトしてもよい。図１０は、本明細書に記載された原理のうちの幾つかに従って実施され得るモジュールの１つの例示的な構成を示す。
【００８５】
[0084]図１０の例において、アプリケーション・プログラム１０００は、第１の識別子に対応する第２の識別子を決定するために、接続モジュール１００２及び名前解決モジュール１００４のうちの１つ又は両方とインタラクトする。例えば、アプリケーション・プログラム１０００は、名前解決モジュール１００４に直接問い合わせてもよいし、又は、アプリケーション・プログラム１０００は、第１の識別子を使用し、接続モジュール１００２を使用して、ネットワークリソースに対する接続を開始することを試みてもよいし、接続モジュールは、接続を開始する際に使用するために名前解決モジュールからの第２の識別子を要求してもよい。名前解決モジュール１００４は、第２の識別子を得ることを試みる際に、上述のように解決パラメーター１００６の組の集合を使用してもよく、上述のように識別子のキャッシュ１００８をさらに使用してもよい。最後に、第２の識別子を得るために解決パラメーター１００６の集合を使用する際に、名前解決モジュール１００４はまた、解決リソースに対する接続を開始するための接続モジュール１０１２、並びに集合中の解決パラメーターによって指示され得る任意のセキュリティ処理を行うための認証及び／又は暗号化モジュール１０１４及び１０１６を含む、様々な接続技術１０１０を使用してもよい。
【００８６】
[0085]このように本発明の少なくとも１つの実施例の幾つかの態様について記載してきたが、様々な変更、修正及び改良が当業者にとって容易に思い付くことが認識されるべきである。
【００８７】
[0086]そのような変更、修正及び改良は、本開示の一部であるように意図され、本発明の趣旨及び範囲内にあるように意図される。したがって、前述の記載及び図面はほんの一例としてのものである。
【００８８】
[0087]本発明の様々な態様は、単独でも、組合せても、又は、前述のものにおいて記載された実施例で具体的に説明されなかった様々な構成においても、使用することができ、したがって、その用途において、前述の記載において述べられた又は図面において示されたコンポーネントの詳細及び構成に限定されるものではない。例えば、１つの実施例に記載された態様は、任意の方法で他の実施例に記載された態様と組み合わされてもよい。
【００８９】
[0088]また、本発明は方法として具体化することができ、その例が提供された。方法の一部として実行される動作は任意の適切な方法で順序付けられてもよい。したがって、示されたものとは異なる順序で動作が実行される実施例が理解されてもよく、たとえ実例となる実施例において連続的な動作として示されたとしても、幾つかの動作を同時に実行することを含んでもよい。
【００９０】
[0089]請求項の要素を修飾するために「第１」、「第２」、「第３」などの順序の用語を請求項において使用することは、それ自体では、方法の動作が実行される別の又は時間的順序に対する１つの請求項要素のいかなる優先度も、優先順位も、順序も暗示せず、請求項要素を区別するために、（順序の用語の使用を別にすれば）ある名前を有する１つの請求項要素を同じ名前を有する別の要素と区別するためのラベルとして使用されるにすぎない。
【００９１】
[0090]また、本明細書において使用される表現及び専門用語は、説明のためのものであり、限定するものとして見なされるべきでない。本明細書における「含む」、「備える」、「有する」、「包含する」、「伴う」、及びそれらの変形の使用は、それ以降にリストされる項目及びそれらの同等物のほか、追加の項目を包含するように意味される。
【図１】
0005480264.tif 000002
【図２Ａ】
0005480264.tif 000003
【図２Ｂ】
0005480264.tif 000004
【図３】
0005480264.tif 000005
【図４】
0005480264.tif 000006
【図５】
0005480264.tif 000007
【図６】
0005480264.tif 000008
【図７】
0005480264.tif 000009
【図８】
0005480264.tif 000010
【図９】
0005480264.tif 000011
【図１０】
0005480264.tif 000012