(57)【要約】【課題】グループに属する複数のノード間でリソースをやり取りするＰ２Ｐネットワークシステムにおいて、コマンドの増殖を効率よく防止し、通信トラフィックを減少させるとともにネットワークとしての応答性を向上させることができるようにする。【解決手段】ノードどうしの自律的な接続が発生した後、接続された両ノードが同一のグループに属するか否かについて判定し、同一のグループに属さないと判定した場合、両ノード間の接続を切断することにより、ノードが他ノードに対して自律的に接続したとしても、同一のグループに属するノード間の接続のみが維持され、同じグループに属さないノード間の接続は切断されるようにして、グループが拡大することを防止し、グループ内のネットワーク上に非常に多くのコマンド伝播が生じることを防止することができるようにする。【選択図】図２
2011078067.tif 000002
【特許請求の範囲】
【請求項１】
グループに属する複数のノード間でリソースをやり取りするＰ２Ｐネットワークシステムにおいて、
前記ノードは、自ノードと他ノードとを接続する接続部と、
前記接続部により前記他ノードと接続した後、前記自ノードと前記他ノードとが同一のグループに属するか否かについて判定する判定部と、
前記判定部により同一のグループに属さないと判定された場合、当該他ノードとの接続を切断する切断部とを備えたことを特徴とするＰ２Ｐネットワークシステム。
【請求項２】
請求項１に記載のＰ２Ｐネットワークシステムにおいて、
前記ノードは、前記自ノードが属するグループを示す自グループ情報を記憶する自グループ情報記憶部と、
前記接続部により前記他ノードと接続した後、前記自ノード以外の別ノードから発信されたグループ情報であって前記別ノードが属するグループを示す発信グループ情報を前記他ノードから受信する発信グループ情報受信部とを更に備え、
前記判定部は、前記発信グループ情報受信部により前記他ノードから受信された前記発信グループ情報により示されるグループと前記自グループ情報記憶部に記憶されている前記自グループ情報により示されるグループとが一致するか否かを判定し、一致しないと判定した場合、前記自ノードと前記他ノードとが同一のグループに属しないと判定することを特徴とするＰ２Ｐネットワークシステム。
【請求項３】
請求項２に記載のＰ２Ｐネットワークシステムにおいて、
前記別ノードは、グループ内の複数のノードを代表するハブノードであり、
前記発信グループ情報受信部は、前記ハブノードが属するグループを示す発信グループ情報を前記他ノードから受信することを特徴とするＰ２Ｐネットワークシステム。
【請求項４】
請求項２に記載のＰ２Ｐネットワークシステムにおいて、
前記ノードには、グループ内の複数のノードを代表するハブノードとそれ以外の通常ノードとがあり、
前記通常ノードは、当該通常ノードを識別するノード識別情報を前記ハブノードに送信するノード識別情報送信部を更に備え、
前記ハブノードは、前記自グループ情報記憶部に代えて、当該ハブノードが属するグループに含まれる全てのノードをそれぞれ識別するノード識別情報を含むノードリスト情報を記憶するノードリスト情報記憶部を備えるとともに、
前記接続部により前記通常ノードと接続した後、当該通常ノードを識別するノード識別情報を前記通常ノードから受信するノード識別情報受信部を備え、
前記判定部は、請求項２に記載の判定に代えて、前記ノード識別情報受信部により受信された前記ノード識別情報が前記ノードリスト情報記憶部に記憶されている前記ノードリスト情報に含まれるか否かを判定し、含まれないと判定した場合、前記ハブノードと前記通常ノードとが同一のグループに属しないと判定することを特徴とするＰ２Ｐネットワークシステム。
【請求項５】
グループに属する複数のノード間でリソースをやり取りするＰ２Ｐネットワークシステムにおいて前記グループの管理を行うためのグループ管理用プログラムであって、
自ノードが他ノードと接続した後、前記自ノードと前記他ノードとが同一のグループに属するか否かについて判定する判定手段、および、
前記判定手段により同一のグループに属さないと判定された場合、当該他ノードとの接続を切断する切断手段として機能させるためのコンピュータ読み取り可能なＰ２Ｐネットワークにおけるグループ管理用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｐ２ＰネットワークシステムおよびＰ２Ｐネットワークにおけるグループ管理用プログラムに関し、特に、サーバを介さずにクライアント同士で直接リソースの交換を行うシステムのうち、グループに属する複数のノード間でリソースをやり取りするＰ２Ｐネットワークシステムに用いて好適なものである。
【背景技術】
【０００２】
近年、インターネットの浸透とインターネットユーザ数の爆発的な増加という社会的背景、パーソナルコンピュータ（パソコン）の高性能化とネットワークの高速化という技術的背景をもとに、ピアツーピア（Ｐ２Ｐ）と呼ばれるネットワーク技術が注目を集めている。
【０００３】
従来のネットワークシステムは、少数のサーバと多数のクライアントとをネットワークを介して接続したものが殆どであり、クライアントで生成されたリソースはサーバに集められて管理されていた。ところが、爆発的なユーザ数増加の中、クライアント上でユーザが生成したリソースをサーバに集めるコストは無視できないものになっている。
【０００４】
すなわち、従来のＷｅｂアーキテクチャにおいてサーバにリソースを集める際に、インターネット上に散らばっているリソースを発見するメカニズムには、ディレクトリサービスとサーチエンジンの２つのタイプが存在する。前者は人海戦術と呼ぶべきアプローチで、人手の作業によってリソースを集めるものである。後者はエージェントロボットがインターネットを巡回することによってリソースを集めてまわるものである。何れのタイプも言わば力任せのアプローチであり、多数のクライアントからリソースをサーバに集めるには多くのコストがかかってしまう。
【０００５】
また、サーバに集められたリソースは、サーバへのアクセスの集中を生む。この結果、クライアントとして用いられる高性能なパソコンは殆ど遊休状態となり、高速ネットワークもサーバ周辺だけがいびつに混雑する結果となっている。
【０００６】
これに対し、Ｐ２Ｐによるネットワーク技術は、ユーザに近い部分でサーバを介さずに、クライアント同士がダイレクトにリソースをやり取りするアーキテクチャである。一般に、Ｐ２Ｐネットワークは、ノードの集合で定義される。ノードとは、Ｐ２Ｐプロトコルを実装したプログラムのプロセスのことを言う。したがって、例えば１つのクライアントの中にも、起動しているプログラムが複数あれば、複数のノードが存在することになる。
【０００７】
ここで、図６を参照して、Ｐ２Ｐアーキテクチャを利用して所望のリソースを検索および取得する際の手順を説明する。まず、図６（ａ）のように、リソース１１０の取得を希望しているユーザのノード１００は、どこにリソース１１０があるかを探し出すためのｌｏｏｋｕｐコマンドを近接ノード（接続しているノード）１０１，１０２に発行する。
【０００８】
ｌｏｏｋｕｐコマンド受け取ったノード１０１，１０２は、要求されているリソース１１０を自身が持っているかどうかを調べる。該当するリソース１１０が見つからない場合は、図６（ｂ）のように、ｌｏｏｋｕｐコマンドを近接ノード（ｌｏｏｋｕｐコマンドの送信元以外で接続しているノード）１０３〜１０６に転送する。このｌｏｏｋｕｐコマンドを受け取ったノード１０３〜１０６も、要求されているリソース１１０を自身が持っているかどうかを調べる。
【０００９】
このようにコマンド伝播とリソース１１０の検索を繰り返していく中で、ノード１０３では、リソース１１０の検索にヒットする。検索にヒットした場合は、図６（ｃ）に示すように、ｌｏｏｋｕｐコマンドの送信元であるノード１０１にｈｉｔリプライを返す。ｈｉｔリプライを受け取ったノード１０１は、ｌｏｏｋｕｐコマンドの送信元であるユーザノード１００にｈｉｔリプライを転送する。このようにｈｉｔリプライは、ｌｏｏｋｕｐコマンドを伝播した各ノードにより逆向きに伝播され、コマンド発行元のユーザノード１００まで届けられる。
【００１０】
ｈｉｔリプライは、リソース１１０のアクセスインタフェースの名前と検索ヒットノード１０３の情報とを含むパケットである。以上の手順により、最初にｌｏｏｋｕｐコマンドを発行したユーザノード１００では、所望のリソース１１０がノード１０３に存在することを発見できる。ｈｉｔリプライを受け取ったユーザノード１００は次に、図６（ｄ）のようにノード１０３にダイレクトにアクセスし、リソース１１０を取得する。
【００１１】
このようなＰ２Ｐネットワーク技術によれば、多数のクライアントで生成されたリソースはそれぞれのクライアント自身で管理されるため、多数のリソースをサーバに集める必要もないし、リソース取得のためにアクセスの集中が生じることも殆どない。また、クライアントとして使用される高性能なパソコンが持つ遊休資源を有効に使うことも可能となる。
【００１２】
しかしながら、Ｐ２Ｐネットワーク技術では、リソースを取得する前提として、所望のリソースがどこにあるかを発見するためにｌｏｏｋｕｐコマンドを多数のノードに伝播していかなければならならない。そのため、ネットワーク上に非常に多くのコマンド伝播が生じ、それだけ通信トラフィックが増大するという問題があった。
【００１３】
個々のコマンドについては、そのパケットにＴＴＬ（Ｔｉｍｅ  Ｔｏ  Ｌｉｖｅ）を設定してコマンドの増殖を防止する工夫はなされている。ＴＴＬとは、コマンド伝播回数を設定しておき、ノードがコマンドを受信する毎にこれを１つずつ減算していき、ゼロになったときにそのコマンドを消滅するようにしたものである。このＴＴＬを用いれば、あるｌｏｏｋｕｐコマンドが発行されたにも関わらず所望のリソースが発見されない場合に、そのｌｏｏｋｕｐコマンドが無限に伝播されていくのを防止し、ネットワーク上に無駄なコマンドが飛び交うのを防ぐことができる。
【００１４】
ところが、このようなＴＴＬを用いたとしても、コマンド増殖を完全に防ぐことはできない。すなわち、ｌｏｏｋｕｐコマンドの発行元ノードの近くにリソースが存在すれば、コマンドの増殖はそれほど多くならない。しかし、コマンド発行元ノードから遠く離れたノードにしかリソースがない場合は、そのリソースを発見するまでに多数のノードを経由することになり、コマンドの増殖を生む。そのため、コマンドの増殖によってネットワーク上の通信トラフィックが増大するという問題を生じる。また、あるノードがｌｏｏｋｕｐコマンドを発行してからｈｉｔリプライを受信するまでの時間が長くなり、ネットワークとしての応答性が悪くなるという問題も生じる。
【００１５】
なお、複数のノードでグループを構成し、グループ内のノード間でのみリソースのやり取りを行うようにしたＰ２Ｐネットワーク技術も存在する（例えば、特許文献１、２を参照）。特許文献１では、ネットワークを介して相互に接続された複数のピアの各々が、新たなピアの接続を受けた際に、自分、既存グループの代表ピア及び新たなピアの３者間のネットワーク上の距離の比較に基づいてグループ分けを行い、各グループ内の代表ピアに対してのみデータを配信するようにしている。
【００１６】
また、特許文献２では、専用ラベルを使用してグループのメンバを識別する。そして、ピアグループのストラクチャが変形されるとき（すなわち、１つまたは複数のピアが付加または除去されるとき）、当該ピアグループに対する専用ラベルが変更されるようになっている。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】国際公開Ｗ００４／０３０２７３号公報
【特許文献２】特開２００４−３５０２９７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
Ｐ２Ｐネットワーク技術において、ノード同士は、複数のセッションを互いに張った状態でトポロジを形成する。この常態的なセッションを「接続」と呼ぶ。この接続のトポロジ形成は、サーバで一元管理されることなく、個々のノードによる協調動作によって行われる。そして、上述したｌｏｏｋｕｐコマンドやｈｉｔリプライは、接続セッションが確立しているノード間を順次伝播していく。
【００１９】
Ｐ２Ｐネットワーク技術には、ノードが他ノードに対して自律的に接続していくことにより、ネットワークが自律的に拡大していくタイプのものがある。このようなタイプのＰ２Ｐネットワーク技術に特許文献１、２に記載されているようなグループ化技術を適用すると、ノードの自律的な接続によって、グループが次第に拡大していく。
【００２０】
このようにグループが拡大していくと、グループ内のノード間でのみリソースのやり取りを行うこととしていても、グループ内のネットワーク上に非常に多くのコマンド伝播が生じる。その結果、通信トラフィックが増大するとともに、ネットワークとしての応答性が悪くなるという問題を生じる。
【００２１】
本発明は、このような問題を解決するために成されたものであり、グループに属する複数のノード間でリソースをやり取りするＰ２Ｐネットワークシステムにおいて、コマンドの増殖を効率よく防止し、通信トラフィックを減少させるとともにネットワークとしての応答性を向上させることができるようにすることを目的とする。
【課題を解決するための手段】
【００２２】
上記した課題を解決するために、本発明では、グループに属する複数のノード間でリソースをやり取りするＰ２Ｐネットワークシステムにおいて、ノードどうしの自律的な接続が発生した後、接続された両ノードが同一のグループに属するか否かについて判定し、同一のグループに属さないと判定した場合、両ノード間の接続を切断するようにしている。
【発明の効果】
【００２３】
上記のように構成した本発明によれば、ノードが他ノードに対して自律的に接続したとしても、同一のグループに属するノード間の接続のみが維持され、同じグループに属さないノード間の接続は切断されるため、グループが拡大することを防止することができる。これにより、グループ内のネットワーク上に非常に多くのコマンド伝播が生じることを防止することができる。したがって、コマンドの増殖を効率よく防止し、通信トラフィックを減少させるとともにネットワークとしての応答性を向上させることができる。
【図面の簡単な説明】
【００２４】
【図１】本実施形態によるＰ２Ｐネットワークシステムの概略構成例を示す図である。
【図２】本実施形態によるＰ２Ｐネットワークシステムを構成するサーバ、ハブノード、通常ノードの機能構成例を示すブロック図である。
【図３】本実施形態による通常ノードの接続管理に関する動作例を示すフローチャートである。
【図４】本実施形態によるハブノードの接続管理に関する動作例を示すフローチャートである。
【図５】本実施形態によるハブノードによる発信グループ情報の送信動作例を示すフローチャートである。
【図６】Ｐ２Ｐアーキテクチャを利用して所望のリソースを検索および取得する際の手順を示す図である。
【発明を実施するための形態】
【００２５】
以下、本発明の実施形態（以下、「本実施形態」という）を図面に基づいて説明する。図１は、本実施形態によるＰ２Ｐネットワークシステム１０の概略構成例を示す図である。図１に示すように、本実施形態のＰ２Ｐネットワークシステム１０は、サーバ１２０、複数のハブノード１４０，１６０および複数の通常ノード２００，２２０，２４０，２６０，２８０，３００を備えている。本実施形態では、ハブノード１４０および通常ノード２００，２２０，２４０によって論理的なグループＡが構成されている。また、ハブノード１６０および通常ノード２６０，２８０，３００によって論理的なグループＢが構成されている。なお、図１では、サーバ１２０を１つ、ハブノード１４０，１６０を２つ、通常ノード２００，２２０，２４０，２６０，２８０，３００を６つ示しているが、この数には限定されない。
【００２６】
サーバ１２０は、ハブノード１４０，１６０、通常ノード２００，２２０，２４０，２６０，２８０，３００のそれぞれについて、Ｐ２Ｐネットワークシステム１０へのログインを管理する。すなわち、サーバ１２０は、ログインを希望する各ノードからログイン用の情報を受信し、当該受信したログイン用の情報の妥当性を判断することにより、当該ログインを希望するノードについてＰ２Ｐネットワークシステム１０へのログインの許否を決定する。
【００２７】
サーバ１２０は、Ｐ２Ｐネットワークシステム１０へのログインを許可した通常ノードに対して、当該通常ノードが属するグループを示す自グループ情報を送信する。また、サーバ１２０は、Ｐ２Ｐネットワークシステム１０へのログインを許可したハブノードに対して、当該ハブノードが属するグループを構成するノードの一覧リストを送信する。
【００２８】
ハブノード１４０は、グループＡを構成している複数のノードを代表するノードであり、サーバ１２０にアクセスすることによりＰ２Ｐネットワークシステム１０へのログインを行う。Ｐ２Ｐネットワークシステム１０へのログインに成功した場合、ハブノード１４０は、他ノードからの自律的な接続を受けることができる。
【００２９】
他ノードからの自律的な接続を受けた場合、ハブノード１４０は、当該他ノードと接続した後、自ノードと他ノードとが同一のグループに属するか否かについて判定する。具体的には、ハブノード１４０は、グループＡに属しているノードの一覧リストを表すノードリスト情報をサーバ１２０から取得しておき、その取得した一覧リストの中に、接続した他ノードが含まれているか否かを確認することによって、自ノードと他ノードとが同一のグループに属するか否かについて判定する。ハブノード１４０は、同一のグループに属さないと判定した場合、いったん許可した他ノードとの接続を切断する一方、同一のグループに属すると判定した場合、当該他ノードとの接続を維持する。
【００３０】
例えば、ハブノード１４０は、グループＡに属する通常ノード（例えば、通常ノード２００）からの自律的な接続を受けた場合、ハブノード１４０が保持している一覧リストと、通常ノード２００から送られてくるノード識別情報とを参照して、自ノード１４０と通常ノード２００とが同一のグループＡに属するか否かについて判定する。この場合、ハブノード１４０は、通常ノード２００が自分と同一のグループＡに属すると判定し、通常ノード２００との接続を維持する。その後、ハブノード１４０は、接続を維持した通常ノード２００との間でリソースのやり取りを行うことが可能である。
【００３１】
また、ハブノード１４０は、グループＢに属する通常ノード（例えば、通常ノード２８０）からの自律的な接続を受けた場合、ハブノード１４０が保持している一覧リストと、通常ノード２８０から送られてくるノード識別情報とを参照して、自ノード１４０と通常ノード２８０とが同一のグループＡに属するか否かについて判定する。この場合、ハブノード１４０は、通常ノード２８０が自分と同一のグループＡに属しないと判定し、いったん許可した通常ノード２８０との接続を切断する。
【００３２】
以上のように、ハブノード１４０に対して他ノードが自律的に接続したとしても、ハブノード１４０と同一のグループＡに属する通常ノード２００，２２０，２４０とハブノード１４０との間の接続のみが維持され、同じグループＡに属さない他ノード１６０，２６０，２８０，３００とハブノード１４０との間の接続は切断されるため、ノード間の自律的な接続によってグループＡが拡大することを防止することができる。
【００３３】
ハブノード１６０は、グループＢを構成している複数のノードを代表するノードであり、サーバ１２０にアクセスすることによりＰ２Ｐネットワークシステム１０へのログインを行う。Ｐ２Ｐネットワークシステム１０へのログインに成功した場合、ハブノード１６０は、他ノードからの自律的な接続を受けることができる。
【００３４】
他ノードからの自律的な接続を受けた場合、ハブノード１６０は、当該他ノードと接続した後、自ノードと他ノードとが同一のグループに属するか否かについて判定する。具体的には、ハブノード１６０は、グループＢに属しているノードの一覧リストを表すノードリスト情報をサーバ１２０から取得しておき、その取得した一覧リストの中に、接続した他ノードが含まれているか否かを確認することによって、自ノードと他ノードとが同一のグループに属するか否かについて判定する。ハブノード１６０は、同一のグループに属さないと判定した場合、いったん許可した他ノードとの接続を切断する一方、同一のグループに属すると判定した場合、当該他ノードとの接続を維持する。
【００３５】
例えば、ハブノード１６０は、グループＢに属する通常ノード（例えば、通常ノード２８０）からの自律的な接続を受けた場合、ハブノード１６０が保持している一覧リストと、通常ノード２８０から送られてくるノード識別情報とを参照して、自ノード１６０と通常ノード２８０とが同一のグループＢに属するか否かについて判定する。この場合、ハブノード１６０は、通常ノード２８０が自分と同一のグループＢに属すると判定し、通常ノード２８０との接続を維持する。その後、ハブノード１６０は、接続を維持した通常ノード２８０との間でリソースのやり取りを行うことが可能である。
【００３６】
また、ハブノード１６０は、グループＡに属する通常ノード（例えば、通常ノード２００）からの自律的な接続を受けた場合、ハブノード１６０が保持している一覧リストと、通常ノード２００から送られてくるノード識別情報とを参照して、自ノード１６０と通常ノード２００とが同一のグループＢに属するか否かについて判定する。この場合、ハブノード１６０は、通常ノード２００が自分と同一のグループＢに属しないと判定し、いったん許可した通常ノード２００との接続を切断する。
【００３７】
以上のように、ハブノード１６０に対して他ノードが自律的に接続したとしても、ハブノード１６０と同一のグループＢに属する通常ノード２６０，２８０，３００とハブノード１６０との間の接続のみが維持され、同じグループＢに属さない他ノード１４０，２００，２２０，２４０とハブノード１６０との間の接続は切断されるため、ノード間の自律的な接続によってグループＢが拡大することを防止することができる。
【００３８】
グループＡに属する通常ノード２００，２２０，２４０の各々は、サーバ１２０にアクセスすることによりＰ２Ｐネットワークシステム１０へのログインを行う。Ｐ２Ｐネットワークシステム１０へのログインに成功した場合、通常ノード２００，２２０，２４０の各々は、自グループ情報をサーバ１２０から取得して記憶する。また、通常ノード２００，２２０，２４０の各々は、ログイン成功後は、他ノード（ハブノード、通常ノード）に対して自律的に接続していくことができる。
【００３９】
また、通常ノード２００，２２０，２４０の各々は、ログイン成功後は、他ノードからの自律的な接続を受けることができる。また、通常ノード２００，２２０，２４０の各々は、他ノードと接続した後、自ノードと他ノードとが同一のグループＡに属するか否かについて判定する。
【００４０】
具体的には、通常ノード２００，２２０，２４０の各々は、自ノード以外の別ノード（自ノードと接続した他ノード）が属するグループ内のハブノードから発信された発信グループ情報（当該ハブノードが属するグループを示す情報）を他ノードから受信する。この発信グループ情報は、あるグループに属するハブノードから定期的にブロードキャスト形式で送信され、複数のノードを介してブロードキャスト形式で転送されていくものである。発信グループ情報を受信したノードがそれを転送するか否かについては条件がある。すなわち、発信グループ情報を受信したノードは、発信グループ情報を発信したハブノードと同じグループに属することを条件として、発信グループ情報を転送する。
【００４１】
通常ノード２００，２２０，２４０の各々は、接続した他ノードから送信された発信グループ情報により示されるグループと、自ノードが属するグループを示す自グループ情報により示されるグループとが一致するか否かを判定する。そして、一致しないと判定した場合、自ノードと他ノードとが同一のグループに属しないと判定する一方、一致すると判定した場合、自ノードと他ノードとが同一のグループに属すると判定する。通常ノード２００，２２０，２４０の各々は、同一のグループに属さないと判定した場合、他ノードとの接続を切断する一方、同一のグループに属すると判定した場合、他ノードとの接続を維持する。
【００４２】
例えば、通常ノード２００は、グループＡに属する通常ノード（例えば、通常ノード２４０）と接続した場合、通常ノード２４０から受信した発信グループ情報（ハブノード１４０から発信され、通常ノード２４０を介して転送されてきたもので、グループＡを示す）と、自身が記憶している自グループ情報（グループＡを示す）とに基づいて、自ノード２００と通常ノード２４０とが同一のグループＡに属するか否かについて判定する。この場合、通常ノード２００は、通常ノード２４０が自分と同一のグループＡに属すると判定し、通常ノード２４０との接続を維持する。その後、通常ノード２００は、接続を維持した通常ノード２４０との間でリソースのやり取りを行うことが可能である。
【００４３】
また、通常ノード２００は、グループＢに属する通常ノード（例えば、通常ノード３００）と接続した場合、通常ノード３００から受信した発信グループ情報（ハブノード１６０から発信され通常ノード３００を介して転送されてきたもので、グループＢを示す）と、自身が記憶している自グループ情報（グループＡを示す）とに基づいて、自ノード２００と通常ノード３００とが同一のグループＡに属するか否かについて判定する。この場合、通常ノード２００は、通常ノード３００が自分と同一のグループＡに属しないと判定し、通常ノード３００との接続を切断する。
【００４４】
グループＢに属する通常ノード２６０，２８０，３００の各々は、サーバ１２０にアクセスすることによりＰ２Ｐネットワークシステム１０へのログインを行う。Ｐ２Ｐネットワークシステム１０へのログインに成功した場合、通常ノード２６０，２８０，３００の各々は、自グループ情報をサーバ１２０から取得して記憶する。また、通常ノード２６０，２８０，３００の各々は、ログイン成功後は、他ノード（ハブノード、通常ノード）に対して自律的に接続していくことができる。
【００４５】
また、通常ノード２６０，２８０，３００の各々は、ログイン成功後は他ノードからの自律的な接続を受けることができる。また、通常ノード２６０，２８０，３００の各々は、他ノードと接続した後、自ノードと他ノードとが同一のグループに属するか否かについて判定する。
【００４６】
具体的には、通常ノード２６０，２８０，３００の各々は、自ノード以外の別ノード（自ノードと接続した他ノード）が属するグループ内のハブノードから発信された発信グループ情報（当該ハブノードが属するグループを示す情報）を他ノードから受信する。この発信グループ情報は、あるグループに属するハブノードから定期的にブロードキャスト形式で送信され、複数のノードを介してブロードキャスト形式で転送されていくものである。発信グループ情報を受信したノードがそれを転送するか否かについては条件がある。すなわち、発信グループ情報を受信したノードは、発信グループ情報を発信したハブノードと同じグループに属することを条件として、発信グループ情報を転送する。
【００４７】
通常ノード２６０，２８０，３００の各々は、接続した他ノードから送信された発信グループ情報により示されるグループと、自ノードが属するグループを示す自グループ情報により示されるグループとが一致するか否かを判定する。そして、一致しないと判定した場合、自ノードと他ノードとが同一のグループに属しないと判定する一方、一致すると判定した場合、自ノードと他ノードとが同一のグループに属すると判定する。通常ノード２６０，２８０，３００の各々は、同一のグループに属さないと判定した場合、他ノードとの接続を切断する一方、同一のグループに属すると判定した場合、他ノードとの接続を維持する。
【００４８】
例えば、通常ノード２６０は、グループＢに属する通常ノード（例えば、通常ノード２８０）と接続した場合、通常ノード２８０から受信した発信グループ情報（ハブノード１６０から発信され、通常ノード２８０を介して転送されてきたもので、グループＢを示す）と、自身が記憶している自グループ情報（グループＢを示す）とに基づいて、自ノード２６０と通常ノード２８０とが同一のグループＢに属するか否かについて判定する。この場合、通常ノード２６０は、通常ノード２８０が自分と同一のグループＢに属すると判定し、通常ノード２８０との接続を維持する。その後、通常ノード２６０は、接続を維持した通常ノード２８０との間でリソースのやり取りを行うことが可能である。
【００４９】
また、通常ノード２６０は、グループＡに属する通常ノード（例えば、通常ノード２２０）と接続した場合、通常ノード２２０から受信した発信グループ情報（ハブノード１４０から発信され通常ノード２２０を介して転送されてきたもので、グループＡを示す）と、自身が記憶している自グループ情報（グループＢを示す）とに基づいて、自ノード２６０と通常ノード２２０とが同一のグループＢに属するか否かについて判定する。この場合、通常ノード２６０は、通常ノード２２０が自分と同一のグループＢに属しないと判定し、通常ノード２２０との接続を切断する。
【００５０】
以上のように、グループＡ，Ｂに属する通常ノード２００，２２０，２４０，２６０，２８０，３００の間で自律的に接続したとしても、同一のグループに属する通常ノード間の接続のみが維持され、同じグループに属さない通常ノード間の接続は切断されるため、ノード間の自律的な接続によってグループＡ，Ｂが拡大することを防止することができる。
【００５１】
次に、本実施形態によるＰ２Ｐネットワークシステム１０を構成するサーバ１２０、ハブノード１４０，１６０、通常ノード２００，２２０，２４０，２６０，２８０，３００の機能構成について説明する。図２は、本実施形態によるＰ２Ｐネットワークシステム１０を構成するサーバ１２０、ハブノード１４０，１６０、通常ノード２００，２２０，２４０，２６０，２８０，３００の機能構成例を示すブロック図である。なお、ハブノード１４０，１６０は同様の機能構成を有することから、図２では、ハブノード１４０，１６０のいずれかの機能構成例を示しているものとする。また、通常ノード２００，２２０，２４０，２６０，２８０，３００は同様の機能構成を有することから、図２では、通常ノード２００，２２０，２４０，２６０，２８０，３００のいずれかの機能構成例を示しているものとする。
【００５２】
まず、サーバ１２０の機能構成について説明する。図２に示すように、サーバ１２０は、ノード管理情報記憶部４００、ログイン認証部４２０、ノードリスト情報送信部４４０および自グループ情報送信部４６０を備えて構成されている。
【００５３】
ノード管理情報記憶部４００は、Ｐ２Ｐネットワークシステム１０を構成する全てのノード（ハブノード１４０，１６０、通常ノード２００，２２０，２４０，２６０，２８０，３００）に関するノード管理情報を記憶する。本実施形態では、ノード管理情報記憶部４００は、サーバ１２０に備えられた操作部（図示せず）に対するユーザの操作により入力されたノード管理情報を記憶している。
【００５４】
ノード管理情報は、各ノードを識別するためのノード識別情報、各ノードが属するグループ（本実施形態では、グループＡまたはグループＢ）を示すグループ情報、各ノードがハブノードであるか通常ノードであるかを示すノード種別情報、各ノードがＰ２Ｐネットワークシステム１０へログインするために必要なパスワードを示すパスワード情報、および各ノードがＰ２Ｐネットワークシステム１０へログインしている状態か否かを示すログイン状態情報を含む。もし、ノードがＰ２Ｐネットワークシステム１０へログインしている状態の場合、対応するログイン状態情報の値には「ログイン状態」が記憶される。一方、ノードがＰ２Ｐネットワークシステム１０へログインしていない状態の場合、対応するログイン状態情報の値には「未ログイン状態」が記憶される。
【００５５】
ログイン認証部４２０は、Ｐ２Ｐネットワークシステム１０へログインするためにアクセスしてきたノードから送信されたノード識別情報およびパスワード情報を受信する。ログイン認証部４２０は、受信したノード識別情報およびパスワード情報と値が一致するノード識別情報およびパスワード情報がノード管理情報記憶部４００に記憶されているか否かについて判定する。もし、値が一致するノード識別情報およびパスワード情報が記憶されていないと判定した場合、ログイン認証部４２０は、アクセスしてきたノードについてＰ２Ｐネットワークシステム１０へのログインを拒否する。
【００５６】
一方、値が一致するノード識別情報およびパスワード情報が記憶されていると判定した場合、ログイン認証部４２０は、アクセスしてきたノードについてＰ２Ｐネットワークシステム１０へのログインを許可する。その後、ログイン認証部４２０は、ノード管理情報記憶部４００においてノード識別情報に対応して記憶されているノード種別情報を参照し、ログインを許可したノードがハブノードか通常ノードかを判定する。
【００５７】
ログインを許可したノードがハブノードであれば、ログイン認証部４２０は、ログインしたノードのグループ情報をノード管理情報記憶部４００から読み出してノードリスト情報送信部４４０に出力する。一方、ログインを許可したノードが通常ノードであれば、ログイン認証部４２０は、ログインした通常ノードのグループ情報をノード管理情報記憶部４００から読み出して自グループ情報送信部４６０に出力するとともに、ノード管理情報記憶部４００においてノード識別情報に対応して記憶されているログイン状態情報の値に「ログイン状態」を記憶させる。
【００５８】
ノードリスト情報送信部４４０は、ログイン認証部４２０からグループ情報が出力された場合、ノード管理情報記憶部４００を参照し、ログイン認証部４２０から出力されたグループ情報と値が一致するグループ情報および値として「ログイン状態」が記憶されているログイン状態情報を含むノード管理情報を抽出し、抽出したノード管理情報のグループ情報およびノード識別情報を、認証済みノードの一覧を表すノードリスト情報として、ログインしてきたハブノードに返信する。
【００５９】
また、ノードリスト情報送信部４４０は、ハブノードからノードリスト情報の問い合わせを受けた場合、ノード管理情報記憶部４００に記憶されているノード管理情報を参照し、当該ハブノードが属するグループが値として記憶されているグループ情報および値として「ログイン状態」が記憶されているログイン状態情報を含むノード管理情報を抽出し、抽出したノード管理情報のグループ情報およびノード識別情報をノードリスト情報として、問い合わせてきたハブノードに返信する。
【００６０】
自グループ情報送信部４６０は、ログイン認証部４２０から出力されたグループ情報を自グループ情報として、ログインしてきた通常ノードに返信する。
【００６１】
次に、ハブノードの機能構成について説明する。図２に示すように、ハブノードは、サーバ接続部５００、ノードリスト情報受信部５２０、ノードリスト情報記憶部５４０、ノード接続部５６０、ノード識別情報受信部６００、判定部６２０、ノード切断部６４０、タイマ６６０、発信グループ情報送信部６８０、発信グループ情報受信部７００、ノードリスト情報問い合わせ部７２０、ノード識別情報記憶部７４０およびノード識別情報送信部７６０を備えて構成されている。
【００６２】
サーバ接続部５００は、ハブノードがＰ２Ｐネットワークシステム１０へログインするため、サーバ１２０のログイン認証部４２０にアクセスし、自ノードを識別するノード識別情報およびパスワード情報を送信する。なお、ノード識別情報およびパスワード情報は、ノード識別情報記憶部７４０に記憶されている。
【００６３】
ノードリスト情報受信部５２０は、サーバ１２０のノードリスト情報送信部４４０から送信されたノードリスト情報を受信する。ノードリスト情報記憶部５４０は、ノードリスト情報受信部５２０により受信されたノードリスト情報を記憶する。
【００６４】
ノード接続部５６０は、他ノード（ハブノードまたは通常ノード）と接続する（自律的な接続）。例えば、ノード接続部５６０は、不特定多数の相手に向かってブロードキャストメッセージを送信し、その送信に対する応答により他ノードを発見し、当該発見した他ノードに接続要求を行い接続する。逆に、ノード接続部５６０は、他ノードから接続要求を受けて接続することもある。
【００６５】
ノード識別情報受信部６００は、他ノード（ハブノードまたは通常ノード）からブロードキャスト形式で送信されたノード識別情報を受信する。そして、ノード識別情報受信部６００は、受信したノード識別情報を判定部６２０に出力する。
【００６６】
判定部６２０は、ノード識別情報受信部６００から出力されたノード識別情報が、ノードリスト情報記憶部５４０に記憶されているノードリスト情報に含まれているか否かについて判定することによって、自ノードと他ノードとが同一のグループに属するか否かについて判定する。もし、自ノードと他ノードとが同一のグループに属すると判定した場合、判定部６２０は、自ノードと他ノードとが同一のグループに属する旨をノード接続部５６０に通知する。ノード接続部５６０は、自ノードと他ノードとが同一のグループに属する旨の通知を判定部６２０から受けた場合、ノード識別情報を送信してきた他ノードとの接続を維持する。
【００６７】
一方、自ノードと他ノードとが同一のグループに属しないと判定した場合、判定部６２０は、その旨をノード切断部６４０に通知する。ノード切断部６４０は、ノード識別情報を送信してきた他ノードとの接続を切断する。
【００６８】
タイマ６６０は、所定時間間隔（例えば、１分）毎に制御信号を発信グループ情報送信部６８０に出力する。また、タイマ６６０は、所定時間間隔（例えば、１０分）毎に制御信号をノードリスト情報問い合わせ部７２０に出力する。また、タイマ６６０は、所定時間間隔（例えば、１０秒）毎に制御信号をノード識別情報送信部７６０に出力する。発信グループ情報送信部６８０は、タイマ６６０から制御信号が出力されたか否かを判定することによって、所定時間が経過したか否かについて判定する。もし、所定時間が経過していないと判定した場合、発信グループ情報送信部６８０は、発信グループ情報を送信しない。
【００６９】
一方、所定時間が経過したと判定した場合、発信グループ情報送信部６８０は、自ノードが属するグループを示す発信グループ情報を生成する。発信グループ情報は、ノードリスト情報記憶部５４０に記憶されているノードリスト情報に含まれるグループ情報、および、発信グループ情報の有効期間を示すＴＴＬ（Ｔｉｍｅ  Ｔｏ  Ｌｉｖｅ）情報を含む。本実施形態では、発信グループ情報送信部６８０が発信グループ情報を生成する際に、発信グループ情報に含まれるＴＴＬ情報の値に例えば「５」が記憶される。発信グループ情報送信部６８０は、生成した発信グループ情報をブロードキャスト形式で他ノードに送信する。
【００７０】
発信グループ情報受信部７００は、他ノード（ハブノードまたは通常ノード）からブロードキャスト形式で送信された発信グループ情報を受信する。後述するように、通常ノードでは、他ノードから受信した発信グループ情報をその他ノードと自ノードとが同一のグループに属するか否かについての判定に使用する。しかし、ハブノードでは上述したように、他ノードから受信したノード識別情報とノードリスト情報とに基づき同一のグループに属するか否かについて判定する。つまり、発信グループ情報受信部７００は、他ノードから受信した発信グループ情報を同一のグループに属するか否かについての判定に使用せず破棄する。
【００７１】
ノードリスト情報問い合わせ部７２０は、タイマ６６０から制御信号が出力されたか否かを判定することによって、所定時間が経過したか否かについて判定する。もし、所定時間が経過していないと判定した場合、ノードリスト情報問い合わせ部７２０は、サーバ１２０に対してノードリスト情報の問い合わせを行わない。一方、所定時間が経過したと判定した場合、ノードリスト情報問い合わせ部７２０は、サーバ１２０に対してノードリスト情報の問い合わせを行う。
【００７２】
ノード識別情報記憶部７４０は、ノード識別情報およびパスワード情報を記憶する。本実施形態では、ノード識別情報記憶部７４０は、ハブノードに備えられた操作部（図示せず）に対するユーザの操作により入力されたノード識別情報およびパスワード情報を記憶している。
【００７３】
ノード識別情報送信部７６０は、タイマ６６０から制御信号が出力されたか否かを判定することによって、所定時間が経過したか否かについて判定する。もし、所定時間が経過していないと判定した場合、ノード識別情報送信部７６０は、ノード識別情報記憶部７４０に記憶されているノード識別情報を送信しない。一方、所定時間が経過したと判定した場合、ノード識別情報送信部７６０は、ノード識別情報記憶部７４０に記憶されているノード識別情報をブロードキャスト形式で他ノードに送信する。自ノード以外のハブノードでは、ノード識別情報送信部７６０により送信されたノード識別情報をノード識別情報受信部６００で受信する。
【００７４】
最後に、通常ノードの機能構成について説明する。図２に示すように、通常ノードは、サーバ接続部８００、自グループ情報受信部８２０、自グループ情報記憶部８４０、ノード接続部８６０、ノード識別情報記憶部９００、タイマ９１０、ノード識別情報送信部９２０、発信グループ情報受信部９４０、判定部９６０、ノード切断部９８０および発信グループ情報送信部１０００を備えて構成されている。
【００７５】
サーバ接続部８００は、通常ノードがＰ２Ｐネットワークシステム１０へログインするため、サーバ１２０のログイン認証部４２０にアクセスし、自ノードを識別するノード識別情報およびパスワード情報を送信する。なお、ノード識別情報およびパスワード情報は、ノード識別情報記憶部９００に記憶されている。
【００７６】
自グループ情報受信部８２０は、サーバ１２０の自グループ情報送信部４６０から送信された自グループ情報を受信する。自グループ情報記憶部８４０は、自グループ情報受信部８２０により受信された自グループ情報を記憶する。
【００７７】
ノード接続部８６０は、他ノード（ハブノードまたは通常ノード）と接続する（自律的な接続）。例えば、ノード接続部８６０は、不特定多数の相手に向かってブロードキャストメッセージを送信し、その送信に対する応答により他ノードを発見し、当該発見した他ノードに接続要求を行い接続する。逆に、ノード接続部８６０は、他ノードから接続要求を受けて接続することもある。
【００７８】
ノード識別情報記憶部９００は、ノード識別情報およびパスワード情報を記憶する。本実施形態では、ノード識別情報記憶部９００は、通常ノードに備えられた操作部（図示せず）に対するユーザの操作により入力されたノード識別情報およびパスワード情報を記憶している。タイマ９１０は、所定時間間隔（例えば、１０秒）毎に制御信号をノード識別情報送信部９２０に出力する。
【００７９】
ノード識別情報送信部９２０は、タイマ９１０から制御信号が出力されたか否かを判定することによって、所定時間が経過したか否かについて判定する。もし、所定時間が経過していないと判定した場合、ノード識別情報送信部９２０は、ノード識別情報記憶部９００に記憶されているノード識別情報を送信しない。一方、所定時間が経過したと判定した場合、ノード識別情報送信部９２０は、ノード識別情報記憶部９００に記憶されているノード識別情報をブロードキャスト形式で他ノードに送信する。ハブノードでは、通常ノードのノード識別情報送信部９２０により送信されたノード識別情報をノード識別情報受信部６００で受信する。
【００８０】
発信グループ情報受信部９４０は、他ノードからブロードキャスト形式で送信された発信グループ情報（ハブノードの発信グループ情報送信部６８０から発信されたもの、または、通常ノードの発信グループ情報送信部１０００から転送されたもの）を受信する。そして、発信グループ情報受信部９４０は、受信した発信グループ情報を判定部９６０および発信グループ情報送信部１０００に出力する。
【００８１】
判定部９６０は、発信グループ情報受信部９４０から出力された発信グループ情報により示されるグループが、自グループ情報記憶部８４０に記憶されている自グループ情報により示されるグループと一致するか否かを判定することによって、自ノードと他ノードとが同一のグループに属するか否かについて判定する。もし、自ノードと他ノードとが同一のグループに属すると判定した場合、判定部９６０はその旨をノード接続部８６０および発信グループ情報送信部１０００に通知する。ノード接続部８６０は、自ノードと他ノードとが同一のグループに属する旨の通知を受けた場合、発信グループ情報を送信してきた他ノードとの接続を維持する。
【００８２】
一方、自ノードと他ノードとが同一のグループに属しないと判定した場合、判定部９６０は、その旨をノード切断部９８０に通知する。ノード切断部９８０は、自ノードと他ノードとが同一のグループに属しない旨の通知を判定部９６０から受けて、発信グループ情報を送信してきた他ノードとの接続を切断する。
【００８３】
発信グループ情報送信部１０００は、自ノードと他ノードとが同一のグループに属する旨の通知を判定部９６０から受けた場合、発信グループ情報受信部９４０から出力された発信グループ情報に含まれるＴＴＬの値が０（ゼロ）になっているか否かについて判定する。もし、ＴＴＬの値が０（ゼロ）になっていると判定した場合、発信グループ情報送信部１０００は、発信グループ情報を送信しない。一方、ＴＴＬの値が０（ゼロ）になっていないと判定した場合、発信グループ情報送信部１０００は、発信グループ情報に含まれるＴＴＬの値から１を減算した値を当該ＴＴＬの値として更新する。そして、発信グループ情報送信部１０００は、ＴＴＬの値を更新した発信グループ情報を、他ノードにブロードキャスト形式で送信する。
【００８４】
以上に説明した本実施形態によるハブノード１４０，１６０、通常ノード２００，２２０，２４０，２６０，２８０，３００の機能は、実際にはコンピュータのＣＰＵあるいはＭＰＵ、ＲＡＭ、ＲＯＭなどで構成され、ＲＡＭやＲＯＭに記憶されたプログラムが動作することによって実現できる。したがって、コンピュータが上記の機能を果たすように動作させるプログラムを例えばＣＤ−ＲＯＭのような記録媒体に記録し、コンピュータに読み込ませることによって実現できるものである。
【００８５】
上記プログラムを記録する記録媒体としては、ＣＤ−ＲＯＭ以外に、フレキシブルディスク、ハードディスク、磁気テープ、光ディスク、光磁気ディスク、ＤＶＤ、不揮発性メモリカード等を用いることができる。また、上記プログラムをインターネット等のネットワークを介してコンピュータにダウンロードすることによっても実現できる。
【００８６】
次に、本実施形態における通常ノードの接続管理に関する動作について説明する。図３は、他ノード（ハブノードまたは通常ノード）と接続した後の通常ノードの接続管理に関する動作例を示すフローチャートである。
【００８７】
まず、発信グループ情報受信部９４０は、他ノードからブロードキャスト形式で送信された発信グループ情報（ハブノードの発信グループ情報送信部６８０から発信されたもの、または、通常ノードの発信グループ情報送信部１０００から転送されたもの）を受信したか否かについて判定する（ステップＳ２００）。もし、発信グループ情報を受信していないと発信グループ情報受信部９４０にて判定した場合（ステップＳ２００にてＮＯ）、処理はステップＳ３２０に遷移する。
【００８８】
一方、発信グループ情報を受信したと発信グループ情報受信部９４０にて判定した場合（ステップＳ２００にてＹＥＳ）、発信グループ情報受信部９４０は、受信した発信グループ情報を判定部９６０および発信グループ情報送信部１０００に出力する。次に、判定部９６０は、発信グループ情報受信部９４０から出力された発信グループ情報により示されるグループが、自グループ情報記憶部８４０に記憶されている自グループ情報により示されるグループと一致するか否かを判定することによって、自ノードと他ノードとが同一のグループに属するか否かについて判定する（ステップＳ２２０）。
【００８９】
もし、自ノードと他ノードとが同一のグループに属すると判定部９６０にて判定した場合（ステップＳ２２０にてＹＥＳ）、判定部９６０はその旨を発信グループ情報送信部１０００に通知する。次に、発信グループ情報送信部１０００は、自ノードと他ノードとが同一のグループに属する旨の通知を判定部９６０から受けて、発信グループ情報受信部９４０から出力された発信グループ情報に含まれるＴＴＬの値が０（ゼロ）になっているか否かについて判定する（ステップＳ２４０）。もし、ＴＴＬの値が０（ゼロ）になっていると発信グループ情報送信部１０００にて判定した場合（ステップＳ２４０にてＹＥＳ）、処理はステップＳ３２０に遷移する。
【００９０】
一方、ＴＴＬの値が０（ゼロ）になっていないと発信グループ情報送信部１０００にて判定した場合（ステップＳ２４０にてＮＯ）、発信グループ情報送信部１０００は、発信グループ情報に含まれるＴＴＬの値から１を減算した値を当該ＴＴＬの値として更新する（ステップＳ２６０）。次に、発信グループ情報送信部１０００は、ＴＴＬの値を更新した発信グループ情報を、他ノードにブロードキャスト形式で送信する（ステップＳ２８０）。その後、処理はステップＳ３２０に遷移する。
【００９１】
自ノードと他ノードとが同一のグループに属しないと判定部９６０にて判定した場合（ステップＳ２２０にてＮＯ）、判定部９６０はその旨をノード切断部９８０に通知する。次に、ノード切断部９８０は、自ノードと他ノードとが同一のグループに属しない旨の通知を判定部９６０から受けて、発信グループ情報を送信してきた他ノードとの接続を切断する（ステップＳ３００）。その後、処理はステップＳ３２０に遷移する。
【００９２】
ステップＳ３２０では、通常ノードは、当該通常ノードに備えられた操作部（図示せず）に対してユーザによる電源オフ操作が行なわれたか否かについて判定する。もし、電源オフ操作が行なわれていないと通常ノードにて判定した場合（ステップＳ３２０にてＮＯ）、処理はステップＳ２００に遷移する。一方、電源オフ操作が行なわれたと通常ノードにて判定した場合（ステップＳ３２０にてＹＥＳ）、通常ノードは図３における処理を終了する。
【００９３】
次に、本実施形態におけるハブノードの接続管理に関する動作について説明する。図４は、Ｐ２Ｐネットワークシステム１０へログインした後のハブノードの接続管理に関する動作例を示すフローチャートである。
【００９４】
まず、ノード接続部５６０は、他ノード（ハブノードまたは通常ノード）と接続したか否かについて判定する（ステップＳ４００）。もし、他ノードと接続していないとノード接続部５６０にて判定した場合（ステップＳ４００にてＮＯ）、処理はステップＳ４６０に遷移する。
【００９５】
一方、他ノードと接続したとノード接続部５６０にて判定した場合（ステップＳ４００にてＹＥＳ）、判定部６２０は、ノード識別情報受信部６００から出力されたノード識別情報が、ノードリスト情報記憶部５４０に記憶されているノードリスト情報に含まれているか否かについて判定することによって、自ノードと他ノードとが同一のグループに属するか否かについて判定する（ステップＳ４２０）。もし、自ノードと他ノードとが同一のグループに属すると判定部６２０にて判定した場合（ステップＳ４２０にてＹＥＳ）、処理はステップＳ４６０に遷移する。
【００９６】
一方、自ノードと他ノードとが同一のグループに属しないと判定部６２０にて判定した場合（ステップＳ４２０にてＮＯ）、判定部６２０は、その旨をノード切断部６４０に通知する。次に、ノード切断部６４０は、ノード識別情報を送信してきた他ノードとの接続を切断する（ステップＳ４４０）。その後、処理はステップＳ４６０に遷移する。
【００９７】
ステップＳ４６０では、ハブノードは、当該ハブノードに備えられた操作部（図示せず）に対してユーザによる電源オフ操作が行なわれたか否かについて判定する。もし、電源オフ操作が行なわれていないとハブノードにて判定した場合（ステップＳ４６０にてＮＯ）、処理はステップＳ４００に遷移する。一方、電源オフ操作が行なわれたとハブノードにて判定した場合（ステップＳ４６０にてＹＥＳ）、ハブノードは図４における処理を終了する。
【００９８】
次に、本実施形態におけるハブノードによる発信グループ情報の送信動作について説明する。図５は、Ｐ２Ｐネットワークシステム１０へログインした後のハブノードによる発信グループ情報の送信動作例を示すフローチャートである。
【００９９】
まず、発信グループ情報送信部６８０は、タイマ６６０から制御信号が出力されたか否かを判定することによって、所定時間が経過したか否かについて判定する（ステップＳ６００）。もし、所定時間が経過していないと発信グループ情報送信部６８０にて判定した場合（ステップＳ６００にてＮＯ）、処理はステップＳ６６０に遷移する。
【０１００】
一方、所定時間が経過したと発信グループ情報送信部６８０にて判定した場合（ステップＳ６００にてＹＥＳ）、発信グループ情報送信部６８０は、ノードリスト情報記憶部５４０に記憶されているノードリスト情報に基づいて、自ノードが属するグループを示す発信グループ情報を生成する（ステップＳ６２０）。次に、発信グループ情報送信部６８０は、生成した発信グループ情報をブロードキャスト形式で他ノードに送信する（ステップＳ６４０）。
【０１０１】
最後に、ハブノードは、当該ハブノードに備えられた操作部（図示せず）に対してユーザによる電源オフ操作が行なわれたか否かについて判定する（ステップＳ６６０）。もし、電源オフ操作が行なわれていないとハブノードにて判定した場合（ステップＳ６６０にてＮＯ）、処理はステップＳ６００に遷移する。一方、電源オフ操作が行なわれたとハブノードにて判定した場合（ステップＳ６６０にてＹＥＳ）、ハブノードは図５における処理を終了する。
【０１０２】
以上詳しく説明したように、本実施形態では、グループに属する複数のノード間でリソースをやり取りするＰ２Ｐネットワークシステム１０において、ノードどうしの自律的な接続が発生した後、接続された両ノードが同一のグループに属するか否かについて判定し、同一のグループに属さないと判定した場合、両ノード間の接続を切断するようにしている。
【０１０３】
具体的には、グループＡ，Ｂに属する通常ノード２００，２２０，２４０，２６０，２８０，３００とハブノード１４０とが自律的に接続したとしても、同一のグループＡに属する通常ノード２００，２２０，２４０とハブノード１４０との間の接続のみが維持され、同じグループＡに属さない通常ノード２６０，２８０，３００とハブノード１４０と間の接続は切断されるため、グループＡが拡大することを防止することができる。
【０１０４】
また、グループＡ，Ｂに属する通常ノード２００，２２０，２４０，２６０，２８０，３００とハブノード１６０とが自律的に接続したとしても、同一のグループＢに属する通常ノード２６０，２８０，３００とハブノード１６０との間の接続のみが維持され、同じグループＢに属さない通常ノード２００，２２０，２４０とハブノード１６０との間の接続は切断されるため、グループＢが拡大することを防止することができる。
【０１０５】
また、ハブノード１４０，１６０は、通常ノードと自律的に接続した場合、ハブノード１４０，１６０が保持しているノードリスト情報と、通常ノードから１０秒という短い時間間隔で送られてくるノード識別情報とを参照して、自ノード１４０，１６０と通常ノードとが同一のグループに属するか否かについて判定することにより、迅速なグループ管理を実現することができる。
【０１０６】
上述したように、ハブノード１４０，１６０ではノードリスト情報という最小限の情報に基づき同一のグループに属するか否かについて判定することにより、ハブノード１４０，１６０において果たすべき処理を単純化することができる。また、通常ノード２００，２２０，２４０，２６０，２８０，３００では発信グループ情報という最小限の情報に基づき同一のグループに属するか否かについて判定することにより、通常ノード２００，２２０，２４０，２６０，２８０，３００において果たすべき処理を単純化することができる。
【０１０７】
また、グループＡ，Ｂに属する通常ノード２００，２２０，２４０，２６０，２８０，３００どうしが自律的に接続したとしても、同一のグループに属する通常ノード間の接続のみが維持され、同じグループに属さない通常ノード間の接続は切断されるため、グループＡ，Ｂが拡大することを防止することができる。
【０１０８】
上述したように、通常ノード２００，２２０，２４０，２６０，２８０，３００ではハブノード１４０，１６０から発信された発信グループ情報に基づき同一のグループに属するか否かについて判定することにより、各通常ノードどうしが接続を開始したときに相互認証するといった特別な機能を当該各通常ノードに組み込む必要をなくすことができる。
【０１０９】
以上のように、ノード間の自律的な接続によってグループＡ，Ｂが拡大していくことを防止することにより、グループＡ，Ｂ内のネットワーク上に非常に多くのコマンド伝播が生じることを防止することができる。したがって、コマンドの増殖を効率よく防止し、通信トラフィックを減少させるとともにネットワークとしての応答性を向上させることができる。
【０１１０】
また、Ｐ２Ｐネットワークシステム１０では、各ノードが自律的に他ノードを発見して接続を開始するアーキテクチャを維持したままなので、各ノードによる自律的なネットワークの構築のスケーラビリティを活かしつつ、グループ管理を実現することができる。
【０１１１】
なお、上記実施形態のグループ管理機能は、様々なネットワークシステムに適用することが可能である。例えば、Ｐ２Ｐプロトコルをベースにしたグループウェアに適用することができる。このグループウェアの中では、例えば、個人またはグループのスケジュールやタスクの管理、文書等のファイル管理およびプロジェクトの進捗管理を行うことができる。
【０１１２】
また、上記実施形態では、ハブノード１４０，１６０についてはノードリスト情報に基づき同一のグループに属するか否かについて判定するようにしたが、ハブノード１４０，１６０についても発信グループ情報に基づいて同一のグループに属するか否かについて判定するようにしても良い。この場合、ハブノード１４０，１６０は、ノードリスト情報受信部５２０、ノードリスト情報記憶部５４０、ノード識別情報受信部６００および判定部６２０に代えて、自グループ情報受信部８２０、自グループ情報記憶部８４０、発信グループ情報受信部９４０、判定部９６０および発信グループ情報送信部１０００を備える。また、ハブノード１４０，１６０は、ノードリスト情報問い合わせ部７２０、ノード識別情報記憶部７４０およびノード識別情報送信部７６０を備える必要がない。通常ノード２００，２２０，２４０，２６０，２８０，３００は、タイマ９１０およびノード識別情報送信部９２０を備える必要がない。
【０１１３】
また、上記実施形態では、サーバ１２０とハブノード１４０，１６０とを別々にする例について説明したが、本発明はこれに限定されない。例えば、サーバ１２０があるグループに属するハブノードを兼ねても良い。この場合、サーバ１２０はあるグループに属するノードということになる。そして、サーバ１２０はあるグループの発信グループ情報を送信する。また、サーバ１２０が全グループのハブノードを兼ねても良い。この場合、サーバ１２０は全グループに属するノードということになる。そして、サーバ１２０は全グループの発信グループ情報を送信する。
【０１１４】
また、上記実施形態では、各グループにおいて、ハブノードが１つ存在する例について説明したが、複数存在するようにしても良い。例えば、ハブノードと通常ノードとの区別をなくし、全てのノードが発信グループ情報をブロードキャスト送信するとともに、全てのノードがノードリスト情報ではなく発信グループ情報に基づいて同一のグループに属するか否かを判定するようにしても良い。ただし、ハブノードの数が多数になると、ネットワーク上における発信グループ情報の伝播が増加する。そのため、ハブノードの数は多くなりすぎないようにすることが好ましい。
【０１１５】
また、上記実施形態では、ハブノードは、通常ノードと自律的に接続した場合、当該ハブノードが保持している一覧リストと、接続した通常ノードから所定時間（１０秒）間隔毎に送られてくるノード識別情報とを参照して、自ノードと通常ノードとが同一のグループに属するか否かについて判定する例について説明した。しかしながら、ノード識別情報を受信するタイミングによっては、ハブノードは、自ノードと通常ノードとが同一のグループに属するか否かについて迅速に判定することができない。そのため、次のように処理を行っても良い。
【０１１６】
すなわち、ハブノードは、通常ノードとの間で自律的な接続が生じた場合、その通常ノードに対してノード識別情報の送信要求を行う。そして、送信要求に応答して通常ノードから送信されたノード識別情報を受信し、ハブノードが保持している一覧リストと当該受信したノード識別情報とを参照して、自ノードと通常ノードとが同一のグループに属するか否かについて判定する。このようにすれば、ハブノードは、通常ノードとの間で自律的な接続が生じた場合、同一のグループに属するか否かについてより迅速に判定することができる。
【０１１７】
その他、上記実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその精神、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【０１１８】
１０  Ｐ２Ｐネットワークシステム
１２０  サーバ
１４０，１６０  ハブノード
２００，２２０，２４０，２６０，２８０，３００  通常ノード
５４０  ノードリスト情報記憶部
５６０，８６０  ノード接続部
６００  ノード識別情報受信部
６２０，９６０  判定部
６４０，９８０  ノード切断部
７００，９４０  発信グループ情報受信部
７６０，９２０  ノード識別情報送信部
８４０  自グループ情報記憶部
【図１】
2011078067.tif 000003
【図２】
2011078067.tif 000004
【図３】
2011078067.tif 000005
【図４】
2011078067.tif 000006
【図５】
2011078067.tif 000007
【図６】
2011078067.tif 000008