(57)【要約】  エンドポイント登録およびピアツーピアネットワークのクラウドデータを送受信するためのアプリケーションプログラムインターフェース（ＡＰＩ）は、エンドポイントデータをピアツーピアネットワークに追加する登録呼び出しを備える。ＡＰＩは、アドレス情報に関する明示的データを受け取るか、またはピアツーピアネットワークのトポロジが変化するときに好適なアドレス情報を選択し、維持する命令を受け取ることができる。情報ピアツーピアネットワークエンドポイントデータを取り出すブロッキングおよび非ブロッキング呼び出しが公開される。【選択図】図１
2009510638.tif 000002
【特許請求の範囲】
【請求項１】
ライフサイクルにおいてピアツーピアネットワークへの参加をサポートするデータを伝達する方法を実行するためのコンピュータ実行可能命令を格納するコンピュータ可読媒体であって、前記方法は、
前記ピアツーピアネットワーク内のエンドポイントのステータスの変化に関してクラウド内の他のノードに通知する呼び出しを処理するステップと、
前記ピアツーピアネットワーク内の少なくとも１つの他のエンドポイントに関して名前登録データを交換する呼び出しを処理するステップと、
前記ピアツーピアネットワーク内の前記少なくとも１つの他のエンドポイントに関して前記名前登録データのうちの１つを報告する呼び出しを処理するステップとを含み、前記名前登録データは、ピア識別子、アドレス／ポートの対の個数、アドレス／ポートの対の配列、および前記少なくとも１つの他のエンドポイントに対応するペイロードのうちの少なくとも１つを有するデータ構造体を含み、ｎｕｌｌ値がエンドポイントが見つからなかったことを示すデータであることを特徴とするコンピュータ可読媒体。
【請求項２】
前記エンドポイントのステータスの変化に関してクラウド内の他のノードに通知する前記呼び出しを処理するステップは、
ピア名を含む複数の呼び出しパラメータを有するエンドポイントデータを分配する呼び出しを受け取るステップと、
前記エンドポイントに関連する登録ハンドルを含むパラメータで応答するステップとを含む請求項１に記載のコンピュータ実行可能命令を格納するコンピュータ可読媒体。
【請求項３】
前記エンドポイントのステータスの変化に関してクラウド内の他のノードに通知する呼び出しを処理するステップは、
ピア名、１つまたは複数のクラウドを指定するクラウドデータ、および１つまたは複数のアドレス／ソケット情報の対のうちの少なくとも１つを含む複数の呼び出しパラメータを有するＰｅｅｒＰｎｒｐＲｅｇｉｓｔｅｒ呼び出しを受け取るステップを含む請求項１に記載のコンピュータ実行可能命令を格納するコンピュータ可読媒体。
【請求項４】
前記エンドポイントのステータスの変化に関してクラウド内の他のノードに通知する呼び出しを処理するステップは、前記エンドポイントに関連付けられている登録ハンドルおよび更新された登録データのうちの少なくとも１つを含む複数の呼び出しパラメータに関する登録データを変更する呼び出しを受け取るステップを含み、前記更新された登録データは１つまたは複数のクラウドを指定するクラウドデータおよび１つまたは複数のアドレス／ソケット情報の対のうちの少なくとも１つを含む請求項１に記載のコンピュータ実行可能命令を格納するコンピュータ可読媒体。
【請求項５】
前記エンドポイントのステータスの変化に関してクラウド内の他のノードに通知する呼び出しを処理するステップは、前記ピア名に関連付けられている登録ハンドルを含む呼び出しパラメータを有するエンドポイントに関連付けられている登録データを削除する呼び出しを受け取るステップを含む請求項１に記載のコンピュータ実行可能命令を格納するコンピュータ可読媒体。
【請求項６】
前記ピアツーピアネットワーク内の少なくとも１つの他のエンドポイントに関する名前登録データを交換する前記呼び出しを処理するステップは、
ピア名、クラウド名、および戻す結果の最大数のうちの少なくとも１つを含む複数の呼び出しパラメータを有するエンドポイント情報をブロッキング方式で収集する要求を受け取るステップと、
エンドポイントのゼロ個またはそれ以上のインスタンスに関するエンドポイント情報で応答するステップとを含む請求項１に記載のコンピュータ実行可能命令を格納するコンピュータ可読媒体。
【請求項７】
前記ピアツーピアネットワーク内の少なくとも１つの他のエンドポイントに関する名前登録データを交換する呼び出しを処理するステップは、
ピア名、クラウド名、および戻す結果の最大数のうちの少なくとも１つを含む複数の呼び出しパラメータを有するエンドポイント情報を非ブロッキング方式で収集する要求を受け取るステップを含む請求項１に記載のコンピュータ実行可能命令を格納するコンピュータ可読媒体。
【請求項８】
さらに、コールバック、およびイベントハンドルを有するシグナルのうちの一方により結果を返すステップを含む請求項７に記載のコンピュータ実行可能命令を格納するコンピュータ可読媒体。
【請求項９】
前記ピアツーピアネットワーク内の少なくとも１つの他のエンドポイントに関する名前登録データを交換する呼び出しを処理するステップは、
インプロセス解決要求に関連付けられている少なくとも１つのイベントハンドルを含む呼び出しパラメータを有する前記インプロセス解決要求を停止する要求を受け取るステップを含む請求項１に記載のコンピュータ実行可能命令を格納するコンピュータ可読媒体。
【請求項１０】
前記ピアツーピアネットワーク内の前記少なくとも１つの他のエンドポイントに関する前記データを報告する呼び出しを処理するステップは、
以前の解決要求に関連付けられているイベントハンドルを含む少なくとも１つの呼び出しパラメータを有する前記以前の解決要求の結果に対応するデータを受け取る要求を受け取るステップを含み、前記イベントハンドルは、ゼロ個またはそれ以上のエンドポイントに関する情報を有するデータ構造体を指し、前記データ構造体は他のエンドポイントのゼロ個またはそれ以上のピア識別子、前記他のエンドポイントに関連付けられている多数のアドレス／ポートの対、前記ペイロードのバイト数、および前記他の（複数の）エンドポイントに対する情報のペイロードに対応するエントリを有する請求項１に記載のコンピュータ実行可能命令を格納するコンピュータ可読媒体。
【請求項１１】
要求側プロセスとピアツーピアネットワーク内の通信をサポートするサービス提供側プロセスとの間で通信を行う方法であって、
第１のエンドポイントと前記ピアツーピアネットワーク内の、クラウドのメンバーおよび他のエンドポイントのうちの１つである少なくとも１つの他のエンティティとの間でデータを交換する呼び出しを処理するステップと、
前記ピアツーピアネットワーク内の前記少なくとも１つの他のエンドポイントに関する前記データを報告する呼び出しを処理するステップとを含む方法。
【請求項１２】
データを交換する呼び出しを処理する前記ステップは、
前記要求側プロセスにより、ＰｅｅｒＰｎｒｐＧｅｔＣｌｏｕｄＩｎｆｏ呼び出しを発行してすべてのクラウド名を取り出すステップと、
前記サービス提供側プロセスにより、ＰｅｅｒＰｎｒｐＧｅｔＣＩｏｕｄＩｎｆｏ呼び出しを受け取るステップと、
前記サービス提供側プロセスにより前記要求側プロセスに、返された多数のクラウド名および前記返されたクラウド名のそれぞれに対応する情報を含む応答を発行するステップとを含む請求項１１に記載の方法。
【請求項１３】
データを交換する呼び出しを処理する前記ステップは、
前記要求側プロセスにより、ピア名、クラウド名、および返すべき最大数の結果のうちの少なくとも１つを含むＰｅｅｒＰｎｒｐＲｅｓｏｌｖｅ要求を発行するステップと、
前記サービス提供側プロセスにより、ブロッキング方式で前記要求を処理する、ＰｅｅｒＰｎｒｐＲｅｓｏｌｖｅ要求を受け取るステップと、
前記サービス提供側プロセスにより前記要求側プロセスに、結果が利用可能であることを通知し、前記結果を取り出す際に使用するイベントハンドルを含む応答を発行するステップとを含む請求項１１に記載の方法。
【請求項１４】
データを交換する呼び出しを処理する前記ステップは、
前記要求側プロセスにより、ピア名、クラウド名、および返すべき最大数の結果のうちの少なくとも１つを含むＰｅｅｒＰｎｒｐＳｔａｒｔＲｅｓｏｌｖｅ要求を発行するステップと、
前記サービス提供側プロセスにより、非ブロッキング方式で前記要求を処理する、ＰｅｅｒＰｎｒｐＳｔａｒｔＲｅｓｏｌｖｅ要求を受け取るステップと、
前記サービス提供側プロセスにより前記要求側プロセスに、結果が利用可能であることを通知し、前記結果を取り出す際に使用するイベントハンドルを含む応答を発行するステップとを含む請求項１１に記載の方法。
【請求項１５】
データを交換する呼び出しを処理する前記ステップは、
前記要求側プロセスにより、エンドポイントデータを少なくとも１つの関連付けられているクラウドに追加する、ピア名を含むＰｅｅｒＰｎｒｐＲｅｇｉｓｔｅｒ呼び出しを発行するステップと、
前記サービス提供側プロセスにより、ＰｅｅｒＰｎｒｐＲｅｇｉｓｔｅｒ呼び出しを受け取り、前記エンドポイントおよびピア名に関するデータをゼロ個またはそれ以上の他のエンティティに送信するステップと、
前記サービス提供側プロセスにより、前記エンドポイントデータに関連付けられている登録ハンドルを含む応答を前記要求側プロセスに発行するステップとを含む請求項１１に記載の方法。
【請求項１６】
前記要求側プロセスにより、ＰｅｅｒＰｎｒｐＲｅｇｉｓｔｅｒ呼び出しを発行するステップは、
前記要求側プロセスにより、エンドポイントデータを少なくとも１つの関連付けられているクラウドに追加するＰｅｅｒＰｎｒｐＲｅｇｉｓｔｅｒ呼び出しを発行するステップを含み、前記呼び出しはピア名と少なくとも１つの登録パラメータを含み、前記登録パラメータはクラウド名、公開するアドレスの個数、アドレス／ソケットの対の配列、自動的に選択されたアドレスに対するポート、コメントフィールド、および前記登録に対応する情報のペイロードのうちの少なくとも１つを含む請求項１５に記載の方法。
【請求項１７】
データを交換する呼び出しを処理する前記ステップは、
前記要求側プロセスにより、前記ピアツーピアネットワークの少なくとも一部の中のエンドポイントデータを更新する、ピア名および更新されたエンドポイントデータを含むＰｅｅｒＰｎｒｐＵｐｄａｔｅＲｅｇｉｓｔｒａｔｉｏｎ呼び出しを発行するステップと、
前記サービス提供側プロセスにより、ＰｅｅｒＰｎｒｐＵｐｄａｔｅＲｅｇｉｓｔｒａｔｉｏｎ呼び出しを受け取り、前記ピア名および更新されたエンドポイントデータを含むデータを少なくとも１つ他の周辺エンティティに送信するステップとを含む請求項１１に記載の方法。
【請求項１８】
ピアツーピアネットワークに参加するように適合されたコンピュータであって、
ネットワークを介してデータを交換するためのネットワーク通信デバイスと、
機械可読命令を格納するメモリと、
プロセッサであって、
ピア名と単一の属性事前定義値とを持つ、ピアツーピアネットワークエンドポイントを登録する呼び出しを処理するステップと、
前記ピアツーピアネットワークに登録する有効なアドレスを選択するステップとを含む方法を実行する機械可読命令を実行するプロセッサとを備えるコンピュータ。
【請求項１９】
前記メモリは、
ホストマシンアドレスが変更されたときに前記有効なアドレスを自動的に更新するステップをさらに含む前記方法を実行する命令を格納する請求項１８に記載のコンピュータ。
【請求項２０】
前記メモリは、
前記新しいクラウドが発見されたときに新しいクラウド内の前記有効なアドレスを自動的に更新するステップをさらに含む前記方法を実行する命令を格納する請求項１８に記載のコンピュータ。
【発明の詳細な説明】
【背景技術】
【０００１】
ピアツーピアネットワーキングでは、地理またはネットワーク特性により関連付けられているコンピュータの接続によりコラボレーションおよび共有のための様々な機会を利用することができる。サービス、ファイル、データ、およびプログラム製品を提供し、発見する機会があれば、コンピューティング資源の柔軟性が高まり、また利用度も向上する。
【０００２】
ピアツーピアネットワークは、クラウドと呼ばれるクラスタにまとめられた複数のコンピュータの類似のグルーピングを含むことができる。クラウドは、そのスコープにより、または部門が関連付けられるような他の属性により識別することができる。所定の会社または組織実体内に、複数のクラウドが存在しうる。ピアツーピアネットワーク上で利用可能な製品は、エンドポイントと呼ばれる。エンドポイントは、コンピュータ、ファイル、またはプログラムとすることができる。しかし、エンドポイントは、さらに、ピアツーピアネットワーク上の複数の物理的な場所で利用可能なサービスを含むことができる、つまり、サービスは、複数のインターネットプロトコルアドレスおよび／またはＩＰアドレスを持つことができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ピアツーピアネットワークとのコンタクトを確立するか、またはコンタクトを維持することを望んでいるエンドポイントは、「ピア名解決プロトコル」（ＰＮＲＰ）と呼ばれるサービスを使用することができる。ＰＮＲＰは、現在、ＧｅｔＡｄｄｒＩｎｆｏアプリケーションプログラムインターフェース（ＡＰＩ）またはＷｉｎｓｏｃｋ  Ｎａｍｅｓｐａｃｅ  Ｐｒｏｖｉｄｅｒ  ＡＰＩという２つのメカニズムを介してアクセス可能である。ＧｅｔＡｄｄｒＩｎｆｏ  ＡＰＩは、比較的単純であり、ＰＮＲＰの機能すべてが利用可能なわけではない。ＮａｍｅｓｐａｃｅＰｒｏｖｉｄｅｒ  ＡＰＩは、ＰＮＲＰのすべての機能をサポートしているが、一部の開発者にとっては、扱いにくく、使用するのが難しいものであることがわかっている。従来技術のＡＰＩでは、コーディング面の問題以上に、ＰＮＲＰを組み込んだシステムをデバッグすることの難しさが増した。ＰＮＲＰ、そしてそれに続く、ピアツーピアネットワーキング用のＰＮＲＰを通じて利用可能なロバストな機能の採用は、現在利用できるＡＰＩを使用することが困難であるため妨げられている。
【課題を解決するための手段】
【０００４】
Ｓｉｍｐｌｅ  ＰＮＲＰ  ＡＰＩは、ＰＮＲＰで利用できるすべての機能を公開し、その一方で、ピアツーピアネットワークを構築し、維持することに関連するプログラミングおよび管理のオーバーヘッドを簡素化する。概して、ピアツーピアネットワーク内のエンドポイント情報を登録し、更新するための呼び出しのあるクラス、およびピアツーピアネットワーク内のエンドポイントを発見するための呼び出しのあるクラスがある。発見呼び出しは、ブロッキングまたは非ブロッキングとすることができる。これらの簡素化された呼び出しの使用は、ピアツーピアネットワーク向けのＰＮＲＰの開発および使用を合理化することによりＰＮＲＰの利用を高めると期待される。
【０００５】
Ｓｉｍｐｌｅ  ＰＮＲＰ  ＡＰＩの使用は、ＰＮＲＰインターフェースをコーディングする開発者の負担を大幅に緩和し、開発および試験の際のデバッグプロセスを簡素化する。Ｓｉｍｐｌｅ  ＰＮＲＰ  ＡＰＩは、ますます増えてゆく民生用アプリケーション、業務用アプリケーション、およびビジネスアプリケーションにおけるＰＮＲＰの採用を大きく推進し、それを通じて、ピアツーピアネットワーキングの採用を促進することが期待される。
【発明を実施するための最良の形態】
【０００６】
以下の本文では多数の異なる実施形態の詳細な説明を述べているが、説明の正当な範囲は、本開示の終わりで規定されている請求項の記述により定義されることは理解されるであろう。この詳細な説明は、一例にすぎないものとして解釈すべきであり、可能なすべての実施形態を説明することは不可能ではないとしても実用的ではないため、可能なすべての実施形態を説明しない。現行技術またはこの特許の出願日以降に開発された技術を使用して多数の代替え実施形態を実装することが可能であり、これは、請求項の範囲内にそのまま入るであろう。
【０００７】
「本明細書で使用されているように、「＿＿」という用語は、ここでは、．．．を意味するものとして定義される」という言い回しまたは類似の文を使用して本特許で明示的に定義されていない限り、自明または通常の意味を超えて、明示的に、または暗黙のうちに、その言い回しの意味を制限する意図はなく、そのような言い回しは、本特許の節にある陳述（請求項の文言以外）に基づき範囲を制限されるものと解釈すべきではないことも理解されるであろう。本特許の末尾の請求項に記載の言い回しが単一の意味と一致する形で本特許において参照されている限り、それは読者を混乱させないようにわかりやすくするだけのために行われており、そのような請求項の言い回しが暗黙のうちに、または他の何らかの形で、その単一の意味に制限されることは意図されていない。最後に、請求要素が構造の記載なしに「手段」という単語および機能を記載することにより定義されていない限り、請求要素の範囲が３５Ｕ．Ｓ．Ｃ．§１１２第６段落の適用に基づいて解釈されることは意図されていない。
【０００８】
本発明の機能の大半および本発明の原理の多くは、ソフトウェアプログラムまたは命令および特定用途向けＩＣなどの集積回路（ＩＣ）により、またはその中に実装するのが最もよい。当業者であれば、例えば、使用可能時間、現行技術、および経済上の考慮事項に起因する多大な労力と多くの設計選択は、本明細書で開示されている概念および原理に導かれたときに、実験を最小限度に抑えつつ、そのようなソフトウェアの命令およびプログラムならびにＩＣを容易に生成することができることは予測される。したがって、本発明による原理および概念を簡潔に説明し、わかりにくくする危険性を最小限に抑えるために、このようなソフトウェアおよびＩＣのさらなる説明は、もしれあれば、好ましい実施形態の原理および概念に関する本質に制限される。
【０００９】
図１および２は、本開示に関係するネットワークおよび計算プラットフォームの構造上の基礎を示している。
図１は、ネットワーク１０を示している。ネットワーク１０は、インターネット、仮想プライベートネットワーク（ＶＰＮ）、または１つまたは複数のコンピュータ、通信デバイス、データベースなどが互いに通信するように接続することを可能にする他のネットワークとしてよい。ネットワーク１０は、パーソナルコンピュータ１２およびコンピュータ端末１４に、イーサネット１６とルータ１８、および地上回線２０を介して接続することができる。イーサネット１６は、より大きなインターネットプロトコルネットワークのサブネットとすることができる。プロジェクタまたはプリンタ（図には示されていない）などの他のネットワーク接続資源も、イーサネット１６または他のデータネットワークを介してサポートできる。その一方で、ネットワーク１０は、無線通信ステーション２６および無線リンク２８を介してラップトップコンピュータ２２およびデータアシスタント２４に無線接続することができる。同様に、サーバ３０は、通信リンク３２を使用してネットワーク１０に接続することができ、メインフレーム３４は、他の通信リンク３６を使用してネットワーク１０に接続することができる。ネットワーク１０は、ピアツーピアネットワークトラヒックをサポートするのに好都合である。
【００１０】
図２は、コンピュータ１１０の形態のコンピューティングデバイスを例示している。コンピュータ１１０のコンポーネントとしては、限定はしないが、演算処理装置１２０、システムメモリ１３０、およびシステムメモリを備える様々なシステムコンポーネントを演算処理装置１２０に結合するシステムバス１２１などがある。システムバス１２１は、メモリバスまたはメモリコントローラ、周辺機器バス、および様々なバスアーキテクチャを使用するローカルバスを含む数種類のバス構造のうちのいずれでもよい。例えば、限定はしないが、このようなアーキテクチャとしては、Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ）バス、Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＭＣＡ）バス、Ｅｎｈａｎｃｅｄ  ＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカルバス、およびＭｅｚｚａｎｉｎｅバスとも呼ばれるＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バスがある。
【００１１】
コンピュータ１１０は、典型的には、様々なコンピュータ可読媒体を備える。コンピュータ可読媒体は、コンピュータ１１０によってアクセスされることができる媒体であればどのような媒体でも使用可能であり、揮発性および不揮発性媒体、取り外し可能および取り外し不可能媒体を含む。例えば、限定はしないが、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造体、プログラムモジュール、またはその他のデータなどの情報を格納する方法または技術で実装される揮発性および不揮発性、取り外し可能および取り外し不可能媒体を含む。コンピュータ記憶媒体としては、限定はしないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたはその他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多目的ディスク（ＤＶＤ）またはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶デバイス、または所望の情報を格納するために使用することができ、しかもコンピュータ１１０によりアクセスできるその他の媒体がある。通信媒体は、通常、コンピュータ可読命令、データ構造体、プログラムモジュール、または搬送波もしくはその他のトランスポートメカニズムなどの変調データ信号によるその他のデータを具現するものであり、任意の情報配信媒体を含む。「変調データ信号」という用語は、信号内に情報を符号化するような方法で特性のうちの１つまたは複数が設定または変更された信号を意味する。例えば、限定はしないが、通信媒体としては、有線ネットワークまたは直接配線接続などの有線媒体、および、音響、高周波、赤外線、およびその他の無線媒体などの無線媒体がある。上記のいずれの組合せもコンピュータ可読媒体の範囲に収まらなければならない。
【００１２】
システムメモリ１３０は、読み取り専用メモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２などの揮発性および／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動時などにコンピュータ１１０内の要素間の情報伝送を助ける基本ルーチンを含む基本入出力システム１３３（ＢＩＯＳ）は、通常、ＲＯＭ  １３１に格納される。通常、ＲＡＭ  １３２は、演算処理装置１２０に直接アクセス可能な、および／または演算処理装置１２０によって現在操作されているデータおよび／またはプログラムモジュールを格納する。例えば、限定はしないが、図２は、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７を例示している。
【００１３】
コンピュータ１１０はさらに、その他の取り外し可能／取り外し不可能な揮発性／不揮発性コンピュータ記憶媒体を備えることもできる。例にすぎないが、図２は、取り外し不可能な不揮発性磁気媒体の読み書きを行うハードディスクドライブ１４１、取り外し可能な不揮発性磁気ディスク１５２の読み書きを行う磁気ディスクドライブ１５１、およびＣＤＲＯＭまたはその他の光媒体などの取り外し可能な不揮発性光ディスク１５６の読み書きを行う光ディスクドライブ１５５を例示している。例示的な動作環境において使用できる他の取り外し可能／取り外し不可能な揮発性／不揮発性コンピュータ記憶媒体としては、限定はしないが、磁気テープカセット、フラッシュメモリカード、デジタル多目的ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどがある。ハードディスクドライブ１４１は、典型的には、インターフェース１４０などの取り外し不可能メモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、典型的には、インターフェース１５０などの取り外し可能メモリインターフェースによりシステムバス１２１に接続される。
【００１４】
図２に例示されている上記のドライブおよび関連コンピュータ記憶媒体は、コンピュータ１１０用のコンピュータ可読命令、データ構造体、プログラムモジュール、およびその他のデータを格納する機能を備える。例えば、図２では、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７を格納するものとして例示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７と同じである場合もあれば異なる場合もあることに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７に対しては、ここで、異なる番号を割り当てて、最低でも、それらが異なるコピーであることを示している。ユーザは、キーボード１６２、およびマウス、トラックボール、またはタッチパッドと一般に呼ばれるカーソル制御デバイス１６１などの入力デバイスを介してコンピュータ２０にコマンドおよび情報を入力できる。Ｗｅｂカメラ（ウェブカム）などのカメラ１６３は、ユーザの画像を供給するなど、コンピュータ１１０に関連する環境の画像を取り込み、入力することができる。ウェブカム１６３は、オンデマンドで、例えば、ユーザにより指示されたときに画像を取り込むか、またはコンピュータ１１０の制御の下で定期的に写真を撮ることができる。他の入力デバイス（図に示されていない）としては、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどがある。これらの入力デバイスやその他の入力デバイスは、システムバスに結合されている入力インターフェース１６０を介して演算処理装置１２０に接続されることが多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースおよびバス構造により接続することもできる。モニタ１９１またはその他の種類の表示デバイスも、グラフィックスコントローラ１９０などのインターフェースを介してシステムバス１２１に接続される。モニタの他に、コンピュータはさらにスピーカ１９７およびプリンタ１９６などの他の周辺出力デバイスも備えることができ、これらは出力周辺機器インターフェース１９５を介して接続することができる。
【００１５】
コンピュータ１１０は、リモートコンピュータ１８０などの１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク接続環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、またはその他の共通ネットワークノードでもよく、典型的には、コンピュータ１１０に関係する上述の要素の多くまたはすべてを含むが、メモリ記憶デバイス１８１だけが図２に例示されている。図２に示されている論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含むこともできる。このようなネットワーキング環境は、オフィス、企業全体にわたるコンピュータネットワーク、イントラネット、およびインターネットでは一般的である。
【００１６】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ１１０は、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ  １７１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ１１０は、典型的には、インターネットなどのＷＡＮ  １７３上で通信を確立するためモデム１７２またはその他の手段を備える。モデム１７２は、内蔵でも外付けでもよいが、入力インターフェース１６０または他の適切なメカニズムを介してシステムバス１２１に接続されうる。ネットワーク接続環境では、コンピュータ１１０またはその一部に関して示されているプログラムモジュールは、リモートメモリ記憶装置デバイスに格納されうる。例えば、限定はしないが、図２はリモートアプリケーションプログラム１８５をメモリデバイス１８１に置かれているものとして例示している。
【００１７】
通信接続１７０  １７２により、デバイスは他のデバイスと通信することができる。複数の通信接続１７０  １７２は、通信媒体の一実施例である。通信媒体は、通常、コンピュータ可読命令、データ構造体、プログラムモジュール、または搬送波もしくはその他のトランスポートメカニズムなどの変調データ信号によるその他のデータを具現するものであり、任意の情報配信媒体を含む。「変調データ信号」は、信号内の情報を符号化する方法によりその特性のうち１つまたは複数が設定または変更された信号であるとしてよい。例えば、限定はしないが、通信媒体としては、有線ネットワークまたは直接配線接続などの有線媒体、および、音響、ＲＦ、赤外線、およびその他の無線媒体などの無線媒体がある。コンピュータ可読媒体は、記憶媒体と通信媒体の両方を含むことができる。
【００１８】
図３は、図１のネットワーク１０に類似の、または結合できる、例示的なピアツーピアネットワークを示している。ピアツーピアネットワーク２００は、ネットワーク２０８  ２１０  ２１２により結合された個別のクラウド２０２  ２０４  ２０６を持つことができる。これらのネットワークは、有線でも無線でもよく、インターネットプロトコルバージョン６（ＩＰｖ６）をサポートすることができる。クラウド２０２は、コンピュータ２１４  ２１６を備えることができる。それぞれのコンピュータは、複数のエンドポイントをサポートすることができ、例えば、エンドポイント１  ２１８およびエンドポイント２  ２２０をサポートするコンピュータ２１６が示されている。コンピュータ２２２および２２４を備えるクラウド２０４が図に示されている。３つのエンドポイント２２６  ２２８および２３０をサポートするコンピュータ２２４が図に示されている。コンピュータ２３２および２３４を備えるクラウド２０６が図に示されている。この実施例に関しては、エンドポイントをサポートするクラウド２０６のコンピュータは図に示されていない。この例示的な実施形態では、それぞれのコンピュータおよびその関連するエンドポイントが、それぞれのクラウド２０２  ２０４  ２０６内に示されており、これはおそらくネットワークトポロジを示している。
【００１９】
エンドポイント２１８  ２２０  ２２６  ２２８  ２３０はそれぞれ、プロセス、ファイル、ｌＰアドレスなどとすることができる。それぞれのエンドポイントは、それぞれのクラウド内のピアツーピアネットワーク２００上で発見されるように明示的に登録されなければならない。例えば、１つのエンドポイント２１８が、クラウド２０２において登録することを望んでいる場合、後述のＰｅｅｒＰＮＲＰＲｅｇｉｓｔｅｒ呼び出しを使用することができる。ＰｅｅｒＰＮＲＰＲｅｇｉｓｔｅｒ呼び出しは、それ専用のリンクローカルクラウド２０２に制限されるようにできる。同様に、クラウド２０４内のエンドポイント、例えば、エンドポイント２３０は、ローカルでクラウド２０４内に登録できる。ＰｅｅｒＰＮＲＰＵｐｄａｔｅＲｅｇｉｓｔｒａｔｉｏｎ呼び出しは、エンドポイントに関するデータ、例えば、ＩＰアドレスが変更された場合に使用することができる。エンドポイントが、ピアツーピアネットワークから削除されることを望んでいる場合、ＰｅｅｒＰＮＲＰＵｎｒｅｇｉｓｔｅｒ呼び出しが発行されることができる。ピアツーピアネットワークを通じてピアツーピアネットワーク登録情報を伝播させる方法は、知られており、またきちんと文書化されており、したがって、ここではこれ以上説明しない。
【００２０】
図４は、ピアツーピアネットワーキングのより複雑な実施形態を表している。ピアツーピアネットワーク３００は、クラウド３０２、３０４、および３０６を備える。クラウドは、それぞれのネットワーク接続３０８、３１０、および３１２により結合することができる。クラウド３０２内のコンピュータ３１４は、１つまたは複数のエンドポイント（図に示されていない）を持つことができる。コンピュータ３１６は、クラウドの外部にあるが、クラウド３０２内のエンドポイント１  ３２２を、クラウド３０４内にエンドポイント２  ３２４を有する。この方法で構成されたコンピュータ３１６は、トポロジ的に編成されたネットワーク内の異なるポイントに接続でき、また異なるネットワーク内の異なるエンドポイントを公開することができる。
【００２１】
コンピュータ３１８は、クラウド３０６内にあるように示されているが、コンピュータ３２０は、クラウド３０４と３０６の両方で構成されるように示されている。この場合、コンピュータ３２０は、クラウド３０４と３０６の両方の論理要素であってよい。これは、エンドポイント３２６を両方のクラウドにおいて同時に公開することができる。
【００２２】
登録指向の呼び出しに関する入出力情報および構造文書が続く。登録後、ハンドルを返し、そのハンドルを持つ特定のエンドポイントに関して将来の呼び出しで使用することができる。
【００２３】
エンドポイントデータを返す呼び出しは、空集合を返すことができる、言い換えると、データを何も返さない。これは、クラウドまたはエンドポイントに対する名前登録データを既存のエンティティと一致し得ない場合と考えられる。この場合、データを伴わずに戻ることが、重要であり、有用である。
【００２４】
ＰｅｅｒＰｎｒｐＲｅｇｉｓｔｅｒ−このメソッドは、ＰＮＲＰエンドポイントを登録するために使用される。このインフラストラクチャは、登録するすべてのクラウド内のアドレスを選び、アドレス変更イベント、再登録を必要に応じて監視する。
【００２５】
【表１】
2009510638.tif 000003
【００２６】
【表２】
2009510638.tif 000004
【００２７】
【表３】
2009510638.tif 000005
【００２８】
ＰＥＥＲ＿ＰＮＲＰ＿ＲＥＧＩＳＴＥＲ＿ＩＮＦＯは、登録を実行する方法に関する追加情報を示す。概念的には、ＡＰＩの単純モードは、この引数に対しｎｕｌｌをわたす。複雑な設定は、実際には構造体を使用することによりアクセスされる。
【００２９】
【表４】
2009510638.tif 000006
【００３０】
ＰｅｅｒＰｎｒｐＲｅｇｉｓｔｅｒの呼び出しの中のｐＲｅｇＩｎｆｏは、ＮＵＬＬであってよい。これは、以下の値とともにＰＥＥＲ＿ＰＮＲＰ＿ＲＥＧＩＳＴＥＲ＿ｌＮＦＯをわたすことと同等である。
【００３１】
【表５】
2009510638.tif 000007
【００３２】
ＰＥＥＲ＿ＰＮＲＰ＿ＡＵＴＯ＿ＡＤＤＲＥＳＳＥＳが使用される場合（またはＮＵＬＬがｐＲｅｇｌｎｆｏにわたされる場合）、ＡＰＩは、登録するアドレスに対し適切な値を選択するだけでなく、それらの登録を最新状態に保つ。新しいクラウドが出現すると、それらに自動的に登録する。ローカルマシン上のアドレスが変更された場合、現在の登録は、新しいアドレスで更新される。
【００３３】
ＰｅｅｒＰｎｒｐＵｐｄａｔｅＲｅｇｉｓｔｒａｔｉｏｎ−このメソッドは、ＰＮＲＰエンドポイントの登録を更新するために使用される。
【００３４】
【表６】
2009510638.tif 000008
【００３５】
【表７】
2009510638.tif 000009
【００３６】
登録に関するすべての事柄が、変更できるわけではない。特に、クラウド名は、変更することができず、ｃＡｄｄｒｅｓｓｅｓは、自動選択されたアドレスと指定されたアドレスとの間で切り替えられない。更新された登録データは、１つまたは複数のクラウドを指定するデータおよび１つまたは複数のアドレス／ソケット情報の対に関するデータを含むことができるが、与えられた対について、アドレスまたはソケット情報はｎｕｌｌであってもよい。
【００３７】
ＰｅｅｒＰｎｒｐＵｎｒｅｇｉｓｔｅｒ−このメソッドは、ＰＮＲＰエンドポイント登録を削除する。
【００３８】
【表８】
2009510638.tif 000010
【００３９】
【表９】
2009510638.tif 000011
【００４０】
ピアツーピアネットワーク２００への参加者は、ピアツーピアネットワーク上で利用可能な資源、例えば、他のエンドポイントに関する情報を収集することを望んでいる場合がある。Ｓｉｍｐｌｅ  ＰＮＲＰ  ＡＰＩでは、クラウドおよび他のエンドポイントに関する情報を決定するための複数の呼び出しをサポートする。クラウド情報は、後述のように、ＰｅｅｒＰｎｒｐＧｅｔＣｌｏｕｄＩｎｆｏ呼び出しを発行することにより返すことができる。
【００４１】
ＰｅｅｒＰｎｒｐＧｅｔＣｌｏｕｄＩｎｆｏ−このメソッドは、すべてのクラウド名を取り出す。
【００４２】
【表１０】
2009510638.tif 000012
【００４３】
【表１１】
2009510638.tif 000013
【００４４】
【表１２】
2009510638.tif 000014
【００４５】
ピアツーピアネットワーク内のエンドポイントに関する情報を取り出すためのオプションが２つある。最初に、ピア名からエンドポイントを取り出すことに関連するプロセスおよび同期（ブロッキング）方式の関連データを処理し、解決プロセスが完了すると結果を返す。第２のオプションでは、２ステッププロセスでエンドポイントを解決する。第１のステップで、非同期（非ブロッキング）方式でデータ収集を開始する。ほとんどの場合、この非同期方式では、他のピアツーピアネットワーク活動を含む、他の活動を並列に実行することができるため、より実用的と考えられる。第２のステップは、非ブロッキング解決ステップ実行時に蓄積された特定のエンドポイントデータを取り出すことを伴う。
【００４６】
同期（ブロッキング）呼び出しについて、以下で説明する。
ＰｅｅｒＰｎｒｐＲｅｓｏｌｖｅ−このメソッドは、同期（ブロッキング）解決を実行する。
【００４７】
【表１３】
2009510638.tif 000015
【００４８】
【表１４】
2009510638.tif 000016
【００４９】
非ブロッキング機能では、ＰｅｅｒＰｎｒｐＳｔａｒｔＲｅｓｏｌｖｅを使用する。特定のタイムアウトを使用するには、非同期バージョンを使用する。
ＣｌｏｕｄＮａｍｅがｎｕｌｌで、すべてのクラウド内で解決が実行される場合、それぞれのクラウド内で同時に解決が発行される。このメソッドは、クラウドの任意の組合せから十分な結果を受け取るとすぐに戻る。
【００５０】
非同期（非ブロッキング）呼び出し、および解決プロセスを停止し、利用可能な場合に結果を取り出すための関係する呼び出しについて、以下で説明する。
ＰｅｅｒＰｎｒｐＳｔａｒｔＲｅｓｏｌｖｅ−このメソッドは、非同期（非ブロッキング）解決を実行する。これは、特に、複数のエンドポイントが望ましい場合に、解決を実行する推奨される方法である。
【００５１】
【表１５】
2009510638.tif 000017
【００５２】
【表１６】
2009510638.tif 000018
【００５３】
結果が見つかると、ｈＥｖｅｎｔが通知される。次いで、アプリケーションは、ＰｅｅｒＰｎｒｐＧｅｔＥｎｄｐｏｉｎｔを呼び出して、解決された（複数の）エンドポイントを取り出すことができる。他の実施形態では、結果は、要求側プロセスへのコールバックを介して、戻すことができる。
【００５４】
ＰｅｅｒＰｎｒｐＳｔｏｐＲｅｓｏｌｖｅ−このメソッドは、ＰｅｅｒＰｎｒｐＳｔａｒｔＲｅｓｏｌｖｅの呼び出しから進行中の解決を取り消す。
【００５５】
【表１７】
2009510638.tif 000019
【００５６】
【表１８】
2009510638.tif 000020
【００５７】
ピアツーピアネットワークを解決するプロセスに十分なデータがある場合、エンドポイントに関するデータが利用可能にされる。次いで、データは、ＰｅｅｒＰｎｒｐＧｅｔＥｎｄｐｏｉｎｔ呼び出しを使用して第２のステップで取り出されうる。
【００５８】
ＰｅｅｒＰｎｒｐＧｅｔＥｎｄｐｏｉｎｔ−このメソッドは、ＰｅｅｒＰｎｒｐＳｔａｒｔＲｅｓｏｌｖｅの前の呼び出しからエンドポイントを取り出すために使用される。
【００５９】
【表１９】
2009510638.tif 000021
【００６０】
【表２０】
2009510638.tif 000022
【００６１】
【表２１】
2009510638.tif 000023
【００６２】
このメソッドは、ＰｅｅｒＰｎｒｐＳｔａｒｔＲｅｓｏｌｖｅおよびＰｅｅｒＰｎｒｐＳｔｏｐＲｅｓｏｌｖｅも含む非同期解決ＰｎｒｐＡＰＩの一部である。
ＰＮＲＰエンドポイントに関するデータを格納するために使用される構造体の詳細について、以下で説明する。
【００６３】
ＰｅｅｒＰｎｒｐＥｎｄｐｏｉｎｔＩｎｆｏ−ＰＮＲＰエンドポイントを格納するために使用される主データ構造体。
【００６４】
【表２２】
2009510638.tif 000024
【００６５】
【表２３】
2009510638.tif 000025
【００６６】
前記の本文では本発明の様々な異なる実施形態の詳細な説明を述べているが、本発明の正当な範囲は、本特許の終わりで規定されている請求項の記述により定義されることは理解されるであろう。この詳細な説明は、一例にすぎないものとして解釈すべきであり、可能なすべての実施形態を説明することは不可能ではないとしても実用的ではないため、本発明のすべての可能な実施形態を説明しない。現行技術またはこの特許の出願日以降に開発された技術を使用して多数の代替え実施形態を実装することが可能であり、これは、本発明を定める請求項の範囲内にそのまま入るであろう。
【００６７】
したがって、多くの修正形態および変更形態は、本発明の精神および範囲から逸脱することなく本明細書で説明され、例示されている技術および構造において形成されうる。したがって、本明細書で説明されている方法および装置は、例示的なものにすぎず、本発明の範囲を制限するものではないことは理解されるであろう。
【図面の簡単な説明】
【００６８】
【図１】コンピュータネットワークの簡素化された、代表的ブロック図である。
【図２】図１のネットワークに接続できるコンピュータのブロック図である。
【図３】ピアツーピアネットワークの簡素化された、代表的ブロック図である。
【図１】
2009510638.tif 000026
【図２】
2009510638.tif 000027
【図３】
2009510638.tif 000028
【図４】
2009510638.tif 000029
【手続補正書】
【提出日】平成20年5月30日(2008.5.30)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００６８
【補正方法】変更
【補正の内容】
【００６８】
【図１】コンピュータネットワークの簡素化された、代表的ブロック図である。
【図２】図１のネットワークに接続できるコンピュータのブロック図である。
【図３】ピアツーピアネットワークの簡素化された、代表的ブロック図である。
【図４】ピアツーピアネットワーキングのより複雑な実施形態の、簡素化された、代表的ブロック図である。
【国際調査報告】
2009510638.tif 000030
2009510638.tif 000031