(57)【特許請求の範囲】
【請求項１】
複数のノード装置の参加によってオーバレイネットワークが構築され、そのオーバレイネットワーク上で前記複数のノード装置が相互に通信を行うオーバレイネットワーク型通信システムであって、
各ノード装置は、
前記オーバレイネットワークに参加するのに先立ち、所定情報に基づき、予め定められた規則に従って、自ノード装置が前記オーバレイネットワークに参加した場合に自ノード装置が前記オーバレイネットワーク上に位置することとなる論理的位置を一意に特定するためのノードＩＤを決定するノードＩＤ決定手段と、
自ノード装置が、これから前記オーバレイネットワークに参加することを要求する参加要求ノード装置である場合に、他のノード装置のノードＩＤとそのノード装置との通信に必要な通信情報との関係を取得してその関係を記憶手段に記憶させるために、自ノード装置が前記オーバレイネットワークに参加したいという要求を表し、かつ、前記決定されたノードＩＤを含む参加要求情報を前記複数のノード装置のうちのいずれかに送信する参加要求情報送信手段と、
前記参加要求情報を受信した場合に、前記記憶手段に記憶されている他のノード装置のノードＩＤのうち、前記受信された参加要求情報に含まれるノードＩＤに近いノードＩＤを有する他のノード装置に前記参加要求情報を転送する転送手段と、
前記参加要求情報を受信し、かつ、前記記憶手段に記憶されている他のノード装置のノードＩＤより自ノード装置のノードＩＤの方が、前記受信された参加要求情報に含まれるノードＩＤに近く、そのため、前記転送手段の転送先が存在しない場合に、前記参加要求情報に対応する参加要求返信情報を前記参加要求ノード装置に送信する参加要求返信情報送信手段と、
受信した参加要求返信情報に基づき、自ノード装置のノードＩＤを変更するか否かを判定するノードＩＤ変更要否判定手段と、
そのノードＩＤ変更要否判定手段により自ノード装置のノードＩＤを変更すると判定された場合に、自ノード装置のノードＩＤを変更するノードＩＤ変更手段と、
自ノード装置のノードＩＤが変更された場合に、その変更されたノードＩＤを含む前記参加要求情報を前記複数のノード装置のうちのいずれかに再送する再送手段と
を含むオーバレイネットワーク型通信システム。
【請求項２】
複数のノード装置の参加によってオーバレイネットワークが構築され、そのオーバレイネットワーク上で前記複数のノード装置が相互に通信を行うオーバレイネットワーク型通信方法であって、
前記オーバレイネットワークに参加するのに先立ち、所定情報に基づき、予め定められた規則に従って、各ノード装置が前記オーバレイネットワークに参加した場合に各ノード装置が前記オーバレイネットワーク上に位置することとなる論理的位置を一意に特定するためのノードＩＤを決定するノードＩＤ決定工程と、
自ノード装置が、これから前記オーバレイネットワークに参加することを要求する参加要求ノード装置である場合に、他のノード装置のノードＩＤとそのノード装置との通信に必要な通信情報との関係を取得してその関係を記憶手段に記憶させるために、自ノード装置が前記オーバレイネットワークに参加したいという要求を表し、かつ、前記決定されたノードＩＤを含む参加要求情報を前記複数のノード装置のうちのいずれかに送信する参加要求情報送信工程と、
前記参加要求情報を受信した場合に、前記記憶手段に記憶されている他のノード装置のノードＩＤのうち、前記受信された参加要求情報に含まれるノードＩＤに近いノードＩＤを有する他のノード装置に前記参加要求情報を転送する転送工程と、
前記参加要求情報を受信し、かつ、前記記憶手段に記憶されている他のノード装置のノードＩＤより自ノード装置のノードＩＤの方が、前記受信された参加要求情報に含まれるノードＩＤに近く、そのため、前記転送手段の転送先が存在しない場合に、前記参加要求情報に対応する参加要求返信情報を前記参加要求ノード装置に送信する参加要求返信情報送信工程と、
受信した参加要求返信情報に基づき、自ノード装置のノードＩＤを変更するか否かを判定するノードＩＤ変更要否判定工程と、
そのノードＩＤ変更要否判定工程により自ノード装置のノードＩＤを変更すると判定された場合に、自ノード装置のノードＩＤを変更するノードＩＤ変更工程と、
自ノード装置のノードＩＤが変更された場合に、その変更されたノードＩＤを含む前記参加要求情報を前記複数のノード装置のうちのいずれかに再送する再送工程と
を含むオーバレイネットワーク型通信方法。
【請求項３】
他のノード装置と共に参加することによってオーバレイネットワークを構築し、そのオーバレイネットワーク上で他のノード装置と通信を行うオーバレイネットワーク型ノード装置であって、
前記オーバレイネットワークに参加するのに先立ち、所定情報に基づき、予め定められた規則に従って、自ノード装置が前記オーバレイネットワークに参加した場合に自ノード装置が前記オーバレイネットワーク上に位置することとなる論理的位置を一意に特定するためのノードＩＤを決定するノードＩＤ決定手段と、
自ノード装置が、これから前記オーバレイネットワークに参加することを要求する参加要求ノード装置である場合に、他のノード装置のノードＩＤとそのノード装置との通信に必要な通信情報との関係を取得してその関係を記憶手段に記憶させるために、自ノード装置が前記オーバレイネットワークに参加したいという要求を表し、かつ、前記決定されたノードＩＤを含む参加要求情報を前記複数のノード装置のうちのいずれかに送信する参加要求情報送信手段と、
前記参加要求情報を受信した場合に、前記記憶手段に記憶されている他のノード装置のノードＩＤのうち、前記受信された参加要求情報に含まれるノードＩＤに近いノードＩＤを有する他のノード装置に前記参加要求情報を転送する転送手段と、
前記参加要求情報を受信し、かつ、前記記憶手段に記憶されている他のノード装置のノードＩＤより自ノード装置のノードＩＤの方が、前記受信された参加要求情報に含まれるノードＩＤに近く、そのため、前記転送手段の転送先が存在しない場合に、前記参加要求情報に対応する参加要求返信情報を前記参加要求ノード装置に送信する参加要求返信情報送信手段と、
受信した参加要求返信情報に基づき、自ノード装置のノードＩＤを変更するか否かを判定するノードＩＤ変更要否判定手段と、
そのノードＩＤ変更要否判定手段により自ノード装置のノードＩＤを変更すると判定された場合に、自ノード装置のノードＩＤを変更するノードＩＤ変更手段と、
自ノード装置のノードＩＤが変更された場合に、その変更されたノードＩＤを含む前記参加要求情報を前記複数のノード装置のうちのいずれかに再送する再送手段と
を含むオーバレイネットワーク型ノード装置。
【請求項４】
前記参加要求返信情報送信手段は、前記転送手段の転送先が存在しない場合に、自ノード装置のノードＩＤを含み、かつ、前記参加要求情報に対応する前記参加要求返信情報を前記参加要求ノード装置に送信する手段を含み、
前記ノードＩＤ変更要否判定手段は、受信した参加要求返信情報に含まれるノードＩＤが自ノード装置のノードＩＤと一致する場合に、自ノード装置のノードＩＤを変更すると判定する手段を含む請求項３に記載のオーバレイネットワーク型ノード装置。
【請求項５】
前記参加要求返信情報送信手段は、前記転送手段の転送先が存在しない場合に、前記参加要求情報に含まれる参加要求ノード装置のノードＩＤが自ノード装置のノードＩＤと一致するか否かを判定し、一致すると判定した場合に、ノードＩＤの変更を指示するノードＩＤ変更指示情報を含む前記参加要求返信情報を前記参加要求ノード装置に送信する手段を含み、
前記ノードＩＤ変更要否判定手段は、受信した参加要求返信情報に前記ノードＩＤ変更指示情報が含まれている場合に、自ノード装置のノードＩＤを変更すると判定する手段を含む請求項３に記載のオーバレイネットワーク型ノード装置。
【請求項６】
前記ノードＩＤ変更手段は、前記ノードＩＤ決定手段によって決定されたもとのノードＩＤを参照することなく、そのもとのノードＩＤを決定するために用いられた前記所定情報および／または前記規則とは異なる情報および／または規則を用いて、前記もとのノードＩＤとは異なる新たなノードＩＤを取得する取得手段を含む請求項３ないし５のいずれかに記載のオーバレイネットワーク型ノード装置。
【請求項７】
前記取得手段は、前記もとのノードＩＤを決定するために用いられた情報とは別の情報を追加的にまたは代替的に用いることにより、前記新たなノードＩＤを取得する手段を含む請求項６に記載のオーバレイネットワーク型ノード装置。
【請求項８】
前記ノードＩＤ変更手段は、前記ノードＩＤ決定手段によって決定されたもとのノードＩＤを参照することにより、そのもとのノードＩＤとは異なる新たなノードＩＤを取得する取得手段を含む請求項３ないし５のいずれかに記載のオーバレイネットワーク型ノード装置。
【請求項９】
前記取得手段は、前記もとのノードＩＤに対して予め定められた演算を行うことにより、前記新たなノードＩＤを取得する手段を含む請求項８に記載のオーバレイネットワーク型ノード装置。
【請求項１０】
前記オーバレイネットワークに参加した際に用いたノードＩＤを、自ノード装置の電源遮断後にも保存する保存手段と、
前記オーバレイネットワークに参加しようとする際に、前記保存手段からノードＩＤを読み出し、その読み出されたノードＩＤを、自ノード装置がこれから前記オーバレイネットワークに参加するために用いるノードＩＤの初期値として設定する設定手段と
を含み、
前記参加要求情報送信手段は、前記設定手段によって設定されたノードＩＤを含む前記参加要求情報を前記複数のノード装置のいずれかに送信する請求項３ないし９のいずれかに記載のオーバレイネットワーク型ノード装置。
【請求項１１】
前記ノードＩＤ決定手段は、前記保存手段にノードＩＤが保存されていない場合に、前記所定情報に基づき、前記予め定められた規則に従って、ノードＩＤを決定する請求項１０に記載のオーバレイネットワーク型ノード装置。
【請求項１２】
自ノード装置が前記参加要求ノード装置ではない状態で前記参加要求情報を受信した場合に、前記参加要求ノード装置が他のノード装置のノードＩＤと前記通信情報との関係を取得してその関係を前記参加要求ノード装置の前記記憶手段に記憶させることを可能とするために、前記参加要求情報に対応する処理を前記参加要求ノード装置に対して実行する参加要求情報対応処理実行手段を含む請求項３ないし１１のいずれかに記載のオーバレイネットワーク型ノード装置。
【請求項１３】
請求項３ないし１２のいずれかに記載のオーバレイネットワーク型ノード装置を動作させるためにコンピュータによって実行されるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノード装置の参加によって構築されるオーバレイネットワーク上で複数のノード装置が相互に通信を行うための技術に関するものであり、特に、各ノード装置のオーバレイネットワーク上における論理的位置を表すノードＩＤを各ノード装置が決定する技術に関するものである。
【背景技術】
【０００２】
複数のノード装置（例えば、複数のパーソナルコンピュータ）間でコンテンツ（例えば、視聴覚コンテンツ）等の情報を共有するために、複数のノード装置の参加によってオーバレイネットワークを論理的に構築し、そのオーバレイネットワーク上で前記複数のノード装置が相互に通信を行うことを可能にする技術が既に実用化されている。
【０００３】
そのような通信システムの一例が特許文献１にピアツーピア型コンテンツ配信システムとして開示されている。このオーバレイネットワーク型通信システムにおいては、複数のノード装置に、オーバレイネットワーク上における複数の論理的位置がそれぞれ割り当てられる。複数のノード装置にそれぞれ割り当てられる複数の論理的位置を、オーバレイネットワーク上において分散して記憶させるために、例えば、分散ハッシュテーブルＤＨＴ(Distributed Hash Table)が用いられる。
【０００４】
各ノード装置のオーバレイネットワーク上における論理的位置を識別するためのデータは、一般に、ノードＩＤと称される。例えば、上述のＤＨＴを用いる場合には、予め定められたハッシュ関数を各ノード装置ごとに固有な情報に適用し、その結果得られた値をノードＩＤとして採用する。
【特許文献１】特開２００６−１９７４００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
一般に、各ノード装置は、オーバレイネットワークに参加するのに先立ち、各ノード装置に固有の情報（例えば、各ノード装置に割り当てられたＩＰアドレス、ＭＡＣアドレス、各ノード装置の製造番号、オーバレイネットワークに参加するときの日付時刻等）に基づき、予め定められた規則（例えば、固有情報に対して、複数のノード装置に共通のハッシュ関数を適用する）に従って、自ノード装置のノードＩＤを決定するように設計される。
【０００６】
ノードＩＤは、それぞれのノード装置に固有であるように決定されるべきである。しかし、各ノード装置が前記予め定られた規則に従ってノードＩＤを決定する際、ハッシュ関数等の性質（２つの別々の値を同じハッシュ関数に与えても、２つの結果が同じになることがあり得る。）により、確率は非常に低いとはいえ、複数のノード装置に同一のノードＩＤが割り当てられてしまう可能性がある。
【０００７】
複数のノード装置が、それらノード装置に同一のノードＩＤが割り当てられたまま、オーバレイネットワークに参加してしまうと、あるノード装置が新しいコンテンツを他のノード装置にも見えるように公開するための公開メッセージ（publishメッセージ）を他のノード装置に配信しても、その公開メッセージが、同一のノードＩＤが割り当てられた複数のノード装置のうちのいずれに到達するのかが分からない。
【０００８】
このように、新しいコンテンツのための公開メッセージの到達先が不明であると、他のノード装置が、そのコンテンツをオーバレイネットワーク上において見つけようとしても、オーバレイネットワーク上において正しいルーティングが行われない。正しいルーティングが行われないと、各ノード装置は、目標のコンテンツがオーバレイネットワーク上に存在するにもかかわらず、目標のコンテンツを保有するコンテンツホルダに到達することができず、目標のコンテンツを見つけることができない。
【０００９】
一方、複数のノード装置に同一のノードＩＤが割り当てられてしまう可能性がある場合に、複数のノード装置に共通の管理サーバをオーバレイネットワークに設置してその管理サーバにノードＩＤを管理させれば、複数のノード装置に同一のノードＩＤが割り当てられてしまうことを防止することが容易である。しかし、そのような管理サーバを設置すると、新たなコストおよびメンテンナンスの必要性が発生するため、そのような管理サーバはできる限り省略することが望ましい。
【００１０】
以上説明した事情を背景とし、本発明は、ノード装置のオーバレイネットワーク上における論理的位置を表すノードＩＤを管理する管理サーバの介入を不可欠とすることなく、複数のノード装置に同一のノードＩＤが割り当てられてしまうことがないように自ノード装置のノードＩＤを決定する技術を提供することを課題としてなされたものである。
【課題を解決するための手段】
【００１１】
本発明によって下記の各態様が得られる。各態様は、項に区分し、各項には番号を付し、必要に応じて他の項の番号を引用する形式で記載する。これは、本発明が採用し得る技術的特徴の一部およびそれの組合せの理解を容易にするためであり、本発明が採用し得る技術的特徴およびそれの組合せが以下の態様に限定されると解釈すべきではない。すなわち、下記の態様には記載されていないが本明細書には記載されている技術的特徴を本発明の技術的特徴として適宜抽出して採用することは妨げられないと解釈すべきなのである。
【００１２】
さらに、各項を他の項の番号を引用する形式で記載することが必ずしも、各項に記載の技術的特徴を他の項に記載の技術的特徴から分離させて独立させることを妨げることを意味するわけではなく、各項に記載の技術的特徴をその性質に応じて適宜独立させることが可能であると解釈すべきである。
【００１３】
（１）  複数のノード装置の参加によってオーバレイネットワークが構築され、そのオーバレイネットワーク上で前記複数のノード装置が相互に通信を行うオーバレイネットワーク型通信システムであって、
各ノード装置は、
前記オーバレイネットワークに参加するのに先立ち、所定情報に基づき、予め定められた規則に従って、自ノード装置が前記オーバレイネットワークに参加した場合に自ノード装置が前記オーバレイネットワーク上に位置することとなる論理的位置を一意に特定するためのノードＩＤを決定するノードＩＤ決定手段と、
自ノード装置が、これから前記オーバレイネットワークに参加することを要求する参加要求ノード装置である場合に、他のノード装置のノードＩＤとそのノード装置との通信に必要な通信情報との関係を取得してその関係を記憶手段に記憶させるために、自ノード装置が前記オーバレイネットワークに参加したいという要求を表し、かつ、前記決定されたノードＩＤを含む参加要求情報を前記複数のノード装置のうちのいずれかに送信する参加要求情報送信手段と、
前記参加要求情報を受信した場合に、前記記憶手段に記憶されている他のノード装置のノードＩＤのうち、前記受信された参加要求情報に含まれるノードＩＤに近いノードＩＤを有する他のノード装置に前記参加要求情報を転送する転送手段と、
前記参加要求情報を受信し、かつ、前記記憶手段に記憶されている他のノード装置のノードＩＤより自ノード装置のノードＩＤの方が、前記受信された参加要求情報に含まれるノードＩＤに近く、そのため、前記転送手段の転送先が存在しない場合に、前記参加要求情報に対応する参加要求返信情報を前記参加要求ノード装置に送信する参加要求返信情報送信手段と、
受信した参加要求返信情報に基づき、自ノード装置のノードＩＤを変更するか否かを判定するノードＩＤ変更要否判定手段と、
そのノードＩＤ変更要否判定手段により自ノード装置のノードＩＤを変更すると判定された場合に、自ノード装置のノードＩＤを変更するノードＩＤ変更手段と、
自ノード装置のノードＩＤが変更された場合に、その変更されたノードＩＤを含む前記参加要求情報を前記複数のノード装置のうちのいずれかに再送する再送手段と
を含むオーバレイネットワーク型通信システム。
【００１４】
このオーバレイネットワーク型通信システムを構成する各ノード装置は、オーバレイネットワークに参加するのに先立ち、所定情報に基づき、予め定められた規則に従って、自ノード装置のノードＩＤを決定する。
【００１５】
各ノード装置は、自ノード装置が、これからオーバレイネットワークに参加することを要求する参加要求ノード装置である場合に、参加要求情報を複数のノード装置のうちのいずれかに送信する。そして、各ノード装置は、自ノード装置が参加要求ノード装置でも後述の最終転送先でもない状態で、他のノード装置から参加要求情報を受信した場合に、自ノード装置の記憶手段に記憶されている他のノード装置のノードＩＤのうち、受信された参加要求情報に含まれるノードＩＤ（参加要求ノード装置のノードＩＤ）に論理空間的に近いノードＩＤを有する他のノード装置に参加要求情報を転送する。
【００１６】
本項に係るオーバレイネットワーク型通信システムを構成する各ノード装置は、自ノード装置が参加要求ノード装置ではないが、最終転送先である状態で、他のノード装置から参加要求情報を受信した場合に、参加要求情報に対応する参加要求返信情報を参加要求ノード装置に送信する。
【００１７】
本項に係るオーバレイネットワーク型通信システムを構成する各ノード装置は、受信した参加要求返信情報に基づき、自ノード装置のノードＩＤを変更するか否かを判定し、変更すると判定した場合に、自ノード装置のノードＩＤを変更する。そして、各ノード装置は、自ノード装置のノードＩＤが変更された場合に、その変更されたノードＩＤを含む参加要求情報を複数のノード装置のうちのいずれかに再送する。
【００１８】
したがって、本項に係るオーバレイネットワーク型通信システムによれば、複数のノード装置に同一のノードＩＤが割り当てられてしまう事態が、管理サーバの設置を不可欠とすることなく、防止される。
【００１９】
（２）  複数のノード装置の参加によってオーバレイネットワークが構築され、そのオーバレイネットワーク上で前記複数のノード装置が相互に通信を行うオーバレイネットワーク型通信方法であって、
前記オーバレイネットワークに参加するのに先立ち、所定情報に基づき、予め定められた規則に従って、各ノード装置が前記オーバレイネットワークに参加した場合に各ノード装置が前記オーバレイネットワーク上に位置することとなる論理的位置を一意に特定するためのノードＩＤを決定するノードＩＤ決定工程と、
自ノード装置が、これから前記オーバレイネットワークに参加することを要求する参加要求ノード装置である場合に、他のノード装置のノードＩＤとそのノード装置との通信に必要な通信情報との関係を取得してその関係を記憶手段に記憶させるために、自ノード装置が前記オーバレイネットワークに参加したいという要求を表し、かつ、前記決定されたノードＩＤを含む参加要求情報を前記複数のノード装置のうちのいずれかに送信する参加要求情報送信工程と、
前記参加要求情報を受信した場合に、前記記憶手段に記憶されている他のノード装置のノードＩＤのうち、前記受信された参加要求情報に含まれるノードＩＤに近いノードＩＤを有する他のノード装置に前記参加要求情報を転送する転送工程と、
前記参加要求情報を受信し、かつ、前記記憶手段に記憶されている他のノード装置のノードＩＤより自ノード装置のノードＩＤの方が、前記受信された参加要求情報に含まれるノードＩＤに近く、そのため、前記転送手段の転送先が存在しない場合に、前記参加要求情報に対応する参加要求返信情報を前記参加要求ノード装置に送信する参加要求返信情報送信工程と、
受信した参加要求返信情報に基づき、自ノード装置のノードＩＤを変更するか否かを判定するノードＩＤ変更要否判定工程と、
そのノードＩＤ変更要否判定工程により自ノード装置のノードＩＤを変更すると判定された場合に、自ノード装置のノードＩＤを変更するノードＩＤ変更工程と、
自ノード装置のノードＩＤが変更された場合に、その変更されたノードＩＤを含む前記参加要求情報を前記複数のノード装置のうちのいずれかに再送する再送工程と
を含むオーバレイネットワーク型通信方法。
【００２０】
このオーバレイネットワーク型通信方法は、前記（１）項に係るオーバレイネットワーク型通信システムの動作方法として実行される。その動作方法は前記（１）項において説明されているため、以下、このオーバレイネットワーク型通信方法を簡単に説明する。
【００２１】
このオーバレイネットワーク型通信方法が実行されると、各ノード装置は、オーバレイネットワークに参加するのに先立ち、所定情報に基づき、予め定められた規則に従って、自ノード装置のノードＩＤを決定する。
【００２２】
さらに、各ノード装置は、自ノード装置が参加要求ノード装置である場合に、参加要求情報を複数のノード装置のうちのいずれかに送信する。
【００２３】
さらに、各ノード装置は、自ノード装置が参加要求ノード装置でも後述の最終転送先でもない状態で、他のノード装置から参加要求情報を受信した場合に、自ノード装置の記憶手段に記憶されている他のノード装置のノードＩＤのうち、参加要求ノード装置のノードＩＤに論理空間的に近いノードＩＤを有する他のノード装置に参加要求情報を転送する。
【００２４】
さらに、各ノード装置は、自ノード装置が参加要求ノード装置ではないが、最終転送先である状態で、他のノード装置から参加要求情報を受信した場合に、参加要求情報に対応する参加要求返信情報を参加要求ノード装置に送信する。
【００２５】
さらに、各ノード装置は、受信した参加要求返信情報に基づき、自ノード装置のノードＩＤを変更するか否かを判定し、自ノード装置のノードＩＤを変更すると判定した場合に、自ノード装置のノードＩＤを変更する。
【００２６】
さらに、各ノード装置は、自ノード装置のノードＩＤが変更された場合に、その変更されたノードＩＤを含む参加要求情報を複数のノード装置のうちのいずれかに再送する。
【００２７】
したがって、本項に係るオーバレイネットワーク型通信方法によれば、複数のノード装置に同一のノードＩＤが割り当てられてしまう事態が、管理サーバの設置を不可欠とすることなく、防止される。
【００２８】
（３）  他のノード装置と共に参加することによってオーバレイネットワークを構築し、そのオーバレイネットワーク上で他のノード装置と通信を行うオーバレイネットワーク型ノード装置であって、
前記オーバレイネットワークに参加するのに先立ち、所定情報に基づき、予め定められた規則に従って、自ノード装置が前記オーバレイネットワークに参加した場合に自ノード装置が前記オーバレイネットワーク上に位置することとなる論理的位置を一意に特定するためのノードＩＤを決定するノードＩＤ決定手段と、
自ノード装置が、これから前記オーバレイネットワークに参加することを要求する参加要求ノード装置である場合に、他のノード装置のノードＩＤとそのノード装置との通信に必要な通信情報との関係を取得してその関係を記憶手段に記憶させるために、自ノード装置が前記オーバレイネットワークに参加したいという要求を表し、かつ、前記決定されたノードＩＤを含む参加要求情報を前記複数のノード装置のうちのいずれかに送信する参加要求情報送信手段と、
前記参加要求情報を受信した場合に、前記記憶手段に記憶されている他のノード装置のノードＩＤのうち、前記受信された参加要求情報に含まれるノードＩＤに近いノードＩＤを有する他のノード装置に前記参加要求情報を転送する転送手段と、
前記参加要求情報を受信し、かつ、前記記憶手段に記憶されている他のノード装置のノードＩＤより自ノード装置のノードＩＤの方が、前記受信された参加要求情報に含まれるノードＩＤに近く、そのため、前記転送手段の転送先が存在しない場合に、前記参加要求情報に対応する参加要求返信情報を前記参加要求ノード装置に送信する参加要求返信情報送信手段と、
受信した参加要求返信情報に基づき、自ノード装置のノードＩＤを変更するか否かを判定するノードＩＤ変更要否判定手段と、
そのノードＩＤ変更要否判定手段により自ノード装置のノードＩＤを変更すると判定された場合に、自ノード装置のノードＩＤを変更するノードＩＤ変更手段と、
自ノード装置のノードＩＤが変更された場合に、その変更されたノードＩＤを含む前記参加要求情報を前記複数のノード装置のうちのいずれかに再送する再送手段と
を含むオーバレイネットワーク型ノード装置。
【００２９】
このオーバレイネットワーク型ノード装置は、前記（１）項に係るオーバレイネットワーク型通信システムを構成する複数のノード装置のそれぞれに該当する。各ノード装置の構成および作用については、前記（１）項において説明されているため、ここでは、重複した説明を省略する。
【００３０】
（４）  前記参加要求返信情報送信手段は、前記転送手段の転送先が存在しない場合に、自ノード装置のノードＩＤを含み、かつ、前記参加要求情報に対応する前記参加要求返信情報を前記参加要求ノード装置に送信する手段を含み、
前記ノードＩＤ変更要否判定手段は、受信した参加要求返信情報に含まれるノードＩＤが自ノード装置のノードＩＤと一致する場合に、自ノード装置のノードＩＤを変更すると判定する手段を含む（３）項に記載のオーバレイネットワーク型ノード装置。
【００３１】
（５）  前記参加要求返信情報送信手段は、前記転送手段の転送先が存在しない場合に、前記参加要求情報に含まれる参加要求ノード装置のノードＩＤが自ノード装置のノードＩＤと一致するか否かを判定し、一致すると判定した場合に、ノードＩＤの変更を指示するノードＩＤ変更指示情報を含む前記参加要求返信情報を前記参加要求ノード装置に送信する手段を含み、
前記ノードＩＤ変更要否判定手段は、受信した参加要求返信情報に前記ノードＩＤ変更指示情報が含まれている場合に、自ノード装置のノードＩＤを変更すると判定する手段を含む（３）項に記載のオーバレイネットワーク型ノード装置。
【００３２】
（６）  前記ノードＩＤ変更手段は、前記ノードＩＤ決定手段によって決定されたもとのノードＩＤを参照することなく、そのもとのノードＩＤを決定するために用いられた前記所定情報および／または前記規則とは異なる情報および／または規則を用いて、前記もとのノードＩＤとは異なる新たなノードＩＤを取得する取得手段を含む（３）ないし（５）項のいずれかに記載のオーバレイネットワーク型ノード装置。
【００３３】
（７）  前記取得手段は、前記もとのノードＩＤを決定するために用いられた情報とは別の情報を追加的にまたは代替的に用いることにより、前記新たなノードＩＤを取得する手段を含む（６）項に記載のオーバレイネットワーク型ノード装置。
【００３４】
（８）  前記ノードＩＤ変更手段は、前記ノードＩＤ決定手段によって決定されたもとのノードＩＤを参照することにより、そのもとのノードＩＤとは異なる新たなノードＩＤを取得する取得手段を含む（３）ないし（５）項のいずれかに記載のオーバレイネットワーク型ノード装置。
【００３５】
（９）  前記取得手段は、前記もとのノードＩＤに対して予め定められた演算を行うことにより、前記新たなノードＩＤを取得する手段を含む（８）項に記載のオーバレイネットワーク型ノード装置。
【００３６】
（１０）  前記オーバレイネットワークに参加した際に用いたノードＩＤを、自ノード装置の電源遮断後にも保存する保存手段と、
前記オーバレイネットワークに参加しようとする際に、前記保存手段からノードＩＤを読み出し、その読み出されたノードＩＤを、自ノード装置がこれから前記オーバレイネットワークに参加するために用いるノードＩＤの初期値として設定する設定手段と
を含み、
前記参加要求情報送信手段は、前記設定手段によって設定されたノードＩＤを含む前記参加要求情報を前記複数のノード装置のいずれかに送信する（３）ないし（９）項のいずれかに記載のオーバレイネットワーク型ノード装置。
【００３７】
このオーバレイネットワーク型ノード装置によれば、自ノード装置が、その電源が投入された後、自ノード装置が前回の電源オン中に、オーバレイネットワークに参加した際に用いたノードＩＤと同じノードＩＤを用いて、オーバレイネットワークに参加することが可能となる。
【００３８】
したがって、このオーバレイネットワーク型ノード装置によれば、自ノード装置が、その電源が投入された後、自ノード装置が前回の電源オン中に、オーバレイネットワークに参加した際にオーバレイネットワーク上に論理的に配置された位置と同じ位置に論理的に配置される。
【００３９】
よって、このオーバレイネットワーク型ノード装置によれば、自ノード装置が特定のコンテンツ等、情報を探索するために、オーバレイネットワークについてルーティングが、前回参加時と今回参加時とで同じ経路で行われる可能性が高くなり、情報の探索や転送が停滞せずに済む。
【００４０】
（１１）  前記ノードＩＤ決定手段は、前記保存手段にノードＩＤが保存されていない場合に、前記所定情報に基づき、前記予め定められた規則に従って、ノードＩＤを決定する（１０）項に記載のオーバレイネットワーク型ノード装置。
【００４１】
（１２）  自ノード装置が前記参加要求ノード装置ではない状態で前記参加要求情報を受信した場合に、前記参加要求ノード装置が他のノード装置のノードＩＤと前記通信情報との関係を取得してその関係を前記参加要求ノード装置の前記記憶手段に記憶させることを可能とするために、前記参加要求情報に対応する処理を前記参加要求ノード装置に対して実行する参加要求情報対応処理実行手段を含む（３）ないし（１１）項のいずれかに記載のオーバレイネットワーク型ノード装置。
【００４２】
このノード装置によれば、自ノード装置が参加要求ノード装置ではない状態で参加要求情報を受信した場合に、その参加要求情報に対応する処理が参加要求ノード装置に対して実行され、それにより、参加要求ノード装置が前述のルーティングテーブルを作成することが支援される。
【００４３】
その結果、参加要求ノード装置は、他のノード装置に参加要求情報を送信すると、それに応答して、他のノード装置から、ルーティングテーブルを作成するために必要な情報を受信することになる。すなわち、参加要求ノード装置は、ルーティングテーブルを作成するために、参加要求情報を他のノード装置に送信するのである。
【００４４】
（１３）  （３）ないし（１２）項のいずれかに記載のオーバレイネットワーク型ノード装置を動作させるためにコンピュータによって実行されるプログラム。
【００４５】
このプログラムがコンピュータにより実行されれば、前記（３）ないし（１２）項のいずれかに係るオーバレイネットワーク型ノード装置と基本的に同じ原理に従い、同様な作用効果が実現され得る。
【００４６】
本項に係るプログラムは、それの機能を果たすためにコンピュータにより実行される指令の組合せのみならず、各指令に従って処理されるファイルやデータをも含むように解釈することが可能である。
【００４７】
また、このプログラムは、それ単独でコンピュータにより実行されることにより、所期の目的を達するものとしたり、他のプログラムと共にコンピュータにより実行されることにより、所期の目的を達するものとすることができる。後者の場合、本項に係るプログラムは、データを主体とするものとすることができる。
【００４８】
（１４）  （１３）項に記載のプログラムをコンピュータ読取り可能に記録した記録媒体。
【００４９】
この記録媒体に記録されているプログラムがコンピュータにより実行されれば、前記（３）ないし（１２）項のいずれかに係るオーバレイネットワーク型ノード装置と基本的に同じ原理に従い、同様な作用効果が実現され得る。
【００５０】
この記録媒体は種々な形式を採用可能であり、例えば、フレキシブル・ディスク等の磁気記録媒体、ＣＤ、ＣＤ−ＲＯＭ等の光記録媒体、ＭＯ等の光磁気記録媒体、ＲＯＭ等のアンリムーバブル・ストレージ等のいずれかを採用し得る。
【発明を実施するための最良の形態】
【００５１】
以下、本発明のさらに具体的な実施の形態のうちの一つを図面に基づいて詳細に説明する。本実施形態は、ＤＨＴを用いてオーバレイネットワークを構成して複数のノード装置間においてコンテンツ等の情報を共有しつつピアツーピア通信を行うことを可能にする情報通信システムＳに本発明を適用する場合の一例である。
【００５２】
［全体的概略］
図１には、この情報通信システムＳの接続構成が系統的に示されている。この情報通信システムＳにおいては、各ノード装置が、時間的に変化する役割の種類に応じて種々の処理を選択的に行う。概略的には、各ノード装置（図１においては、白丸で表す。）は、次の処理を行う。
【００５３】
１．ノードＩＤの計算
自ノード装置は、オーバレイネットワークに参加するのに先立ち、所定情報（例えば、自ノード装置のＩＰアドレス、ＭＡＣアドレス、製造番号等）に基づき、予め定められたハッシュ関数に従って、自ノード装置のノードＩＤを計算する。
【００５４】
２．ルーティングテーブルの作成
２−１．コンタクトノードへの参加（ＪＯＩＮ）メッセージの送信
自ノード装置は、自ノード装置が参加要求ノード装置（以下、「参加要求ノード」ともいう。）である場合に、自ノード装置用のルーティングテーブルを作成することを目的として、参加メッセージ（前述の「参加要求情報」の一例である。）を、複数のノード装置のうちのいずれかであるコンタクトノード装置（以下、「コンタクトノード」ともいう。）に送信する。
【００５５】
参加要求ノードは、コンタクトノードに対し、参加メッセージをそのコンタクトノードに送信する。その参加メッセージは、その送信が成功するか否かによって、コンタクトノードが現に同じオーバレイネットワークに存在しているか否かを確認する目的も有する。すなわち、参加メッセージは、存在確認メッセージとしての機能も有しているのである。
【００５６】
コンタクトノードは、自身が記憶しているルーティングテーブルから、参加メッセージに含まれる領域指定情報（ルーティングテーブルのレベルを指定するための情報）に該当する他のノード装置のノードＩＤを読み出す。このコンタクトノードは、さらに、その該当する他のノード装置に対し、そのノード装置が現に同じオーバレイネットワークに存在しているか否かに関する情報を参加要求ノードに返信することを要求するために、存在確認メッセージを、該当する他のノード装置に送信する。
【００５７】
２−２．参加メッセージの転送
自ノード装置は、自ノード装置が参加要求ノードでも、参加メッセージの最終転送先ノード（ルートノード）でもない状態で、他のノード装置から参加メッセージを受信した場合に、自ノード装置に記憶されている他のノード装置のノードＩＤのうち、参加要求ノードのノードＩＤに論理空間的に近い（同じＩＤ空間エリアに属する）ノードＩＤを有する他のノード装置に参加メッセージを転送する。
【００５８】
参加要求ノードではない自ノード装置は、参加メッセージの転送先に対し、その転送先が現に同じオーバレイネットワークに存在しているか否かに関する情報を参加要求ノードに返信することを要求するために、存在確認メッセージを、上述の参加メッセージと共に、その転送先に送信する。
【００５９】
参加要求ノードではない自ノード装置は、自身が記憶しているルーティングテーブルから、参加メッセージに含まれる領域指定情報（ルーティングテーブルのレベルを指定するための情報）に該当する他のノード装置のノードＩＤを読み出す。この自ノード装置は、さらに、その該当する他のノード装置に対し、そのノード装置が現に同じオーバレイネットワークに存在しているか否かに関する情報を参加要求ノードに返信することを要求するために、存在確認メッセージを、該当する他のノード装置に送信する。
【００６０】
２−３．応答メッセージの受信
参加要求ノードは、参加メッセージおよび存在確認メッセージの受信に応答して他の各ノード装置から送信された応答メッセージを受信し、その受信された応答メッセージを用いてルーティングテーブルを作成する。
【００６１】
３．参加要求ノードへの転送完了メッセージの送信
自ノード装置は、自ノード装置が参加要求ノードではないが、参加メッセージの最終転送先ノード（ルートノード）である状態で、他のノード装置から参加メッセージを受信した場合に、自ノード装置のノードＩＤを含み、かつ、参加メッセージの転送が完了したことを表す転送完了メッセージ（前述の「参加要求返信情報」の一例である。）を参加要求ノードに送信する。
【００６２】
４．ノードＩＤの選択的変更
参加要求ノードは、転送完了メッセージを受信し、かつ、最終転送先ノード（ルートノード）のノードＩＤが自ノード装置のノードＩＤと一致する場合に、参加要求ノードのノードＩＤを変更する。
【００６３】
５．参加メッセージの再送
参加要求ノードは、そのノードのノードＩＤが変更された場合に、その変更されたノードＩＤを含む参加メッセージを前記コンタクトノードに再送する。
【００６４】
［システム構成］
次に、図１を参照することにより、この情報通信システムの物理的構成および論理的構成を説明する。
図１において符号１００が付された上枠内には、論理的存在としてのオーバレイネットワーク９が系統的に示され、一方、同図において符号１０１が付された下枠内には、物理的存在としてのネットワーク（例えば、インターネット，ＬＡＮ，ＷＡＮ）８が系統的に示されている。
【００６５】
下枠１０１内に示すように、物理的なネットワーク（現実世界のネットワーク）８を構築するために、ＩＸ（Internet eXchange）３、ＩＳＰ（Internet Service Provider）４、ＤＳＬ（Digital Subscriber Line）回線事業者用の装置５、ＦＴＴＨ（Fiber To The Home）回線事業者用の装置６、通信回線（例えば、電話回線や光ケーブル等）７等が用いられる。
【００６６】
情報通信システムＳは、このようなネットワーク８を介して相互に接続された複数のノード装置１ａ，１ｂ，１ｃ，・・・，１ｘ，１ｙ，１ｚ，・・・を含むように構成され、それにより、ピアツーピア方式のネットワークシステムが実現される。
【００６７】
各ノード装置１ａ，１ｂ，１ｃ，・・・，１ｘ，１ｙ，１ｚ，・・・には、各ノード装置１の同一性を表す情報（デバイスＩＤ）として、各ノード装置１に固有の製造番号およびＩＰ（Internet Protocol）アドレスが割り当てられている。各ノード装置１の製造番号およびＩＰアドレスは、複数のノード装置１間で重複しないように設定される。
【００６８】
以下、説明の便宜上、ノード装置１ａ，１ｂ，１ｃ，・・・，１ｘ，１ｙ，１ｚ，・・・のうちいずれかに言及するために、単に、ノード装置１ということがある。
【００６９】
［ＤＨＴの作成］
次に、分散ハッシュテーブルＤＨＴ(Distributed Hash Table）を利用してノードＩＤを計算するためのアルゴリズムを説明する。情報通信システムＳにおいて、２台のノード装置１同士が互いに情報をやり取りするためには、それぞれが相手のＩＰアドレスを知っていなければならない。例えば、同じコンテンツを互いに共有するために、ネットワーク８に参加している各ノード装置１が、ネットワーク８に参加しているすべてのノード装置１のＩＰアドレスを知っておくことが考えられる。
【００７０】
しかし、ネットワーク８に接続されるノード装置１の数が何万何十万というように膨大な数になると、それらすべてのノード装置１のＩＰアドレスを各ノード装置１に覚えさせることは現実的ではない。具体的には、例えば、いずれかのノード装置１の電源が投入または遮断されるごとに、他のすべてのノード装置１においてそのいずれかのノード装置１のＩＰアドレスを更新しなければならない。その結果、各ノード装置１における処理が頻繁になり、システム運用が困難となる。
【００７１】
このような不都合を回避するために、１台のノード装置１に、ネットワーク８に参加しているすべてのノード装置１のうち必要最低限の数のノード装置１のＩＰアドレスだけを覚えさせておき、ＩＰアドレスを覚えていないノード装置１については、ノード装置１間における情報転送を利用して自ノード装置１に届けてもらうというシステムが既に実用化されている。
【００７２】
このようなシステムの一例がオーバレイネットワーク９であり、このオーバレイネットワーク９は、ＤＨＴを利用したアルゴリズムにより、図１の上部枠１００内に示すように構築される。このオーバレイネットワーク９は、既存のネットワーク８を用いて形成された、仮想リンクより成るネットワークを意味する。
【００７３】
本実施形態は、ＤＨＴを利用したアルゴリズムによって構築されたオーバレイネットワーク９を前提としている。このオーバレイネットワーク９上に論理的に配置されているノード装置１を、情報通信システムＳに参加しているノード装置１、すなわち、オーバレイネットワーク９に参加しているノード装置１という。
【００７４】
未だ参加していないノード装置（参加要求ノード）１が情報通信システムＳに参加するために、その参加要求ノードは、その情報通信システムＳに既に参加している他の任意のノード装置１（コンタクトノード）に対して参加メッセージを送信することが必要である。その参加メッセージは、参加要求ノードがオーバレイネットワーク９に参加したいという要求を示しており、参加要求ノードを特定するための情報を含むように作成される。
【００７５】
情報通信システムＳに参加している各ノード装置１には、ノードＩＤ（識別情報）が、各ノード装置１ごとに固有な番号として付与される。その番号のｂｉｔ数は、最大運用台数のノード装置１を収容できる数に設定される。例えば、１２８ｂｉｔの番号を用いると、２１２８＝３４０×１０３６台のノード装置を運用することができる。
【００７６】
より具体的には、各ノード装置１のノードＩＤは、各ノード装置１のＩＰアドレス（または製造番号）等、ノード装置１ごとに固有の値に対して、複数のノード装置１に共通のハッシュ関数（ハッシュアルゴリズム）を適用して得られたハッシュ値である。ハッシュ関数については、公知であるため、詳細な説明を省略する。そのハッシュ値の使用により、複数のノード装置１が、同じノードＩＤ論理空間に偏りなく分散して配置されることになる。このように共通のハッシュ関数により各ノード装置１ごとに求められたノードＩＤは、ＩＰアドレス（または製造番号）が異なれば、同じハッシュ値に変換される確率が極めて低い。
【００７７】
なお付言するに、本実施形態においては、各ノード装置１のＩＰアドレス（グローバルＩＰアドレス）を複数のノード装置１に共通のハッシュ関数により変換した値が、各ノード装置１のノードＩＤとして定義される。
【００７８】
［ルーティングテーブルの作成］
次に、図２を参照することにより、ＤＨＴを用いるルーティングテーブルの作成手法の一例を説明する。図２には、ＤＨＴを用いてルーティングテーブルが作成される様子の一例が示されている。
【００７９】
複数のノード装置１にそれぞれ付与された複数のノードＩＤは、共通のハッシュ関数によって生成されたため、それら複数のノード装置１は、図２（Ａ）ないし図２（Ｃ）に示すように、同一のリング状のＩＤ空間上にさほど偏ることなく、散らばって存在する。図中黒丸は、各ノード装置１の論理的位置を示す。
【００８０】
図２に示す例においては、各ノードＩＤを表す数字が８ｂｉｔ（４進数表示にすると、４桁）で構成されており、リング状のＩＤ空間においては、ＩＤを表す数字が反時計回りに増加する。
【００８１】
ルーティングテーブルを作成するために、まず、図２（Ａ）に示すように、ＩＤ空間が複数のエリアに等分割される。実際には、ＩＤ空間が１６程度の数のエリアに分割されるのが一般的であるが、ここでは、説明を簡単にするため、ＩＤ空間が４分割され、ノードＩＤが、４進数で表記され、かつ、ビット長が８ｂｉｔである数字で表される。
【００８２】
あるノード装置１、すなわち、ノードＩＤが「1023」であるノード装置１Ｎを例にとり、ルーティングテーブルの作成方法の一例を具体的に例について説明する。
【００８３】
＜レベル１のルーティング＞
まず、ＩＤ空間が４つのエリアに等分割される。各エリアは、４進数で表すと最大桁の数字がエリアの番号を表す数字列「0XXX」「1XXX」、「2XXX」および「3XXX」（Ｘは０から３の整数、以下同様。）で表される。ノード装置１Ｎは、それのノードＩＤが「1023」であるため、図２中、左下の「1XXX」のエリアに存在することになる。
【００８４】
さらに、ノード装置１Ｎは、自分の存在するエリア（すなわち、「1XXX」のエリア）以外の各エリアごとに、そこに存在する他のノード装置１を適当に選択し、その選択されたノード装置１のＩＰアドレスをレベル１のテーブルに登録する。
【００８５】
図３（Ａ）には、レベル１のテーブルの一例が示されている。そのテーブル中、２列目はノード装置１Ｎ自身を示しているため、ＩＰアドレスを登録する必要はない。
【００８６】
＜レベル２のルーティング＞
次に、図２（Ｂ）に示すように、上述のレベル１のルーティングによって分割された４つのエリアのうち、ノード装置１Ｎが存在するエリアがさらに４つのサブエリア「10XX」「11XX」、「12XX」および「13XX」に分割される。
【００８７】
さらに、ノード装置１Ｎは、上記と同様に、自分の存在するサブエリア以外の各サブエリアに存在するノード装置１を適当に選択し、選択されたノード装置１のＩＰアドレスをレベル２のテーブルに登録する。
【００８８】
図３（Ｂ）には、レベル２のテーブルの一例が示されている。１列目はノード装置１Ｎ自身を示しているため、ＩＰアドレスを登録する必要はない。
【００８９】
＜レベル３のルーティング＞
さらに、図２（Ｃ）に示すように、上述のレベル２のルーティングによって分割された４つのサブエリアのうち、自分の存在するサブエリアがさらに４つのサブエリア「100X」「101X」、「102X」および「103X」に分割される。
【００９０】
さらに、ノード装置１Ｎは、上記と同様に、自分の存在するサブエリア以外の各サブエリアに存在するノード装置１を適当に選択し、その選択されたノード装置１のＩＰアドレスをレベル３のテーブルに登録する。
【００９１】
図３（Ｃ）には、レベル３のテーブルの一例が示されている。３列目はノード装置１Ｎ自身を示しているため、ＩＰアドレスを登録する必要はなく、また、２列目および４列目は、それぞれのサブエリアにノード装置が存在していないため、空白となる。
【００９２】
＜レベル４のルーティング＞
ノード装置１Ｎは、それのノードＩＤが「1023」であるため、レベル４のテーブルにおいては、図３（Ｄ）に示すように、４列目はノード装置１Ｎ自身を示しているため、ＩＰアドレスを登録する必要はなく、また、１列目から３列目は、それぞれのサブエリアにノード装置が存在していないため、空白となる。
【００９３】
このようにして、レベル１から４までルーティングテーブルが、図３（Ｄ）に示すように、作成される。レベル４までルーティングテーブルが作成されると、８ｂｉｔで表記されるすべてのノードＩＤをカバーすることができる。レベルが上がると、テーブル中に空白が目立つようになる。
【００９４】
すべてのノード装置１は、それぞれが、以上説明した手法を用いてルーティングテーブルを作成して所有する。このように、各ノード装置１は、他のノード装置１のＩＰアドレスを記憶したルーティングテーブルを作成する。
【００９５】
本実施形態においては、各ノード装置１は、ノード情報としてのＩＰアドレスと、識別情報としてのノードＩＤと、そのノードＩＤがノードＩＤ空間に割り当てられる論理的位置（ＤＨＴのレベルと列位置との組合せによって定義される）とを互いに関連付けて記憶している。
【００９６】
ここで、自ノード装置１ＮのノードＩＤに近いノードＩＤを有するノード装置が、後述するルートノード（図２（Ｃ）および図３（Ｄ）においては、ノードＩＤが「1000」であるノード装置）であると仮定する。
【００９７】
図３（Ｄ）に示すように、ノードＩＤの桁数に応じてレベルの数が決まり、また、ノードＩＤを表記するために用いる進数の数に応じて、ルーティングテーブルの各レベルの注目桁（例えば、レベル１である場合には、第１桁、レベル２である場合には、第２桁）に出現し得る数字の数が決まる。
【００９８】
例えば、ノードＩＤが１６桁１６進数で表記される場合には、ノードＩＤは、ｂｉｔ数が６４であり、レベルの数が１６であり、注目桁に出現し得る（英）数字の数が１６（「０」〜「ｆ」）となる。ルーティングテーブルについての後の説明においては、各レベルの注目桁に出現する数字を表す部分を単に「列」ともいう。
【００９９】
［ノード装置の構成］
次に、図４を参照することにより、各ノード装置１の構成および機能を説明する。複数の各ノード装置１の構成は互いに共通するため、１つのノード装置１のみを代表的に説明する。図４は、その代表的なノード装置１の構成の一例を概略的に示している。
【０１００】
図４に示すように、ノード装置１は、制御部１１と記憶部１２とを備えている。制御部１は、演算機能を有するＣＰＵ，作業用ＲＡＭ，各種データおよびプログラムを記憶するＲＯＭ等から構成されたコンピュータを備えている。記憶部１２は、コンテンツデータ、インデックス情報、上記ＤＨＴ，プログラム等を記憶保存（格納）するためのＨＤ等から構成されている。ただし、複数のノード装置１の中には、コンテンツデータを保存していないノード装置１もある。記憶部１２は、前記「記憶手段」の一例を構成する。
【０１０１】
ノード装置１は、さらに、受信されたコンテンツデータ等を一時蓄積するバッファメモリ１３と、コンテンツデータに含まれるエンコードされたビデオデータ（映像情報）、オーディオデータ（音声情報）等をデコード（データ伸張や復号化等）するデコーダ部１４とを備えている。ノード装置１は、さらに、デコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部１５と、その映像処理部１５から出力されたビデオ信号に基づき映像表示するＣＲＴ，液晶ディスプレイ等の表示部１６とを備えている。
【０１０２】
ノード装置１は、さらに、デコードされたオーディオデータをアナログオーディオ信号にＤ（Digital）／Ａ（Analog）変換した後、その信号をアンプにより増幅して出力する音声処理部１７と、その音声処理部１７から出力されたオーディオ信号を音波として出力するスピーカ１８とを備えている。
【０１０３】
ノード装置１は、さらに、ネットワーク８を通じて他のノード装置１との間の情報の通信制御を行うための通信部２０と、ユーザからの指示を受け付けるとともにその指示に応じた指示信号を制御部１１に対して与える入力部（例えば、キーボード、マウス、操作パネル等）２１とを備えている。
【０１０４】
図４に示すように、制御部１１、記憶部１２、バッファメモリ１３、デコーダ部１４および通信部２０はバス２２を介して相互に接続されている。
【０１０５】
ノード装置１においては、制御部１１におけるＣＰＵが記憶部１２等に記憶された各種プログラムを実行し、それにより、ノード装置１全体が統括制御される。また、入力部２１からの指示信号に応じて、コンテンツデータの登録処理等が行われる。
【０１０６】
ノード装置１は、実行されるプログラムの種類に応じて、果たす役割が変化し、具体的には、情報を送信（転送）するノード装置として機能したり、情報を受信するノード装置として機能する。
【０１０７】
［情報通信システムの概略］
情報通信システムＳの概略を図５ないし図８を用いて説明する。図５は、情報通信システムＳ（オーバレイネットワーク９）に参加要求ノードが参加するために複数のノード装置１間において送受信される複数のメッセージの流れを説明するための概略図である。図６は、それらメッセージの流れを図５より詳細に説明するための概略図である。
【０１０８】
ただし、図５には、ノードＩＤの衝突が発生するために、本実施形態に従って参加要求ノードのノードＩＤが変更される様子が示されているのに対し、図６には、その様子が省略されている。すなわち、図６には、説明の便宜上、参加要求ノードのノードＩＤを変更することが必要ではない例（ノードＩＤの衝突が発生しない例）が示されているのである。
【０１０９】
オーバレイネットワーク９への参加を要求するノード装置１（参加要求ノード）は、オーバレイネットワーク９に参加するのに先立ち、所定情報（例えば、参加要求ノードのＩＰアドレス、ＭＡＣアドレス、製造番号等）に基づき、予め定められたハッシュ関数に従って、参加要求ノードのノードＩＤを計算する。
【０１１０】
次に、その参加要求ノードは、そのノードが初めに通信を行う、既にＩＰアドレスを知っている任意のノード装置（コンタクトノード）に、ルーティングテーブルを作成することを目的として、図５に示すように、参加（ＪＯＩＮ）メッセージ（図５において「ＪＯＩＮ」を付した実線で示す。）をコンタクトノードに送信する。
【０１１１】
続いて、参加要求ノードは、図５に示すように、コンタクトノードから応答メッセージ（図５において破線で示す。）を受信し、その受信した応答メッセージを用いて、参加要求ノードのためのルーティングテーブルを作成する。その応答メッセージには、発信元のノードＩＤとＩＰアドレスとの組合せが含まれており、その組合せが発信先に転送される。
【０１１２】
複数のノード装置１は、参加要求ノードでも、参加メッセージの最終転送先ノード（ルートノード）でもない役割を果たすときに、他のノード装置から参加メッセージを受信すると、図５に示すように、自ノード装置に記憶されている他のノード装置のノードＩＤのうち、参加要求ノードのノードＩＤに論理空間的に最も近いノードＩＤを有する他のノード装置に参加メッセージを転送する（図５において「ＪＯＩＮを転送」で示す。）。
【０１１３】
続いて、参加要求ノードは、図５に示すように、他のノード装置からの応答メッセージ（図５において破線で示す。）を受信し、その受信した応答メッセージを用いて、参加要求ノードのためのルーティングテーブルを作成する。
【０１１４】
自ノード装置は、自ノード装置が参加要求ノードではないが、参加メッセージの最終転送先ノード（ルートノード）である役割を果たすときに、他のノード装置から参加メッセージを受信した場合に、図５に示すように、自ノード装置のノードＩＤを含み、かつ、参加メッセージの転送が完了したことを表す転送完了メッセージを参加要求ノードに送信する。
【０１１５】
参加要求ノードは、転送完了メッセージを受信し、かつ、参加メッセージの最終転送先ノード（ルートノード）のノードＩＤが参加要求ノードのノードＩＤと一致（衝突）する場合に、その参加要求ノードのノードＩＤを変更する。ノードＩＤを変更する場合には、それまでに作成されたルーティングテーブルが消去される。
【０１１６】
参加要求ノードは、そのノードのノードＩＤを変更した場合に、その変更されたノードＩＤを含む参加メッセージを前記コンタクトノードに再送する。参加要求ノードは、以上説明した試行を、最終転送先ノードのノードＩＤが参加要求ノードのノードＩＤと一致（衝突）しなくなるまで行う。その結果、参加要求ノードのオーバレイネットワーク９への参加が完了する。
【０１１７】
したがって、本実施形態によれば、同じノードＩＤが複数のノード装置１に重複して割り当てられてしまうことが確実に防止される。よって、本実施形態によれば、ノードＩＤの重複が原因で、ルーティングテーブルを用いた情報（各種メッセージおよび各種コンテンツデータを含む）の転送または送信が停滞してしまうという確率が低くなるという事態が回避される。
【０１１８】
以上、図５を参照して本実施形態のうち本発明を理解するために重要な要素を概略的に説明したが、以下、図６を参照して本実施形態の全体を詳細に説明する。
【０１１９】
情報通信システムＳは、前述のように、一のノード装置がオーバレイネットワーク９に参加する際に、他のノード装置から応答メッセージを受信することにより、その応答メッセージの送信元のノード装置の情報（ＩＰアドレスおよびノードＩＤ）を元にルーティングテーブルを作成していく。
【０１２０】
以下、説明の便宜上、オーバレイネットワーク９への参加を要求する参加要求ノードを「ノードＺ」として表記し、また、そのノードＺが初めに通信を行う、既にＩＰアドレスを知っている任意のノード装置（コンタクトノード）を「ノードＢ」として表記する。
【０１２１】
また、ルーティングテーブルを単に「テーブル」ともいう。また、他ノード装置のノード情報および識別情報の自ノード装置への記憶を、自ノード装置への「登録」ともいう。
【０１２２】
図６は、参加要求ノードがルーティングテーブルを作成するために複数のノード装置１間において送受信される複数のメッセージの流れを示す概略図である。図７（Ａ）ないし図７（Ｃ）はそれぞれ、ノードＺの参加に先立って情報通信システムＳに参加しているノードＢ、ノードＥおよびノードＧがそれぞれ記憶しているルーティングテーブルの一例を示す。図８は、ノードＺがそれらノードＢ，ＥおよびＧから応答メッセージを受信することにより作成するルーティングテーブルの一例である。
【０１２３】
図６に示すように、ノードＺ（参加要求ノード）は、オーバレイネットワーク９に参加しようとすると、コンタクトノードであるノードＢに参加メッセージを送信する（矢印１０１）。すると、ノードＺは、ノードＢへの参加メッセージの送信が成功したという事実から、ノードＢが存在していることを確認する（矢印１０２）。
【０１２４】
次いで、ノードＢ（コンタクトノード）は、存在確認メッセージを、図７（Ａ）に示すようにレベル１に登録しているノードＡ、ノードＥおよびノードＣに順次送信する（矢印１０３、１０５および１０７）。すると、ノードＡは応答メッセージをノードＺに送信し（矢印１０４）、ノードＥは応答メッセージをノードＺに送信し（矢印１０６）、ノードＣは応答メッセージをノードＺに送信する（矢印１０８）。
【０１２５】
なお、図７（Ａ）ないし図７（Ｃ）のそれぞれにおいて、複数のレベルのうちのいずれかの左に▲印が付してあるが、これは、自ノード装置が、▲印が付してあるレベルに登録された他のノード装置に存在確認メッセージを送信することを意味する。
【０１２６】
また、図７（Ａ）ないし図７（Ｃ）のそれぞれにおいて、複数のノード装置のうちのいずれかが四角枠で囲まれているが、これは、自ノード装置が、四角枠で囲まれている他のノード装置に参加メッセージを転送することを意味する。参加メッセージの転送先は、▲印が付してあるレベルに登録された他の複数のノード装置のうち、ノードＺ（参加要求ノード）のノードＩＤに近い（同じＩＤ空間エリアに属する）ノードＩＤを有するものである。
【０１２７】
ノードＺ（参加要求ノード）は、ノードＡ、ノードＢ、ノードＣおよびノードＥからのそれぞれの応答メッセージを用いることにより、図８のテーブルにおけるノードＡ、ノードＢ、ノードＣおよびノードＥのＩＰアドレスを取得するため、ノードＺは、ＩＰアドレスとこれに対応するノードＩＤとを対応付けて記憶できる。
【０１２８】
なお付言するに、本実施形態においては、図６に明瞭に示すように、参加要求ノードから参加メッセージを受信したかまたは参加要求ノードではないノード装置から参加メッセージが転送されたノード装置１（以下、「参加メッセージを中継するノード装置１」という。）のルーティングテーブルに記憶されている他の複数のノード装置のノード情報を、それら他のノード装置のうち現にオーバレイネットワーク９に参加しているものが、参加メッセージを中継するノード装置１を経由することなく直接、参加要求ノードに返信するようになっている。
【０１２９】
これに対し、例えば、参加メッセージを中継するノード装置１が、そのノード装置１のルーティングテーブルに記憶されている他のすべてのノード装置のノード情報を、他のノード装置が現にオーバレイネットワーク９に参加しているか否かを問わず、参加要求ノードに返信する態様で本発明を実施することが可能である。
【０１３０】
ノードＢ（コンタクトノード）は、参加メッセージを、最終的にノードＺのルートノードに到達することを期待して、ノードＥに転送する（矢印１０９）。このとき、ノードＢは、存在確認メッセージの送信先が次のレベル２である旨の領域指定情報を参加メッセージに付加する。
【０１３１】
次いで、ノードＥは、図７（Ｂ）に示すように、存在確認メッセージを、次のレベル２に登録しているノードＧ、ノードＤおよびノードＦに順次送信する（矢印１１０、１１２および１１４）。すると、ノードＧは応答メッセージをノードＺ（参加要求ノード）に送信し（矢印１１１）、ノードＤは応答メッセージをノードＺに送信し（矢印１１３）、ノードＦは応答メッセージをノードＺに送信する（矢印１１５）。
【０１３２】
このとき、ノードＺ（参加要求ノード）は、ノードＤ、ノードＦおよびノードＧからのそれぞれの応答メッセージを用いることにより、図８のテーブルにおけるノードＤ、ノードＦおよびノードＧのＩＰアドレスおよびノードＩＤを記憶できる。そして、ノードＥは、参加メッセージを、最終的にノードＺのルートノードに到達することを期待して、ノードＧに転送する（矢印１１６）。このとき、ノードＥは、存在確認メッセージの送信先が次のレベル３である旨の領域指定情報を参加メッセージに付加する。
【０１３３】
次いで、ノードＧは、図７（Ｃ）に示すように、存在確認メッセージを、次のレベル３に登録しているノードＨに送信する（矢印１１７）。すると、ノードＨは応答メッセージをノードＺに送信する（矢印１１８）。
【０１３４】
参加要求ノードであるノードＺのノードＩＤは「1013」であり、図７（Ｃ）に示すように、ノードＧのルーティングテーブルに記憶されている複数のノード装置のうち、ノードＺのノードＩＤ「1013」にエリア的に最も近いノードＩＤは「1023」であり、これは、ノードＧのノードＩＤである。このことは、参加メッセージを次に転送すべきノード装置が存在しないことを意味し、同時に、ノードＧが、ノードＺにとってのルートノードであることを意味する。すなわち、ノードＧは、ノードＺから出された参加メッセージの最終転送先ノードなのである。このとき、ノードＺ（参加要求ノード）は、ノードＨからの転送完了メッセージを用いることにより、図８のテーブルにおけるノードＨのＩＰアドレスおよびノードＩＤを記憶できる。この場合、参加要求ノードであるノードＺのノードＩＤが「1013」であって、ノードＨからの転送完了メッセージに含まれるノードＨのノードＩＤが「1023」であるため、参加要求ノードであるノードＺは自身のノードＩＤは衝突していないと判定し、これにより、情報通信システムＳへの参加処理が完了する。
【０１３５】
以上説明した処理により、ノードＺ（参加要求ノード）は、図８に示すルーティングテーブルを作成することができる。このノードＺのテーブルは、それぞれ現存する複数のノード装置１から受信した応答メッセージに基づいて作成されたものである。
【０１３６】
よって、本実施形態によれば、ルーティングテーブルに、実際にはオーバレイネットワーク９から脱退している他のノード装置が記憶されていることが原因で、ルーティングテーブルを用いた情報（各種メッセージおよび各種コンテンツデータを含む）の転送または送信が停滞してしまうという確率が低くなるという事態が回避される。したがって、本実施形態によれば、情報通信システムＳの通信効率が全体的に向上する。
【０１３７】
ここで、参加要求ノードであるノードＺのノードＩＤが「1023」であると仮定すると、ノードＨからの転送完了メッセージに含まれるノードＨのノードＩＤが「1023」であるため、参加要求ノードであるノードＺのノードＩＤがノードＨのノードＩＤと一定することになる。この場合には、ノードＺは自身のノードＩＤを変更して、再度、コンタクトノードであるノードＢに参加メッセージを送信する。
【０１３８】
［情報通信システムの動作］
次に、本実施形態の情報通信システムＳにおける各ノード装置１の動作を図５ないし図１１を用いて説明する。各ノード装置１により、次の処理が行われる。
【０１３９】
１．参加処理
自ノード装置１が参加要求ノードである場合に、その自ノード装置１が情報通信システムＳにおけるオーバレイネットワーク９に参加するための処理（図９参照）
【０１４０】
２．作成処理
自ノード装置１が参加要求ノードである場合に、その自ノード装置１がルーティングテーブルを作成するための処理（図６ないし図８および図９におけるステップＳ４）
【０１４１】
３．転送処理
自ノード装置１が参加要求ノードではない場合に、参加メッセージを他のノード装置１に転送し、また、自ノード装置１が参加メッセージの最終転送先ノードである場合に、転送完了メッセージを参加要求ノードに送信するための処理
【０１４２】
ただし、上述の３つの処理のうち作成処理は、既に、図６ないし図８を参照して詳細に説明されており、しかも、本発明を理解するために不可欠な処理ではないため、ここでは、簡単に説明する。
【０１４３】
ノードＺの制御部１１は、自ノード装置１に電源が投入されたことを入力部１１等により認識すると、ノードＺの各種設定を初期化し、図９にフローチャートで概念的に表されている参加処理プログラムを起動させる。この参加処理プログラムは、記憶部１２に不揮発的に記憶されているとともに、制御部１１のＣＰＵによって実行される。ただし、この参加処理プログラムの実行に先立ち、ノードＺは、オーバレイネットワーク９に参加するために最初に通信を行うべきコンタクトノード（前述のノードＢ）のＩＰアドレスを予め保持していると仮定する。
【０１４４】
参加処理プログラムが起動されると、まず、ステップＳ１において、参加要求ノードのノードＩＤが計算される。図１０には、ステップＳ１の詳細がノードＩＤ計算ルーチンとしてフローチャートで概念的に表されている。
【０１４５】
このノードＩＤ計算ルーチンにおいては、まず、ステップＳ１０１において、前回ノードＩＤ、すなわち、この参加要求ノードの前回電源オン中にこのノードＩＤ計算ルーチンの実行によって計算されたノードＩＤが、前回ノードＩＤとして記憶部１２のうちの不揮発性メモリに記憶されているか否かが判定される。
【０１４６】
今回は、前回ノードＩＤが記憶部１２に記憶されていないと仮定すると、ステップＳ１０１の判定がＮＯとなり、ステップＳ１０２に移行する。このステップＳ１０２においては、参加要求ノードに固有のノードＩＤを、複数のノード装置１に共通のハッシュ関数を用いて計算するために参照すべき参照情報が記憶部１２から取り込まれる。その参照情報は、例えば、参加要求ノードのＩＰアドレス、ＭＡＣアドレスおよび製造番号（例えば、ＣＰＵ＿ＩＤ）のうちの少なくとも１つである。
【０１４７】
次に、ステップＳ１０３において、その取り込まれた参照情報に対してハッシュ関数を適用することにより、参加要求ノードのノードＩＤが今回ノードＩＤとして計算される。以上で、このノードＩＤ計算ルーチンの一回の実行が終了する。
【０１４８】
これに対し、今回は、前回ノードＩＤが記憶部１２に記憶されていると仮定すると、ステップＳ１０１の判定がＹＥＳとなり、ステップＳ１０４に移行する。このステップＳ１０４においては、前回ノードＩＤが記憶部１２から読み出され、続いて、ステップＳ１０５において、その読み出された前回ノードＩＤがそのまま今回ノードＩＤに設定される。以上で、このノードＩＤ計算ルーチンの一回の実行が終了する。
【０１４９】
いずれの場合にも、その後、図９に示すステップＳ２において、参加要求ノードがコンタクトノードに送信すべき参加メッセージが作成される。具体的には、この参加メッセージは、参加要求ノードに割り当てられた今回ノードＩＤを含むように作成される。
【０１５０】
続いて、ステップＳ３において、作成された参加メッセージが、記憶部１２の不揮発性メモリに予め通信情報が記憶されたコンタクトノードに送信される。その後、ステップＳ４において、そのコンタクトノードから応答メッセージが受信される。その応答メッセージは、コンタクトノードのノードＩＤおよびＩＰアドレスを含んでいる。
【０１５１】
このステップＳ４においては、さらに、前述のようにして、その受信された応答メッセージを用いて、参加要求ノードのルーティングテーブルが作成される。具体的には、応答メッセージまたは転送完了メッセージを受信するまで待って、対応するメッセージ中のノードＩＤが、ＤＨＴのルーティングテーブル中の適切な位置に記憶され、それにより、そのルーティングテーブルが作成される。
【０１５２】
その後、ステップＳ５において、参加要求ノードが、ステップＳ４の実行中に、転送完了メッセージを受信したか否かが判定される。今回は、転送完了メッセージを未だ受信していないと仮定すると、ステップＳ５の判定がＮＯとなり、ステップＳ１０において、参加要求ノードの電源が切断されたか否かが判定される。
【０１５３】
今回は、参加要求ノードの電源がオンのままであると仮定すると、ステップＳ１０の判定がＮＯとなり、ステップＳ４に戻る。通常、参加要求ノードの電源オン中、ステップＳ４，Ｓ５およびＳ１０が繰り返し実行され、それにより、参加要求ノードが他の複数のノード装置から順次、応答メッセージを受信し、その受信した複数の応答メッセージを用いることにより、図８に示すように、参加要求ノード（ノードＺ）のためのルーティングテーブルが作成される。
【０１５４】
これに対し、今回は、参加要求ノードの電源が切断されたと仮定すると、ステップＳ１０の判定がＹＥＳとなり、この参加処理プログラムの実行が終了する。
【０１５５】
以上、参加要求ノードが未だ転送完了メッセージを受信していない場合を説明したが、受信した場合には、ステップＳ５の判定がＹＥＳとなり、ステップＳ６において、その受信された転送完了メッセージから、最終転送先ノード（ルートノード）のノードＩＤが抽出される。その後、ステップＳ７において、その抽出されたノードＩＤが、参加要求ノードの今回ノードＩＤと一致するか否かが判定される。
【０１５６】
今回は、最終転送先ノードのノードＩＤが参加要求ノードのノードＩＤと一致しないと仮定すると、ステップＳ７の判定がＮＯとなり、ステップＳ９に移行する。この時点で、参加要求ノードのＤＨＴシステムへの参加が完了したことになる。そのステップＳ９においては、今回ノードＩＤが記憶部１２のうちの不揮発性メモリに保存される。
【０１５７】
その後、ステップＳ２０において、ユーザの操作があったか否かが判定される。操作があった場合には、そのステップＳ２０の判定がＹＥＳとなり、ステップＳ２１において、必要な処理が実行された後に、ステップＳ２２に移行するが、操作がなかった場合には、ステップＳ２０の判定がＮＯとなり、直ちにステップＳ２２に移行する。
【０１５８】
そのステップＳ２２においては、メッセージを受信したか否かが判定される。メッセージを受信した場合には、そのステップＳ２２の判定がＹＥＳとなり、ステップＳ２３において、必要なメッセージ受信処理が実行された後に、ステップＳ２４に移行するが、メッセージを受信しなかった場合には、ステップＳ２２の判定がＮＯとなり、直ちにステップＳ２４に移行する。そのステップＳ２４においては、電源がオフにされたか否かが判定される。電源がオフにされた場合には、そのステップＳ２４の判定がＹＥＳとなり、この参加処理プログラムの実行が終了するが、電源がオフにされなかった場合には、ステップＳ２４の判定がＮＯとなり、ステップＳ２０に戻る。
【０１５９】
以上、最終転送先ノードのノードＩＤが参加要求ノードのノードＩＤと一致しない場合を説明したが、一致する場合には、ステップＳ７の判定がＹＥＳとなり、ステップＳ１１において、参加要求ノードについて新たなノードＩＤを、同じハッシュ関数を用いて計算するために参照すべき参照情報が記憶部１２から取り込まれる。この参照情報は、参加要求ノードの前回ノードＩＤを計算するために参照された参照情報（図１０に示すステップＳ１０２参照）とは異なる情報である。
【０１６０】
例えば、前回ノードＩＤを計算するために、参加要求ノードのＩＰアドレスとＭＡＣアドレスと製造番号との組合せが用いられた場合には、今回ノードＩＤを計算するために、それら情報とは別の情報、例えば、参加要求ノードのコンピュータの時間情報（例えば、現在時刻）が追加的に用いられる。
【０１６１】
この例においては、ステップＳ１３において取り込まれる参照情報は、参加要求ノードのＩＰアドレス、ＭＡＣアドレスおよび製造番号と、コンピュータの時間情報との組合せである。
【０１６２】
なお付言するに、ノードＩＤを変更するために、前回の参照情報の値に「１」（設定値の一例）に対して加算（演算の一例）を行ったり、前回ノードＩＤの値にさらに、前記ハッシュ関数と同じものまたは別のハッシュ関数を適用したりしてもよい。
【０１６３】
その後、ステップＳ１２において、ステップＳ１１において取り込まれた参照情報に対して前記ハッシュ関数と同じ関数を適用することにより、今回ノードＩＤが、前回ノードＩＤとは異なるノードＩＤとして計算される。続いて、ステップＳ１３において、これまでに作成されたルーティングテーブルが記憶部１２において消去される。その後、ステップＳ２に戻り、新たな参加メッセージの作成およびその参加メッセージのコンタクトノードへの送信が行われる。その新たな参加メッセージは、ステップＳ１２において計算された今回ノードＩＤを含むように作成される。
【０１６４】
図１１には、前述の転送処理を行うために制御部１１のＣＰＵによって実行されるメッセージ処理プログラムがフローチャートで概念的に表されている。図１１のフローチャートは、図９に示すステップＳ２３についての詳細なフローチャートである。
【０１６５】
このメッセージ処理プログラムは、各ノード装置１が、前記オーバレイネットワークへの参加完了後に、他のノード装置１からメッセージを受信することに応答して実行される。
【０１６６】
このメッセージ処理プログラムの実行時には、まず、ステップＳ２０１において、自ノード装置１が他のノード装置１から参加メッセージを受信したか否かが判定される。今回は、自ノード装置１が参加メッセージを未だ受信していないと仮定すると、ステップＳ２０１の判定がＮＯとなり、ステップＳ２０２において、受信したメッセージが存在確認メッセージであるか否かが判定される。今回は、存在確認メッセージであると仮定すると、ステップＳ２０２の判定がＹＥＳとなり、ステップＳ２０３において、応答メッセージが作成され、その作成された応答メッセージが参加要求ノードに送信される。これで、このメッセージ処理プログラムの実行が終了して、図９に示すステップＳ２４に移行する。
【０１６７】
これに対し、今回は、受信したメッセージが存在確認メッセージではないと仮定すると、ステップＳ２０２の判定がＮＯとなり、ステップＳ２０４において、受信したメッセージの種類に応じた処理が実行される。これで、このメッセージ処理プログラムの実行が終了して、図９に示すステップＳ２４に移行する。
【０１６８】
これに対し、今回は、自ノード装置１が参加メッセージを受信したと仮定すると、ステップＳ２０１の判定がＹＥＳとなり、ステップＳ２０５において、その受信した参加メッセージから必要な情報を抽出することにより、参加要求ノードのノードＩＤが特定される。
【０１６９】
その後、ステップＳ２０６において、存在確認メッセージが作成され、その作成された存在確認メッセージが参加要求ノードに送信される。その存在確認メッセージは、それを発信するノードのノードＩＤとＩＰアドレスとを含んでいる。
【０１７０】
続いて、ステップＳ２０７において、その特定された参加要求ノードのノードＩＤと、自ノード装置１に記憶されているルーティングテーブル（図８参照）とを照合させることにより、自ノード装置１が参加メッセージを次に転送すべき他のノード装置が存在しないか否か、すなわち、自ノード装置１が参加要求ノードにとってのルートノードであるか否かが判定される。
【０１７１】
今回は、自ノード装置１が参加メッセージを次に転送すべき他のノード装置が存在すると仮定すると、ステップＳ２０７の判定がＮＯとなり、その後、ステップＳ２０８において、応答メッセージが作成され、その作成された応答メッセージが参加要求ノードに送信される。
【０１７２】
続いて、ステップＳ２０９において、参加要求ノードのノードＩＤと、自ノード装置１に記憶されているルーティングテーブル（図８参照）とを照合させることにより、参加メッセージの転送先が決定される。続いて、ステップＳ２１０において、その決定された転送先に参加メッセージが自ノード装置１から転送される。以上で、このメッセージ処理プログラムの実行が終了し、続いて、図９に示すステップＳ２４に移行する。
【０１７３】
以上、自ノード装置１が参加メッセージを次に転送すべき他のノード装置が存在する場合を説明したが、存在しない場合には、ステップＳ２０７の判定がＹＥＳとなり、ステップＳ２１１に移行する。このステップＳ２１１においては、転送完了メッセージが作成される。具体的には、この転送完了メッセージは、参加メッセージの転送が完了したことを表すとともに、参加要求ノードのノードＩＤとＩＰアドレスとを含むように作成される。
【０１７４】
その後、ステップＳ２１２において、その作成された転送完了メッセージが参加要求ノードに送信される。以上で、このメッセージ処理プログラムの実行が終了、続いて、図９に示すステップＳ２４に移行する。
【０１７５】
なお付言するに、本実施形態においては、参加要求ノードのノードＩＤが一旦計算された後にそのノードＩＤを変更するために、もとのノードＩＤを参照することなく、そのもとのノードＩＤを決定するために用いられた情報とは異なる情報を用いて、もとのノードＩＤとは異なる新たなノードＩＤが取得される。
【０１７６】
この手法の一例によれば、もとのノードＩＤを決定するために用いられた情報とは別の情報（例えば、コンピュータの時間情報）を追加的にまたは代替的に用いることにより、新たなノードＩＤが取得される。
【０１７７】
ノードＩＤを変更するために他の手法を採用することが可能である。例えば、もとのノードＩＤを参照することにより、そのもとのノードＩＤとは異なる新たなノードＩＤを取得する手法を採用することが可能である。この手法の一例によれば、もとのノードＩＤに対して予め定められた演算（例えば、一定値を加算したり減算したり、乗算したり除算したりする）を行うことにより、新たなノードＩＤが取得される。
【０１７８】
以上の説明から明らかなように、本実施形態においては、説明の便宜上、各ノード装置１ごとに、記憶部１２が前記（１）項における「記憶手段」の一例を構成し、制御部１１のうち図９におけるステップＳ１を実行する部分が同項における「ノードＩＤ決定手段」の一例を構成し、制御部１１のうち図９におけるステップＳ２およびＳ３を実行する部分が同項における「参加要求情報送信手段」の一例を構成していると考えることが可能である。
【０１７９】
さらに、本実施形態においては、説明の便宜上、各ノード装置１ごとに、制御部１１のうち図１１におけるステップＳ２０１ないしＳ２１０を実行する部分が前記（１）項における「転送手段」の一例を構成し、制御部１１のうち図１１におけるステップＳ２０７，Ｓ２１１およびＳ２１２を実行する部分が同項における「参加要求返信情報送信手段」の一例を構成していると考えることが可能である。
【０１８０】
さらに、本実施形態においては、説明の便宜上、各ノード装置１ごとに、制御部１１のうち図９におけるステップＳ７を実行する部分が前記（１）項における「ノードＩＤ変更要否判定手段」の一例を構成し、制御部１１のうち図９におけるＳ１２を実行する部分が同項における「ノードＩＤ変更手段」の一例を構成し、制御部１１のうち図９におけるステップＳ２を実行する部分が同項における「再送手段」の一例を構成していると考えることが可能である。
【０１８１】
さらに、本実施形態においては、説明の便宜上、各ノード装置１ごとに、制御部１１のうち図９におけるステップＳ１２を実行する部分が前記（４）項における「取得手段」の一例を構成していると考えることが可能である。
【０１８２】
さらに、本実施形態においては、説明の便宜上、各ノード装置１ごとに、記憶部１２と制御部１１のうち図９におけるステップＳ９を実行する部分とが互いに共同して、前記（８）項における「保存手段」の一例を構成し、制御部１１のうち図１１におけるステップ１０１，Ｓ１０４およびＳ１０５を実行する部分が同項における「設定手段」の一例を構成していると考えることが可能である。
【０１８３】
さらに、本実施形態においては、説明の便宜上、各ノード装置１ごとに、制御部１１のうち図１１におけるステップＳ１０１ないしＳ１０３を実行する部分が前記（９）項における「ノードＩＤ決定手段」の一例を構成していると考えることが可能である。
【０１８４】
さらに、本実施形態においては、説明の便宜上、各ノード装置１ごとに、制御部１１のうち図９におけるステップＳ４のうち、応答メッセージを参加要求ノードに返信する部分を実行する部分が前記（１０）項における「参加要求情報対応処理実行手段」の一例を構成していると考えることが可能である。
【０１８５】
さらに、本実施形態においては、説明の便宜上、各ノード装置１ごとに、図９に示す参加処理プログラムおよび図１１に示すメッセージ処理プログラムが互いに共同して、前記（１１）項に係る「プログラム」の一例を構成していると考えることが可能である。
【０１８６】
なお付言するに、本実施形態においては、参加要求ノードにおいて、そのノードＩＤとルートノード（メッセージの転送先がないノード）のノードＩＤとが互いに一致するか否かが判定され、一致すると判定された場合に、ノードＩＤの変更（再計算）が行われるようになっている。
【０１８７】
これに対し、ルートノードにおいて、そのノードＩＤと参加要求ノードのノードＩＤとが互いに一致するか否かが判定され、一致すると判定された場合に、ノードＩＤの変更を指示するノードＩＤ変更指示情報を含む参加要求返信情報が参加要求ノードに転送され、一方、その参加要求ノードにおいて、前記ノードＩＤ変更指示情報に応答して、自身のノードＩＤが変更される態様で本発明を実施することが可能である。
【０１８８】
この態様を実現するために、前述の実施形態を例えば、次のように変更すればよい。すなわち、図１１におけるステップＳ２０７の判定がＹＥＳとなると、ルートノードのノードＩＤと参加要求ノードのノードＩＤとが互いに一致するか否かを判定し、一致すると判定した場合に、ノードＩＤの変更を指示するノードＩＤ変更指示情報を含む転送完了メッセージを作成し、一致していないと判定した場合に、ノードＩＤの変更不要を示すノードＩＤ変更不要情報を含む転送完了メッセージを作成するように変更すればよい。さらに、図９におけるステップＳ６を削除し、また、ステップＳ７を、参加要求ノードが受信した転送完了メッセージにノードＩＤ変更指示情報が含まれているか否かを判定するステップに変更すればよい。そのステップにおいて、転送完了メッセージにノードＩＤ変更指示情報が含まれていると判定されると、ステップＳ１１へ移行し、一方、含まれてはいないと判定されると、ステップＳ９に移行する。
【０１８９】
以上、本発明の実施形態のうちのいくつかを図面に基づいて詳細に説明したが、これらは例示であり、前記［発明の開示］の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【図面の簡単な説明】
【０１９０】
【図１】本発明の一実施形態に従う情報通信システムにおけるネットワークの物理的構成と論理的構成とを概念的に表す系統図である。
【図２】図２（Ａ），（Ｂ）および（Ｃ）はそれぞれ、図１に示す情報通信システムにおいて、ＤＨＴによるＩＤ空間およびルーティングテーブルが作成される様子の一例を説明するための図である。
【図３】図３（Ａ）は、レベル１のルーティングテーブルの一例を示す図であり、図３（Ｂ）は、レベル２のルーティングテーブルの一例を示す図であり、図３（Ｃ）は、レベル３のルーティングテーブルの一例を示す図であり、図３（Ｄ）は、完成したルーティングテーブルの一例を示す図である。
【図４】図１に示す各ノード装置の概略的なハードウエア構成の一例を概念的に表すブロック図である。
【図５】図１に示す情報通信システムにおいて、あるノード装置がオーバレイネットワークに参加するために行われる参加処理を説明するための図である。
【図６】図１に示す情報通信システムにおいて、ルーティングテーブルを作成する手法の一例を説明するための図である。
【図７】図７（Ａ），（Ｂ）および（Ｃ）はそれぞれ、図１に示す情報通信システムにおいて、参加要求ノードではない複数のノード装置に記憶されているルーティングテーブルの一例を示す図である。
【図８】図１に示す情報通信システムにおいて、参加要求ノードであるノードＺが作成するルーティングテーブルの一例を示す図である。
【図９】図１に示す各ノード装置のコンピュータによって実行される参加処理プログラムを概念的に表すフローチャートである。
【図１０】図９におけるステップＳ１の詳細をノードＩＤ計算ルーチンとして概念的に表すフローチャートである。
【図１１】図１に示す各ノード装置のコンピュータによって実行されるメッセージ処理プログラムを概念的に表すフローチャートである。
【符号の説明】
【０１９１】
１  ノード装置
８  ネットワーク
９  オーバレイネットワーク
１１  制御部
１２  記憶部
１３  バッファメモリ
１４  デコーダ部
１５  映像処理部
１６  表示部
１７  音声処理部
１８  スピーカ
２０  通信部
２１  入力部
２２  バス
Ｓ  情報通信システム
【図１】
0004770804.tif 000002
【図２】
0004770804.tif 000003
【図３】
0004770804.tif 000004
【図４】
0004770804.tif 000005
【図５】
0004770804.tif 000006
【図６】
0004770804.tif 000007
【図７】
0004770804.tif 000008
【図８】
0004770804.tif 000009
【図９】
0004770804.tif 000010
【図１０】
0004770804.tif 000011
【図１１】
0004770804.tif 000012