(57)【要約】【課題】先行技術のＰ２Ｐネットワークシステムに関連する問題を克服するピアツーピアファイル共有のシステムおよび方法の必要性がある。【解決手段】ピアツーピアファイリング共有システムは、複数のピア１２を有するネットワーク１０を備える。また、ピア１２は、ネットワークの複数のピア１２のうちの少なくとも１つのピア１２にファイルの少なくとも１つのセグメントを要求するステップと、少なくとも１つの要求されたセグメントの少なくとも一部を少なくとも１つのピア１２に提供するステップと、を含むピアツーピアファイリング共有の方法を実行するためのプログラマブル命令のセットを実行するプロセッサを備える。【選択図】図１
2007280388.tif 000002
【特許請求の範囲】
【請求項１】
ピアによってネットワーク上の複数のピアのうちの少なくとも１つのピアにファイルのセグメントを要求するステップと、
前記ネットワーク上の前記複数のピアのうちの前記少なくとも１つのピアによって要求されたセグメントの少なくとも一部を前記ピアに提供するステップと、
を含むことを特徴とするピアツーピアファイリング共有の方法。
【請求項２】
請求項１に記載の方法であって、さらに、
前記ピアによって要求されたセグメントの少なくとも一部をダウンロードするステップと、
前記ダウンロードされたセグメントの少なくとも一部をデータベースに格納するステップと、
前記複数のピアの別のピアに、前記ピアによって要求されたセグメントの少なくとも一部を提供するステップと、
前記複数のピアの別のピアにより別のセグメントの少なくとも一部を同時にダウンロードするステップと、
を含むことを特徴とする方法。
【請求項３】
複数のピアを有するネットワークと、
ネットワークの複数のピアのうちの少なくとも１つのピアにファイルの少なくとも１つのセグメントを要求するステップと、前記少なくとも１つの要求されたセグメントの少なくとも一部を少なくとも１つのピアに提供するステップと、を含むピアツーピアファイリング共有の方法を実行するためのプログラマブル命令のセットを実行するプロセッサと、
を備えることを特徴とするピアツーピアファイリング共有システム。
【請求項４】
請求項３に記載のシステムであって、
前記方法は、
クエリーを前記複数のピアに同報通信するステップと、
前記同報通信されたクエリーに応答して前記複数のピアから少なくとも１つの応答を受け取るステップと、
前記要求されたセグメントの少なくとも一部を提供するように応答するピアを選択するステップであって、前記クエリーは前記要求されたセグメントのパラメータの１つおよび要求されたデータセグメントを記述するフィルタとを含み、前記少なくとも１つの応答はオフセットおよび前記要求されたセグメントの長さを超えない長さを指定するメッセージを含むステップと、
をさらに含むことを特徴とする、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ピアツーピアファイル共有システムおよび方法に関する。
【背景技術】
【０００２】
ピアツーピア（Ｐ２Ｐ）ネットワークシステムにおいて、ファイルの完全コピーを有する１つ以上のピア（提供者）およびダウンロードすることによってファイルを取得することを望むその他のピア（利用者）の間でファイルを共有する方法がある。利用者は、ファイルの全体または一部をダウンロードしてしまうと、ファイルを他の利用者に提供し始めることもある。このようにして、ピアは、ファイルをダウンロードおよびアップロードする「作業」をＰ２Ｐネットワークシステムにわたって分散する。ファイルのダウンロードは、最初のバイトから始まり、ファイル全体がダウンロードされるまで、最終バイトまで順次に進む。
【０００３】
前述のピアツーピアファイル共有方法の主要な問題は、利用者が誰もファイルの完全なコピーを持たないことにある。したがって、提供者が使用できなくなった場合、利用者は、ダウンロードを続行するために、完全なファイルが利用できるようになるのを無期限に待ち続けなければならない。ファイルが再び使用可能になった場合、ダウンロードは、前回正常に取り出されたバイトのオフセットから開始する。
【０００４】
問題は特に、全ファイルの完全なコピーを有するピアツーピアファイル共有システムのピアがほとんどいない場合に生じる。ファイルが大型ファイルである場合、問題はさらに悪化する。問題は、以下の例によって説明される。
１．ピアＡがピアツーピア（Ｐ２Ｐ）ネットワークシステムに接続し、Ｆｉｌｅ１．ｔｘｔ（１０２４バイト）をネットワークで使用できるようにする。
２．ピアＢは、第１バイトから始めてファイルをピアＡからダウンロードし始め、５１２バイトのデータを正常にダウンロードし、データの提供を開始する（この時点でピアは提供者でもあり利用者でもある）。
３．ピアＣは、第１バイトから始めてファイルをピアＡからダウンロードし始め、２５６バイトのデータを正常にダウンロードする。
４．ピアＡはネットワークから切断する（あるいは、Ｆｉｌｅ１．ｔｘｔの提供を中断する）。
５．ピアＣは、ピアＢからのデータのダウンロードを続行し、さらに２５６バイトのデータを正常にダウンロードする（合計５１２バイト）。
【０００５】
この時点において、ピアＢは、ピアＡがネットワークから切断する前に最初の５１２バイトをダウンロードすることしかできないので、Ｆｉｌｅ１．ｔｘｔの後半の５１２バイトのコピーを有する提供者はＰ２Ｐネットワークシステム上にいないことになる。ピアＢおよびピアＣはいずれも、完全なファイルが使用可能になるのを無期限に待つ必要がある。他の利用者がＰ２Ｐネットワークに接続してファイルを要求した場合、ピアＢおよびピアＣは、ダウンロードされたファイルの部分コピーを他のピアに提供することができるが、ファイルの完全コピーを持つ提供者がＰ２Ｐネットワークに接続するまでは、利用者は誰もファイルをダウンロードすることができなくなり、データ転送の進行を事実上停止させる。
【０００６】
ピアは多くの場合、ファイルの完全コピーが可能な限り長時間Ｐ２Ｐネットワークシステム上に確実にとどまるようにするため、ファイルのダウンロード後に「厚意」としてしばらくの間ファイルを引き続き提供することが期待される。多くの場合、Ｐ２Ｐネットワークシステム上で使用可能なファイルの完全コピーはほとんどない、これはつまり、提供者が切断した場合、Ｐ２Ｐネットワークシステム全体のファイルの可用性を損なうということである。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
以上のことから、先行技術のＰ２Ｐネットワークシステムに関連する問題を克服するピアツーピアファイル共有のシステムおよび方法の必要性がある。
【課題を解決するための手段】
【０００８】
本開示によれば、Ｐ２Ｐネットワークシステム内のピアが不確定の順序で大型ファイルのセグメントをダウンロードして、それらをデータベースに格納し、それらのセグメントをＰ２Ｐネットワークシステム内の他のピアが使用できるようにする、ピアツーピアファイリング共有のシステムおよび方法が提供される。Ｐ２Ｐネットワークシステム内の少数のピアのみがいつでもファイルの完全コピーを有することができる可能性を考慮すれば、完全なファイルからの異なるセグメントのサブセットをそれぞれ有する潜在的に多数のピアは、即座にセグメントを他のピアが使用できるようにすることができる。
【０００９】
十分な数のピア、および適度な時間を与えられれば、たとえ元の提供者がＰ２Ｐネットワークシステムから切断するか、または何らかの他の理由により使用不可能になったとしても、ファイルの完全コピーが存在し、Ｐ２Ｐネットワーク全体を通じて配布される可能性は極めて高い。これにより、それぞれファイルの不完全なコピーを持つ残りのピアは、ファイルのさらに完全なコピーを作成するためにファイルのセグメントを引き続き交換することができる。たとえ使用可能なセグメントのスーパーセットが完全なファイルではない場合であっても、さまざまなピアは、元のファイルのソースが利用できなくなった後に引き続きデータを交換することができ、（最終的にすべてのピアがセグメントの同一セットを有するまで）各ピアでファイルのさらに完全なコピーを作成することができるようになる。
【００１０】
本開示によれば、ピアツーピアファイル共有システムは、Ｐ２Ｐネットワークシステム向けに提供される。ファイル共有システムは、ピアツーピアファイリング共有方法を実行するためのプログラマブル命令のセットを実行する複数のピアを有するネットワークおよびプロセッサを含む。方法は、ネットワークの複数のピアのうちの少なくとも１つのピアにファイルの少なくとも１つのセグメントを要求するステップと、少なくとも１つの要求されたセグメントの少なくとも一部を少なくとも１つのピアに提供するステップとを含む。システムはさらに、ファイルの少なくとも１つのセグメントを格納するデータベースを含む。
【００１１】
本開示はさらに、ピアツーピアファイリング共有の方法を提供する。方法は、ピアによってネットワーク上の複数のピアのうちの少なくとも１つのピアにファイルのセグメントを要求するステップと、要求されたセグメントの少なくとも一部をネットワーク上の複数のピアのうちの少なくとも１つのピアによってピアに提供するステップとを含む。方法はさらに、ピアによって要求されたセグメントの少なくとも一部をダウンロードするステップと、ダウンロードされたセグメントの少なくとも一部をデータベースに格納するステップとを含む。要求されたセグメントは、要求されたセグメントの長さを指定する表記によって識別される。表記は（ｘ，ｙ）であり、ここでｘは要求されたセグメントが開始するオフセットを指定し、ｙは要求されたセグメントの長さを指定する。
【００１２】
方法はさらに、元のソースからまだ取り出されていないセグメントを判別するためにデータベースをスキャンすることによりピアによって要求されたセグメントを選択するステップと、判別されたセグメント内からのランダムオフセット、およびランダムオフセットと判別されたセグメントの終点との間のランダム長さを選択するステップとを含む。
【００１３】
本開示によれば、データセグメントが、ファイル、特に大型ファイルのさらに完全なコピーを作成するためにＰ２Ｐネットワークシステムの２つ以上のピア間で共有または交換できるようにする、ダウンロード可能なデータセグメントを使用するピアツーピアファイル共有のシステムおよび方法が提供される。
【発明を実施するための最良の形態】
【００１４】
ここで、図１および図３を参照すると、本開示による模範的なＰ２Ｐネットワークシステムおよび方法のブロック図がそれぞれ示される。全体を通して参照番号１０によって指定されている本開示のＰ２Ｐネットワークシステムは、６つのピア１２、および６つのピア１２の各々と通信するデータベース１４を含む。各ピア１２は、本開示による方法を実行するための少なくとも１つのプロセッサを含む。
【００１５】
少なくとも１つのプロセッサは、本開示による方法を実行するための本明細書で以下に説明される機能およびステップを実行する。特に、少なくとも１つのプロセッサは、本開示によるシステムおよび方法の機能を実行するための一連のプログラマブル命令を有するアプリケーションソフトウェアを実行する。アプリケーションソフトウェアは、ＣＤ−ＲＯＭ、ＤＶＤ、ハードドライブ、およびディスケットなどのコンピュータ可読媒体に格納されうる。
【００１６】
本開示によるピアツーピアファイル共有のシステムおよび方法は、ファイルの完全コピーを有する別のピア１２が使用不可になるか、または使用不可状態にある場合、ファイルのダウンロードを試みて別のピア１２を無期限に待たなければならないというピア１２の問題を解決するか、または少なくとも問題を大幅に軽減する。本開示によるシステムおよび方法は、ファイルがＰ２Ｐネットワークシステム１０のピア１２間で共有または転送される方法を変える。
【００１７】
本開示によれば、ピア１２（利用者）は、望ましいファイル内のさまざまなオフセットから選択されたセグメントを要求する（セグメントを選択するメカニズム（たとえば、ファイル内のオフセット、および各セグメントの長さ）は本明細書において以下で詳細に説明される）。セグメントは、各ピア１２にローカルなデータベース１４に保存され、ピア１２（提供者）は直ちに、これらのセグメントを関心のある利用者に提供し始める。セグメントはファイル全体にわたるオフセットから選択されるので、たとえ元の提供者がＰ２Ｐネットワークシステム１０から切断した場合であっても、ファイルの完全（またはほぼ完全な）コピーが残りの利用者間に存在する可能性がはるかに高くなる。利用者は、各利用者が使用可能なセグメントのスーパーセットのコピーを持つまで、ファイルのセグメントを引き続き交換することができる。たとえ各利用者がファイルの完全コピーを有していない場合であっても、ダウンロードの順次的な特性を考慮すれば、従来のＰ２Ｐネットワークシステムで可能となるよりもはるかに多くのファイルの部分を有する可能性が高い。
【００１８】
セグメントは、表記（オフセット、長さ）を使用して例に示される。たとえば、（２５６、５１２）はオフセット２５６で開始してオフセット５１２で終了するセグメントではなく、オフセット２５６で開始して長さが５１２単位のセグメントを示す。最も一般的に使用されるデータ転送の測定単位はバイトであるが、本明細書に説明されるメカニズムは、任意の測定単位に適用されうる（たとえば、ビット、バイト、ワードなど）。
【００１９】
以下の例は、本開示によるシステムおよび方法の動作を説明する。
１．ピアＡがＰ２Ｐネットワークシステム１０に接続し、Ｆｉｌｅ２．ｔｘｔ（１０２４バイト）をＰ２Ｐネットワークシステム１０で使用できるようにする。
２．ピアＢは、ピアＡからファイルをダウンロードし始め、（５１２、５１２）のセグメントを正常に取得する。
３．ピアＣは、ピアＡからファイルをダウンロードし始め、（０、２５６）のセグメントを正常に取得する。
４．ピアＡはＰ２Ｐネットワークシステム１０から切断する（あるいは、Ｆｉｌｅ２．ｔｘｔの提供を中断する）。
５．ピアＢは、ピアＣからファイルをダウンロードし始め、（０、２５６）のセグメントを正常に取得する（ここでピアＢはファイルの２つのセグメント（０、２５６）および（５１２、５１２）を有する）。
６．ピアＣは、ピアＢからファイルをダウンロードし始め、（５１２、５１２）のセグメントを正常に取得する（ここでピアＣはファイルの２つのセグメント（０、２５６）および（５１２、５１２）を有する）。
【００２０】
この時点で、Ｐ２Ｐネットワークシステム１０にファイルの完全なコピーを有する提供者はいないので（セグメント（２５６、２５６）が欠落）、この例は理想的なシナリオを提供しないが、ピアＢおよびピアＣは他の場合に比べてファイルの大きい部分を有し、背景技術のセクションに示されている例における同等のピアと全く同じバイト数を各々ピアＡから転送されているにもかかわらず、各ピアに使用可能なファイルの７５％をもたらす。
【００２１】
本開示によるシステムおよび方法を使用すれば、前述の例によって分かるように、元の提供者がＰ２Ｐネットワークシステム１０から切断された後にピア１２がファイルのセグメントを引き続き交換し、ピア１２がそれぞれデータの異なるセグメントを有するので、Ｆｉｌｅ１．ｔｘｔの全体的な配布は改善されている。さらに重要なことに、任意の提供者がセグメントを欠落した状態でＰ２Ｐネットワークシステム１０に接続した場合（必ずしも完全なファイルでなくてもよい）、すべてのピア１２は欠落したセグメントを交換して、各ピア１２においてファイルの完全コピーを作成することができる。Ｐ２Ｐネットワークシステム１０のすべての使用可能なセグメントのスーパーセットがファイルの完全コピーを含む限り、すべてのピア１２が作業を続行するため、いずれのピア１２もファイル全体を有する必要はない。このことは、すべてのピアがファイルにアクセスするために、ファイルの完全コピーがＰ２Ｐネットワークシステム上のどこかに存在する必要があるという点において、従来のＰ２Ｐネットワークシステムとは異なる。
【００２２】
これは、ほんの（比較的）短期間のみ（各セグメントが少なくとも１つのピアによってダウンロードされるまで）完全なファイルを使用可能にするために、各ピアがダウンロードするファイルのセグメントがインテリジェントに選択され、元の提供者が切断できるようにするか、またはＰ２Ｐネットワークシステム１０に悪影響を及ぼすことなくファイルの提供を停止できるようにする場合に可能である。ピア１２の数が増加すれば、それに応じて、ファイルの完全コピーを含むことが必要とされる提供者の数は減少する。
【００２３】
データセグメントは、オフセットおよび長さを使用して定義されたファイルまたはドキュメントのコンテンツの順次的サブセットである。オフセットは、セグメントの開始するファイル内の位置を示す（たとえば、「０」のオフセットはファイル内の１番目のバイトを参照し、「９９」のオフセットはファイル内の１００番目のバイトを参照する）。長さは、オフセットから開始するセグメント内のデータの量を示す（たとえば、「０」のオフセットおよび「５」の長さは、ファイル内のバイト０、１、２、３、および４を参照する）。前述のように、セグメントは本明細書において、表記（オフセット、長さ）を使用して表される。
【００２４】
図１に示されるように、「純粋な」Ｐ２Ｐネットワークシステムにおいて、システムおよび使用可能なリソースに関する情報を収集する中央データリポジトリまたはサーバーはない。そのようなシステムにおいて、ピアは、要求をネットワークに同報通信して応答を待つことにより通信する必要がある。利用者はそのような同報通信メッセージを使用して、望ましいリソースのＰ２Ｐネットワークシステムに要求を発行し、提供者は、要求されたリソース内のデータの少なくとも一部を提供できるとき、かつそのときに限り応答する。提供者は、同様のメカニズムを使用して使用可能なリソースを通知し、利用者は、リソース内のデータの少なくとも一部を要求するとき、かつそのときに限り応答する。
【００２５】
その他のＰ２Ｐネットワークシステムは、サーバーを使用する（ローカルリソースを追跡してその他のリソースの要求をドメインネームシステムが機能する方法と同様の階層まで転送する中央に位置する「トラッカー」または分散サーバー）。そのようなシステムにおいて、ピアは、Ｐ２Ｐネットワークシステム１０に接続する際に同報通信要求を発行してトラッカーを発見することができる。そのような要求には、トラッカーのみが応答する（その他のピアは要求を完全に無視する）。提供者は、トラッカーを発見すると、使用可能なリソースをトラッカーに通知する。利用者は、リソースの要求をトラッカーに直接発行し、トラッカーは、要求されたリソースを転送することのできる１つ以上の提供者で応答する。
【００２６】
Ｐ２Ｐネットワークシステム１０上の任意のピアがトラッカーの役割を引き受けるように選択することが可能であるが、トラッカー、提供者、および利用者の役割は論理的に別個であると見なされる。
【００２７】
利用者は、多くの方法でセグメントを選択することができるが、そのうちのいくつかが本明細書において説明される。どのような場合でも、利用者が一度に大量のデータをダウンロードしようと試みることを防ぐため、セグメントの最大長は比較的小さい数値に制限することが推奨される。セグメントが小さくなれば、それに応じて、提供者が利用できなくなる前に利用者がセグメント全体を取り出すことができる可能性も高くなる（ただし、以下に次のサブセクションで説明されるように、利用者は部分的セグメントを容易に処理することができる）。
【００２８】
利用者は、完全にランダムなセグメントを選択することができる。利用者は、まだ取り出されていない任意のセグメントをランダムに選択することによって（これはローカルデータベースをスキャンすることにより行うことができる）、これを行う。欠落しているセグメントは、すでに取り出されているセグメント間のバイトの全範囲であると見なされ、利用者がまだセグメントを取り出していない場合にはファイル全体を含むことができる。欠落セグメントが見つけ出されると、利用者はセグメント内からのランダムオフセット、オフセットとセグメントの終点との間のランダム長さを選択する。
【００２９】
利用者は、固定長のランダムなセグメントを選択することができる。利用者は、固定長を選択することにより（これは転送を開始する前、または構成可能プロパティを通じてランダムに決定されうる）、これを行う。次に利用者は、以下の計算を行う。
セグメントの数＝合計長／セグメント長
オフセット＝ランダム（セグメントの数）*セグメント長
【００３０】
もちろん、利用者は、まだ取り出されていないセグメントに対するオフセットが見い出されるまでランダムオフセット選択を繰り返す必要がある。提供者はセグメントの一部のみを自由に転送することができ、利用者はセグメント全体を提供しない提供者を自由に選択できることに留意することは重要である。この場合、固定長のランダムセグメントを選択する利用者は、部分的セグメントを一時的にバッファに入れ、セグメントをローカルデータベースに格納する前に、全セグメントが転送されるまで残りのセグメントの後続の要求を発行する必要がある。
【００３１】
最後に、利用者は、受け入れ可能なセグメントを示すフィルタを使用して、セグメントを要求することができる。フィルタは、まだ利用者に転送されていないセグメントを表すバイト範囲のサブセットを指定すべきであり、通常はセグメントのリスト｛（オフセット、長さ）、（オフセット、長さ）、．．．｝によって表される。提供者は、リスト内の任意のセグメントのサブセグメントを記述する任意のオフセットおよび長さを自由に選択することができ、それを利用者に提供するよう提案する。これについては、以下で詳細に説明される。
【００３２】
セグメントが利用者によって転送するように選択されると、クエリーが同報通信の形式でＰ２Ｐネットワークシステム１０に発行されるか（「純粋な」Ｐ２Ｐネットワークシステムにおいて）、またはトラッカーへの要求が発行される必要がある。同報通信は、セグメントのパラメータ（オフセットおよび長さ、または受け入れ可能なデータセグメントを記述するフィルタ）を含む必要がある。Ｐ２Ｐネットワークシステム１０上のピア１２は、セグメント内のデータの少なくとも一部を提供できるとき、かつそのときに限り応答する。応答は、セグメントのオフセット、および使用可能な長さ（利用者によって要求された長さより小さいかまたはそれと等しい）を含む。
【００３３】
利用者は、最初に応答する提供者を選択することも、または短期間待機して最善の提供者を選択するように選択することもできる。論理的には、最善の提供者は、要求されたセグメント全体を提供できる、最初に応答する提供者である。最初に応答する提供者は、要求を処理するための最多のリソースおよび／または最小のネットワーク待ち時間を備える可能性が高い。提供者のいずれもセグメント全体を提供することができない場合、利用者は、セグメントの多くを提供できる最初の提供者を論理的に選択する。どの提供者も応答しない場合、利用者は、同じセグメントまたは新しく選択されたセグメントに対する新しい要求をサブミットする前に、ある期間待機するように選択することもできる。
【００３４】
利用者が提供者を選択すると、利用者は、オフセットおよび長さを含む望ましいセグメントの提供者に要求を直接送信する。ピア間の接続が確立されると、利用者はセグメントをダウンロードし、それを一時バッファに流し込む。転送が完了すると、利用者はセグメントをローカルデータベースに書き込む。
【００３５】
転送が失敗した場合、利用者は要求を再発行することができる。高い失敗率を持つ提供者は、利用者によって（一時的または恒久的に）ブラックリストに掲載され、ある期間にわたりその提供者からの応答を完全に無視する、または可能であればいつでも単に他の提供者を使用するように、利用者が選択できるようになっている。利用者は、部分的に正常な転送を、より小さいデータセグメントの正常な転送として処理し、部分的セグメントをローカルデータベースに格納して、セグメントの残り（または全く新しいセグメント）に対する新しい要求を発行することができる。
【００３６】
利用者がセグメント（全体または部分）を正常に転送し、（チェックサムまたは他の何らかの検証のメカニズムを介して）随意的にセグメントの保全性を検証すると、セグメントはデータベース１４に格納される。データベース１４の実装については確定していないが、単に、各ファイルに格納されたセグメントを識別するために使用されるフラットファイルのセットおよびマニフェストを含むディレクトリであってもよい。これはまた、より堅固であってもよい（各セグメントを表す行、および各行内にＢＬＯＢとして格納されたバイナリセグメント自体を備えるテーブル含むＯｒａｃｌｅ（商標）データベースなど）。利用者は、セグメントの提供をより容易にするため、順次セグメントが格納されるときにこれらを連結する必要がある。利用者は、（セグメントが取り出される際に）同期的または非同期的に連結を実行するように選択することができる。連結が非同期的に実行される場合、（連結が実行中であることを示すために）セグメントはデータベース内でマーク付けされる必要があり、マーク付けされたセグメント内のデータの要求は、連結が完了するまで遅延される必要がある。そのような遅延された要求は、利用者に別の提供者を選択させる場合もあるが、これは利用者が連結にリソースを浪費している場合に適切である。
【００３７】
少なくともデータの一部がローカルに使用可能な特定のセグメントに関するクエリーを受け取る提供者は、オフセット、および要求されたセグメントの長さまでの（ただしこれを超えない）長さを含むメッセージで応答する必要がある。利用者がデータセグメントの要求で応答した場合、提供者は、利用者との接続を確立して、セグメント内のデータのアップロードを開始する必要がある。提供者は、どのセグメントがどの利用者に転送されたかに関する別個のデータベースを保持するように選択することもできる。特定の利用者への複数の転送が失敗した場合、提供者はその利用者を一時的にブラックリストに掲載し、他のより信頼できるピアによりよく対応できるときに、信頼できないピアへのデータ転送を試みてリソースを無駄にしないようにすることができる。
【００３８】
提供者はまた、利用者が必要とするデータセグメントを記述するフィルタを含むクエリーを受け取ることもできる。提供者は、フィルタによって受け入れられる要求されたリソースから現在使用可能である任意のセグメントの任意の長さでクエリーに自由に応答することができる。提供者は、Ｐ２Ｐネットワークシステム１０で使用可能なセグメントのスーパーセットがファイル全体のコピーを含む可能性を高めるためにあまり頻繁にはアップロードされていないセグメントを選択するため、提供者または他の利用者に送信されたセグメントに関する統計を使用することができるが、これは必須ではない。提供者はまた、ランダムにセグメントを選択することも、または単にセグメントを順次アップロードすることもできる。提供者は、フィルタによって受け入れられる任意のセグメントを全く自由に選択することができる。
【００３９】
標準的なＰ２Ｐファイル転送システムにおいて、リソースから最初のデータがクライアントに正常にダウンロードされたら直ちにリソースの提供を開始することは、利用者の礼儀であると見なされる。この期待は、本開示によるＰ２Ｐネットワークシステム１０にまで及ぶ。多くのそのようなＰ２Ｐネットワークシステムにおいて、リソース全体が利用者に転送された後に一定の時間リソースを引き続き提供することも、礼儀であると見なされる。このことは、リソースの１つ以上の完全コピーがいつでもＰ２Ｐネットワークシステム１０において使用可能なセグメントのスーパーセット内に存在する可能性がより高いため、本開示によるＰ２Ｐネットワークシステム１０においてはさほど重要ではない。
【００４０】
これ以降、ランダムに選択された固定長のセグメントを使用してデータを交換する少数のピア１２を含む流れの例について説明される。この例示のために、すべてのデータは、完全バイトの単位で転送される。セグメントは、表記（オフセット、長さ）を使用して定義される（たとえば、（０、２５６）はオフセット０で始まり、２５６バイトのデータを含むセグメントである）。フィルタは、セグメントのリストとして指定される（たとえば｛（０、２５６）、（５１２、２５６）｝、フィルタによって指定されているセグメント内のデータのサブセットを含む任意のセグメントはフィルタによって受け入れられる）。
１．ピアＡはＰ２Ｐネットワークシステム１０に接続し、１０２４バイトのデータを含むファイルであるＦｉｌｅ１．ｔｘｔの提供を開始する。ピアＡは、Ｆｉｌｅ１．ｔｘｔの送信元ソースである。
２．ピアＢはＰ２Ｐネットワークシステム１０に接続し、Ｆｉｌｅ１．ｔｘｔのセグメント（０、２５６）に対する同報通信クエリーを発行する。
３．ピアＡは、全セグメントを提供できることを示してクエリーに応答する。
４．ピアＢは、セグメント（０、２５６）の要求を直接ピアＡに発行する。ピアＡは、セグメントをピアＢに転送する。ピアＢは、セグメントをデータベース１４に格納する。
５．ピアＣがＰ２Ｐネットワークシステム１０に接続し、Ｆｉｌｅ１．ｔｘｔのセグメント（５１２、２５６）に対する同報通信クエリーを発行する。
６．ピアＢはクエリーを無視する。セグメント（５１２、２５６）は使用可能ではない。ピアＡは、全セグメントを提供できることを示してクエリーに応答する。
７．ピアＣは、セグメント（５１２、２５６）の要求を直接ピアＡに発行する。ピアＡは、セグメントをピアＣに転送する。ピアＣは、セグメントをデータベース１４に格納する。
８．ピアＢは、フィルタ｛（２５６、７６８）｝と一致する任意のセグメントに対するクエリーを同報通信する。
９．ピアＡは、セグメント（２５６、２５６）を提供できることを示してクエリーに応答する。ピアＣは、セグメント（５１２、２５６）を提供できることを示して要求に応答する。
１０．ピアＢは、セグメント（５１２、２５６）の要求を直接ピアＣに発行する。ピアＣは、セグメントをピアＢに転送する。ピアＢは、セグメントをデータベース１４に格納する。
１１．ピアＣは、フィルタ｛（０、５１２）、（７６８、２５６）｝と一致する任意のセグメントに対するクエリーを同報通信する。
１２．ピアＡは、セグメント（７６８、２５６）を提供できることを示してクエリーに応答する。ピアＢは、セグメント（０、２５６）を提供できることを示してクエリーに応答する。
１３．ピアＣは、セグメント（７６８、２５６）の要求を直接ピアＡに発行する。ピアＡは、セグメントをピアＣに転送する。ピアＣは、セグメントをデータベース１４に格納する。ピアＣは、セグメント（５１２、２５６）および（７６８、２５６）の単一のセグメント（５１２、５１２）への連結を開始する。
１４．ピアＢは、フィルタ｛（２５６、２５６）、（７６８、２５６）｝と一致する任意のセグメントに対するクエリーを同報通信する。
１５．ピアＡは、セグメント（２５６、２５６）を提供できることを示してクエリーに応答する。ピアＣは、セグメント（７６８、２５６）を提供できることを示して応答する。
１６．ピアＢは、セグメント（２５６、２５６）の要求を直接ピアＡに発行する。ピアＡは、セグメントをピアＢに転送する。ピアＢは、セグメントをデータベース１４に格納する。ピアＢは、セグメント（０、２５６）、（２５６、２５６）、および（５１２、２５６）の単一のセグメント（０、７６８）への連結を開始する。
１７．ピアＡはＰ２Ｐネットワークシステム１０から切断する。ここで、Ｆｉｌｅ１．ｔｘｔの完全コピーを提供するピア１２はない。
１８．ピアＣは、フィルタ｛（０、５１２）｝と一致する任意のセグメントに対するクエリーを同報通信する。
１９．ピアＢは、セグメント（２５６、２５６）を提供できることを示してクエリーに応答する。
２０．ピアＣは、セグメント（２５６、２５６）の要求を直接ピアＢに発行する。ピアＢは、セグメントをピアＣに転送する。ピアＣは、セグメントをデータベース１４に格納する。ピアＣは、セグメント（２５６、２５６）および（５１２、５１２）の単一のセグメント（２５６、７６８）への連結を開始する。
２１．ピアＢは、セグメント（７６８、２５６）に対するクエリーを同報通信する。
２２．ピアＣは、セグメント（７６８、２５６）を提供できることを示してクエリーに応答する。
２３．ピアＢは、セグメント（７６８、２５６）の要求を直接ピアＣに発行する。ピアＣは、セグメントをピアＢに転送する。ピアＢは、セグメントをデータベース１４に格納する。ピアＢは、セグメント（０、７６８）および（７６８、２５６）の、完全なＦｉｌｅ１．ｔｘｔ（１０２４バイトのデータを含むファイル）への連結を開始する。
２４．ピアＣは、セグメント（０、２５６）に対するクエリーを同報通信する。
２５．ピアＢは、セグメント（０、２５６）を提供できることを示してクエリーに応答する。
２６．ピアＣは、セグメント（０、２５６）の要求を直接ピアＢに発行する。ピアＢは、セグメントをピアＣに転送する。ピアＣは、セグメントをデータベース１４に格納する。ピアＣは、セグメント（０、２５６）および（２５６、７６８）の、完全なＦｉｌｅ１．ｔｘｔ（１０２４バイトのデータを含むファイル）への連結を開始する。
【００４１】
この時点において、ピアＢまたはピアＣのいずれか一方がファイルの完全コピーをダウンロードする前に、ステップ１８においてピアＡがＰ２Ｐネットワークシステム１０から切断したという事実にもかかわらず、ピアＢおよびピアＣはいずれもＦｉｌｅ１．ｔｘｔの完全コピーを有する。この例は、リソースの完全コピーがＰ２Ｐネットワークシステム１０から除去された後にファイル転送が続行し、すべてのピア１２が完全コピーを取得することができるという理想的な状況を示している。図２は、データ転送を説明する。セグメントは最初、セグメントが転送されたピア１２を表すために網掛けされる。
【００４２】
この例は、本開示によるダウンロード可能データセグメントを使用するＰ２Ｐファイル転送のシステムおよび方法の利点を説明する。ピアＡがネットワーク１０から切断すると、ピアＢおよびピアＣは引き続き情報を交換し、断片をまとめてネットワーク１０上で使用可能なセグメントのスーパーセットからのファイルの完全コピーを作成することができる。
【００４３】
従来のＰ２Ｐネットワークシステムにおいて、ピアＡがシステムからＦｉｌｅ１．ｔｘｔを削除すると、残りのピアは、ピアＡまたは別の提供者がリソースの提供を続行するのを（無期限に）待つことを強いられる。一部の従来のＰ２Ｐネットワークシステムにおいて、この待機は数日、数週間に及ぶ可能性もあり、（最悪の場合）リソース全体が２度と使用可能にならないこともある。
【００４４】
現在説明されているシステムおよび方法には、他にも利点がある。前述の例において、ピアＡは、他のすべてのピアが取得する必要のある極めて重要なリソースを取得する最初のピアである。Ｐ２Ｐネットワークシステム内の複数のピアが大容量のソフトウェアパッチを取得する必要があるシナリオを想定されたい。単一のピアが、ファイアウォール経由で接続してインターネットからパッチをダウンロードすることを許可される。パッチはここで、Ｐ２Ｐネットワークシステム上の残りのピアに配布される必要がある。このダウンロードはネットワーク内のピアごとに１回しか発生しない。それはつまり、ピア間の今後の配布は最小限となり、このため利用者間でパッチを配布できる従来のＰ２Ｐシステムの能力を活用することは最低限に抑えられるということである。
【００４５】
そのような従来のＰ２Ｐネットワークシステムにおいて、データ転送はデータの第１バイトから開始し、ファイルの終わりまで順次進行する。ごく少数の提供者が完全なファイルにアクセスすることができ、大多数の利用者すべてがほぼ同じ速度でほとんど同時に開始してファイルをダウンロードしている場合、提供者に膨大なストレスをもたらす結果になる（印刷装置の状態の監視または診断の実行など、ピアが厳密にはファイル処理に関連しない作業を実行するためにリソースを使用することが予期される場合、潜在的に破滅的なシナリオ）。利用者がすべて、同時間にファイルのほぼ同じ部分をダウンロードしたということはつまり、利用者間の共有はほとんど発生しえない、またはほとんど発生しないということである。
【００４６】
しかし、本開示によるシステムおよび方法において、利用者はそれぞれファイルの異なる部分をダウンロードし、それぞれのピアとの別個のセグメントの交換を直ちに開始して、元のコンテンツ提供者のストレスを取り除くことができる。
【００４７】
図３は、前述の流れの例と類似した単一の利用者のイベントの流れを概説する。図３によって示される流れにおいて、利用者は、接続し、単一のファイル（または以前開始されたファイルの残り）をダウンロードし、次いでＰ２Ｐネットワークシステム１０から切断する。ステップ３００において、利用者はＰ２Ｐネットワークシステム１０に接続し、ステップ３０２においてダウンロードするセグメントを選択する。ステップ３０４において、利用者は、選択したセグメントを要求してＰ２Ｐネットワークシステム１０内の他のピアにクエリーを同報通信する。
【００４８】
ステップ３０６において、提供者がクエリーに応答するかどうかが判別される。応答しない場合、利用者はステップ３０８において短時間待機してから、ステップ３０２において、同じセグメントまたはダウンロードする別のセグメントを選択する。応答する場合、利用者は、クエリーに応答した少なくとも１つの提供者に要求を送信する。ステップ３１２において、利用者は提供者からの着信接続を受け入れ、ステップ３１４において、利用者はセグメントをバッファにダウンロードする。ダウンロードされたセグメントは次に、ステップ３１６において利用者によってデータベース１４に保存される。
【００４９】
ステップ３１８において、ダウンロードされたセグメントに隣接するセグメントがデータベース１４内に存在するかどうかが判別される。存在しない場合、ステップ３２０において、ファイルが利用者に完全に転送またはダウンロードされたかどうかが判別される。応答する場合、利用者は、ステップ３２２において、Ｐ２Ｐネットワークシステムから切断する。ステップ３１８においてダウンロードされたセグメントに隣接するセグメントがあると判別された場合、ファイルが利用者に完全に転送されたかどうかがステップ３２０において判別される前に、利用者はステップ３２４においてセグメントを連結する。ステップ３２０において、ファイルが利用者に完全に転送されていないことが判別された場合、プロセスは、ファイルの別のセグメントが転送またはダウンロードされるように利用者が選択するステップ３０２に戻る。
【００５０】
上記で開示されているさまざまな特徴および機能、あるいはそれらの代替は、他の多くのさまざまなシステムまたはアプリケーションに望ましく組み合わされうることが理解されよう。さまざまな現在予測または予期されない代替、変形、変異、または改善は、付属の特許請求の範囲によって網羅されることも意図され、当業者によって引き続き行われうる。
【図面の簡単な説明】
【００５１】
【図１】本開示によるＰ２Ｐネットワークシステムを示すブロック図である。
【図２】本開示による、ピアがデータを交換する模範的な流れを示す図である。
【図３】本開示によるＰ２Ｐネットワークシステムのファイル共有方法を示す流れ図である。
【符号の説明】
【００５２】
１０  ネットワーク、１２  ピア、１４  データベース、１８，３００，３０２，３０４，３０６，３０８，３１０，３１２，３１４，３１６，３１８，３２０，３２２，３２４  ステップ。
【図１】
2007280388.tif 000003
【図２】
2007280388.tif 000004
【図３】
2007280388.tif 000005