(57)【要約】【課題】クライアントが要求するファイルを、サーバだけでなくコピーを保持しているネットワーク上の他のＰＣから入手することにより、サーバの転送速度を超えてファイルをダウンロードすることを可能にすると共に、サーバにアクセスが集中するなどしてデータの入手が困難な場合でもファイルをダウンロードできるようにすることを目的とする。【解決手段】相互に通信可能な情報ネットワークＮＷ上において、クライアントＣ１がファイルサーバＳＶにファイルを要求する場合、サーバＳＶからだけでなく、要求するファイルのコピーまたは一部分を保持するクライアントＣ２からもピアツーピア通信でデータを取得するようにする。これにより、より高速にファイルをダウンロードすることが可能となる。さらに、サーバＳＶにネットワーク負荷が集中してダウンロードが困難な場合でも、クライアントＣ２からファイルを入手することができる。【選択図】  図１
2004213508.tif 000002
【特許請求の範囲】
【請求項１】
ファイルを提供するファイルサーバと、ファイルを要求する１台以上のクライアントとがネットワークに接続されたシステムにおいて、前記クライアントが所望のファイルをダウンロードするファイルダウンロード方法であって、
第１のクライアントから前記ファイルサーバに対してファイル取得要求を送信するステップと、
前記ファイル取得要求を受信した前記ファイルサーバから前記第１のクライアントに、要求されたファイルを所定数に分割したブロック単位で送信を開始するステップと、
前記ファイル取得要求を受信した前記ファイルサーバにて、要求されたファイルをダウンロードしている第２のクライアントがあるか否か判別するステップと、
前記第２のクライアントがあったとき、前記第１及び第２のクライアントに対して、前記第２のクライアントが既に取得している前記ファイルのブロックをピアツーピア通信で前記第１のクライアントに送信することを指示するステップと、
前記指示を受けて第２のクライアントから前記第１のクライアントに、前記ファイルのブロックを送信するステップと、
前記第１のクライアントにて、前記ファイルサーバから取得したブロックと前記第２のクライアントから取得したブロックとを合わせてファイルを構成するステップと
を備えることを特徴とするファイルダウンロード方法。
【請求項２】
ファイルを提供するファイルサーバと、ファイルを要求する１台以上のクライアントとがネットワークに接続されたシステムにおいて、前記クライアントが所望のファイルをダウンロードするファイルダウンロード方法であって、
第１のクライアントから前記ファイルサーバに対してファイル取得要求を送信するステップと、
前記ファイル取得要求を受信した前記ファイルサーバから前記第１のクライアントに、要求されたファイルを所定数に分割したブロック単位で送信を開始するステップと、
前記ファイル取得要求を受信した前記ファイルサーバにて、要求されたファイルをダウンロードしている複数の第２のクライアントがあるか否か判別するステップと、
前記複数の第２のクライアントがあったとき、前記第１のクライアント及び複数の第２のクライアントに対して、前記第２のクライアントのそれぞれが既に取得している前記ファイルのブロックをピアツーピア通信で前記第１のクライアントに送信することを指示するステップと、
前記指示を受けて前記第２のクライアントのそれぞれから前記第１のクライアントに、前記ファイルのブロックを送信するステップと、
前記第１のクライアントにて、前記ファイルサーバから取得したブロックと前記複数の第２のクライアントから取得したブロックとを合わせてファイルを構成するステップと
を備えることを特徴とするファイルダウンロード方法。
【請求項３】
ファイルを提供するファイルサーバと、ファイルを要求する１台以上のクライアントとがネットワークに接続されたシステムにおいて、前記クライアントが所望のファイルをダウンロードするファイルダウンロード方法であって、
第１のクライアントから前記ファイルサーバに対してファイル取得要求を送信するステップと、
前記ファイルサーバにて、前記ファイル取得要求に対してデータ送信できないと判断した場合、要求されたファイルを持つ第２のクライアントがあるか否か判別するステップと、
前記第２のクライアントがあったとき、前記第１及び第２のクライアントに対して、前記第２のクライアントが既に取得している前記ファイルをピアツーピア通信で前記第１のクライアントに送信することを指示するステップと、
前記指示を受けて第２のクライアントから前記第１のクライアントに前記ファイルを送信するステップと
を備えることを特徴とするファイルダウンロード方法。
【請求項４】
ファイルを提供するファイルサーバと、ファイルを要求する１台以上のクライアントとがネットワークに接続されたシステムにおいて、前記クライアントが所望のファイルをダウンロードするファイルダウンロード方法であって、
第１のクライアントから前記ファイルサーバに対してファイル取得要求を送信するステップと、
前記ファイルサーバにて、前記ファイル取得要求に対してデータ送信できないと判断した場合、要求されたファイルを所定数に分割したブロックのうちの何れかのブロックを持つ複数の第２のクライアントを探索するステップと、
前記第１のクライアント及び探索された複数の第２のクライアントに対して、前記第２のクライアントのそれぞれが既に取得している前記ファイルのブロックをピアツーピア通信で前記第１のクライアントに送信することを指示するステップと、
前記指示を受けて前記複数の第２のクライアントのそれぞれから前記第１のクライアントに、前記ファイルのブロックを送信するステップと、
前記第１のクライアントにて、前記複数の第２のクライアントから取得したブロックを合わせてファイルを構成するステップと
を備えることを特徴とするファイルダウンロード方法。
【請求項５】
請求項１または２に記載のファイルダウンロード方法において、
前記第２のクライアントから前記第１のクライアントへピアツーピア通信でデータ送信するのと並行して、前記第１のクライアントから前記第２のクライアントへ前記ファイルのブロックを送信することを特徴とするファイルダウンロード方法。
【請求項６】
請求項１または５に記載のファイルダウンロード方法において、
前記ファイルを分割したブロックは所定の順序で順序付けられており、前記ファイルサーバから前記第２のクライアントへのブロック単位の送信及び前記第２のクライアントから前記第１のクライアントへのブロック単位の送信は前記順序に従って行い、前記ファイルサーバから前記第１のクライアントへのブロック単位の送信及び前記第１のクライアントから前記第２のクライアントへのブロック単位の送信は前記順序に対して逆の順序に従って行うことを特徴とするファイルダウンロード方法。
【請求項７】
ファイルを提供するファイルサーバと、ファイルを要求する１台以上のクライアントとがネットワークに接続されたファイルダウンロードシステムであって、
前記ファイルサーバは、
第１のクライアントから送信されるファイル取得要求を受信する手段と、
前記ファイル取得要求を送信した第１のクライアントに、要求されたファイルを所定数に分割したブロック単位で送信を開始する手段と、
要求されたファイルをダウンロードしている第２のクライアントがあるか否か判別する手段と、
前記第２のクライアントがあったとき、前記第１及び第２のクライアントに対して、前記第２のクライアントが既に取得している前記ファイルのブロックをピアツーピア通信で前記第１のクライアントに送信することを指示する手段と
を備え、
前記第１のクライアントは、
前記ファイルサーバにファイル取得要求を送信する手段と、
前記ファイルサーバから前記ピアツーピア通信の指示があったとき、指示された第２のクライアントと接続し、第２のクライアントから送信される前記ファイルのブロックを受信する手段と、
前記ファイルサーバから取得したブロックと前記第２のクライアントから取得したブロックとを合わせてファイルを構成する手段と
を備え、
前記第２のクライアントは、
前記ファイルサーバから前記ピアツーピア通信の指示があったとき、指示された第１のクライアントと接続し、第１のクライアントに向けて前記ファイルのブロックを送信する手段
を備えることを特徴とするファイルダウンロードシステム。
【請求項８】
ファイルを提供するファイルサーバと、ファイルを要求する１台以上のクライアントとがネットワークに接続されたファイルダウンロードシステムであって、
前記ファイルサーバは、
第１のクライアントから送信されるファイル取得要求を受信する手段と、
前記ファイル取得要求に対してデータ送信できないと判断した場合、要求されたファイルを持つ第２のクライアントがあるか否か判別する手段と、
前記第２のクライアントがあったとき、前記第１及び第２のクライアントに対して、前記第２のクライアントが既に取得している前記ファイルをピアツーピア通信で前記第１のクライアントに送信することを指示する手段と
を備え、
前記第１のクライアントは、
前記ファイルサーバに対してファイル取得要求を送信する手段と、
前記ファイルサーバから前記ピアツーピア通信の指示があったとき、指示された第２のクライアントと接続し、第２のクライアントから送信される前記ファイルを受信する手段と
を備え、
前記第２のクライアントは、
前記ファイルサーバから前記ピアツーピア通信の指示があったとき、指示された第１のクライアントと接続し、第１のクライアントに向けて前記ファイルを送信する手段
を備えることを特徴とするファイルダウンロードシステム。
【請求項９】
ネットワーク経由で接続された１台以上のクライアントに対してファイルを供給するファイルサーバであって、
第１のクライアントから送信されるファイル取得要求を受信する手段と、
前記ファイル取得要求を受信したとき、前記第１のクライアントに対して要求されたファイルを送信する帯域を確保できるか否か判別する手段と、
帯域を確保できる場合は、要求されたファイルを所定数に分割したブロック単位で送信を開始する手段と、
要求されたファイルをダウンロードしている第２のクライアントがあるか否か判別する手段と、
前記第２のクライアントがあったとき、前記第１及び第２のクライアントに対して、前記第２のクライアントが既に取得している前記ファイルのブロックをピアツーピア通信で前記第１のクライアントに送信することを指示する手段と
を備えることを特徴とするファイルサーバ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、互いに通信可能でありネットワークに接続されている情報を提供するサーバとファイルを要求するクライアント間でファイルを転送する技術に関する。
【０００２】
【従来の技術】
ネットワークに接続されたサーバからクライアントにファイルをダウンロードする際には、サーバとネットワーク間の混雑及びネットワークとクライアント間での通信速度等のボトルネック解消による、ダウンロード時間の短縮が課題である。これに対し、特許文献１に記載の技術では、インターネットサービスプロバイダ（以下、ＩＳＰと略す）と契約した会員が、パーソナルコンピュータ（以下、ＰＣと略す）を一般公衆回線を介してＩＳＰに接続すると共に、ＰＣから会員の携帯電話によりデジタル携帯電話公衆回線を介して同時にＩＳＰに接続し、ＩＳＰとＰＣ間で２回線の接続を確立することにより、分割したファイルを並行送出し、高速にＰＣにダウンロードするものである。
【０００３】
また、特許文献２に記載の技術は、オブジェクトポンプと呼ばれる情報オブジェクト格納装置を、サーバより広帯域なクライアントの近傍に配置し、クライアントからのデータ要求をサーバの代理で配信したり、さらにそのデータを判別してキャッシュしておくことによってクライアント・サーバ間の通信の効率を上げるものである。
【０００４】
【特許文献１】特開２００２−２１５４９７号公報（図１、図６など）
【０００５】
【特許文献２】特開２００１−１８４２５２号公報（図２Ａ〜図２Ｃなど）
【０００６】
【発明が解決しようとする課題】
しかしながら、特許文献１に記載の技術では、ＩＳＰとＰＣ間の通信経路を二重化して通信速度の向上を図っているので、サーバからクライアントに対してデータが流れるという仕組みには変わりは無く、インターネット内の混雑やサーバにアクセスが集中することによる転送速度の低下に対しては対処することができない。また、通信経路は手持ちの機器のみに限定され、なおかつ一般公衆回線の他に携帯電話公衆回線も利用するので通信費が割高となる。
【０００７】
また、特許文献２に記載の技術では、オブジェクトポンプを事前に専用機として設置しておく必要があり、またオブジェクトポンプをネットワーク上のサーバと見なすことができるため、アクセスの集中に関しては同様の問題がある。
【０００８】
さらに、インターネットに存在する既存のピアツーピア通信は、データの流れが一方向であり、ファイルの相互補完の役割は果たしていない。
【０００９】
本発明の目的は、クライアントが要求するファイルを、サーバだけでなくコピーを保持しているネットワーク上の他のＰＣから入手することにより、サーバの転送速度を超えてファイルをダウンロードすることを可能にすると共に、サーバにアクセスが集中するなどしてデータの入手が困難な場合でもファイルをダウンロードできるようにする技術を提供することである。
【００１０】
【課題を解決するための手段】
上記目的を達成するため、請求項１に係る発明は、ファイルを提供するファイルサーバと、ファイルを要求する１台以上のクライアントとがネットワークに接続されたシステムにおいて、前記クライアントが所望のファイルをダウンロードするファイルダウンロード方法であって、第１のクライアントから前記ファイルサーバに対してファイル取得要求を送信するステップと、前記ファイル取得要求を受信した前記ファイルサーバから前記第１のクライアントに、要求されたファイルを所定数に分割したブロック単位で送信を開始するステップと、前記ファイル取得要求を受信した前記ファイルサーバにて、要求されたファイルをダウンロードしている第２のクライアントがあるか否か判別するステップと、前記第２のクライアントがあったとき、前記第１及び第２のクライアントに対して、前記第２のクライアントが既に取得している前記ファイルのブロックをピアツーピア通信で前記第１のクライアントに送信することを指示するステップと、前記指示を受けて第２のクライアントから前記第１のクライアントに、前記ファイルのブロックを送信するステップと、前記第１のクライアントにて、前記ファイルサーバから取得したブロックと前記第２のクライアントから取得したブロックとを合わせてファイルを構成するステップとを備えることを特徴とする。
【００１１】
請求項２に係る発明は、ファイルを提供するファイルサーバと、ファイルを要求する１台以上のクライアントとがネットワークに接続されたシステムにおいて、前記クライアントが所望のファイルをダウンロードするファイルダウンロード方法であって、第１のクライアントから前記ファイルサーバに対してファイル取得要求を送信するステップと、前記ファイル取得要求を受信した前記ファイルサーバから前記第１のクライアントに、要求されたファイルを所定数に分割したブロック単位で送信を開始するステップと、前記ファイル取得要求を受信した前記ファイルサーバにて、要求されたファイルをダウンロードしている複数の第２のクライアントがあるか否か判別するステップと、前記複数の第２のクライアントがあったとき、前記第１のクライアント及び複数の第２のクライアントに対して、前記第２のクライアントのそれぞれが既に取得している前記ファイルのブロックをピアツーピア通信で前記第１のクライアントに送信することを指示するステップと、前記指示を受けて前記第２のクライアントのそれぞれから前記第１のクライアントに、前記ファイルのブロックを送信するステップと、前記第１のクライアントにて、前記ファイルサーバから取得したブロックと前記複数の第２のクライアントから取得したブロックとを合わせてファイルを構成するステップとを備えることを特徴とする。
【００１２】
請求項３に係る発明は、ファイルを提供するファイルサーバと、ファイルを要求する１台以上のクライアントとがネットワークに接続されたシステムにおいて、前記クライアントが所望のファイルをダウンロードするファイルダウンロード方法であって、第１のクライアントから前記ファイルサーバに対してファイル取得要求を送信するステップと、前記ファイルサーバにて、前記ファイル取得要求に対してデータ送信できないと判断した場合、要求されたファイルを持つ第２のクライアントがあるか否か判別するステップと、前記第２のクライアントがあったとき、前記第１及び第２のクライアントに対して、前記第２のクライアントが既に取得している前記ファイルをピアツーピア通信で前記第１のクライアントに送信することを指示するステップと、前記指示を受けて第２のクライアントから前記第１のクライアントに前記ファイルを送信するステップとを備えることを特徴とする。
【００１３】
請求項４に係る発明は、ファイルを提供するファイルサーバと、ファイルを要求する１台以上のクライアントとがネットワークに接続されたシステムにおいて、前記クライアントが所望のファイルをダウンロードするファイルダウンロード方法であって、第１のクライアントから前記ファイルサーバに対してファイル取得要求を送信するステップと、前記ファイルサーバにて、前記ファイル取得要求に対してデータ送信できないと判断した場合、要求されたファイルを所定数に分割したブロックのうちの何れかのブロックを持つ複数の第２のクライアントを探索するステップと、前記第１のクライアント及び探索された複数の第２のクライアントに対して、前記第２のクライアントのそれぞれが既に取得している前記ファイルのブロックをピアツーピア通信で前記第１のクライアントに送信することを指示するステップと、前記指示を受けて前記複数の第２のクライアントのそれぞれから前記第１のクライアントに、前記ファイルのブロックを送信するステップと、前記第１のクライアントにて、前記複数の第２のクライアントから取得したブロックを合わせてファイルを構成するステップとを備えることを特徴とする。
【００１４】
請求項５に係る発明は、請求項１または２に記載のファイルダウンロード方法において、前記第２のクライアントから前記第１のクライアントへピアツーピア通信でデータ送信するのと並行して、前記第１のクライアントから前記第２のクライアントへ前記ファイルのブロックを送信することを特徴とする。
【００１５】
請求項６に係る発明は、請求項１または５に記載のファイルダウンロード方法において、前記ファイルを分割したブロックは所定の順序で順序付けられており、前記ファイルサーバから前記第２のクライアントへのブロック単位の送信及び前記第２のクライアントから前記第１のクライアントへのブロック単位の送信は前記順序に従って行い、前記ファイルサーバから前記第１のクライアントへのブロック単位の送信及び前記第１のクライアントから前記第２のクライアントへのブロック単位の送信は前記順序に対して逆の順序に従って行うことを特徴とする。
【００１６】
請求項７に係る発明は、ファイルを提供するファイルサーバと、ファイルを要求する１台以上のクライアントとがネットワークに接続されたファイルダウンロードシステムであって、前記ファイルサーバは、第１のクライアントから送信されるファイル取得要求を受信する手段と、前記ファイル取得要求を送信した第１のクライアントに、要求されたファイルを所定数に分割したブロック単位で送信を開始する手段と、要求されたファイルをダウンロードしている第２のクライアントがあるか否か判別する手段と、前記第２のクライアントがあったとき、前記第１及び第２のクライアントに対して、前記第２のクライアントが既に取得している前記ファイルのブロックをピアツーピア通信で前記第１のクライアントに送信することを指示する手段とを備え、前記第１のクライアントは、前記ファイルサーバにファイル取得要求を送信する手段と、前記ファイルサーバから前記ピアツーピア通信の指示があったとき、指示された第２のクライアントと接続し、第２のクライアントから送信される前記ファイルのブロックを受信する手段と、前記ファイルサーバから取得したブロックと前記第２のクライアントから取得したブロックとを合わせてファイルを構成する手段とを備え、前記第２のクライアントは、前記ファイルサーバから前記ピアツーピア通信の指示があったとき、指示された第１のクライアントと接続し、第１のクライアントに向けて前記ファイルのブロックを送信する手段を備えることを特徴とする。
【００１７】
請求項８に係る発明は、ファイルを提供するファイルサーバと、ファイルを要求する１台以上のクライアントとがネットワークに接続されたファイルダウンロードシステムであって、前記ファイルサーバは、第１のクライアントから送信されるファイル取得要求を受信する手段と、前記ファイル取得要求に対してデータ送信できないと判断した場合、要求されたファイルを持つ第２のクライアントがあるか否か判別する手段と、前記第２のクライアントがあったとき、前記第１及び第２のクライアントに対して、前記第２のクライアントが既に取得している前記ファイルをピアツーピア通信で前記第１のクライアントに送信することを指示する手段とを備え、前記第１のクライアントは、前記ファイルサーバに対してファイル取得要求を送信する手段と、前記ファイルサーバから前記ピアツーピア通信の指示があったとき、指示された第２のクライアントと接続し、第２のクライアントから送信される前記ファイルを受信する手段とを備え、前記第２のクライアントは、前記ファイルサーバから前記ピアツーピア通信の指示があったとき、指示された第１のクライアントと接続し、第１のクライアントに向けて前記ファイルを送信する手段を備えることを特徴とする。
【００１８】
請求項９に係る発明は、ネットワーク経由で接続された１台以上のクライアントに対してファイルを供給するファイルサーバであって、第１のクライアントから送信されるファイル取得要求を受信する手段と、前記ファイル取得要求を受信したとき、前記第１のクライアントに対して要求されたファイルを送信する帯域を確保できるか否か判別する手段と、帯域を確保できる場合は、要求されたファイルを所定数に分割したブロック単位で送信を開始する手段と、要求されたファイルをダウンロードしている第２のクライアントがあるか否か判別する手段と、前記第２のクライアントがあったとき、前記第１及び第２のクライアントに対して、前記第２のクライアントが既に取得している前記ファイルのブロックをピアツーピア通信で前記第１のクライアントに送信することを指示する手段とを備えることを特徴とする。
【００１９】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して具体的に説明する。
【００２０】
図１は、本実施形態のピアツーピア技術を用いたファイルダウンロードシステムの概念を示す説明図である。図１に示すように、パブリックにファイルを提供するファイルサーバＳＶと、そのファイルサーバＳＶから同一ファイルのダウンロードを要求するクライアントＣ１およびクライアントＣ２が、インターネットなどの通信ネットワークＮＷを介して相互に通信可能な状態で接続されている。サーバＳＶは、ファイルをブロックと呼ばれる論理的な情報単位に分割し、クライアントＣ１とクライアントＣ２に向けてブロックの重複がないようにデータＤ１とデータＤ２に分けて送信する。クライアントＣ１とクライアントＣ２は、サーバＳＶを介して互いのアドレス情報を取得して接続を確立する。クライアントＣ１は、サーバＳＶから送信されたブロックを自身に溜め込むと共に、クライアントＣ２が入手していないブロックをクライアントＣ２に向けて送信する（Ｄ４）。クライアントＣ２も同様に、クライアントＣ１が入手していないブロックをクライアントＣ１に向けて送信する（Ｄ５）。
【００２１】
図２は、ファイルが通信ネットワークを通してサーバやクライアントで処理される過程を示す例の説明図である。サーバＳＶは、送信するファイルを内部でブロック単位に分けて管理し、クライアントＣ１とクライアントＣ２に送信する。例えば、クライアントＣ２に対してはファイルをブロック化した順番で先頭のブロックから順に送信し、クライアントＣ１に対してはブロック化した末尾から逆順に送信する。これにより、クライアントＣ１に送信するブロックとクライアントＣ２に送信するブロックとがなるべく重複しないように送信する。図２は、サーバＳＶからクライアントＣ２に向けて、ブロック１，２，３，４までこの順に送信し、現在ブロック５を送信中であることを示している。また、サーバＳＶからクライアントＣ１に向けて、ブロック１０，９，８までこの順に送信し、現在ブロック７，６をこの順に送信中であることを示している。
【００２２】
クライアントＣ１は、１つのブロックの受信を完了すると自己の記憶装置に保存すると共に、直ちにそのブロックをクライアントＣ２に向けて送信する。クライアントＣ２も同様に、受信ブロックをクライアントＣ１に向けて送信する。図２は、クライアントＣ１からＣ２へブロック９を送信し、クライアントＣ２からＣ１へブロック３，４を送信しているところを示す。各クライアントは、サーバＳＶから受信したブロックとピアツーピア接続した相手から受信したブロックを全て結合して目的のファイルに変換する。
【００２３】
以上の図２は、ピアツーピア通信だけでなく、サーバＳＶから送られたブロックとピアツーピア通信で他のクライアントから送られたブロックとを結合して目的のファイルを得るモードである。
【００２４】
図３は、サーバにクライアントが接続不可能な場合の事例を示す説明図である。ファイルサーバＳＶは、クライアントへファイル転送する際に一定の帯域を確保するために、制限を越えるクライアントＣ１の接続要求（Ｒ１）を拒否する。その代わりとして、要求されたファイル（Ｆ１）の複製を持ち、かつ現在ネットワークＮＷに接続中であるクライアントＣ２からファイルを取得するようにクライアントＣ１に指示を出し（Ｒ２）、同様にクライアントＣ２に対してもクライアントＣ１と通信を開始するように指示を出す（Ｒ３）。その後、要求されたファイルＦ１の全ての内容がクライアントＣ２からクライアントＣ１に送信される（Ｄ８）。
【００２５】
以上の図３は、クライアントがピアツーピア通信だけで他のクライアントから目的のファイルを得るモードである。
【００２６】
次に、図４のフローチャートを用いて、図１、図２および図３に示した本実施形態の動作処理を説明する。ファイルサーバＳＶは、ネットワークＮＷ上に存在するクライアントＣ１からファイルの取得要求を受信すると（Ｓ１０１）、クライアントＣ１のネットワーク上のアドレスと要求されたファイル名を取得する（Ｓ１０２）。このときにファイルサーバＳＶは、クライアントＣ１に対してある基準以上の転送速度でファイルが送出可能かどうか帯域調査機能を用いて調査し（Ｓ１０３）、帯域に余裕があれば送出することを決定し、Ｓ１０７に進む。帯域に余裕が無ければ、ファイルサーバＳＶからの送出を諦めてピアツーピア接続間でのファイル転送のみとすることを決定し、サーバＳＶからのデータ送信を拒否する（Ｓ１０４）。ただし、ネットワークＮＷ上に同ファイルのコピーを持つ他のクライアントがあるか否かチェックし（Ｓ１０５）、あればＳ１１０へ進む。通信可能なネットワーク上のどのクライアントにも目的のファイルが存在しなければ、クライアントＣ１はファイルを入手することができない（Ｓ１０５、Ｓ１０６）。
【００２７】
Ｓ１０３でファイルサーバＳＶからのデータ送出を決定した場合は、蓄えられているクライアントの情報の中からクライアントＣ１が要求するファイルと同じファイルを接続中の他のクライアントがダウンロード中でないかを調査する（Ｓ１０７）。その結果、該当するファイルを他のクライアントがダウンロード中でなければ、ファイルサーバＳＶは、クライアントＣ１に向けてそのファイルのブロックの先頭から順番に送信し、ブロックが全てクライアントＣ１に受信されると受信完了通知を受け取って通信を終了する（Ｓ１０８）。その後、サーバＳＶからクライアントＣ１の情報を削除する（Ｓ１０９）。ただし、そのファイルの受信中に別のクライアントがそのファイルを要求してきた場合、クライアントＣ１はピアツーピア通信のペアの対象となる可能性がある。その場合はクライアントＣ２の役割を果たす。
【００２８】
調査（Ｓ１０７）の結果、該当ファイルを他のクライアントがダウンロードしている途中であった場合は、クライアントＣ１とペアになってピアツーピア接続を行うクライアントを選定する。まず、該当ファイルをダウンロード中であるクライアントが１台であるか否かをチェックする（Ｓ１１０）。１台であれば、そのクライアントが無条件にペアとなるクライアントＣ２として決定される（Ｓ１１０、Ｓ１１２）。ダウンロード中のクライアントが複数の場合、該当するクライアントのアドレスリストをクライアントＣ１に送信し、クライアントＣ１がそのリストをもとにクライアント間の転送速度テストや距離の測定、またはランダム選択によってペアとなるクライアントＣ２を決定する（Ｓ１１１、Ｓ１１２）。サーバＳＶからのデータ送信を拒否されて、ファイル転送がピアツーピア通信のみの場合（Ｓ１０５からＳ１１０に進んだ場合）でも、同様にしてペアとなるクライアントＣ２を決定する。
【００２９】
ピアツーピア通信の相手となるクライアントＣ２が決定すると、ファイルサーバＳＶは、クライアントＣ２に対してクライアントＣ１のアドレスを通知し、ピアツーピア通信の準備をするように指示する（Ｓ１１３）。クライアントＣ１に対しては、クライアントＣ２のアドレスを通知してピアツーピア通信を開始するように指示する（Ｓ１１４）。これ以降のピアツーピア通信は、図２のデータの流れＤ６、Ｄ７に従って各クライアント間で制御される。
【００３０】
ここで、ファイル転送がピアツーピア通信のみのモードで無ければ（すなわち、図３でなく図２のモードの場合）、Ｓ１１５からＳ１１６に進み、ファイルサーバＳＶからクライアントＣ１に向けてデータが送信される。既にＳ１１３とＳ１１４によりピアツーピア通信でクライアントＣ２からクライアントＣ１にファイルの先頭ブロックから送信することを指示済であるので、ファイルサーバＳＶからは当該ファイルの末端からブロックを逆順に送信する。この送信は、クライアントＣ１からファイルの受信完了通知を受けるまで続ける（Ｓ１１６）。また、通知を受け取ったらクライアントＣ１とＣ２の情報を削除する（Ｓ１１７）。ファイル転送がピアツーピア通信のみのモード（すなわち、図３のモード）の場合は、Ｓ１１５からＳ１１７に進む。既にＳ１１３とＳ１１４でピアツーピア通信によるファイル転送を指示しているので、サーバＳＶからデータ送信する必要はない。
【００３１】
図５は、図４の処理Ｓ１１３、Ｓ１１４でファイルサーバＳＶがピアツーピア接続の指示をした後のクライアント間のデータ転送処理を示すフローチャートである。クライアントＣ２は、Ｓ１１３でピアツーピア接続の開始を指示されると、クライアントＣ１のアドレスをサーバＳＶから受信してクライアントＣ１からの接続要求を待つ（Ｓ２０１、Ｓ２０２）。クライアントＣ１は、Ｓ１１４でサーバＳＶからクライアントＣ２のアドレスを受信してピアツーピア接続の開始を指示されると、それに従いクライアントＣ２に接続要求を出す（Ｓ２０３、Ｓ２０４）。クライアントＣ２は、この接続要求を確認すると、両クライアントに対してデータの転送指示を行う（Ｓ２０５）。
【００３２】
クライアントＣ１に対しては、ファイルサーバＳＶを送信元として当該ファイルの末尾ブロックから逆順に送信される（図２）か、または送信されない（図３）ので、クライアントＣ２は当該ファイルの先頭ブロックから順に送信する（Ｓ２０６）。逆にクライアントＣ２に対してはファイルサーバＳＶを送信元として当該ファイルの先頭ブロックから順に送信されているので、クライアントＣ１からは当該ファイルの末尾ブロックから逆順に送信する（Ｓ２０７）。ただし、クライアントＣ２に存在するファイルがすでにファイルサーバＳＶ上のものと同一である場合、クライアントＣ２への送信は行わない。
【００３３】
図６は、クライアントでのファイルの受信処理を示すフローチャートである。クライアントがファイルサーバＳＶにファイルの取得を要求すると（Ｓ３０１）、サーバＳＶから、対象ファイルのブロックサイズや総ブロック数などのブロック情報が返されるとともに、サーバＳＶのみからのダウンロードか（図４のＳ１０８）、サーバとピアツーピア通信の併用か（図２）、ピアツーピアのみの通信となるか（図３）、ファイル取得不可能か（図４のＳ１０６）のモードが返される（Ｓ３０２）。ファイルが取得可能であれば（Ｓ３０３）、ブロックを全て受信し（Ｓ３０４）、組み立ててファイル化して（Ｓ３０５）、サーバＳＶやピアツーピア通信の送信元に対してファイルの受信完了を通知する（Ｓ３０６）。ファイル取得不可能のときは（Ｓ３０３）、そのまま終了する。
【００３４】
図７は、サーバＳＶと同じファイルのコピーを持つクライアントの動作を示すフローチャートである。ファイルサーバＳＶに接続して自分のアドレスや所有するファイルの情報をサーバに登録し、ピアツーピア接続の相手となるクライアントが現れるまで待機する（Ｓ４０１）。その後、ピアツーピア通信が開始され（Ｓ４０２）、ファイルのやり取りが完了するとサーバＳＶに登録された自分の情報が削除されるので（Ｓ４０３）、あらためて自分の情報を登録して待機する（Ｓ４０１）。なお、サーバへの登録を止めるまで（Ｓ４０４）のループ終了条件は、該クライアントがサーバＳＶから該ファイルを最初に取得してから一定時間経過したか、サーバＳＶが基準以上のファイル転送速度を回復してから一定時間経過したか、等によって判断する。
【００３５】
図８は、サーバＳＶにおいてクライアントとの接続を管理するテーブルを示した表である。クライアントがサーバに接続すると、当該クライアントのアドレス、要求するファイル名、既に該当ファイルや一部分であるブロックを所持する場合はそれらの情報が、サーバに通知される。サーバＳＶは図８の管理テーブルにそれらの情報を格納する。このテーブルのレコードには、ファイルに対する一つの接続やピアツーピア接続のクライアント同士の接続に対して一意の管理番号を振り、管理を行う。管理テーブルのモードの列には、サーバ単独でのダウンロード、ピアツーピアとサーバからのダウンロードの併用、またはピアツーピアのみのダウンロードの種別が格納される。状態の列には、サーバとクライアント間やクライアント同士で現在どのような通信が行われているかの状態が格納される。サーバが各クライアントからファイルのダウンロードの終了通知を受け取ると、該当する接続情報の列を削除する。
【００３６】
サーバＳＶは、このようなテーブルで各クライアントを管理し、このテーブルにより図７のＳ１０７やＳ１０４の判別を行っている。また、図７のＳ１１１ではこのテーブルの情報をクライアントに送ってピアツーピア通信の相手を決定させている。なお、クライアントにピアツーピアの相手を決定させる代わりに、サーバＳＶが図８のテーブルから適宜に相手クライアントを決定するようにしてもよい。
【００３７】
上記実施の形態では、クライアント２台の場合を示したが、３台以上のクライアントにおいても同様に、並列ダウンロードと相互補完を実行することで、ダウンロード効率を向上できる。この場合、例えばダウンロード対象のファイルをサーバＳＶ側でクライアント台数分の部分ファイルに分割し、各クライアントにはそれぞれ分割された部分ファイルの先頭ブロックからダウンロードさせる、等の方法によって実現可能である。３台以上のクライアントの場合でも、図８に示したのと同様なテーブルで各クライアントの状態をサーバで管理することにより、どのクライアントとどのクライアント間でピアツーピア通信によりどのブロックを転送すればよいかは、すべてサーバが管理できる。従って、サーバは必要充分なピアツーピア通信の指示が出せる。
【００３８】
【発明の効果】
以上説明したように、本発明によれば、サーバとクライアント間の接続によるデータ転送だけでなく、まだサーバから取得していない部分をネットワークに接続された別のマシンから並列で取り込むことにより、従来より高速に情報オブジェクトを取得することができる。このために事前に機器をネットワーク上に用意していく必要も無い。
【００３９】
さらに、クライアント同士でファイルの内容を相互に補完しあうことにより、後からファイルを要求したクライアントだけでなく、先に単独でダウンロード途中であったクライアントも転送速度がより高速になる。
【００４０】
また、ファイルを格納するサーバを管理する上でも、帯域を制限することでクライアントに一定の転送速度を提供することが可能となり、サーバへのアクセス集中によるボトルネックを解消できる。
【図面の簡単な説明】
【図１】実施形態のピアツーピア技術を用いたファイルダウンロードシステムの概念を示す説明図
【図２】ネットワークを通してファイルが処理される過程を示す例の説明図
【図３】サーバにクライアントが接続不可能な場合の事例を示す説明図
【図４】本実施形態でのファイルサーバの処理の流れを示すフローチャート図
【図５】ピアツーピア通信時のクライアントにおけるデータ送信処理のフローチャート図
【図６】クライアントでのファイル受信処理のフローチャート図
【図７】サーバと同じファイルのコピーを持つクライアントの動作を示すフローチャート図
【図８】サーバにおいてクライアントとの接続を管理するテーブルを示す図
【符号の説明】
ＳＶ…ファイルサーバ、Ｃ１…クライアント、Ｃ２…クライアント、ＮＷ…通信ネットワーク、Ｆ１…ファイル、１〜１０…ブロック（ファイルを論理的に分割した単位）。
【図１】
2004213508.tif 000003
【図２】
2004213508.tif 000004
【図３】
2004213508.tif 000005
【図４】
2004213508.tif 000006
【図５】
2004213508.tif 000007
【図６】
2004213508.tif 000008
【図７】
2004213508.tif 000009
【図８】
2004213508.tif 000010