(57)【特許請求の範囲】
【請求項１】
ピアツーピア・ネットワークのノードで、第１のコンテンツを通知する第１のメッセージを受信するステップと、
前記ノードにより前記第１のメッセージに基づいてテーブルの中に第１のキーを格納するステップであって、前記第１のキーが第１のノード情報または第１のコンテンツ情報を表し、前記第１のノード情報が、前記第１のコンテンツを通知する第１のノードを識別し、前記第１のコンテンツ情報が前記第１のコンテンツを識別する、ステップと、
前記ノードにより前記テーブルの中に複数の第１の変形キーを格納するステップであって、前記複数の第１の変形キーの各々が前記格納された第１のキーの変形である、ステップと
を含む方法。
【請求項２】
第１のキーを格納する前記ステップが、前記第１のコンテンツ情報の機能に基づいてビット・シーケンスを決定するステップを含み、前記ビット・シーケンスがキーのプレフィックスを表す第１のビット列および前記第１のコンテンツを表す第２のビット列を含み、
複数の第１の変形キーを格納する前記ステップが、前記第１のビット列のサブセットを変形して前記複数の第１の変形キーの各々を生成するステップを含む、
請求項１に記載の方法。
【請求項３】
第１のキーを格納する前記ステップが、前記第１のキーに関連する前記第１のメッセージの特性情報を格納するステップをさらに含み、前記特性情報はノードに関連した情報およびコンテンツに関連した情報を含み、
複数の第１の変形キーを格納する前記ステップが、前記複数の第１の変形キーの前記各々との関連で、前記第１のキーとの関連で格納された前記第１のメッセージの前記特性情報を格納するステップをさらに含み、
前記ノードに関連した情報が、第２のメッセージに関連するノードのインターネット・サービス・プロバイダ、前記第２のメッセージに関連する前記ノードの名前、前記第２のメッセージに関連する前記ノードのアドレス、および前記第２のメッセージに関連する前記ノードのポートのうちの少なくとも１つを含み、
前記コンテンツに関連した情報が、前記コンテンツの説明、前記コンテンツのタイプ、前記コンテンツのサイズ、前記コンテンツのポインタ、および前記第２のメッセージに関連する前記ノードに関連する格納位置のうちの少なくとも１つを含む、
請求項１に記載の方法。
【請求項４】
第１のキーを格納する前記ステップが、前記第１のコンテンツ情報の機能に基づいてビット・シーケンスを決定するステップを含み、前記ビット・シーケンスがキーのプレフィックスを表す第１のビット列および前記第１のコンテンツを表す第２のビット列を含み、
前記ノードにより、第２のコンテンツを通知する第２のメッセージを傍受するステップであって、前記第２のメッセージが宛先アドレスを含む、ステップと、
前記宛先アドレスに基づいて生成されたキーの中の前記第１のビット列が前記複数の第１の変形キーの１つの中の前記第１のビット列と一致する場合、前記複数の第１の変形キーの１つとの関連で、前記ノードにより前記第２のメッセージに関連する特性情報を格納するステップと
をさらに含む、請求項３に記載の方法。
【請求項５】
前記宛先アドレスに基づいて生成された前記キーの中の前記第１のビット列が前記複数の第１の変形キーの１つの中の前記第１のビット列と一致しない場合、
前記ノードにより前記第２のメッセージに基づいてテーブルの中に第２のキーを格納するステップであって、前記第２のキーが第２のノード情報および第２のコンテンツ情報を表し、前記第２のノード情報が、前記第２のコンテンツを通知する第２のノードを識別し、前記第２のコンテンツ情報が前記第２のコンテンツを識別する、ステップと、
前記ノードにより前記テーブルの中に複数の第２の変形キーを格納するステップであって、前記複数の第２の変形キーの各々が前記格納された第２のキーの変形である、ステップと
をさらに含む、請求項４に記載の方法。
【請求項６】
ピアツーピア・ネットワークの中のコンテンツを局所化するための方法であって、
前記ピアツーピア・ネットワークのノードにより要求メッセージを傍受するステップであって、前記要求メッセージがコンテンツに対する要求であり、前記要求メッセージが宛先アドレスを含む、ステップと、
前記ノードにより前記宛先アドレスに基づいて第１のキーを決定するステップと、
前記ノードにより前記第１のキーおよびテーブルに基づいてノードのリストを決定するステップであって、前記テーブルが複数のエントリを含み、各エントリがキーおよび変形キーのうちの１つを含み、少なくとも１つのキーが通知メッセージに基づき、前記キーがコンテンツ情報を表し、前記キーがノード情報を表す関連値を有し、前記ノード情報が、コンテンツを通知するノードを識別し、前記コンテンツ情報が前記コンテンツを識別し、各変形キーが前記キーのうちの１つの変形である、ステップと、
前記ノードにより前記要求メッセージの送信者に応答メッセージを送信するステップであって、前記応答メッセージが前記ノードのリストを含む、ステップとを含み、
前記ノードのリストに基づいてネットワーク構成要素がコンテンツを局所化する方法。
【請求項７】
少なくとも１つのキーが前記コンテンツ情報の機能に基づいたビット・シーケンスを含み、前記ビット・シーケンスが、プレフィックスを表す第１のビット列と前記通知メッセージに関連するコンテンツを表す第２のビット列とを含み、
少なくとも１つの変形キーが前記少なくとも１つのキーの前記第１のビット列の変形されたサブセットを含み、
前記テーブルの少なくとも１つのエントリが特性情報をさらに含み、前記特性情報がノードに関連した情報およびコンテンツに関連した情報を含む、
請求項６に記載の方法。
【請求項８】
ノードのリストを決定する前記ステップが、
前記テーブル内のどのエントリが、前記第１のキーと一致するキーまたは変形キーを有するかを判定するステップと、
前記判定されたエントリに関連するノードが前記要求されたコンテンツを示す特性情報を有するように、前記判定されたエントリから前記ノードのリストを生成するステップと、
前記ノードのリストが前記要求されたメッセージの前記送信者に関連する前記ネットワークに関連するノードのみを含むように、前記ノードのリストにフィルタをかけるステップと
を含む、請求項７に記載の方法。
【請求項９】
テーブルを格納するように構成されたメモリと、
第１のコンテンツを通知する第１のメッセージを受信するように構成されたプロセッサであって、前記第１のメッセージに基づいて前記テーブルの中に第１のキーを格納するように構成され、前記第１のキーが第１のノード情報および第１のコンテンツ情報を表し、前記第１のノード情報が、前記第１のコンテンツを通知する第１のノードを識別し、前記第１のコンテンツ情報が前記第１のコンテンツを識別し、前記プロセッサが前記テーブルの中に複数の第１の変形キーを格納するように構成され、前記複数の第１の変形キーの各々が前記格納された第１のキーの変形である、プロセッサと
を含む、ピアツーピア・ネットワークのノード。
【請求項１０】
プロセッサによって起動されると一連のステップを実行させるプログラム・コード・セグメントを含む持続性メモリであって、前記ステップが、
第１のコンテンツを通知する第１のメッセージを受信するステップと、
前記第１のメッセージに基づいてテーブルの中に第１のキーを格納するステップであって、前記第１のキーが第１のノード情報および第１のコンテンツ情報を表し、前記第１のノード情報が、前記第１のコンテンツを通知する第１のノードを識別し、前記第１のコンテンツ情報が前記第１のコンテンツを識別する、ステップと、
前記テーブルの中に複数の第１の変形キーを格納するステップであって、前記複数の第１の変形キーの各々が前記格納された第１のキーの変形である、ステップと
を含む、持続性メモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、ピアツーピア・ファイル共有ネットワーク、およびピアツーピア・トラフィックを局所化するための方法に関する。
【背景技術】
【０００２】
ピアツーピア・ファイル共有ネットワークのいくつかのバージョンは、ネットワーク構成要素が集中化されたコンピュータまたはネットワークに依存して、ネットワーク内で利用可能なすべてのコンテンツを列挙する。他のピアツーピア・ファイル共有ネットワークは、集中型コンポーネントに依存して、ネットワーク上で利用可能なすべてのコンテンツを列挙するのではない。そうではなく、ディレクトリが、コンテンツ自体が分散されるように分散される。ディレクトリ・データベースをすべての参加クライアントに分散させるために使用される技法は、分散ハッシュ・テーブル（ＤＨＴ）と呼ばれることがある。
【０００３】
ネットワークが集中型タイプのネットワークであれＤＨＴを使用するネットワークであれ、コンテンツが共有されているピアの局所参照性にかかわらず、ピアは、１つのピアから別のピアにコンテンツをダウンロードする。結果として、ピアが別のピアのコンピュータ上に含まれるファイルを要求する場合、ファイルを含むコンピュータは、ファイルを要求するピアから遠く離れて位置している場合がある。これにより、ピア間のリンクが１つまたは複数のインターネット・サービス・プロバイダ（ＩＳＰ）を通らなければならないので、ファイル転送が遅れるだけでなく、コストが増加する。したがって、そのようなピアツーピア・タイプの接続は、ＩＳＰ同士をつないでいるトランジット・リンク上に大量のトラフィックを発生させる可能性があり、それによってネットワーク・オペレータへのコストを増加させる。
【０００４】
例えば、人気のあるコンテンツ・ファイルが１つあり、自分のコンピュータにこのファイルをもつユーザが全世界に１０，０００人存在すると仮定する。それら１０，０００人のユーザのうち５０人が所与のＩＳＰ「Ａ」内に位置していると仮定する。ＩＳＰ「Ａ」内のピアが人気のあるファイルに興味をもち、それからファイルをダウンロードする５０個のランダムなピア用の集中型またはＤＨＴタイプのディレクトリを要求すると仮定する。そのような例では、ＩＳＰ「Ａ」内の単一のピアを見つける０．５％のチャンスがある。ファイルを有する５０ピアが要求するピアに対してランダムに識別される場合、５０ピアすべてがＩＳＰ「Ａ」の内部にあるチャンスはゼロに近づく。
【０００５】
そのようなシナリオでは、ファイルを要求するピアと同じＩＳＰ内に十分な数のピアが存在しても、恐らく、ピアが要求するピアのＩＳＰの外部に位置するピアからファイルを受信することになるだろう。これは、ＩＳＰ間のトランジット・リンク上の不要なトラフィックを必要とする。
【０００６】
図１は、集中型ピアツーピア・システム１０の概略図を示す。集中型ピアツーピア・システム１０は、ピアおよび／またはノード１２とも呼ばれるコンピュータ１２ならびに中央コンピュータ１４を含む。ピアおよび／またはノード１２は、接続１６を介して中央コンピュータ１４につながれる。接続１６は、無線接続、イーサネット接続、または任意の適切な接続ハードウェアもしくは方法の組合せなどの、任意の適切な接続であり得る。
【０００７】
ピアツーピア・システム１０は、４台のピアおよび／またはノード１２、ならびに１台の中央コンピュータ１４だけを示すが、ピアツーピア・システムは、示されたピアおよび／またはノード１２の数、ならびに１台の中央コンピュータ１４の中央のネットワーク・コンポーネントに限定されないことが理解されよう。実際には、ピアツーピア・システム１０はさらに多くのピアおよび／またはノード１２を含むことができ、多くのコンピュータ、サーバまたは他のコンポーネントは、示された中央コンピュータ１４の仕事を遂行することができる。
【０００８】
図１に示されたような集中型ピアツーピア・システム１０では、ピアおよび／またはノード１２がコンテンツまたはファイルを要求すると、要求は接続１６を介して集中型コンピュータ１４に送信される。要求の送信はピアツーピア・ネットワークではよく知られている。
【０００９】
集中型コンピュータ１４は、どのピアおよび／またはノード１２が要求されたコンテンツを有するかを判定し、どのピアおよび／またはノード１２が要求されたコンテンツを有するかに関する情報で要求に応答することができる。集中型コンピュータ１４は、要求されたコンテンツを有するいくつかのピアおよび／またはノード１２を識別し、複数の識別されたピアおよび／またはノード１２に関する情報で応答することができる。１台のピアおよび／もしくはノード１２、または、複数台のピアおよび／もしくはノード１２が識別されると、次いで、要求するピアは、識別されたピアのうちの１台から要求されたファイルを受信することができる。
【００１０】
集中型コンピュータ１４は、トランジット・リンクを介して伝送される多量のデータを削減するために、要求されたコンテンツを含む可能性がある多くのピアおよび／またはノード１２の中のどのピアおよび／またはノード１２が、要求するピアに識別されるべきかの判定を行うことができる。これらの判定はピアツーピア・トラフィックを局所化するためになされ得る。この判定は下記でより詳細に説明される。
【００１１】
例えば、１つのよく知られているピアツーピア・ネットワーク用のファイル共有システムは、ＢＩＴＴＯＲＲＥＮＴとして知られている。ＢＩＴＴＯＲＲＥＮＴファイル共有システムのメカニズムは、ピアの影響を発見するために、Ｐ２Ｐネットワークの構造、およびその結果としてのデータの伝播を使用する。したがって、ＢＩＴＴＯＲＲＥＮＴファイル共有システムにおけるピア発見の知識は、トラフィックの局所化を明確に理解するために基本的なことである。ＢＩＴＴＯＲＲＥＮＴファイル共有システムは、ピアを発見しファイル交換を調整するために、トラッカまたは中央サーバ（例えば、集中型コンピュータ１４）を使用する。ピアは、トラッカのアドレスをウェブからダウンロードしたトレント内で検索する。「トレント」は、ファイル交換用の有用な情報を含むメタデータ・ファイルである。
【００１２】
最初に、ピアはトラッカに接触して、ファイルまたはその一部を保持するピアのリストを検索する。トラッカは、５０ピアによって全般に構成された活動状態のピアのランダムなサブセットである、ピア・リストで回答する。その後、ピアは、ピアがダウンロードまたはアップロードしたバイトの容量に関する情報を送信するために、定期的にトラッカと対話する。それに応じて、トラッカはピアに新しいピア・リストを送信する。クライアントとトラッカの間の通信頻度は、トラッカの応答の中に含まれた最小間隔領域を介して、トラッカによって調整される。一般に、それは１５分に設定される。
【００１３】
上記で示されたように、ピア・リストは活動状態のピアのランダムなサブセットである。ピア・リストは、ネットワーク（例えば、インターネット・サービス・プロバイダ・ネットワーク（ＩＳＰネットワーク））内でのピアの局所化を全く含まない。局所化のためにトラッカまたは中央サーバ（例えば、集中型コンピュータ１４）を活用する努力がいくつかなされた。しかしながら、これらの努力は本開示の範囲外である。
【発明の概要】
【課題を解決するための手段】
【００１４】
一実施形態は、ピアツーピア・ネットワークの中のコンテンツを局所化するための方法を含む。方法は、第１のコンテンツを通知する第１のメッセージを受信することを含む。第１のメッセージに基づいてテーブルの中に第１のキーを格納する。第１のキーは第１のノード情報および第１のコンテンツ情報を表す。第１のノード情報は第１のコンテンツを通知する第１のノードを識別し、第１のコンテンツ情報は第１のコンテンツを識別する。テーブルの中に複数の第１の変形キーを格納する。複数の第１の変形キーの各々は格納された第１のキーの変形である。
【００１５】
別の実施形態は、ピアツーピア・ネットワークの中のコンテンツを局所化するための方法を含む。方法は要求メッセージを傍受することを含む。要求メッセージはコンテンツに対する要求であり、要求メッセージは宛先アドレスを含む。宛先アドレスに基づいて第１のキーを決定する。第１のキーに基づいたノードのリスト、およびテーブルを決定する。テーブルは複数のエントリを含む。各エントリはキーおよび変形キーのうちの１つを有する。少なくとも１つのキーは通知メッセージに基づいている。キーはノード情報およびコンテンツ情報を表す。ノード情報はコンテンツを通知するノードを識別し、コンテンツ情報はコンテンツを識別し、各変形キーはキーのうちの１つの変形である。要求メッセージの送信者に応答を送信する。応答メッセージはノードのリストを含む。
【００１６】
本発明は、本明細書において下記に与えられた詳細説明および添付図面からより完全に理解されるようになる。添付図面では同じ構成要素は同じ参照数字によって表される。添付図面は説明のためのみに与えられ、したがって、本発明を限定するものではない。
【図面の簡単な説明】
【００１７】
【図１】集中型コンポーネントを有するピアツーピア・ファイル共有ネットワークの関連技術の概略図である。
【図２】例示的な実施形態により分散ハッシュ・テーブル（ＤＨＴ）を利用するピアツーピア・ファイル共有ネットワークの概略図である。
【図３】例示的な実施形態によるファイル共有ネットワークの概略図を示し、ファイル共有ネットワークと通信するコンピュータのさまざまなコンポーネントを示す図である。
【図４Ａ】例示的な実施形態によるＤＨＴを示す図である。
【図４Ｂ】例示的な実施形態によるＤＨＴを示す図である。
【図４Ｃ】例示的な実施形態によるＤＨＴを示す図である。
【図４Ｄ】例示的な実施形態によるＤＨＴを示す図である。
【図４Ｅ】例示的な実施形態によるＤＨＴを示す図である。
【図４Ｆ】例示的な実施形態によるＤＨＴを示す図である。
【図５】例示的な実施形態によりピアに通知するための方法の流れ図である。
【図６】例示的な実施形態によりノード識別情報（シビル）を格納するための方法の流れ図である。
【図７】例示的な実施形態によりコンテンツを通知するメッセージを傍受するための方法の流れ図である。
【図８】例示的な実施形態によりコンテンツを要求するメッセージを傍受するための方法の流れ図である。
【発明を実施するための形態】
【００１８】
これらの図は、ある特定の例示的な実施形態において使用される方法、構造および／または材料の一般特性を示し、下記に提供される明細書を補足するものであることに留意されたい。しかしながら、これらの図面は、縮尺通りではなく、任意の所与の実施形態の精密な構造特性または性能特性を正確に反映していない場合があり、例示的な実施形態によって包含される値または性状の範囲を画定するか、または限定するものと解釈すべきでない。例えば、分子、階層、領域および／または構造的な構成要素の相対的な厚さおよび位置は、明確にするために削減されるか、または誇張される場合がある。さまざまな図面における同様または同一の参照番号は、同様または同一の構成要素または特徴の存在を示すものである。
【００１９】
例示的な実施形態はさまざまな修正形態および代替の形態になることができるが、その実施形態が図面において例として示され、本明細書において詳細に説明される。しかしながら、例示的な実施形態を開示された特定の形態に限定するものではなく、これに反して、例示的な実施形態は、特許請求の範囲の範囲に入るすべての修正形態、均等物、および代替物をカバーするものであることを理解すべきである。図の説明全体を通して、同じ番号は同じ構成要素を参照する。
【００２０】
例示的な実施形態をより詳細に説明する前に、いくつかの例示的な実施形態は、流れ図として描写される処理または方法として記載されることに留意されたい。流れ図は動作を連続的な処理として記載するが、多くの動作は、並行して、共にまたは同時に実行することができる。加えて、動作の順序は再調整することができる。処理は、それらの動作が完了すると終了することができるが、図には含まれていない別のステップを有する場合もある。処理は、方法、機能、手順、サブルーチン、サブプログラムなどに対応することができる。
【００２１】
下記に説明される方法は、そのいくつかは流れ図によって示されるが、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実装することができる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードの中に実装されると、必要なタスクを実行するプログラム・コードまたはコード・セグメントは、記憶媒体などの、マシンまたはコンピュータの可読媒体の中に格納することができる。プロセッサは必要なタスクを実行することができる。
【００２２】
本明細書に開示された特定の構造的および機能的な詳細は、本発明の例示的な実施形態を説明する目的のために表されるものにすぎない。しかしながら、本発明は多くの代替の形態で具現化することができ、本明細書において説明される実施形態のみに限定するものと解釈すべきでない。
【００２３】
第１、第２などの用語は、本明細書においてさまざまな構成要素を記載するために使用する場合があるが、これらの構成要素はこれらの用語によって限定されるべきでないことが理解されよう。これらの用語は、１つの構成要素を別の構成要素から区別するためだけに使用される。例えば、例示的な実施形態の範囲から逸脱することなく、第１の構成要素は第２の構成要素と呼ばれてもよいし、同様に、第２の構成要素は第１の構成要素と呼ばれてもよい。本明細書では、用語「および／または」は、関連する列挙された項目のうちの１つまたは複数のありとあらゆる組合せを含む。
【００２４】
構成要素が別の構成要素に「接続」または「結合」すると呼ばれる場合、その他の構成要素に直接接続もしくは結合してもよいし、または介在する構成要素が存在してもよいことが理解されよう。対照的に、構成要素が別の構成要素に「直接接続」または「直接結合」すると呼ばれるとき、介在する構成要素は存在しない。構成要素の間の関係を説明するために使用される他の単語は、同じように解釈すべきである（例えば、「間」対「直接の間」、「近傍」対「直接の近傍」）。
【００２５】
本明細書において使用される述語は、特定の実施形態を説明する目的のためだけであり、例示的な実施形態を限定するものではない。本明細書では、単数形「ａ」、「ａｎ」および「ｔｈｅ」は、文脈が明らかに他を示さないかぎり、複数形も含むものである。用語「備える」、「備えている」、「含む」、および／または「含んでいる」は、本明細書において、特徴、整数、ステップ、動作、構成要素、および／または構成部品の存在を指定するが、１つまたは複数の他の特徴、整数、ステップ、動作、構成要素、構成部品、および／またはそのグループの存在もしくは追加を排除しないことがさらに理解されよう。
【００２６】
また、いくつかの代替の実装形態において、注記された機能／動作が図の中で注記された順序以外で起こる場合があることに留意されたい。例えば、連続して示された２つの図は、関与する機能／動作に応じて、実際には同時に実行される場合があるか、または時々逆の順序で実行される場合がある。
【００２７】
他に定義されないかぎり、本明細書において使用される（技術的および科学的な用語を含む）すべての用語は、例示的な実施形態が属する技術の当業者によって一般に理解されるのと同じ意味を有する。用語、例えば、一般に使用される辞書で定義された用語は、関連技術の文脈内の意味と一致する意味を有すると解釈すべきであり、本明細書において明確にそう定義されないかぎり、理想化された、または過度に形式的な意味で解釈されないことがさらに理解されよう。
【００２８】
例示的な実施形態の一部および対応する詳細説明は、ソフトウェアの用語、または、アルゴリズムおよびコンピュータ・メモリ内のデータ・ビット上の動作の符号表現で提示される。これらの説明および表現は、それにより当業者が自分の仕事の本質を他の当業者に効果的に伝えるものである。アルゴリズムは、その用語が本明細書で使用されるように、かつそれが一般的に使用されるように、所望の結果に導く首尾一貫した順序のステップであると考えられる。ステップは、物理量の物理操作を必要とするステップである。通常、必要ではないが、これらの量は、格納、転送、結合、比較、およびその他の方法で操作することができる、光学的、電気的、または磁気的な信号の形を取る。主に共通使用の理由から、これらの信号をビット、値、要素、符号、文字、用語、数などとして参照することが時には便利であると証明された。
【００２９】
以下の説明では、例示的な実施形態は、プログラム・モジュールまたは機能プロセスが特定のタスクを実行し特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むように実装することができ、既存のネットワーク構成要素で既存のハードウェアを使用して実装することができる、動作の動きおよび符号表現を参照して（例えば、流れ図の形で）記載される。そのような既存のハードウェアには、１つまたは複数の中央処理装置（ＣＰＵ）、デジタル・シグナル・プロセッサ（ＤＳＰ）、特定用途向け集積回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）・コンピュータなどが含まれ得る。
【００３０】
しかしながら、これらおよび同様の用語のすべては、適切な物理量に関連付けられ、これらの量に適用される便利なラベルにすぎないことに留意されたい。特に断りのないかぎり、または説明から明白なように、「処理」または「計算」または「算出」または「決定」または「表示」などの用語は、コンピュータ・システムのレジスタ内およびメモリ内で物理的、電子的な量として表現されたデータを操作し、コンピュータ・システムのメモリまたはレジスタまたは他のそのような情報を格納、伝送または表示する装置内の物理的な量と同様に表現された他のデータに変換する、コンピュータ・システムまたは同様の電子計算装置の動作および処理を参照する。
【００３１】
また、例示的な実施形態のソフトウェア実装の態様は、通常何らかの形のプログラム記憶媒体上で符号化されるか、または何らかのタイプの伝送媒体を介して実装されることに留意されたい。プログラム記憶媒体は、磁気式（例えば、フロッピ・ディスクもしくはハード・ドライブ）または光学式（例えば、コンパクト・ディスク・リード・オンリ・メモリ、すなわち「ＣＤ  ＲＯＭ」）であり得るし、リード・オンリまたはランダム・アクセスであり得る。同様に、伝送媒体は、ツイスト・ワイヤ・ペア、同軸ケーブル、光ファイバ、または、当技術分野で既知の他の何らかの適切な伝送媒体であり得る。例示的な実施形態は、任意の所与の実装形態のこれらの態様によって限定されない。
【００３２】
用語「ピア」および「ノード」は、本開示全体を通して区別なく使用される。一般に、ピアはピアツーピア・ネットワーク内の物理的なハードウェアを参照する。また、ピアはノードであり得る。しかしながら、ノードはより一般には、例えば、ピアツーピア・ネットワーク内のファイルの位置（例えば、テーブル内のアドレスまたは参照）の論理的なインスタンスも参照する場合がある。
【００３３】
図２は、例示的な実施形態によるピアツーピア・ネットワーク１８の概略図である。図２に示されたピアツーピア・ネットワーク１８の中には、中央コンピュータ１４は存在しない。示されていないが、ピア４０はお互いに接続によってつながれていることを理解すべきである。
【００３４】
図２はピアツーピア・ファイル共有ネットワーク１８を示す。図２のネットワーク１８は、集中型コンポーネントに依存してネットワーク・コンテンツを列挙するのではなく、分散ハッシュ・テーブル（ＤＨＴ）１９を使用してディレクトリ・データベースをすべての参加クライアントに分散する。ＤＨＴ１９は、図２において、ネットワーク１８のすべての態様を共につなぐ破線として表される。
【００３５】
ファイル共有ネットワーク１８は、第１のインターネット・サービス・プロバイダ（ＩＳＰ）２４および第２のＩＳＰ２６を含む。ＩＳＰ２４内には、ピア、ノードまたはユーザ４０と呼ばれてもよい、さまざまなクライアントが存在する。さまざまなクライアント、ピアまたはユーザは、参照数字の後に文字を追加することにより、同じＩＳＰ上の他のピアの中から区別される。
【００３６】
第２のＩＳＰ２６もさまざまなピア４２を有して示される。第１のＩＳＰ２４と第２のＩＳＰ２６はピアリング・リンク２８を介して共につなぐことができる。
【００３７】
インターネット全体２２が図２において示される。ＩＳＰ２４は、トランジット・リンク３０を介してインターネット全体２２につなぐことができる。トランジット・リンク３０は、ＩＳＰ２６もインターネット全体２２につなぐことができる。インターネット全体２２上に位置するピアは、参照番号４４によって識別される。ピア４０および４２と同じように、インターネット全体２２上のピア４４は少なくとも１つのＩＳＰに関連付けられる。しかしながら、インターネット全体２２上のピア４４に関連付けられたＩＳＰは示されていない。
【００３８】
異なるＩＳＰ２４、２６に関連付けられたピア４０、４２、４４の間でファイルを共有するために必要とされるリソース（例えば、ピアリング・リンク２８またはトランジット・リンク３０）の数に起因して、可能なときはいつでも、異なるＩＳＰ上に位置するピア間でファイルを共有するよりむしろ、特定のＩＳＰ内のピアにお互いの間でファイルを共有させることが好ましい場合がある。
【００３９】
矢印３２は、ピア４０ａ、４０ｂ、および４０ｄがお互いの間でファイルを共有する、ファイル共有の好ましい方向を示す。ピア４０ａ、４０ｂ、および４０ｄのすべてはＩＳＰ２４上に位置している。ＩＳＰ２４内に位置しているピア４０がＩＳＰ２４上に位置しているどのピアにも含まれていないファイルを要求する場面を作り出す、いくつかの状況が存在する場合がある。したがって、要求したコンテンツを取得するために、ピア４０は、ＩＳＰ２６またはインターネット全体２２のどちらかに位置するユーザからコンテンツを取得しなければならない。
【００４０】
図３は、さまざまなＩＳＰ２４、２６、インターネット全体２２、および（コンピュータまたはネットワーク構成要素とも呼ばれる）ネットワーク・コンポーネントを示す概略図である。ネットワーク構成要素４５は、図２に関して上記に示されたように、ネットワーク全体を通して分散することができる。例えば、集中型コンピュータ１４をもたず、むしろＤＨＴ１９を使用するようなファイル共有ネットワーク１８などのピアツーピア・ファイル共有ネットワークにおいて、コンピュータまたはネットワーク構成要素４５は、ファイル共有ネットワーク全体を通して分散することができる。あるいは、ネットワーク構成要素４５は、接続４６を介して、さまざまなＩＳＰ２４および２６、ならびにインターネット全体２２とつなぐことができるにすぎない。
【００４１】
図３に示されたように、ネットワーク構成要素４５は、接続５０を介してデータベース５２につながれた１つまたは複数のマイクロプロセッサ４８を含むことができる。また、ネットワーク構成要素４５は、接続５５を介して別のデータベース５３に動作可能なようにつなぐことができる。下記でより詳細に説明されるように、データベース５３は検索可能であり、どのＩＳＰが所与のピアに関連付けられているかなどの情報をネットワーク構成要素４５に提供することができる。
【００４２】
本発明のいくつかの実施形態では、ネットワーク構成要素４５は、ネットワークにつながれた既存のシステム・コンポーネントであり得る。既存のネットワーク構成要素４５は、本明細書に記載された機能を実行するようにプログラムすることができる。例えば、既存のネットワークは、本明細書に記載された機能を実行するようにプログラムされたネットワーク・コンポーネントを含むことができる。他の実施形態では、ネットワーク構成要素４５は、（既存のネットワーク・コンポーネントではなく、むしろ）ネットワークに追加され、本明細書に記載された機能を実行するように構成することができる。
【００４３】
例示的な実施形態は２つの処理に従って動作する。第１の処理は、すべてのピア通知メッセージを傍受し、ＤＨＴ１９を更新することを含む。当業者が知っているように、ピア通知メッセージは、ファイルもしくはコンテンツ、および／またはファイルもしくはコンテンツのある部分を保持することを伝えるために、ピアによって使用される。例えば、ピア４０はネットワーク構成要素４５を含むことができる。マイクロプロセッサ４６はピア・メッセージを傍受するように構成することができる。ピア・メッセージは、ピアがファイルまたはその一部を保持することを分散ハッシュ・テーブル（ＤＨＴ）の中に発行するピア（例えば、ピア４０）からであり得る。
【００４４】
ＩＳＰ２４とＩＳＰ２６がしばしばお互いと通信し、したがって、ピアリング・リンク２８は、ＩＳＰ２４を別のＩＳＰとリンクする一般のトランジット・リンクより、大きな容量を有するか、または低いコストで動作できる可能性がある。
【００４５】
知られているように、単一の物理エンティティは、多くの別個の論理識別情報で、何度もポイントツーポイント・ネットワークに参加することができる。これらの論理識別情報はシビルと呼ばれる場合がある。論理識別情報は、例えばハッシュ関数を使用して計算された、ユニークな識別子またはキーを有することができる。ハッシュ関数は、例えばノードおよび／またはコンテンツに関連する情報上で実行することができる。例示的な実施形態では、ノードまたはピア（例えば、ピア４０ａ）はユニークな識別子またはキーを有することができ、ファイルまたはコンテンツはユニークな識別子またはキーを有することができる。知られているように、インターネット・サービス・プロバイダ（ＩＳＰ）のスケールに関連するクライアント間で直接交換されるトラフィックを捕捉することは、不可能ではないにしても一般に実行困難である。実際には、データ収集は、各ＩＳＰルータで何十万ものフィルタリング規定のセットアップを必要とするはずである。知られているように、ＩＳＰルータはこの機能をもっていない。
【００４６】
したがって、例示的な実施形態は、ファイルまたはコンテンツのユニークな識別子またはキーに近い識別子またはキーを有するいくつかの論理識別情報を、ＤＨＴ１９の中に挿入する。次いで、論理エンティティはピア通知メッセージを傍受するために使用される。
【００４７】
第２の処理は、ファイルまたはコンテンツを保持するピアのリストを要求するメッセージを傍受し、ローカルのピアのセットまたはノードのリストでメッセージに応答することを含むことができる。ピア通知メッセージに関して上述したように、論理エンティティは、ＤＨＴに沿ったいくらか反復型の調査で、ファイルを保持するピアのリストを要求するメッセージを傍受することもできる。ＤＨＴは、これらのコンテンツ要求に応答するために使用される。すなわち、これらの処理用エンジンは各ノードにあるＤＨＴクライアントである。
【００４８】
知られているように、ＤＨＴ１９は、ディレクトリ・データベースをすべての参加クライアントまたは参加ノードに分散させるために使用される。知られているように、ディレクトリ・データベースは、ピアツーピア・ネットワーク内のすべてのピア（例えば、コンピュータまたは物理マシン）、ならびに、各ピア上に位置するすべてのコンテンツ（例えば、ファイル、ビデオ、オーディオなど）のリストである。
【００４９】
最初に、ＤＨＴ１９は、物理的なノードもしくはピアへの参照（図４Ａ参照）、および／または、ファイルもしくはコンテンツへの参照（図４Ｂ参照）だけを保持することができる。上述したように、これらの参照は論理識別情報として保持される。論理識別情報は、例えばハッシュ関数を使用して計算されたユニークな識別子またはキーを有することができる。
【００５０】
ファイルまたはコンテンツは、必ずしもファイルまたはコンテンツへの参照を有するＤＨＴ１９を含むノードではないノード上に格納することができる。例えば、ファイルまたはコンテンツが格納されたノードは、コンテンツ上でハッシュ関数を実行することができる。次いで、ノードは、ハッシュされたコンテンツの結果に近い論理識別情報を有するノードを決定する。次いで、ファイルまたはコンテンツが格納されたノードは、よく知られている方法を使用して、ハッシュされたコンテンツの結果に近い論理識別情報を有するノードに知らせることができる。次いで、下記に記載される方法はファイルまたはコンテンツに関連付けることができる。
【００５１】
図４Ａは、物理的なノードまたはピアへの参照だけを含むＤＨＴ（例えば、ＤＨＴ１９）を示す。知られているように、各々のノードまたはピアは、例えば、通知メッセージまたはｐｉｎｇメッセージの結果としてＤＨＴ１９に追加される。例えば、ピアツーピア・ネットワーク用の既知のファイル共有システムＢＩＴＴＯＲＲＥＮＴでは、ａｎｎｏｕｎｃｅ＿ｐｅｅｒ（Ａ）メッセージが使用される。ここで、Ａはピアについての何らかの情報（例えば、アドレスおよびポート）である。ＢＩＴＴＯＲＲＥＮＴファイル共有システムでは、ネットワークへの参加を望むピアは、ａｎｎｏｕｎｃｅ＿ｐｅｅｒ（Ａ）メッセージをネットワーク内のピアのサブセットに送信する。
【００５２】
例えば、ＢＩＴＴＯＲＲＥＮＴファイル共有システムのピアは、３つの最も近いピアを含むルーティング・テーブルを有することができる。通知するピアＡは、ｆｉｎｄ＿ｐｅｅｒ（ｈａｓｈ（Ａ））メッセージを３つの最も近いピアに送信することができる。各ピアは、自分のルーティング・テーブルの中でノード識別子Ａに近いピアを検索することができる。ピアは、（例えば、メッセージを使用して）検索からのピアを、通知するピアＡに返す。この通知処理は、ｈａｓｈ（Ａ）に最も近いピアが見つかるまで、繰り返し起こる可能性がある。ｈａｓｈ（Ａ）に最も近いピアが見つかると、通知するピアＡは、ａｎｎｏｕｎｃｅ＿ｐｅｅｒ（Ａ）メッセージをｈａｓｈ（Ａ）に最も近いピアに送信することができる。
【００５３】
上述したように、受信するピアは、通知するピアを、受信するピアと関連するＤＨＴ１９に追加することができる。知られているように、受信するピアはハッシュ関数を使用して、通知するピア用のユニークな識別子またはキーを決定することができる。例えば、ハッシュ関数は、通知するピアについての情報を入力として取ることができる。入力情報は、例えば、上記ＢＩＴＴＯＲＲＥＮＴファイル共有システムの例からの「Ａ」（例えば、アドレスおよびポート）であり得る。ハッシュ関数の出力はビット・シーケンスであり得る。（図４Ａにおいてｈａｓｈ＿０およびｈａｓｈ＿５００によって表された）ビット・シーケンスは、ｎビットの長さ（例えば、ｎ＝１６０）であり得る。
【００５４】
理解されるように、ハッシュ関数から２ｎ個の別個の出力がある。したがって、２ｎ個のノード（論理または物理）を識別する２ｎ個のエントリが、ＤＨＴ１９の中に存在することができる。知られているように、別個のノードの数は限定され得るので、比較的大きな数値的な違いで各々のノードまたはピアにビット・シーケンスを割り当てるハッシュ関数を使用することにより、各ノードを論理的に分けることは可能であり得る。
【００５５】
次いで、受信するピア（例えば、ノード４０ａ）は、＜キー、値＞のペアで通知ピア（例えば、ノード４０ｄ）を、受信するピアのＤＨＴ１９に追加することができる。ここで、キーは（上述した）ハッシュ関数の結果であり、値はＤＨＴ１９のエントリに関する何らかの情報である。例えば、値は、ノードの標識または名前、（下記でより詳細に説明される）ネットワークについての情報またはコンテンツについての情報であり得る。図４Ａは、ｈａｓｈ＿０およびｈａｓｈ＿５００それぞれについて、ｎｏｄｅ＿ＩＤ＝ｃｏｍｐｕｔｅｒ＿１およびｎｏｄｅ＿ＩＤ＝ｃｏｍｐｕｔｅｒ＿２の値を示す。
【００５６】
上記および下記で記載されるように、例示的な実施形態は、値がブランクで、キー（例えば、ハッシュされたビット・シーケンス）のみが任意の必要な情報を含むことができるように、＜キー、値＞のペアを格納することができる。例えば、（ピア、または下記に記載されるようにコンテンツに基づいてハッシュされたキーである）キーは、例えば、データベース５２および／またはデータベース５３に格納された別のテーブル用の検索値として使用することができる。
【００５７】
受信するピアは、すべての受信された通知メッセージ用の情報を格納することができない。例えば、知られているように、ＢｉｔＴｏｒｒｅｎｔ  Ｉｎｃ．に登録されたＢＩＴＴＯＲＲＥＮＴ（商標）ファイル共有システムは、当技術分野でＫａｄｅｍｌｉａとして知られているＤＨＴ１９を使用する。Ｋａｄｅｍｌｉａにおけるハッシュ関数は、ビット排他論理和（ＸＯＲ）がノード間の論理的な距離を決定するように、ノード用の識別子またはキーを出力する。例えば、Ｋａｄｅｍｌｉａにおいて、２つの識別子またはキー、ａおよびｂ（例えば、図４Ａからのｈａｓｈ＿０およびｈａｓｈ＿５００）が与えられると、Ｋａｄｅｍｌｉａはそれらの間の距離をそれらのビット排他論理和として定義する。Ｋａｄｅｍｌｉａのピアは、その識別子またはキーの０＜ｉ＜１６０ビットの各々用のノード、ピアのＤＨＴ内で自分から２＾ｉ＜ｄ＜２＾（ｉ＋１）のＸＯＲ距離を有するピアだけを格納することができる。
【００５８】
図４Ｂは、物理的なノードまたはピアへの参照とコンテンツを識別するノードへの参照とのどちらも含むＤＨＴ（例えば、ＤＨＴ１９）を示す。知られているように、通知するピア（例えば、ノード４０ｄ）は、ピアが自分を通知するのと大体同じ方法でコンテンツを通知する。しかしながら、通知は、コンテンツの何らかの標識も含むことができる。例えば、上記からのＢＩＴＴＯＲＲＥＮＴファイル共有システムの例を続けると、通知メッセージはａｎｎｏｕｎｃｅ＿ｐｅｅｒ（Ａ，Ｂ）であり得る。ここで、追加のパラメータＢはコンテンツの標識である。
【００５９】
知られているように、受信するピアは、上述したように受信するピアが通知されたピアを追加するのと大体同じ方法で、通知されたコンテンツを受信するピアのＤＨＴ１９に追加することができる。しかしながら、受信するピアはコンテンツに関する情報も格納することができる。ＤＨＴ１９はコンテンツ自体を格納しない。一方、ＤＨＴ１９は、コンテンツを参照するために有用であり得る何らかの情報を格納する。
【００６０】
知られているように、ハッシュ関数は、ノードの標識（例えば、ノード・アドレス）またはコンテンツの表現を入力として取ることができる。次いで、ハッシュ関数は、例えば、ピアのアドレスまたはコンテンツのタイトルに基づいてビット・シーケンスを出力する。上述したように、ピアは、ＫａｄｅｍｌｉａのＸＯＲ距離を満足するピアからのコンテンツの通知だけを格納することができる。
【００６１】
上述したように、＜キー、値＞のペアはＤＨＴ内に格納することができる。上述したように、キーはハッシュ関数からのビット・シーケンスの出力であり得る。値は上述した通りであり得る。しかしながら、値は、ファイルまたはコンテンツに関する何らかの情報を含むこともできる。例えば、そのファイルまたはコンテンツを提供するピアのアドレス、値は、ファイルの名前、ファイルを格納するピア上のファイルのメモリ位置に対するポインタ、またはファイルのタイプ（例えば、ビデオ、オーディオ、プログラム）を含むこともできる。
【００６２】
第１および第２の処理の各々は、図５〜８に関して下記でより詳細に説明される。図５は、例示的な実施形態によりピアを通知するための方法の流れ図を示す。図６は、例示的な実施形態によりノード識別情報（シビル）を格納するための方法の流れ図を示す。図７は、例示的な実施形態によりコンテンツを通知するメッセージを傍受するための方法の流れ図を示す。図８は、例示的な実施形態によりコンテンツを要求するメッセージを傍受するための方法の流れ図を示す。
【００６３】
図５に関連する方法のステップを説明しながら、図２および図３のネットワークへの参照がなされる。さらに、図４Ａに示されたような例示的な分散ハッシュ・テーブル（ＤＨＴ）への参照もなされる。さらに、図５は、図４Ａに関して上述したような物理的なピアでＤＨＴを埋めることも示す。
【００６４】
ステップＳ５０５において、物理的なピアまたはノード（例えば、ノード４０ａおよび４０ｂ）を通知するピアのメッセージを受信することができる。例えば、ピア通知メッセージは、図４Ａに関して上述したように受信することができる。あるいは、および／または、上述したようにピア通知メッセージを受信することに加えて、当技術分野で知られているように、ｐｉｎｇメッセージを受信することができる。ｐｉｎｇメッセージは、ｐｉｎｇメッセージを起動したピアまたはノードの何らかの標識を含むことができる。
【００６５】
ステップＳ５１０において、物理的なピアまたはノードの標識が決定される。例えば、図４Ａに関して上述したように、ピア通知メッセージは、ピアまたはノードについての何らかの情報を含むことができる。この情報は、例えば、ピアまたはノードに関連するアドレスおよび／またはポートであり得る。また、図４Ａに関して上述したように、標識は、例えばノード識別子またはキー（例えば、ハッシュされたキー）であり得る。
【００６６】
ステップＳ５１５において、物理的なピアまたはノードの標識に基づいて、ノード識別子またはキーが決定される。例えば、図４Ａに関して上述したように、ハッシュ関数は、通知するピア用またはノード用のユニークな識別子またはキーを決定するために使用することができる。例えば、ハッシュ関数は、通知するピアについての情報を入力として取ることができる。ハッシュ関数の出力はビット・シーケンスであり得る。（図４Ａにおいてｈａｓｈ＿０およびｈａｓｈ＿５００によって表された）ビット・シーケンスは、ｎビット（例えば、ｎ＝１６０）であり得る。
【００６７】
あるいは、ステップＳ５１０において標識がハッシュされたキーである場合、ステップＳ５１５は、ノード識別子またはキーとして、ハッシュされたキーを使用するように決定することができる。
【００６８】
ステップＳ５２０において、ＤＨＴ１９は、ノード識別子またはキーを使用する物理的なピアまたはノードへの参照で埋められる。例えば、図４Ａに関して上述したように、ＤＨＴ１９は、＜キー、値＞のペアとして参照されるピアまたはノードで埋めることができる。ＤＨＴ１９の＜キー、値＞のペアは、キーがハッシュ関数の結果であり、値がＤＨＴ１９のエントリに関する何らかの情報である場合がある。あるいは、上述したように、値はブランクのエントリであり得る。図５のステップは、ピアツーピア・ネットワーク１８の寿命全体を通して、繰り返し実行することができる。
【００６９】
図６は、例示的な実施形態によりノード識別情報（シビル）を格納するための方法の流れ図を示す。図６に関連する方法のステップを説明しながら、図２および図３のネットワークへの参照がなされる。さらに、図４に示されたような例示的な分散ハッシュ・テーブル（ＤＨＴ）への参照もなされる。
【００７０】
ステップＳ６０５において、コンテンツを通知するメッセージが、ピアまたはノード（例えば、ノード４０ａまたは４０ｂ）によって受信される。例えば、図４Ｂに関して上述したように、ピア通知メッセージを受信することができる。上述したように、ピア通知メッセージは、メッセージを伝送するピアまたはノードについての何らかの情報、および通知されたコンテンツについての何らかの情報を含むことができる。
【００７１】
ステップＳ６１０において、ノードに関連する情報および／またはコンテンツを含むノードの標識を決定することができる。例えば、図４Ｂに関して上述したように、ピア通知メッセージは、ピアまたはノードについての何らかの情報を含むことができる。例えば、この情報は、ピアまたはノードに関連するアドレスおよび／またはポートであり得る。
【００７２】
ステップＳ６１５において、コンテンツについての情報を決定することができる。例えば、図４Ｂに関して上述したように、ピア通知メッセージはコンテンツについての何らかの情報を含むことができる。
【００７３】
ステップＳ６２０において、ノード情報、および／または、物理的なピアもしくはノードの標識、およびコンテンツに基づいて、ノード識別子またはキーが決定される。例えば、図４Ｂに関して上述したように、ハッシュ関数は、コンテンツ用のユニークな識別子またはキーを決定するために使用することができる。例えば、ハッシュ関数は、通知するピアについての情報（例えば、ノード情報）またはコンテンツ（例えば、コンテンツ情報）を、入力として取ることができる。ノード情報はコンテンツを通知するノードを識別し、コンテンツ情報はコンテンツを識別する。ハッシュ関数の出力はビット・シーケンスであり得る。（図４Ａにおいてｈａｓｈ＿０およびｈａｓｈ＿５００によって表された）ビット・シーケンスは、ｎビット（例えば、ｎ＝１６０）であり得る。あるいは、通知メッセージは、コンテンツを表すハッシュされたキーを含むことができ、ステップＳ２０において、このハッシュされたキーはメッセージから取り出され、ノード識別子またはキーとして使用される。
【００７４】
ステップＳ６２５において、ＤＨＴ１９は、ノード識別子またはキー、キーおよび／またはコンテンツへの参照で埋めることができる。例えば、図４Ｂに関して上述したように、ＤＨＴ１９は、＜キー、値＞のペアとして参照されるコンテンツで埋めることができる。ＤＨＴ１９の＜キー、値＞のペアは、キーがハッシュ関数の結果であり、値がＤＨＴ１９のエントリに関する何らかの情報であり得る。あるいは、上述したように、値はブランクのエントリであり得、キーは、別のテーブルまたはデータベースにおいて検索キーとして使用することができる。
【００７５】
ステップＳ６３０において、ステップＳ６２０で決定されたノード識別子またはキーに基づいて、論理的な変形ノード識別子および／または（上述したように、シビルとしても知られている）変形キーを、ＤＨＴ１９の中に格納する（例えば、通知する）ことができる。例えば、図４Ｃにおいて、論理的な変形ノード識別子および／または変形キーは、ｈａｓｈ＿５４７、ｈａｓｈ＿５４８、ｈａｓｈ＿５４９、ｈａｓｈ＿５５１、ｈａｓｈ＿５５２およびｈａｓｈ＿５５３のハッシュされたキーをもって示され、ファイルまたはコンテンツはｈａｓｈ＿５５０のハッシュされたキーと同じである。
【００７６】
例えば、ステップＳ６２５において、キーはテーブル（例えば、ＤＨＴ１９）の中に格納することができ、キーは通知メッセージに基づく場合がある。キーはコンテンツ情報を含むことができる。コンテンツ情報はコンテンツを識別することができる。また、通知するノードは、堅牢性を実現するために、さまざまなノード上でコンテンツを識別するキーのｋ個（ｋは０より大きいかまたは０に等しい整数）の複製を通知することができる。これらのｋ個の複製は、キーに最も近いＤＨＴ１９の中のｋ個のノード上に格納され、コンテンツを識別して通知する。
【００７７】
例えば、ステップＳ６３０において、ノードは、ｎ個（ｎは２以上の整数）の変形キーをテーブルの中に格納することができる。ノードが通知するノードでない場合、複数の変形キーの各々は、格納されたキーの変形またはｋ個の複製のうちの１つであり得る。言い換えれば、変形キーは、キーの何らかの変形をもつ通知メッセージに基づいて格納されたキー（または１つの複製）のシビルであり得る。次いで、キーの変形をもつシビルはＤＨＴ１９の中に入力することができる。
【００７８】
例えば、マイクロプロセッサ４６は、ｎ個の論理的な変形ノード識別子および／または変形キー（例えば、キー）をＤＨＴ１９の中に格納することができる。ファイルまたはコンテンツに関してｎ個の論理的な変形ノード識別子および／または変形キーをＤＨＴ１９の中に格納することは、例えば、ファイルまたはコンテンツ用のノード標識を決定し、次いで、ノード標識を論理的な変形ノード識別子および／または変形キーに割り当てることを伴ってもよい。例えば、マイクロプロセッサ４６は、ハッシュ・キー（例えば、ｈａｓｈ＿５５０）を読み込み、ハッシュ・キーに対する論理的な加算または減算を実行して、論理的な変形ノード識別子および／または変形キー（例えば、キー）の各々を決定することができる。次いで、ｎ個の論理的な変形ノード識別子および／または変形キーは、ＤＨＴ１９の中に格納することができる。
【００７９】
例えば、ｎ個の論理的な変形ノード識別子および／または変形キーの各々は、論理的に、格納されたファイルまたはコンテンツのハッシュ・キーから始まる、次に近い論理的な識別子またはキーからの１ビットであり得る。図４Ｃにおいて示されたように、ｈａｓｈ＿５５１は論理的にｈａｓｈ  ５５０から１ビット離れていて、ｈａｓｈ＿５５２は論理的にｈａｓｈ＿５５１から１ビット離れている、など。例示的な実施形態は１ビットの分離を説明するが、例示的な実施形態はそれに限定されない。
【００８０】
論理的な変形ノード識別子および／または変形キーに関連するノード標識は、ファイルまたはコンテンツ（例えば、ハッシュ・キーｈａｓｈ＿５５０）に関連するノード標識（例えば、ハッシュ・キー）と共通のいくつかのプレフィックス・ビットを共有することができる。例えば、論理的な変形ノード識別子および／または変形キーに関連するノード標識またはキーは、ノード標識に関連するビットのセット内に共通の少なくともｐ個のビットを共有することができる。ｐは、ＤＨＴ１９内の参加ノードの数によって決定することができる。ＮがＤＨＴ１９内の全ノードの数である場合、少なくともｐはｂより大きくなければならず、ここで、２＾ｂ＝Ｎ、ｌｇ２Ｎ＝ｂである。
【００８１】
好ましくは、ＤＨＴ１９は、局所化用のファイルまたはコンテンツであると決定された、ＤＨＴ１９内の各ファイルまたはコンテンツ用の、少なくとも２５６に等しいｎ個の論理的な変形ノード識別子および／または変形キーを含む。各々は、少なくとも２４に等しいｐ個の共通のプレフィックス・ビットを共有するノード標識を有する。
【００８２】
当業者が理解するように、論理的な変形ノード識別子および／または変形キーは、ＤＨＴ１９内で表されたすべてのファイルまたはコンテンツに関するか、関連して格納することができる。あるいは、ＤＨＴ１９内で表されたファイルまたはコンテンツのいくつかのサブセットは、それらに関連する論理的な変形ノード識別子および／または変形キーを有することができる。
【００８３】
例えば、人気のあるファイルは、ステップＳ６２５において、ＤＨＴ１９の中に格納された関連を有することができる。例えば、人気のあるファイルは頻繁にアクセスされるか、または通信されるファイルであり得る。ＤＨＴ１９内で利用可能なすべてのファイルまたはコンテンツを監視することは困難であると証明することができる。何故なら、これは何百万もの論理的な変形ノード識別子および／または変形キーの導入を必要とし、その結果、論理的な変形ノード識別子および／または変形キーに関与するマシン（例えば、ネットワーク構成要素４５）での負荷が高くなる可能性があるからである。さらに、もし局所化できるトラフィックだけでなく大半のトラフィックを新しいファイル（例えば、人気のあるファイル）に関連付けることができるなら、各ファイルを監視することは必要でない可能性がある。
【００８４】
さらに、論理的な変形ノード識別子および／または変形キーは、値において、ピア（例えば、物理的なノードまたはコンピュータ）を表すノードに関連するノード識別子および／またはキーより、ファイルまたはコンテンツを表すノードに、論理的にまたはビットごとに近いビット・シーケンスを有することができる。ビット・シーケンスはコンテンツ情報のハッシュ関数に基づく場合があり、ビット・シーケンスは、プレフィックスを表す第１のビット列およびコンテンツを表す第２のビット列を含むことができる。論理的な変形ノード識別子および／または変形キーは、第１のビット列の変更を加えたサブセットを含んで、複数の第１の変形キーの各々を生成することができる。
【００８５】
論理的な変形ノード識別子および／または変形キー（例えば、ステップＳ６２５において格納された論理的な変形ノード識別子および／または変形キー）が格納されたピア（例えば、ノード４０ｄ）は、ピア（例えば、ノード４０ａおよび４０ｂ）にそれらの存在を知らせることもできる。例えば、上述されたＢＩＴＴＯＲＲＥＮＴファイル共有システムにおいて、ピア（例えば、ノード４０ｄ）は、既知のメッセージをピアに近いと判定されたピアに送信することができる。既知のメッセージは、論理的な変形ノード識別子および／または変形キーの各々向けのｐｉｎｇメッセージであり得る。ｐｉｎｇメッセージの各々は、論理的な変形ノード識別子および／または変形キーのうちの１つ（例えば、ハッシュ・キーまたはビット・シーケンス）を含むことができる。近いピアは既知の方法を使用して判定される。例えば、近いピアは、ルーティング・テーブル内に格納されているか、または別のメッセージ・タイプを使用して判定することができる。
【００８６】
図７は、例示的な実施形態によりコンテンツを通知するメッセージを傍受するための方法の流れ図を示す。図７に関連する方法のステップを説明しながら、図２および図３のネットワークへの参照がなされる。さらに、図４Ｄ〜Ｆに示されたような例示的な分散ハッシュ・テーブル（ＤＨＴ）への参照もなされる。
【００８７】
ステップＳ７０５において、コンテンツを通知するメッセージを傍受することができる。通知メッセージは、メッセージを傍受する論理ノードに関連付けられた宛先アドレスを有する。ステップＳ７０５は、（図６に関して上述したような）ステップＳ６０５によく似ているが、１つの重要な相違がある。ステップＳ６０５において、通知メッセージは物理ピア宛であったが、ステップＳ７０５において、メッセージは論理ノードによって傍受される。言い換えれば、通知するピアは、論理ノードがＤＨＴ１９内にない場合その他の方法では受信されなかったメッセージを送信した。
【００８８】
さらに、ステップＳ６０５において受信された通知メッセージの場合、ＤＨＴは、コンテンツに関連するノード識別子またはキーで埋められる（ステップＳ６２５）。一方、ステップＳ７１０において、傍受されたメッセージについての情報を格納することができる。
【００８９】
情報は、メッセージの特性情報として知られており、キーとの関連で格納することができる。変形キーに関連する特性情報を格納することは、変形キーが基づいているキーに関連する通知メッセージに関連する特性情報を格納することを含む。特性情報は、ノードに関連した情報およびコンテンツに関連した情報を含むことができる。
【００９０】
ノードに関連した情報は、第２のメッセージに関連するノードのインターネット・サービス・プロバイダ、第２のメッセージに関連するノードの名前、第２のメッセージに関連するノードのアドレス、および第２のメッセージに関連するノードのポートのうちの少なくとも１つを含むことができる。コンテンツに関連した情報は、コンテンツの説明、コンテンツのタイプ、コンテンツのサイズ、コンテンツへのポインタ、および第２のメッセージに関連するノードに関連する格納位置のうちの少なくとも１つを含むことができる。
【００９１】
ステップＳ７０５に関して上述したように、ノードはコンテンツ通知メッセージを傍受することができる。コンテンツ通知メッセージは特性情報を含むことができる。特性情報はデータベースの中に格納することができる。例えば、特性情報は、通知メッセージのアドレスに関係する変形キーとの関連で、データベース、例えばデータベース５２またはデータベース５３の中に格納することができる。傍受された通知メッセージに関連付けられた宛先アドレスが、任意の格納された変形キーといかなる関係ももたない場合、通知メッセージは受信された通知メッセージであると仮定され、図４に関して上述されたメッセージに従って処理することができる。
【００９２】
情報は、ピア、ノードまたはピアツーピア・ネットワークに関連する、例えば、データベース５２、データベース５３、および／または他の何らかのメモリの中に格納することができる。情報は、ファイルまたはコンテンツ（例えば、ノード識別子またはハッシュ・キー）、メッセージを送信するピア、メッセージを受信するピア、メッセージを送信／送出するピアに関連するネットワーク、および／またはメッセージを受信するピアに関連するネットワークとの関連で格納することができる。情報は、ファイルまたはコンテンツ、および、メッセージを送出するピアに関連するインターネット・サービス・プロバイダ（ＩＳＰ）（例えば、コンテンツが存在するローカル・ネットワーク）との関連で格納することができる。データベース５３は、ノード標識（例えば、ノードまたはピアのアドレス）およびＩＳＰに関連する情報を含むことができる。
【００９３】
あるいは、および／または上記説明に加えて、ステップＳ７１０において、情報はＤＨＴ１９の中に格納することができる。例えば、上述したように、ＤＨＴ１９内のエントリは＜キー、値＞のペアで格納することができる。前述の情報は、値としてＤＨＴ内のエントリとして格納することができる。図４Ｄに示されたように、受信通知はピア通知メッセージである。ピア通知メッセージに関連する宛先はｈａｓｈ＿５５１と一致した。したがって、新しい値（ｎｏｄｅ＿ＩＤ＝ｃｏｍｐｕｔｅｒ＿３）がｈａｓｈ＿５５１用の値フィールドに追加される。
【００９４】
例えば、図４Ｄに示されたように、傍受された通知はピア通知メッセージである。ピア通知メッセージに関連する宛先はｈａｓｈ＿５５１と一致した。したがって、新しい値（ｎｏｄｅ＿ＩＤ＝ｃｏｍｐｕｔｅｒ＿３）をｈａｓｈ＿５５１用の値フィールドに追加することができる。
【００９５】
例えば、図４Ｅに示されたように、傍受された通知はコンテンツ通知メッセージである。コンテンツ通知メッセージに関連する宛先はｈａｓｈ＿５４９と一致した。したがって、新しい値（ｎｏｄｅ＿ＩＤ＝ｃｏｍｐｕｔｅｒ＿３、ｃｏｎｔｅｎｔ＝ｃｏｎｔｅｎｔ＿２）をｈａｓｈ＿５４９用の値フィールドに追加することができる。
【００９６】
例えば、図４Ｆに示されたように、複数の受信された通知が複数のノードからのコンテンツを通知する。コンテンツ通知メッセージに関連する宛先はｈａｓｈ＿５４９と一致した。したがって、複数の新しい値は、ｈａｓｈ＿５４９用の値フィールドに追加することができる。
【００９７】
例示的な実施形態は既存のＤＨＴエントリへの新しい値の追加を示すが、当業者は、重複するキー（例えば、ハッシュ・キー）で新しいエントリを追加することが可能であることを理解されよう。
【００９８】
図６および図７において示された処置が完了すると、ピアツーピア・ネットワークは、ファイルまたはコンテンツを保持するピアを常に認識することができる。この前提のもとで、局所化を実行することができる。
【００９９】
図８は、局所化されたピアのセットまたはノードのリストで、ファイルおよび／またはコンテンツの問合せに応答する詳細である。図８は、例示的な実施形態によりコンテンツを要求するメッセージを傍受するための方法の流れ図を示す。
【０１００】
図８に関連する方法のステップを説明しながら、図２および図３のネットワークへの参照がなされる。さらに、図４Ｄ〜Ｆに示されたような例示的な分散ハッシュ・テーブル（ＤＨＴ）への参照もなされる。
【０１０１】
ステップＳ８０５において、コンテンツを要求するメッセージが傍受される。メッセージは、ピアツーピア・ネットワーク内のピアから受信することができる。あるいは、メッセージはピア（例えば、ピア４０ａ）内部へのメッセージであった可能性がある。メッセージは、要求されたコンテンツの標識、メッセージの送信者（例えば、コンテンツを要求するノードまたはピア）を示す識別子もしくはキー、および／またはメッセージの宛先を示す識別子もしくはキーを含むことができる。コンテンツを要求するメッセージは宛先アドレスを含むことができる。
【０１０２】
例えば、上述したように、１つのよく知られているピアツーピア・ネットワーク用ファイル共有システムは、ＢＩＴＴＯＲＲＥＮＴとして知られている。ＢＩＴＴＯＲＲＥＮＴファイル共有システムは、ｇｅｔ＿ｐｅｅｒオブジェクトを使用して前述のコンテンツ要求を作成する。ピアはｇｅｔ＿ｐｅｅｒメッセージを、そのノード標識をピアがすでに認識している（例えば、要求を作成したピアに関連するＤＨＴ内に格納された）ｋ個のピアに送信する。ｋ個のピアがピアツーピア・ネットワーク全体を通して広く分散された可能性がいくらか存在する。
【０１０３】
知られているように、ＢＩＴＴＯＲＲＥＮＴファイル共有システム内のピアは、他の既知のピアのメッセージに応答する。例えば、応答するピアがコンテンツを含むいかなるピアについても知っていない場合、応答するピアが次の繰り返しでメッセ−ジを送信できる既知のピア、すなわちその識別子が要求されたファイルの識別子により近いピアのリストで、応答するピアは回答する。知られているように、この反復処理は、ｇｅｔ＿ｐｅｅｒメッセージが要求されたコンテンツのコピーまたは一部を保持するピアのリストで回答されるまで繰り返す。ピアのリストは、例えば、コンテンツ全体にアクセスするためにピアのアドレスおよびポート番号を含むことができる。
【０１０４】
当業者が理解するように、かつ上述したように、ピアツーピア・ネットワークに関連する何百万ものファイルまたはコンテンツが存在する。また、ピアツーピア・ネットワークを代表するＤＨＴ１９の中には、何百万もの空のエントリ（または非エントリ）が存在する。そのため、メッセージは、要求されたコンテンツを有する可能性があるピアツーピア・ネットワーク内の潜在的なノード識別子またはキーを知っているすべてのピアには届かない可能性がある。したがって、従来のピアツーピア・ネットワークにおいては、ネットワークのピアがコンテンツを要求するメッセージを受信しない場合があり、したがって、ピアツーピア・ネットワーク内の何らかのコンテンツの存在の標識を含むメッセージで応答しない場合がある可能性が高い。
【０１０５】
しかしながら、図６を参照して上述したように、例示的な実施形態では、ＤＨＴ１９はいくつかの論理的な変形ノード識別子および／または変形キーを含むことができる。論理的な変形ノード識別子および／または変形キーの各々は、ＤＨＴ１９内のファイルまたはコンテンツに関係する情報を含むことができる。例えば、図４Ｆで示されたように、ハッシュ・キーｈａｓｈ＿５４９に関連するノードは、コンピュータ３〜７がコンテンツ２の少なくとも一部を有することを示す情報を含む。
【０１０６】
そうすることによって、上述の反復処理では、その関連情報が要求されたコンテンツの識別子を変更することによって作成されたピアまたはノード（例えば、ピア２０ａ）上のテーブル（例えば、ＤＨＴ１９）内に格納された論理的な変形ノード識別子および／または変形キーが、要求されたコンテンツに対する要求を受信または傍受することができる比較的高い可能性がある。例えば、システムの設計者がよく知られているツールを使用する場合、コンテンツに対するすべての要求を傍受するように、現実的にシステムを設計することができる。
【０１０７】
図８に戻ると、ステップＳ８１０において、ノード識別子またはキーは、コンテンツ要求メッセージに関連するコンテンツに基づいて決定することができる。例えば、コンテンツ要求メッセージは、要求されたコンテンツに関連するノード識別子またはキーを含むことができる。その場合、ノードは要求メッセージを読み込んでノード識別子またはキーを決定することができる。あるいは、要求されたコンテンツは、ノード識別子またはキーを決定するために（上述した）ハッシュ関数への入力として使用することができる。
【０１０８】
ステップＳ８１５において、要求されたコンテンツが見つかる場所をノードが知っているかどうか判定される。そして、コンテンツを含むノードのリストを作成することができる。この判定は、よく知られている方法を使用して実行することができる。例えば、上述したように、キー検索はＤＨＴ１９上で実行することができる。受信するピア（例えば、４０ａ）が図４Ｆに示されたような状態のＤＨＴ１９を含むと仮定する。ピア（例えば、４０ｄ）がコンテンツ３に対する要求を行う場合、受信するピアはＤＨＴのキー検索を実行することができる。受信するピアはコンテンツ３に関する情報を何も見つけない可能性がある。したがって、知られているように、受信するピアは、受信するピアが知っているピア（例えば、コンピュータ１〜７）のリストで応答する。
【０１０９】
一方、ピアがコンテンツ２に対する要求を行う場合、受信するピアは再びＤＨＴのキー検索を実行する。今度は、受信するピアは、コンテンツを含むピア（例えば、コンピュータ３〜７）を見つける。知られているように、従来技術のシステムでは、受信するピアは検索の結果として見つかったすべてのピアを含むメッセージで回答するはずである。
【０１１０】
さらに、上述したように、論理的な変形ノード識別子および／または変形キーは、値において、ピア（例えば、物理的なノードまたはコンピュータ）を表すノードに関連するノード識別子および／またはキーより、ファイルまたはコンテンツを表すノードに、論理的にまたはビットごとに近いビット・シーケンスを有することができる。ビット・シーケンスはノード情報およびコンテンツ情報のハッシュ関数に基づくことができ、ビット・シーケンスは、プレフィックスを表す第１のビット列およびコンテンツを表す第２のビット列を含むことができる。論理的な変形ノード識別子および／または変形キーは、第１のビット列の変更を加えたサブセットを含んで、複数の第１の変形キーの各々を生成することができる。
【０１１１】
ノードのリストを決定することは、ＤＨＴ１９内のどのエントリが第１のキー内の第１のビット列と一致する第１のビット列をもつキーまたは変形キーを有するか判定すること、および、判定されたエントリに関連するノードが要求されたコンテンツを示す特性情報を有するように、判定されたエントリからノードのリストを生成することを含むことができる。
【０１１２】
しかしながら、例示的な実施形態によれば、要求するピアのネットワーク（例えば、ＩＳＰ）に関連するローカルのピアのみを、回答の中で提供することができる。したがって、ステップＳ８２０において、要求者に関連するＩＳＰが決定される。例えば、マイクロプロセッサ４６は、要求するピアに関連するアドレスを、データベース５３から取り出されたネットワーク情報と比較することができる。あるいは、および／または加えて、マイクロプロセッサ４６はＤＨＴ１９から読み込まれた情報を使用することができる。例えば、マイクロプロセッサ４６は、要求するピアに関連する値フィールドに格納された情報を使用することができる。
【０１１３】
ステップＳ８２５において、ステップＳ８１５において見つかったノードの各々に関連するＩＳＰが決定される。例えば、マイクロプロセッサ４６は、ノードの各々に関連するアドレスを、データベース５３から取り出されたネットワーク情報と比較することができる。あるいは、および／または加えて、マイクロプロセッサ４６はＤＨＴ１９から読み込まれた情報を使用することができる。例えば、マイクロプロセッサ４６は、ノードの各々に関連する値フィールドに格納された情報を使用することができる。
【０１１４】
ステップＳ８３０において、ノードのリストは、ステップＳ８２０において決定された要求者のＩＳＰに基づいてフィルタをかけられる。フィルタをかけられたノードのリストは、要求者と同じＩＳＰに関連するノードのみを含むことができる。フィルタをかけられたノードのリストは、要求者に対して比較的良い品質および／または比較的高価でない接続性（例えば、ピアリング契約）をもつノードも含むことができる。ステップＳ８３５において、フィルタをかけられたノードのリストに基づいて、要求者はピアのセットまたはノードのリストを含むメッセージで回答される。
【０１１５】
例えば、ステップＳ８２０において、マイクロプロセッサ４６は、要求するノードがネットワーク２４のメンバであることを判定する場合がある。加えて、ステップＳ８２５において、マイクロプロセッサ４６は、コンピュータ３、４および７がネットワーク２４のメンバであることを判定する場合がある。さらに、ステップＳ８２５において、マイクロプロセッサ４６は、コンピュータ５および６がネットワーク２６のメンバであることを判定する場合がある。例示的な実施形態によれば、ステップＳ８３０のローカルのピアのセットまたはノードのリストは、コンピュータ３、４および７を含み、コンピュータ５および６を含まない。
【０１１６】
フィルタをかけられたノードのリストが閾値の数より少ない場合、別のノードをノードのリストに追加することができ、別のノードはノードのリストからフィルタをかけられたノードを含むことができる。
【０１１７】
上記の例示的な実施形態はＩＳＰネットワークを参照するが、例示的な実施形態はそれに限定されない。例えば、図８において、ＩＳＰは、例えば、要求するピアまたはノード、および、回答の中のピアのセットまたはノードのリストのノードに関連する、任意のローカル・ネットワークと置き換えることができる。
【０１１８】
コンテンツに関連するノード識別子およびキー、ならびにそれらの論理的な変形ノード識別子および／または変形キーは、寿命をもつ場合がある。任意の識別子またはキーに関連する閾値期間が切れた場合、識別子またはキーに関連するテーブル内のエントリは削除され得る。例えば、ＤＨＴ１９内へのキーの入力からの（例えば、３０分または２時間）の閾値期間が切れた後、エントリは削除され得る。
【０１１９】
本発明の代替の実施形態は、コンピュータ・システムで使用するためにコンピュータ・プログラム製品として実装することができる。コンピュータ・プログラム製品は、ディスケット、ＣＤ−ＲＯＭ、ＲＯＭ、もしくは固定ディスクなどの、有形もしくは持続的なデータ記録媒体（コンピュータ可読媒体）上に格納された、または、コンピュータデータ信号、有形媒体もしくは無線媒体、例えば、マイクロ波もしくは赤外線を介して伝送される信号の中で具現化された、例えば、一連のコンピュータ命令、コード・セグメントまたはプログラム・セグメントである。一連のコンピュータ命令、コード・セグメントまたはプログラム・セグメントは、上述の例示的な実施形態の方法の機能性の全部または一部を構成することができ、揮発性または不揮発性、半導体、磁気式、光学式または他のメモリ装置などの任意のメモリ装置の中に格納することもできる。
【０１２０】
当業者が理解するように、かつ上述したように、ピアツーピア・ネットワークに関連する何百万ものファイルまたはコンテンツが存在する。また、ピアツーピア・ネットワークを代表するＤＨＴ１９の中には、何百万もの空のエントリ（または非エントリ）が存在する。そのため、メッセージは、要求されたコンテンツを有する可能性があるピアツーピア・ネットワーク内の潜在的なノード識別子またはキーを知っているすべてのピアには届かない可能性がある。したがって、従来のピアツーピア・ネットワークにおいては、ネットワークのピアがコンテンツを要求するメッセージを受信しない場合があり、したがって、ピアツーピア・ネットワーク内の何らかのコンテンツの存在の標識を含むメッセージで応答しない場合がある可能性が高い。
【０１２１】
しかしながら、図６および図８を参照して上述したように、例示的な実施形態では、ＤＨＴ１９はいくつかの論理的な変形ノード識別子および／または変形キーを含むことができる。論理的な変形ノード識別子および／または変形キーの各々は、ＤＨＴ１９内のファイルまたはコンテンツに関係する情報を含むことができる。例えば、図４Ｆで示されたように、ハッシュ・キーｈａｓｈ＿５４９に関連するノードは、コンピュータ３〜７がコンテンツ２の少なくとも一部を有することを示す情報を含む。そうすることによって、上述の反復処理では、その情報が要求されたコンテンツに関係するピアまたはノード（例えば、ピア２０ａ）が、コンテンツに対する要求を受信または傍受することができる比較的高い可能性がある。
【０１２２】
加えて、論理的な変形ノード識別子および／または変形キーとの関連で格納された情報は、ＤＨＴ内（またはどこか）に格納されたノード情報に関連するネットワーク（例えば、ＩＳＰ）への参照を含むことができる。したがって、コンテンツに対する要求への応答メッセージは、コンテンツに対する要求の送信者と同じネットワークに関連付けられたノードのリストまたはピアのセットだけを含むことができる。
【０１２３】
例示的な実施形態を具体的に示し説明したが、特許請求の範囲の精神および範囲から逸脱することなく、形態および詳細における変形をその中で実行できることが当業者によって理解されよう。
【０１２４】
本発明をこのように記載したが、同発明が多くの方法で変更できることは明白であろう。そのような変形形態は、本発明から逸脱するものとみなすべきでなく、そのような修正形態すべては本発明の範囲内に含まれるものである。
【図１】
0005611468.tif 000002
【図２】
0005611468.tif 000003
【図３】
0005611468.tif 000004
【図４Ａ】
0005611468.tif 000005
【図４Ｂ】
0005611468.tif 000006
【図４Ｃ】
0005611468.tif 000007
【図４Ｄ】
0005611468.tif 000008
【図４Ｅ】
0005611468.tif 000009
【図４Ｆ】
0005611468.tif 000010
【図５】
0005611468.tif 000011
【図６】
0005611468.tif 000012
【図７】
0005611468.tif 000013
【図８】
0005611468.tif 000014