(57)【特許請求の範囲】
【請求項１】
ピアツーピアネットワークの第１のノードにより、ピアツーピアネットワークに関連付けられる１つまたは複数の他のノードに、コンテンツを求める要求と、第１のノードによってコンテンツが受信されるべきときに関する締切りとを含む第１のメッセージを送信することであって、第１のメッセージが複数のフィールドを有するデータパケットを含み、複数のフィールドがコンテンツを求める要求を示す第１のフィールドと締切りを示す第２のフィールドとを含むこと、
第１のノードにより、複数のノードの第２のノードから、第２のノードが要求されたコンテンツを有しない場合、要求されたコンテンツについての情報を有する複数のノードの少なくとも１つの他のノードのリストを含む第２のメッセージを受信することであって、リストが要求されたコンテンツの論理識別子に基づき、
締切りが過ぎていない場合、第２のメッセージのリストが、少なくとも１つの基準によりフィルタリングされたリストであり、
締切りが過ぎている場合、第２のメッセージのリストがフィルタリングされていないリストであることを含む、方法。
【請求項２】
第１のノードにより、１つまたは複数の他のノードのうちの１つである第２のノードから、第２のノードがコンテンツの少なくとも一部を有することを示す第２のメッセージを受信すること、および
第１のノードにより、第１のノードにコンテンツを送信するように第２のノードに要求する第３のメッセージを第２のノードに送信すること
をさらに含む、請求項１に記載の方法。
【請求項３】
第１のノードにより、１つまたは複数の他のノードのうちの１つである第２のノードから、ノードのリストを含む第２のメッセージを受信すること、および
第１のノードにより、ノードのリストに関連付けられる１つまたは複数のノードに、コンテンツを求める要求および締切りを含む第３のメッセージを送信すること
をさらに含む、請求項１に記載の方法。
【請求項４】
ピアツーピアネットワークの第１のノードにより、ピアツーピアネットワークに関連付けられる第２のノードから、コンテンツを求める要求と、コンテンツを受信すべきときに関する締切りとを含む第１のメッセージを受信することであって、第１のメッセージが複数のフィールドを有するデータパケットを含み、複数のフィールドがコンテンツを求める要求を示す第１のフィールドと締切りを示す第２のフィールドとを含むこと、
第１のノードが要求されたコンテンツを有しない場合、要求されたコンテンツについての情報を有するピアツーピアネットワークに関連付けられる少なくとも１つの他のノードのリストを含む第２のメッセージを送信することであって、リストが要求されたコンテンツの論理識別子に基づき、
締切りが過ぎていない場合、第２のメッセージのリストが、少なくとも１つの基準によりフィルタリングされたリストであり、
締切りが過ぎている場合、第２のメッセージのリストがフィルタリングされていないリストであることを含む、方法。
【請求項５】
フィルタリングされたリストが、第２のノードと同一のネットワークに関連付けられるノードを含む、請求項４に記載の方法。
【請求項６】
フィルタリングされたリストが、ピアツーピアネットワークに関連付けられる他のノードよりコンテンツにより近いピアツーピアネットワークに関連付けられるノードを含む、請求項５に記載の方法。
【請求項７】
フィルタリンされていないリストが、第２のノードとは異なるネットワークに関連付けられるノードを含む、請求項４に記載の方法。
【請求項８】
フィルタリングされていないリストが、要求されたコンテンツにより近いコンテンツを有するピアツーピアネットワークに関連付けられるノードを含む、請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、ピアツーピアファイル共有ネットワーク、およびピアツーピアトラフィックを位置特定する方法に関する。
【背景技術】
【０００２】
ピアツーピアファイル共有ネットワークのいくつかのバージョンは、ネットワーク内の利用可能なコンテンツのすべてを列挙するために、ネットワーク要素の集中型コンピュータまたはネットワークに依拠する。他のピアツーピアファイル共有ネットワークは、ネットワークの利用可能なコンテンツのすべてを列挙するために、集中型構成要素に依拠しない。むしろ、コンテンツ自体が配布されるときにディレクトリが配布される。すべての参加クライアント上にディレクトリデータベースを配布するのに使用される技法は、分散ハッシュテーブル（ＤＨＴ）と呼ばれることがある。
【０００３】
ネットワークが集中型ネットワークであっても、ＤＨＴを使用するネットワークであっても、各ピアは、コンテンツがそこから共有されるピアの局所性とは無関係に、一方のピアから別のピアにコンテンツをダウンロードする。その結果、ピアが別のピアのコンピュータ上に含まれるファイルを要求する場合、ファイルを要求するピアから遠く離れた、ファイルを含むコンピュータの位置が特定されることがある。この結果、ファイル転送遅延が生じるだけではなく、ピア間のリンクが１つまたは複数のインターネットサービスプロバイダ（ＩＳＰ）を通らなければならないので、コストが増加する。したがって、そのようなピアツーピア型の接続は、ＩＳＰを互いにリンクするトランジットリンク上で大量のトラフィックを生み出す可能性があり、それによってネットワークオペレータに対するコストが増加する。
【０００４】
例えば、人気のコンテンツファイルがあり、このファイルをコンピュータ上に有する１０，０００人のユーザが世界中にいると仮定する。そうした１０，０００人のユーザのうちの５０人の位置を所与のＩＳＰ「Ａ」内に特定できると仮定する。ＩＳＰ「Ａ」内のピアが人気のファイルに興味があり、ファイルをそこからダウンロードするための５０個のランダムなピアに関する、集中型ディレクトリまたはＤＨＴ型ディレクトリのいずれかのディレクトリを要求すると仮定する。そのような場合、ＩＳＰ「Ａ」内の単一のピアを見つける可能性は０．５％である。ファイルを有する５０個のピアが要求側ピアに対してランダムに識別される場合、すべての５０個のピアがＩＳＰ「Ａ」内にある可能性はゼロに近い。
【０００５】
そのようなシナリオでは、ファイルを要求するピアと同一のＩＳＰ内に十分な数のピアがあるが、ピアが結局は要求側ピアのＩＳＰの外部に位置するピアからファイルを受信することになる可能性がある。これにより、ＩＳＰ間のトランジットリンク上で不必要なトラフィックが必要となる。
【０００６】
図１に、集中型ピアツーピアシステム１０の略図を示す。集中型ピアツーピアシステム１０は、ピアおよび／またはノード１２とも呼ばれるコンピュータ１２と、中央コンピュータ１４とを含む。ピアおよび／またはノード１２は、接続１６を介して中央コンピュータ１４に接続される。接続１６は、ワイヤレス接続、イーサネット（登録商標）接続、または任意の適切な接続ハードウェアまたは方法の組合せなどの任意の適切な接続でよい。
【０００７】
ピアツーピアシステム１０は４つのピアおよび／またはノード１２と単一の中央コンピュータ１４だけを示すが、ピアツーピアシステムは、図示するピアおよび／またはノード１２の数と、単一の中央コンピュータ１４の中央ネットワーク構成要素に限定されないことを理解されたい。実際に、ピアツーピアシステム１０は、より多数のピアおよび／またはノード１２を含むことができ、多数のコンピュータ、サーバ、または他の構成要素が、図示する中央コンピュータ１４のタスクを実施することができる。
【０００８】
図１に示す集中型ピアツーピアシステム１０では、ピアおよび／またはノード１２がコンテンツまたはファイルを要求するとき、要求が、接続１６を介して集中型コンピュータ１４に送られる。要求を送ることは、ピアツーピアネットワークでよく知られている。
【０００９】
集中型コンピュータ１４は、どのピアおよび／またはノード１２が要求されたコンテンツを有するかを判定し、どのピアおよび／またはノード１２が要求されたコンテンツを有するかに関する情報で要求に応答することができる。集中型コンピュータ１４は、要求されたコンテンツを有するいくつかのピアおよび／またはノード１２を識別し、複数の識別したピアおよび／またはノード１２に関する情報で応答することができる。１つのピアおよび／またはノード１２あるいは複数のピアおよび／またはノード１２が識別されると、要求側ピアは、識別されたピアのうちの１つから、要求したファイルを受信することができる。
【００１０】
集中型コンピュータ１４は、トランジットリンクを介して送信される多量のデータを低減するために、要求側ピアに対して識別すべき要求されたコンテンツを含む可能性があるのは多数のピアおよび／またはノード１２の中のどのピアおよび／またはノード１２であるかの判定を行うことができる。こうした判定を行って、ピアツーピアトラフィックを位置特定することができる。この判定を以下でより詳細に説明する。
【００１１】
例えば、ピアツーピアネットワークのための１つの良く知られているファイル共有システムは、ＢｉｔＴｏｒｒｅｎｔ  Ｉｎｃ．に対して登録されたＢＩＴＴＯＲＲＥＮＴ  ＴＭとして知られている。ピアを発見するためにＢＩＴＴＯＲＲＥＮＴファイル共有システムが使用する機構は、Ｐ２Ｐネットワークの構造、したがってデータ配布に影響を及ぼす。したがって、ＢＩＴＴＯＲＲＥＮＴファイル共有システムでのピア発見の知識は、トラフィック位置特定の明白な理解にとって根本的である。ＢＩＴＴＯＲＲＥＮＴファイル共有システムは、ピアを発見し、ファイル交換を調整するために、トラッカまたは中央サーバ（例えば、集中型コンピュータ１４）を利用する。ピアは、ウェブからダウンロードするトレント内のトラッカのアドレスを取り出す。「．ｔｏｒｒｅｎｔ」は、ファイル交換のための有用な情報を含むメタデータファイルである。
【００１２】
当初、ピアは、トラッカと連絡を取り、ファイルまたはその一部を保持するピアのリストを取り出す。トラッカは、一般に５０個のピアで構成されるアクティブなピアのランダムなサブセットである、ピアリストで回答する。その後で、ピアは、ピアがダウンロードまたはアップロードしたバイトの量についての情報を送るために、トラッカと定期的に対話する。それに応答して、トラッカは、ピアに新しいピアリストを送る。クライアントとトラッカとの間の通信の頻度は、トラッカ応答内に含まれるｍｉｎ  ｉｎｔｅｒｖａｌフィールドを介して、トラッカによって調整される。一般に、ｍｉｎ  ｉｎｔｅｒｖａｌフィールドは１５分に設定される。
【００１３】
上記で示したように、ピアリストは、アクティブなピアのランダムなサブセットである。ピアリストは、ネットワーク（例えば、インターネットサービスプロバイダネットワーク（ＩＳＰ）ネットワーク）内のピアの位置特定を決して含まない。位置特定のためにトラッカまたは中央サーバ（例えば、集中型コンピュータ１４）を活用するためのいくつかの取組みが行われてきた。しかし、こうした取組みは本開示の範囲外にある。
【発明の概要】
【課題を解決するための手段】
【００１４】
一実施形態は、ピアツーピアネットワーク内のコンテンツを位置特定する方法を含む。この方法は、ピアツーピアネットワークの第１のノードにより、ピアツーピアネットワークに関連付けられる１つまたは複数の他のノードに第１のメッセージを送信することを含む。メッセージは、コンテンツを求める要求と、第１のノードによってコンテンツが受信されるべきときに関する締切りとを含む。
【００１５】
別の実施形態は、ピアツーピアネットワーク内のコンテンツを位置特定する方法を含む。この方法は、ピアツーピアネットワークの第１のノードにより、ピアツーピアネットワークに関連付けられる第２のノードから第１のメッセージを受信することを含む。第１のメッセージは、コンテンツを求める要求と、コンテンツを受信すべきときに関する締切りとを含む。この方法は、締切りが過ぎておらず、第１のノードがコンテンツに関する情報を有する場合、第１のノードにより、第２のノードに第２のメッセージを送信することを含む。第２のメッセージは、第１のノードがコンテンツに関する情報を有することを示す。この方法は、締切りが過ぎている場合、第１のノードにより、第２のノードに第３のメッセージを送信することを含む。第３のメッセージは、ピアツーピアネットワークに関連付けられる１つまたは複数の他のノードを有するノードのリストを含む。
【００１６】
例示として与えるに過ぎず、したがって本発明の限定ではない、本明細書の以下の与える詳細な説明、および同様の要素が同様の参照番号で表される添付の図面から、本発明をより完全に理解されよう。
【図面の簡単な説明】
【００１７】
【図１】集中型構成要素を有するピアツーピアファイル共有ネットワークの関連技術の略図である。
【図２】例示的実施形態による分散ハッシュテーブル（ＤＨＴ）を利用するピアツーピアファイル共有ネットワークの略図である。
【図３】例示的実施形態によるファイル共有ネットワークの略図であり、ファイル共有ネットワークと通信しているコンピュータの様々な構成要素を示す図である。
【図４Ａ】例示的実施形態によるデータパケットを示す図である。
【図４Ｂ】例示的実施形態によるデータパケットを示す図である。
【図５Ａ】例示的実施形態によるピアツーピアネットワーク内のトラフィックを位置特定する方法の流れ図である。
【図５Ｂ】例示的実施形態によるピアツーピアネットワーク内のトラフィックを位置特定する方法の流れ図である。
【図５Ｃ】例示的実施形態によるピアツーピアネットワーク内のトラフィックを位置特定する方法の流れ図である。
【図５Ｄ】例示的実施形態によるピアツーピアネットワーク内のトラフィックを位置特定する方法の流れ図である。
【図６Ａ】例示的実施形態によるピアツーピアネットワーク内のトラフィックを位置特定する別の方法の流れ図である。
【図６Ｂ】例示的実施形態によるピアツーピアネットワーク内のトラフィックを位置特定する別の方法の流れ図である。
【発明を実施するための形態】
【００１８】
こうした図は、いくつかの例示的実施形態で使用される方法、構造、および／または材料の一般的特性を示し、以下の文面で与える説明を補足することを意図することに留意されたい。しかし、こうした図面は原寸に比例せず、所与の実施形態の厳密な構造的特性または性能特性を厳密に反映しないことがあり、例示的実施形態によって包含される値または特性の範囲を定義または限定するものとして解釈すべきではない。例えば、図が見やすいように、分子、層、領域、および／または構造的要素の相対的厚さおよび配置が縮小または誇張されることがある。様々な図面での同様または同一の参照番号の使用は、同様または同一の要素または特徴の存在を示すことを意図する。
【００１９】
例示的実施形態は、様々な修正形態および代替形態が可能であるが、本発明の実施形態が例として図面に示され、本明細書で詳細に説明される。しかし、開示する特定の形態に例示的実施形態を限定する意図はなく、むしろ例示的実施形態は、特許請求の範囲内に含まれるすべての修正形態、均等物、および代替形態を包含すべきであることを理解されたい。図の説明全体にわたって、同様の番号は同様の要素を指す。
【００２０】
例示的実施形態をより詳細に論じる前に、流れ図として示すプロセスまたは方法としていくつかの例示的実施形態を説明することに留意されたい。流れ図は動作を順次プロセスとして説明するが、動作の多くは、並列または同時に実施することができる。さらに、動作の順序を再構成することができる。プロセスの動作が完了したとき、プロセスを終了することができるが、プロセスは、図に含まれない追加のステップも有することができる。プロセスは、方法、関数、手続き、サブルーチン、サブプログラムなどに対応することができる。
【００２１】
その一部を流れ図で示す、以下で論じる方法は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せで実装することができる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実装するとき、必要なタスクを実施するためのプログラムコードまたはコードセグメントが、記憶媒体などの機械またはコンピュータ可読媒体に格納される。プロセッサは必要なタスクを実施する。
【００２２】
本明細書で開示する特定の構造的および機能的詳細は、本発明の例示的実施形態を説明するための代表例に過ぎない。しかし、多数の代替形態で本発明を実施することができ、本発明を本明細書に記載の実施形態だけに限定されると解釈すべきではない。
【００２３】
様々な要素を説明するために第１、第２などの用語が本明細書で使用されることがあるが、こうした要素は、こうした用語によって限定されるべきではないことを理解されよう。こうした用語は、ある要素を別の要素と区別するために使用されるに過ぎない。例えば、例示的実施形態の範囲から逸脱することなく、第１の要素を第２の要素と呼ぶことができ、同様に、第２の要素を第１の要素と呼ぶことができる。本明細書では、「および／または」という用語は、関連する列挙される項目のうちの１つまたは複数のありとあらゆる組合せを含む。
【００２４】
要素が別の要素に「接続」または「結合」されると呼ばれるとき、要素を別の要素に直接的に接続または結合することができ、あるいは介在する要素が存在することがあることを理解されよう。一方、要素が別の要素に「直接的に接続される」または「直接的に結合される」と呼ばれるとき、介在する要素は存在しない。要素間の関係を記述するために使用される他の語は同様に解釈されるべきである（例えば、「の間（ｂｅｔｗｅｅｎ）」と「直接的に．．．の間（ｄｉｒｅｃｔｌｙ  ｂｅｔｗｅｅｎ）」、「隣接する（ａｄｊａｃｅｎｔ）」と「直接的に隣接する（ｄｉｒｅｃｔｌｙ  ａｄｊａｃｅｎｔ）」など）。
【００２５】
本明細書で使用される用語は、特定の実施形態を説明するためのものに過ぎず、例示的実施形態の限定ではないものとする。本明細書では、単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、文脈が別段に明白に示すのでない限り、複数形も含むものとする。「備える」および／または「含む」という用語は、本明細書で使用されるとき、記載の特徴、整数、ステップ、動作、要素、および／または構成要素の存在を指定するが、１つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および／またはそれらのグループの存在または追加を除外しないことをさらに理解されよう。
【００２６】
いくつかの代替実装では、記載の機能／動作が、図に記載の順序とは異なる順序で行われることがあることにも留意されたい。例えば、連続して示す２つの図が、関係する機能／動作に応じて、実際には同時に実行されることがあり、またはあるときには、逆の順序で実行されることがある。
【００２７】
別段の定義がない限り、本明細書で使用するすべての用語（技術的用語および科学的用語を含む）は、例示的実施形態が属する技術分野の技術者が一般的に理解するのと同じ意味を有する。用語、例えば一般的に使用される辞書で定義される用語は、関連技術分野の文脈での意味と一貫した意味を有すると解釈すべきであり、本明細書で明白に定義されるのでない限り、理想化した意味または過度に正式な意味には解釈されないことをさらに理解されよう。
【００２８】
例示的実施形態の部分、および対応する詳細な説明は、ソフトウェア、またはコンピュータメモリ内のデータビットに対する演算のアルゴリズムおよび記号表現によって提示される。こうした説明および表現は、当業者がそれによって自分の研究の内容を他の当業者に効果的に伝達するものである。アルゴリズムとは、その用語がここで使用されるとき、および一般的に使用されるとき、所望の結果が得られる首尾一貫したステップのシーケンスであると考えられる。ステップは、物理量の物理的操作を必要とするものである。通常、必須ではないが、こうした量は、格納、転送、結合、比較、あるいは操作することのできる光学的、電気的、または磁気的信号の形態を取る。主に一般的な使用法のために、こうした信号をビット、値、要素、シンボル、文字、用語、数などとして参照することが時には好都合であることが示されている。
【００２９】
以下の説明では、特定のタスクを実施し、または特定の抽象データタイプを実装し、既存のネットワーク要素で既存のハードウェアを使用して実装されるルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むプログラムモジュールまたは機能プロセスとして実装することのできる（例えば、流れ図の形の）動作および操作の記号表現を参照しながら例示的実施形態が説明される。そのような既存のハードウェアは、１つまたは複数の中央演算処理装置（ＣＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）コンピュータなどを含むことができる。
【００３０】
しかし、こうした用語および類似の用語のすべては適切な物理量と関連付けられるべきであり、こうした量に適用される好都合なラベルに過ぎないことに留意されたい。別段の記述がない限り、または議論から明らかなように、「表示」の「処理」または「コンピューティング」または「計算」または「決定」などの用語は、コンピュータシステムのレジスタおよびメモリ内の物理的な電子量として表されるデータをコンピュータシステムメモリまたはレジスタまたは他のそのような情報記憶装置、情報送信装置、または情報表示装置内の物理量として同様に表される他のデータに操作および変換するコンピュータシステムまたは類似の電子コンピューティング装置のアクションおよびプロセスを指す。
【００３１】
例示的実施形態のソフトウェアで実装された態様は通常、何らかの形態のプログラム記憶媒体上に符号化され、または何らかのタイプの伝送媒体を介して実装されることにも留意されたい。プログラム記憶媒体は、磁気式（例えば、フロッピィディスクまたはハードドライブ）または光学式（例えば、コンパクトディスク読取り専用メモリすなわち「ＣＤ−ＲＯＭ」）でよく、読取り専用またはランダムアクセスでよい。同様に、伝送媒体は撚線対、同軸ケーブル、光ファイバ、または当技術分野で知られている何らかの他の適切な伝送媒体でよい。例示的実施形態は、いかなる所与の実装のこうした態様によって限定されない。
【００３２】
「ピア」および「ノード」という用語は、本開示全体を通して互換的に使用される。一般に、ピアは、ピアツーピアネットワーク内の物理的ハードウェアを指す。ピアはノードでもよい。しかし、ノードはより一般に、例えばピアツーネットワーク内のファイル位置（例えば、アドレスまたはテーブル内の参照）の論理的インスタンスも指す。
【００３３】
図２は、例示的実施形態によるピアツーピアネットワーク１８の略図である。図２に示すピアツーピアネットワーク１８では、中央コンピュータ１４はない。図示していないが、ピア４０が互いへの接続によって接続されることを理解されたい。
【００３４】
図２に、ピアツーピアファイル共有ネットワーク１８を示す。図２のネットワーク１８は、ネットワークコンテンツを列挙するために集中型構成要素に依拠せず、むしろ、分散ハッシュテーブル（ＤＨＴ）１９を使用して、すべての参加クライアントにディレクトリデータベースを配布する。図２では、ＤＨＴ１９は、ネットワーク１８のすべての側面を互いに接続する破線として表される。
【００３５】
ファイル共有ネットワーク１８は、第１のインターネットサービスプロバイダ（ＩＳＰ）２４および第２のＩＳＰ２６を含む。ＩＳＰ２４内には様々なクライアントがあり、クライアントは、ピア、ノード、またはユーザ４０とも呼ばれることがある。様々なクライアント、ピア、またはユーザは、参照番号の後ろに文字を追加することにより、同一のＩＳＰ上の他のピアの間で区別される。
【００３６】
様々なピア４２を有する第２のＩＳＰ２６も示されている。第１のＩＳＰ２４と第２のＩＳＰ２６は、ピアリングリンク２８を介して互いに接続することができる。
【００３７】
インターネット全体２２が図２に示されている。トランジットリンク３０によってインターネット全体２２にＩＳＰ２４を接続することができる。トランジットリンク３０はまた、インターネット全体２２にＩＳＰ２６を接続することもできる。インターネット全体２２上で位置が特定されるピアは、参照番号４４によって識別される。ピア４０および４２と同様に、インターネット全体２２上のピア４４は、少なくとも１つのＩＳＰに関連付けられる。しかし、インターネット全体２２上のピア４４に関連付けられるＩＳＰは図示されていない。
【００３８】
異なるＩＳＰ２４、２６に関連付けられるピア４０、４２、４４間でファイルを共有するのに必要なリソース（例えば、ピアリングリンク２８またはトランジットリンク３０）の量のために、可能ならいつでも、異なるＩＳＰ上に位置が特定されるピア間でファイルを共有するのではなく、特定のＩＳＰ内のピアに互いの間でファイルを共有させることが好ましい。
【００３９】
矢印３２は、ピア４０ａ、４０ｂ、および４０ｄが互いの間でファイルを共有する、好ましいファイル共有の方式を示す。ピア４０ａ、４０ｂ、および４０ｄのすべては、ＩＳＰ２４上に位置が特定される。ＩＳＰ２４内に位置が特定されるピア４０が、やはりＩＳＰ２４上に位置が特定されるどんなピアによっても含まれないファイルを要求する何らかの状況が生じることがある。したがって、要求されたコンテンツを得るために、ピア４０は、ＩＳＰ２６またはインターネット全体２２のどちらかに位置が特定されるユーザからコンテンツを得なければならない。
【００４０】
図３は、様々なＩＳＰ２４、２６、インターネット全体２２、およびネットワーク構成要素（コンピュータ、またはネットワーク要素とも呼ばれる）を示す略図である。図２に関して上記で示したように、ネットワーク全体にわたってネットワーク要素４５を分散させることができる。例えば、集中型コンピュータ１４を有さないが、ＤＨＴ１９を使用するファイル共有ネットワーク１８などのピアツーピアファイル共有ネットワークでは、ファイル共有ネットワーク全体にわたってコンピュータまたはネットワーク要素４５を分散させることができる。あるいは、接続４６を介してネットワーク要素４５を単に様々なＩＳＰ２４および２６、ならびにインターネット全体２２に接続することができる。
【００４１】
図３に示すように、ネットワーク要素４５は、接続５０を介してデータベース５２に接続される１つまたは複数のマイクロプロセッサ４８を含むことができる。接続５５を介してネットワーク要素４５を別のデータベース５３に動作可能に接続することもできる。データベース５３は検索可能とすることができ、以下でより詳細に説明するように、どのＩＳＰが所与のピアに関連付けられるかなどの情報をネットワーク要素４５に提供することができる。
【００４２】
本発明のいくつかの実施形態では、ネットワーク要素４５は、ネットワークに接続された既存のシステム構成要素でよい。本明細書に記載の機能を実施するように既存のネットワーク要素４５をプログラムすることができる。例えば、既存のネットワークは、本明細書に記載の機能を実施するようにプログラムされたネットワーク構成要素を含むことができる。別の実施形態では、（既存のネットワーク構成要素ではなく）ネットワーク要素４５をネットワークに追加し、本明細書に記載の機能を実施するようにネットワーク要素４５を構成することができる。
【００４３】
ピアおよびノードという用語が以下で互換的に使用される。通常、ピアという用語は、ピアツーピアネットワーク内の物理的エンティティ（例えば、コンピューティング装置）を指す。通常、ノードという用語は、ピアツーピアネットワーク内の論理的エンティティ（例えば、格納されたコンテンツ）と物理的エンティティ（例えば、コンピューティング装置）の両方を指す。通常、論理識別情報、キー、および／または制御ピアとは、ＤＨＴ（例えば、ＤＨＴ１９）内の論理エントリを指す。
【００４４】
ＤＨＴは、＜キー，値＞ペアリングとしてエントリを格納し、キーはハッシュ関数の結果であり、値は、ＤＨＴ１９内のエントリに関する何らかの情報である。例えば、値は、ノード識別もしくは名前、ネットワークについての情報、またはコンテンツについての情報でよい。ファイルまたはコンテンツに関する情報は、例えば、そのファイルまたはコンテンツをホストするピアのアドレスでよく、値はまた、ファイルの名前、ファイルを格納するピア上のファイルのメモリ位置に対するポインタ、またはファイルのタイプ（例えば、ビデオ、オーディオ、プログラム）をも含むことができる。
【００４５】
例えば、ノードおよび／またはコンテンツに関連付けられる情報に対してハッシュ関数を実施することができる。例示的実施形態では、ノードまたはピア（例えば、ピア４０ａ）は、固有の識別子またはキーを有することができ、ファイルまたはコンテンツは、固有の識別子またはキーを有することができる。
【００４６】
知られているように、ＤＨＴ（例えば、ＤＨＴ１９）を使用する従来のピアツーピアネットワークでは、コンテンツを有し、コンテンツを共有したいピアは単に、その識別子（例えば、ピアに関連付けられる論理識別情報またはキー）がピア識別子に最も近いＤＨＴ内のｋ個（通常は１０個）のピアにコンテンツを告知する。
【００４７】
コンテンツをダウンロードしたいピアは、コンテンツを有するピアのうちの最も近い知られている（例えば、ＤＨＴ１９に格納された）ピアに要求する。最も近い知られているピアは、コンテンツをダウンロードしたいピアに、コンテンツを有するピアのアドレスを返す。その後で、コンテンツをダウンロードしたいピアは、コンテンツを有するピアからのコンテンツのダウンロードを開始する。
【００４８】
例えば、上述のように、ピアツーピアネットワーク用の１つのよく知られているファイル共有システムは、ＢＩＴＴＯＲＲＥＮＴとして知られている。ＢＩＴＴＯＲＲＥＮＴファイル共有システムは、ｇｅｔ＿ｐｅｅｒオブジェクトを使用してコンテンツ要求を行う。ピアは、そのノード識別情報を既にピアが認識しているｋ個のピアにｇｅｔ＿ｐｅｅｒメッセージを送る。
【００４９】
知られているように、ＢＩＴＴＯＲＲＥＮＴファイル共有システム内のピアは、他の知られているピアのメッセージで応答する。例えば、応答側ピアがコンテンツを含むピアを知らない場合、応答側ピアは、要求側ピアが次の反復でメッセージを送ることができる、要求されたファイルの識別子にその識別子がより近い、知られているピアのリストで応答する。知られているように、この反復プロセスは、要求されたコンテンツのコピーまたは一部を保持するピアのリストでｇｅｔ＿ｐｅｅｒメッセージが応答されるまで反復する。ピアのリストは、例えば、コンテンツにアクセスするためのピアのアドレスおよびポート番号を含むことができる。
【００５０】
当業者は理解するであろうが、上記のＢＩＴＴＯＲＲＥＮＴの例は、要求側ピアとコンテンツを有するピアとの間のどんなネットワーク関係も考慮に入れない。要求側ピアは、要求側がコンテンツを有すると認識させられる第１のピアからコンテンツをダウンロードする。したがって、ピアは、任意の他のピアから、ネットワーク内のその物理的位置の如何に関わらず、コンテンツをダウンロードすることができる。したがって、ピアツーピアネットワークは、トランジットリンク上で大量のトラフィックを生成し、ネットワークオペレータに対するコストが増加する。
【００５１】
ピアツーピアネットワークがトラフィック位置特定を実装する場合、コンテンツ要求に対して返されるアドレスは、要求側までのそのネットワーク距離で順序付けられる。要求側の同一のＩＳＰからのＩＰアドレスは、リストの先頭にある。
【００５２】
ピアツーピアアプリケーションが現在生成する大量のトランジットトラフィックを削減するために、例示的実施形態は、ピアツーピア応用例の用語集に「遅延許容度」という用語を導入する。遅延許容度は、ユーザが許容することのできる、ファイルの検索での一定の遅延を定義する。例えば、ユーザは、ユーザがムービーを楽しみたい次の日のためにダウンロードの準備ができることを予期して、晩の遅くにムービーのダウンロードを開始することがある。
【００５３】
例示的実施形態は、この遅延許容度を使用して、ピアツーピアネットワーク内のトラフィック位置特定を改善する。ファイルがローカルに利用可能ではない場合、ファイルダウンロードが（ユーザが許容できる遅延まで）遅延することがある。このようにして、要求側のＩＳＰ内の別のピアが要求されたコンテンツを有する確率が向上する。
【００５４】
図４Ａおよび４Ｂに、例示的実施形態によるデータパケットを示す。図４Ａに示すように、データパケットは、プロトコルフィールド、サイズフィールド、およびタイプフィールドを含むヘッダを含むことができる。データパケットはまた、締切りフィールドおよびパース済み検索文字列フィールドを含むデータ区間をも含むことができる。図４Ａのデータパケットは、例えばＴＣＰメッセージデータパケットでよい。
【００５５】
プロトコルフィールドは１バイトのサイズでよく、ファイル共有のために使用されるプロトコルの指示を含むことができる。例えば、標識は、ＭｅｔａＭａｃｈｉｎｅ，  Ｉｎｃ．に対して登録されたｅＭｕｌｅやｅＤｏｎｋｅｙ  ＴＭなどのプロトコルを示すことができる。
【００５６】
サイズフィールドは４バイトのサイズでよく、バイト単位のデータパケット／メッセージのサイズの指示を含むことができる。タイプフィールドは１バイトのサイズでよく、データパケット／メッセージのタイプの指示を含むことができる。例えば、標識は、検索要求、検索結果、ログイン、サーバまたはＩＤ変更などのタイプを示すことができる。
【００５７】
締切りフィールドは４バイトのサイズでよく、コンテンツがそれまでに必要とされる時間の指示を含むことができる。例えば、締切りは、ユーザが許容することができるファイルの検索での一定の遅延を定義する（上述の）遅延許容度を示すことができる。
【００５８】
パース済み検索文字列フィールドは可変サイズでよく、要求されたコンテンツの指示を含むことができる。例えば、知られているように、パース済み検索文字列は、要求されたコンテンツの指示を含むことができる。パース済み検索文字列は、コンテンツの検索を除外または拡張するための「ＡＮＤ」、「ＯＲ」、および「ＮＯＴ」などのブール条件を含むことができる。ユーザは、必要なファイルタイプおよびサイズを指定することができ、可用性しきい値も設定することができる（例えば、少なくとも５つの他のクライアントから入手可能な結果を見せて欲しい）。
【００５９】
図４Ｂに示すように、データパケットは、プロトコルフィールドおよびタイプフィールドを含むヘッダを含むことができる。データパケットはまた、締切りフィールドおよびファイルＩＤリストフィールドを含むデータ区間をも含むことができる。図４Ｂのデータパケットは、例えばＵＤＰメッセージデータパケットでよい。
【００６０】
プロトコルフィールドは１バイトのサイズでよく、ファイル共有のために使用されるプロトコルの指示を含むことができる。例えば、標識は、ｅＭｕｌｅやｅＤｏｎｋｅｙなどのプロトコルを示すことができる。タイプフィールドは１バイトのサイズでよく、データパケット／メッセージのタイプの指示を含むことができる。例えば、標識は、検索要求、検索結果、取得ソース（ｇｅｔ  ｓｏｕｒｃｅ）または見つかったソース（ｆｏｕｎｄ  ｓｏｕｒｃｅ）などのタイプを示すことができる。
【００６１】
締切りフィールドは４バイトのサイズであり、コンテンツがそれまでに必要とされる時間の指示を含むことができる。例えば、締切りは、ユーザが許容することができるファイルの検索での一定の遅延を定義する（上述の）遅延許容度を示すことができる。
【００６２】
ファイルＩＤリストフィールドは可変サイズでよく、要求されたコンテンツの指示を含むことができる。例えば、ファイルＩＤリストは、１つまたは複数の要求されたコンテンツに関するファイルＩＤの指示を含むことができる。ファイルのデータをハッシングすることによってファイルＩＤを計算することができる。
【００６３】
当業者は理解するであろうが、図４Ａおよび４Ｂを参照しながら説明したデータパケットは、例えばメッセージングプロトコルまたはファイル共有プロトコルに基づいて、様々な形に変更することができる。例示的実施形態は、図４Ａおよび４Ｂのデータパケットに限定されない。
【００６４】
図５Ａ−５Ｄに、例示的実施形態によるピアツーピアネットワーク内のトラフィックを位置特定する方法の流れ図を示す。図５Ａおよび５Ｂに関連する方法のステップを説明する間に、図２および図３のネットワークと、図４Ａおよび４Ｂに示すデータパケットとを参照する。
【００６５】
図５Ａを参照すると、ステップＳ５０２で、要求メッセージが受信される。例えば、要求メッセージは、図６Ａに関して以下でより詳細に説明するメッセージでよい。要求メッセージは、コンテンツを求める要求と、コンテンツを受信すべきときに関する締切りとを含むことができる。例えば、要求メッセージは、上記で図４Ａで示した関連するデータパケットを有することができる。図４Ａを参照すると、締切りフィールドは、コンテンツがそれまでに受信されるべきときに関する締切りを示す時間値を含むことができる。時間値は、コンテンツがそれまでに受信されるべき日付および時刻を示すことができる。あるいは、時間値は、コンテンツがそれまでに受信されるべき日付および時刻を計算するのに使用される値でよい。
【００６６】
ステップＳ５０４で、受信側ノードが、受信側ノードが要求メッセージに基づくコンテンツを含むかどうかを判定する。例えば、応答メッセージは、応答側ノードがコンテンツの少なくとも一部を含むことを示すフィールドを含むことができる。送信される応答メッセージは、応答側ノードがピアにコンテンツを送信すべきであることを示すフィールドを含むことができる。受信側ノードがコンテンツを含むかどうかを判定し、コンテンツの指示を含む応答メッセージを送信する他のプロセスが当業者に知られており、簡潔のためにさらには論じない。しかし、受信側ノードと要求側ノードが同一のネットワークに関連付けられるので、例示的実施形態に従ってトラフィックが位置特定される。
【００６７】
ステップＳ５０６で、受信側ノードがコンテンツを有する場合、処理はステップＳ５２０に進む。そうでない場合、処理はステップＳ５０８に進む。
【００６８】
ステップＳ５０４で受信側ノードがコンテンツを有さない場合、ステップＳ５０８で、受信側ノードは、メッセージを送信したノードと同一のネットワーク（例えば、同一のＩＳＰ）に関連付けられる他のノードがコンテンツについての情報を含むことを受信側ノードが知っているかどうかを判定する。ステップＳ５１０で、要求されたコンテンツについての情報を含むネットワークに関連付けられる他のノードを受信側ノードが知っている場合、ステップＳ５１２で、受信側ノードは、要求側ノードに応答メッセージを送信する。応答メッセージは、ノードのリストをコンテンツについての情報と共に含む。そうでない場合、処理はステップＳ５１４に進む。
【００６９】
例えば、ステップＳ５０８で、ノードのリストが、要求側ノードＩＳＰに基づいてフィルタリングされる。フィルタリングされるノードのリストは、要求側ノードと同一のＩＳＰに関連付けられるノードのみを含むことができる。フィルタリングされるノードのリストはまた、要求側に関して比較的良好な品質および／または比較的安価な接続性（例えばピアリング契約）を有するノードをも含むことができる。ステップＳ５１２で、要求側ノードは、フィルタリングされたノードのリストに基づくピアセットまたはノードのリストを含む応答メッセージで応答を受ける。
【００７０】
例えば、ステップＳ５１０で、マイクロプロセッサ４６は、要求側ノードがネットワーク２４のメンバであると判定することができる。さらに、マイクロプロセッサ４６は、コンピュータ３、４、および７がネットワーク２４のメンバであると判定することができる。例示的実施形態によれば、ステップＳ５０８のローカルピアセットまたはノードのリストは、コンピュータ３、４、および７を含み、他のネットワークのコンピュータを含まない。ステップＳ５１２で、マイクロプロセッサ４６は、コンピュータ３、４、および７のリストを含む応答メッセージを送信することができる。
【００７１】
ステップＳ５１４で、上述の締切りが過ぎている場合、処理はステップＳ５４０に進む。そうでない場合、処理はステップＳ５０８に戻る。
【００７２】
図５Ｂを参照すると、ステップＳ５２０で、受信側ノードは、受信側ノードが要求側ノード（要求メッセージを送信したノード）と同一のネットワークに関連付けられるかどうかを判定する。例えば、最初に、要求側ノードに関連付けられるＩＳＰを求めることができる。例えば、マイクロプロセッサ４６は、要求側ノードに関連付けられるアドレスと、データベース５３から取り出したネットワーク情報との比較を行うことができる。代替および／または追加として、マイクロプロセッサ４６は、ＤＨＴ１９から読み取った情報を使用することができる。例えば、マイクロプロセッサ４６は、要求側ノードに関連付けられる値フィールドに格納された情報を使用することができる。
【００７３】
一度要求側ノードに関連付けられるネットワークが求められると、マイクロプロセッサ４６は、要求側ノードに関連付けられるネットワークと、要求メッセージを受信したノードに関連付けられるネットワークとの比較を行って、ネットワークが同一かどうかを判定することができる。例えば、ネットワークが同一のインターネットサービスプロバイダ（ＩＳＰ）ネットワークである場合、ネットワークは同一であることがある。
【００７４】
パース済み検索文字列は、コンテンツを示す文字列でよい。上述のように、コンテンツを示すパース済み検索文字列は、当業者に知られている。例えば、要求メッセージは上述のＢＩＴＴＯＲＲＥＮＴ  ｇｅｔ＿ｐｅｅｒメッセージでよい。
【００７５】
ステップＳ５２２で、（ステップＳ５２０で判定したように）受信側ノードと要求側ノードが同一のネットワークに関連付けられない場合、処理はステップＳ５３０に移動する。そうでない場合、処理はステップＳ５２４に進む。
【００７６】
ステップＳ５２４で、受信側ノードは、要求側ノードに応答メッセージを送信する。応答メッセージは、受信側ノードがコンテンツを有することを示す。例えば、応答メッセージは、応答側ノードがコンテンツの少なくとも一部を含むことを示すフィールドを含むことができる。さらに送信される応答メッセージは、応答側ノードがピアにコンテンツを送信すべきことを示すフィールドを含むことができる。受信側ノードがコンテンツを含むかどうかを判定し、コンテンツの指示を含む応答メッセージを送信する他のプロセスが当業者に知られており、簡潔のためにさらには論じない。しかし、受信側ノードと要求側ノードが同一のネットワークに関連付けられないので、受信側ノードが要求側ノードと同一のネットワークに関連付けられないので、トラフィックは位置特定されない。
【００７７】
図５Ｃを参照すると、ステップＳ５３０で、受信側ノードは、メッセージを送信したノードと同一のネットワーク（例えば、同一のＩＳＰ）に関連付けられる他のノードがコンテンツについての情報を含むことを受信側ノードが知っているかどうかを判定する。ステップＳ５３２で、要求されたコンテンツについての情報を含むネットワークに関連付けられる他のノードを受信側ノードが知っている場合、ステップＳ５３４で、受信側ノードは、要求側ノードに応答メッセージを送信する。応答メッセージは、ノードのリストをコンテンツについての情報と共に含む。そうでない場合、処理はステップＳ５３６に進む。
【００７８】
例えば、ステップＳ５３０で、ノードのリストが、要求側ノードＩＳＰに基づいてフィルタリングされる。フィルタリングされるノードのリストは、要求側ノードと同一のＩＳＰに関連付けられるノードのみを含むことができる。フィルタリングされるノードのリストはまた、要求側に関して比較的良好な品質および／または比較的安価な接続性（例えばピアリング契約）を有するノードをも含むことができる。ステップＳ５３４で、要求側ノードは、フィルタリングされたノードのリストに基づくピアセットまたはノードのリストを含む応答メッセージで応答を受ける。
【００７９】
例えば、ステップＳ５３２で、マイクロプロセッサ４６は、要求側ノードがネットワーク２４のメンバであると判定することができる。さらに、マイクロプロセッサ４６は、コンピュータ３、４、および７がネットワーク２４のメンバであると判定することができる。例示的実施形態によれば、ステップＳ５３０のローカルピアセットまたはノードのリストは、コンピュータ３、４、および７を含み、他のネットワークのコンピュータを含まない。ステップＳ５３４で、マイクロプロセッサ４６は、コンピュータ３、４、および７のリストを含む応答メッセージを送信することができる。
【００８０】
ステップＳ５３６で、上述の締切りが過ぎている場合、処理はステップＳ５４０に進む。そうでない場合、処理はステップＳ５３０に戻る。
【００８１】
図５Ｄを参照すると、ステップＳ５４０で、受信側ノードは、ネットワーク（例えば、ＩＳＰ）に関連付けられる他のノードが要求されたコンテンツについての情報を含むことを受信側ノードが知っているかどうかを判定する。ステップＳ５４２で、要求されたコンテンツについての情報を含むネットワークに関連付けられる他のノードを受信側ノードが知っている場合、ステップＳ５４４で、受信側ノードは、要求側ノードに応答メッセージを送信する。応答メッセージは、ノードのリストをコンテンツについての情報と共に含む。そうでない場合、処理はステップＳ５４６に進む。
【００８２】
例えば、ステップＳ５４０で、ノードのリストは、ステップＳ５０８およびＳ５３０に関して上記で説明した通りではない。したがって、ステップＳ５４４で、要求側ノードは、ネットワークに基づく区別のないピアセットまたはノードのリストを含む応答メッセージで応答を受ける。
【００８３】
ステップＳ５４６で、ノードのリストが、コンテンツの論理識別子（キー）に近接するノードに基づいて求められる。ノードのリストは、コンテンツの論理識別情報に近いノードを含む。ステップＳ５４８で、応答メッセージが、コンテンツを要求するノードに送信され、応答メッセージは、コンテンツの論理識別子（キー）に近接するノードに基づくノードのリストを含む。例えば、応答メッセージは、応答側ノードがコンテンツの少なくとも一部を含むことを示すフィールドを含むことができる。送信される応答メッセージは、応答側ノードがピアにコンテンツを送信すべきであることを示すフィールドを含むことができる。コンテンツの論理識別子に近接するノードに基づいてノードのリストを求め、リストを送信する他のプロセスが当業者に知られており、簡潔のためにさらには論じない。
【００８４】
図６Ａおよび６Ｂに、例示的実施形態によるピアツーピアネットワーク内のトラフィックを位置特定する別の方法の流れ図を示す。図６Ａおよび６Ｂに関連する方法のステップを説明する間に、図２および図３のネットワークと、図４Ａおよび４Ｂに示すデータパケットとを参照する。
【００８５】
図６Ａを参照すると、ステップＳ６０５で、メッセージが送信される。メッセージは、コンテンツを求める要求と、コンテンツを受信すべきときに関する締切りとを含むことができる。例えば、メッセージは、上記で図４Ａで示した関連するデータパケットを有することができる。図４Ａを参照すると、締切りフィールドは、コンテンツがそれまでに受信されるべきときに関する締切りを示す時間値を含むことができる。時間値は、コンテンツがそれまでに受信されるべき日付および時刻を示すことができる。あるいは、時間値は、コンテンツがそれまでに受信されるべき日付および時刻を計算するのに使用される値でよい。
【００８６】
パース済み検索文字列は、コンテンツを示す文字列でよい。上述のように、コンテンツを示すパース済み検索文字列は、当業者に知られている。例えば、メッセージは上述のＢＩＴＴＯＲＲＥＮＴ  ｇｅｔ＿ｐｅｅｒメッセージでよい。
【００８７】
ステップＳ６１０で、応答メッセージが監視される。ステップＳ６１５で、応答メッセージが、送信されたメッセージに応答して受信されたメッセージであるかどうかが判定される。応答メッセージが、送信されたメッセージに応答して受信された場合、処理はステップＳ６２０に進む。そうでない場合、処理はステップＳ６１０に戻る。メッセージを監視し、応答メッセージが送信されたメッセージに関連付けられるかどうかを判定することは、当業者に知られており、簡潔のためにさらには論じない。
【００８８】
ステップＳ６２０で、ピアは、応答メッセージがピアと同一のネットワークに関連付けられるノードから受信されたかどうかを判定する。例えば、応答メッセージに関連付けられるアドレスを、ピアに関連付けられるアドレスと比較することができる。両方のアドレスが同一のネットワーク（例えば、インターネットサービスプロバイダ（ＩＳＰ）ネットワーク）に関連付けられる場合、ノードとピアが同一のネットワークに関連付けられると判定することができる。応答メッセージが、ピアと同一のネットワークに関連付けられるノードから受信される場合、処理はステップＳ６３０に進む。そうでない場合、処理はステップＳ６２５に移動し、メッセージがキューイングまたは格納される。例えば、データベース５２に関連付けられるメモリ位置にメッセージをキューイングまたは格納することができる。ステップＳ６０５で送信されたメッセージに関連してメッセージをキューイングまたは格納することができる。何らかの将来の処理のためにメッセージをキューイングまたは格納することができる。例えば、図６Ｂに関して以下で説明するように、キューイングまたは格納されたメッセージを処理することができる。メッセージがキューイングまたは格納された後、処理はステップＳ６１０に戻る。
【００８９】
ステップＳ６３０で、ピアは、要求したコンテンツを応答側ノードが有することを応答メッセージが示すかどうかを判定する。ステップＳ６３０で、要求したコンテンツを応答側ノードが有する場合、ステップＳ６３５で、メッセージが、コンテンツを有する応答側ノードに送信される。メッセージは、コンテンツを送信する要求でよい。そうでない場合、処理はステップＳ６４０に移動する。例えば、応答メッセージは、応答側ノードがコンテンツの少なくとも一部を含むことを示すフィールドを含むことができる。さらに送信されるメッセージは、応答側ノードがピアにコンテンツを送信すべきであることを示すフィールドを含むことができる。要求したコンテンツを応答側ノードが有することを応答メッセージが示すかどうかを判定し、コンテンツを要求する他のプロセスが当業者に知られており、簡潔のためにさらには論じない。
【００９０】
ステップＳ６４０で、ピアは、応答メッセージがノードのリストを含むかどうかを判定する。応答メッセージがノードのリストを含む場合、処理はステップＳ６４５に進む。そうでない場合、処理はステップＳ６１０に戻る。ステップＳ６４５で、ノードのリストが処理され、処理はステップＳ６０５に戻る。例えば、メッセージは、メッセージがノードのリストを含むことを示すフィールドを含むことができる。ピアは、ノードのリストを読み取り、ステップＳ６０５に関して上記で説明したように、リスト内のノードにメッセージを送信することができる。応答メッセージがノードのリストを含むかどうかを判定し、ノードのリストを処理する他のプロセスが当業者に知られており、簡潔のためにさらには論じない。
【００９１】
図６Ｂに、例示的実施形態によるピアツーピアネットワーク内のピアによってキューイングまたは格納されたメッセージを処理する方法の流れ図を示す。キューイングまたは格納されたメッセージは、上述のステップＳ６２５で格納されたメッセージでよい。
【００９２】
図６Ｂを参照すると、ステップＳ６５０で、ピアは、上述の締切りが過ぎたかどうかを判定する。締切りが過ぎている場合、処理はステップＳ６５５に進む。そうでない場合、処理はステップＳ６５０でループする。上述のように、受信側ノードと要求側ノードが同一のネットワークに関連付けられないので、処理はステップＳ６５０に移動する（かつループする）。したがって、受信側ノードと要求側ノードが同一のネットワークに関連付けられない場合、受信側ノードによってアクションは実施されない。ステップＳ６５０で締切りが過ぎるまで、アクションは実施されない。したがって、ピアツーピアネットワーク（例えば、ネットワーク２４）内のトラフィック位置特定が改善される。
【００９３】
ステップＳ６５５で、ピアは、コンテンツの位置が特定されたかどうかを判定する。例えば、ピアに関連付けられるクライアントが、コンテンツの位置が特定されたことをピアに通知する標識を格納することができる。コンテンツの位置が特定されたかどうかを判定する他のプロセスが当業者に知られており、簡潔のためにさらには論じない。コンテンツの位置が特定されていない場合、処理はステップＳ６６５に進む。そうでない場合、処理はステップＳ６６０に移動する。ステップＳ６６５で、ピアは、すべてのキューイングまたは格納されたメッセージを削除すべきかどうかを判定する。例えば、クライアントアプリケーションは、ローカルネットワークに関連付けられるコンテンツの位置だけを突き止めるための設定を含むことができる。設定をコンテンツ要求に関連付けることができ、または設定は、すべてのコンテンツ要求に関連付けられる一般的設定でよい。ローカルネットワークにコンテンツを要求すべきであることを設定が示す場合、ピアは、すべてのキューイングまたは格納されたメッセージを削除するように決定することができる。すべてのキューイングまたは格納されたメッセージを削除すべきである場合、処理はステップＳ６６０に移動する。そうでない場合、処理はステップＳ６７０に進む。
【００９４】
ステップＳ６６０で、キューイングまたは格納されたメッセージが削除される。例えば、データベース５２に関連付けられるメモリ位置にメッセージをキューイングまたは格納することができる。（上述の）ステップＳ６０５で送信されたメッセージに関連してメッセージをキューイングまたは格納することができる。ステップＳ６６０で、ステップＳ６０５で送信されたメッセージに関連付けられるメッセージをデータベース５２から削除することができる。
【００９５】
ステップＳ６７０で、ピアは、キューが空であるかどうかを判定する。例えば、ピアは、データベース５２に照会して、ステップＳ６０５で送信されたメッセージに関連付けられる何らかのメッセージがあるかどうかを判定する。キューが空である場合、処理は何らかの他の処理に進む。キューが空でない場合、処理はステップＳ６７５に進み、メッセージがキューから選択される。例えば、データベース５２の照会からのメッセージが選択される。
【００９６】
ステップＳ６８０で、ピアは、要求したコンテンツを応答側ノードが有することを、選択されたメッセージが示すかどうかを判定する。ステップＳ６８０で、要求されたコンテンツを応答側ノードが有する場合、ステップＳ６８５で、メッセージが、コンテンツを有する応答側ノードに送信される。メッセージは、コンテンツを送信する要求でよい。そうでない場合、処理はステップＳ６９０に移動する。例えば、応答メッセージは、応答側ノードがコンテンツの少なくとも一部を含むことを示すフィールドを含むことができる。さらに送信されるメッセージは、応答側ノードがピアにコンテンツを送信すべきであることを示すフィールドを含むことができる。要求したコンテンツを応答側ノードが有することを応答メッセージが示すかどうかを判定し、コンテンツを要求する他のプロセスが当業者に知られており、簡潔のためにさらには論じない。
【００９７】
ステップＳ６９０で、ピアは、選択されたメッセージがノードのリストを含むかどうかを判定する。応答メッセージがノードのリストを含む場合、処理はステップＳ６９５に進む。そうでない場合、処理はステップＳ６９８に移動する。ステップＳ６９５で、ノードのリストが処理され、処理はステップＳ６９８に進む。例えば、メッセージは、メッセージがノードのリストを含むことを示すフィールドを含むことができる。ピアは、ノードのリストを読み取り、ステップＳ６０５に関して上記で説明したように、リスト内のノードにメッセージを送信することができる。応答メッセージがノードのリストを含むかどうかを判定し、ノードのリストを処理する他のプロセスが当業者に知られており、簡潔のためにさらには論じない。
【００９８】
ステップＳ６９８で、ピアは、キューが空であるかどうかを判定する。例えば、ピアは、データベース５２に照会して、ステップＳ６０５で送信されたメッセージに関連付けられる何らかのメッセージがあるかどうかを判定する。キューが空である場合、処理は何らかの他の処理に進む。キューが空でない場合、処理はステップＳ６７５に戻る。
【００９９】
要求されたコンテンツのすべてが要求され、要求側ピアにダウンロードされるまで、図６Ａおよび６Ｂで示した方法のステップを反復的に繰り返すことができる。
【０１００】
ファイル共有（例えば、ＢＩＴＴＯＲＲＥＮＴファイル共有システム）を実施するクライアントアプリケーションを修正することにより、図５Ａ、５Ｂ、６Ａ、および６Ｂの例示的実施形態に基づくピアツーピアネットワーク内のトラフィック位置特定を実装することができる。
【０１０１】
本発明の代替実施形態をコンピュータシステムと共に使用されるコンピュータプログラム製品として実装することができ、コンピュータプログラム製品は、例えば、ディスケット、ＣＤ−ＲＯＭ、ＲＯＭ、または固定ディスクなどの有形または非一時的データ記録媒体（コンピュータ可読媒体）上に格納された一連のコンピュータ命令、コードセグメント、またはプログラムセグメントであり、または本発明の代替実施形態をコンピュータデータ信号で実施することができ、信号は、有形媒体またはワイヤレス媒体、例えばマイクロ波または赤外線を介して伝送される。一連のコンピュータ命令、コードセグメント、またはプログラムセグメントは、上述の例示的実施形態の方法の機能のすべてまたは一部を構成することができ、半導体装置、磁気装置、光学装置、または他のメモリ装置などの、揮発性または不揮発性の任意のメモリ装置に格納することもできる。
【０１０２】
例示的実施形態が具体的に図示され、説明されたが、請求項の趣旨および範囲から逸脱することなく、これらの実施形態において形態および細部の変形を行うことができることを当業者は理解されよう。
【０１０３】
このように本発明が説明されたので、本発明を多くの形で変形できることは明らかであろう。そのような変形は本発明からの逸脱とみなされるべきではなく、すべてのそのような修正は、本発明の範囲内に包含されるものとする。
【図１】
0005798638.tif 000002
【図２】
0005798638.tif 000003
【図３】
0005798638.tif 000004
【図４Ａ】
0005798638.tif 000005
【図４Ｂ】
0005798638.tif 000006
【図５Ａ】
0005798638.tif 000007
【図５Ｂ】
0005798638.tif 000008
【図５Ｃ】
0005798638.tif 000009
【図５Ｄ】
0005798638.tif 000010
【図６Ａ】
0005798638.tif 000011
【図６Ｂ】
0005798638.tif 000012