これらの図は、ある特定の例示的な実施形態において使用される方法、構造および/または材料の一般特性を示し、下記に提供される明細書を補足するものであることに留意されたい。しかしながら、これらの図面は、縮尺通りではなく、任意の所与の実施形態の精密な構造特性または性能特性を正確に反映していない場合があり、例示的な実施形態によって包含される値または性状の範囲を画定するか、または限定するものと解釈すべきでない。例えば、分子、階層、領域および/または構造的な構成要素の相対的な厚さおよび位置は、明確にするために削減されるか、または誇張される場合がある。さまざまな図面における同様または同一の参照番号は、同様または同一の構成要素または特徴の存在を示すものである。
例示的な実施形態はさまざまな修正形態および代替の形態になることができるが、その実施形態が図面において例として示され、本明細書において詳細に説明される。しかしながら、例示的な実施形態を開示された特定の形態に限定するものではなく、これに反して、例示的な実施形態は、特許請求の範囲の範囲に入るすべての修正形態、均等物、および代替物をカバーするものであることを理解すべきである。図の説明全体を通して、同じ番号は同じ構成要素を参照する。
例示的な実施形態をより詳細に説明する前に、いくつかの例示的な実施形態は、流れ図として描写される処理または方法として記載されることに留意されたい。流れ図は動作を連続的な処理として記載するが、多くの動作は、並行して、共にまたは同時に実行することができる。加えて、動作の順序は再調整することができる。処理は、それらの動作が完了すると終了することができるが、図には含まれていない別のステップを有する場合もある。処理は、方法、機能、手順、サブルーチン、サブプログラムなどに対応することができる。
下記に説明される方法は、そのいくつかは流れ図によって示されるが、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実装することができる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードの中に実装されると、必要なタスクを実行するプログラム・コードまたはコード・セグメントは、記憶媒体などの、マシンまたはコンピュータの可読媒体の中に格納することができる。プロセッサは必要なタスクを実行することができる。
本明細書に開示された特定の構造的および機能的な詳細は、本発明の例示的な実施形態を説明する目的のために表されるものにすぎない。しかしながら、本発明は多くの代替の形態で具現化することができ、本明細書において説明される実施形態のみに限定するものと解釈すべきでない。
第1、第2などの用語は、本明細書においてさまざまな構成要素を記載するために使用する場合があるが、これらの構成要素はこれらの用語によって限定されるべきでないことが理解されよう。これらの用語は、1つの構成要素を別の構成要素から区別するためだけに使用される。例えば、例示的な実施形態の範囲から逸脱することなく、第1の構成要素は第2の構成要素と呼ばれてもよいし、同様に、第2の構成要素は第1の構成要素と呼ばれてもよい。本明細書では、用語「および/または」は、関連する列挙された項目のうちの1つまたは複数のありとあらゆる組合せを含む。
構成要素が別の構成要素に「接続」または「結合」すると呼ばれる場合、その他の構成要素に直接接続もしくは結合してもよいし、または介在する構成要素が存在してもよいことが理解されよう。対照的に、構成要素が別の構成要素に「直接接続」または「直接結合」すると呼ばれるとき、介在する構成要素は存在しない。構成要素の間の関係を説明するために使用される他の単語は、同じように解釈すべきである(例えば、「間」対「直接の間」、「近傍」対「直接の近傍」)。
本明細書において使用される述語は、特定の実施形態を説明する目的のためだけであり、例示的な実施形態を限定するものではない。本明細書では、単数形「a」、「an」および「the」は、文脈が明らかに他を示さないかぎり、複数形も含むものである。用語「備える」、「備えている」、「含む」、および/または「含んでいる」は、本明細書において、特徴、整数、ステップ、動作、構成要素、および/または構成部品の存在を指定するが、1つまたは複数の他の特徴、整数、ステップ、動作、構成要素、構成部品、および/またはそのグループの存在もしくは追加を排除しないことがさらに理解されよう。
また、いくつかの代替の実装形態において、注記された機能/動作が図の中で注記された順序以外で起こる場合があることに留意されたい。例えば、連続して示された2つの図は、関与する機能/動作に応じて、実際には同時に実行される場合があるか、または時々逆の順序で実行される場合がある。
他に定義されないかぎり、本明細書において使用される(技術的および科学的な用語を含む)すべての用語は、例示的な実施形態が属する技術の当業者によって一般に理解されるのと同じ意味を有する。用語、例えば、一般に使用される辞書で定義された用語は、関連技術の文脈内の意味と一致する意味を有すると解釈すべきであり、本明細書において明確にそう定義されないかぎり、理想化された、または過度に形式的な意味で解釈されないことがさらに理解されよう。
例示的な実施形態の一部および対応する詳細説明は、ソフトウェアの用語、または、アルゴリズムおよびコンピュータ・メモリ内のデータ・ビット上の動作の符号表現で提示される。これらの説明および表現は、それにより当業者が自分の仕事の本質を他の当業者に効果的に伝えるものである。アルゴリズムは、その用語が本明細書で使用されるように、かつそれが一般的に使用されるように、所望の結果に導く首尾一貫した順序のステップであると考えられる。ステップは、物理量の物理操作を必要とするステップである。通常、必要ではないが、これらの量は、格納、転送、結合、比較、およびその他の方法で操作することができる、光学的、電気的、または磁気的な信号の形を取る。主に共通使用の理由から、これらの信号をビット、値、要素、符号、文字、用語、数などとして参照することが時には便利であると証明された。
以下の説明では、例示的な実施形態は、プログラム・モジュールまたは機能プロセスが特定のタスクを実行し特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むように実装することができ、既存のネットワーク構成要素で既存のハードウェアを使用して実装することができる、動作の動きおよび符号表現を参照して(例えば、流れ図の形で)記載される。そのような既存のハードウェアには、1つまたは複数の中央処理装置(CPU)、デジタル・シグナル・プロセッサ(DSP)、特定用途向け集積回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)・コンピュータなどが含まれ得る。
しかしながら、これらおよび同様の用語のすべては、適切な物理量に関連付けられ、これらの量に適用される便利なラベルにすぎないことに留意されたい。特に断りのないかぎり、または説明から明白なように、「処理」または「計算」または「算出」または「決定」または「表示」などの用語は、コンピュータ・システムのレジスタ内およびメモリ内で物理的、電子的な量として表現されたデータを操作し、コンピュータ・システムのメモリまたはレジスタまたは他のそのような情報を格納、伝送または表示する装置内の物理的な量と同様に表現された他のデータに変換する、コンピュータ・システムまたは同様の電子計算装置の動作および処理を参照する。
また、例示的な実施形態のソフトウェア実装の態様は、通常何らかの形のプログラム記憶媒体上で符号化されるか、または何らかのタイプの伝送媒体を介して実装されることに留意されたい。プログラム記憶媒体は、磁気式(例えば、フロッピ・ディスクもしくはハード・ドライブ)または光学式(例えば、コンパクト・ディスク・リード・オンリ・メモリ、すなわち「CD ROM」)であり得るし、リード・オンリまたはランダム・アクセスであり得る。同様に、伝送媒体は、ツイスト・ワイヤ・ペア、同軸ケーブル、光ファイバ、または、当技術分野で既知の他の何らかの適切な伝送媒体であり得る。例示的な実施形態は、任意の所与の実装形態のこれらの態様によって限定されない。
用語「ピア」および「ノード」は、本開示全体を通して区別なく使用される。一般に、ピアはピアツーピア・ネットワーク内の物理的なハードウェアを参照する。また、ピアはノードであり得る。しかしながら、ノードはより一般には、例えば、ピアツーピア・ネットワーク内のファイルの位置(例えば、テーブル内のアドレスまたは参照)の論理的なインスタンスも参照する場合がある。
図2は、例示的な実施形態によるピアツーピア・ネットワーク18の概略図である。図2に示されたピアツーピア・ネットワーク18の中には、中央コンピュータ14は存在しない。示されていないが、ピア40はお互いに接続によってつながれていることを理解すべきである。
図2はピアツーピア・ファイル共有ネットワーク18を示す。図2のネットワーク18は、集中型コンポーネントに依存してネットワーク・コンテンツを列挙するのではなく、分散ハッシュ・テーブル(DHT)19を使用してディレクトリ・データベースをすべての参加クライアントに分散する。DHT19は、図2において、ネットワーク18のすべての態様を共につなぐ破線として表される。
ファイル共有ネットワーク18は、第1のインターネット・サービス・プロバイダ(ISP)24および第2のISP26を含む。ISP24内には、ピア、ノードまたはユーザ40と呼ばれてもよい、さまざまなクライアントが存在する。さまざまなクライアント、ピアまたはユーザは、参照数字の後に文字を追加することにより、同じISP上の他のピアの中から区別される。
第2のISP26もさまざまなピア42を有して示される。第1のISP24と第2のISP26はピアリング・リンク28を介して共につなぐことができる。
インターネット全体22が図2において示される。ISP24は、トランジット・リンク30を介してインターネット全体22につなぐことができる。トランジット・リンク30は、ISP26もインターネット全体22につなぐことができる。インターネット全体22上に位置するピアは、参照番号44によって識別される。ピア40および42と同じように、インターネット全体22上のピア44は少なくとも1つのISPに関連付けられる。しかしながら、インターネット全体22上のピア44に関連付けられたISPは示されていない。
異なるISP24、26に関連付けられたピア40、42、44の間でファイルを共有するために必要とされるリソース(例えば、ピアリング・リンク28またはトランジット・リンク30)の数に起因して、可能なときはいつでも、異なるISP上に位置するピア間でファイルを共有するよりむしろ、特定のISP内のピアにお互いの間でファイルを共有させることが好ましい場合がある。
矢印32は、ピア40a、40b、および40dがお互いの間でファイルを共有する、ファイル共有の好ましい方向を示す。ピア40a、40b、および40dのすべてはISP24上に位置している。ISP24内に位置しているピア40がISP24上に位置しているどのピアにも含まれていないファイルを要求する場面を作り出す、いくつかの状況が存在する場合がある。したがって、要求したコンテンツを取得するために、ピア40は、ISP26またはインターネット全体22のどちらかに位置するユーザからコンテンツを取得しなければならない。
図3は、さまざまなISP24、26、インターネット全体22、および(コンピュータまたはネットワーク構成要素とも呼ばれる)ネットワーク・コンポーネントを示す概略図である。ネットワーク構成要素45は、図2に関して上記に示されたように、ネットワーク全体を通して分散することができる。例えば、集中型コンピュータ14をもたず、むしろDHT19を使用するようなファイル共有ネットワーク18などのピアツーピア・ファイル共有ネットワークにおいて、コンピュータまたはネットワーク構成要素45は、ファイル共有ネットワーク全体を通して分散することができる。あるいは、ネットワーク構成要素45は、接続46を介して、さまざまなISP24および26、ならびにインターネット全体22とつなぐことができるにすぎない。
図3に示されたように、ネットワーク構成要素45は、接続50を介してデータベース52につながれた1つまたは複数のマイクロプロセッサ48を含むことができる。また、ネットワーク構成要素45は、接続55を介して別のデータベース53に動作可能なようにつなぐことができる。下記でより詳細に説明されるように、データベース53は検索可能であり、どのISPが所与のピアに関連付けられているかなどの情報をネットワーク構成要素45に提供することができる。
本発明のいくつかの実施形態では、ネットワーク構成要素45は、ネットワークにつながれた既存のシステム・コンポーネントであり得る。既存のネットワーク構成要素45は、本明細書に記載された機能を実行するようにプログラムすることができる。例えば、既存のネットワークは、本明細書に記載された機能を実行するようにプログラムされたネットワーク・コンポーネントを含むことができる。他の実施形態では、ネットワーク構成要素45は、(既存のネットワーク・コンポーネントではなく、むしろ)ネットワークに追加され、本明細書に記載された機能を実行するように構成することができる。
例示的な実施形態は2つの処理に従って動作する。第1の処理は、すべてのピア通知メッセージを傍受し、DHT19を更新することを含む。当業者が知っているように、ピア通知メッセージは、ファイルもしくはコンテンツ、および/またはファイルもしくはコンテンツのある部分を保持することを伝えるために、ピアによって使用される。例えば、ピア40はネットワーク構成要素45を含むことができる。マイクロプロセッサ46はピア・メッセージを傍受するように構成することができる。ピア・メッセージは、ピアがファイルまたはその一部を保持することを分散ハッシュ・テーブル(DHT)の中に発行するピア(例えば、ピア40)からであり得る。
ISP24とISP26がしばしばお互いと通信し、したがって、ピアリング・リンク28は、ISP24を別のISPとリンクする一般のトランジット・リンクより、大きな容量を有するか、または低いコストで動作できる可能性がある。
知られているように、単一の物理エンティティは、多くの別個の論理識別情報で、何度もポイントツーポイント・ネットワークに参加することができる。これらの論理識別情報はシビルと呼ばれる場合がある。論理識別情報は、例えばハッシュ関数を使用して計算された、ユニークな識別子またはキーを有することができる。ハッシュ関数は、例えばノードおよび/またはコンテンツに関連する情報上で実行することができる。例示的な実施形態では、ノードまたはピア(例えば、ピア40a)はユニークな識別子またはキーを有することができ、ファイルまたはコンテンツはユニークな識別子またはキーを有することができる。知られているように、インターネット・サービス・プロバイダ(ISP)のスケールに関連するクライアント間で直接交換されるトラフィックを捕捉することは、不可能ではないにしても一般に実行困難である。実際には、データ収集は、各ISPルータで何十万ものフィルタリング規定のセットアップを必要とするはずである。知られているように、ISPルータはこの機能をもっていない。
したがって、例示的な実施形態は、ファイルまたはコンテンツのユニークな識別子またはキーに近い識別子またはキーを有するいくつかの論理識別情報を、DHT19の中に挿入する。次いで、論理エンティティはピア通知メッセージを傍受するために使用される。
第2の処理は、ファイルまたはコンテンツを保持するピアのリストを要求するメッセージを傍受し、ローカルのピアのセットまたはノードのリストでメッセージに応答することを含むことができる。ピア通知メッセージに関して上述したように、論理エンティティは、DHTに沿ったいくらか反復型の調査で、ファイルを保持するピアのリストを要求するメッセージを傍受することもできる。DHTは、これらのコンテンツ要求に応答するために使用される。すなわち、これらの処理用エンジンは各ノードにあるDHTクライアントである。
知られているように、DHT19は、ディレクトリ・データベースをすべての参加クライアントまたは参加ノードに分散させるために使用される。知られているように、ディレクトリ・データベースは、ピアツーピア・ネットワーク内のすべてのピア(例えば、コンピュータまたは物理マシン)、ならびに、各ピア上に位置するすべてのコンテンツ(例えば、ファイル、ビデオ、オーディオなど)のリストである。
最初に、DHT19は、物理的なノードもしくはピアへの参照(図4A参照)、および/または、ファイルもしくはコンテンツへの参照(図4B参照)だけを保持することができる。上述したように、これらの参照は論理識別情報として保持される。論理識別情報は、例えばハッシュ関数を使用して計算されたユニークな識別子またはキーを有することができる。
ファイルまたはコンテンツは、必ずしもファイルまたはコンテンツへの参照を有するDHT19を含むノードではないノード上に格納することができる。例えば、ファイルまたはコンテンツが格納されたノードは、コンテンツ上でハッシュ関数を実行することができる。次いで、ノードは、ハッシュされたコンテンツの結果に近い論理識別情報を有するノードを決定する。次いで、ファイルまたはコンテンツが格納されたノードは、よく知られている方法を使用して、ハッシュされたコンテンツの結果に近い論理識別情報を有するノードに知らせることができる。次いで、下記に記載される方法はファイルまたはコンテンツに関連付けることができる。
図4Aは、物理的なノードまたはピアへの参照だけを含むDHT(例えば、DHT19)を示す。知られているように、各々のノードまたはピアは、例えば、通知メッセージまたはpingメッセージの結果としてDHT19に追加される。例えば、ピアツーピア・ネットワーク用の既知のファイル共有システムBITTORRENTでは、announce_peer(A)メッセージが使用される。ここで、Aはピアについての何らかの情報(例えば、アドレスおよびポート)である。BITTORRENTファイル共有システムでは、ネットワークへの参加を望むピアは、announce_peer(A)メッセージをネットワーク内のピアのサブセットに送信する。
例えば、BITTORRENTファイル共有システムのピアは、3つの最も近いピアを含むルーティング・テーブルを有することができる。通知するピアAは、find_peer(hash(A))メッセージを3つの最も近いピアに送信することができる。各ピアは、自分のルーティング・テーブルの中でノード識別子Aに近いピアを検索することができる。ピアは、(例えば、メッセージを使用して)検索からのピアを、通知するピアAに返す。この通知処理は、hash(A)に最も近いピアが見つかるまで、繰り返し起こる可能性がある。hash(A)に最も近いピアが見つかると、通知するピアAは、announce_peer(A)メッセージをhash(A)に最も近いピアに送信することができる。
上述したように、受信するピアは、通知するピアを、受信するピアと関連するDHT19に追加することができる。知られているように、受信するピアはハッシュ関数を使用して、通知するピア用のユニークな識別子またはキーを決定することができる。例えば、ハッシュ関数は、通知するピアについての情報を入力として取ることができる。入力情報は、例えば、上記BITTORRENTファイル共有システムの例からの「A」(例えば、アドレスおよびポート)であり得る。ハッシュ関数の出力はビット・シーケンスであり得る。(図4Aにおいてhash_0およびhash_500によって表された)ビット・シーケンスは、nビットの長さ(例えば、n=160)であり得る。
理解されるように、ハッシュ関数から2n個の別個の出力がある。したがって、2n個のノード(論理または物理)を識別する2n個のエントリが、DHT19の中に存在することができる。知られているように、別個のノードの数は限定され得るので、比較的大きな数値的な違いで各々のノードまたはピアにビット・シーケンスを割り当てるハッシュ関数を使用することにより、各ノードを論理的に分けることは可能であり得る。
次いで、受信するピア(例えば、ノード40a)は、<キー、値>のペアで通知ピア(例えば、ノード40d)を、受信するピアのDHT19に追加することができる。ここで、キーは(上述した)ハッシュ関数の結果であり、値はDHT19のエントリに関する何らかの情報である。例えば、値は、ノードの標識または名前、(下記でより詳細に説明される)ネットワークについての情報またはコンテンツについての情報であり得る。図4Aは、hash_0およびhash_500それぞれについて、node_ID=computer_1およびnode_ID=computer_2の値を示す。
上記および下記で記載されるように、例示的な実施形態は、値がブランクで、キー(例えば、ハッシュされたビット・シーケンス)のみが任意の必要な情報を含むことができるように、<キー、値>のペアを格納することができる。例えば、(ピア、または下記に記載されるようにコンテンツに基づいてハッシュされたキーである)キーは、例えば、データベース52および/またはデータベース53に格納された別のテーブル用の検索値として使用することができる。
受信するピアは、すべての受信された通知メッセージ用の情報を格納することができない。例えば、知られているように、BitTorrent Inc.に登録されたBITTORRENT(商標)ファイル共有システムは、当技術分野でKademliaとして知られているDHT19を使用する。Kademliaにおけるハッシュ関数は、ビット排他論理和(XOR)がノード間の論理的な距離を決定するように、ノード用の識別子またはキーを出力する。例えば、Kademliaにおいて、2つの識別子またはキー、aおよびb(例えば、図4Aからのhash_0およびhash_500)が与えられると、Kademliaはそれらの間の距離をそれらのビット排他論理和として定義する。Kademliaのピアは、その識別子またはキーの0<i<160ビットの各々用のノード、ピアのDHT内で自分から2^i<d<2^(i+1)のXOR距離を有するピアだけを格納することができる。
図4Bは、物理的なノードまたはピアへの参照とコンテンツを識別するノードへの参照とのどちらも含むDHT(例えば、DHT19)を示す。知られているように、通知するピア(例えば、ノード40d)は、ピアが自分を通知するのと大体同じ方法でコンテンツを通知する。しかしながら、通知は、コンテンツの何らかの標識も含むことができる。例えば、上記からのBITTORRENTファイル共有システムの例を続けると、通知メッセージはannounce_peer(A,B)であり得る。ここで、追加のパラメータBはコンテンツの標識である。
知られているように、受信するピアは、上述したように受信するピアが通知されたピアを追加するのと大体同じ方法で、通知されたコンテンツを受信するピアのDHT19に追加することができる。しかしながら、受信するピアはコンテンツに関する情報も格納することができる。DHT19はコンテンツ自体を格納しない。一方、DHT19は、コンテンツを参照するために有用であり得る何らかの情報を格納する。
知られているように、ハッシュ関数は、ノードの標識(例えば、ノード・アドレス)またはコンテンツの表現を入力として取ることができる。次いで、ハッシュ関数は、例えば、ピアのアドレスまたはコンテンツのタイトルに基づいてビット・シーケンスを出力する。上述したように、ピアは、KademliaのXOR距離を満足するピアからのコンテンツの通知だけを格納することができる。
上述したように、<キー、値>のペアはDHT内に格納することができる。上述したように、キーはハッシュ関数からのビット・シーケンスの出力であり得る。値は上述した通りであり得る。しかしながら、値は、ファイルまたはコンテンツに関する何らかの情報を含むこともできる。例えば、そのファイルまたはコンテンツを提供するピアのアドレス、値は、ファイルの名前、ファイルを格納するピア上のファイルのメモリ位置に対するポインタ、またはファイルのタイプ(例えば、ビデオ、オーディオ、プログラム)を含むこともできる。
第1および第2の処理の各々は、図5〜8に関して下記でより詳細に説明される。図5は、例示的な実施形態によりピアを通知するための方法の流れ図を示す。図6は、例示的な実施形態によりノード識別情報(シビル)を格納するための方法の流れ図を示す。図7は、例示的な実施形態によりコンテンツを通知するメッセージを傍受するための方法の流れ図を示す。図8は、例示的な実施形態によりコンテンツを要求するメッセージを傍受するための方法の流れ図を示す。
図5に関連する方法のステップを説明しながら、図2および図3のネットワークへの参照がなされる。さらに、図4Aに示されたような例示的な分散ハッシュ・テーブル(DHT)への参照もなされる。さらに、図5は、図4Aに関して上述したような物理的なピアでDHTを埋めることも示す。
ステップS505において、物理的なピアまたはノード(例えば、ノード40aおよび40b)を通知するピアのメッセージを受信することができる。例えば、ピア通知メッセージは、図4Aに関して上述したように受信することができる。あるいは、および/または、上述したようにピア通知メッセージを受信することに加えて、当技術分野で知られているように、pingメッセージを受信することができる。pingメッセージは、pingメッセージを起動したピアまたはノードの何らかの標識を含むことができる。
ステップS510において、物理的なピアまたはノードの標識が決定される。例えば、図4Aに関して上述したように、ピア通知メッセージは、ピアまたはノードについての何らかの情報を含むことができる。この情報は、例えば、ピアまたはノードに関連するアドレスおよび/またはポートであり得る。また、図4Aに関して上述したように、標識は、例えばノード識別子またはキー(例えば、ハッシュされたキー)であり得る。
ステップS515において、物理的なピアまたはノードの標識に基づいて、ノード識別子またはキーが決定される。例えば、図4Aに関して上述したように、ハッシュ関数は、通知するピア用またはノード用のユニークな識別子またはキーを決定するために使用することができる。例えば、ハッシュ関数は、通知するピアについての情報を入力として取ることができる。ハッシュ関数の出力はビット・シーケンスであり得る。(図4Aにおいてhash_0およびhash_500によって表された)ビット・シーケンスは、nビット(例えば、n=160)であり得る。
あるいは、ステップS510において標識がハッシュされたキーである場合、ステップS515は、ノード識別子またはキーとして、ハッシュされたキーを使用するように決定することができる。
ステップS520において、DHT19は、ノード識別子またはキーを使用する物理的なピアまたはノードへの参照で埋められる。例えば、図4Aに関して上述したように、DHT19は、<キー、値>のペアとして参照されるピアまたはノードで埋めることができる。DHT19の<キー、値>のペアは、キーがハッシュ関数の結果であり、値がDHT19のエントリに関する何らかの情報である場合がある。あるいは、上述したように、値はブランクのエントリであり得る。図5のステップは、ピアツーピア・ネットワーク18の寿命全体を通して、繰り返し実行することができる。
図6は、例示的な実施形態によりノード識別情報(シビル)を格納するための方法の流れ図を示す。図6に関連する方法のステップを説明しながら、図2および図3のネットワークへの参照がなされる。さらに、図4に示されたような例示的な分散ハッシュ・テーブル(DHT)への参照もなされる。
ステップS605において、コンテンツを通知するメッセージが、ピアまたはノード(例えば、ノード40aまたは40b)によって受信される。例えば、図4Bに関して上述したように、ピア通知メッセージを受信することができる。上述したように、ピア通知メッセージは、メッセージを伝送するピアまたはノードについての何らかの情報、および通知されたコンテンツについての何らかの情報を含むことができる。
ステップS610において、ノードに関連する情報および/またはコンテンツを含むノードの標識を決定することができる。例えば、図4Bに関して上述したように、ピア通知メッセージは、ピアまたはノードについての何らかの情報を含むことができる。例えば、この情報は、ピアまたはノードに関連するアドレスおよび/またはポートであり得る。
ステップS615において、コンテンツについての情報を決定することができる。例えば、図4Bに関して上述したように、ピア通知メッセージはコンテンツについての何らかの情報を含むことができる。
ステップS620において、ノード情報、および/または、物理的なピアもしくはノードの標識、およびコンテンツに基づいて、ノード識別子またはキーが決定される。例えば、図4Bに関して上述したように、ハッシュ関数は、コンテンツ用のユニークな識別子またはキーを決定するために使用することができる。例えば、ハッシュ関数は、通知するピアについての情報(例えば、ノード情報)またはコンテンツ(例えば、コンテンツ情報)を、入力として取ることができる。ノード情報はコンテンツを通知するノードを識別し、コンテンツ情報はコンテンツを識別する。ハッシュ関数の出力はビット・シーケンスであり得る。(図4Aにおいてhash_0およびhash_500によって表された)ビット・シーケンスは、nビット(例えば、n=160)であり得る。あるいは、通知メッセージは、コンテンツを表すハッシュされたキーを含むことができ、ステップS20において、このハッシュされたキーはメッセージから取り出され、ノード識別子またはキーとして使用される。
ステップS625において、DHT19は、ノード識別子またはキー、キーおよび/またはコンテンツへの参照で埋めることができる。例えば、図4Bに関して上述したように、DHT19は、<キー、値>のペアとして参照されるコンテンツで埋めることができる。DHT19の<キー、値>のペアは、キーがハッシュ関数の結果であり、値がDHT19のエントリに関する何らかの情報であり得る。あるいは、上述したように、値はブランクのエントリであり得、キーは、別のテーブルまたはデータベースにおいて検索キーとして使用することができる。
ステップS630において、ステップS620で決定されたノード識別子またはキーに基づいて、論理的な変形ノード識別子および/または(上述したように、シビルとしても知られている)変形キーを、DHT19の中に格納する(例えば、通知する)ことができる。例えば、図4Cにおいて、論理的な変形ノード識別子および/または変形キーは、hash_547、hash_548、hash_549、hash_551、hash_552およびhash_553のハッシュされたキーをもって示され、ファイルまたはコンテンツはhash_550のハッシュされたキーと同じである。
例えば、ステップS625において、キーはテーブル(例えば、DHT19)の中に格納することができ、キーは通知メッセージに基づく場合がある。キーはコンテンツ情報を含むことができる。コンテンツ情報はコンテンツを識別することができる。また、通知するノードは、堅牢性を実現するために、さまざまなノード上でコンテンツを識別するキーのk個(kは0より大きいかまたは0に等しい整数)の複製を通知することができる。これらのk個の複製は、キーに最も近いDHT19の中のk個のノード上に格納され、コンテンツを識別して通知する。
例えば、ステップS630において、ノードは、n個(nは2以上の整数)の変形キーをテーブルの中に格納することができる。ノードが通知するノードでない場合、複数の変形キーの各々は、格納されたキーの変形またはk個の複製のうちの1つであり得る。言い換えれば、変形キーは、キーの何らかの変形をもつ通知メッセージに基づいて格納されたキー(または1つの複製)のシビルであり得る。次いで、キーの変形をもつシビルはDHT19の中に入力することができる。
例えば、マイクロプロセッサ46は、n個の論理的な変形ノード識別子および/または変形キー(例えば、キー)をDHT19の中に格納することができる。ファイルまたはコンテンツに関してn個の論理的な変形ノード識別子および/または変形キーをDHT19の中に格納することは、例えば、ファイルまたはコンテンツ用のノード標識を決定し、次いで、ノード標識を論理的な変形ノード識別子および/または変形キーに割り当てることを伴ってもよい。例えば、マイクロプロセッサ46は、ハッシュ・キー(例えば、hash_550)を読み込み、ハッシュ・キーに対する論理的な加算または減算を実行して、論理的な変形ノード識別子および/または変形キー(例えば、キー)の各々を決定することができる。次いで、n個の論理的な変形ノード識別子および/または変形キーは、DHT19の中に格納することができる。
例えば、n個の論理的な変形ノード識別子および/または変形キーの各々は、論理的に、格納されたファイルまたはコンテンツのハッシュ・キーから始まる、次に近い論理的な識別子またはキーからの1ビットであり得る。図4Cにおいて示されたように、hash_551は論理的にhash 550から1ビット離れていて、hash_552は論理的にhash_551から1ビット離れている、など。例示的な実施形態は1ビットの分離を説明するが、例示的な実施形態はそれに限定されない。
論理的な変形ノード識別子および/または変形キーに関連するノード標識は、ファイルまたはコンテンツ(例えば、ハッシュ・キーhash_550)に関連するノード標識(例えば、ハッシュ・キー)と共通のいくつかのプレフィックス・ビットを共有することができる。例えば、論理的な変形ノード識別子および/または変形キーに関連するノード標識またはキーは、ノード標識に関連するビットのセット内に共通の少なくともp個のビットを共有することができる。pは、DHT19内の参加ノードの数によって決定することができる。NがDHT19内の全ノードの数である場合、少なくともpはbより大きくなければならず、ここで、2^b=N、lg2N=bである。
好ましくは、DHT19は、局所化用のファイルまたはコンテンツであると決定された、DHT19内の各ファイルまたはコンテンツ用の、少なくとも256に等しいn個の論理的な変形ノード識別子および/または変形キーを含む。各々は、少なくとも24に等しいp個の共通のプレフィックス・ビットを共有するノード標識を有する。
当業者が理解するように、論理的な変形ノード識別子および/または変形キーは、DHT19内で表されたすべてのファイルまたはコンテンツに関するか、関連して格納することができる。あるいは、DHT19内で表されたファイルまたはコンテンツのいくつかのサブセットは、それらに関連する論理的な変形ノード識別子および/または変形キーを有することができる。
例えば、人気のあるファイルは、ステップS625において、DHT19の中に格納された関連を有することができる。例えば、人気のあるファイルは頻繁にアクセスされるか、または通信されるファイルであり得る。DHT19内で利用可能なすべてのファイルまたはコンテンツを監視することは困難であると証明することができる。何故なら、これは何百万もの論理的な変形ノード識別子および/または変形キーの導入を必要とし、その結果、論理的な変形ノード識別子および/または変形キーに関与するマシン(例えば、ネットワーク構成要素45)での負荷が高くなる可能性があるからである。さらに、もし局所化できるトラフィックだけでなく大半のトラフィックを新しいファイル(例えば、人気のあるファイル)に関連付けることができるなら、各ファイルを監視することは必要でない可能性がある。
さらに、論理的な変形ノード識別子および/または変形キーは、値において、ピア(例えば、物理的なノードまたはコンピュータ)を表すノードに関連するノード識別子および/またはキーより、ファイルまたはコンテンツを表すノードに、論理的にまたはビットごとに近いビット・シーケンスを有することができる。ビット・シーケンスはコンテンツ情報のハッシュ関数に基づく場合があり、ビット・シーケンスは、プレフィックスを表す第1のビット列およびコンテンツを表す第2のビット列を含むことができる。論理的な変形ノード識別子および/または変形キーは、第1のビット列の変更を加えたサブセットを含んで、複数の第1の変形キーの各々を生成することができる。
論理的な変形ノード識別子および/または変形キー(例えば、ステップS625において格納された論理的な変形ノード識別子および/または変形キー)が格納されたピア(例えば、ノード40d)は、ピア(例えば、ノード40aおよび40b)にそれらの存在を知らせることもできる。例えば、上述されたBITTORRENTファイル共有システムにおいて、ピア(例えば、ノード40d)は、既知のメッセージをピアに近いと判定されたピアに送信することができる。既知のメッセージは、論理的な変形ノード識別子および/または変形キーの各々向けのpingメッセージであり得る。pingメッセージの各々は、論理的な変形ノード識別子および/または変形キーのうちの1つ(例えば、ハッシュ・キーまたはビット・シーケンス)を含むことができる。近いピアは既知の方法を使用して判定される。例えば、近いピアは、ルーティング・テーブル内に格納されているか、または別のメッセージ・タイプを使用して判定することができる。
図7は、例示的な実施形態によりコンテンツを通知するメッセージを傍受するための方法の流れ図を示す。図7に関連する方法のステップを説明しながら、図2および図3のネットワークへの参照がなされる。さらに、図4D〜Fに示されたような例示的な分散ハッシュ・テーブル(DHT)への参照もなされる。
ステップS705において、コンテンツを通知するメッセージを傍受することができる。通知メッセージは、メッセージを傍受する論理ノードに関連付けられた宛先アドレスを有する。ステップS705は、(図6に関して上述したような)ステップS605によく似ているが、1つの重要な相違がある。ステップS605において、通知メッセージは物理ピア宛であったが、ステップS705において、メッセージは論理ノードによって傍受される。言い換えれば、通知するピアは、論理ノードがDHT19内にない場合その他の方法では受信されなかったメッセージを送信した。
さらに、ステップS605において受信された通知メッセージの場合、DHTは、コンテンツに関連するノード識別子またはキーで埋められる(ステップS625)。一方、ステップS710において、傍受されたメッセージについての情報を格納することができる。
情報は、メッセージの特性情報として知られており、キーとの関連で格納することができる。変形キーに関連する特性情報を格納することは、変形キーが基づいているキーに関連する通知メッセージに関連する特性情報を格納することを含む。特性情報は、ノードに関連した情報およびコンテンツに関連した情報を含むことができる。
ノードに関連した情報は、第2のメッセージに関連するノードのインターネット・サービス・プロバイダ、第2のメッセージに関連するノードの名前、第2のメッセージに関連するノードのアドレス、および第2のメッセージに関連するノードのポートのうちの少なくとも1つを含むことができる。コンテンツに関連した情報は、コンテンツの説明、コンテンツのタイプ、コンテンツのサイズ、コンテンツへのポインタ、および第2のメッセージに関連するノードに関連する格納位置のうちの少なくとも1つを含むことができる。
ステップS705に関して上述したように、ノードはコンテンツ通知メッセージを傍受することができる。コンテンツ通知メッセージは特性情報を含むことができる。特性情報はデータベースの中に格納することができる。例えば、特性情報は、通知メッセージのアドレスに関係する変形キーとの関連で、データベース、例えばデータベース52またはデータベース53の中に格納することができる。傍受された通知メッセージに関連付けられた宛先アドレスが、任意の格納された変形キーといかなる関係ももたない場合、通知メッセージは受信された通知メッセージであると仮定され、図4に関して上述されたメッセージに従って処理することができる。
情報は、ピア、ノードまたはピアツーピア・ネットワークに関連する、例えば、データベース52、データベース53、および/または他の何らかのメモリの中に格納することができる。情報は、ファイルまたはコンテンツ(例えば、ノード識別子またはハッシュ・キー)、メッセージを送信するピア、メッセージを受信するピア、メッセージを送信/送出するピアに関連するネットワーク、および/またはメッセージを受信するピアに関連するネットワークとの関連で格納することができる。情報は、ファイルまたはコンテンツ、および、メッセージを送出するピアに関連するインターネット・サービス・プロバイダ(ISP)(例えば、コンテンツが存在するローカル・ネットワーク)との関連で格納することができる。データベース53は、ノード標識(例えば、ノードまたはピアのアドレス)およびISPに関連する情報を含むことができる。
あるいは、および/または上記説明に加えて、ステップS710において、情報はDHT19の中に格納することができる。例えば、上述したように、DHT19内のエントリは<キー、値>のペアで格納することができる。前述の情報は、値としてDHT内のエントリとして格納することができる。図4Dに示されたように、受信通知はピア通知メッセージである。ピア通知メッセージに関連する宛先はhash_551と一致した。したがって、新しい値(node_ID=computer_3)がhash_551用の値フィールドに追加される。
例えば、図4Dに示されたように、傍受された通知はピア通知メッセージである。ピア通知メッセージに関連する宛先はhash_551と一致した。したがって、新しい値(node_ID=computer_3)をhash_551用の値フィールドに追加することができる。
例えば、図4Eに示されたように、傍受された通知はコンテンツ通知メッセージである。コンテンツ通知メッセージに関連する宛先はhash_549と一致した。したがって、新しい値(node_ID=computer_3、content=content_2)をhash_549用の値フィールドに追加することができる。
例えば、図4Fに示されたように、複数の受信された通知が複数のノードからのコンテンツを通知する。コンテンツ通知メッセージに関連する宛先はhash_549と一致した。したがって、複数の新しい値は、hash_549用の値フィールドに追加することができる。
例示的な実施形態は既存のDHTエントリへの新しい値の追加を示すが、当業者は、重複するキー(例えば、ハッシュ・キー)で新しいエントリを追加することが可能であることを理解されよう。
図6および図7において示された処置が完了すると、ピアツーピア・ネットワークは、ファイルまたはコンテンツを保持するピアを常に認識することができる。この前提のもとで、局所化を実行することができる。
図8は、局所化されたピアのセットまたはノードのリストで、ファイルおよび/またはコンテンツの問合せに応答する詳細である。図8は、例示的な実施形態によりコンテンツを要求するメッセージを傍受するための方法の流れ図を示す。
図8に関連する方法のステップを説明しながら、図2および図3のネットワークへの参照がなされる。さらに、図4D〜Fに示されたような例示的な分散ハッシュ・テーブル(DHT)への参照もなされる。
ステップS805において、コンテンツを要求するメッセージが傍受される。メッセージは、ピアツーピア・ネットワーク内のピアから受信することができる。あるいは、メッセージはピア(例えば、ピア40a)内部へのメッセージであった可能性がある。メッセージは、要求されたコンテンツの標識、メッセージの送信者(例えば、コンテンツを要求するノードまたはピア)を示す識別子もしくはキー、および/またはメッセージの宛先を示す識別子もしくはキーを含むことができる。コンテンツを要求するメッセージは宛先アドレスを含むことができる。
例えば、上述したように、1つのよく知られているピアツーピア・ネットワーク用ファイル共有システムは、BITTORRENTとして知られている。BITTORRENTファイル共有システムは、get_peerオブジェクトを使用して前述のコンテンツ要求を作成する。ピアはget_peerメッセージを、そのノード標識をピアがすでに認識している(例えば、要求を作成したピアに関連するDHT内に格納された)k個のピアに送信する。k個のピアがピアツーピア・ネットワーク全体を通して広く分散された可能性がいくらか存在する。
知られているように、BITTORRENTファイル共有システム内のピアは、他の既知のピアのメッセージに応答する。例えば、応答するピアがコンテンツを含むいかなるピアについても知っていない場合、応答するピアが次の繰り返しでメッセ−ジを送信できる既知のピア、すなわちその識別子が要求されたファイルの識別子により近いピアのリストで、応答するピアは回答する。知られているように、この反復処理は、get_peerメッセージが要求されたコンテンツのコピーまたは一部を保持するピアのリストで回答されるまで繰り返す。ピアのリストは、例えば、コンテンツ全体にアクセスするためにピアのアドレスおよびポート番号を含むことができる。
当業者が理解するように、かつ上述したように、ピアツーピア・ネットワークに関連する何百万ものファイルまたはコンテンツが存在する。また、ピアツーピア・ネットワークを代表するDHT19の中には、何百万もの空のエントリ(または非エントリ)が存在する。そのため、メッセージは、要求されたコンテンツを有する可能性があるピアツーピア・ネットワーク内の潜在的なノード識別子またはキーを知っているすべてのピアには届かない可能性がある。したがって、従来のピアツーピア・ネットワークにおいては、ネットワークのピアがコンテンツを要求するメッセージを受信しない場合があり、したがって、ピアツーピア・ネットワーク内の何らかのコンテンツの存在の標識を含むメッセージで応答しない場合がある可能性が高い。
しかしながら、図6を参照して上述したように、例示的な実施形態では、DHT19はいくつかの論理的な変形ノード識別子および/または変形キーを含むことができる。論理的な変形ノード識別子および/または変形キーの各々は、DHT19内のファイルまたはコンテンツに関係する情報を含むことができる。例えば、図4Fで示されたように、ハッシュ・キーhash_549に関連するノードは、コンピュータ3〜7がコンテンツ2の少なくとも一部を有することを示す情報を含む。
そうすることによって、上述の反復処理では、その関連情報が要求されたコンテンツの識別子を変更することによって作成されたピアまたはノード(例えば、ピア20a)上のテーブル(例えば、DHT19)内に格納された論理的な変形ノード識別子および/または変形キーが、要求されたコンテンツに対する要求を受信または傍受することができる比較的高い可能性がある。例えば、システムの設計者がよく知られているツールを使用する場合、コンテンツに対するすべての要求を傍受するように、現実的にシステムを設計することができる。
図8に戻ると、ステップS810において、ノード識別子またはキーは、コンテンツ要求メッセージに関連するコンテンツに基づいて決定することができる。例えば、コンテンツ要求メッセージは、要求されたコンテンツに関連するノード識別子またはキーを含むことができる。その場合、ノードは要求メッセージを読み込んでノード識別子またはキーを決定することができる。あるいは、要求されたコンテンツは、ノード識別子またはキーを決定するために(上述した)ハッシュ関数への入力として使用することができる。
ステップS815において、要求されたコンテンツが見つかる場所をノードが知っているかどうか判定される。そして、コンテンツを含むノードのリストを作成することができる。この判定は、よく知られている方法を使用して実行することができる。例えば、上述したように、キー検索はDHT19上で実行することができる。受信するピア(例えば、40a)が図4Fに示されたような状態のDHT19を含むと仮定する。ピア(例えば、40d)がコンテンツ3に対する要求を行う場合、受信するピアはDHTのキー検索を実行することができる。受信するピアはコンテンツ3に関する情報を何も見つけない可能性がある。したがって、知られているように、受信するピアは、受信するピアが知っているピア(例えば、コンピュータ1〜7)のリストで応答する。
一方、ピアがコンテンツ2に対する要求を行う場合、受信するピアは再びDHTのキー検索を実行する。今度は、受信するピアは、コンテンツを含むピア(例えば、コンピュータ3〜7)を見つける。知られているように、従来技術のシステムでは、受信するピアは検索の結果として見つかったすべてのピアを含むメッセージで回答するはずである。
さらに、上述したように、論理的な変形ノード識別子および/または変形キーは、値において、ピア(例えば、物理的なノードまたはコンピュータ)を表すノードに関連するノード識別子および/またはキーより、ファイルまたはコンテンツを表すノードに、論理的にまたはビットごとに近いビット・シーケンスを有することができる。ビット・シーケンスはノード情報およびコンテンツ情報のハッシュ関数に基づくことができ、ビット・シーケンスは、プレフィックスを表す第1のビット列およびコンテンツを表す第2のビット列を含むことができる。論理的な変形ノード識別子および/または変形キーは、第1のビット列の変更を加えたサブセットを含んで、複数の第1の変形キーの各々を生成することができる。
ノードのリストを決定することは、DHT19内のどのエントリが第1のキー内の第1のビット列と一致する第1のビット列をもつキーまたは変形キーを有するか判定すること、および、判定されたエントリに関連するノードが要求されたコンテンツを示す特性情報を有するように、判定されたエントリからノードのリストを生成することを含むことができる。
しかしながら、例示的な実施形態によれば、要求するピアのネットワーク(例えば、ISP)に関連するローカルのピアのみを、回答の中で提供することができる。したがって、ステップS820において、要求者に関連するISPが決定される。例えば、マイクロプロセッサ46は、要求するピアに関連するアドレスを、データベース53から取り出されたネットワーク情報と比較することができる。あるいは、および/または加えて、マイクロプロセッサ46はDHT19から読み込まれた情報を使用することができる。例えば、マイクロプロセッサ46は、要求するピアに関連する値フィールドに格納された情報を使用することができる。
ステップS825において、ステップS815において見つかったノードの各々に関連するISPが決定される。例えば、マイクロプロセッサ46は、ノードの各々に関連するアドレスを、データベース53から取り出されたネットワーク情報と比較することができる。あるいは、および/または加えて、マイクロプロセッサ46はDHT19から読み込まれた情報を使用することができる。例えば、マイクロプロセッサ46は、ノードの各々に関連する値フィールドに格納された情報を使用することができる。
ステップS830において、ノードのリストは、ステップS820において決定された要求者のISPに基づいてフィルタをかけられる。フィルタをかけられたノードのリストは、要求者と同じISPに関連するノードのみを含むことができる。フィルタをかけられたノードのリストは、要求者に対して比較的良い品質および/または比較的高価でない接続性(例えば、ピアリング契約)をもつノードも含むことができる。ステップS835において、フィルタをかけられたノードのリストに基づいて、要求者はピアのセットまたはノードのリストを含むメッセージで回答される。
例えば、ステップS820において、マイクロプロセッサ46は、要求するノードがネットワーク24のメンバであることを判定する場合がある。加えて、ステップS825において、マイクロプロセッサ46は、コンピュータ3、4および7がネットワーク24のメンバであることを判定する場合がある。さらに、ステップS825において、マイクロプロセッサ46は、コンピュータ5および6がネットワーク26のメンバであることを判定する場合がある。例示的な実施形態によれば、ステップS830のローカルのピアのセットまたはノードのリストは、コンピュータ3、4および7を含み、コンピュータ5および6を含まない。
フィルタをかけられたノードのリストが閾値の数より少ない場合、別のノードをノードのリストに追加することができ、別のノードはノードのリストからフィルタをかけられたノードを含むことができる。
上記の例示的な実施形態はISPネットワークを参照するが、例示的な実施形態はそれに限定されない。例えば、図8において、ISPは、例えば、要求するピアまたはノード、および、回答の中のピアのセットまたはノードのリストのノードに関連する、任意のローカル・ネットワークと置き換えることができる。
コンテンツに関連するノード識別子およびキー、ならびにそれらの論理的な変形ノード識別子および/または変形キーは、寿命をもつ場合がある。任意の識別子またはキーに関連する閾値期間が切れた場合、識別子またはキーに関連するテーブル内のエントリは削除され得る。例えば、DHT19内へのキーの入力からの(例えば、30分または2時間)の閾値期間が切れた後、エントリは削除され得る。
本発明の代替の実施形態は、コンピュータ・システムで使用するためにコンピュータ・プログラム製品として実装することができる。コンピュータ・プログラム製品は、ディスケット、CD−ROM、ROM、もしくは固定ディスクなどの、有形もしくは持続的なデータ記録媒体(コンピュータ可読媒体)上に格納された、または、コンピュータデータ信号、有形媒体もしくは無線媒体、例えば、マイクロ波もしくは赤外線を介して伝送される信号の中で具現化された、例えば、一連のコンピュータ命令、コード・セグメントまたはプログラム・セグメントである。一連のコンピュータ命令、コード・セグメントまたはプログラム・セグメントは、上述の例示的な実施形態の方法の機能性の全部または一部を構成することができ、揮発性または不揮発性、半導体、磁気式、光学式または他のメモリ装置などの任意のメモリ装置の中に格納することもできる。
当業者が理解するように、かつ上述したように、ピアツーピア・ネットワークに関連する何百万ものファイルまたはコンテンツが存在する。また、ピアツーピア・ネットワークを代表するDHT19の中には、何百万もの空のエントリ(または非エントリ)が存在する。そのため、メッセージは、要求されたコンテンツを有する可能性があるピアツーピア・ネットワーク内の潜在的なノード識別子またはキーを知っているすべてのピアには届かない可能性がある。したがって、従来のピアツーピア・ネットワークにおいては、ネットワークのピアがコンテンツを要求するメッセージを受信しない場合があり、したがって、ピアツーピア・ネットワーク内の何らかのコンテンツの存在の標識を含むメッセージで応答しない場合がある可能性が高い。
しかしながら、図6および図8を参照して上述したように、例示的な実施形態では、DHT19はいくつかの論理的な変形ノード識別子および/または変形キーを含むことができる。論理的な変形ノード識別子および/または変形キーの各々は、DHT19内のファイルまたはコンテンツに関係する情報を含むことができる。例えば、図4Fで示されたように、ハッシュ・キーhash_549に関連するノードは、コンピュータ3〜7がコンテンツ2の少なくとも一部を有することを示す情報を含む。そうすることによって、上述の反復処理では、その情報が要求されたコンテンツに関係するピアまたはノード(例えば、ピア20a)が、コンテンツに対する要求を受信または傍受することができる比較的高い可能性がある。
加えて、論理的な変形ノード識別子および/または変形キーとの関連で格納された情報は、DHT内(またはどこか)に格納されたノード情報に関連するネットワーク(例えば、ISP)への参照を含むことができる。したがって、コンテンツに対する要求への応答メッセージは、コンテンツに対する要求の送信者と同じネットワークに関連付けられたノードのリストまたはピアのセットだけを含むことができる。
例示的な実施形態を具体的に示し説明したが、特許請求の範囲の精神および範囲から逸脱することなく、形態および詳細における変形をその中で実行できることが当業者によって理解されよう。
本発明をこのように記載したが、同発明が多くの方法で変更できることは明白であろう。そのような変形形態は、本発明から逸脱するものとみなすべきでなく、そのような修正形態すべては本発明の範囲内に含まれるものである。