(57)【特許請求の範囲】
【請求項１】
通信経路を介して互いに接続された複数のノード装置の参加により形成されたオーバーレイネットワークを有する情報通信システムであって、
前記複数のノード装置に含まれる一のノード装置は、
情報の転送先の候補となるノード装置を示すノード情報を記憶する記憶手段と、
前記オーバーレイネットワークへの参加要求を示し、かつ、参加要求する参加要求ノード装置のノード情報を含む参加要求情報を受信した場合に、前記参加要求ノード装置のノード情報に応じた転送先のノード装置を示すノード情報を記憶しているか否かを判別し、当該転送先のノード装置を示すノード情報を記憶している場合には当該ノード装置に前記参加要求情報を転送する参加要求情報転送手段と、
前記参加要求情報を受信した場合に、当該参加要求情報の送信元である前記参加要求ノード装置のノード情報に応じた転送先以外のノード装置を示すノード情報を記憶しているか否かを判別し、当該転送先以外のノード装置を示すノード情報を記憶している場合には当該ノード装置に前記参加要求ノード装置のノード情報を含む存在確認情報を送信する存在確認情報送信手段と、
前記存在確認情報を受信した場合に、前記参加要求ノード装置に返信情報を送信する返信情報送信手段と、
を有することを特徴とする情報通信システム。
【請求項２】
通信経路を介して互いに接続された複数のノード装置の参加により形成されたオーバーレイネットワークを有する情報通信システムにおける通信方法であって、
前記複数のノード装置に含まれる一のノード装置は、情報の転送先の候補となるノード装置を示すノード情報を記憶する工程と、
前記オーバーレイネットワークへの参加要求を示し、かつ、参加要求する参加要求ノード装置のノード情報を含む参加要求情報を受信した場合に、前記参加要求ノード装置のノード情報に応じた転送先のノード装置を示すノード情報を記憶しているか否かを判別し、当該転送先のノード装置を示すノード情報を記憶している場合には当該ノード装置に前記参加要求情報を転送する工程と、
前記参加要求情報を受信した場合に、当該参加要求情報の送信元である前記参加要求ノード装置のノード情報に応じた転送先以外のノード装置を示すノード情報を記憶しているか否かを判別し、当該転送先以外のノード装置を示すノード情報を記憶している場合には当該ノード装置に前記参加要求ノード装置のノード情報を含む存在確認情報を送信する工程と、
前記存在確認情報を受信した場合に、前記参加要求ノード装置に返信情報を送信する工程と、
を有することを特徴とする通信方法。
【請求項３】
通信経路を介して互いに接続された複数のノード装置の参加により形成されたオーバーレイネットワークを有する情報通信システムに含まれる一のノード装置であって、
情報の転送先の候補となるノード装置を示すノード情報を記憶する記憶手段と、
前記オーバーレイネットワークへの参加要求を示し、かつ、参加要求する参加要求ノード装置のノード情報を含む参加要求情報を受信した場合に、前記参加要求ノード装置のノード情報に応じた転送先のノード装置を示すノード情報を記憶しているか否かを判別し、当該転送先のノード装置を示すノード情報を記憶している場合には当該ノード装置に前記参加要求情報を転送する参加要求情報転送手段と、
前記参加要求情報を受信した場合に、当該参加要求情報の送信元である前記参加要求ノード装置のノード情報に応じた転送先以外のノード装置を示すノード情報を記憶しているか否かを判別し、当該転送先以外のノード装置を示すノード情報を記憶している場合には当該ノード装置に前記参加要求ノード装置のノード情報を含む存在確認情報を送信する存在確認情報送信手段と、
前記存在確認情報を受信した場合に、前記参加要求ノード装置に返信情報を送信する返信情報送信手段と、
を有することを特徴とするノード装置。
【請求項４】
請求項３に記載のノード装置から前記返信情報を受信したノード装置であって、
受信した前記返信情報の送信元のノード装置に対応する前記ノード情報を記憶する記憶手段を有することを特徴とするノード装置。
【請求項５】
請求項３に記載のノード装置であって、
前記記憶手段は、前記ノード情報と、前記ノード情報に対応する固有の識別情報と、を前記識別情報の領域毎に対応付けて記憶し、
前記参加要求情報転送手段は、前記参加要求情報を転送する際に、前記記憶手段における所定の領域を指定した領域指定情報を当該参加要求情報に付加し、
前記存在確認情報送信手段は、受信した前記参加要求情報に前記領域指定情報が付加されているか否か及び前記領域指定情報の内容に応じて、送信先となる他のノード装置のノード情報を記憶している場合には当該ノード装置に前記存在確認情報を送信することを特徴とするノード装置。
【請求項６】
請求項５に記載のノード装置であって、
前記識別情報の領域は、前記識別情報の規則に従って複数の領域に分かれており、自ノード装置のみが属する前記領域の存在する段階まで、自ノード装置が属する前記領域が前記識別情報の規則に従ってさらに複数の領域に分かれており、
前記存在確認情報送信手段は、受信した前記参加要求情報に前記領域指定情報が付加されている場合には、記憶している前記識別情報の領域指定情報に対応する領域に属する他のノード装置に前記存在確認情報を送信し、
前記参加要求情報転送手段は、受信した前記参加要求情報に前記領域指定情報が付加されている場合には、当該領域指定情報に対応する前記識別情報の領域よりも小さな範囲に対応する領域を指定した前記領域指定情報を前記参加要求情報に付加することを特徴とするノード装置。
【請求項７】
請求項３、５又は６のいずれか一項に記載のノード装置であって、
前記存在確認情報送信手段により前記存在確認情報を送信した場合に、当該存在確認情報の送信先であるノード装置のノード情報を前記参加要求ノード装置に送信するノード情報送信手段をさらに有することを特徴とするノード装置。
【請求項８】
コンピュータを、請求項３乃至７のいずれか一項に記載のノード装置として機能させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して互いに接続された複数のノード装置を備えたピアツーピア（Peer to Peer（P2P））型の情報通信システム及び方法等の技術分野に関する。
【背景技術】
【０００２】
近年、ピアツーピアという技術が注目されてきている。ピアツーピア型の情報通信システムにおいて、例えば、分散ハッシュテーブル（以下、ＤＨＴ（Distributed Hash Table）という）を利用して論理的に構築されたオーバーレイネットワークでは、各ノード装置が、当該オーバーレイネットワークに参加している全てのノード装置へのリンク情報（例えば、ＩＰアドレス）を認識しているわけではなく、参加の際などに得られる一部のノード装置へのリンク情報だけを保持（記憶）しており、かかるリンク情報に基づき、データの問い合わせ等を行うようになっている。
【０００３】
このようなオーバーレイネットワークにおいては、ノード装置の参加及び脱退（離脱）が頻繁に行われても、負荷分散が適切に行われる必要があり、非特許文献１には、オーバーレイネットワークにおいて、参加及び脱退（離脱）が頻繁に行われる場合であっても、適切に負荷分散を行うための技術が開示されている。
【非特許文献１】岡敏生、森川博之、青山友紀、「分散ハッシュテーブルの軽量な負荷分散手法の検討」、電子情報通信学会技術研究報告、（日本）、社団法人電子情報通信学会、２００４年２月５日、第１０３巻、第６５０号、p.7-12
【発明の開示】
【発明が解決しようとする課題】
【０００４】
あるノード装置がオーバーレイネットワークに新規に参加する際には、予め認識しているコンタクトノードへ参加要求メッセージを送信する。コンタクトノードや他のノード装置が以下のように動作することにより、参加要求メッセージの送信元のノード装置（以下、参加要求ノードという。）は、他のノード装置のリンク情報を取得し、ＤＨＴのルーティングテーブルを作成していく態様が考えられる。
【０００５】
コンタクトノードは、参加要求ノードから参加要求メッセージを受け取ると、ＤＨＴのルーティングテーブルの最も大きな括りの段階に登録している他のノード装置のリンク情報を返信する。また、コンタクトノードは、自ノード装置が参加要求ノードのルートノード（リンク情報に対応する固有の識別情報（ノードＩＤ）が、参加要求ノードから最も近いノード装置）でなければ、参加要求メッセージを他のノード装置に転送する。コンタクトノードが参加要求メッセージを転送する際には、参加要求ノードにリンク情報を返信する次の段階の情報を併せて送信する。
【０００６】
このように転送された参加要求メッセージを受信したノード装置は、リンク情報を返信する段階の情報に基づき、対応するノード装置のリンク情報を参加要求ノードに送信する。また、このノード装置は、自ノード装置が参加要求ノードのルートノードでなければ、参加要求メッセージを他のノード装置に転送する。参加要求メッセージを転送されたノード装置が、さらに参加要求メッセージを転送する際には、参加要求ノードにリンク情報を返信するさらに次の段階の情報を併せて送信する。
【０００７】
このようにして、参加要求メッセージは参加要求ノードのルートノードまで転送され、参加要求メッセージを受信したノード装置は、それぞれ所定の段階のリンク情報を参加要求ノードに返信する。
【０００８】
リンク情報を次々に受信した参加要求ノードは、当該各リンク情報を元に、ＤＨＴのルーティングテーブルを作成する。
【０００９】
しかしながら、上述の手順で参加要求ノードがルーティングテーブルを作成すると、受信した他のノード装置のリンク情報の中に、既にオーバーレイネットワークから脱退しているノード装置の情報が含まれている可能性がある。そうすると、脱退しているノード装置又はこれに近いノードＩＤを有するノード装置に情報を送信したい場合に、情報の転送が滞る場合がある。
【００１０】
そこで、本発明は、上記の不都合に鑑みてなされたものであり、通信経路を介して互いに接続された複数のノード装置を備えたピアツーピア型の情報通信システム及び方法等において、参加要求ノードが、オーバーレイネットワークに参加している（脱退していない）ノード装置のリンク情報のみを取得することができる情報通信システム及び方法等を提供することを課題とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、請求項１に記載の発明は、通信経路を介して互いに接続された複数のノード装置の参加により形成されたオーバーレイネットワークを有する情報通信システムであって、前記複数のノード装置に含まれる一のノード装置は、情報の転送先の候補となるノード装置を示すノード情報を記憶する記憶手段と、前記オーバーレイネットワークへの参加要求を示し、かつ、参加要求する参加要求ノード装置のノード情報を含む参加要求情報を受信した場合に、前記参加要求ノード装置のノード情報に応じた転送先のノード装置を示すノード情報を記憶しているか否かを判別し、当該転送先のノード装置を示すノード情報を記憶している場合には当該ノード装置に前記参加要求情報を転送する参加要求情報転送手段と、前記参加要求情報を受信した場合に、当該参加要求情報の送信元である前記参加要求ノード装置のノード情報に応じた転送先以外のノード装置を示すノード情報を記憶しているか否かを判別し、当該転送先以外のノード装置を示すノード情報を記憶している場合には当該ノード装置に前記参加要求ノード装置のノード情報を含む存在確認情報を送信する存在確認情報送信手段と、前記存在確認情報を受信した場合に、前記参加要求ノード装置に返信情報を送信する返信情報送信手段と、を有することを特徴とする情報通信システムである。
【００１２】
これによれば、参加要求情報を受信したノード装置の存在確認情報送信手段が他のノード装置に存在確認情報を送信し、当該存在確認情報を受信したノード装置の返信情報送信手段が参加要求ノード装置（以下、単に参加要求ノードともいう。）に対して返信情報を送信するため、参加要求ノードは、返信情報の送信元のノード装置がオーバーレイネットワークに参加していることを確認できる。そのため、新規にオーバーレイネットワークに参加した参加要求ノードはオーバーレイネットワークに確実に参加しているノード装置のリンク情報となるノード情報（例えば、ＩＰアドレス等）等を取得することができる。参加要求ノードは、この取得したノード情報等に基づき、記憶手段に各ノード情報を記憶していくことができる。
【００１３】
なお、存在確認情報の送信元のノード装置は、他のノード装置に存在確認情報を送信できた場合には、当該他のノード装置が存在していることを確認することができ、存在確認情報を送信できなかった場合には、当該他のノード装置が存在していないことを確認できるため、存在確認の動作も兼ねられて効率がよい。
【００１４】
上記課題を解決するために、請求項２に記載の発明は、通信経路を介して互いに接続された複数のノード装置の参加により形成されたオーバーレイネットワークを有する情報通信システムにおける通信方法であって、前記複数のノード装置に含まれる一のノード装置は、情報の転送先の候補となるノード装置を示すノード情報を記憶する工程と、前記オーバーレイネットワークへの参加要求を示し、かつ、参加要求する参加要求ノード装置のノード情報を含む参加要求情報を受信した場合に、前記参加要求ノード装置のノード情報に応じた転送先のノード装置を示すノード情報を記憶しているか否かを判別し、当該転送先のノード装置を示すノード情報を記憶している場合には当該ノード装置に前記参加要求情報を転送する工程と、前記参加要求情報を受信した場合に、当該参加要求情報の送信元である前記参加要求ノード装置のノード情報に応じた転送先以外のノード装置を示すノード情報を記憶しているか否かを判別し、当該転送先以外のノード装置を示すノード情報を記憶している場合には当該ノード装置に前記参加要求ノード装置のノード情報を含む存在確認情報を送信する工程と、前記存在確認情報を受信した場合に、前記参加要求ノード装置に返信情報を送信する工程と、を有することを特徴とする通信方法である。
【００１５】
上記課題を解決するために、請求項３に記載の発明は、通信経路を介して互いに接続された複数のノード装置の参加により形成されたオーバーレイネットワークを有する情報通信システムに含まれる一のノード装置であって、情報の転送先の候補となるノード装置を示すノード情報を記憶する記憶手段と、前記オーバーレイネットワークへの参加要求を示し、かつ、参加要求する参加要求ノード装置のノード情報を含む参加要求情報を受信した場合に、前記参加要求ノード装置のノード情報に応じた転送先のノード装置を示すノード情報を記憶しているか否かを判別し、当該転送先のノード装置を示すノード情報を記憶している場合には当該ノード装置に前記参加要求情報を転送する参加要求情報転送手段と、前記参加要求情報を受信した場合に、当該参加要求情報の送信元である前記参加要求ノード装置のノード情報に応じた転送先以外のノード装置を示すノード情報を記憶しているか否かを判別し、当該転送先以外のノード装置を示すノード情報を記憶している場合には当該ノード装置に前記参加要求ノード装置のノード情報を含む存在確認情報を送信する存在確認情報送信手段と、前記存在確認情報を受信した場合に、前記参加要求ノード装置に返信情報を送信する返信情報送信手段と、を有することを特徴とするノード装置である。
【００１６】
これによれば、ノード装置がこのような各手段を有していることにより、新規にオーバーレイネットワークに参加した参加要求ノードはオーバーレイネットワークに確実に参加しているノード装置のリンク情報を取得することができる。
【００１７】
上記課題を解決するために、請求項４に記載の発明は、請求項３に記載のノード装置から前記返信情報を受信したノード装置であって、受信した前記返信情報の送信元のノード装置に対応する前記ノード情報を記憶する記憶手段を有することを特徴とするノード装置である。
【００１８】
これによれば、参加要求ノードは、受信した返信情報に基づき、その時点でオーバーレイネットワークに確実に参加している他のノード装置のノード情報を記憶できる。そのため、情報通信システムにおける情報の転送等の処理が滞りなく進むこととなり、情報通信システム全体の通信効率が向上する。
【００１９】
上記課題を解決するために、請求項５に記載の発明は、請求項３に記載のノード装置であって、前記記憶手段は、前記ノード情報と、前記ノード情報に対応する固有の識別情報と、を前記識別情報の領域毎に対応付けて記憶し、前記参加要求情報転送手段は、前記参加要求情報を転送する際に、前記記憶手段における所定の領域を指定した領域指定情報を当該参加要求情報に付加し、前記存在確認情報送信手段は、受信した前記参加要求情報に前記領域指定情報が付加されているか否か及び前記領域指定情報の内容に応じて、送信先となる他のノード装置のノード情報を記憶している場合には当該ノード装置に前記存在確認情報を送信することを特徴とするノード装置である。
【００２０】
これによれば、ノード装置は、参加要求情報を転送する際に領域指定情報を付加することにより、参加要求ノードの識別情報に適した識別情報の各領域に属する他のノード装置に存在確認情報を送信することができる。そして、この存在確認情報を受信したノード装置は返信情報を参加要求ノードに送信するため、参加要求ノードは、参加要求ノードの識別情報に適した識別情報の各領域に属するノード装置のノード情報を取得することができ、各ノード装置のノード情報をバランスよく記憶することができる。参加要求ノードがこのように他のノード装置のノード情報を記憶することにより、情報通信システムにおける情報の転送等の処理が滞りなく進むこととなり、情報通信システム全体の通信効率がより向上する。
【００２１】
上記課題を解決するために、請求項６に記載の発明は、請求項５に記載のノード装置であって、前記識別情報の領域は、前記識別情報の規則に従って複数の領域に分かれており、自ノード装置のみが属する前記領域の存在する段階まで、自ノード装置が属する前記領域が前記識別情報の規則に従ってさらに複数の領域に分かれており、前記存在確認情報送信手段は、受信した前記参加要求情報に前記領域指定情報が付加されている場合には、記憶している前記識別情報の領域指定情報に対応する領域に属する他のノード装置に前記存在確認情報を送信し、前記参加要求情報転送手段は、受信した前記参加要求情報に前記領域指定情報が付加されている場合には、当該領域指定情報に対応する前記識別情報の領域よりも小さな範囲に対応する領域を指定した前記領域指定情報を前記参加要求情報に付加することを特徴とするノード装置である。
【００２２】
これによれば、上記のように識別情報の領域が分かれており、上記のように領域指定情報を付加することにより、参加要求ノードは、参加要求ノードの識別情報に適した識別情報の各領域に属するノード装置のノード情報を取得することができ、各ノード装置のノード情報をバランスよく記憶することができる。このような形態は、例えば、ＤＨＴを用いたルーティングテーブルに適用することができ、情報通信システムにおける情報の転送等に用いられるルーティングの処理を円滑に行うことができるため、情報通信システム全体の通信効率がより向上する。
【００２３】
上記課題を解決するために、請求項７に記載の発明は、請求項３、５又は６のいずれか一項に記載のノード装置であって、前記存在確認情報送信手段により前記存在確認情報を送信した場合に、当該存在確認情報の送信先であるノード装置のノード情報を前記参加要求ノード装置に送信するノード情報送信手段をさらに有することを特徴とするノード装置である。
【００２４】
これによれば、存在確認情報送信手段を機能させたノード装置が、当該存在確認情報の送信先であるノード装置のノード情報を参加要求ノードに送信することにより、当該ノード装置は、記憶しているノード情報の一部を参加要求ノードに送信することになる。参加要求ノードは、他のノード装置が記憶しているノード情報の一部を受信し、また、当該ノード情報に対応するノード装置からの返信情報を受信することにより、より正確にオーバーレイネットワークに参加しているノード装置のノード情報を記憶することができる。
【００２５】
上記課題を解決するために、請求項８に記載の発明は、コンピュータを、請求項３乃至７のいずれか一項に記載のノード装置として機能させることを特徴とする情報処理プログラムである。
【発明の効果】
【００２６】
本発明によれば、ノード装置が上記各手段、特に参加要求情報転送手段と存在確認情報送信手段と返信情報送信手段とを有していることにより、新規にオーバーレイネットワークに参加した参加要求ノードはオーバーレイネットワークに確実に参加しているノード装置のリンク情報を取得することができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の最良の実施形態を図面に基づいて説明する。以下に説明する実施の形態は、ＤＨＴ、ノード情報としてのＩＰアドレス、識別情報としてのノードＩＤを利用した情報通信システムに本発明を適用した場合の実施形態である。本実施形態では、上記情報通信システムにおいて、新規にオーバーレイネットワークに参加するノード装置（参加要求ノード）が参加要求情報としての参加メッセージを任意のノード装置であるコンタクトノードに送信し、存在確認情報としての存在確認メッセージ及び返信情報としての応答メッセージを利用して、参加要求ノードがＤＨＴルーティングテーブルを作成する。なお、本発明の情報通信システム等の発明は、以下に説明する実施形態に限定されず、本発明の技術思想の範囲内で適宜変更して実施される。
【００２８】
［１．情報通信システムの構成等］
始めに、図１を参照して、情報通信システムの概要構成等について説明する。
【００２９】
図１は、本実施形態に係る情報通信システムにおける各ノード装置の接続態様の一例を示す図である。
【００３０】
図１の下部枠１０１内に示すように、ＩＸ（Internet eＸchange）３、ＩＳＰ（Internet Service Provider）４、ＤＳＬ（Digital Subscriber Line）回線事業者（の装置）５、ＦＴＴＨ（Fiber To The Home）回線事業者（の装置）６、および通信回線（例えば、電話回線や光ケーブル等）７等によって、インターネット等のネットワーク（現実世界のネットワーク）８が構築されている。
【００３１】
情報通信システムＳは、このようなネットワーク８を介して相互に接続された複数のノード装置１ａ，１ｂ，１ｃ・・・１ｘ，１ｙ，１ｚ・・・を備えて構成されることになり、ピアツーピア方式のネットワークシステムとなっている。各ノード装置１ａ，１ｂ，１ｃ・・・１ｘ，１ｙ，１ｚ・・には、ノード装置を示す情報（本発明におけるノード情報）としての固有の製造番号およびＩＰ（Internet Protocol）アドレスが割り当てられている。なお、製造番号およびＩＰアドレスは、複数のノード装置１間で重複しないものである。なお、以下の説明において、ノード装置１ａ，１ｂ，１ｃ・・・１ｘ，１ｙ，１ｚ・・・のうち何れかのノード装置を示す場合には、便宜上、ノード装置１という場合がある。
【００３２】
［１．１．ＤＨＴの概要］
以下に、本実施形態に係る分散ハッシュテーブル（以下、ＤＨＴ（Distributed Hash Table）という）を利用したアルゴリズムについて説明する。
【００３３】
上述した情報通信システムＳにおいて、当該ノード装置１同士が、互いに情報をやり取りする際には、お互いのノード情報としてのＩＰアドレスを知っていなければならない。
【００３４】
例えば、コンテンツを互いに共有するシステムにおいては、ネットワーク８に参加している各ノード装置１が互いにネットワーク８に参加している全てのノード装置１のＩＰアドレスを知っておくのが単純な手法であるが、端末数が何万何十万と多数になると、その全てのノード装置１のＩＰアドレスを覚えておくのは現実的ではない。また、任意のノード装置の電源がＯＮ或いはＯＦＦとすると、各ノード装置１にて記憶している当該任意のノード装置のＩＰアドレスの更新が頻繁になり、運用上困難となる。
【００３５】
そこで、１台のノード装置１では、ネットワーク８に参加している全てのノード装置１のうち、必要最低限のノード装置１のＩＰアドレスだけを覚えて（記憶して）おいて、ＩＰアドレスを知らない（記憶していない）ノード装置１については、各ノード装置１間で互いに情報を転送し合って届けてもらうというシステムが考案されている。
【００３６】
このようなシステムの一例として、ＤＨＴを利用したアルゴリズムによって、図１の上部枠１００内に示すような、オーバレイネットワーク９が構築されることになる。つまり、このオーバレイネットワーク９は、既存のネットワーク８を用いて形成された仮想的なリンクを構成するネットワークを意味する。
【００３７】
本実施形態においては、ＤＨＴを利用したアルゴリズムによって構築されたオーバレイネットワーク９を前提としており、このオーバレイネットワーク９上に配置されたノード装置１を、情報通信システムＳに参加（言い換えれば、オーバレイネットワーク９に参加）しているノード装置１という。なお、情報通信システムＳへの参加は、未だ参加していないノード装置（参加要求ノード）が、既に参加している任意のノード装置１（以下、コンタクトノードともいう。）に対して参加要求情報（以下、参加メッセージともいう。）を送ることによって行われる。なお、参加要求情報としての参加メッセージは、オーバーレイネットワークへの参加要求を示し、かつ、参加要求する参加要求ノードのノード情報を含むものである。
【００３８】
情報通信システムＳに参加している各ノード装置１のノードＩＤ（識別情報）は、それぞれのノード装置毎にユニーク（固有）な番号を付与する。この番号は、ノード装置の最大運用台数を収容できるだけのｂｉｔ数を持たせる必要がある。例えば、１２８ｂｉｔの番号とすれば、2＾128＝340×10＾36台のノード装置を運用できる。
【００３９】
より具体的には、各ノード装置１のノードＩＤは、それぞれのノード装置のＩＰアドレスあるいは製造番号等のノード装置毎に固有の値を、共通のハッシュ関数（ハッシュアルゴリズム）によりハッシュ化して得たハッシュ値であり、一つのＩＤ空間に偏りなく分散して配置されることになる。このように共通のハッシュ関数により求められた（ハッシュ化された）ノードＩＤは、当該ＩＰアドレスあるいは製造番号が異なれば、同じ値になる確率が極めて低いものである。なお、ハッシュ関数については公知であるので詳しい説明を省略する。なお、本実施形態では、ＩＰアドレス（グローバルＩＰアドレス；ノード情報）を共通のハッシュ関数によりハッシュ化した値をノードＩＤ（ＧＵＩＤ（Global Unique IＤentifier）；識別情報）とする。
【００４０】
［１．２．ルーティングテーブルの作成］
図２を参照して、ＤＨＴで用いるルーティングテーブルの作成手法の一例について説明する。図２は、ＤＨＴによってルーティングテーブルが作成される様子の一例を示す図である。
【００４１】
各ノード装置１に付与されたノードＩＤは、共通のハッシュ関数によって生成したため、図２（Ａ）乃至図２（Ｃ）に示す如く、同一のリング状のＩＤ空間上にさほど偏ることなく、散らばって存在するものとして考えることができる。同図は８ｂｉｔでノードＩＤを付与し、図示したものである。図中黒点はノードＩＤを示し、反時計回りでＩＤが増加するものとする。
【００４２】
まず、図２（Ａ）に示す如く、ＩＤ空間を幾つかのエリアに分割する。実際には、１６分割程度が良く用いられるが、説明を簡単にするためここでは４分割とし、ＩＤをビット長８Ｂｉｔの４進数で表すこととした。そして、ノード装置１ＮのノードＩＤを「1023」とし、このノード装置１Ｎのルーティングテーブルを作る例について説明する。
【００４３】
（レベル１のルーティング）
まず、ＩＤ空間を４分割とすると、それぞれのエリアは４進数で表すと最大桁が異なる４つのエリア「0XXX」「1XXX」、「2XXX」、「3XXX」（Ｘは０から３の整数、以下同様。）で分けられる。ノード装置１Ｎは、当該ノード装置１Ｎ自身のノードＩＤが「1023」であるため、図中左下「1XXX」のエリアに存在することになる。そして、ノード装置１Ｎは、自分の存在するエリア（すなわち、「1XXX」のエリア）以外のエリアに存在するノード装置１を適当に選択し、当該ノードＩＤのＩＰアドレスをレベル１のテーブルに記憶する。図３（Ａ）がレベル１のテーブルの一例である。２列目はノード装置１Ｎ自身を示しているため、ＩＰアドレスを記憶する必要は無い。
【００４４】
（レベル２のルーティング）
次に、図２（Ｂ）に示す如く、上記ルーティングによって４分割したエリアのうち、自分の存在するエリアを更に４分割し、更に４つのエリア「10XX」「11XX」、「12XX」、「13XX」と分ける。そして、上記と同様に自分の存在するエリア以外のエリアに存在するノード装置１を適当に選択し、当該ノードＩＤのＩＰアドレスをレベル２のテーブルに記憶する。図３（Ｂ）がレベル２のテーブルの一例である。１列目はノード装置１Ｎ自身を示しているため、ＩＰアドレスを記憶する必要は無い。
【００４５】
（レベル３のルーティング）
さらに、図２（Ｃ）に示す如く、上記ルーティングによって４分割したエリアのうち、自分の存在するエリアを更に４分割し、更に４つのエリア「100X」「101X」、「102X」、「103X」と分ける。そして、上記と同様に自分の存在するエリア以外のエリアに存在するノード装置１を適当に選択し、当該ノードＩＤのＩＰアドレスをレベル１のテーブルに記憶する。図３（Ｃ）がレベル３のテーブルの一例である。３列目はノード装置１Ｎ自身を示しているため、ＩＰアドレスを記憶する必要は無く、２列目、４列目はそのエリアにノード装置が存在しないため空白となる。
【００４６】
このようにして、レベル４まで同様にルーティングテーブルを図３（Ｄ）に示す如く作成することにより、８ｂｉｔのＩＤ全てを網羅することができる。レベルが上がる毎にテーブルの中に空白が目立つようになる。
【００４７】
以上説明した手法に従って作成したルーティングテーブルを、全てのノード装置１が夫々作成して所有することになる。このように、ノード装置１は、他のノード装置１のＩＰアドレスを記憶したＤＨＴルーティングテーブルを作成していく。本実施形態においては、ノード装置１は、ノード情報としてのＩＰアドレスと、識別情報としてのノードＩＤと、識別情報の属する領域としてのノードＩＤ空間のエリア、すなわちＤＨＴの各レベル及び各列と、を対応付けて記憶している。ここで、自ノード装置１ＮのノードＩＤに最も近いノードＩＤに対応するノード装置を、後述するルートノード（図２（Ｃ）及び図３（Ｄ）においてはノードＩＤ：1000のノード装置）とする。
【００４８】
なお、ノードＩＤの桁数に応じてレベルの数が決まり、進数の数に応じて図３（Ｄ）における各レベルの注目桁の数が決まる。具体的に、１６桁１６進数である場合には、６４ｂｉｔのＩＤとなり、レベル１６で注目桁の（英）数字は０〜ｆとなる。後述するルーティングテーブルの説明においては、各レベルの注目桁の数を示す部分を単に「列」又は「列数」ともいう。
【００４９】
［２．ノード装置の構成等］
次に、図４を参照して、ノード装置１の構成および機能について説明する。尚、各ノード装置１の構成は同じである。図４は、ノード装置１の概要構成例を示す図である。
【００５０】
各ノード装置１は、図４に示すように、演算機能を有するＣＰＵ，作業用ＲＡＭ，各種データおよびプログラムを記憶するＲＯＭ等から構成されたコンピュータとしての制御部１１と、コンテンツデータ、インデックス情報、上記ＤＨＴおよびプログラム等を記憶保存（格納）するためのＨＤ等から構成された記憶手段としての記憶部１２（上記コンテンツデータは、保存されていないノード装置１もある）と、受信されたコンテンツデータ等を一時蓄積するバッファメモリ１３と、コンテンツデータに含まれるエンコードされたビデオデータ（映像情報）およびオーディオデータ（音声情報）等をデコード（データ伸張や復号化等）するデコーダ部１４と、当該デコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部１５と、当該映像処理部１５から出力されたビデオ信号に基づき映像表示するＣＲＴ，液晶ディスプレイ等の表示部１６と、上記デコードされたオーディオデータをアナログオーディオ信号にＤ（Digital）／Ａ（Analog）変換した後これをアンプにより増幅して出力する音声処理部１７と、当該音声処理部１７から出力されたオーディオ信号を音波として出力するスピーカ１８と、ネットワーク８を通じて他のノード装置１との間の情報の通信制御を行うための通信部２０と、ユーザからの指示を受け付け当該指示に応じた指示信号を制御部１１に対して与える入力部（例えば、キーボード、マウス、或いは、操作パネル等）２１と、を備えて構成され、制御部１１、記憶部１２、バッファメモリ１３、デコーダ部１４および通信部２０はバス２２を介して相互に接続されている。
【００５１】
そして、制御部１１におけるＣＰＵが記憶部１２等に記憶された各種プログラムを実行することにより、ノード装置１全体を統括制御するようになっており、また、入力部２１からの指示信号に応じて、コンテンツデータ登録処理等を行うようになっている。ノード装置１は、実行されるプログラムに応じて、情報を送信（転送）するノード装置、情報を受信するノード装置等として機能する。また、ノード装置１の制御部１１は、本発明の参加要求情報転送手段、存在確認情報送信手段、返信情報送信手段、ノード情報送信手段、として機能する。
【００５２】
［３．情報通信システムの概略］
本実施形態の情報通信システムＳの概略を図５乃至図７を用いて説明する。本実施形態の情報通信システムＳは、一のノード装置がオーバーレイネットワークに参加した後、他のノード装置から返信情報としての応答メッセージを受信することにより、当該応答メッセージの送信元のノード装置の情報を元にＤＨＴルーティングテーブルを作成していく。以下の説明においては、参加要求ノードをノードＺとし、ノードＺが初めに通信を行う、既にＩＰアドレスを知っている任意のノード装置（以下、コンタクトノードという。）をノードＢとする。
【００５３】
なお、以下において、ＤＨＴルーティングテーブルを単にテーブルとも言う。また、他のノード装置のノード情報及び識別情報の記憶について、「登録」という言い方も用いる。
【００５４】
図５は、情報通信システムＳに参加要求ノードが参加した後にＤＨＴルーティングテーブルを作成するための各メッセージの流れを示す概略図であり、図６の各図は、既に情報通信システムＳに参加しているノードＢ、ノードＥ及びノードＧがそれぞれ記憶しているＤＨＴルーティングテーブルの例であり、図７は、ノードＺが返信情報（応答メッセージ）を受信することにより作成するＤＨＴルーティングテーブルの例である。
【００５５】
図５に示すように、一のノード装置１（ノードＺ）が情報通信システムＳにおける通信ネットワークに参加すると、ノードＺは、コンタクトノードであるノードＢに参加要求情
報としての参加メッセージを送信する（矢印１０１）。すると、ノードＺは参加メッセージの送信が成功することにより、ノードＢが存在していることを確認する（矢印１０２）。次いで、ノードＢは、存在確認情報としての存在確認メッセージを図６（Ａ）に示すようにレベル１に登録しているノードＡ、ノードＥ、ノードＣに順次送信する（矢印１０３、１０５、１０７）。すると、ノードＡは応答メッセージをノードＺに送信し（矢印１０４）、ノードＥは応答メッセージをノードＺに送信し（矢印１０６）、ノードＣは応答メッセージをノードＺに送信する（矢印１０８）。なお、図６（Ａ）乃至図６（Ｃ）において、レベル数の左に▲印がある場合には、そのレベルに登録されたノード装置に存在確認メッセージを送信することを意味し、二重の四角で囲まれたノード装置は、当該ノード装置に参加メッセージを転送することを意味する。
【００５６】
このとき、ノードＺは、図７のテーブルにおけるノードＡ、ノードＢ、ノードＣ及びノードＥのＩＰアドレスを取得するため、ＩＰアドレスとこれに対応するノードＩＤとを対応付けて記憶できる。
【００５７】
そして、ノードＢは、参加メッセージをノードＺのルートノードに向けて、ここではノードＥに転送する（矢印１０９）。このとき、存在確認メッセージの送信先を次のレベル２である旨の領域指定情報を参加メッセージに付加する。次いで、ノードＥは、図６（Ｂ）に示すように、存在確認メッセージを次のレベル２に登録しているノードＧ、ノードＤ、ノードＦに順次送信する（矢印１１０、１１２、１１４）。すると、ノードＧは応答メッセージをノードＺに送信し（矢印１１１）、ノードＤは応答メッセージをノードＺに送信し（矢印１１３）、ノードＦは応答メッセージをノードＺに送信する（矢印１１５）。
【００５８】
このとき、ノードＺは、図７のテーブルにおけるノードＤ、ノードＦ及びノードＧのＩＰアドレス及びノードＩＤを記憶できる。
【００５９】
そして、ノードＥは、参加メッセージをノードＺのルートノードに向けて、ここではノードＧに転送する（矢印１１６）。このとき、存在確認メッセージの送信先を次のレベル３である旨の領域指定情報を参加メッセージに付加する。次いで、ノードＧは、図６（Ｃ）に示すように、存在確認メッセージを次のレベル３に登録しているノードＨに送信する（矢印１１７）。すると、ノードＨは応答メッセージをノードＺに送信する（矢印１１８）。ここで、ノードＧは、ノードＺのルートノードであり、これ以上転送先がないため、処理を終了する。
【００６０】
このとき、ノードＺは、図７のテーブルにおけるノードＨのＩＰアドレス及びノードＩＤを記憶でき、以上の流れによりノードＺは図７に示すＤＨＴルーティングテーブルを作成することができる。このノードＺのテーブルは、それぞれ存在する各ノード装置１から受信した応答メッセージに基づいて作成したものであるため、テーブルに記憶されている他のノード装置１が脱退しているために、テーブルに基づく情報等の転送又は送信が滞る確率が低くなる。従って、情報通信システムＳ全体として、通信効率が向上する。
【００６１】
［３．１本実施形態の情報通信システムの動作］
次に、本実施形態の情報通信システムＳにおける各ノード装置１の動作について図５乃至図１０を用いて説明する。一のノード装置１（上述のノードＺ）が情報通信システムＳにおける通信ネットワークに参加した後の各ノード装置１における処理について、図８乃至図１０のフローチャートを参照して説明する。なお、各処理は、いくつかのノード装置１を例に説明するが、どのノード装置１も同様の処理を行う。
【００６２】
（１）ノード装置の基本処理
図８を参照してノード装置１（ノードＺ）の基本処理について説明する。なお、ノードＺは、通信ネットワークに参加した後、上述の図５に示した手順により図７に示すＤＨＴルーティングテーブルを作成し、保持（記憶）するものとする。
【００６３】
ノードＺの制御部１１は、入力部１１等により自ノード装置に電源が入れられたことを認識すると、当該ノードＺの各種設定が初期化され、基本処理を開始する（スタート）。なお、ノードＺは、通信ネットワークに参加した際にまず通信を行うコンタクトノード装置１（ノードＢ）のＩＰアドレスを保持していることを前提とする。
【００６４】
基本処理が開始されると、制御部１１は、コンタクトノード（ノードＢ）へ領域指定情報としてレベル１を指定した参加メッセージを送信する（ステップＳ１）。なお、ノードＺの制御部１１は、参加メッセージを送信するためにコンタクトノードＢとの通信が確立した時点でコンタクトノードＢが存在していることを確認し、後述する図１０のステップＳ３２に示すように、ノードＢの情報をテーブルに登録することができる。次いで、制御部１１は、電源が切られたか否かを判断し（ステップＳ２）、通常、電源が入れられた直後は電源が切られないため、電源が切られていないと判断し（ステップＳ２；ＮＯ）、他のノード装置１からメッセージ（情報）を受信したか否かを判断する（ステップＳ３）。このとき、少なくともノードＡから応答メッセージを受信することとなるため、他のノード装置１（ノードＡ）からメッセージを受信したと判断し（ステップＳ３；ＹＥＳ）、メッセージの受信処理を行う（ステップＳ４）。なお、メッセージ受信処理については、図９を用いて後述する。
【００６５】
次いで、制御部１１は、受信したメッセージの送信元のノード装置１（ノードＢ）について、テーブルへの登録処理を行う（ステップＳ５）。このテーブルへの登録処理については、図１０を用いて後述する。このとき、ノードＺのテーブルにおける、レベル１、各レベルの注目桁Ｘ＝０のエリアに、ノードＡの情報が登録される（図７参照）。
【００６６】
次いで、制御部１１は、ステップＳ２に戻り、電源が切られておらず（ステップＳ２；ＮＯ）、メッセージを受信していない場合には（ステップＳ３；ＮＯ）、入力部２１等からの入力に応じたその他の処理を行い（ステップＳ６）、ステップＳ２に戻る。ノードＺの制御部１１は、以後、ステップＳ２〜Ｓ５または、ステップＳ２、Ｓ３、Ｓ６の動作を場合に応じて繰り返し、ノードＺの電源が切られた場合には、そのように判断し（ステップＳ２；ＹＥＳ）、基本処理を終了する（エンド）。
【００６７】
（２）ノード装置のメッセージ受信処理
図９を参照してノードＺ、ノードＢ、ノードＥ、ノードＧ及びノードＡのメッセージ受信処理について説明する。
【００６８】
（ノードＺ）
ノードＺの制御部１１は、上述の基本処理におけるメッセージ受信処理（ステップＳ４）がスタートすると、このメッセージ受信処理を開始する（スタート）。ここでは、まずノードＡからの応答メッセージを受信した前提で説明する。
【００６９】
メッセージ受信処理が開始されると、制御部１１は、受信したメッセージが参加メッセージか否かを判断する（ステップＳ１１）。ここでは、受信したメッセージは応答メッセージであるため、制御部１１は、受信したメッセージが参加メッセージでないと判断し（ステップＳ１１；ＮＯ）、次いで、受信したメッセージが存在確認メッセージか否かを判断する（ステップＳ１２）。
【００７０】
ここでは、受信したメッセージは応答メッセージであるため、制御部１１は、受信したメッセージが存在確認メッセージでないと判断し（ステップＳ１２；ＮＯ）、次いで、受信したメッセージが応答メッセージであるか否かを判断する（ステップＳ１３）。ここで、制御部１１は、受信したメッセージは応答メッセージであると判断し（ステップＳ１３；ＹＥＳ）、元々の処理の流れに戻る（リターン）。
【００７１】
（ノードＢ）
一方、コンタクトノードＢにおいて、通信ネットワークに参加したノードＺから参加メッセージを受信した場合のメッセージ受信処理を以下に説明する。ノードＢは、図６（Ａ）に示すテーブルを記憶しているものとする。
【００７２】
ノードＢの制御部１１は、参加メッセージを受信し、上述の基本処理におけるメッセージ受信処理（ステップＳ４）がスタートすると、このメッセージ受信処理を開始する（スタート）。ステップＳ１１において、ノードＢの制御部１１が受信したメッセージは参加メッセージであると判断すると（ステップＳ１１；ＹＥＳ）、当該参加メッセージに含まれるレベル１を示す領域指定情報を取得する（ステップＳ１４）。制御部１１は、この参加メッセージの領域指定情報に応じて、テーブルにおけるレベル数を１と決定する（ステップＳ１５）。
【００７３】
次いで、制御部１１は、テーブルにおける列数（各レベルの注目桁Ｘ）を０と決定し（ステップＳ１６）、ノードＢのテーブルを示す図６（Ａ）におけるレベル１、注目桁Ｘ＝０のエリアに注目する。
【００７４】
次いで、制御部１１は、決定した列数がテーブル全体の列数以下か否かを判断し（ステップＳ１７）、決定した列数０がテーブル全体の列数３以下であるため（ステップＳ１７；ＹＥＳ）、注目する［レベル数］［列数］に該当するノード装置が自ノード装置か否かを判断する（ステップＳ１８）。
【００７５】
ここでは、図６（Ａ）に示すように、注目する［レベル数１］［列数０］に該当するノード装置が自ノード装置ではないため、そのように判断し（ステップＳ１８；ＮＯ）、次いで、注目する［レベル数］［列数］に他のノード装置の情報が記憶されているか否かを判断する（ステップＳ１９）。
【００７６】
ここでは、［レベル数１］［列数０］にノードＩＤ［０２１１］のノード装置が記憶されているため、制御部１１はそのように判断し（ステップＳ１９；ＹＥＳ）、参加メッセージの送信元であるノードＺのＩＰアドレスを含む存在確認メッセージを作成し、［レベル数１］［列数０］に記憶されているノードＩＤ［０２１１］のノード装置（ノードＡ）に当該存在確認メッセージを送信する（ステップＳ２０）。ここでは、メッセージの送信が成功したものとする。
【００７７】
次いで、制御部１１は、メッセージ送信処理が成功したか否かを判断し（ステップＳ２１）、ここでは存在確認メッセージの送信処理が成功したため、そのように判断する（ステップＳ２１；ＹＥＳ）。次いで、制御部１１は、列数０の値に１を足して列数１とし（ステップＳ２２）、ステップＳ１７に戻る。
【００７８】
次いで、制御部１１は、ステップＳ１７；ＹＥＳ、ステップＳ１８；ＮＯ、ステップＳ１９；ＹＥＳ、ステップＳ２０、ステップＳ２１；ＹＥＳを経て、［レベル数１］［列数１］に記憶されているノードＩＤ［１２２１］のノード装置（ノードＥ）に存在確認メッセージを送信し、列数１の値に１を足して列数２とし（ステップＳ２３）、ステップＳ１７に戻る。
【００７９】
次いで、制御部１１は、ステップＳ１７；ＹＥＳを経て、ステップＳ１８において［レベル数１］［列数２］のエリアは自ノード装置であると判断し（ステップＳ１９；ＹＥＳ）、列数２の値に１を足して列数３とし（ステップＳ２２）、ステップＳ１７に戻る。
【００８０】
次いで、制御部１１は、ステップＳ１７；ＹＥＳ、ステップＳ１８；ＮＯ、ステップＳ１９；ＹＥＳ、ステップＳ２０、ステップＳ２１；ＹＥＳを経て、［レベル数１］［列数３］に記憶されているノードＩＤ［３１２１］のノード装置（ノードＣ）に存在確認メッセージを送信し、列数３の値に１を足して列数４とし（ステップＳ２２）、ステップＳ１７に戻る。
【００８１】
ここで、制御部１１は、決定した列数がテーブル全体の列数以下か否かを判断し（ステップＳ１７）、決定した列数４がテーブル全体の列数３以下でないため（ステップＳ１７；ＮＯ）、参加メッセージの転送先（送信先）のノード装置を認定する（ステップＳ２３）。このとき、図２を用いて説明したように、参加要求ノードであるノードＺのノードＩＤ［１０１３］に最も近いノード装置がノードＩＤ［１２２１］のノードＥであるため、ノードＥを参加メッセージの転送先として認定する。
【００８２】
次いで、制御部１１は、自ノード装置がルートノード、すなわち、参加要求ノードであるノードＺのノードＩＤ［１０１３］に最も近いノード装置であるか否かを判断する（ステップＳ２４）。上述のように、ここでは、参加要求ノードであるノードＺのノードＩＤ［１０１３］に最も近いノード装置がノードＩＤ［１２２１］のノードＥであり、自ノード装置がルートノードではないため、制御部１１はそのように判断し（ステップＳ２４；ＮＯ）、注目してきたレベル数に１を足したレベル数の情報を領域指定情報として付加した参加メッセージを作成し、ステップＳ２４で認定した転送先に転送し（ステップＳ２５）、元々の処理の流れに戻る（リターン）。ここでは、制御部１１は、注目してきたレベル数が１であり、これに１を足したレベル数２の領域指定情報を参加メッセージに付加し、ノードＥに転送し、元々の流れに戻る。
【００８３】
（ノードＥ）
次いで、ノードＥにおいて、ノードＢから参加メッセージを転送され、受信した場合のメッセージ受信処理を以下に説明する。ノードＥは、図６（Ｂ）に示すテーブルを記憶しているものとする。
【００８４】
ノードＥの制御部１１は、参加メッセージを受信し、上述の基本処理におけるメッセージ受信処理（ステップＳ４）がスタートすると、このメッセージ受信処理を開始する（スタート）。ステップＳ１１において、ノードＥの制御部１１が受信したメッセージは参加メッセージであると判断すると（ステップＳ１１；ＹＥＳ）、当該参加メッセージに含まれるレベル２を示す領域指定情報を取得する（ステップＳ１４）。制御部１１は、この参加メッセージの領域指定情報に応じて、テーブルにおけるレベル数を２と決定する（ステップＳ１５）。
【００８５】
次いで、制御部１１は、テーブルにおける列数（各レベルの注目桁Ｘ）を０と決定し（ステップＳ１６）、ノードＥのテーブルを示す図６（Ｂ）におけるレベル２、注目桁Ｘ＝０のエリアに注目する。制御部１１は、決定した列数がテーブル全体の列数以下か否かを判断し（ステップＳ１７）、決定した列数０がテーブル全体の列数３以下であるため（ステップＳ１７；ＹＥＳ）、注目する［レベル数］［列数］に該当するノード装置が自ノード装置か否かを判断する（ステップＳ１８）。
【００８６】
ここでは、図６（Ｂ）に示すように、注目する［レベル数２］［列数０］に該当するノード装置が自ノード装置ではないため、そのように判断し（ステップＳ１８；ＮＯ）、次いで、注目する［レベル数］［列数］に他のノード装置の情報が記憶されているか否かを判断する（ステップＳ１９）。
【００８７】
ここでは、［レベル数２］［列数０］にノードＩＤ［１０２３］のノード装置が記憶されているため、そのように判断し（ステップＳ１９；ＹＥＳ）、参加要求ノードであるノードＺのＩＰアドレスを含む存在確認メッセージを作成し、当該メッセージを［レベル数２］［列数０］に記憶されているノードＩＤ［１０２３］のノード装置（ノードＧ）に送信する（ステップＳ２０）。ここでは、メッセージ送信処理が成功したものとする。
【００８８】
次いで、制御部１１は、メッセージ送信処理が成功したか否かを判断し（ステップＳ２１）、ここでは存在確認メッセージの送信処理が成功したため、そのように判断する（ステップＳ２１；ＹＥＳ）。次いで、制御部１１は、列数０の値に１を足して列数１とし（ステップＳ２２）、ステップＳ１７に戻る。
【００８９】
次いで、制御部１１は、ステップＳ１７；ＹＥＳ、ステップＳ１８；ＮＯ、ステップＳ１９；ＹＥＳ、ステップＳ２０、ステップＳ２１；ＹＥＳを経て、［レベル数２］［列数１］に記憶されているノードＩＤ［１１２０］のノード装置（ノードＤ）に存在確認メッセージを送信し、列数１の値に１を足して列数２とし（ステップＳ２２）、ステップＳ１７に戻る。
【００９０】
次いで、制御部１１は、ステップＳ１７；ＹＥＳを経て、ステップＳ１８において［レベル数２］［列数２］のエリアは自ノード装置であると判断し（ステップＳ１８；ＹＥＳ）、列数２の値に１を足して列数３とし（ステップＳ２２）、ステップＳ１７に戻る。
【００９１】
次いで、制御部１１は、ステップＳ１７；ＹＥＳ、ステップＳ１８；ＮＯ、ステップＳ１９；ＹＥＳ、ステップＳ２０、ステップＳ２１；ＹＥＳを経て、［レベル数２］［列数３］に記憶されているノードＩＤ［１３２３］のノード装置（ノードＦ）に存在確認メッセージを送信し、列数３の値に１を足して列数４とし（ステップＳ２２）、ステップＳ１７に戻る。
【００９２】
ここで、制御部１１は、決定した列数がテーブル全体の列数以下か否かを判断し（ステップＳ１７）、決定した列数４がテーブル全体の列数３以下でないため（ステップＳ１７；ＮＯ）、参加メッセージの転送先（送信先）のノード装置を認定する（ステップＳ２３）。このとき、参加要求ノードであるノードＺのノードＩＤ［１０１３］に最も近いノード装置がノードＩＤ［１０２３］のノードＧであるため、ノードＧを参加メッセージの転送先として認定する。
【００９３】
次いで、制御部１１は、自ノード装置がルートノード、すなわち、参加要求ノードであるノードＺのノードＩＤ［１０１３］に最も近いノード装置であるか否かを判断する（ステップＳ２４）。上述のように、ここでは、参加要求ノードであるノードＺのノードＩＤ［１０１３］に最も近いノード装置がノードＩＤ［１０２３］のノードＧであり、自ノード装置がルートノードではないため、制御部１１はそのように判断し（ステップＳ２４；ＮＯ）、注目してきたレベル数に１を足したレベル数の情報を領域指定情報として付加した参加メッセージを作成し、転送先として認定した他のノード装置に転送し（ステップＳ２５）、元々の処理の流れに戻る（リターン）。ここでは、制御部１１は、注目してきたレベル数が２であり、これに１を足したレベル数３の領域指定情報を参加メッセージに付加し、転送先のノードＧへ送信し、元々の処理の流れに戻る。
【００９４】
ここで、ステップＳ２０におけるメッセージ送信処理が失敗に終わった場合、制御部１１は、ステップＳ２１において、メッセージ送信処理が成功でないと判断し（ステップＳ２１；ＮＯ）、該当する［レベル数］［列数］のノード装置１のＩＰアドレス等の情報をテーブルから削除し（ステップＳ２６）、次のステップＳ２２に戻る。
【００９５】
（ノードＧ）
次いで、ノードＧにおいて、ノードＥから参加メッセージを転送され、受信した場合のメッセージ受信処理を以下に説明する。ノードＧは、図６（Ｃ）に示すテーブルを記憶しているものとする。
【００９６】
ノードＧの制御部１１は、参加メッセージを受信し、上述の基本処理におけるメッセージ受信処理（ステップＳ４）がスタートすると、このメッセージ受信処理を開始する（スタート）。ステップＳ１１において、ノードＧの制御部１１が受信したメッセージは参加メッセージであると判断すると（ステップＳ１１；ＹＥＳ）、当該参加メッセージに含まれるレベル３を示す領域指定情報を取得する（ステップＳ１４）。制御部１１は、この参加メッセージの領域指定情報に応じて、テーブルにおけるレベル数を３と決定する（ステップＳ１５）。
【００９７】
次いで、制御部１１は、テーブルにおける列数（各レベルの注目桁Ｘ）を０と決定し（ステップＳ１６）、ノードＧのテーブルを示す図６（Ｃ）におけるレベル３、注目桁Ｘ＝０のエリアに注目する。制御部１１は、決定した列数がテーブル全体の列数以下か否かを判断し（ステップＳ１７）、決定した列数０がテーブル全体の列数３以下であるため（ステップＳ１７；ＹＥＳ）、注目する［レベル数］［列数］に該当するノード装置が自ノード装置か否かを判断する（ステップＳ１８）。
【００９８】
ここでは、図６（Ｃ）に示すように、注目する［レベル数３］［列数０］に該当するノード装置が自ノード装置ではないため、そのように判断し（ステップＳ１８；ＮＯ）、次いで、注目する［レベル数］［列数］に他のノード装置の情報が記憶されているか否かを判断する（ステップＳ１９）。
【００９９】
ここでは、［レベル数３］［列数０］に他のノード装置が記憶されていないため、そのように判断して（ステップＳ１９；ＮＯ）、このエリアを飛ばし、列数０の値に１を足して列数１とし（ステップＳ２２）、ステップＳ１７に戻る。
【０１００】
次いで、制御部１１は、ステップＳ１７；ＹＥＳ、ステップＳ１８；ＮＯ、ステップＳ１９；ＮＯを経て、［レベル数３］［列数１］に他のノード装置が記憶されていないため、このエリアを飛ばし、列数１の値に１を足して列数２とし（ステップＳ２２）、ステップＳ１７に戻る。
【０１０１】
次いで、制御部１１は、ステップＳ１７；ＹＥＳを経て、ステップＳ１８において［レベル数２］［列数２］のエリアは自ノード装置であると判断し（ステップＳ１８；ＹＥＳ）、列数２の値に１を足して列数３とし（ステップＳ２２）、ステップＳ１７に戻る。
【０１０２】
次いで、制御部１１は、ステップＳ１７；ＹＥＳ、ステップＳ１８；ＮＯ、ステップＳ１９；ＹＥＳ、ステップＳ２０、ステップＳ２１；ＹＥＳを経て、［レベル数２］［列数３］に記憶されているノードＩＤ［１０３２］のノード装置（ノードＨ）に存在確認メッセージを送信し、列数３の値に１を足して列数４とし（ステップＳ２２）、ステップＳ１７に戻る。
【０１０３】
ここで、制御部１１は、決定した列数がテーブル全体の列数以下か否かを判断し（ステップＳ１７）、決定した列数４がテーブル全体の列数３以下でないため（ステップＳ１７；ＮＯ）、参加メッセージの転送先（送信先）のノード装置を認定する（ステップＳ２３）。このとき、参加要求ノードであるノードＺのノードＩＤ［１０１３］に最も近いノード装置がノードＩＤ［１０２３］の自ノード装置（ノードＧ）であるため、ノードＧを参加メッセージの転送先として認定する。
【０１０４】
次いで、制御部１１は、自ノード装置がルートノード、すなわち、参加要求ノードであるノードＺのノードＩＤ［１０１３］に最も近いノード装置であるか否かを判断する（ステップＳ２４）。上述のように、ここでは、自ノード装置（ノードＧ）がルートノードであるため、制御部１１はそのように判断し（ステップＳ２４；ＹＥＳ）、元々の処理の流れに戻る（リターン）。
【０１０５】
このようにして、参加要求ノードであるノードＺのＤＨＴルーティングテーブルを作成するための存在確認メッセージの送信処理と、参加メッセージの転送処理と、が終了する。
【０１０６】
（ノードＡ）
一方、ノードＡにおいて、コンタクトノードＢから送信された存在確認メッセージを受信した場合のメッセージ受信処理を以下に説明する。
【０１０７】
ノードＡの制御部１１は、存在確認メッセージを受信し、上述の基本処理におけるメッセージ受信処理（ステップＳ４）がスタートすると、このメッセージ受信処理を開始する（スタート）。ここでは、ノードＢからの存在確認メッセージを受信した前提で説明する。
【０１０８】
メッセージ受信処理が開始されると、制御部１１は、受信したメッセージが参加メッセージか否かを判断する（ステップＳ１１）。ここでは、受信したメッセージは存在確認メッセージであるため、制御部１１は、受信したメッセージが参加メッセージでないと判断し（ステップＳ１１；ＮＯ）、次いで、受信したメッセージが存在確認メッセージか否かを判断する（ステップＳ１２）。
【０１０９】
制御部１１は、受信したメッセージは存在確認メッセージであると判断し（ステップＳ１２；ＹＥＳ）、存在確認メッセージに付加された参加要求ノードであるノードＺのＩＰアドレスを取得し、ノードＺへ応答メッセージを送信し（ステップＳ２７）、元々の処理の流れに戻る（リターン）。
【０１１０】
その他、ノード装置１が受信したメッセージが参加メッセージ、存在確認メッセージ及び応答メッセージのいずれでもない場合には、ステップＳ１１；ＮＯ、ステップＳ１２；ＮＯ、ステップＳ１３；ＮＯと判断され、他のメッセージを受信した場合の処理を行い（ステップＳ３０）、元々の処理の流れに戻る（リターン）。
【０１１１】
（３）ノード装置における他のノード装置のテーブルへの登録処理
図１０及び上述の図７を参照してノードＺにおける他のノード装置１の登録処理について説明する。なお、ノードＺは、ノードＡから応答メッセージを受信したものとして、他のノード装置１の登録処理について説明する。
【０１１２】
ノードＺの制御部１１は、上述の基本処理における他のノード装置１の登録処理（ステップＳ５）がスタートすると、ノードＡのテーブルへの登録処理を開始する（スタート）。
【０１１３】
テーブルへの登録処理が開始されると、制御部１１は、受信した応答メッセージから送信元ノード装置であるノードＡの情報、具体的にはＩＰアドレス等の情報を取得する（ステップＳ３１）。次いで、制御部１１は、取得したＩＰアドレスから、テーブルにおける登録するエリアを認定し、登録し（ステップＳ３２）、元々の処理の流れに戻る（リターン）。ノードＡは、図６（Ａ）に示すように、ノードＩＤが０２１１であるため、図７において、その登録するエリアはレベル１、各レベルの注目桁Ｘ＝０である。ノードＺの制御部１１は、このノードＡの情報をテーブルのレベル１、各レベルの注目桁Ｘ＝０のエリアに登録する。
【０１１４】
なお、その後、ノードＺは、ノードＥ、ノードＣ、ノードＧ、ノードＤ、ノードＦ、ノードＨから次々に応答メッセージを受信することとなる。これらのノード装置からの応答メッセージに対応し、上述のステップＳ３１、Ｓ３２により各ノード装置１の情報をテーブルに登録し、図７に示すＤＨＴルーティングテーブルを作成し、記憶する。また、ノードＺは、上述のノードＢに参加メッセージを送信した際のように、他のノード装置１と通信が確立した時点で、当該他のノード装置１が存在していることを確認し、当該他のノード装置１の情報をテーブルに登録することもできる。
【０１１５】
［４．変形形態］
上述の実施形態において、ノード装置１の記憶部１２は、ＤＨＴルーティングテーブルに他のノード装置１のＩＰアドレスとノードＩＤと対応付けて記憶している形態としたが、これに限定されず、少なくとも情報の転送先の候補となるノード装置１を示すノード情報を記憶していればよい。
【０１１６】
ただし、ノード装置１の記憶手段としての記憶部１２は、ＤＨＴルーティングテーブルのように、上記ノード情報と、ノード情報に対応する固有の識別情報と、を識別情報の属する領域毎に対応付けて記憶していることが好ましい。この場合には、上述の領域指定情報を用いることにより、参加要求ノードは、その識別情報に対して適した識別情報の各領域に属する各ノード装置のノード情報を取得し、バランスよく記憶することができる。さらに、ＤＨＴのルーティングテーブルのように、識別情報の領域は、識別情報の規則に従って複数の領域に分かれており、自ノード装置のみが属する領域の存在する段階まで、自ノード装置が属する領域が識別情報の規則に従ってさらに複数の領域に分かれていることが好ましい。
【０１１７】
ここで、ノード情報は、ＩＰアドレスの他、ポート番号等を含んでいてもよく、特に限定されない。識別情報はノードＩＤに限定されず、ノード情報に対応する他の固有の識別情報であってもよい。
【０１１８】
上述の実施形態において、ノード装置１の制御部１１は、参加メッセージを受信した場合に、その転送先のノード装置１を記憶しているか否かを判別し、記憶している場合には当該ノード装置１に参加メッセージを転送する形態としたが（ステップＳ２３、Ｓ２４；ＮＯ、Ｓ２５）、これに限定されない。ノード装置１の参加要求情報転送手段としての制御部１１は、オーバーレイネットワークへの参加要求を示し、かつ、参加要求する参加要求ノードのノード情報を含む参加要求情報を受信した場合に、参加要求ノードのノード情報に応じた転送先のノード装置を示すノード情報を記憶しているか否かを判別し、当該転送先のノード装置を示すノード情報を記憶している場合には当該ノード装置に参加要求情報を転送すればよい。
【０１１９】
上述の実施形態において、ノード装置１の制御部１１は、テーブルにおける一つのレベルに登録されているノード装置１に存在確認メッセージを送信する形態としたが（図６（Ａ）乃至図６（Ｃ）の▲印参照）、これに限定されない。ノード装置１の存在確認情報送信手段としての制御部１１は、参加要求ノード装置のノード情報に応じた転送先以外のノード装置を示すノード情報を記憶しているか否かを判別し、当該転送先以外のノード装置を示すノード情報を記憶している場合には当該ノード装置に参加要求ノードのノード情報を含む存在確認メッセージを送信すればよい。具体的に、制御部１１は、複数のレベルに登録されているノード装置１に存在確認メッセージを送信する形態としてもよいし、任意に選択される登録されたノード装置１に存在確認メッセージを送信する形態としてもよい。また、制御部１１は、上述の転送先以外のノード装置１に存在確認メッセージを送信していれば、参加要求ノード装置１のノード情報に応じた転送先のノード装置１に存在確認メッセージを送信してもよい。
【０１２０】
上述の実施形態において、ノード装置１の制御部１１は、参加メッセージを初めに送信する際や参加メッセージを転送する際に、ＤＨＴルーティングテーブルにおけるレベル数の情報である領域指定情報を送信する形態としたが（ステップＳ１、Ｓ２５）、これに限定されない。ノード装置１の参加要求情報転送手段としての制御部１１は、参加要求情報を転送する際に、記憶手段における所定の領域を指定した領域指定情報を当該参加要求情報に付加すればよく、領域指定情報は、レベル数の情報に限定されない。また、領域指定情報を用いた場合に、存在確認情報送信手段としての制御部１１は、受信した参加要求情報に領域指定情報が付加されているか否か及び領域指定情報の内容に応じて（ステップＳ１４、Ｓ１５）、送信先となる他のノード装置のノード情報を記憶している場合には当該ノード装置に存在確認情報を送信する。
【０１２１】
さらに、上述の実施形態のように、存在確認情報送信手段としての制御部１１は、受信した参加要求情報に領域指定情報が付加されている場合には、記憶している識別情報の領域指定情報に対応する領域に属する他のノード装置に存在確認情報を送信する（ステップＳ１４、Ｓ１５、Ｓ２０）ことが好ましい。なお、存在確認情報送信手段としての制御部１１は、参加ノードが領域指定情報を用いなかった場合等、受信した参加要求情報に領域指定情報が付加されていない場合には、記憶している識別情報の最も大きな領域（上記実施形態ではレベル１）に属する他のノード装置に存在確認情報を送信する（ステップＳ２０）ことが好ましい。このとき、参加要求情報転送手段としての制御部１１は、受信した参加要求情報に領域指定情報が付加されている場合には、当該領域指定情報に対応する識別情報の領域よりも小さな範囲に対応する領域を指定した領域指定情報を参加要求情報に付加する（ステップＳ１４、Ｓ１５、Ｓ２５）。また、参加要求情報転送手段としての制御部１１は、受信した参加要求情報に領域指定情報が付加されていない場合には、識別情報の最も大きな領域（上述の実施形態ではレベル１）の次の段階の領域（上述の実施形態ではレベル２）を指定した領域指定情報を参加要求情報に付加する（ステップＳ２５）。
【０１２２】
本発明の情報通信システム等は、上述の領域指定情報を用いずに参加要求情報の転送処理や存在確認情報の送信処理、返信情報の送信処理を行うこともできる。
【０１２３】
上述の実施形態においては、ノード装置１が情報通信システムＳに参加する際の各ノード装置やシステム全体の動作は、図８乃至図１０を用いて説明したものに限定されず、ステップＳ２３、Ｓ２４、Ｓ２５の動作により参加要求情報転送手段を機能させたノード装置１は、さらに存在確認メッセージの送信先であるノード装置１のノード情報を参加要求ノードに送信する形態としてもよい。この動作は、ノード情報送信手段としての制御部１１により行われる。この場合には、参加要求ノードが二つのノード装置から他のノード装置のノード情報を取得でき、より正確なＤＨＴルーティングテーブルを記憶できることとなる。
【０１２４】
上述の実施形態においては、存在確認メッセージを受信したノードＡ等が応答メッセージを参加要求ノード（ノードＺ）に送信する形態としたが、これに限定されない。ノード装置１の返信情報送信手段としての制御部１１は、少なくとも存在確認情報を受信した場合に、参加要求ノードに返信情報を送信すればよい。例えば、ノード装置１の返信情報送信手段としての制御部１１は、さらに、参加要求情報を受信した場合に、参加要求ノードに返信情報を送信する形態としてもよい。
【０１２５】
また、上述のノード装置１の各動作に対応するプログラムをフレキシブルディスク又はハードディスク等の情報記録媒体に記録しておき、或いはインターネット等のネットワークを介して取得して記録しておき、これをマイクロコンピュータ等により読み出して実行することにより、当該マイクロコンピュータを各実施形態に係る制御部１１として機能させることも可能である。
【図面の簡単な説明】
【０１２６】
【図１】本実施形態に係る情報通信システムにおける各ノード装置の接続態様の一例を示す図である。
【図２】ＤＨＴによるＩＤ空間及びルーティングテーブルが作成される様子の一例を示す図である。
【図３】（Ａ）レベル１のテーブルの一例である。（Ｂ）レベル２のテーブルの一例である。（Ｃ）レベル３のテーブルの一例である。（Ｄ）完成したルーティングテーブルの一例である。
【図４】ノード装置１の概要構成例を示す図である。
【図５】ノード装置１がオーバーレイネットワークに参加した後にＤＨＴルーティングテーブルを作成する態様を説明する図である。
【図６】（Ａ）〜（Ｃ）は、他のノード装置１が記憶するＤＨＴルーティングテーブルを示す各図である。
【図７】参加要求ノードであるノードＺが作成するＤＨＴルーティングテーブルを示す図である。
【図８】ノード装置１における基本処理を示すフローチャートである。
【図９】ノード装置１におけるメッセージ受信処理を示すフローチャートである。
【図１０】ノード装置１における他のノード装置１のテーブルへの登録処理を示すフローチャートである。
【符号の説明】
【０１２７】
１  ノード装置
８  ネットワーク
９  オーバーレイネットワーク
１１  制御部
１２  記憶部
１３  バッファメモリ
１４  デコーダ部
１５  映像処理部
１６  表示部
１７  音声処理部
１８  スピーカ
２０  通信部
２１  入力部
２２  バス
Ｓ  情報通信システム
【図１】
0004539603.tif 000002
【図２】
0004539603.tif 000003
【図３】
0004539603.tif 000004
【図４】
0004539603.tif 000005
【図５】
0004539603.tif 000006
【図６】
0004539603.tif 000007
【図７】
0004539603.tif 000008
【図８】
0004539603.tif 000009
【図９】
0004539603.tif 000010
【図１０】
0004539603.tif 000011