(57)【要約】【課題】効率的な経路でのノード装置間の通信を行って、ネットワークの通信負荷を低減すること。【解決手段】ノード装置１は、ネットワークに接続されたコンタクトサーバ１０へ向けてメッセージを送信し、このメッセージをコンタクトサーバ１０まで中継する中継装置のネットワークアドレスを経路情報として取得する。各ノード装置は、取得しようとするコンテンツデータを記憶している他のノード装置のうち、経路情報の一致度が高い他のノード装置を優先的に選択し、このように選択した他のノード装置からコンテンツデータを取得する。【選択図】図３
2011055139.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンテンツデータを分散して保存する複数のノード装置から構成される情報通信システムであって、
前記ノード装置は、
ネットワークに接続された特定装置へ向けてメッセージを送信するメッセージ送信手段と、
前記メッセージ送信手段により送信されたメッセージを前記特定装置まで中継する中継装置のネットワークアドレスを示す第１中継アドレスを取得する情報取得手段と、
前記複数のノード装置に分散して記憶されたコンテンツデータの中から、所定のコンテンツデータを要求する要求手段と、
前記要求手段により要求されるコンテンツデータを記憶している各ノード装置から前記特定装置までのネットワーク上の経路に位置する前記中継装置のネットワークアドレスを示す第２中継アドレスを取得する第２情報取得手段と、
前記コンテンツデータを記憶している複数のノード装置のうち、前記第２中継アドレスと、前記第１中継アドレスとの一致度が高いノード装置から前記所定のコンテンツデータを取得するコンテンツ取得手段と、
を備えることを特徴とする情報通信システム。
【請求項２】
前記メッセージ送信手段は、前記メッセージにメッセージの最大中継回数の情報を含めると共に、前記最大中継回数の情報を変えながら前記メッセージを順次送信し、
前記情報取得手段は、中継された回数が前記最大中継回数となったメッセージを受信した前記中継装置からそれぞれ返信されるメッセージから当該中継装置のネットワークアドレスを取得する、
ことを特徴とする請求項１に記載の情報通信システム。
【請求項３】
前記情報通信システムは、
前記コンテンツデータを記憶している他のノード装置のネットワークアドレスを示す第１アドレスと、当該他のノード装置夫々から前記特定装置までのネットワーク上の経路に位置する前記中継装置のネットワークアドレスを示す第３中継アドレスとを記憶する記憶手段と、
前記要求手段によりコンテンツデータを要求したノード装置の前記第１中継アドレスを取得する第３情報取得手段と、
前記記憶手段に記憶された前記第３中継アドレスと、前記第３情報取得手段により取得された前記第１中継アドレスとの一致度が高いノード装置の前記第１アドレスを、前記送信要求を行ったノード装置へ送信するアドレス送信手段と、
を備える第２ノード装置を含むことを特徴とする請求項１または請求項２に記載の情報通信システム。
【請求項４】
前記ノード装置は、
複数の他のノード装置のうち一部のノード装置のネットワークアドレスを示す第２アドレスと、前記一部のノード装置から前記特定装置までのネットワーク上の経路に位置する前記中継装置のネットワークアドレスを示す第４中継アドレスとを記憶するアドレス記憶手段と、
前記情報取得手段により取得された前記第１中継アドレスと、前記ノード装置のネットワークアドレスを示す第２アドレスとを、他のノード装置へ送信する情報送信手段と、
前記他のノード装置から送信された第１中継アドレスと第２アドレスとを受信する受信手段と、
前記受信手段により受信された前記第１中継アドレスのうち、前記情報取得手段で取得した第１中継アドレスとの一致度が高い第１中継アドレスを送信した前記他のノード装置の第２アドレスを優先して、前記アドレス記憶手段に記憶する記憶処理手段と、
を備えたことを特徴とする請求項１から請求項３のいずれか一項に記載の情報通信システム。
【請求項５】
前記記憶処理手段は、前記受信手段により受信された前記第１中継アドレスと前記情報取得手段で取得した第１中継アドレスとの一致度と、前記アドレス記憶手段に記憶している前記第４中継アドレスと前記情報取得手段で取得した第１中継アドレスとの一致度とを比較し、前記受信手段により受信された前記第１中継アドレスの方が一致度が高いときには、当該第１中継アドレスとの一致度が低い前記第４中継アドレスを前記アドレス記憶手段から消去し、前記受信手段により受信された前記第１中継アドレスを前記アドレス記憶手段に記憶することを特徴とする請求項４に記載の情報通信システム。
【請求項６】
ネットワークに接続された特定装置へ向けてメッセージを送信するメッセージ送信手段と、
前記メッセージ送信手段により送信されたメッセージを前記特定装置まで中継する中継装置のネットワークアドレスを示す第１中継アドレスを取得する情報取得手段と、
複数のコンテンツデータが複数のノード装置に分散して記憶されたコンテンツデータの中から、所定のコンテンツデータを要求する要求手段と、
前記要求手段により要求されるコンテンツデータを記憶している各ノード装置から前記特定装置までのネットワーク上の経路に位置する前記中継装置のネットワークアドレスを示す第２中継アドレスを取得する第２情報取得手段と、
前記コンテンツデータを記憶している複数のノード装置のうち、前記第２中継アドレスと、前記第１中継アドレスとの一致度が高いノード装置から前記所定のコンテンツデータを取得するコンテンツ取得手段と、
を備えることを特徴とするノード装置。
【請求項７】
複数のコンテンツデータを分散して保存する複数のノード装置から構成される情報通信システムのノード装置は、
ネットワークに接続された特定装置へ向けてメッセージを送信するメッセージ送信ステップと、
メッセージ送信手段により送信されたメッセージを前記特定装置まで中継する中継装置のネットワークアドレスを示す第１中継アドレスを取得する情報取得ステップと、
前記複数のノード装置に分散して記憶されたコンテンツデータの中から、所定のコンテンツデータを要求する要求ステップと、
前記要求ステップにより要求されるコンテンツデータを記憶している各ノード装置から前記特定装置までのネットワーク上の経路に位置する前記中継装置のネットワークアドレスを示す第２中継アドレスをそれぞれ取得する第２情報取得ステップと、
前記コンテンツデータを記憶している複数のノード装置のうち、前記第２中継アドレスと、前記第１中継アドレスとの一致度が高いノード装置から前記所定のコンテンツデータを取得するコンテンツ取得ステップと、
を実行することを特徴とするコンテンツ取得方法。
【請求項８】
複数のコンテンツデータを分散して保存する複数のノード装置から構成される情報通信システムのノード装置に、
ネットワークに接続された特定装置へ向けてメッセージを送信するメッセージ送信ステップと、
メッセージ送信手段により送信されたメッセージを前記特定装置まで中継する中継装置のネットワークアドレスを示す第１中継アドレスを取得する情報取得ステップと、
前記複数のノード装置に分散して記憶されたコンテンツデータの中から、所定のコンテンツデータを要求する要求ステップと、
前記要求ステップにより要求されるコンテンツデータを記憶している各ノード装置から前記特定装置までのネットワーク上の経路に位置する前記中継装置のネットワークアドレスを示す第２中継アドレスをそれぞれ取得する第２情報取得ステップと、
前記コンテンツデータを記憶している複数のノード装置のうち、前記第２中継アドレスと、前記第１中継アドレスとの一致度が高いノード装置から前記所定のコンテンツデータを取得するコンテンツ取得ステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコンテンツデータを分散して保存する複数のノード装置から構成される情報通信システムに関する。
【背景技術】
【０００２】
従来より、複数のコンテンツデータを分散して保存する複数のノード装置から構成された情報通信システムが知られている。この情報通信システムでは、各ノード装置はインターネットなどのネットワークに接続され、このネットワークを介してノード装置間でコンテンツデータの送受信が行われる。
【０００３】
この情報通信システムでは、一のノード装置から他のノード装置へ向けて送信されるコンテンツデータは、ネットワーク上の中継装置（例えば、ルータ）により中継される。そして、中継されたコンテンツデータは、他のノード装置で受信される。しかし、コンテンツデータを送受信するノード間に多数の中継装置があると、中継数が増えてネットワークの通信負荷が増大してしまう。
【０００４】
そこで、通信負荷の少ない通信経路を選択するために、コンテンツデータを保存しているノード装置が所属しているＡＳ（Ａｕｔｏｎｏｍｏｕｓ  Ｓｙｓｔｅｍ）番号が用いられる技術が知られている（例えば、特許文献１参照）。ＡＳ番号は、インターネット内にある複数の組織が運用するネットワークを識別するための番号である。
【０００５】
また、ヒントサーバ（トラッカー）を用いる技術も知られている。この技術では、ヒントサーバがネットワークのトポロジー情報を記憶している。そして、ノード装置は、コンテンツデータを取得する際に、ヒントサーバにアクセスして、通信経路を決定し、中継装置による中継数が少ないノード装置からコンテンツデータを取得する。これにより、効率的な経路でのノード装置間の通信を実現している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−２７７３３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記特許文献１に記載されているように、ＡＳ番号を用いて、通信経路を決定しようとしても、ＡＳ番号は全ての管理者に割り当てられているとは限らない。
【０００８】
また、ヒントサーバを用いる技術では、ヒントサーバの設置コストがかかってしまうことになる。しかも、コンテンツデータを取得しようとする度に、ヒントサーバにアクセスするのでは、ヒントサーバへの処理負荷が集中し、ヒントサーバの処理負荷が大きい。また、ヒントサーバが記憶する通信経路情報が膨大になると、ヒントサーバの記憶容量が不足するという問題もある。
【０００９】
本発明は、上述したような課題に鑑みてなされたものであり、効率的な経路でのノード装置間の通信を行って、ネットワークの通信負荷を低減することができる情報通信システム、ノード装置及びそのプログラム、並びにコンテンツ取得方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、請求項１に係る発明は、複数のコンテンツデータを分散して保存する複数のノード装置から構成される情報通信システムであって、前記ノード装置は、ネットワークに接続された特定装置へ向けてメッセージを送信するメッセージ送信手段と、前記メッセージ送信手段により送信されたメッセージを前記特定装置まで中継する中継装置のネットワークアドレスを示す第１中継アドレスを取得する情報取得手段と、前記複数のノード装置に分散して記憶されたコンテンツデータの中から、所定のコンテンツデータを要求する要求手段と、前記要求手段により要求されるコンテンツデータを記憶している各ノード装置から前記特定装置までのネットワーク上の経路に位置する前記中継装置のネットワークアドレスを示す第２中継アドレスを取得する第２情報取得手段と、前記コンテンツデータを記憶している複数のノード装置のうち、前記第２中継アドレスと、前記第１中継アドレスとの一致度が高いノード装置から前記所定のコンテンツデータを取得するコンテンツ取得手段と、を備えることを特徴とする。
【００１１】
また、請求項２に係る発明は、請求項１に記載の情報通信システムにおいて、前記メッセージ送信手段は、前記メッセージにメッセージの最大中継回数の情報を含めると共に、前記最大中継回数の情報を変えてながら前記メッセージを順次送信し、前記情報取得手段は、中継された回数が前記最大中継回数となったメッセージを受信した前記中継装置からそれぞれ返信されるメッセージから当該中継装置のネットワークアドレスを取得することを特徴とする。
【００１２】
また、請求項３に係る発明は、請求項１または請求項２に記載の情報通信システムにおいて、前記情報通信システムは、前記コンテンツデータを記憶している他のノード装置のネットワークアドレスを示す第１アドレスと、当該他のノード装置夫々から前記特定装置までのネットワーク上の経路に位置する前記中継装置のネットワークアドレスを示す第３中継アドレスとを記憶する記憶手段と、前記要求手段によりコンテンツデータを要求したノード装置の前記第１中継アドレスを取得する第３情報取得手段と、前記記憶手段に記憶された前記第３中継アドレスと、前記第３情報取得手段により取得された前記第１中継アドレスとの一致度が高いノード装置の前記第１アドレスを、前記送信要求を行ったノード装置へ送信するアドレス送信手段と、を備える第２ノード装置を含むことを特徴とする。
【００１３】
また、請求項４に係る発明は、請求項１から請求項３のいずれか一項に記載の情報通信システムにおいて、前記ノード装置は、複数の他のノード装置のうち一部のノード装置のネットワークアドレスを示す第２アドレスと、前記一部のノード装置から前記特定装置までのネットワーク上の経路に位置する前記中継装置のネットワークアドレスを示す第４中継アドレスとを記憶するアドレス記憶手段と、前記情報取得手段により取得された前記第１中継アドレスと、前記ノード装置のネットワークアドレスを示す第２アドレスとを、他のノード装置へ送信する情報送信手段と、前記他のノード装置から送信された第１中継アドレスと第２アドレスとを受信する受信手段と、前記受信手段により受信された前記第１中継アドレスのうち、前記情報取得手段で取得した第１中継アドレスとの一致度が高い第１中継アドレスを送信した前記他のノード装置の第２アドレスを優先して、前記アドレス記憶手段に記憶する記憶処理手段と、を備えたことを特徴とする。
【００１４】
また、請求項５に係る発明は、請求項４に記載の情報通信システムにおいて、前記記憶処理手段は、前記受信手段により受信された前記第１中継アドレスと前記情報取得手段で取得した第１中継アドレスとの一致度と、前記アドレス記憶手段に記憶している前記第４中継アドレスと前記情報取得手段で取得した第１中継アドレスとの一致度とを比較し、前記受信手段により受信された前記第１中継アドレスの方が一致度が高いときには、当該第１中継アドレスとの一致度が低い前記第４中継アドレスを前記アドレス記憶手段から消去し、前記受信手段により受信された前記第１中継アドレスを前記アドレス記憶手段に記憶することを特徴とする。
【００１５】
また、請求項６に係る発明は、ノード装置において、ネットワークに接続された特定装置へ向けてメッセージを送信するメッセージ送信手段と、前記メッセージ送信手段により送信されたメッセージを前記特定装置まで中継する中継装置のネットワークアドレスを示す第１中継アドレスを取得する情報取得手段と、複数のコンテンツデータが複数のノード装置に分散して記憶されたコンテンツデータの中から、所定のコンテンツデータを要求する要求手段と、前記要求手段により要求されるコンテンツデータを記憶している各ノード装置から前記特定装置までのネットワーク上の経路に位置する前記中継装置のネットワークアドレスを示す第２中継アドレスを取得する第２情報取得手段と、前記コンテンツデータを記憶している複数のノード装置のうち、前記第２中継アドレスと、前記第１中継アドレスとの一致度が高いノード装置から前記所定のコンテンツデータを取得するコンテンツ取得手段と、を備えることを特徴とする。
【００１６】
また、請求項７に係る発明は、コンテンツ取得方法において、複数のコンテンツデータを分散して保存する複数のノード装置から構成される情報通信システムのノード装置は、ネットワークに接続された特定装置へ向けてメッセージを送信するメッセージ送信ステップと、メッセージ送信手段により送信されたメッセージを前記特定装置まで中継する中継装置のネットワークアドレスを示す第１中継アドレスを取得する情報取得ステップと、前記複数のノード装置に分散して記憶されたコンテンツデータの中から、所定のコンテンツデータを要求する要求ステップと、前記要求ステップにより要求されるコンテンツデータを記憶している各ノード装置から前記特定装置までのネットワーク上の経路に位置する前記中継装置のネットワークアドレスを示す第２中継アドレスをそれぞれ取得する第２情報取得ステップと、前記コンテンツデータを記憶している複数のノード装置のうち、前記第２中継アドレスと、前記第１中継アドレスとの一致度が高いノード装置から前記所定のコンテンツデータを取得するコンテンツ取得ステップと、を実行することを特徴とする。
【００１７】
また、請求項８に係る発明は、プログラムにおいて、複数のコンテンツデータを分散して保存する複数のノード装置から構成される情報通信システムのノード装置に、ネットワークに接続された特定装置へ向けてメッセージを送信するメッセージ送信ステップと、メッセージ送信手段により送信されたメッセージを前記特定装置まで中継する中継装置のネットワークアドレスを示す第１中継アドレスを取得する情報取得ステップと、前記複数のノード装置に分散して記憶されたコンテンツデータの中から、所定のコンテンツデータを要求する要求ステップと、前記要求ステップにより要求されるコンテンツデータを記憶している各ノード装置から前記特定装置までのネットワーク上の経路に位置する前記中継装置のネットワークアドレスを示す第２中継アドレスをそれぞれ取得する第２情報取得ステップと、前記コンテンツデータを記憶している複数のノード装置のうち、前記第２中継アドレスと、前記第１中継アドレスとの一致度が高いノード装置から前記所定のコンテンツデータを取得するコンテンツ取得ステップと、を実行させることを特徴とする。
【発明の効果】
【００１８】
本発明によれば、各ノード装置は、取得しようとするコンテンツデータを記憶している他のノード装置のうちネットワーク的に近い他のノード装置を優先的に選択し、このように選択した他のノード装置からコンテンツデータを取得する。従って、ネットワークでの総トラフィック量を軽減することができ、通信負荷を軽減することが可能となる。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態に係る情報通信システムの複数のノード装置及びコンタクトサーバの接続態様の一例を示す図である。
【図２】ノード装置の経路情報を取得する動作の説明図である。
【図３】ノード装置の経路情報を取得する動作の説明図である。
【図４】ノード装置の構成を示す図である。
【図５】ノード装置におけるメイン処理のフローチャートである。
【図６】ノード装置における経路情報取得処理のフローチャートである。
【図７】ノード装置におけるコンテンツダウンロード処理のフローチャートである。
【図８】ノード装置におけるメッセージ処理のフローチャートである。
【図９】ノード装置における接続元ノード装置処理のフローチャートである。
【図１０】ノード装置における接続先ノード装置処理のフローチャートである。
【図１１】ルーティングテーブルのデータ構造を示す図である。
【図１２】ノード情報のデータ構造を示す図である。
【発明を実施するための形態】
【００２０】
［１．情報通信システムＳの構成等］
まず始めに、図１を参照して、本発明の一実施形態における情報通信システムの概要について説明する。図１は、本実施形態における情報通信システムＳの各ノード装置及びコンタクトサーバ（特定装置の一例）の接続態様の一例を示す図である。
【００２１】
図１の下部枠５１内に示すように、ＩＸ（Internet eＸchange）３、ＩＳＰ（Internet
Ｓervice Provider）４ａ〜４ｄ、ＤＳＬ（Digital Subscriber Line）回線事業者の装置５ａ，５ｂ、ＦＴＴＨ（Fiber To The Home）回線事業者の装置６ａ、及び通信回線７等によって、インターネット等のネットワーク（現実世界のネットワーク）８が構築されている。通信回線７として、例えば、電話回線や光ケーブル等がある。
【００２２】
情報通信システムＳは、コンテンツデータを配信するためのシステムである。図１の上部枠５０内に示すように、ネットワーク８を介して相互に接続された複数のノード装置１ａ，１ｂ，１ｃ，１ｄ，・・・と、コンタクトサーバ１０とを備えて、情報通信システムＳは構成される。これらの装置には、各装置を示す情報としての固有の製造番号（例えば、ＭＡＣアドレス）及びネットワークアドレスが割り当てられている。なお、製造番号及びネットワークアドレスは、複数の装置間で重複しないものである。ネットワーク８がインターネットの場合、ネットワークアドレスは、ＩＰ（Internet Protocol）アドレスである。また、以下の説明において、ノード装置１ａ，１ｂ，１ｃ，１ｄ，・・のうち何れかのノード装置又は全てのノード装置を示す場合には、便宜上、ノード装置１という場合がある。また、コンテンツデータは、例えば、映画データ、音楽データ、文書データなどである。コンタクトサーバ１０は、各ノード装置１からの問い合わせメッセージに応答して、応答メッセージを返信する。各ノード装置１は、後述するように、応答メッセージを受信することにより、コンタクトサーバ１０までのネットワーク８上の経路情報を取得することができる。そして、この経路情報は、コンテンツデータを要求するノード装置１を決定する際に用いられる。
【００２３】
本実施形態の情報通信システムＳにおいては、図１の上部枠５０内に示すような、オーバーレイネットワーク９が構築される。つまり、このオーバーレイネットワーク９は、既存のネットワーク８を用いて形成された仮想的なリンクを構成するネットワークを意味している。オーバーレイネットワーク９は、複数のノード装置１ａ，１ｂ，１ｃ，１ｄ，・・・から形成されている。なお、以下において、オーバーレイネットワーク９上に配置されたノード装置１を情報通信システムＳに参加しているノード装置１という。また、各ノード装置１には固有の識別情報がそれぞれ割り当てられている。この識別情報は、例えば、装置のＭＡＣアドレス又はネットワークアドレスを所定のハッシュ関数でハッシュ化して生成される。以下、この識別情報を「ノードＩＤ」と呼ぶ。ノードＩＤは、例えば、１６桁の４進数で表現される。
【００２４】
［２．ノード装置１によるコンテンツデータの取得］
情報通信システムＳでは、複数のノード装置１ａ，１ｂ，１ｃ，１ｄ，・・・に、複数のコンテンツデータが分散して記憶されている。すなわち、各コンテンツデータが複数のノード装置１ａ，１ｂ，１ｃ，１ｄ，・・・のうち一部のノード装置１に記憶されている。そして、各ノード装置１は必要に応じてコンテンツデータを記憶している他のノード装置１からコンテンツデータを取得する。以下、コンテンツデータを記憶している他のノード装置１を、「コンテンツホルダ」と呼ぶ。
【００２５】
本実施形態においては、各ノード装置１は、取得しようとするコンテンツデータを記憶している他のノード装置１のうちネットワーク的に近いコンテンツホルダを選択する。そして、ノード装置１は、このように選択したコンテンツホルダからコンテンツデータを取得する。
【００２６】
各ノード装置１は、ネットワーク的に近いコンテンツホルダを選択するために、次の（ａ）〜（ｃ）の処理を実行する。なお、ここでは、図２に示すように、ノード装置１ａがコンテンツＡのコンテンツデータを取得する場合を例に挙げて説明する。以下、コンテンツＡのコンテンツデータを、「コンテンツデータＡ」と呼ぶ。
（ａ）各ノード装置１における経路情報の取得処理
（ｂ）コンテンツホルダの検索処理
（ｃ）コンテンツホルダからのコンテンツデータの取得処理
【００２７】
［２．１．各ノード装置１における経路情報の取得］
まず、各ノード装置１ａ〜１ｃは、図３に示すように、ネットワーク８に接続されたコンタクトサーバ１０へ向けて問い合わせメッセージを送信する。そして、各ノード装置１ａ〜１ｃは、この問い合わせメッセージをコンタクトサーバ１０まで中継する中継装置のネットワークアドレスを取得して記憶する。以下、これらのネットワークアドレスを、「第１中継アドレス」と呼ぶ。
【００２８】
この第１中継アドレスは、各ノード装置１からコンタクトサーバ１０までのネットワーク８上の経路情報である。すなわち、ノード装置１ａとコンタクトサーバ１０との間には、中継装置１１，１２が存在しており、ノード装置１ａは、中継装置１１，１２のそれぞれのネットワークアドレスを取得して記憶する。そして、この２つの中継装置１１，１２のネットワークアドレスが、ノード装置１ａの第１中継アドレスである。また、同様に、ノード装置１ｂとコンタクトサーバ１０との間には、中継装置１１，１２が存在しており、ノード装置１ｂは、中継装置１１，１２のそれぞれのネットワークアドレスを取得して記憶する。そして、この２つの中継装置１１，１２のネットワークアドレスが、ノード装置１ｂの第１中継アドレスである。また、ノード装置１ｃとコンタクトサーバ１０との間には、中継装置１１，１３，１４とが存在しており、ノード装置１ｃは、中継装置１１，１３，１４のそれぞれのネットワークアドレスを取得して記憶する。そして、この３つの中継装置１１，１３，１４のネットワークアドレスが、ノード装置１ｃの第１中継アドレスである。
【００２９】
具体的には、各ノード装置１ａ〜１ｃは、コンタクトサーバ１０へ向けた問い合わせメッセージに、この問い合わせメッセージの最大中継回数の情報を含んで送信する。このとき、各ノード装置１ａ〜１ｃは、最大中継回数の情報が異なる複数の問い合わせメッセージを送信する。そして、中継された回数が最大中継回数となった問い合わせメッセージを受信した中継装置からそれぞれ返信される転送不能メッセージから、当該中継装置のネットワークアドレスを取得し、記憶する。このように取得する中継装置のネットワークアドレスは、ノード装置１の第１中継アドレスを構成するネットワークアドレスである。
【００３０】
例えば、ノード装置１ａは、まず、コンタクトサーバ１０のネットワークアドレスを宛先として、最大中継回数を「１」に設定した問い合わせメッセージをネットワーク８へ送信する。この問い合わせメッセージは、中継装置１２で受信される。中継装置１２は、受信した問い合わせメッセージの最大中継回数が「１」であるため、この問い合わせメッセージの中継回数が上限に達したと判定し、中継エラーを示す転送不能メッセージをノード装置１ａへ送信する。ノード装置１ａは、この転送不能メッセージに含まれる中継装置１２のネットワークアドレスを取得し、記憶する。この中継装置１２のネットワークアドレスは、ノード装置１ａの第１中継アドレスを構成する１つのネットワークアドレスとなる。
【００３１】
次に、ノード装置１ａは、コンタクトサーバ１０のネットワークアドレスを宛先として、最大中継回数を「２」に設定した問い合わせメッセージをネットワーク８へ送信する。このメッセージは、中継装置１２で受信される。中継装置１２は、受信した問い合わせメッセージの最大中継回数が「２」であるため、この問い合わせメッセージの最大中継回数を「１」に変更する。そして、中継装置１２は、最大中継回数が「１」に変更された問い合わせメッセージを、コンタクトサーバ１０のネットワークアドレスを宛先として送信する。このように、中継装置１２は、最大中継回数を変更して問い合わせメッセージの中継を行う。なお、中継装置がルータの場合、問い合わせメッセージを受信した中継装置が最大中継回数を減らす機能は、ルータの公知の機能を用いる。この問い合わせメッセージは、中継装置１１で受信される。中継装置１１は、受信した問い合わせメッセージの最大中継回数が「１」であるため、この問い合わせメッセージの中継回数が上限に達したと判定する。そして、中継装置１１は、中継エラーを示す転送不能メッセージをノード装置１ａへ送信する。ノード装置１ａは、この転送不能メッセージに含まれる中継装置１１のネットワークアドレスを取得し、記憶する。この中継装置１１のネットワークアドレスは、ノード装置１ａの第１中継アドレスを構成する１つのネットワークアドレスとなる。
【００３２】
次に、ノード装置１ａは、コンタクトサーバ１０のネットワークアドレスを宛先として、最大中継回数を「３」に設定した問い合わせメッセージをネットワーク８へ送信する。この問い合わせメッセージは、中継装置１２で受信される。中継装置１２は、受信した問い合わせメッセージの最大中継回数が「３」であるため、この問い合わせメッセージの最大中継回数を「２」に変更する。そして、中継装置１２は、最大中継回数が「２」に変更された問い合わせメッセージを、コンタクトサーバ１０のネットワークアドレスを宛先として送信する。このように、中継装置１２は、最大中継回数を変更して問い合わせメッセージの中継を行う。この問い合わせメッセージは、中継装置１１で受信される。中継装置１１は、受信した問い合わせメッセージの最大中継回数が「２」であるため、この問い合わせメッセージの最大中継回数を「１」に変更する。そして、中継装置１１は、最大中継回数が「１」に変更された問い合わせメッセージを、コンタクトサーバ１０のネットワークアドレスを宛先として送信する。このように、中継装置１１は、最大中継回数を変更して問い合わせメッセージの中継を行う。この問い合わせメッセージは、コンタクトサーバ１０で受信される。コンタクトサーバ１０は、ノード装置１ａへ向けて、メッセージが受信できた旨を示す応答メッセージを送信する。ノード装置１ａは、応答メッセージを受信すると、問い合わせメッセージの送信を終了する。
【００３３】
以上のように、ノード装置１ａは、最大中継回数を変更した複数の問い合わせメッセージを送信する。そして、ノード装置１ａは、コンタクトサーバ１０までに存在する中継装置１１，１２のネットワークアドレスを取得し、記憶する。そして、この中継装置１１，１２のネットワークアドレスが、ノード装置１ａの第１中継アドレスとなる。なお、ネットワーク８がインターネットの場合、第１中継アドレスの取得方法として、各ノード装置１は、例えば、公知のtracerouteコマンドやtracertコマンドを用いることができる。また、各ノード装置１は、コンタクトサーバ１０へ向けて問い合わせメッセージを送信するようにしたが、複数のノード装置１のうち特定された一のノード装置へ向けて問い合わせメッセージを送信するようにしてもよい。
【００３４】
[２．２．コンテンツホルダの検索処理]
各ノード装置１は、ユーザの選択等により所定のコンテンツデータを取得しようとするとき、この所定のコンテンツデータを記憶するコンテンツホルダを検索する。
【００３５】
すなわち、各ノード装置１は、複数のノード装置１に分散して記憶されたコンテンツデータの中から、ユーザの選択等により選択された所定のコンテンツデータを保持するコンテンツホルダのネットワークアドレスを検索する。
【００３６】
各コンテンツデータには、固有の識別情報であるコンテンツＩＤが割り当てられている。このコンテンツＩＤは、ノードＩＤと同様に、例えば、１６桁の４進数で表される。
【００３７】
コンテンツデータを取得しようとするノード装置１は、コンテンツＩＤに基づき、コンテンツデータを記憶している他のノード装置１（コンテンツホルダ）を検索する。以下、コンテンツデータを取得しようとするノード装置１を、「リクエスタ」と呼ぶ。
【００３８】
本実施形態では、コンテンツＩＤと所定の関係を有するノードＩＤのノード装置１が、そのコンテンツＩＤのコンテンツデータを記憶するコンテンツホルダのネットワークアドレスを記憶しているものとする。以下、このように、コンテンツホルダのネットワークアドレスを記憶しているノード装置２が「ルートノード」であり、第２ノード装置に相当する。ルートノードは、コンテンツＩＤとコンテンツホルダのネットワークアドレスとを関連づけたテーブルを記憶手段に記憶している。以下、このテーブルを、「インデックステーブル」と呼ぶ。なお、コンテンツＩＤと所定の関係を有するノードＩＤのノード装置１として、例えば、コンテンツＩＤに最も近いノードＩＤのノード装置１とすることができる。ここで、コンテンツＩＤに最も近いノードＩＤとは、例えば、その値がコンテンツＩＤを超えず、コンテンツＩＤと上位桁がより多く一致するノードＩＤである。また、各ノード装置１は、情報通信システムＳを構成する複数のノード装置１のうち一部のノード装置１のネットワークアドレスを、第２アドレスとしてノードＩＤに関連づけたルーティングテーブルを記憶手段に記憶している。なお、このルーティングテーブルには、後述するように、第２アドレスに対応するノード装置１の第１中継アドレスが、ノードＩＤに関連づけられている。以下、このようにルーティングテーブルに関連づけられる第１中継アドレスを、「第４中継アドレス」と呼ぶ。尚、本実施形態に記載のルートノードと、インデックステーブルとの詳細は、特開２００６−１９７４００公報等で公知であるので、詳しい説明を省略する。
【００３９】
リクエスタは、ルーティングテーブルの中から、所望のコンテンツデータのコンテンツＩＤに応じたノードＩＤを抽出し、このノードＩＤのノード装置１に対して、コンテンツＩＤを含む検索メッセージをネットワーク８へ送信する。そして、この検索メッセージを受信したノード装置１は、この検索メッセージを受信したノード装置自身がルートノードでなければ、さらに他のノード装置１へ検索メッセージを送信する。すなわち、検索メッセージを受信したノード装置１は、この検索メッセージを他のノード装置１に転送する。このように、検索メッセージは、ノード装置１により転送されていき、ルートノードで受信されることになる。
【００４０】
ルートノードは、検索メッセージを受信すると、記憶手段に記憶したインデックステーブルからコンテンツホルダのネットワークアドレスを読み出す。そして、読み出したネットワークアドレスを、ネットワーク８を介してリクエスタへ送信する。
【００４１】
例えば、図２に示すように、ノード装置１ａをコンテンツＡのリクエスタとし、ノード装置１ｂ，１ｃがコンテンツＡのコンテンツホルダとする。また、ノード装置１ｄをコンテンツＡのルートノードとする。このとき、リクエスタであるノード装置１ａは、コンテンツデータＡのコンテンツＩＤを含む検索メッセージをネットワーク８へ送信する。この検索メッセージは上述のようにノード装置１で転送され、コンテンツＡのルートノードであるノード装置１ｄで受信される。ノード装置１ｄは、コンテンツＡのコンテンツホルダのネットワークアドレスを要求された数だけリクエスタであるノード装置１ａへ送信する。以下、この要求された数を、「検索要求数」と呼ぶ。
【００４２】
以上のようにして、リクエスタは、ルートノードからコンテンツホルダのネットワークアドレスを複数取得する。
【００４３】
[２．３.コンテンツホルダからのコンテンツデータの取得処理]
ルートノードからコンテンツホルダのネットワークアドレスを取得したリクエスタは、各コンテンツホルダに対して、各コンテンツホルダの第１中継アドレスの送信を要求する。各コンテンツホルダは、リクエスタから第１中継アドレスの送信要求があると、記憶手段から第１中継アドレスを読み出し、リクエスタへ送信する。リクエスタは、各コンテンツホルダから送信される第１中継アドレスを受信して記憶手段に記憶する。以下、この第１中継アドレスを、「第２中継アドレス」と呼ぶ。この第２中継アドレスは、各コンテンツホルダからコンタクトサーバ１０までのネットワーク８上の経路に位置する中継装置のネットワークアドレスを示す。
【００４４】
このようにリクエスタは、第２中継アドレスを、各コンテンツホルダからそれぞれ取得する。すなわち、リクエスタは、各コンテンツホルダからコンタクトサーバ１０までのネットワーク８上の経路情報を第２中継アドレスとして記憶手段に記憶する。
【００４５】
図２に示す例では、リクエスタであるノード装置１ａは、コンテンツホルダであるノード装置１ｂ，１ｃの記憶手段に記憶されている第１中継アドレスを取得して、第２中継アドレスとして記憶手段に記憶する。ノード装置１ｂの記憶手段に記憶されている第１中継アドレスは、中継装置１１，１２のネットワークアドレスであり、ノード装置１ｃの記憶手段に記憶されている第１中継アドレスは、中継装置１１，１３，１４のネットワークアドレスである。従って、ノード装置１ａは、中継装置１１，１２のネットワークアドレスをノード装置１ｂの第２中継アドレスとして記憶手段に記憶し、中継装置１１，１３，１４のネットワークアドレスをノード装置１ｃの第２中継アドレスとして記憶手段に記憶する。このように、リクエスタは、コンテンツホルダから送信されるこのコンテンツホルダの第1中継アドレスを、コンテンツホルダの第２中継アドレスとして取得する。
【００４６】
次に、リクエスタは、記憶手段に記憶している第１中継アドレスと第２中継アドレスとを比較する。そして、リクエスタは、第１中継アドレスと一致度が高い第２中継アドレスを送信したコンテンツホルダからコンテンツデータを取得する。ここで、「一致度が高い」とは、両中継アドレスに共通するネットワークアドレスの数が多く、共通していないネットワークアドレスの数が少ないことを意味する。
【００４７】
例えば、図２に示す例では、リクエスタであるノード装置１ａの第１中継アドレスは、中継装置１１，１２のネットワークアドレスである。また、コンテンツホルダであるノード装置１ｂの第１中継アドレスは、中継装置１１，１２のネットワークアドレスである。また、コンテンツホルダであるノード装置１ｃの第１中継アドレスは、中継装置１１，１３，１４のネットワークアドレスである。
【００４８】
すなわち、ノード装置１ａの第１中継アドレスとノード装置１ｂの第１中継アドレスとはすべて一致している。一方、ノード装置１ａの第１中継アドレスとノード装置１ｃの第１中継アドレスとは、中継装置１１のネットワークアドレスのみ一致している。従って、ノード装置１ａは、ノード装置１ａの第１中継アドレスと一致度が高い第１中継アドレスのノード装置１ｂへコンテンツデータの送信を要求し、ノード装置１ｂからコンテンツデータを取得する。
【００４９】
図２に示す例では、ノード装置１ａとノード装置１ｂとは、同一のＩＳＰ４ａに接続されている。従って、ノード装置１ａは、中継装置を介すことなく、ノード装置１ｂからコンテンツデータを取得することができる。なお、ノード装置１ａは、ノード装置１ｂからコンテンツデータを取得できないときには、ノード装置１ｃからコンテンツデータを取得することになる。なお、コンテンツホルダが他のいくつかのリクエスタにコンテンツデータを送信しているときや、コンテンツホルダが情報通信システムＳから脱退したときなどに、リクエスタがコンテンツホルダからコンテンツデータを取得できないような状況が発生する。
【００５０】
リクエスタは、コンテンツデータを取得すると記憶手段に記憶する。リクエスタは、コンテンツデータを記憶することでそのコンテンツデータのコンテンツホルダとなる。コンテンツホルダとなったノード装置１は、記憶手段に記憶したコンテンツデータのコンテンツＩＤと第１中継アドレスとを含む登録メッセージをネットワーク８へ送信する。この登録メッセージは、検索メッセージと同様に、他のノード装置１により転送されて、ルートノードで受信される。ルートノードは、登録メッセージに含まれているコンテンツホルダの情報とコンテンツＩＤとを関連づけて記憶手段に記憶しているインデックステーブルに設定する。すなわち、コンテンツホルダのネットワークアドレスをコンテンツＩＤに関連づけてインデックステーブルに設定する。以下、インデックステーブルに設定したコンテンツホルダのネットワークアドレスを、「第１アドレス」と呼ぶ。さらに登録メッセージに含まれている第１中継アドレスをコンテンツＩＤに関連づけてインデックステーブルに追加する。以下、このようにインデックステーブルに追加されるコンテンツホルダからコンタクトサーバ１０までのネットワーク８上の経路情報を、「第３中継アドレス」と呼ぶ。
【００５１】
このように、ルートノードは、第１アドレスの他、各コンテンツホルダとコンタクトサーバ１０との間にそれぞれ存在する中継装置のネットワークアドレスを第３中継アドレスとしてコンテンツＩＤに関連づけてインデックステーブルに追加する。
上述のように、本実施形態に係る情報通信システムＳでは、各ノード装置１は、取得しようとするコンテンツデータを記憶している他のノード装置１のうちネットワーク的に近い他のノード装置１を優先的に選択する。そして、各ノード装置１は、このように選択した他のノード装置１からコンテンツデータを取得する。従って、ネットワーク８での総トラフィック量を軽減することができ、通信負荷を軽減することが可能となる。
【００５２】
なお、ネットワーク８が例えばインターネットの場合、ＩＰアドレスの一致桁数によってコンテンツデータを取得するコンテンツホルダを優先することも考えられる。しかしながら、ＩＰアドレスの割り当ては物理的なネットワークと必ずしも一致しない。一方、本実施形態に係る情報通信システムＳでは、ネットワーク的に近いノード装置１間での通信をより精度よく行うことができ、通信負荷をより軽減することが可能となる。
【００５３】
[３．ルートノードでの処理]
上述のように、ルートノードは、リクエスタから検索メッセージを受信すると、第１アドレスをインデックステーブルから取得する。そして、ルートノードは、この第１アドレスを、ネットワーク８を介してリクエスタへ送信する。
【００５４】
図２に示す例では、ノード装置１ｄは、ノード装置１ｂが記憶している第１中継アドレスをノード装置１ｂから取得して第３中継アドレスとして記憶し、また、ノード装置１ｃが記憶している第１中継アドレスをノード装置１ｃから取得して第３中継アドレスとして記憶している。
【００５５】
また、ルートノードは、検索メッセージがあると、検索要求数（例えば、１０個）のコンテンツホルダのネットワークアドレスを送信する。検索要求数よりも多くのコンテンツホルダのネットワークアドレスがインデックステーブルにある場合、ルートノードは、以下の処理により、送信するネットワークアドレスを選択する。
【００５６】
ルートノードは、上述したように、コンテンツホルダから送信される登録メッセージからコンテンツホルダのネットワークアドレスを取得し、第１アドレスとしてインデックステーブルに追加して記憶手段に記憶している。この登録メッセージにはコンテンツホルダの第１中継アドレスが含まれている。ルートノードは、登録メッセージに含まれているコンテンツホルダの第１中継アドレスを第３中継アドレスとして、第１アドレスに関連づけてインデックステーブルに追加して記憶手段に記憶する。
【００５７】
リクエスタは、検索メッセージに、コンテンツＩＤの他、リクエスタの第１中継アドレスを含めて、ルートノードへ送信する。ルートノードは、リクエスタから送信される検索メッセージを受信する。ルートノードは、受信した検索メッセージに含まれるリクエスタの第１中継アドレスに基づき、コンテンツホルダのネットワークアドレスを選択する。そして、ルートノードは、この選択したネットワークアドレスを、リクエスタへ送信する。
【００５８】
ルートノードによるネットワークアドレスの選択は、インデックステーブルに含んで記憶手段に記憶されている第３中継アドレス（コンテンツホルダの第１中継アドレス）とリクエスタの第１中継アドレスとを比較することによって行われる。そして、ルートノードは、コンテンツホルダのネットワークアドレスがインデックステーブルに検索メッセージにより検索要求数よりも多く存在しているかどうかを判定する。検索要求数よりも多く存在していると判定したとき、ルートノードは、リクエスタの第１中継アドレスとの一致度が高い第３中継アドレスに対応するコンテンツホルダのネットワークアドレスを優先してリクエスタに送信する。
【００５９】
例えば、図２に示す例では、リクエスタであるノード装置１ａの第１中継アドレスは、中継装置１１，１２のネットワークアドレスである。また、ノード装置１ｂの第１中継アドレスは、中継装置１１，１２のネットワークアドレスである。また、ノード装置１ｃの第１中継アドレスは、中継装置１１，１３，１４のネットワークアドレスである。
【００６０】
すなわち、ノード装置１ａの第１中継アドレスとノード装置１ｂの第１中継アドレスとはすべて一致している。一方、ノード装置１ａの第１中継アドレスとノード装置１ｃの第１中継アドレスとは、中継装置１１のネットワークアドレスのみ一致している。従って、ルートノードであるノード装置１ｄは、ノード装置１ａの第１中継アドレスとの一致度が高い第３中継アドレスに対応するノード装置１ｂのネットワークアドレスを、ノード装置１ｃのネットワークアドレスよりも優先して、リクエスタへ送信する。
【００６１】
このように、ルートノードは、インデックステーブルに含まれるコンテンツホルダのネットワークアドレスが検索メッセージに含まれる検索要求数を超えているか否かを判定する。そして、検索要求数を超えていると判定すると、ルートノードは、リクエスタの第１中継アドレスとの一致度が高い第３中継アドレスに対応するコンテンツホルダのネットワークアドレスから順に選択する。そして、選択したコンテンツホルダのネットワークアドレスが検索要求数になったとき、これらの選択したネットワークアドレスをリクエスタへ送信する。
【００６２】
このように、ルートノードは、検索要求数を超えるコンテンツホルダのネットワークアドレスをインデックステーブルに含んでいるとき、リクエスタに対してこのリクエスタとネットワーク的により近いコンテンツホルダのネットワークアドレスを優先して送信する。このようにすることで、リクエスタは、ルートノードがランダムにコンテンツホルダのネットワークアドレスを選択した場合に比べて、リクエスタにネットワーク的に近いコンテンツホルダを検索要求数分取得することができる。従って、リクエスタは、コンテンツデータを送信できないコンテンツホルダが多い場合であっても、ネットワーク的に近いコンテンツホルダからコンテンツデータを取得することができる。
【００６３】
[４．各ノード装置が有するルーティングテーブル]
各ノード装置１は、上述のように、情報通信システムＳを構成する複数のノード装置１のうち一部のノード装置１の情報であるルーティングテーブルを記憶手段（後述の記憶部２２）に記憶している。以下、この一部のノード装置１の情報を、「ノード情報」と呼ぶ。このルーティングテーブルでは、ノード情報として、第２アドレスと第４中継アドレスとが、ノードＩＤに関連づけられている。「第４中継アドレス」とは、ルーティングテーブルに設定される他のノード装置１からコンタクトサーバ１０までのネットワーク８上の経路情報である。また、「第２アドレス」とは、ルーティングテーブルに設定される他のノード装置１のネットワークアドレスである。例えば、図２に示すノード装置１ａがノード装置１ｄのノード情報をルーティングテーブルに有しているとする。このとき、ルーティングテーブルには、ノード装置１ｄのネットワークアドレスが第２アドレスとしてノード装置１ｄのノードＩＤに関連づけられる。また、ルーティングテーブルには、ノード装置１ｄの第１中継アドレスが第４中継アドレスとして、ノード装置１ｄのノードＩＤに関連づけられる。なお、ノード装置１ｄの第１中継アドレスは、中継装置１１，１３のネットワークアドレスである。
【００６４】
このルーティングテーブルは、ノード装置１が情報通信システムＳに参加するときに、所定のノード装置１にアクセスして取得する情報に基づいて生成される。そして、このルーティングテーブルは、その後、ノード装置１が他のノード装置１と通信する際に、必要に応じて更新される。
【００６５】
このルーティングテーブルでは、記憶手段の記憶容量に制限があるため、他のノード装置１の情報は、規定数を超えないように制限される。従って、ノード装置１は、他のノード装置１と通信してこの他のノード装置１のノード情報を受信したとき、既にノード情報が規定数に達している場合は、受信したノード情報を記憶手段に記憶するかどうかを決定する。受信したノード情報を記憶部２２に記憶すると決定すると、記憶手段に既に記憶しているいずれかのノード情報を消去し、受信したノード情報を記憶手段に記憶する。
【００６６】
具体的には、記憶手段に記憶している第１中継アドレスと、同じく記憶手段に記憶しているルーティングテーブルに含まれる各第４中継アドレスとを比較し、それぞれ一致度を求める。そして、第４中継アドレスのうち、最も一致度が低い第４中継アドレスを特定する。以下、このように最も一致度が低い第４中継アドレスを、「特定第４中継アドレス」と呼ぶ。一方、第１中継アドレスと、他のノード装置１から受信したノード情報に含まれる第１中継アドレスとを比較し、一致度を求める。以下、他のノード装置１から受信した第１中継アドレスを、「比較第１中継アドレス」と呼ぶ。
【００６７】
そして、第１中継アドレスと比較第１中継アドレスとの一致度と、当該第１中継アドレスと特定第４中継アドレスとの一致度とを比較し、特定第４中継アドレスとの一致度の方が大きい場合は、ルーティングテーブルを更新する。すなわち、ノード装置１は、特定第４中継アドレスと、この特定第４中継アドレスに関連づけられたノードＩＤ及び第２アドレスをルーティングテーブルから削除し、比較第１中継アドレスと、この比較第１中継アドレスを含むノード情報をルーティングテーブルに追加する。このとき、ノード装置１は、ノード情報に含まれる比較第１中継アドレスを第４中継アドレスとし、ノード情報に含まれるネットワークアドレスを第２アドレスとしてルーティングテーブルに追加する。
【００６８】
各ノード装置は、ルーティングテーブルのノード情報が規定数に達している状態で他のノード装置からノード情報を受信するごとに、上述した処理を繰り返し実行する。これにより、記憶部２２には、第１中継アドレスと一致度が高い第１中継アドレスを有する他のノード装置１のネットワークアドレスが優先的にルーティングテーブルに追加されることになる。
【００６９】
このようにすることで、各ノード装置１では、検索メッセージや登録メッセージなどの各種メッセージを送信或いは転送する際に、その送信先或いは転送先のノード装置１がネットワーク的に近い他のノード装置１となる。従って、各ノード装置１から送信或いは転送される各種メッセージの、中継装置による中継回数を低減することができる。すなわち、ネットワーク８での総トラフィック量を軽減することができ、通信負荷を軽減することが可能となる。
【００７０】
［５．ノード装置１の具体的構成及び動作の説明］
次に、ノード装置１の具体的構成及び動作の一例について説明する。
【００７１】
［５．１．ノード装置１の構成について］
まず、ノード装置１の具体的構成について説明する。このノード装置１は、専用のコンピュータの他、一般のパーソナルコンピュータを適用可能である。図４に示すように、ノード装置１は、制御部２１と、記憶部２２と、通信部２３と、操作部２４とを備えている。制御部２１と、記憶部２２と、通信部２３と、操作部２４とは、システムバス２５を介して相互に接続されている。制御部２１は、ノード装置１全体を制御する。記憶部２２は、各種情報を記憶する記憶領域を有する書き換え可能な記憶装置である。通信部２３は、ノード装置１と通信するための通信インターインターフェイスである。操作部２４は、各種設定入力を行うための操作部である。
【００７２】
制御部２１は、ＣＰＵ（Central Processing Unit）、内部メモリなどから構成される。この内部メモリには、他のノード装置１と間でのコンテンツデータやその他のメッセージを送受信するための情報処理プログラムが格納されている。ＣＰＵは内部メモリに記憶されている情報処理プログラムを読み出して実行することによって、制御部２１として各種手段として機能する。具体的には、制御部２１は、メッセージ送信手段と、情報取得手段と、要求手段と、第２情報取得手段と、コンテンツ取得手段と、第３情報取得手段と、アドレス送信手段、情報送信手段と、受信手段と、記憶処理手段等として機能させる。なお、この情報処理プログラムは、例えば、ネットワーク８に接続された他のサーバから、通信部２３を介して、制御部２１の内部メモリにダウンロードされるようにしてもよい。また、この情報処理プログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録されてから図示しない記録媒体ドライブを介して、制御部２１の内部メモリに読み込まれるようにしてもよい。
【００７３】
記憶部２２は、ルーティングテーブルを記憶する記憶手段（アドレス記憶手段）、インデックステーブルを記憶する記憶手段、コンテンツデータを記憶する記憶手段、第１中継アドレスを記憶する記憶手段などとして機能する。ルーティングテーブルは、第２アドレスと第４中継アドレスとをノードＩＤに関連づけたテーブルである。また、インデックステーブルは、各コンテンツホルダについての情報、すなわち、第１アドレス及び第３中継アドレスをノードＩＤと関連づけたテーブルである。なお、第３中継アドレスは、上述したように、コンテンツホルダからコンタクトサーバ１０までのネットワーク８上の経路に位置する中継装置のネットワークアドレスを示す。
【００７４】
［５．２．ノード装置１の具体的動作］
以上のように構成されたノード装置１の動作について図面を参照して具体的に説明する。なお、以下の各処理は、ノード装置１の制御部２１が上述した各手段等として機能することによって実行されるものである。
【００７５】
ノード装置１においてメイン電源スイッチ（図示せず）がＯＮされたときやリセットスイッチ（図示せず）が操作されたとき、メイン処理を開始する。このとき、制御部２１のＣＰＵは、内部メモリに記憶した情報処理プログラムを実行状態として、制御部２１としての機能を動作状態する。
【００７６】
まず、制御部２１は、図５に示すように、経路情報取得処理を実行する（ステップＳ１０）。経路情報取得処理は、第１中継アドレスを取得して記憶部２２に記憶するための処理である。経路情報取得処理は、図６に示すステップＳ３０〜Ｓ３６の処理であり、後で詳述する。
【００７７】
次いで、制御部２１は、操作部２４等からダウンロード指示を受け付けたか否かを判定する（ステップＳ１１）。ダウンロード指示を受け付けたと判定すると（ステップＳ１１：ＹＥＳ）、制御部２１は、コンテンツダウンロード処理を実行する（ステップＳ１２）。コンテンツダウンロード処理は、コンテンツホルダからコンテンツデータを取得するための処理である。コンテンツダウンロード処理は、図７に示すステップＳ５０〜Ｓ６２の処理であり、後で詳述する。このコンテンツダウンロード処理は、リクエスタとしての処理である。
【００７８】
一方、ステップＳ１１の処理において、ダウンロード指示を受け付けていないと判定すると（ステップＳ１１：ＮＯ）、制御部２１は、メッセージを通信部２３を介して受信したか否かを判定する（ステップＳ１３）。メッセージを受信したと判定すると（ステップＳ１３：ＹＥＳ）、制御部２１は、このメッセージを受信したノード装置自身宛てのメッセージか否かを判定する（ステップＳ１４）。この判定は、メッセージに含まれるコンテンツＩＤと所定の関係を有するノードＩＤが、このメッセージを受信したノード装置自身に割り当てられているか否かによって行われる。
【００７９】
ステップＳ１４の処理において、受信したメッセージが、このメッセージを受信したノード装置自身宛てのメッセージでないと判定すると（ステップＳ１４：ＮＯ）、制御部２１は、受信したメッセージを通信部２３を介して他のノード装置１へ転送する（ステップＳ１６）。メッセージの転送は、記憶部２２に記憶したルーティングテーブルに基づいて行われる。すなわち、制御部２１は、メッセージに含まれるコンテンツＩＤと所定の関係を有するノードＩＤに近いノードＩＤのノード装置１のネットワークアドレスをルーティングテーブルから取得し、このノード装置１宛てにメッセージを転送する。
【００８０】
一方、ステップＳ１４において、受信したメッセージが、このメッセージを受信したノード装置自身宛てのメッセージであると判定すると（ステップＳ１４：ＹＥＳ）、制御部２１は、メッセージ処理を行う（ステップＳ１５）。このメッセージ処理は、図８に示すステップＳ７０〜Ｓ７９の処理であり、後で詳述する。なお、メッセージ処理は、ルートノードとしての処理である。
【００８１】
一方、ステップＳ１３において、メッセージを受信していないと判定したときは（ステップＳ１３：ＮＯ）、他のノード装置１から応答要求があったか否かを判定する（ステップＳ１７）。本実施形態では、この応答要求は、図７のステップＳ５１で要求されるリクエスタから送信されたものである。なお、このステップＳ１７における判定対象は、リクエスタからの応答要求以外にも、新規にオーバーレイネットワーク９に参加するノード装置１からの応答要求であっても良い。さらに、他のノード装置から受信した検索要求であっても良い。
【００８２】
応答要求があったと判定すると（ステップＳ１７：ＹＥＳ）、制御部２１は、応答可能か否かを判定する（ステップＳ１８）。この処理において、応答可能であると判定すると（ステップＳ１８：ＹＥＳ）、制御部２１は、応答要求を行ったノード装置１へ通信部２３を介して応答を返す（ステップＳ１９）。この応答には、記憶部２２に記憶した第１中継アドレスを含む。すなわち、制御部２１は、応答要求を行ったノード装置１に対し、この応答要求を受信したノード装置自身の経路情報を含む応答を行う。その後、制御部２１は、接続先ノード装置処理を行う（ステップＳ２１）。この接続先ノード装置処理は、図１０に示すステップＳ９０〜Ｓ９２の処理であり、後で詳述する。
【００８３】
一方、応答可能ではないと判定すると（ステップＳ１８：ＮＯ）、制御部２１は、応答拒否を行う（ステップＳ２０）。すなわち、制御部２１は、応答要求を行ったノード装置１への応答を行わない。なお、制御部２１は、他のいくつかのリクエスタにコンテンツデータを通信部２３を介して送信するなどして、さらなるリクエスタにコンテンツデータを送信できない状態であるときに、応答可能ではないと判定する。
【００８４】
ステップＳ１７の処理において、応答要求がないと判定すると（ステップＳ１７：ＮＯ）、制御部２１は、通信部２３を介して他のノード装置１からコンテンツデータ要求があったか否かを判定する（ステップＳ２２）。この処理において、コンテンツデータ要求があったと判定すると（ステップＳ２２：ＹＥＳ）、制御部２１は、記憶部２２から要求のあったコンテンツデータを読み出し、コンテンツデータ要求を行ったノード装置１に、コンテンツデータを通信部２３を介して送信する（ステップＳ２３）。
【００８５】
ステップＳ１２，Ｓ１５，Ｓ１６，Ｓ２１，Ｓ２０，Ｓ２３の処理が終了したとき、又はステップＳ２２の処理においてコンテンツデータ要求がないと判定すると(ステップＳ２２：ＮＯ)、制御部２１は、終了指示を検知したか否かを判定する（ステップＳ２４）。例えば、ノード装置１の電源がＯＦＦ状態へ移行したとき、制御部２１は、終了指示を検知する。終了指示を検知したと判定すると（ステップＳ２４：ＹＥＳ）、制御部２１は、メイン処理を終了し、一方、終了指示を検知していないと判定すると（ステップＳ２４：ＮＯ）、制御部２１は、ステップＳ１１からの処理を繰り返す。
【００８６】
次に、図５に示すステップＳ１０で実行される経路情報取得処理について図６のフローチャートを参照して具体的に説明する。
【００８７】
図６に示すように、経路情報取得処理が開始されると、制御部２１は、変数ｉを「１」に設定する（ステップＳ３０）。
【００８８】
次に、制御部２１は、最大中継回数（ＴＴＬ）を「ｉ」に設定した問い合わせメッセージを、コンタクトサーバ１０を宛先として通信部２３を介して送信する（ステップＳ３１）。問い合わせメッセージを送信した後、制御部２１は、この問い合わせメッセージに対して中継装置から転送不能メッセージを通信部２３を介して受信したか否かを判定する（ステップＳ３２）。転送不能メッセージを受信したと判定すると（ステップＳ３２：ＹＥＳ）、制御部２１は、受信した転送不能メッセージに含まれるネットワークアドレスを、第１中継アドレスとして記憶部２２に記憶する（ステップＳ３３）。なお、転送不能メッセージに含まれるネットワークアドレスは、この転送不能メッセージを送信した中継装置のネットワークアドレスである。その後、制御部２１は、変数ｉをインクリメントし（ステップＳ３４）、ステップＳ３１からの処理を繰り返す。
【００８９】
一方、ステップＳ３２において、転送不能メッセージを受信していないと判定すると（ステップＳ３２：ＮＯ）、制御部２１は、コンタクトサーバ１０から応答メッセージを受信したか否かを判定する（ステップＳ３５）。応答メッセージを受信したと判定すると（ステップＳ３５：ＹＥＳ）、経路情報取得処理を終了する。一方、応答メッセージを受信していないと判定すると（ステップＳ３５：ＮＯ）、所定のエラー処理を実行し（ステップＳ３６）、その後、経路情報取得処理を終了する。
【００９０】
このように、制御部２１は、経路情報取得処理により、コンタクトサーバ１０までのネットワーク８上の経路にある中継装置のネットワークアドレスを取得して、第１中継アドレスとして記憶部２２に記憶する。このとき、制御部２１は、ネットワークに接続された特定装置であるコンタクトサーバ１０へ向けて、最大中継回数の情報を変えながらメッセージを順次送信するメッセージ送信手段として機能する。また、制御部２１は、メッセージ送信手段により送信されたメッセージをコンタクトサーバ１０まで中継する中継装置のネットワークアドレスを示す第１中継アドレスを取得する情報取得手段として機能する。具体的には、情報取得手段は、中継された回数が最大中継回数となったメッセージを受信した中継装置からそれぞれ返信されるメッセージから、第１中継アドレスを取得する。
【００９１】
次に、図５に示すステップＳ１２で実行されるコンテンツダウンロード処理について図７のフローチャートを参照して具体的に説明する。
【００９２】
図７に示すように、コンテンツダウンロード処理が開始されると、制御部２１は、取得するコンテンツデータのコンテンツＩＤとコンテンツダウンロード処理を実行するノード装置自身の経路情報とを含む検索メッセージを通信部２３を介して送信し、コンテンツホルダを検索する（ステップＳ５０）。上述のノード装置自身の経路情報は、記憶部２２に第１中継アドレスとして記憶されており、制御部２１は、記憶部２２に第１中継アドレスを読み出して検索メッセージに含める。この検索メッセージに対して、ルートノードから所定数分又はそれ以下のコンテンツホルダのネットワークアドレスを受信し、記憶部２２に記憶することによって、コンテンツホルダの検索を終了する。
【００９３】
次に、制御部２１は、ダウンロード要求を行うコンテンツホルダに対して、通信部２３を介して応答要求を行う（ステップＳ５１）。具体的には、制御部２１は、ステップＳ５０において検索したコンテンツホルダのネットワークアドレスを記憶部２２から読み出し、読み出したネットワークアドレスの１つ以上のノード装置１に対して、通信部２３を介して応答要求を行う。
【００９４】
次に、制御部２１は、コンテンツホルダから応答があったか否かを判定する（ステップＳ５２）。この処理において、制御部２１は、ステップＳ５１で行った応答要求に対して、コンテンツホルダから通信部２３を介して応答を受けたときに、コンテンツホルダから応答があったと判定する。コンテンツホルダから応答がなかったと判定すると（ステップＳ５２：ＮＯ）、制御部２１は、このコンテンツホルダからコンテンツデータをダウンロード中であるか否かを判定する（ステップＳ５３）。ダウンロード中ではないと判定すると（ステップＳ５３：ＮＯ）、制御部２１は、ステップＳ５１からの処理を繰り返す。一方、ダウンロード中であると判定すると（ステップＳ５３：ＹＥＳ）、制御部２１は、処理をステップＳ６０に移行する。
【００９５】
一方、ステップＳ５２において、コンテンツホルダから応答があったと判定すると（ステップＳ５２：ＹＥＳ）、制御部２１は、この応答に含まれるコンテンツホルダの経路情報を取得し、第２中継アドレスとして記憶部２２に記憶し（ステップＳ５４）、接続元ノード装置処理を行う（ステップＳ５５）。この接続元ノード装置処理は、図９に示すステップＳ８０〜Ｓ８４の処理であり、後で詳述する。本実施形態では、ステップＳ５４の後に、ステップＳ５５の接続元ノード装置処理が実行されているが、本発明は、これに限定されるものではない。例えば、新規にオーバーレイネットワーク９に参加するノード装置から応答要求があった後に、接続元ノード装置処理が実行されても良い。また、他のノード装置から検索メッセージを受信した後に、接続元ノード装置処理が実行されても良い。
【００９６】
ステップＳ５５の処理が終了すると、制御部２１は、コンテンツダウンロード処理を実行するノード装置自身の経路情報との一致度が高い順にコンテンツホルダの優先順位を決定する（ステップＳ５６）。すなわち、制御部２１は、ステップＳ５４で記憶部２２に記憶した第２中継アドレスを、ノード装置１の第１中継アドレスとの一致度が高い順に並べ替える。そして、制御部２１は、第１中継アドレスとの一致度が高い第２中継アドレスを有するコンテンツホルダほど高い優先順位にする。
【００９７】
次に、制御部２１は、優先順位が高い第２中継アドレスのコンテンツホルダからコンテンツデータのダウンロードを開始する（ステップＳ５７）。その後、制御部２１は、ダウンロード速度が要求速度を満たすか否かを判定する（ステップＳ５８）。ダウンロード速度は、所定単位時間当たりのコンテンツデータのダウンロードサイズに基づいて決定される。
【００９８】
ダウンロード速度が要求速度を満たすと判定すると（ステップＳ５８：ＹＥＳ）、制御部２１は、処理をステップＳ６０に移行する。一方、ダウンロード速度が要求速度を満たさないと判定すると（ステップＳ５８：ＮＯ）、制御部２１は、ダウンロード速度が要求速度を満たすまで、優先順位が高い方から順に別のコンテンツホルダからもダウンロードを開始する（ステップＳ５９）。その後、制御部２１は、処理をステップＳ６０に移行する。コンテンツデータは、所定サイズ毎にデータ番号が割り当てられている。そして、ステップＳ５９の処理において、制御部２１は、各コンテンツホルダからそれぞれデータ番号のデータを取得することになる。
【００９９】
ステップＳ６０の処理において、制御部２１は、コンテンツデータのダウンロードが終了したか否かを判定する。コンテンツデータのダウンロードが終了していないと判定すると（ステップＳ６０：ＮＯ）、制御部２１は、コンテンツデータのダウンロードを継続しながらまだ応答がないコンテンツホルダからの応答を受け付けることができる状態に維持して（ステップＳ６１）、ステップＳ５２からの処理を繰り返す。一方、コンテンツデータのダウンロードが終了したと判定すると（ステップＳ６０：ＹＥＳ）、制御部２１は、コンテンツダウンロード処理を実行するノード装置自身の経路情報である第１中継アドレスを記憶部２２から読み出し、この第１中継アドレスを含む登録メッセージを通信部２３を介して送信する（ステップＳ６２）。
【０１００】
このように、制御部２１は、複数のノード装置１に分散して記憶されたコンテンツデータの中から、所定のコンテンツデータを要求する要求手段として機能する。また、制御部２１は、要求手段により要求されるコンテンツデータを記憶している各ノード装置１から特定装置（コンタクトサーバ１０）までのネットワーク８上の経路に位置する中継装置のネットワークアドレスを示す第２中継アドレスを取得する第２情報取得手段として機能する。さらに、制御部２１は、コンテンツデータを記憶している複数のノード装置１のうち、第１中継アドレスとの一致度が高い第２中継アドレスに対応するノード装置１から所定のコンテンツデータを取得するコンテンツ取得手段として機能する。
【０１０１】
次に、図５に示すステップＳ１５において実行されるメッセージ処理について図８のフローチャートを参照して具体的に説明する。
【０１０２】
図８に示すように、メッセージ処理が開始されると、制御部２１は、検索メッセージを受信したか否かを判定する（ステップＳ７０）。検索メッセージを受信したと判定すると（ステップＳ７０：ＹＥＳ）、制御部２１は、受信した検索メッセージに含まれる検索要求数が、記憶部２２に記憶しているインデックステーブルのコンテンツホルダの数以上か否かを判定する（ステップＳ７１）。検索要求数がインデックステーブルのコンテンツホルダの数以上であると判定すると（ステップＳ７１：ＹＥＳ）、制御部２１は、記憶部２２からインデックステーブルの全てのコンテンツホルダのネットワークアドレスを読み出し、読み出したネットワークアドレスを、検索メッセージを送信したリクエスタであるノード装置１に送信する（ステップＳ７６）。
【０１０３】
一方、ステップＳ７１において、検索要求数がインデックステーブルのコンテンツホルダの数よりも小さいと判定すると（ステップＳ７１：ＮＯ）、制御部２１は、受信した検索メッセージに含まれるリクエスタの経路情報である第１中継アドレスを取得する（ステップＳ７２）。
【０１０４】
次に、制御部２１は、インデックステーブルのコンテンツホルダを、その経路情報とリクエスタの経路情報との一致度が高い順に並べる（ステップＳ７３）。すなわち、制御部２１は、リクエスタの第１中継アドレスとの一致度が高い第３中継アドレスに対応するコンテンツホルダから順に内部メモリに配列する。
【０１０５】
次に、制御部２１は、リクエスタの経路情報である第１中継アドレスとの一致度が高いコンテンツホルダから順に検索要求数だけコンテンツホルダを選択する（ステップＳ７４）。そして、制御部２１は、選択したコンテンツホルダのネットワークアドレスを、リクエスタに送信する（ステップＳ７５）。このように、制御部２１は、リクエスタの第１中継アドレスを取得する第３情報取得手段として機能する。また、制御部２１は、ルーティングテーブルに含まれるコンテンツホルダの第１中継アドレスである第３中継アドレスとリクエスタの第１中継アドレスとの一致度が高いコンテンツホルダのネットワークアドレス（第１アドレス）を、リクエスタへ送信するアドレス送信手段として機能する。
【０１０６】
一方、ステップＳ７０において、検索メッセージを受信していないと判定すると（ステップＳ７０：ＮＯ）、制御部２１は、登録メッセージを受信したか否かを判定する（ステップＳ７７）。登録メッセージを受信したと判定すると（ステップＳ７７：ＹＥＳ）、制御部２１は、登録メッセージに含まれる情報をインデックステーブルに追加する。すなわち、制御部２１は、コンテンツホルダのネットワークアドレスを第１アドレスとし、コンテンツホルダの第１中継アドレスを第３中継アドレスとしてこれらを関連づけてインデックステーブルに追加して記憶する（ステップＳ７８）。一方、登録メッセージを受信していないと判定すると（ステップＳ７７：ＮＯ）、制御部２１は、その他の処理を実行する（ステップ：Ｓ７９）。そして、ステップＳ７５，Ｓ７６，Ｓ７８，Ｓ７９の処理が終了すると、メッセージ処理を終了する。
【０１０７】
次に、図７に示すステップＳ５５において実行される接続元ノード装置処理について図９のフローチャートを参照して具体的に説明する。
【０１０８】
図９に示すように、接続元ノード装置処理が開始されると、制御部２１は、接続元ノード装置処理を実行するノード装置自身の経路情報を含むノード情報を接続先ノード装置へ送信する（ステップＳ８０）。すなわち、制御部２１は、記憶部２２から第１中継アドレスを読み出し、この第１中継アドレスを、接続元ノード装置処理を実行するノード装置自身のネットワークアドレス（第２アドレス）及びノードＩＤと共に、制御部２１が接続を要求したノード装置１へ通信部２３を介して送信する。このように、制御部２１は、情報取得手段により取得された第１中継アドレスと第２アドレスとを、他のノード装置１へ送信する情報送信手段として機能する。
【０１０９】
次に、制御部２１は、接続先ノード装置から経路情報を含むノード情報を受信する（ステップＳ８１）。すなわち、制御部２１が接続を要求したノード装置１から、このノード装置１の第１中継アドレス、ネットワークアドレス（第２アドレス）及びノードＩＤを通信部２３を介して送信する。このように、制御部２１は、他のノード装置１から送信された第１中継アドレスと第２アドレスとを受信する受信手段として機能する。
【０１１０】
次に、制御部２１は、記憶部２２に記憶したルーティングテーブルにノード情報が所定数以上あるか否かを判定する（ステップＳ８２）。この処理において、ルーティングテーブルにノード情報が所定数よりも少ないと判定すると（ステップＳ８２：ＮＯ）、制御部２１は、処理をステップＳ８４に移行する。また、ルーティングテーブルにノード情報が所定数以上あると判定すると（ステップＳ８２：ＹＥＳ）、制御部２１は、ルーティングテーブル更新条件を満たすか否かを判定する（ステップＳ８３）。ルーティングテーブル更新条件は、ルーティングテーブルに含まれる第４中継アドレスのうち記憶部２２に記憶している第１中継アドレスと最も一致度が低い第４中継アドレスよりも、ステップＳ８１で取得した送信先ノード装置の経路情報である第１中継アドレスの方が第１中継アドレスとの一致度が高いことである。
【０１１１】
ステップＳ８３の処理において、ルーティングテーブル更新条件を満たすと判定すると（ステップＳ８３：ＹＥＳ）、制御部２１は、処理をステップＳ８４に移行する。一方、ルーティングテーブル更新条件を満たさないと判定すると（ステップＳ８３：ＮＯ）、制御部２１は、接続元ノード装置処理を終了する。
【０１１２】
ステップＳ８４の処理において、制御部２１は、ステップＳ８１で受信したノード情報をルーティングテーブルに追加して、接続元ノード装置処理を終了する。このように、制御部２１は、受信した第１中継アドレスのうち、接続元ノード装置処理を実行するノード装置自身の第１中継アドレスとの一致度が高い第１中継アドレスを送信した他のノード装置１の第２アドレスを優先して、ルーティングテーブルに追加して記憶部２２に記憶する記憶処理手段として機能する。特に、制御部２１は、記憶処理手段として、受信した他のノード装置１の第１中継アドレスと接続元ノード装置処理を実行するノード装置自身の第１中継アドレスとの一致度と、ルーティングテーブルに含まれる第４中継アドレスと接続元ノード装置処理を実行するノード装置自身の第１中継アドレスとの一致度とを比較する。そして、制御部２１は、記憶処理手段として、受信した他のノード装置１の第１中継アドレスの方が一致度が高いときには、当該第１中継アドレスとの一致度が低い第４中継アドレスをルーティングテーブルから削除し、受信した他のノード装置１の第１中継アドレスをルーティングテーブルに追加する。
【０１１３】
次に、図５に示すステップＳ２１において実行される接続先ノード装置処理について図１０のフローチャートを参照して具体的に説明する。
【０１１４】
図１０に示すように、送信先ノード装置処理が開始されると、制御部２１は、接続元ノード装置の経路情報やネットワークアドレスを含むノード情報を通信部２３を介して取得する（ステップＳ９０）。
【０１１５】
次に、制御部２１は、受信した経路情報と一致度が高い経路情報を有するノード装置をルーティングテーブルから上位一定数特定する（ステップＳ９１）。すなわち、制御部２１は、ルーティングテーブルに含まれるノード装置１の経路情報である第４中継アドレスのうち、受信した接続元ノード装置の経路情報と一致度が高い経路情報である第１中継アドレスに対応するノード装置を上位一定数特定する。
【０１１６】
その後、制御部２１は、ステップＳ９１で特定したノード装置の経路情報を含むノード情報を通信部２３を介して送信して（ステップＳ９２）、送信先ノード処理を終了する。
【０１１７】
［６．本発明の変形例］
なお、上述した各実施形態の説明は本発明の一例であり、本発明は上述の実施形態に限定されることはない。このため、上述した各実施形態以外であっても、本発明に係る技術的思想を逸脱しない範囲であれば、設計等に応じて種々の変更が可能であることは勿論である。
【０１１８】
例えば、上述の実施形態では、リクエスタ側でコンテンツホルダの優先順位を算出し、ダウンロード要求を送信するコンテンツホルダを決定していたが、ルートノード側でこの優先順位を決定し、リクエスタに送信するように構成してもよい。
【０１１９】
また、上述の実施形態では、ルートノードは、コンテンツホルダのネットワークアドレスのみをリクエスタに送信していたが、ネットワークアドレスとコンテンツホルダの第１中継アドレスを併せて送信するよう構成してもよい。このようにすることで、リクエスタは、コンテンツホルダの第１中継アドレスである第２中継アドレスをコンテンツホルダから取得する必要がなくなる。従って、制御部２１は、リクエスタとして機能するとき、記憶部２２に記憶したリクエスタ自身の第１中継アドレスと一致度が近い第２中継アドレスのコンテンツホルダを優先的に選択して、応答要求を行うことができる。
【０１２０】
また、上述の実施形態では、各ノード装置１は、コンタクトサーバ１０に問い合わせメッセージを送信するようにしたが、予め定められた特定装置であれば、特定のノード装置１へ問い合わせメッセージを送信するようにしてもよい。
【０１２１】
また、上述の実施形態では、コンテンツダウンロード処理時の応答要求の際に、接続元ノード装置処理を行うようにしたが、各ノード装置１は他のノード装置１と通信を行うときであれば、どのようなタイミングでもかまわない。例えば、ノード装置１は、情報通信システムＳへの参加の際やメッセージを受信したときに接続元ノード装置処理を行うようにしてもよい。接続元ノード装置処理のタイミングが多いと、ルーティングテーブルの更新も多くなるため、中継装置による中継回数をより低減することができる。
【０１２２】
また、上述したルーティングテーブルは、例えば、図１１に示すようなデータ構造で構成することができる。なお、ここでは、説明を簡易にするために、ノードＩＤを４桁の４進数としており、各ノードＩＤに対応づけられたノード情報をＡ，Ｂ，・・・，Ｙ，Ｚ，・・・としている。また、ノード情報は、第２アドレスと第４中継アドレスとが記憶されている。例えば、図１２に示すように、ノードＩＤ「０１００」のノード装置１のノード情報Ａとして、第２アドレスと第４中継アドレスとが記憶される。なお、図１２では、ノードＩＤ「０１００」のノード装置１の第４中継アドレスが、３つの中継装置のネットワークアドレスで構成されていることを示している。
【０１２３】
このような構成のルーティングテーブルでは、各プレフィックスのレベル毎に３台のノード装置のノード情報が含まれている。すなわち、最初の桁から最後の桁まで順次ＩＤ空間を４つずつ分けていき、ノード装置自身のノードＩＤと一致するＩＤ空間を除いたＩＤ空間に対応する他のノード装置１のノード情報を記憶部２２に記憶する。制御部２１は、このルーティングテーブルを更新するときには、このテーブルのノード装置１の第１中継アドレスのうち、新たに受信したノード装置１のノードＩＤとＩＤエリアが一致するノード装置１の第１中継アドレスと新たに受信したノード装置１の第１中継アドレスと比較する。すなわち、制御部２１は、ノード装置自身の第１中継アドレスとどちらが一致度が高いかを判定する。そして、新たに受信したノード装置１の第１中継アドレスがノード装置自身の第１中継アドレスとの一致度が高い場合には、制御部２１は、新たに受信したノード装置１のノード情報に入れ替えてルーティングテーブルを更新する。尚、本実施形態に記載のルーティングテーブルの詳細は、特開２００６−１９７４００公報等で公知であるので、詳しい説明を省略する。
【０１２４】
例えば、図１１に示す、「レベル１」かつ「０ｘｘｘ」（ｘは任意の数）のＩＤエリアに対応するノードＩＤとして、ノードＩＤ「０３２１」のノード情報を新たに受信したとき、制御部２１は、ノードＩＤ「０１００」のノード情報と入れ替えるかどうかを判定する。このとき、制御部２１は、ノードＩＤ「０３２１」のノード装置１の第１中継アドレスとノードＩＤ「０１００」のノード装置１の第１中継アドレスとの、どちらがノード装置自身の第１中継アドレスとの一致度が高いかを比較する。そして、ノードＩＤ「０３２１」のノード装置１の第１中継アドレスの方がノード装置自身の第１中継アドレスとの一致度が高いとき、制御部２１は、ルーティングテーブルから、ノードＩＤ「０１００」のノード情報を削除し、ノードＩＤ「０３２１」のノード情報に入れ替える。
【０１２５】
なお、このルーティングテーブルの更新方法は、一例であり、必要に応じて様々な更新方法を採用することができる。
【符号の説明】
【０１２６】
Ｓ  情報通信システム
１  ノード装置
１１，１３，１４  中継装置
２１  ノード装置の制御部
２２  ノード装置の記憶部
２３  ノード装置の通信部
【図１】
2011055139.tif 000003
【図２】
2011055139.tif 000004
【図３】
2011055139.tif 000005
【図４】
2011055139.tif 000006
【図５】
2011055139.tif 000007
【図６】
2011055139.tif 000008
【図７】
2011055139.tif 000009
【図８】
2011055139.tif 000010
【図９】
2011055139.tif 000011
【図１０】
2011055139.tif 000012
【図１１】
2011055139.tif 000013
【図１２】
2011055139.tif 000014