(57)【要約】  ファイルの分散キャッシングおよびダウンロード。１つまたは複数のネットワークコンピュータの中から、候補ピアサーバのリストを備えたピアリストを構築することを含む方法が説明される。このピアリストは、予め定められた数以上の候補ピアサーバは含まない。ファイルまたはファイルの一部分に関して、ピアリスト中の候補ピアサーバにクエリを行う。ピアリスト中のピアサーバから、ダウンロードのために利用可能なそのファイルまたはファイルの一部分をそのピアサーバが有していることを示すメッセージを受信する。コンピュータシステムは、そのピアサーバから、そのファイルまたはファイルの一部分をダウンロードする。
2009506455.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数のネットワークコンピュータを含むコンピュータネットワーク内のコンピュータシステムにおいて、ファイルをキャッシュして共有する方法であって、
前記１つまたは複数のネットワークコンピュータの中から選択された候補ピアサーバのリストを含むピアリストであって、予め定められた数以上の候補ピアサーバを含まないピアリストを構築する動作（２０２）と、
ファイル（１１６）またはファイルの一部分に関して、前記ピアリスト中の候補ピアサーバにクエリを行う動作（２０６）と、
前記ピアリスト中のピアサーバから、前記ピアサーバがダウンロードのために利用可能な前記ファイル（１１６）またはファイルの一部分を有しているというメッセージを受信する動作（２０８）と、
前記ピアサーバから、前記ファイル（１１６）またはファイルの一部分をダウンロードする動作（２１０）と
を備えることを特徴とする方法。
【請求項２】
前記ピアリストを構築する動作（２０２）は、
依頼要求を送信する動作と、
候補ピア（１０２〜１１０）から応答を受信する動作と
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記依頼要求の送信には、望ましい数のピアの指示が含まれ、
前記応答を受信する動作は、ランダムな短時間間隔で待機し、別の候補ピア（１０２〜１１０）からのマルチキャスト応答をリスンし、かつ前記望ましい数のピアが既に応答していた場合は応答をしない候補ピア（１０２〜１１０）から応答を受信する
ことを特徴とする請求項０に記載の方法。
【請求項４】
前記ランダムな短時間間隔で待機する候補ピア（１０２〜１１０）は、対数ランダム遅延を使用して、応答まで待機する時間量を判定することを特徴とする請求項０に記載の方法。
【請求項５】
前記送信する動作および前記受信する動作は、同一サブネット上のコンピュータを用いて実行されることを特徴とする請求項０に記載の方法。
【請求項６】
前記依頼要求を送信することにより、第２のピアリスト（１２０）を構築する動作と、
第２のサブネット上のコンピュータから応答を受信する動作と
をさらに備えることを特徴とする請求項０に記載の方法。
【請求項７】
前記ピアリストを構築する動作（２０２）は、
候補ピア（１０２〜１１０）から、マルチキャストパケットとともに、セルフアナウンスメントを受信する動作であって、前記セルフアナウンスメントは、前記ネットワーク上のコンピュータに提供することができるファイルを前記候補ピア（１０２〜１１０）が有しているという指示を含む、セルフアナウンスメントを受信する動作と、
前記候補ピア（１０２〜１１０）を前記ピアリストに追加する動作と
を含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記ピアリスト中のエントリが期限切れとなるか、または利用不可能になると、前記ピアリストを構築する動作を繰り返す動作
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項９】
前記依頼要求の送信には、信頼できるグループが含まれることを特徴とする請求項０に記載の方法。
【請求項１０】
前記ピアリストを構築する動作（２０２）は、前記コンピュータシステムが新たなサブネットに移動したことに応答して実行されることを特徴とする請求項１に記載の方法。
【請求項１１】
前記ファイルまたはファイルの一部分が破損していることを判定する動作と、
前記ファイルまたはファイルの一部分が破損していることの前記判定に応答して、中央サーバ（１１４）から前記ファイルまたはファイルの一部分をダウンロードする動作と
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１２】
前記ファイルまたはファイルの一部分が破損していることを判定する前記動作は、
ハッシュ値を参照する動作
を含むことを特徴とする請求項０に記載の方法。
【請求項１３】
前記ファイルまたはファイルの一部分が、前記ピアリスト中のいずれのコンピュータからも利用不可能であることを判定する動作と、
前記ファイルまたはファイルの一部分が、前記ピアリスト中のいずれのコンピュータからも利用不可能であることの前記判定に応答して、中央サーバ（１１４）から前記ファイルまたはファイルの一部分をダウンロードする動作
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１４】
ファイルまたはファイルの一部分に関して、前記ピアリスト中のコンピュータにクエリを行う（２０６）前に、前記ピアリスト中のコンピュータを認証する動作（２０４）
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１５】
請求項１に記載の動作を実行するためのコンピュータ実行可能命令を有するコンピュータ読み取り可能な媒体。
【請求項１６】
１つまたは複数のネットワークコンピュータを含むコンピュータネットワーク内のコンピュータシステムにおいて、ファイルをキャッシュして共有する方法であって、
前記コンピュータシステムがピアとして利用可能であるというメッセージを送信する動作（３０２）と、
前記コンピュータシステムがファイルまたはファイルの一部分を有しているか否かを把握するための要求を受信する動作（３０４）と、
ダイナミックオプトイン／オプトアウトルールに基づいて、前記コンピュータシステムが前記ファイルまたはファイルの一部分を有しているというメッセージを送信する動作（３０６）と、
前記ファイルをダウンロードする要求を受信する動作（３０８）と、
要求元システムに前記ファイルを送信する動作（３１０）と
を備えることを特徴とする方法。
【請求項１７】
前記ダイナミックオプトイン／オプトアウトルールは、前記コンピュータシステムのリソースが使用されている量にしたがって、前記コンピュータシステムに、前記ファイル（１１６）またはファイルの一部分を有しているというメッセージを送信させることを特徴とする請求項１６に記載の方法。
【請求項１８】
前記コンピュータシステムはポータブルコンピュータであり、
前記ダイナミックオプトイン／オプトアウトルールは、前記コンピュータシステムにおける残余バッテリ寿命の量にしたがって、前記コンピュータシステムに、前記ファイル（１１６）またはファイルの一部分を有しているというメッセージを送信させることを特徴とする請求項１６に記載の方法。
【請求項１９】
前記ダイナミックオプトイン／オプトアウトルールは、前記コンピュータシステムが現在ファイルを送信している別のコンピュータシステムの数にしたがって、前記コンピュータシステムに、前記ファイル（１１６）またはファイルの一部分を有しているというメッセージを送信させることを特徴とする請求項１６に記載の方法。
【請求項２０】
１つまたは複数のネットワークコンピュータを含むコンピュータネットワーク内のコンピュータシステムにおいて、ファイルをキャッシュして共有する方法であって、
候補ピアを発見するために、サブネット上のコンピュータシステムにブロードキャスト信号を送信する動作（４０２）と、
前記サブネット上のコンピュータシステムのうちの１つから、ユニキャスト信号を受信する動作（４０４）と、
前記サブネット上のコンピュータシステムのうちの前記１つを、予め定められた数以上のピアを含まないピアリストに追加する動作（４０６）と、
前記コンピュータシステムのうちの前記１つがダウンロードのために利用可能な前記ファイルまたはファイルの一部分を有しているか否かを把握するために、前記サブネット上のコンピュータシステムのうちの前記１つにユニキャスト信号を送信する動作（４０８）と、
前記サブネット上のコンピュータシステムのうちの前記１つから、前記サブネット上の前記コンピュータシステムのうちの前記１つがダウンロードのために利用可能な前記ファイルまたはファイルの一部分を有していることを示すユニキャスト信号を受信する動作（４１０）と、
前記サブネット上のコンピュータシステムのうちの前記１つから、前記ファイルまたはファイルの一部分をダウンロードする動作（４１２）と
を備えることを特徴とする方法。
【発明の詳細な説明】
【背景技術】
【０００１】
ネットワークコンピューティングにより、コンピュータは、ソフトウェアおよびファイルコンテンツをそのコンピュータに対してインストールし、かつ／または記憶するために、サーバにそれらソフトウェアおよびファイルコンテンツを要求して、受信することができる。ファイルコンテンツとして、例えば、テキストファイル、ビデオファイル、データファイル、イメージファイルなどを挙げることができる。システムソフトウェアの更新、アプリケーションソフトウェアの更新、およびデータファイルの更新など、複数の目的のために、ソフトウェアを要求してダウンロードすることができる。例えば、オペレーティングシステムを更新するために、セキュリティパッチをダウンロードして、コンピュータシステムに対する攻撃の防止または影響の軽減を行うことができる。加えて、新たなアプリケーションをコンピュータにインストールするために、ソフトウェアをダウンロードすることができる。１つの例示的なシステムにおいて、コンピュータおよびコンピュータユーザが別のタスクを実行している間にソフトウェアをダウンロードすることができるよう、バックグラウンドでそのソフトウェアをダウンロードすることができる。この機能を有する１つの例示的なサービスは、バックグラウンドインテリジェント転送サービス（ＢＩＴＳ：Background Intelligent Transfer Service）である。
【発明の開示】
【発明が解決しようとする課題】
【０００２】
ソフトウェアが公開されサーバからダウンロードにより利用可能な場合、ネットワーク上の多数のコンピュータが、同時に、または極めて短時間の間に、そのソフトウェアを取得しようとすることがよくある。例えば、そのソフトウェアがセキュリティパッチである場合、そのソフトウェアをできるだけ多数のコンピュータにできるだけ短い時間で配布して、コンピュータまたはネットワークに対する悪意のある攻撃を防止することが望ましい。そのソフトウェアが、企業内に広く分散するシステム用の新たなアプリケーションである場合、そのソフトウェアシステムを短期間で広く展開することが望ましい場合がある。そのソフトウェアのリリースが強く待ち望まれている場合、非常に多数のユーザが、どうにかしてそのソフトウェアを最初に使用できるよう、そのソフトウェアをダウンロードしようと試みる場合がある。広範囲にソフトウェアを配布するには、大量のサーバおよびネットワーク容量が必要になる。このような広範囲におよぶダウンロードは、多数の支店を本社の企業ハブ（enterprise hub）に接続するネットワーク環境において、特に面倒な場合がある。この例において、ソフトウェアが企業ハブから配布される場合、企業ハブに存在するサーバが支店に存在するコンピュータの多くまたは全部に対してソフトウェアを提供するための十分な容量を有している場合でさえ、企業ハブと支店との間のネットワーク接続は、特定の時間に更新できるコンピュータの数を制限する場合がある。
【０００３】
広範囲におよぶダウンロードの作業負荷を分散するのに使用されてきたいくつかの方法がある。例えば、企業環境において新たなソフトウェアを配布することは、所与の時間にネットワーク上の限られた数のコンピュータに配布するだけで達成することができる。代替として、ネットワーク内にキャッシングプロキシ（caching proxy）を配置して、ネットワーク上のコンピュータのサブセットに対してソフトウェアを配布することができる。これらの解決策はいずれも、実行するのに慎重な計画が必要である。加えて、キャッシングプロキシを使用する場合には、さらなるコンピュータハードウェアをネットワークに追加するので、ネットワークのコストが増加する。
【０００４】
この背景において、様々な問題を確認したが、特許請求する主題事項は、必ずしも、確認した問題のいずれか、またはすべてに対処するものではない。この背景は単に、本明細書で説明する諸実施形態を実装する１つの例示的な環境に対する背景を提供するのに役立つものである。
【課題を解決するための手段】
【０００５】
本明細書で説明する一実施形態は、ファイルをキャッシュして共有する方法を含む。この方法は、例えば、１つまたは複数のネットワークコンピュータを含むコンピュータネットワーク内のコンピュータシステムにおいて実行することができる。この方法は、１つまたは複数のネットワークコンピュータの中から候補ピアサーバ（potential peer server）のリストを含むピアリスト（peer list）を構築することを含む。このピアリストは、予め定められた数以上の候補ピアサーバは含まない。ファイルまたはファイルの一部分に関して、ピアリスト中の候補ピアサーバにクエリが行われる。ピアリスト中のピアサーバから、ダウンロードのために利用可能なそのファイルまたはファイルの一部分をそのピアサーバが有していることを示すメッセージが受信される。このコンピュータシステムは、そのピアサーバから、そのファイルまたはファイルの一部分をダウンロードする。
【０００６】
本明細書で説明する別の実施形態は、ファイルをキャッシュして共有する方法を含む。この方法は、例えば、１つまたは複数のネットワークコンピュータを含むコンピュータネットワーク内のコンピュータシステムにおいて実行することができる。この方法は、このコンピュータシステムがピアとして利用可能であるというメッセージを送信することを含む。このコンピュータシステムは、当該コンピュータシステムがファイルまたはファイルの一部分を有しているか否かを把握する（discover）ための要求を受信する。このコンピュータシステムは、当該コンピュータシステムがそのファイルまたはファイルの一部分を有しているというメッセージを送信する。このコンピュータシステムがそのファイルまたはファイルの一部分を有しているというメッセージの送信は、ダイナミックオプトイン／オプトアウトルール（dynamic opt-in/opt-out rule）に基づいて実行される。このコンピュータシステムは、そのファイルをダウンロードする要求を受信する。このコンピュータシステムは、要求元システムにそのファイルを送信する。
【０００７】
本明細書で説明するさらに別の実施形態は、ファイルをキャッシュして共有する方法を含む。この方法は、例えば、１つまたは複数のネットワークコンピュータを含むコンピュータネットワーク内のコンピュータシステムにおいて実行することができる。このコンピュータシステムは、サブネット上のコンピュータシステムにブロードキャスト信号を送信して、候補ピアを発見する。このコンピュータシステムは、サブネット上におけるコンピュータシステムのうちの１つから、ユニキャスト信号またはマルチキャスト信号を受信する。このコンピュータシステムは、そのサブネット上におけるコンピュータシステムのうちの１つをピアリストに追加する。このピアリストは、予め定められた数以上のピアは含まない。このコンピュータシステムは、そのサブネット上におけるコンピュータシステムのうちの１つにユニキャスト信号を送信して、ダウンロードのために利用可能なファイルまたはファイルの一部分をその１つのコンピュータシステムが有しているか否かを把握する。このコンピュータシステムは、そのサブネット上におけるコンピュータシステムのうちの１つから、ダウンロードのために利用可能なそのファイルまたはファイルの一部分をその１つのコンピュータシステムが有していることを示すユニキャスト信号を受信する。このコンピュータシステムは、そのサブネット上におけるコンピュータシステムのうちの１つから、そのファイルまたはファイルの一部分をダウンロードする。
【０００８】
本要約は、以下の詳細な説明においてさらに詳述する概念を選択的に簡略した形式で紹介するために提供するものである。本要約は、特許請求する主題事項のキーとなる特徴または本質的な特徴を特定するよう意図するものでも、特許請求する主題の範囲を決定する際の補助として使用するよう意図するものでもない。
【発明を実施するための最良の形態】
【０００９】
上述した特徴および別の特徴を理解してもらうために、添付図面に示した具体的な諸実施形態を参照することにより、さらに詳細な説明を提供する。これらの図面は、代表的な実施形態を示しているに過ぎず、したがって、範囲を限定するものとしてみなすべきでないことを理解されたい。添付図面を使用しながら、さらに具体的かつ詳細に諸実施形態を記述し説明する。
【００１０】
本明細書で説明する一実施形態は、中央ファイルサーバから離れてファイル配布が可能な改良型ファイル配布システムを含む。この例においては、ファイル配布およびキャッシングをネットワークの端に移動させる。これは、少数の中央ネットワーク接続にネットワークトラフィックが集中してしまわないよう、中央ファイルサーバ上の負荷を軽減すること、およびネットワークトラフィックをネットワーク全体に分散することに役立つ。具体的には、一実施形態において、コンピュータは、ピアツーピアシステムを用いて、ファイルをキャッシュし共有する。コンピュータシステムはまず、１つまたは複数のネットワークコンピュータの中から、候補ピアサーバを含むピアリストを構築する。この実施形態において、ピアリストは、予め定められた数のピアに限定される。次いで、システムは、ピアリスト中のピアを認証することができる。次に、システムは、ピアリスト中のピアにクエリを行って、コンピュータシステムが必要とするファイルまたはファイルの一部分を含むピアを把握することができる。ピアリスト中のピアのうちの１つが、利用可能なファイルまたはファイルの一部分を有していることを示す応答をした場合、そのように示しているピアから、そのファイルまたはファイルの一部分をダウンロードすることができる。ファイルまたはファイルの一部分を有していることを示す応答をするピアが存在しない場合、ファイルを要求するシステムは、中央ファイルサーバからファイルをダウンロードすることができる。次に、システムは、別のコンピュータシステムに対して、ダウンロードのために利用可能なそのファイルまたはファイルの一部分を自身が有していることを通知することができる。ダウンロードのために利用可能なファイルまたはファイルの一部分を有していることの通知に応答して、別のコンピュータシステムは、以下で詳細に説明するように、候補ピアサーバのリストを含む自身のピアリストにそのコンピュータシステムを追加することができる。別のピアシステムは、ファイルまたはファイルの一部分を含むピアを把握するためのクエリに応答して、クエリを行っているコンピュータシステムを自身のピアリストに追加してもよいことに留意されたい。
【００１１】
例示的な一実施形態において、コンピュータシステムは、中央企業サーバまたはハブにより相互接続されていないコンピュータ群からピアグループを形成することができる。例えば、ピアグループは、企業ネットワークの支店において、共通のハブまたはルータを介したコンピュータにて形成することができ、ケーブルモデム接続などのコストのかかる接続をまたがるピア接続を取り除くことができる。このように、ファイルをキャッシュしてダウンロードできるピアグループに対してファイルを配布するために必要となるネットワークトラフィックおよびサーバリソースはより少量ですむ。このように、ソフトウェアおよび更新の配布に必要な処理量およびネットワーク容量は、ネットワーク内の中央位置からネットワークの端に移動させ、コンピューティングおよびネットワーク要件をより一層均等に分散させることができる。
【００１２】
次に図１を参照すると、例示的なトポロジ１００が示されている。トポロジ１００は、多数のコンピュータシステム１０２、１０４、１０６、１０８、１１０を含む。コンピュータシステム１０２〜１１０は、多数の相互接続手段のうち任意の１つを介して相互接続される。例えば、コンピュータシステム１０２〜１１０は、ＩＥＥＥ８０２．３に準拠するイーサネット（登録商標）ネットワーク、ＩＥＥＥ８０２．１１に準拠する無線イーサネット（登録商標）接続、ブルートゥース（登録商標）無線ネットワーク、ダイアルアップネットワーク接続、ケーブルモデム接続などのネットワーク接続を介して相互接続することができる。図示した実施形態において、コンピュータシステム１０２〜１１０は、ピアグループ１１２を形成するために、相互接続される。この例において、ピアグループ１１２は、ラップトップコンピュータシステム１０６などのコンピュータシステムに対する、候補ピアサーバの１つのグループである。一実施形態において、各コンピュータシステムは、候補ピアサーバのリストを含むピアリストを保持する。コンピュータシステムは、この候補ピアサーバからファイルをダウンロードすることができる。ピアグループの形成については、以下でさらに詳細に説明する。
【００１３】
図１は、ピアグループ１１２が中央ファイルサーバ１１４に接続されていることをさらに示している。中央ファイルサーバ１１４に対する接続は、単一の接続として示されているが、代替実施形態においては、様々な接続を使用して、コンピュータ１０２〜１１０の各々が中央ファイルサーバ１１４にアクセスできるようにしてもよいし、別の構成を用いてもよい。例えば、ピアグループは、企業の支店内で接続することができ、この支店は、企業ハブに存在する中央ファイルサーバ１１４に接続することができる。多様な別の相互接続も実装することができる。
【００１４】
図示した例において、ファイルサーバは、ファイル１１６またはファイルの一部分を記憶することができる。ファイル１１６は例えば、ソフトウェアの更新、オペレーティングシステムに関するセキュリティパッチ、アプリケーション、データファイル、または別のソフトウェアとすることができる。ファイル１１６は、コンピュータシステム１０８などのコンピュータのうちの１つによりダウンロードすることもできるし、コンピュータシステム１０８などのコンピュータのうちの１つに対してプッシュする（push）こともできる。コンピュータシステム１０８は、キャッシュしたファイル１１６のコピーを有する候補ピアサーバとして動作することができる。ここで、別のコンピュータシステム１０２、１０４、１０６、１１０は、候補ピアサーバシステム１０８にファイル１１６を要求することができる。このように、いくつかの実施形態では、ファイルサーバとピアグループ１１２との間の接続１１８を介したネットワークトラフィックを軽減させることができる。さらに、中央ファイルサーバ１１４による処理を軽減させることができる。
【００１５】
前述したように、図１は、コンピュータシステムのうちの１つが、ラップトップコンピュータシステム１０６であり、ピアグループ１１２が、ラップトップコンピュータシステム１０６により保持される候補ピアサーバリスト内に入っていることを示している。ラップトップコンピュータや、ハンドヘルドデバイス、ＰＤＡ、携帯電話などを含む別のポータブルコンピュータは本来携帯型なので、物理的にも論理的にもネットワークの異なる部分に配置される可能性がある。例えば、ラップトップコンピュータ１０６は、ピアグループ１１２からファイルをダウンロードするのに、ラップトップコンピュータ１０６にとって論理的または物理的には現実的でない場所に移動されることがある。例えば、ラップトップコンピュータ１０６は、ピアグループ１１２とは論理的に異なるサブネット内に移動されることがある。あるいは、ラップトップコンピュータ１０６は、ピアグループ１１２の他のメンバと通信するにはラップトップコンピュータ１０６にとって過度の量のネットワークトラフィックを必要とする場所に物理的に移動されることがある。図１に示した実施形態において、ラップトップコンピュータ１０６は、図１に示したピアグループ１２０などの別のピアグループを形成する。ラップトップ１０６は、第１のピアグループ１１２および第２のピアグループ１２０に関する情報を保持することができるので、第１のピアグループ１１２または第２のピアグループ１２０、もしくはラップトップ１０６が有しているピアリストの任意の別のピアグループに接続されているときに、ファイルを受信することができる。
【００１６】
ピアグループ１１２中のコンピュータシステムがファイル１１６を受信するとき、そのコンピュータシステムは、そのファイルが正しいファイルであり破損していないことを判定する必要がある。ファイルが正しいファイルであり破損していないことの判定は、例えば、ファイル名、ファイルサイズ、ハッシュ値などを比較することにより、実行することができる。例えば、コンピュータシステムは、そのファイルに関するファイル名、ファイルサイズ、およびファイルのハッシュ値を含む情報を予め受信することができる。ハッシュ値は、ファイル内のデータを用いて、何らかの別のデータが同一のハッシュ値を生じさせることが極めて稀であるように値を作成するよう計算された値である。コンピュータシステムは、ファイル名、ファイルサイズ、および／またはハッシュ値を比較することにより、正しいファイルが受信されたかどうかを判定することができる。加えて、ハッシュ値を使用して、ファイルが破損していないことや、悪意的に改ざんされていないことを確実にすることができる。
【００１７】
コンピュータシステムにより、正しいファイルが利用不可能であること、ファイルが破損していること、またはファイルが悪意的に改ざんされていることが検出された場合、そのコンピュータシステムは、ファイル１１６を直接中央ファイルサーバ１１４に要求することができる。次いで、ファイル１１６を直接中央ファイルサーバ１１４に要求するコンピュータシステムは、自身がファイル１１６を含む候補記憶システムであるものとして、通知することができる。
【００１８】
一実施形態において、ピアグループは、前述したように、各コンピュータシステムごとに保持されており、各コンピュータシステムに固有のものであることに留意されたい。したがって、ピアグループの管理は、中央で制御することなく、システムを用いる中央位置から移管される。これにより、１つの場所における不具合がネットワーク全体に及ぶことを生じなくさせる。別の言い方をすると、１つのピアリスト、またはピアリストを有する１つのシステムが損失しても、単一の中央サーバを用いてピアグループを管理する場合に生じるような、ファイル配布およびキャッシングのシステム全体の無効化は生じないことになる。
【００１９】
次に図２を参照すると、ファイルをキャッシュして共有する方法２００が示されている。この方法は、１つまたは複数のネットワークコンピュータを含むコンピュータネットワーク上に存在するコンピュータシステムにおいて実行することができる。
【００２０】
図２は、ピアリストを構築する動作（動作２０２）を示している。このピアリストは、図１に示したコンピュータシステム１０２〜１１０などの、ネットワークコンピュータのグループの中から選択された候補ピアサーバのリストを含む。このピアリストは、予め定められた数以上の候補ピアサーバを含まないようにすることができる。例えば、このピアリストは、ピアリスト中に１００以上の候補ピアサーバが含まれないように設計することができる。さらに、ピアグループ中のコンピュータシステム１０２〜１１０は、ネットワークの観点から近傍にあることも望ましい。例えば、ピアグループ１１２中のコンピュータシステム１０２〜１１０は、企業ネットワークの同一支店に位置することが望ましい。代替実施形態においては、ピアグループ１１２中のコンピュータシステム１０２〜１１０は、共通のハブ、ルータ、またはスイッチを介して配置させることが望ましい。いくつかの代替実施形態では、いずれのピアも、ケーブルモデムや高トラフィック接続などのコストのかかる接続を介して相互接続されないことが望ましい。別の論理的に近傍の構成を実装することもできる。例えば、一実施形態において、コンピュータシステムは、タイミング方法（timing method）を用いて、コンピュータの近接性を判定することができる。ピアリストを構築する（動作２０２）ために、単独で、または組み合せて使用することができる方法が複数存在する。これらの方法の例について以下で説明する。
【００２１】
ピアリストを構築する（動作２０２）１つの方法は、コンピュータに依頼要求（solicitation request）を送信すること、およびコンピュータから応答を受信することを含む。応答する候補ピアの数を制限するために、依頼要求は、例えば、サブネットブロードキャストまたはサブネットマルチキャストとすることができ、単一のサブネットに関する応答を取得することができる。しかしながら、たとえ単一のサブネット上のコンピュータのみが応答するとしても、応答の数は膨大である可能性がある。したがって、応答の数をさらに制限するために、依頼要求を送信するコンピュータシステムは、依頼要求内に望ましいピア数の指示を含めることができる。候補ピアは、ランダムな短時間間隔後に、マルチキャスト応答を用いて応答し、かつ別のコンピュータからのマルチキャスト応答をリスンする（listen）ように構成することができる。候補ピアは、別の候補ピアからの応答が、既に指示された望ましいピア数に達していることを検出した場合は、応答をしない。すなわち、望ましい数のピアが既に応答している場合、候補ピアは応答をしない。
【００２２】
ランダムな短時間間隔を作成するには、いくつかの方法を用いることができる。例えば、最も簡単な実施形態においては、各候補ピアが、均一なランダム分布を用いて、依頼に対して応答をするまでの待ち時間の長さを判定することができる。代替の方法は、少数の候補ピアが最初に応答し、かつ遅延が長くなるにつれて多数の候補ピアが応答をする非線型分布を用いることを含む。例えば、非線型遅延を統合する（integrate）１つの方法には、０と１の間で乱数を発生させることを含めることができる。このとき、遅延は、以下の式により定義することができる。    
ＤＥＬＡＹ（遅延）＝ＭＡＸ＿ＤＥＬＡＹ（最大遅延）＊Ｌｏｇ（Ｃ＊Ｘ＋１）／Ｌｏｇ（Ｃ＋１）
ここで、ＤＥＬＡＹ（遅延）は応答するまでの遅延、ＭＡＸ＿ＤＥＬＡＹ（最大遅延）は応答を受信するために与えられる最大時間量、Ｘは乱数、Ｃは２５６などの任意の数である。別の非線型ランダム遅延を使用することもできる。
【００２３】
別の例において、システムは、遅延なく応答し、コンピュータシステムは、ピアリストを満たすのに十分なピアを有するまで、ピアをピアリストに追加することができる。この例において、最も迅速に応答するピアは、依頼要求を送信するコンピュータシステムに論理的に最も近いピアであろう。この例において、コンピュータシステムは、候補ピアが依頼に対してどれだけ迅速に応答するかを認識するために、その時間を計測することができる。最も迅速に応答する候補ピアのみがピアリストに追加されることになる。したがって、コンピュータシステムは、論理的に最も近いピアか、または最も迅速に応答することができるピアを受け入れることにより、ピアグループに最適なピアを選択することができる。
【００２４】
依頼要求には、信頼できるグループ（trust group）などのグループを含めることもできる。候補ピアは、別の信頼できるグループに関連する要求を無視する。依頼要求において信頼できるグループが使用される場合であっても、以下で詳細に説明するように、ピアをなお認証する必要がある。信頼できるグループは、サブネット内の重複する依頼が互いに干渉しないように、同一サブネット内の別の信頼できるグループからの応答を取り除く方法として役立つ。一実施形態において、依頼要求には、コンピュータシステムが望むコンテンツのＩＤを含めることができる。以下で説明するように、候補ピアは、ＩＤを含むコンテンツを有しており、かつ別のオプトイン制約を満たす場合に、応答をする。単一のコンテンツ要求が候補ホスト全てに到達するので、これにより、コンテンツ検索（content lookup）がより効率的になる。この実施形態では、認証されていないホストが、要求されているコンテンツを閲覧することができるので、プライバシは低いものとなり得る。ＵＲＬの一方向ハッシュまたはコンテンツハッシュの要求を用いて、この実施形態におけるプライバシを強化することができる。
【００２５】
別の例において、ピアリストの構築には、コンピュータシステムが、候補ピアから、マルチキャストパケットとともにセルフアナウンスメント（self-announcement）を受信することを含めることができる。このセルフアナウンスメントは、候補ピアが、ネットワーク上のコンピュータに提供できるファイルまたはファイルの一部分を有しているという指示を含む。このようなアナウンスメントを受信すると、コンピュータシステムは、候補ピアを自身のピアリストに追加することができる。代替実施形態において、セルフアナウンスメントは、定期的に作成することができる。一例において、このアナウンスメントは、１時間につき１回作成されてもよいし、１日の間に数回作成されてもよい。
【００２６】
コンピュータシステムは、共有すべきファイルを有し、かつ自身のハードウェア特性、現在の処理負荷、または他の特性にしたがって、自身がピアサーバとして動作できる場合には、そのコンピュータシステムは、セルフアナウンスメントを行うことができる。アナウンスをするコンピュータシステムは、中央ファイルサーバ１１４から、またはピアグループ１１２中の別のピアから、ファイル１１６を受信する。コンピュータシステムは、自身がセルフアナウンスメントを行わない所定のファイルを有することができる。これにより、コンピュータシステムは、所定のファイルを保護することができる。
【００２７】
代替実施形態において、候補ピアは、マルチキャストを介してなどにより、ネットワークに追加された場合、アナウンスすることができる。次いで、コンピュータは、ピアリスト中のピアにとって必要であれば、この新たなコンピュータを自身のピアリストに追加することができる。同様に、コンピュータシステムは、別のタイプのマルチキャストアナウンスメントおよび応答を受信した場合、ピアリストにピアを追加することができる。例えば、上述した実施形態におけるランダムな時間遅延応答に関連する応答をリスンするコンピュータシステムは、依頼元に応答する任意のコンピュータシステムを自身のピアリストに追加することができる。同様に、ほとんどの任意の応答またはアナウンスメントを使用して、どのコンピュータが、ピアリストのための候補ピアとして利用可能かどうかを判定することができる。
【００２８】
ピアリスト中のコンピュータは、妥当性検査を通過したものか、または通過していないものかのいずれかである。妥当性検査を通過したコンピュータシステムは、以下に示すような認証に通過したものである。ピアリスト中のピアは、ピアリストに追加された直後に妥当性検査される必要はなく、むしろ、以下で詳述するように、ファイルまたはファイルの一部分に関してピアリスト中のピアにクエリを行う（動作２０６）時間付近に妥当性を検査することができる。しかしながら、ピアリスト中のピアの妥当性検査を通過すると、そのコンピュータシステムおよびピアは、キーを共有することができるので、その後のファイルクエリに関して、妥当性検査される必要がない。
【００２９】
ピアリストを構築するプロセスの一部には、期限切れのエントリを削除するか、または、もはや有効でないエントリを削除するために、ピアリストを更新することを含めることができる。例えば、コンピュータシステムは、エントリがピアリスト中に予め定められた時間の間存在していた後に、そのエントリをピアリストから削除することができる。これにより、古いエントリには限られたライフスパンがあることを確実にする。別の代替実施形態において、ピアがネットワークから離れるときに、そのピアが発信するマルチキャストに応答して、ピアの登録を削除することができる。例えば、ピアがネットワークから離れる準備をしているときに、他のピアに対するベストエフォートの通知（best effort notification）として、「Ｂｙｅ」というマルチキャスト一方向メッセージが送信される。コンピュータシステムが、この「Ｂｙｅ」メッセージを検出すると、この「Ｂｙｅ」メッセージを送信したピアをピアリストから削除することができる。「Ｂｙｅ」メッセージは、あまり好ましくない場合がある。というのは、悪意のあるコンピュータが「Ｂｙｅ」要求を使用して他のコンピュータをピアリストから削除させ、それにより、多数のコンピュータに中央ファイルサーバに対する要求を行わせるおそれがあるからである。別の例において、ファイルに関してピアにクエリを行おうと試みて、そのピアがもはやネットワーク上にはないと示すエラーを受信すると、ピアをピアリストから削除することができる。一実施形態において、ピアリスト中の様々なピアに対する多数のクエリがエラーメッセージを生じさせるときに、コンピュータシステムは、ピアリスト全体から全てのエントリを破棄することができる。これは、コンピュータシステムがアクセスしようとしているネットワークの一部がもはや利用不可能であることを示していると考えられ得る。別の実施形態において、妥当性検査を通過しなかった場合、ピアをピアリストから削除することができる。これについては以下でさらに詳細に説明するが、簡潔に言うと、ピアが妥当性検査を通過しなかった場合、そのピアは信頼できないことを示している。同様に、そのピアから受信したファイルが、ハッシュ比較などの所定のセキュリティチェックを通過しなかった場合、そのピアをピアリストから削除することができる。これについても、以下でさらに詳細に説明する。
【００３０】
十分な数のピアがピアリストから削除されると、上述したピアリストを構築する動作が繰り返され得る。上述した動作は、単独で使用することもできるし、組み合わせて使用することもできることに留意されたい。
【００３１】
コンピュータシステムは、複数のピアリストを保持することもできる。例えば、図１では、ラップトップコンピュータシステム１０６の例が示されている。説明したように、ラップトップコンピュータシステム１０６は、物理的にも論理的にも別の場所に移動させることができる。一実施形態において、ラップトップコンピュータ１０６は、第１のピアグループ１１２とは異なるサブネット上に存在するよう、論理的に別の場所に移動されることがある。このラップトップコンピュータシステム１０６は、新たなサブネット上に移動されたことを検出し、新たなサブネット上に移動されたことの検出に応答して、ラップトップコンピュータシステム１０６は、上述したピアリストの構築のために上述した動作を実行して、新たなサブネット用に新たなピアリストを構築する。ラップトップコンピュータシステム１０６が定期的に所定のサブネットのメンバである場合は、そのサブネットに接続するたびにピアリストを構築するための動作を実行する必要性を回避するよう、こうしたサブネット用のピアリストを保持することができる。コンピュータシステムが保持する異なったピアリストの数は、静的に定義された数であってもよいし、ユーザまたはネットワーク管理者が設定可能な数であってもよい。
【００３２】
コンピュータシステムは、新たなサブネットに移動されるが、新たなピアグループを形成しない状況があることに留意されたい。例えば、ラップトップコンピュータがインターネットカフェに移動される場合、新たなピアグループを形成する可能性は低い。このような状況およびその他の状況に関しては、利用可能なピアとの通信は、リスクが高過ぎることがある。
【００３３】
コンピュータシステムはまた、最初にネットワークに追加される場合にも、ピアリストを構築するよう構成することができる。これは、いかなる新しいコンピュータシステムを用いても行うことができ、ラップトップシステムに限定されるものではない。
【００３４】
再度図２を参照すると、ピアリスト中のコンピュータを認証する動作（動作２０４）が示されている。認証には、ピアが信頼できるマシンであることの妥当性を検査することが含まれる。一実施形態において、コンピュータシステムは、ピアが特定のセキュリティグループのメンバであることの妥当性を検査する。妥当性検査は、例えば、コンピュータシステムとピアとの双方が相互認証を実行するよう、プロトコルを用いることにより実行することができる。このように、コンピュータシステムとピアとの双方の身元が妥当であることを検査して、コンピュータシステムおよびピアリスト中のピアのいずれかが「なりすます」ことにより同一のセキュリティグループにいると相手方に信じさせることを防止する。この相互認証用の１つのプロトコルは、ケルベロス（Kerberos）である。ピアが妥当性検査を通過しなかった場合、そのピアをピアリストから削除することができる。
【００３５】
ピアが妥当性検査を通過すると、コンピュータシステムおよびピアは、キーを共有することができるので、その後のクエリに先立って引き続き妥当性検査を実行する必要はない。このキーには、有効期限を持たせることができ、これにより、信頼できる妥当性検査が効果的になる。このような有効期限は、例えば、１日とすることができる。
【００３６】
ピアが妥当性検査を通過すると、図２では、さらに、ファイルまたはファイルの一部分に関して、ピアリスト中のピアにクエリを行う動作（動作２０４）が示されている。一実施形態において、ピアリスト中のピアにクエリを行うことは、ピアのうちの１つがコンピュータシステムにより探されているファイルまたはファイルの一部分を有していることを応答するまで、ピアリスト中のピアの各々にユニキャストメッセージを送信することを含む。本明細書で使用されるユニキャストとは、特定のコンピュータに対するネットワーククエリであることに留意されたい。本明細書で説明するユニキャストは、必ずしもデータグラムプロトコルの使用を必要とせず、ＴＣＰおよびその他のような別のプロトコルを使用することもできる。代替実施形態において、コンピュータシステムは、ユニキャストメッセージのセットを重複して送信することができる。例えば、コンピュータシステムは、以前にユニキャストメッセージを送信したピアから応答を受信する前に、ピアリスト中のピアにユニキャストメッセージを送信することができる。
【００３７】
クエリを行う動作において送信されるメッセージには、コンピュータシステムが必要とするファイルを識別するための、様々なパラメータを含めることができる。例えば、このメッセージには、１つまたは複数のファイル名、ファイルサイズ、ファイル作成日付、および／またはファイルのハッシュを含めることができる。詳細には、ファイルのハッシュを使用することにより、システムは、正しいファイルが利用可能であることを検出することができる。ハッシュを用いることにより、コンピュータシステムは、利用可能なファイルが、別のファイルの重複する名前ではなく更新ファイルである場合などを検出することができる。
【００３８】
コンピュータシステムが、ファイルまたはファイルの一部分に関して、ピアリスト中のピアにクエリを行った（動作２０６）後、図２における方法では、ピアリスト中のピアサーバから、そのピアサーバがダウンロードのために利用可能なそのファイルまたはファイルの一部分を有しているというメッセージを受信する動作（動作２０８）が示されている。
【００３９】
ピアがピアサーバとして動作するか否かを決定する場合、そのピアは、様々なポリシルールを参照することができる。加えて、ピアが利用可能なファイルを有している場合でさえ、そのピアは、ポリシルールにしたがって、ピアサーバとして動作しないことを選択することができる。このようなポリシルールは、コンピュータシステムの処理能力を考慮に入れることができる。例えば、強力なデスクトップコンピュータまたはサーバクラスのコンピュータは、多くのピア、および、例えばラップトップコンピュータシステム１０６などのラップトップコンピュータに対して、ピアサーバとして動作することができるポリシルールを有する。別のルールは、利用可能なマシンリソースの量に関連する場合がある。例えば、ポリシルールは、１０％を超えたコンピュータシステムリソースが使用中であるとき、ピアサーバとして動作するコンピュータシステムの能力を制限することができる。システムリソースは、システム上のより大きなＣＰＵ負荷およびディスクＩ／Ｏ負荷の指標とすることができる。加えて、ラップトップコンピュータは、ラップトップコンピュータシステム１０６の稼働状態に基づいて、ラップトップコンピュータシステム１０６がピアサーバとして動作できるピアの数を調整するルールを参照することができる。例えば、ラップトップコンピュータシステム１０６がドッキングステーションに接続されている場合、ドッキングステーションに接続されていない場合よりも、多くのピアに役立つような構成にすることができる。さらに、ラップトップコンピュータシステム１０６が有線接続を介して接続されている場合、ラップトップコンピュータシステム１０６が無線方式でピアコンピュータに接続されている場合よりも、多くのピアに役立つことができる。さらに別の例において、ラップトップコンピュータシステム１０６への接続が許可されるピアの数は、バッテリレベルに関連するポリシによって定義することができる。例えば、ラップトップが、バッテリを用いて起動しており、かつ５０％未満の電力を有する場合、ラップトップコンピュータシステム１０６は、いかなる追加のピアコンピュータ接続も許可しないポリシに従うようにすることができる。
【００４０】
ピアがピアサーバとして動作すると決定されると、そのピアサーバは、メッセージをコンピュータシステムに返送し、そのコンピュータシステムが、そのメッセージを受信する（動作２０８）。
【００４１】
ピアリスト中の候補ピアサーバから、その候補ピアサーバがダウンロードのためのそのファイルまたはファイルの一部分を有していることを示すメッセージをコンピュータシステムが受信した後、そのコンピュータシステムは、そのファイルまたはファイルの一部分をダウンロードする（動作２１０）。ダウンロードは、任意の適切な方法で行うことができる。ここで、暗示されるように、コンピュータシステムは、ファイル全体ではなく、ファイルの一部分をダウンロードすることがあることに留意されたい。ファイルの別の部分は、別のピアサーバから取得することができる。いくつかの環境においては、これは、大型のファイルをダウンロードする速度を増加させることに役立ち得る。
【００４２】
一実施形態において、方法２００は、ファイルまたはファイルの一部分を妥当性検査すること（動作２１２）をさらに含む。妥当性検査では、ファイルが正しいファイルであること、ファイルが悪意的に改ざんされていないこと、および／またはファイルが破損していないことが検証される。これは、例えば、ファイルまたはファイルの一部分のハッシュを計算することにより実行することができる。計算されたハッシュ値が予想されるハッシュ値と一致しなかった場合、コンピュータシステムは、そのファイルまたはファイルの一部分を破棄する。加えて、コンピュータシステムは、そのファイルを提供したピアを、ピアサーバが疑わしいことを示す隔離リストに入れることができる。代替実施形態において、ピアリストからピアサーバをまとめて削除することができる。次いで、コンピュータシステムは、ピアリスト中の異なるピアまたは中央ファイルサーバから、ファイルを取得しようと試みることができる。コンピュータシステムは、ファイルを提供したピアサーバに対して、そのファイルに問題があることを通知することもできる。これにより、そのピアサーバは、そのファイルを破棄することができる。別のコンピュータシステムに対しても、そのファイルが疑わしいことに関して通知することができる。
【００４３】
次に図３を参照すると、候補ピアサーバの観点から、ファイルをキャッシュして共有する方法３００の実施形態が示されている。図３に示される方法は、ネットワークが１つまたは複数のネットワークコンピュータを含む場合に、そのネットワーク内のコンピュータシステムにおいて実行することができる。
【００４４】
方法３００は、コンピュータシステムがピアとして利用可能であるというメッセージを送信する動作（動作３０２）を含む。コンピュータシステムがピアとして利用可能であるというメッセージの送信（動作３０２）は、共有すべきファイルをそのコンピュータシステムが有している場合に、サブネット上でマルチキャストを用いて実行することができる。代替実施形態において、コンピュータシステムがピアとして利用可能であるというメッセージの送信は、ピアコンピュータを探しているシステムからの依頼要求の受信に応答して、マルチキャストまたはユニキャストを用いて実行することができる。依頼要求の受信に応答してコンピュータシステムがピアとして利用可能であるというメッセージの送信（動作３０２）を実行するとき、コンピュータシステムは、図２の記述と関連させて上述した手順を用いるランダム遅延を使用することにより、応答することができる。
【００４５】
方法３００は、コンピュータシステムがファイルまたはファイルの一部分を有しているか否かを把握するための要求を受信する動作（動作３０４）をさらに含む。受信されるメッセージは、ピアリスト中にそのコンピュータシステムを含んでいるシステムからのユニキャスト要求とすることができる。代替実施形態において、この要求は、上述したように、重複するユニキャストとしてもよい。ファイルに対するセキュリティが必要でない場合は、マルチキャスト要求を使用することもできる。
【００４６】
方法３００は、コンピュータシステムがファイルまたはファイルの一部分を有しているというメッセージを送信する動作（動作３０４）をさらに含む。コンピュータシステムがファイルまたはファイルの一部分を有しているというメッセージの送信（動作３０４）は、ダイナミックオプトイン／オプトアウトルールに基づいて実行される。例えば一実施形態において、ポリシルールは、コンピュータシステムの処理能力を考慮に入れることができる。強力なデスクトップコンピュータまたはサーバクラスのコンピュータは、他の能力の劣るシステムよりも、多くのピアに対してピアサーバとして動作することのできるポリシルールを有することができる。別のルールは、利用可能なマシンリソースの量に関連する場合がある。例えば、ポリシルールは、１０％を超えたコンピュータシステムリソースが使用中であるとき、ピアサーバとして動作するコンピュータシステムの能力を制限することができる。システムリソースは、システム上のより大きなＣＰＵ負荷およびディスクＩ／Ｏ負荷の指標とすることができる。ラップトップコンピュータに関連する代替実施形態において、ラップトップコンピュータは、ラップトップコンピュータシステム１０６の稼働状態に基づいて、ラップトップコンピュータシステム１０６がピアサーバとして動作できるピアの数を調整するポリシを参照することができる。例えば、ラップトップコンピュータシステム１０６がドッキングステーションに接続されている場合、ドッキングステーションに接続されていない場合よりも、多くのピアに役立つような構成にすることができる。さらに、ラップトップコンピュータシステム１０６が有線接続を介して接続されている場合、ラップトップコンピュータシステム１０６が無線方式でピアコンピュータに接続されている場合よりも、多くのピアに役立つことができる。さらに別の代替実施形態において、ラップトップコンピュータシステム１０６への接続が許可されるピアの数は、バッテリレベルに関連するポリシによって定義することができる。例えば、ラップトップが、バッテリを用いて起動しており、かつ５０％未満の電力を有する場合、ラップトップコンピュータシステム１０６は、いかなる追加のピアコンピュータ接続も許可しないポリシに従うようにすることができる。
【００４７】
方法３００は、ファイルをダウンロードする要求を受信する動作（動作３０８）をさらに含む。方法３００は、要求元システムにファイルを送信する動作（動作３１０）をさらに含む。ネットワーク上の他のシステムに対してピアサーバとして動作するコンピュータシステムが、これらの動作を実行することができる。
【００４８】
次に図４を参照すると、様々なメッセージングフォーマットを含むファイルをキャッシュして共有する方法４００の実施形態が示されている。図４に示される方法は、ネットワークが１つまたは複数のネットワークコンピュータを含む場合に、そのネットワーク内のコンピュータシステムにおいて実行することができる。
【００４９】
この方法は、コンピュータシステムが、候補ピアを発見するためのブロードキャスト信号をサブネット上のコンピュータシステムに送信する動作（動作４０２）を含む。このブロードキャスト信号は、予め定められた数の応答に関する希望値を示すことができる。代替実施形態において、このブロードキャスト信号には、コンピュータシステムが、ブロードキャスト信号に対する任意の応答を評価することを可能にする様々なパラメータを含めることができる。例えば、このパラメータにより、応答のタイミング、応答するシステムのハードウェア特性の評価などが可能になる。
【００５０】
次いで、コンピュータシステムは、そのサブネット上のコンピュータシステムのうちの１つから信号を受信する（動作４０４）。この信号には、提供され得るファイルのリスト、信号を送信するシステムの特性などを含めることができる。この信号はマルチキャスト信号とすることができる。場合によっては、この信号は、ユニキャスト信号であってもよい。
【００５１】
コンピュータシステムは、そのサブネット上のコンピュータシステムのうちの１つをピアリストに追加する（動作４０６）。ピアリストは、予め定められた数以上のピアを含まない。例えば、ピアリストは１００以上のピアを含まない。これにより、コンピュータシステムは、ダウンロードのためのファイルまたはファイルの一部分を発見するのに必要な処理量およびネットワーク利用量を制限することができる。
【００５２】
コンピュータシステムは、そのサブネット上のコンピュータシステムのうちの１つにユニキャスト信号を送信して、そのコンピュータシステムのうちの１つが、ダウンロードのために利用可能なファイルまたはファイルの一部分を有しているか否かを把握する（動作４０８）。コンピュータシステムは、他のコンピュータシステムに対してこの処理を繰り返して、そのファイルまたはファイルの一部分が存在し得る場所を把握することができる。ユニキャストが同一コンピュータシステムから同時に生じるよう、ユニキャスト信号を重複して送信してもよいことに留意されたい。
【００５３】
コンピュータシステムは、そのサブネット上のコンピュータシステムのうちの１つから、そのサブネット上のコンピュータシステムのうちの１つが、ダウンロードのために利用可能なそのファイルまたはファイルの一部分を有していることを示すユニキャスト信号を受信する（動作４１０）。
【００５４】
次いで、コンピュータシステムは、そのサブネット上のコンピュータシステムのうちの１つから、そのファイルまたはファイルの一部分をダウンロードすることができる（動作４１２）。
【００５５】
本発明は、パーソナルコンピュータ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの家電製品もしくはプログラム可能な家電製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどを含む多数のタイプのコンピュータシステム構成を有するネットワークコンピューティング環境において実施できることが、当業者には理解されよう。本発明は、通信ネットワークを介して（有線リンク、無線リンク、または有線リンクと無線リンクとの組合せにより）接続されているローカル処理デバイスおよびリモート処理デバイスがタスクを実行する分散コンピューティング環境においても実施することができる。分散コンピューティング環境において、プログラムモジュールは、ローカル記憶デバイスおよびリモート記憶デバイスの双方に配置させることができる。
【００５６】
本発明の範囲内における実施形態には、コンピュータ実行可能命令またはデータ構造を搬送するか、または有するコンピュータ読み取り可能な媒体も含まれる。このようなコンピュータ読み取り可能な媒体は、汎用コンピュータまたは専用コンピュータがアクセスできる任意の入手可能な媒体とすることができる。例えば、このようなコンピュータ読み取り可能な媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭもしくは他の光ディスク記憶デバイス、磁気ディスク記憶デバイスもしくは他の磁気記憶デバイス、あるいは、コンピュータ実行可能命令やデータ構造の形態で所望のプログラムコードを搬送するか、または記憶する手段として使用することができる任意の別の媒体であって、汎用コンピュータまたは専用コンピュータによってアクセスすることができる媒体を含めることができるが、これらに限定されるものではない。ネットワークまたは別の通信接続（有線、無線、または有線と無線との組合せ）を介してコンピュータに情報を送信または提供する場合、コンピュータは、適切にこの接続をコンピュータ読み取り可能な媒体とみなす。したがって、上記の任意の接続は、コンピュータ読み取り可能な媒体として適切に称されるものである。上述したものの組合せもまた、コンピュータ読み取り可能な媒体の範囲内に含まれるべきである。コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに所定の機能または一連の機能を実行させる命令およびデータを含む。
【００５７】
主題事項について構造的特徴および／または方法論的動作に固有の言葉で説明したが、特許請求の範囲において定義される主題事項は、必ずしも上述した具体的な特徴または動作に限定されないことを理解されたい。むしろ、上述した具体的な特徴または動作は、特許請求の範囲の請求項を実施する例示的な形態として開示されている。
【００５８】
本発明は、その趣旨または本質的な特徴から逸脱することなく、別の具体的な形態で具現化することができる。説明した諸実施形態は、あらゆる観点で、例示的なものとして示されているに過ぎず、限定的なものとして解釈すべきではない。したがって、本発明の範囲は、前述した説明によってではなく、特許請求の範囲によって示されるものである。特許請求の範囲の均等の意味および範囲内における変更は、本発明の範囲内に含まれる。
【図面の簡単な説明】
【００５９】
【図１】例示的なネットワークを示すブロック図である。
【図２】クライアントの観点から、ファイルをキャッシュして共有する方法を示すフローチャートである。
【図３】ピアサーバの観点から、ファイルをキャッシュして共有する方法を示すフローチャートである。
【図４】様々なメッセージングフォーマットを含むファイルをキャッシュして共有する方法を示すフローチャートである。
【図１】
2009506455.tif 000003
【図２】
2009506455.tif 000004
【図３】
2009506455.tif 000005
【図４】
2009506455.tif 000006
【国際調査報告】
2009506455.tif 000007
2009506455.tif 000008