(57)【要約】【課題】サーバとクライアントとの間の通信回線の混雑を抑制する。【解決手段】配信システム１０は、相互に通信可能な複数のクライアント６０と各クライアント６０の配信要求に応じてファイルを配信するサーバ２０とを備え、サーバ２０は各クライアント６０から任意のファイルの配信要求が通知されると、複数のクライアント６０に対して既に配信しているファイルと当該ファイルの配信先の複数のクライアント６０の経路情報とを含む配信履歴情報２２ａに基づき、任意のファイルが配信されているクライアント６０を代理サーバとして選択し、配信要求を通知した各クライアント６０に代理サーバの経路情報を送信し、各クライアント６０は、サーバ２０から送信された経路情報に基づいて代理サーバに、代理サーバが保持する任意のファイルの配信要求を送信する。【選択図】図１
2012053558.tif 000002
【特許請求の範囲】
【請求項１】
相互に通信可能な複数のクライアントと各クライアントの配信要求に応じて当該各クライアントにファイルを配信するサーバとを備えた配信システムにおいて、
前記サーバは、前記各クライアントから任意のファイルの配信要求が通知されると、前記複数のクライアントに対して既に配信しているファイルと当該ファイルの配信先の前記複数のクライアントの経路情報とを含む配信履歴を表す配信履歴情報に基づき、前記任意のファイルが配信されているクライアントを代理サーバとして選択する代理サーバ選択部と、配信要求を通知した前記各クライアントに前記代理サーバの前記経路情報を送信する代理サーバ情報送信部とを有し、
前記各クライアントは、前記サーバから送信された前記経路情報に基づいて前記代理サーバに、前記代理サーバが保持する前記任意のファイルの配信要求を送信する配信要求部を有する、
ことを特徴とする配信システム。
【請求項２】
前記各クライアントの前記配信要求部は、前記代理サーバから前記任意のファイルの配信要求に対してアクセス不可を表す応答があった場合に前記サーバに前記応答を通知し、
前記サーバは、前記各クライアントから前記応答が通知されると、前記各クライアントに前記任意のファイルを配信するファイル配信部を有する、
ことを特徴とする請求項１記載の配信システム。
【請求項３】
前記任意のファイルが配信されている前記クライアントが複数ある場合には、前記サーバの前記代理サーバ選択部は、複数の前記クライアントのうち、前記代理サーバとして前記各クライアントに配信したファイルの総量を表す代理サーバ負荷量が所定量以下である前記クライアントを前記代理サーバとして選択する、
ことを特徴とする請求項１記載の配信システム。
【請求項４】
前記任意のファイルが配信されている前記クライアントが複数ある場合には、前記サーバの前記代理サーバ選択部は、複数の前記クライアントのうち、複数の前記クライアントに対してファイルの配信要求を行っている別のクライアントの数が所定数以下の前記クライアントを前記代理サーバとして選択する、
ことを特徴とする請求項１記載の配信システム。
【請求項５】
前記複数のクライアントはそれぞれ同一のルータに接続され、同一セグメント内に配置されていることを特徴とする請求項１記載の配信システム。
【請求項６】
相互に通信可能な複数のクライアントと各クライアントからの配信要求に応じてファイルを配信するサーバとによる配信方法において、
前記サーバは、前記各クライアントから任意のファイルの配信要求が通知されると、前記複数のクライアントに対して既に配信しているファイルと当該ファイルの配信先の前記複数のクライアントの経路情報とを含む配信履歴を表す配信履歴情報に基づき、前記任意のファイルが配信されているクライアントを代理サーバとして選択し、配信要求を通知した前記各クライアントに前記代理サーバの前記経路情報を送信し、
前記各クライアントは、前記サーバから送信された前記経路情報に基づいて前記代理サーバに、前記代理サーバが保持する前記任意のファイルの配信要求を送信する、
ことを特徴とする配信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
配信システム及び配信方法に関する。
【背景技術】
【０００２】
クライアントがサーバからファイル等を配信する場合には、一般に、以下のような方法が行われる。
図１５は、サーバとクライアントとから構成される配信システムの構成を示す図である。
【０００３】
配信システム７００は、サーバ１２００と、サーバ１２００に接続されたゲートウェイ４００から分岐された２つのルータ５００（５００ａ，５００ｂ）にそれぞれ接続された複数のクライアント１６００とを備える。なお、ルータ５００ａに接続されたクライアント１６００ａ〜１６００ｃはセグメント１内であって、相互にアクセス可能である。また、ルータ５００（図１５中右側）に接続されたクライアント（図示を省略）はセグメント２内に配置されている。
【０００４】
各クライアント１６００はサーバ１２００に対して、ファイルの配信要求を送信すると、サーバ１２００は当該配信要求を行ったクライアント１６００にファイルを配信して、クライアント１６００はファイルを直接配信される。
【０００５】
例えば、クライアント１６００ａがサーバ１２００に対してファイルの配信要求を送信すると、当該配信要求を受信したサーバ１２００から配信されたファイルは、ゲートウェイ４００、ルータ５００ａを経由して、クライアント１６００ａに配信される。
【０００６】
なお、このようなクライアントとしては、いわゆる、コンピュータ、プリンタ（例えば、特許文献１参照）等を適用することができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−２２１５２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
このような配信システム７００では、サーバ１２００がウェブサーバである場合、ウェブサーバは、クライアント１６００の配信要求に応じてファイルを配信する際には、クライアント数×ファイル数の配信数がウェブサーバと各クライアント１６００との間で発生する。特に配信要求を行ったクライアント１６００の数が多い場合には、クライアント１６００とウェブサーバとの間の通信回線が混雑して、回線速度が低下し、ウェブサーバでの処理も低下するという問題点があった。
【０００９】
また、サーバ１２００がプロキシサーバである場合には、プロキシサーバを物理的に設置する必要があり、また、クライアント数が多い場合にも、ウェブサーバと同様に通信回線が混雑して回線速度が低下して、プロキシサーバの処理も低下するという問題が生じる。
【００１０】
本発明はこのような点に鑑みてされたものであり、サーバとクライアントとの間の通信回線の混雑が抑制された配信システム及び配信方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、相互に通信可能な複数のクライアントと各クライアントの配信要求に応じて当該各クライアントにファイルを配信するサーバとを備えた配信システムが提供される。このような配信システムでは、前記サーバは、前記各クライアントから任意のファイルの配信要求が通知されると、前記複数のクライアントに対して既に配信しているファイルと当該ファイルの配信先の前記複数のクライアントの経路情報とを含む配信履歴を表す配信履歴情報に基づき、前記任意のファイルが配信されているクライアントを代理サーバとして選択する代理サーバ選択部と、配信要求を通知した前記各クライアントに前記代理サーバの前記経路情報を送信する代理サーバ情報送信部とを有し、前記各クライアントは、前記サーバから送信された前記経路情報に基づいて前記代理サーバに、前記代理サーバが保持する前記任意のファイルの配信要求を送信する配信要求部を有する。
【００１２】
また、上記目的を達成するために、上記の配信システムと同様の配信方法が提供される。
【発明の効果】
【００１３】
上記の配信システム及び配信方法によれば、サーバとクライアントとの間の通信回線の混雑を抑制することができる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態に係るサーバとクライアントとから構成される配信システムの構成を示す図である。
【図２】第２の実施の形態に係る配信システムのシステム構成例を示す図である。
【図３】第２の実施の形態に係る配信システムのサーバのハードウェア構成例を示す図である。
【図４】第２の実施の形態に係る配信システムのサーバが備える機能を示すブロック図である。
【図５】第２の実施の形態に係る配信システムのサーバが具備するテーブルの具体例を示す図である。
【図６】第２の実施の形態に係る配信システムのクライアントが備える機能を示すブロック図である。
【図７】第２の実施の形態に係る配信システムでファイルを配信するためのシークエンス図である。
【図８】第２の実施の形態に係る配信システムのサーバのファイルの配信要求を待ち受けるための処理手順を示すフローチャート図である。
【図９】第２の実施の形態に係る配信システムのサーバからファイルを配信するための処理手順を示すフローチャート図（その１）である。
【図１０】第２の実施の形態に係る配信システムのサーバからファイルを配信するための処理手順を示すフローチャート図（その２）である。
【図１１】第２の実施の形態に係る配信システムのサーバで代理サーバを選択するための処理手順を示すフローチャート図（その１）である。
【図１２】第２の実施の形態に係る配信システムのサーバで代理サーバを選択するための処理手順を示すフローチャート図（その２）である。
【図１３】第２の実施の形態に係る配信システムの代理サーバでファイルを送信するための処理手順を示すフローチャート図である。
【図１４】第２の実施の形態に係る配信システムのクライアントがファイルを受信するための処理手順を示すフローチャート図である。
【図１５】サーバとクライアントとから構成される配信システムの構成を示す図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して実施の形態について説明する。
［第１の実施の形態］
図１は、第１の実施の形態に係るサーバとクライアントとから構成される配信システムの構成を示す図である。
【００１６】
配信システム１０は、相互に通信可能な複数のクライアント６０と各クライアント６０（クライアント６０ａ〜６０ｃ）の配信要求に応じて当該各クライアント６０にファイルを配信するサーバ２０とを備えた配信システム１０に関するものである。当該配信システム１０では、サーバ２０は、各クライアント６０から任意のファイルの配信要求が通知されると、配信履歴情報２２ａに基づき、任意のファイルが配信されているクライアント６０を代理サーバとして選択し、配信要求を通知した各クライアント６０に代理サーバの経路情報を送信し、各クライアント６０は、サーバ２０から送信された経路情報に基づいてクライアント６０に、代理サーバが保持する任意のファイルの配信要求を通知するものである。
【００１７】
このような配信システム１０は、サーバ２０と、サーバ２０とネットワーク３００を介して、ルータ５００で接続された相互に通信可能な複数のクライアント６０とを有する。
サーバ２０は、ファイル格納部２１と、受信部２２と、代理サーバ選択部２３と、代理サーバ情報送信部２４と、ファイル配信部２５とを有する。
【００１８】
ファイル格納部２１は、クライアント６０に対して配信する各種ファイルが格納されている。
受信部２２は、クライアント６０からの配信要求等の通知を受信する。
【００１９】
代理サーバ選択部２３は、各クライアント６０からファイルの配信要求が通知されると、配信履歴情報２２ａに基づき、要求されたファイルが配信されているクライアント６０を代理サーバとして選択する。なお、配信履歴情報２２ａは、複数のクライアント６０に対して既に配信しているファイルと、当該ファイルの配信先の各クライアント６０の経路情報とを含む配信履歴を表すものである。また、経路情報は、サーバ２０から各クライアント６０までの経路を表す情報である。例えば、図１の場合では、サーバ２０のＩＰアドレスを“ａ”、ルータ５００のＩＰアドレスを“ｂ”、クライアント６０ａのＩＰアドレスを“ｃ”とする場合のクライアント６０ａの経路情報は、“ａ／ｂ／ｃ”と表すことができる。
【００２０】
また、代理サーバ選択部２３は、要求されたファイルが配信されているクライアント６０が複数ある場合には、さらに、クライアント情報２２ｂに基づいて、当該複数のクライアント６０から適切な代理サーバを選択することができる。なお、クライアント情報２２ｂには、各クライアント６０が代理サーバとして配信したファイルの累積バイト数等の代理サーバ負荷に関する情報を有する。
【００２１】
代理サーバ情報送信部２４は、配信要求を通知した各クライアント６０に代理サーバ選択部２３が選択した代理サーバの経路情報等を含む代理サーバ情報を送信する。
ファイル配信部２５は、代理サーバ選択部２３がクライアント６０から代理サーバを選択できない（しない）場合に、ファイル格納部２１から要求されたファイルをクライアント６０に配信する。
【００２２】
他方、クライアント６０は、サーバ２０から通知された経路情報等を含む代理サーバ情報に基づいて代理サーバに、代理サーバが保持するファイルの配信要求を送信する配信要求部を有する。なお、クライアント６０は、クライアント６０ａ〜６０ｃを有し、各クライアント６０ａ〜６０ｃは同じ構成をしており、図１では、クライアント６０ａが有する配信要求部６１の記載を省略している。
【００２３】
このような構成を有する配信システム１０におけるファイルの配信方法について具体的に説明する。
まず、クライアント６０ａには、クライアント６０ａからのファイル２１ａの配信要求に応じてサーバ２０のファイル配信部２５によりファイル格納部２１に格納されているファイル２１ａが予め配信されている。また、配信履歴情報２２ａには、クライアント６０ａに配信されているファイル２１ａのファイル名と、クライアント６０ａの経路情報とが記録される。
【００２４】
次いで、クライアント６０ｂがファイル２１ａの配信要求をサーバ２０に通知する。サーバ２０では、受信部２２がクライアント６０ｂの経路情報と、ファイル２１ａの配信要求とを受信して、代理サーバ選択部２３に通知する。
【００２５】
代理サーバ選択部２３は、配信履歴情報２２ａを参照して、ファイル２１ａが既に配信されているクライアント６０ａを代理サーバとして選択する。さらに、ファイル２１ａが既に配信されているクライアント６０が複数ある場合には、代理サーバ選択部２３は、クライアント情報２２ｂを参照して、複数のクライアント６０から、代理サーバ負荷が小さいクライアント６０ａを選択する。代理サーバ情報送信部２４は、このようにして選択されたクライアント６０ａの経路情報等を含む代理サーバ情報をクライアント６０ｂに送信する。
【００２６】
クライアント６０ｂの配信要求部６１は、サーバ２０から送信された代理サーバ情報が含む経路情報を参照して、クライアント６０ａにアクセスして、ファイル２１ａの配信要求を送信する。これにより、クライアント６０ｂには、クライアント６０ａからファイル２１ａが配信される。
【００２７】
一方、クライアント６０ｂが、クライアント６０ａにアクセスした際に、クライアント６０ａの回線不通といった不具合等により、クライアント６０ａからアクセス不可の応答を受信し、ファイル２１ａが配信されないことがある。この場合、クライアント６０ｂの配信要求部６１は当該アクセス不可の応答と共にファイル２１ａの配信要求をサーバ２０に送信する。サーバ２０では、受信部２２がアクセス不可とファイル２１ａの配信要求との通知を受信して、代理サーバ選択部２３に通知する。
【００２８】
代理サーバ選択部２３は、上記と同様に、配信履歴情報２２ａを参照して、新たに代理サーバを選択できた場合には、代理サーバ情報送信部２４が、新たに選択された代理サーバの代理サーバ情報をクライアント６０ｂに再び送信する。選択できない場合には、ファイル配信部２５が配信要求に応じてファイル格納部２１からファイル２１ａをクライアント６０ｂに配信する。
【００２９】
このように、上記の配信システム１０では、サーバ２０は、クライアント６０ｂからのファイル２１ａの配信要求に応じて、配信履歴情報２２ａを参照して、既にファイル２１ａが配信されているクライアント６０ａを代理サーバとして選択する。そして、サーバ２０は、クライアント６０ａの経路情報等を含む代理サーバ情報をクライアント６０ｂに通知することで、クライアント６０ｂは、当該ファイル２１ａが配信されている代理サーバのクライアント６０ａからファイル２１ａが配信される。これにより、配信システム１０では、クライアント６０間でファイル２１ａの配信が実行されて、サーバ２０と各クライアント６０との間でのファイル２１ａの配信が減少するために、サーバ２０と各クライアント６０との間の通信回線の混雑が抑制されて回線速度の低下が防止される。
【００３０】
また、クライアント６０が代理サーバにアクセスできない場合、または、代理サーバを新たに選択できない場合には、サーバ２０のファイル配信部２５からファイル２１ａをクライアント６０ｂに配信するようにした。このため、配信要求を通知したクライアント６０ｂに対して確実に要求されたファイルを配信することができるようになる。
【００３１】
［第２の実施の形態］
第２の実施の形態では、第１の実施の形態の配信システムについてより具体的に説明する。
【００３２】
図２は、第２の実施の形態に係る配信システムのシステム構成例を示す図である。
配信システム１００は、サーバ２００と、サーバ２００とネットワーク３００を介してゲートウェイ４００にさらに接続されたルータ５００ａ，５００ｂに接続された複数のクライアント６００とを有し、サーバ２００からファイルＦが配信要求に応じて各クライアント６００に配信される。
【００３３】
ルータ５００ａ，５００ｂ以下の各セグメント１，２内のクライアント６００は、当該セグメント内において相互にアクセス可能である。なお、図２では、セグメント１内にクライアント６００のクライアント６００ａ〜６００ｃが配置されており、セグメント２内には、セグメント１と同様に図示しないクライアントが配置されている。また、クライアント６００ａ〜６００ｃのクライアント名はクライアントＡ〜Ｃである。
【００３４】
また、各部にＩＰアドレスを次のように割り当てている。サーバ２００には“ａ”、ゲートウェイ４００には“ｂ”、ルータ５００ａ，５００ｂには“ｃ”，“ｄ”、クライアント６００ａ〜６００ｃには“ｅ”〜“ｇ”を割り当てている。
【００３５】
図３は、第２の実施の形態に係る配信システムのサーバのハードウェア構成例を示す図である。
配信システム１００を構成するサーバ２００は、ＣＰＵ（Central Processing Unit）２００ａによってサーバ２００全体が制御されている。ＣＰＵ２００ａには、バス２００ｇを介してＲＡＭ（Random Access Memory）２００ｂ、ハードディスクドライブ（ＨＤＤ：Hard Disc Drive）２００ｃ、グラフィック処理部２００ｄ、入力インタフェース２００ｅ及び通信インタフェース２００ｆが接続されている。
【００３６】
ＲＡＭ２００ｂには、ＣＰＵ２００ａに実行させるＯＳ（Operating System）プログラム並びにアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ２００ｂには、ＣＰＵ２００ａによる処理に必要な各種データが格納される。
【００３７】
ＨＤＤ２００ｃには、ＯＳプログラム並びにアプリケーションプログラムが格納される。
グラフィック処理部２００ｄには、モニタ２００ｈが接続されている。グラフィック処理部２００ｄは、ＣＰＵ２００ａからの命令に従って、画像をモニタ２００ｈの画面に表示させる。
【００３８】
入力インタフェース２００ｅには、キーボード２００ｉとマウス２００ｊとが接続されている。入力インタフェース２００ｅは、キーボード２００ｉ及びマウス２００ｊから送られてくる信号をバス２００ｇを介してＣＰＵ２００ａに送信する。
【００３９】
通信インタフェース２００ｆは、ネットワーク３００、ゲートウェイ４００、ルータ５００ａ，５００ｂを介して各クライアント６００にアクセスして、各クライアント６００にファイルの配信または各クライアント６００からの配信要求等が通知される。
【００４０】
なお、各クライアント６００もこのようなハードウェア構成を有する。
以上のようなハードウェア構成を有するサーバ２００及びクライアント６００を有する配信システム１００の処理機能を実現することができる。
【００４１】
次にサーバ２００及びクライアント６００が有する機能構成について説明する。
まず、サーバ２００が備える機能について説明する。
図４は、第２の実施の形態に係る配信システムのサーバが備える機能を示すブロック図である。
【００４２】
サーバ２００は、クライアント６００からのファイルの配信要求に応じて、当該ファイルを配信し、また、当該ファイルが配信されている他のクライアント６００を代理サーバとして選択し、代理サーバ情報を配信要求を行ったクライアント６００に通知するものである。
【００４３】
このようなサーバ２００は、図４に示されるように、ファイル格納部２１１と、クライアント情報保持部２１２と、配信履歴情報保持部２１３とを有する。さらにサーバ２００は、受信部２２０と、通知判別部２３０と、更新部２４０と、代理サーバ選択部２５０と、配信実行要求部２６０と、代理サーバ情報送信要求部２７０と、送信部２８０とを有する。なお、図１の代理サーバ情報送信部２４は、代理サーバ情報送信要求部２７０と送信部２８０との機能により実現され、ファイル配信部２５は、配信実行要求部２６０と送信部２８０との機能により実現される。
【００４４】
ファイル格納部２１１は、クライアント６００からの配信要求に応じて、当該クライアント６００に対して配信する各種ファイルが格納されている。
クライアント情報保持部２１２は、各クライアント６００について、代理サーバとして利用可能か否か、代理サーバとして他のクライアントに配信させたファイルの総バイト数等に関する情報を保持する。
【００４５】
配信履歴情報保持部２１３は、各クライアント６００から配信要求があったファイル、当該ファイルの配信先のクライアント６００の経路情報等に関する情報を保持する。
ここで、クライアント情報保持部２１２及び配信履歴情報保持部２１３が保持する情報について具体例を挙げて説明する。
【００４６】
図５は、第２の実施の形態に係る配信システムのサーバが具備するテーブルの具体例を示す図である。
なお、図５（Ａ）はクライアント情報保持部２１２に保持されているクライアント情報テーブルを、図５（Ｂ）は配信履歴情報保持部２１３に保持されている配信履歴情報テーブルをそれぞれ表す。
【００４７】
まず、クライアント情報保持部２１２に保持されているクライアント情報テーブルは、図５（Ａ）に示されるように、「経路情報（クライアント名）」、「代理サーバ可否」、「代理サーバ負荷（累積バイト数）」、「代理サーバ負荷（現在の接続数）」に関する情報により構成されている。
【００４８】
「経路情報」は、サーバ２００から各クライアント６００までの経路を表す情報であって、ここでは、サーバ２００／ゲートウェイ４００／ルータ５００ａ，５００ｂ／クライアント６００のＩＰアドレスの順で表される。したがって、経路情報にはクライアント６００のクライアント名が対応付けられる。例えば、図５（Ａ）において、「経路情報」の“ａ／ｂ／ｃ／ｅ”からクライアント６００のクライアント６００ａ（クライアントＡ）であることが分かる（図２参照）。
【００４９】
また、このような「経路情報」は、例えば、各クライアント６００のＯＳに用意されているｔｒａｃｅｒｔコマンドを利用して知ることができる。まず、各クライアント６００は指定したサーバ２００に対して、ｔｒａｃｅｒｔコマンドを送信し、サーバ２００への途中で経由したルータ５００ａ，５００ｂ及びゲートウェイ４００を逐一知ることができる。このようにして知ることができた、クライアント６００のＩＰアドレスと、サーバ２００のＩＰアドレスと、クライアント６００からサーバ２００までに経由したゲートウェイ４００等のＩＰアドレスとにより、経路情報を得ることができる。
【００５０】
「代理サーバ可否」は、「経路情報」に対応する各クライアント６００が代理サーバとして利用可能か否かを表す。利用可能であれば“可”が、利用不可であれば“不可”がそれぞれ記録される。図５（Ａ）の場合では、「経路情報」に対応するクライアントＡ〜Ｃは全て代理サーバとして利用可能である。
【００５１】
「代理サーバ負荷（累積バイト数）」は、「経路情報」に対応する各クライアント６００が代理サーバとして他のクライアント６００に対して配信したファイルの総バイト数を表す。例えば、図５（Ａ）の「経路情報」の“ａ／ｂ／ｃ／ｆ”に対応するクライアントＢは、代理サーバとして、“８２００バイト”を他のクライアント６００に配信していることが示されている。
【００５２】
「代理サーバ負荷（現在の接続数）」は、代理サーバとして「経路情報」に対応する各クライアント６００に対し、現在、ファイルの配信要求を行っている他の各クライアント６００の数を表す。図５（Ａ）の場合では、いずれの「経路情報」に対応するクライアントＡ〜Ｃに対して、配信要求を行う他のクライアント６００は無いことが示されている。
【００５３】
クライアント情報テーブルは、クライアント６００からファイルの配信要求が行われるごとに、後述する更新部２４０により図５（Ａ）に示されるように、１行ずつ追加され、サーバ２００及び代理サーバからファイルの配信等が行われると更新部２４０により更新される。
【００５４】
次いで、配信履歴情報保持部２１３に保持されている配信履歴情報テーブルは、図５（Ｂ）に示されるように、「経路情報（クライアント名）」、「要求ファイル名」、「配信（ダウンロード）状況」、「配信回数」の項目により構成されている。
【００５５】
「経路情報」は、サーバ２００に対してファイルの配信要求を行ったクライアント６００に対応するものである。クライアント情報テーブルの場合と同様に、「経路情報」にはクライアント６００のクライアント名が対応付けられる。
【００５６】
「要求ファイル名」は、上記の「経路情報」に対応するクライアント６００がサーバ２００に対して配信要求を行ったファイルのファイル名である。
「配信状況」は、「経路情報」に対応するクライアント６００がサーバ２００に対して配信要求を行ったファイルの、当該クライアント６００に対する配信状況を表す。即ち、「経路情報」に対応するクライアント６００のファイルの配信要求に応じて、サーバ２００から当該クライアント６００に対して当該ファイルの配信が完了していれば、“配信済”と記録される。また、当該クライアント６００に対して当該ファイルの配信が途中、またはこれから配信されるのであれば、“配信中”と記録される。
【００５７】
「配信回数」は、上記の「経路情報」に対応するクライアント６００が代理サーバとして当該ファイルを他のクライアント６００に配信した回数を表す。
具体的に、図５（Ｂ）の場合では、「経路情報」の“ａ／ｂ／ｃ／ｅ”に対応するクライアントＡはサーバ２００に対して“ファイルＡ”の配信要求を行っており、当該ファイルＡはクライアントＡに配信されている。また、クライアントＡは他のクライアント６００に対してファイルＡを１回配信している。図５（Ｂ）の場合の別の例では、「経路情報」の“ａ／ｂ／ｃ／ｇ”に対応するクライアントＣはサーバ２００に対して“ファイルＢ”の配信要求を行っているが、当該ファイルＢはクライアントＢに対して配信中、またはこれから配信される。
【００５８】
配信履歴情報テーブルも、クライアント６００からファイルの配信要求が行われるごとに、後述する更新部２４０により図５（Ｂ）に示されるように、１行ずつ追加され、サーバ２００及び代理サーバからファイルの配信等が行われると更新部２４０により更新される。
【００５９】
クライアント情報保持部２１２及び配信履歴情報保持部２１３は上記のようなテーブルを保持する。
図４に戻り、受信部２２０は、各クライアント６００からの配信要求等の通知を受信する。
【００６０】
通知判別部２３０は、受信部２２０が受信したクライアント６００からの通知内容を判別する。通知判別部２３０は、通知内容がファイルの配信要求である場合には、その旨を代理サーバ選択部２５０に通知する。
【００６１】
更新部２４０は、通知判別部２３０による通知内容に応じ、また、後述する代理サーバ選択部２５０の選択結果等に応じて、クライアント情報保持部２１２が保持するクライアント情報テーブルと、配信履歴情報保持部２１３が保持する配信履歴情報テーブルとをそれぞれ更新する。
【００６２】
代理サーバ選択部２５０は、クライアント６００からファイルの配信要求が通知されると、クライアント情報保持部２１２及び配信履歴情報保持部２１３を参照して、配信要求を行ったクライアント６００が存在するセグメント内の他のクライアント６００から代理サーバを選択する。
【００６３】
配信実行要求部２６０は、代理サーバ選択部２５０が代理サーバを選択しない（できない）場合に、送信部２８０から、配信要求に応じてファイル格納部２１１内のファイルをクライアント６００に配信させる。
【００６４】
代理サーバ情報送信要求部２７０は、送信部２８０から、代理サーバ選択部２５０が選択した代理サーバのクライアント６００のＩＰアドレス（経路情報）等を含む代理サーバ情報を配信要求を行ったクライアント６００に送信させる。
【００６５】
送信部２８０は、配信実行要求部２６０の配信実行要求に応じて、配信要求を行ったクライアント６００に対して、配信要求があったファイルを配信する。また、送信部２８０は、代理サーバ情報送信要求部２７０の送信要求に応じて、配信要求を行ったクライアントに対して代理サーバ情報を送信する。
【００６６】
次にクライアント６００が備える機能について説明する。
図６は、第２の実施の形態に係る配信システムのクライアントが備える機能を示すブロック図である。
【００６７】
クライアント６００は、サーバ２００に対してファイルの配信要求を行って、サーバ２００から当該ファイルが配信され、または、サーバ２００から配信された代理サーバ情報に応じて、当該代理サーバにアクセスして当該ファイルが配信されるものである。
【００６８】
このようなクライアント６００は、ファイル格納部６１０と、受信部６２０と、経路情報取得部６３０と、配信要求部６４０と、送信部６５０と、通知判別部６６０と、アクセス要求部６７０と、配信実行要求部６８０と、通知部６９０とを有する。なお、図１の配信要求部６１は受信部６２０と、通知判別部６６０と、アクセス要求部６７０と、送信部６５０とが備える機能により実現される。
【００６９】
ファイル格納部６１０は、当該クライアント６００のファイルの配信要求に応じて、サーバ２００または代理サーバから配信された当該ファイルを格納する。
受信部６２０は、サーバ２００からのファイル及び代理サーバの情報等の通知を受信する。
【００７０】
経路情報取得部６３０は、サーバ２００を指定してＯＳのｔｒａｃｅｒｔコマンドを送信部６５０に送信させて、受信部６２０が受信するサーバ２００からのｔｒａｃｅｒｔコマンドに対する応答に基づき、クライアント６００の経路情報を取得することができる。
【００７１】
配信要求部６４０は、送信部６５０にサーバ２００に対して、経路情報取得部６３０が取得した経路情報と共に、ファイルの配信要求を通知させる。
送信部６５０は、経路情報取得部６３０によるｔｒａｃｅｒｔコマンド、配信要求部６４０による経路情報と配信要求、その他の要求等の通知をサーバ２００に対して送信する。
【００７２】
通知判別部６６０は、受信部６２０が受信したサーバ２００からの通知内容を判別する。
アクセス要求部６７０は、通知判別部６６０で判別された通知内容が、サーバ２００からの代理サーバ情報である場合には、当該代理サーバ情報に基づいて、送信部６５０に、代理サーバにアクセス要求を通知させる。
【００７３】
配信実行要求部６８０は、通知判別部６６０で判別された通知内容が他のクライアント６００からの配信要求である場合に、送信部６５０に、代理サーバとして、配信要求に応じて、ファイル格納部６１０のファイルを他のクライアント６００に通知させる。
【００７４】
通知部６９０はファイル格納部６１０に配信要求したファイルを格納することができた場合に、送信部６５０に、サーバ２００に対してその旨を通知させる。また、通知部６９０は代理サーバからアクセス不可の応答を受信した場合にサーバ２００に対して、その旨を送信部６５０に送信させる。
【００７５】
このようなハードウェア構成および機能を備えるサーバ２００及びクライアント６００で構成される配信システム１００の動作について以下に説明する。
図７は、第２の実施の形態に係る配信システムでファイルを配信するためのシークエンス図である。
【００７６】
なお、図７では、サーバ２００と、セグメント１内のクライアントＡ〜Ｃとの通信について説明する。また、以下では、クライアントＡ〜Ｃからサーバ２００に対して配信要求されるファイルは同じものである。
【００７７】
［ステップＳ１１］クライアントＡ２００ａがサーバ２００に対して、ファイルの配信要求を通知する。
［ステップＳ１２］サーバ２００はクライアントＡ２００ａの配信要求が通知されると、所定のサーバ処理を行って、代理サーバを選択しないことを判断する。
【００７８】
［ステップＳ１３］サーバ２００は、配信要求に応じて、要求されたファイルをクライアントＡ２００ａに配信する。
［ステップＳ１４］クライアントＢ２００ｂがサーバ２００に対して、ファイルの配信要求を通知する。
【００７９】
［ステップＳ１５］サーバ２００はクライアントＢ２００ｂの配信要求が通知されると、所定のサーバ処理を行って、代理サーバとしてクライアントＡ２００ａを選択する。
［ステップＳ１６］クライアントＡ２００ａは要求したファイルの受信が完了すると、配信完了をサーバ２００に対して通知する。
【００８０】
［ステップＳ１７］サーバ２００は、代理サーバとしてクライアントＡ２００ａの経路情報（ＩＰアドレス）をクライアントＢ２００ｂに通知する。
［ステップＳ１８］クライアントＢ２００ｂがクライアントＡ２００ａのＩＰアドレスに基づきクライアントＡ２００ａに対して、ファイルの配信要求を通知する。
【００８１】
［ステップＳ１９］クライアントＡ２００ａは、配信要求に応じて、要求されたファイルをクライアントＢ２００ｂに配信する。
［ステップＳ２０］クライアントＢ２００ｂは要求したファイルの受信が完了すると、配信完了をサーバ２００に対して通知する。
【００８２】
［ステップＳ２１］クライアントＣ２００ｃがサーバ２００に対して、ファイルの配信要求を通知する。
［ステップＳ２２］サーバ２００はクライアントＣ２００ｃの配信要求が通知されると、所定のサーバ処理を行って、代理サーバとしてクライアントＢ２００ｂを選択する。
【００８３】
［ステップＳ２３］サーバ２００は、代理サーバとしてクライアントＢ２００ｂの経路情報（ＩＰアドレス）をクライアントＣ２００ｃに通知する。
［ステップＳ２４］クライアントＣ２００ｃがクライアントＢ２００ｂのＩＰアドレスに基づきクライアントＢ２００ｂに対して、ファイルの配信要求を通知する。
【００８４】
［ステップＳ２５］クライアントＢ２００ｂは、配信要求に応じて、要求されたファイルをクライアントＣ２００ｃに配信する。
［ステップＳ２６］クライアントＣ２００ｃは要求したファイルの受信が完了すると、配信完了をサーバ２００に対して通知する。
【００８５】
配信システム１００では、サーバ２００とクライアント６００との間で例えば上記のような要求等の通知が行われて、ファイルの配信が行われる。
次に、このような配信システム１００のサーバ２００、クライアント６００で行われる処理の詳細について説明する。
【００８６】
図８は、第２の実施の形態に係る配信システムのサーバのファイルの配信要求を待ち受けるための処理手順を示すフローチャート図である。
［ステップＳ１１０］サーバ２００は、受信部２２０で各クライアント６００からのファイルの配信要求を待ち受ける。
【００８７】
［ステップＳ１２０］サーバ２００の通知判別部２３０は、受信部２２０が受信した通知がファイル配信要求を表す電文であるか否かを判別する。次の処理は、受信部２２０が各クライアント６００からファイル配信要求を表す電文を受信するまでステップＳ１１０が繰り返されて、当該電文を受信するとステップＳ１３０に進められる。
【００８８】
［ステップＳ１３０］サーバ２００は、クライアント６００ごとにファイル配信要求の電文を受信すると、ファイルの配信処理を並列で実行する。
次に、図８のステップＳ１３０で実行されるファイルの配信処理の詳細について説明する。
【００８９】
図９及び図１０は、第２の実施の形態に係る配信システムのサーバからファイルを配信するための処理手順を示すフローチャート図である。
サーバ２００において、図８のステップＳ１２０で各クライアント６００からのファイルの配信要求をそれぞれ受信すると、クライアント６００ごとに以下の処理が並列に実行される。
【００９０】
［ステップＳ１３１］更新部２４０は、通知判別部２３０が判別したファイルの配信要求に応じて、配信要求したクライアント６００に関してクライアント情報テーブル（図５（Ａ））と配信履歴情報テーブル（図５（Ｂ））とをそれぞれ更新する。具体的には、クライアント情報テーブルの「経路情報」に配信要求を行ったクライアント６００の経路情報を記録して、「代理サーバ可否」、「代理サーバ負荷（累積バイト数）」及び「代理サーバ負荷（現在の接続数）」にそれぞれ“０”を記録する。また、配信履歴情報テーブルの「経路情報」と「要求ファイル名」とに配信要求を行ったクライアント６００の経路情報と配信要求されたファイル名とをそれぞれ記録する。「配信状況」と「配信回数」とに、“配信中”と“０（回）”とをそれぞれ記録する。なお、新たな配信要求の場合は、「配信状況」には“配信中”と記録することにする。
【００９１】
［ステップＳ１３２］代理サーバ選択部２５０は、通知判別部２３０からファイルの配信要求が通知されると、配信履歴情報保持部２１３を参照して、配信要求を行ったクライアント６００が存在するセグメント内の他のクライアント６００から代理サーバの選択処理を実行する。なお、ステップＳ１３２の処理の詳細については後述する。
【００９２】
［ステップＳ１３３］ステップＳ１３２における代理サーバ選択部２５０に応じて、次の処理は、代理サーバ選択部２５０が代理サーバを選択しない（できない）場合にはステップＳ１３４に進められ、選択した場合にはステップＳ１３８に進められる。
【００９３】
［ステップＳ１３４］配信実行要求部２６０は、送信部２８０に、配信要求に応じて、クライアント６００に対してファイル格納部２１１のファイルを配信させる。
［ステップＳ１３５］受信部２２０は、ステップＳ１３４のファイルの配信先のクライアント６００からの配信完了通知の電文を待ち受ける。
【００９４】
［ステップＳ１３６］通知判別部２３０は、受信部２２０が受信した通知が、ステップＳ１３４のファイルの配信先のクライアント６００からの配信完了通知の電文であるか否かを判別する。次の処理は、当該クライアント６００からの配信完了通知を受信するまでステップＳ１３５が繰り返されて、当該クライアント６００からの配信完了通知を受信するとステップＳ１３７に進められる。
【００９５】
［ステップＳ１３７］更新部２４０は、配信要求を行ったクライアント６００に関する配信履歴情報テーブル（図５（Ｂ））の「配信状況」を“配信済”に更新する。
［ステップＳ１３８］さらに、次の処理は、代理サーバとして選択されたクライアント６００について、配信履歴情報テーブル（図５（Ｂ））の「配信状況」に“配信中”が記録されている場合にはステップＳ１３９に進められ、“配信中”が記録されていない場合にはステップＳ１３０ｂに進められる。
【００９６】
［ステップＳ１３９］受信部２２０は、配信履歴情報テーブルの「配信状況」が“配信中”である、代理サーバとして選択されたクライアント６００からのファイルの配信完了通知の電文を待ち受ける。
【００９７】
［ステップＳ１３０ａ］通知判別部２３０は、受信部２２０が受信した通知が、代理サーバとして選択されたクライアント６００からの配信完了通知の電文であるか否かを判別する。次の処理は、当該クライアント６００からの配信完了通知を受信するまでステップＳ１３９が繰り返されて、当該クライアント６００からの配信完了通知を受信するとステップＳ１３０ｂに進められる。
【００９８】
即ち、ステップＳ１３８，Ｓ１３９，Ｓ１３０ａで、代理サーバとして選択されたクライアント６００にステップＳ１２０で要求されたファイルが配信されることになる。
［ステップＳ１３０ｂ］代理サーバ情報送信要求部２７０は、送信部２８０に、配信要求を行った当該クライアント６００に対して代理サーバ選択部２５０が選択した代理サーバの経路情報等を含む代理サーバ情報の電文を送信させる。
【００９９】
［ステップＳ１３０ｃ］更新部２４０は、代理サーバとして選択されたクライアント６００に関するクライアント情報テーブル（図５（Ａ））の「代理サーバ負荷（累積バイト数）」を配信要求のファイルの“バイト数”分増加して、「代理サーバ負荷（現在の接続数）」に１を増加してそれぞれ更新する。また、更新部２４０は、代理サーバとして選択されたクライアント６００に関する配信履歴情報テーブル（図５（Ｂ））の「配信回数」に１を増加して更新する。
【０１００】
［ステップＳ１３０ｄ］受信部２２０は、代理サーバ情報の送信先のクライアント６００から通知を待ち受ける。
［ステップＳ１３０ｅ］通知判別部２３０は、受信部２２０が代理サーバ情報の送信先のクライアント６００から通知の電文を受信したか否かを判別する。次の処理は、通知判別部２３０が当該通知を受信するまでステップＳ１３０ｄが繰り返されて、代理サーバ情報の送信先のクライアント６００から通知の電文を受信するとステップＳ１３０ｆに進められる。
【０１０１】
［ステップＳ１３０ｆ］通知判別部２３０は、さらに、代理サーバ情報の送信先のクライアント６００からの通知の電文が代理サーバからのファイルの配信完了通知であるか否かを判別する。次の処理は、当該配信完了通知である場合にはステップＳ１３０ｇに進められ、当該配信完了通知で無い場合にはステップＳ１３０ｈに進められる。
【０１０２】
［ステップＳ１３０ｇ］更新部２４０は、代理サーバとして選択されたクライアント６００に関するクライアント情報テーブル（図５（Ａ））の「代理サーバ負荷（現在の接続数）」を１減らす。次の処理はステップＳ１３７に進められる。
【０１０３】
［ステップＳ１３０ｈ］更新部２４０は、代理サーバとして選択されたクライアント６００に関するクライアント情報テーブル（図５（Ａ））の「代理サーバ可否」を“不可”にし、「代理サーバ負荷（累積バイト数）」を配信したファイルのバイト量分減らし、「代理サーバ負荷（現在の接続数）」を１減らして更新する。また、更新部２４０は、代理サーバとして選択されたクライアント６００に関する配信履歴情報テーブル（図５（Ｂ））の「配信回数」を１減らす。次の処理はステップＳ１３２に進められる。
【０１０４】
次に、上記の処理フローのステップＳ１３２の代理サーバ選択処理について説明する。
図１１及び図１２は、第２の実施の形態に係る配信システムのサーバで代理サーバを選択するための処理手順を示すフローチャート図である。
【０１０５】
［ステップＳ１３２ａ］代理サーバ選択部２５０は、配信要求されたファイルと、当該ファイルの配信要求を行ったクライアント６００の経路情報とを取得する。
［ステップＳ１３２ｂ］代理サーバ選択部２５０は、変数ＣＩ（Client Information）、変数ＤＲ（Delivery Record）、変数ＳＳ（Substitution Server）を初期化する。なお、後述するように、変数ＣＩはクライアント情報テーブル（図５（Ａ））の１行分を１レコードとして、変数ＤＲは配信履歴情報テーブル（図５（Ｂ））の１行分を１レコードとしてそれぞれ格納される。また、変数ＳＳは変数ＣＩに格納されたレコードが格納される。
【０１０６】
さらに、変数ＴＩ（Table Index）には値が格納されており、代理サーバ選択部２５０は、当該値に初期値として１を設定する。
［ステップＳ１３２ｃ］代理サーバ選択部２５０は、配信履歴情報テーブルの、変数ＴＩに格納された値に対応する行にレコードの有無を判別する。次の処理は、配信履歴情報テーブルにレコードが無い場合にはステップＳ１３２ｄに進められ、レコードが有る場合にはステップＳ１３２ｇに進められる。
【０１０７】
［ステップＳ１３２ｄ］代理サーバ選択部２５０は、変数ＳＳにレコードが格納されているか否かを判別する。次の処理は、変数ＳＳにレコードが格納されている場合にはステップＳ１３２ｅに進められ、格納されていない場合にはステップＳ１３２ｆに進められる。
【０１０８】
［ステップＳ１３２ｅ］代理サーバ選択部２５０は、変数ＳＳに格納されているレコードに含まれる経路情報に対応するクライアント６００を代理サーバとして設定して、処理がステップＳ１３３に進められる。
【０１０９】
［ステップＳ１３２ｆ］代理サーバ選択部２５０は、代理サーバの設定を行わずに、処理がステップＳ１３３に進められる。
［ステップＳ１３２ｇ］代理サーバ選択部２５０は、配信履歴情報テーブルの変数ＴＩが示す値の行のレコードを取り出し、変数ＤＲに格納する。
【０１１０】
［ステップＳ１３２ｈ］代理サーバ選択部２５０は、クライアント情報テーブルから、変数ＤＲに格納されたレコードに含まれる経路情報（クライアント名）と同じ経路情報を含むレコードを取り出し、変数ＣＩに格納する。
【０１１１】
［ステップＳ１３２ｉ］代理サーバ選択部２５０は、配信要求を行ったクライアント６００の経路情報と、ステップＳ１３２ｈでレコードが格納された変数ＣＩの当該レコードに含まれる経路情報とから、配信要求を行ったクライアント６００が変数ＣＩから示されるセグメント内に配置しているか否かを判別する。なお、セグメント内の配置は、経路情報のルータ５００ａ，５００ｂのＩＰアドレスが一致しているか否かにより判別することができる。
【０１１２】
次の処理は、配信要求を行ったクライアント６００がセグメント内に配置している場合にはステップＳ１３２ｊに進められ、セグメント内に配置していない場合にはステップＳ１３２ｑに進められる。
【０１１３】
［ステップＳ１３２ｊ］代理サーバ選択部２５０は、ステップＳ１３２ａで取得した経路情報と、ステップＳ１３２ｇで変数ＤＲに格納されたレコードに含まれる経路情報とが同じか否かを判別する。次の処理は、ステップＳ１３２ａで取得した経路情報とステップＳ１３２ｇで変数ＤＲに格納されたレコードに含まれる経路情報とが同じではない場合、即ち、ステップＳ１３２ａで取得した経路情報に対応するクライアントが、代理サーバとして選択しようとするクライアントと異なる場合にはステップＳ１３２ｋに進められる。一方、同じである場合、即ち、ステップＳ１３２ａで取得した経路情報に対応するクライアントが、代理サーバとして選択しようとするクライアントと一致する場合にはステップＳ１３２ｑに進められる。
【０１１４】
［ステップＳ１３２ｋ］代理サーバ選択部２５０は、変数ＣＩに格納されたレコードに含まれる「代理サーバ可否」が“可”であるか否かを判別する。次の処理は、変数ＣＩに格納されたレコードに含まれる「代理サーバ可否」が“可”である場合にはステップＳ１３２ｌに進められ、“可”でない場合にはステップＳ１３２ｑに進められる。
【０１１５】
［ステップＳ１３２ｌ］代理サーバ選択部２５０は、配信要求されたファイルが、変数ＤＲに格納されているレコードに含まれる「ファイル名」と同じか否かを判別する。次の処理は、配信要求されたファイルが、変数ＤＲに格納されているレコードに含まれる「ファイル名」と同じ場合にはステップＳ１３２ｍに進められ、異なる場合にはステップＳ１３２ｑに進められる。
【０１１６】
［ステップＳ１３２ｍ］代理サーバ選択部２５０は、変数ＣＩに格納されているレコードに含まれる「代理サーバ負荷（現在の接続数）」が所定の閾値を超えているか否かを判別する。次の処理は、所定の閾値を超えていない場合にはステップＳ１３２ｎに進められ、超えている場合にはステップＳ１３２ｑに進められる。
【０１１７】
［ステップＳ１３２ｎ］代理サーバ選択部２５０は、変数ＳＳにレコードが格納されているか否かを判別する。次の処理は変数ＳＳにレコードが格納されている場合にはステップＳ１３２ｏに進められ、格納されていない場合にはステップＳ１３２ｐに進められる。
【０１１８】
［ステップＳ１３２ｏ］代理サーバ選択部２５０は、変数ＳＳに格納されているレコードの「代理サーバ負荷（累積バイト数）」が変数ＣＩに格納されているレコードに含まれる「代理サーバ負荷（累積バイト数）」よりも小さいか否かを判別する。次の処理は、変数ＳＳの方が変数ＣＩよりも小さい場合にはステップＳ１３２ｑに進められ、小さくない場合にはステップＳ１３２ｐに進められる。
【０１１９】
［ステップＳ１３２ｐ］代理サーバ選択部２５０は、変数ＣＩに格納されているレコードを変数ＳＳに格納する。
［ステップＳ１３２ｑ］代理サーバ選択部２５０は、変数ＴＩに格納されている値を１増加して、次の処理はステップＳ１３２ｃに進められる。
【０１２０】
次に、クライアント６００が代理サーバとして選択された場合のファイルの配信処理について説明する。
図１３は、第２の実施の形態に係る配信システムの代理サーバでファイルを送信するための処理手順を示すフローチャート図である。
【０１２１】
［ステップＳ２１０］代理サーバとして選択されたクライアント６００の受信部６２０は他のクライアント６００からファイルの配信要求を待ち受ける。
［ステップＳ２２０］代理サーバとして選択されたクライアント６００の通知判別部６６０は、他のクライアント６００から受信部６２０がファイルの配信要求の通知の電文を受信したか否かを判別する。次の処理は、通知判別部６６０が他のクライアント６００からファイルの配信要求の電文を受信するまでステップＳ２１０が繰り返されて、当該配信要求の電文を受信するとステップＳ２３０に進められる。
【０１２２】
［ステップＳ２３０］代理サーバとして選択されたクライアント６００の通知判別部６６０が他のクライアント６００ごとにファイルの配信要求の電文を受信する。代理サーバとして選択されたクライアント６００の配信実行要求部６８０はクライアント６００ごとに配信要求に応じて、ファイルの配信処理を並列で実行する。
【０１２３】
最後に、クライアント６００によるファイルの配信要求処理について説明する。
図１４は、第２の実施の形態に係る配信システムのクライアントがファイルを受信するための処理手順を示すフローチャート図である。
【０１２４】
［ステップＳ３１０］経路情報取得部６３０が送信部６５０に、サーバ２００に対してｔｒａｃｅｒｔコマンドを送信させて、受信部６２０で受信したサーバ２００からの応答からクライアント６００の経路情報を取得する。さらに、配信要求部６４０は、送信部６５０に、経路情報取得部６３０が取得した経路情報と共に、ファイルの配信要求をサーバ２００に対して送信させる。
【０１２５】
［ステップＳ３２０］受信部６２０はサーバ２００から応答の電文を待ち受ける。
［ステップＳ３３０］通知判別部６６０は受信部６２０がサーバ２００からの応答の電文を受信したか否かを判別する。次の処理は、受信部６２０がサーバ２００から電文を受信するまでステップＳ３２０が繰り返されて、電文を受信するとステップＳ３４０に進められる。
【０１２６】
［ステップＳ３４０］通知判別部６６０は、さらに、受信した電文が代理サーバ情報であるか否かを判別する。次の処理は、代理サーバ情報である場合にはステップＳ３５０に進められ、代理サーバ情報では無い場合にはステップＳ３９０に進められる。
【０１２７】
［ステップＳ３５０］アクセス要求部６７０は、代理サーバ情報に基づいて、送信部６５０から代理サーバにアクセスする。
［ステップＳ３６０］通知判別部６６０は、次の処理は、代理サーバとアクセスが成功して、代理サーバからファイルが配信された場合にはステップＳ３７０に進められ、代理サーバよりアクセス不可の応答を受信した場合にはステップＳ３８０に進められる。
【０１２８】
［ステップＳ３７０］通知判別部６６０は、代理サーバから配信されたファイルをファイル格納部６１０に格納する。
［ステップＳ３８０］通知部６９０は、送信部６５０に、サーバ２００に対して代理サーバからアクセス不可の応答があった旨を送信させる。
【０１２９】
［ステップＳ３９０］通知判別部６６０は、受信部６２０がサーバ２００からファイルの電文を受信すると、当該ファイルをファイル格納部６１０に格納する。
［ステップＳ３１０ａ］通知部６９０は、サーバ２００または代理サーバからのファイルがファイル格納部６１０に格納されると、送信部６５０に、サーバ２００に対して、ファイルの配信完了通知を送信させる。
【０１３０】
次に、上記処理フローに基づいて、配信システム１００の配信処理について図２に基づいて具体的に説明する。
まず、クライアントＡとサーバ２００とのファイルの配信処理について説明する。なお、クライアント６００のうち、クライアントＡがサーバ２００に対して最初にファイルの配信要求を行うものとする。
【０１３１】
クライアントＡがファイルＦの配信要求と共にクライアントＡの経路情報（“ａ／ｂ／ｃ／ｅ”）とをサーバ２００に通知する（図１４：ステップＳ３１０）。
サーバ２００では、受信部２２０がファイルＦの配信要求と経路情報とを受信すると、更新部２４０は、クライアント情報テーブルの「経路情報」にクライアントＡの経路情報（“ａ／ｂ／ｃ／ｅ”）を記録して、「代理サーバ可否」、「代理サーバ負荷（累積バイト数）」及び「代理サーバ負荷（現在の接続数）」にそれぞれ“０”を記録する。また、配信履歴情報テーブルの「経路情報」と「要求ファイル名」とにクライアントＡの経路情報（“ａ／ｂ／ｃ／ｅ”）とファイルＦとをそれぞれ記録する。「配信状況」と「配信回数」とに、“配信中”と“０（回）”とをそれぞれ記録しておく（図９：ステップＳ１３１）。
【０１３２】
また、代理サーバ選択部２５０が、変数ＴＩに格納された値の１に対応する配信履歴情報テーブルの１行目のレコード（“クライアントＡ”、“ファイルＦ”、“配信済”、“０”）を変数ＤＲに格納し、クライアント情報テーブルから、変数ＤＲに格納されたレコードに含まれる経路情報（クライアントＡ）と同じ経路情報を含むレコード（“クライアントＡ”、“可”、“０”、“０”）を取り出し、変数ＣＩに格納する（図１１：ステップＳ１３２ａ〜Ｓ１３２ｃ，Ｓ１３２ｇ，Ｓ１３２ｈ）。
【０１３３】
そして、代理サーバ選択部２５０は、クライアントＡの経路情報（“ａ／ｂ／ｃ／ｅ”）と、変数ＣＩに格納されたレコードの経路情報（“ａ／ｂ／ｃ／ｅ”）とから、クライアントＡとクライアントＡとの経路情報が同じであることを判別すると、変数ＴＩに格納されている値を１増やす（図１１及び図１２：ステップＳ１３２ｉ，Ｓ１３２ｊ，Ｓ１３２ｑ）。
【０１３４】
代理サーバ選択部２５０は、変数ＴＩに格納されている値である２に対応する、配信履歴情報テーブルの２行目にレコードが無く、変数ＳＳに格納されているレコードも無いために、代理サーバの選択を行わない（図１１：ステップＳ１３２ｃ，Ｓ１３２ｄ，Ｓ１３２ｆ）。
【０１３５】
さらに、サーバ２００では、配信実行要求部２６０は、送信部２８０に、クライアントＡに対してファイル格納部２１１のファイルＦを配信させる（図９：ステップＳ１３３，Ｓ１３４）。
【０１３６】
クライアントＡでは、サーバ２００からファイルＦが通知されると、ファイルＦをファイル格納部６１０に格納して、通知部６９０は、送信部６５０に、サーバ２００に対して、ファイルＦの配信完了通知を送信させる（図１４：ステップＳ３２０〜Ｓ３４０，Ｓ３９０，Ｓ３１０ａ）。
【０１３７】
サーバ２００では、受信部２２０がクライアントＡから配信完了通知を受信して、更新部２４０は、配信要求を行ったクライアントＡに関する配信履歴情報テーブル（図５（Ｂ））の「配信状況」を“配信済”に更新する（図９：ステップＳ１３５〜Ｓ１３７）。
【０１３８】
続いて、クライアントＢとサーバ２００とのファイルの配信処理について説明する。
クライアントＢがファイルＦの配信要求と共にクライアントＢの経路情報（“ａ／ｂ／ｃ／ｆ”）とをサーバ２００に通知する（図１４：ステップＳ３１０）。
【０１３９】
サーバ２００では、受信部２２０がファイルＦの配信要求とクライアントＢの経路情報とを受信すると、更新部２４０は、クライアント情報テーブルの「経路情報」にクライアントＢの経路情報（“ａ／ｂ／ｃ／ｆ”）を新たに記録して、「代理サーバ可否」、「代理サーバ負荷（累積バイト数）」及び「代理サーバ負荷（現在の接続数）」にそれぞれ“０”を記録する。また、配信履歴情報テーブルの「経路情報」と「要求ファイル名」とにクライアントＢの経路情報（“ａ／ｂ／ｃ／ｆ”）とファイルＦとをそれぞれ記録する。「配信状況」と「配信回数」とに、“配信中”と“０（回）”とをそれぞれ記録する（図９：ステップＳ１３１）。
【０１４０】
また、代理サーバ選択部２５０が、変数ＴＩに格納された値の１に対応する配信履歴情報テーブルの１行目のレコード（“クライアントＡ”、“ファイルＦ”、“配信済”、“０”）を変数ＤＲに格納し、クライアント情報テーブルから、変数ＤＲに格納されたレコードに含まれる経路情報（クライアントＡ）と同じ経路情報を含むレコード（“クライアントＡ”、“可”、“０”、“０”）を取り出し、変数ＣＩに格納する（図１１：ステップＳ１３２ａ〜Ｓ１３２ｃ，Ｓ１３２ｇ，Ｓ１３２ｈ）。
【０１４１】
そして、代理サーバ選択部２５０は、クライアントＢの経路情報（“ａ／ｂ／ｃ／ｆ”）と、変数ＣＩに格納されたレコードの経路情報（“ａ／ｂ／ｃ／ｅ”）とから、クライアントＢとクライアントＡとが同一セグメント内にあること、経路情報が異なることを判定する。さらに、代理サーバ選択部２５０は、変数ＣＩに格納されたレコードに含まれる「代理サーバ可否」が“可”であり、配信要求されたファイルＦと、変数ＤＲに格納されているレコードに含まれるファイル名が同じであって、変数ＣＩに格納されているレコードに含まれる「代理サーバ負荷（現在の接続数）」が“０”であることから、変数ＣＩに格納されているレコード（“クライアントＡ”、“可”、“０”、“０”）を変数ＳＳに格納する（図１１：ステップＳ１３２ｉ〜Ｓ１３２ｐ）。
【０１４２】
代理サーバ選択部２５０は、変数ＴＩに格納されている値を１増やした２に対応する、配信履歴情報テーブルの２行目のレコード（“クライアントＢ”、“ファイルＦ”、“配信済”、“０”）を変数ＤＲに格納し、クライアント情報テーブルから、変数ＤＲに格納されたレコードに含まれる経路情報（クライアントＢ）と同じ経路情報を含むレコード（“クライアントＢ”、“可”、“０”、“０”）を取り出し、変数ＣＩに格納する（図１１：ステップＳ１３２ａ〜Ｓ１３２ｃ，Ｓ１３２ｇ，Ｓ１３２ｈ）。
【０１４３】
代理サーバ選択部２５０は、クライアントＢの経路情報と、変数ＤＲに格納されたレコードに含まれる経路情報（クライアントＢ）とが等しいため、再び、変数ＴＩに格納されている値である２を１増やす（図１１：ステップＳ１３２ｉ，Ｓ１３２ｊ，Ｓ１３２ｑ）。
【０１４４】
代理サーバ選択部２５０は、変数ＴＩに格納されている値である３に対応する、配信履歴情報テーブルの３行目にレコードが無いために、変数ＳＳに格納したレコード（“クライアントＡ”、“可”、“０”、“０”）に含まれるクライアントＡを代理サーバとして選択する（図１１：ステップＳ１３２ｃ，Ｓ１３２ｄ，Ｓ１３２ｅ）。
【０１４５】
代理サーバ情報送信要求部２７０は、受信部２２０がクライアントＡからファイルＦの配信完了通知の電文を受信する（している）と、送信部２８０に、クライアントＢに対して代理サーバ選択部２５０が選択した代理サーバ（クライアントＡ）の経路情報を含む代理サーバ情報の電文を送信させる。更新部２４０は、代理サーバとして選択されたクライアントＡに関するクライアント情報テーブル（図５（Ａ））の「代理サーバ負荷（累積バイト数）」を配信要求のファイルの“バイト数（α）”分増加して、「代理サーバ負荷（現在の接続数）」に１を増加してそれぞれ更新する。また、更新部２４０は、代理サーバとして選択されたクライアントＡに関する配信履歴情報テーブル（図５（Ｂ））の「配信回数」に１を増加して更新する。
【０１４６】
一方、クライアントＢでは、受信部６２０が代理サーバ情報を受信すると、アクセス要求部６７０は、代理サーバ情報に基づいて、送信部６５０から代理サーバ（クライアントＡ）にアクセスして、代理サーバ（クライアントＡ）からファイルＦが配信されると、ファイルＦをファイル格納部６１０に格納する。通知部６９０は、送信部６５０に、サーバ２００に対して、ファイルＦの配信完了通知を送信させる（図１４：ステップＳ３２０〜Ｓ３７０，Ｓ３１０ａ）。
【０１４７】
サーバ２００では、更新部２４０が、受信部２２０のクライアントＢからの配信完了通知の受信に伴って、代理サーバとして選択されたクライアントＡに関するクライアント情報テーブル（図５（Ａ））の「代理サーバ負荷（現在の接続数）」を１減らし、さらに、配信要求を行ったクライアントＢに関する配信履歴情報テーブル（図５（Ｂ））の「配信状況」を“配信済”に更新する（図９：Ｓ１３７）。
【０１４８】
続けて、クライアントＣとサーバ２００とのファイルの配信処理について説明する。なお、以下では、クライアントＣからのファイルＦの配信要求に応じてサーバ２００による代理サーバ選択処理（図１１及び図１２）について説明する。
【０１４９】
サーバ２００では、受信部２２０がファイルＦの配信要求とクライアントＣの経路情報とを受信すると、更新部２４０は、クライアント情報テーブルの「経路情報」にクライアントＣの経路情報（“ａ／ｂ／ｃ／ｇ”）を新たに記録して、「代理サーバ可否」、「代理サーバ負荷（累積バイト数）」及び「代理サーバ負荷（現在の接続数）」にそれぞれ“０”を新たに記録する。また、配信履歴情報テーブルの「経路情報」と「要求ファイル名」とにクライアントＣの経路情報（“ａ／ｂ／ｃ／ｆ”）とファイルＦとをそれぞれ新たに記録する。「配信状況」と「配信回数」とに、“配信中”と“０（回）”とをそれぞれ記録する（図９：ステップＳ１３１）。
【０１５０】
代理サーバ選択部２５０が、変数ＴＩに格納された値の１に対応する配信履歴情報テーブルの１行目のレコード（“クライアントＡ”、“ファイルＦ”、“配信済”、“１”）を変数ＤＲに格納し、クライアント情報テーブルから、変数ＤＲに格納されたレコードに含まれる経路情報（クライアントＡ）と同じ経路情報を含むレコード（“クライアントＡ”、“可”、“α”、“０”）を取り出し、変数ＣＩに格納する（図１１：ステップＳ１３２ａ〜Ｓ１３２ｃ，Ｓ１３２ｇ，Ｓ１３２ｈ）。
【０１５１】
そして、代理サーバ選択部２５０は、クライアントＣの経路情報（“ａ／ｂ／ｃ／ｇ”）と、変数ＣＩに格納されたレコードの経路情報（“ａ／ｂ／ｃ／ｅ”）とから、クライアントＣとクライアントＡとが同一セグメント内にあること、経路情報が異なることを判定する。さらに、代理サーバ選択部２５０は、変数ＣＩに格納されたレコードに含まれる「代理サーバ可否」が“可”であり、配信要求されたファイルＦと、変数ＤＲに格納されているレコードに含まれるファイル名が同じであって、「代理サーバ負荷（現在の接続数）」が閾値を超えない“α”であることから、変数ＣＩに格納されているレコード（“クライアントＡ”、“可”、“α”、“０”）を変数ＳＳに格納する（図１１：ステップＳ１３２ｉ〜Ｓ１３２ｐ）。
【０１５２】
代理サーバ選択部２５０は、変数ＴＩに格納されている値を１増やした２に対応する、配信履歴情報テーブルの２行目のレコード（“クライアントＢ”、“ファイルＦ”、“配信済”、“０”）を変数ＤＲに格納し、クライアント情報テーブルから、変数ＤＲに格納されたレコードに含まれる経路情報（クライアントＢ）と同じ経路情報を含むレコード（“クライアントＢ”、“可”、“０”、“０”）を取り出し、変数ＣＩに格納する（図１１：ステップＳ１３２ａ〜Ｓ１３２ｃ，Ｓ１３２ｇ，Ｓ１３２ｈ）。
【０１５３】
代理サーバ選択部２５０は、クライアントＣの経路情報（“ａ／ｂ／ｃ／ｇ”）と、変数ＣＩに格納されたレコードの経路情報（“ａ／ｂ／ｃ／ｆ”）とから、クライアントＣとクライアントＢとが同一セグメント内にあること、経路情報が異なることを判定する。さらに、代理サーバ選択部２５０は、変数ＣＩに格納されたレコードに含まれる「代理サーバ可否」が“可”であり、配信要求されたファイルＦと、変数ＤＲに格納されているレコードに含まれるファイル名が同じであって、変数ＣＩに格納されたレコードに含まれる「代理サーバ負荷（現在の接続数）」が閾値を“０”であることを判別する（図１１：ステップＳ１３２ｉ〜Ｓ１３２ｍ）。
【０１５４】
さらに、代理サーバ選択部２５０は、変数ＳＳに格納されているレコード（“クライアントＡ”、“可”、“α”、“０”）の「代理サーバ負荷（累積バイト数）」が変数ＣＩに格納されているレコード（“クライアントＢ”、“可”、“０”、“０”）に含まれる「代理サーバ負荷（累積バイト数）」よりも大きいことを判別する（ステップＳ１３２ｎ，Ｓ１３２ｏ）。
【０１５５】
代理サーバ選択部２５０は、このような判別に応じて、変数ＣＩに格納されているレコード（“クライアントＢ”、“可”、“０”、“０”）を新たに変数ＳＳに格納する（図１１：ステップＳ１３２ｐ）。
【０１５６】
以下の代理サーバ選択処理は、クライアントＢとサーバ２００とのファイルの配信処理の変数ＴＩに格納されている値が２及び３の場合と同様である。
クライアントＣは、このようにして代理サーバとして選択したクライアントＢにアクセスして、クライアントＢからファイルＦが配信される。
【０１５７】
このように、上記の配信システム１００では、サーバ２００は、各クライアント６００からのファイルＦの配信要求に応じて、配信履歴情報テーブルを参照して、既にファイルＦが配信されているクライアント６００を代理サーバとして選択する。そして、サーバ２００は、代理サーバとして選択したクライアント６００の経路情報等を含む代理サーバ情報を各クライアント６００に通知することで、各クライアント６００は、当該ファイルＦが配信されている代理サーバのクライアント６００からファイルＦが配信される。これにより、配信システム１００では、クライアント６００間でファイルＦの配信が実行されて、サーバ２００と各クライアント６００との間でのファイルＦの配信が減少するために、サーバ２００と各クライアント６００との間の通信回線の混雑が抑制されて回線速度の低下が防止される。
【０１５８】
また、代理サーバを選択する場合には、代理サーバ負荷が少ない各クライアント６００を選択するようにした。このため、代理サーバへの負荷を減少させて、代理サーバと各クライアント６００との通信が安定するようになる。
【０１５９】
また、クライアント６００が代理サーバにアクセスできない場合、または、代理サーバを新たに選択できない場合には、サーバ２００からファイルＦを各クライアント６００に配信するようにした。このため、配信要求を通知した各クライアント６００に対して確実に要求されたファイルを配信することができるようになる。
【０１６０】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、サーバ２００及びクライアント６００が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等がある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープ等がある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷ等がある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）等がある。
【０１６１】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１６２】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１６３】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）等の電子回路で実現することもできる。
【符号の説明】
【０１６４】
１０，１００  配信システム
２０，２００  サーバ
２１，２１１，６１０  ファイル格納部
２１ａ，Ｆ  ファイル
２２，２２０，６２０  受信部
２２ａ  配信履歴情報
２２ｂ  クライアント情報
２３，２５０  代理サーバ選択部
２４  代理サーバ情報送信部
２５  ファイル配信部
６０，６０ａ〜６０ｃ，６００，６００ａ〜６００ｃ  クライアント
６１  配信要求部
２００ａ  ＣＰＵ
２００ｂ  ＲＡＭ
２００ｃ  ＨＤＤ
２００ｄ  グラフィック処理部
２００ｅ  入力インタフェース
２００ｆ  通信インタフェース
２００ｇ  バス
２００ｈ  モニタ
２００ｉ  キーボード
２００ｊ  マウス
２１２  クライアント情報保持部
２１３  配信履歴情報保持部
２３０，６６０  通知判別部
２４０  更新部
２６０，６８０  配信実行要求部
２７０  代理サーバ情報送信要求部
２８０，６５０  送信部
３００  ネットワーク
４００  ゲートウェイ
５００，５００ａ，５００ｂ  ルータ
６３０  経路情報取得部
６４０  配信要求部
６７０  アクセス要求部
６９０  通知部
【図１】
2012053558.tif 000003
【図２】
2012053558.tif 000004
【図３】
2012053558.tif 000005
【図４】
2012053558.tif 000006
【図５】
2012053558.tif 000007
【図６】
2012053558.tif 000008
【図７】
2012053558.tif 000009
【図８】
2012053558.tif 000010
【図９】
2012053558.tif 000011
【図１０】
2012053558.tif 000012
【図１１】
2012053558.tif 000013
【図１２】
2012053558.tif 000014
【図１３】
2012053558.tif 000015
【図１４】
2012053558.tif 000016
【図１５】
2012053558.tif 000017