(57)【要約】      （修正有）【課題】効率良く待ち受けポート番号を取得可能なネットワークシステムを提供する。【解決手段】互いに接続可能な複数のノード装置を備えたネットワークシステムにおいて、夫々のノード装置は、自己又は自己がネットワークに接続するために必要な中継機器に一意に割り当てられた識別情報、及び共通の関数を記憶する記憶手段と、共通の関数を用いて、自己又は中継機器に割り当てられた識別情報に対応する第１ポート番号生成し、生成された第１ポート番号を待ち受けポート番号として設定し、他のノード装置に接続する場合に、他のノード装置がネットワークに接続するために必要な中継機器に一意に割り当てられた識別情報を取得し、共通の関数を用いて、取得された識別情報に対応する第２ポート番号を生成し、第２ポート番号に基づいて他のノード装置との間の接続を確立する。【選択図】図４
2006319384.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して互いに接続可能な複数のノード装置を備えたネットワークシステムにおいて、
夫々の前記ノード装置は、
自己又は自己が前記ネットワークに接続するために必要な中継機器に一意に割り当てられた識別情報、及び当該ネットワークシステムにおいて共通の関数を記憶する記憶手段と、
前記共通の関数を用いて、自己又は前記中継機器に割り当てられた前記識別情報に対応する第１ポート番号を生成する第１ポート番号生成手段と、
前記生成された第１ポート番号を待ち受けポート番号として設定する待ち受けポート設定手段と、
他の前記ノード装置に接続する場合に、当該他のノード装置又は当該他のノード装置が前記ネットワークに接続するために必要な中継機器に一意に割り当てられた識別情報を取得する識別情報取得手段と、
前記共通の関数を用いて、前記取得された識別情報に対応する第２ポート番号を生成する第２ポート番号生成手段と、
前記生成された第２ポート番号に基づいて前記他のノード装置との間の接続を確立する接続確立手段と、
を備えることを特徴とするネットワークシステム。
【請求項２】
請求項１に記載のネットワークシステムにおいて、
前記第１ポート番号生成手段及び前記第２ポート番号生成手段は、前記共通の関数を用いて生成された前記ポート番号がウェルノウンポート番号と重複する場合には、前記ウェルノウンポート番号と重複しなくなるように、当該生成されたポート番号に対して所定の演算を施した結果の番号を前記ポート番号とすることを特徴とするネットワークシステム。
【請求項３】
請求項１に記載のネットワークシステムにおいて、
前記夫々のノード装置における共通の関数は、定期的に更新され、前記夫々のノード装置における待ち受けポート番号が定期的に設定し直されることを特徴とするネットワークシステム。
【請求項４】
請求項１に記載のネットワークシステムにおいて、
前記夫々のノード装置の記憶手段には、複数の前記共通の関数が予め記憶されており、
前記夫々のノード装置における前記第１ポート番号生成手段は、一定時間毎に前記記憶手段に記憶された複数の共通の関数のうちから一の共通の関数を取得し、これを用いて前記第１ポート番号を生成し、前記待ち受けポート設定手段は、当該生成された第１ポート番号を前記待ち受けポート番号として設定し直し、
前記夫々のノード装置における前記第２ポート番号生成手段は、前記待ち受けポート設定手段による前記待ち受けポート番号の設定し直しに同期して、用いるべき前記共通の関数を変更することを特徴とするネットワークシステム。
【請求項５】
請求項１に記載のネットワークシステムにおいて、
前記共通の関数は、前記ネットワークを介して前記夫々のノード装置に対して定期的に配信されて前記記憶手段に記憶され、
前記夫々のノード装置における前記第１ポート番号生成手段は、前記配信された共通のハッシュ関数を用いて前記第１ポート番号を生成し、前記待ち受けポート設定手段は、当該生成された第１ポート番号を前記待ち受けポート番号として設定し直し、
前記夫々のノード装置における前記第２ポート番号生成手段は、前記待ち受けポート設定手段による前記待ち受けポート番号の設定し直しに同期して、用いるべき前記共通の関数を変更することを特徴とするネットワークシステム。
【請求項６】
請求項１乃至５の何れか一項に記載のネットワークシステムにおいて、
前記共通の関数は、ハッシュ関数であることを特徴とするネットワークシステム。
【請求項７】
請求項１乃至６の何れか一項に記載のネットワークシステムにおいて、
前記識別情報は、ＩＰアドレス、又はノードＩＤであることを特徴とするネットワークシステム。
【請求項８】
ネットワークを介して互いに接続可能な複数のノード装置を備えたネットワークシステムにおけるノード装置であって、
自己又は自己が前記ネットワークに接続するために必要な中継機器に一意に割り当てられた識別情報、及び当該ネットワークシステムにおいて共通の関数を記憶する記憶手段と、
前記共通の関数を用いて、自己又は前記中継機器に割り当てられた前記識別情報に対応する第１ポート番号を生成する第１ポート番号生成手段と、
前記生成された第１ポート番号を待ち受けポート番号として設定する待ち受けポート設定手段と、
他の前記ノード装置に接続する場合に、当該他のノード装置又は当該他のノード装置が前記ネットワークに接続するために必要な中継機器に一意に割り当てられた識別情報を取得する識別情報取得手段と、
前記共通の関数を用いて、前記取得された識別情報に対応する第２ポート番号を生成する第２ポート番号生成手段と、
前記生成された第２ポート番号に基づいて前記他のノード装置との間の接続を確立する接続確立手段と、
を備えることを特徴とするノード装置。
【請求項９】
コンピュータを、請求項４に記載のノード装置として機能させることを特徴とするプログラム。
【請求項１０】
ネットワークを介して互いに接続可能な複数のノード装置を備えたネットワークシステムにおける接続確立方法であって、
夫々の前記ノード装置が、自己又は自己が前記ネットワークに接続するために必要な中継機器に一意に割り当てられた識別情報、及び当該ネットワークシステムにおいて共通の関数を記憶する工程と、
前記夫々のノード装置が、前記共通の関数を用いて、自己又は前記中継機器に割り当てられた前記識別情報に対応する第１ポート番号を生成する工程と、
前記夫々のノード装置が、前記生成された第１ポート番号を待ち受けポート番号として設定する工程と、
他の前記ノード装置に接続する場合に、当該他のノード装置又は当該他のノード装置が前記ネットワークに接続するために必要な中継機器に一意に割り当てられた識別情報を取得する工程と、
前記１のノード装置が、前記共通の関数を用いて、前記取得された識別情報に対応する第２ポート番号を生成する工程と、
前記１のノード装置が、前記生成された第２ポート番号に基づいて前記他のノード装置との間の接続を確立する工程と、
を備えることを特徴とする接続確立方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して互いに接続可能な複数のノード装置を備えたネットワークシステムに関し、特に、１のノード装置が他のノード装置との間で接続を確立する方法等の技術分野に関する。
【背景技術】
【０００２】
インターネット等により構築されたネットワーク上において、例えばパーソナルコンピュータ等の端末が、目的のサーバに接続して情報の提供を受けるためには、一般に、そのサーバのＩＰ（Internet Protocol）アドレス及びポート番号（待ち受けポート番号）を取得する必要がある。
【０００３】
ここで、ポート番号とは、ネットワーク上において、ＩＰアドレスの下に設けられた補助アドレスであり、アプリケーション（ソフトウェア）の種類を区別するために（つまり、アプリケーション層からトランスポート層への接続口を意味する）使われる。
【０００４】
特許文献１には、端末が接続仲介サーバから目的のサーバのＩＰアドレス及びポート番号を予め取得し、当該サーバのＩＰアドレス及びポート番号を用いて、当該サーバに接続することが開示されている。
【０００５】
ところで、近年、クライアント（ノード装置）間でネットワークを介して相互接続し、情報の授受を行うピアツーピア（Peer to Peer（P2P））型のネットワークシステムが注目されている。音楽配信で有名なNapster（ナプスタ）やGnutella（グヌーテラ）がその例である。
【０００６】
このようなＰ２Ｐ型のネットワークシステムにおいては、映画、音楽等の様々なコンテンツデータを多くのノード装置に分散して保存させておき、例えば、公知の分散ハッシュテーブル（以下、ＤＨＴ（Distributed Hash Table）という）を利用した検索方法によって、あるノード装置が、所望のコンテンツデータの所在、つまり、当該コンテンツデータを保存しているノード装置のＩＰアドレスを取得することで当該コンテンツデータを取得することが可能になっている。
【特許文献１】特開２００４−１９４０１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来のＰ２Ｐ型のネットワークシステムにおいては、ＤＨＴを利用した検索方法によって所望のコンテンツデータを保存しているノード装置のＩＰアドレスを効率良く取得することができるが、待ち受けポート番号を効率良く取得する方法は確立されていない。
【０００８】
当該ポート番号を取得する方法の一例として、ノード装置が例えば上記接続仲介サーバのようなポート番号紹介（照会）サーバに接続して、目的のノード装置の待ち受けポート番号を問い合わせて取得する方法が考えられるが、この方法では、コンテンツデータの検索が行われる度に、ポート番号紹介サーバへの問い合わせが行われることになり、待ち受けポート番号を取得するまで時間がかかる上、ポート番号紹介サーバの負担が大きくなる。
【０００９】
一方、全てのノード装置の待ち受けポート番号を同一にすれば、ポート番号紹介サーバが必要とはならないが、これでは、セキュリティ上望ましくない。
【００１０】
本発明は、以上の問題等に鑑みてなされたものであり、ポート番号紹介サーバを必要とすることなく、かつ、セキュリティの向上を図りつつ、より効率良く待ち受けポート番号を取得可能なネットワークシステム、接続確立方法、及びノード装置等を提供することを課題とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、請求項１に記載の発明は、ネットワークを介して互いに接続可能な複数のノード装置を備えたネットワークシステムにおいて、夫々の前記ノード装置は、自己又は自己が前記ネットワークに接続するために必要な中継機器に一意に割り当てられた識別情報、及び当該ネットワークシステムにおいて共通の関数を記憶する記憶手段と、前記共通の関数を用いて、自己又は前記中継機器に割り当てられた前記識別情報に対応する第１ポート番号を生成する第１ポート番号生成手段と、前記生成された第１ポート番号を待ち受けポート番号として設定する待ち受けポート設定手段と、他の前記ノード装置に接続する場合に、当該他のノード装置又は当該他のノード装置が前記ネットワークに接続するために必要な中継機器に一意に割り当てられた識別情報を取得する識別情報取得手段と、前記共通の関数を用いて、前記取得された識別情報に対応する第２ポート番号を生成する第２ポート番号生成手段と、前記生成された第２ポート番号に基づいて前記他のノード装置との間の接続を確立する接続確立手段と、を備えることを特徴とする。
【００１２】
この発明によれば、各ノード装置の待ち受けポート番号は、各ノード装置に一意に割り当てられた識別情報が、共通の関数により生成され設定されるので、セキュリティの向上を図ることができるとともに、各ノード装置は、ポート番号紹介サーバに照会することなく、接続相手のノード装置の待ち受けポート番号を上記共通の関数を用いて効率良く取得することができる。
【００１３】
また、請求項２に記載の発明は、請求項１に記載のネットワークシステムにおいて、前記第１ポート番号生成手段及び前記第２ポート番号生成手段は、前記共通の関数を用いて生成された前記ポート番号がウェルノウンポート番号と重複する場合には、前記ウェルノウンポート番号と重複しなくなるように、当該生成されたポート番号に対して所定の演算を施した結果の番号を前記ポート番号とすることを特徴とする。
【００１４】
この発明によれば、ウェルノウンポート番号と重複することなく、適切な待ち受けポート番号を設定することができる。
【００１５】
請求項３に記載の発明は、請求項１に記載のネットワークシステムにおいて、前記夫々のノード装置における共通の関数は、定期的に更新され、前記夫々のノード装置における待ち受けポート番号が定期的に設定し直されることを特徴とする。
【００１６】
この発明によれば、より一層、セキュリティの向上を図ることができる。
【００１７】
請求項４に記載の発明は、請求項１に記載のネットワークシステムにおいて、前記夫々のノード装置の記憶手段には、複数の前記共通の関数が予め記憶されており、前記夫々のノード装置における前記第１ポート番号生成手段は、一定時間毎に前記記憶手段に記憶された複数の共通の関数のうちから一の共通の関数を取得し、これを用いて前記第１ポート番号を生成し、前記待ち受けポート設定手段は、当該生成された第１ポート番号を前記待ち受けポート番号として設定し直し、前記夫々のノード装置における前記第２ポート番号生成手段は、前記待ち受けポート設定手段による前記待ち受けポート番号の設定し直しに同期して、用いるべき前記共通の関数を変更することを特徴とする。
【００１８】
この発明によれば、一定時間毎に前記用いられる共通の関数が変更されるので、より一層、セキュリティの向上を図ることができる。
【００１９】
請求項５に記載の発明は、請求項１に記載のネットワークシステムにおいて、前記共通の関数は、前記ネットワークを介して前記夫々のノード装置に対して定期的に配信されて前記記憶手段に記憶され、前記夫々のノード装置における前記第１ポート番号生成手段は、前記配信された共通のハッシュ関数を用いて前記第１ポート番号を生成し、前記待ち受けポート設定手段は、当該生成された第１ポート番号を前記待ち受けポート設定手段として設定し直し、前記夫々のノード装置における前記第２ポート番号生成手段は、前記待ち受けポート設定手段による前記待ち受けポート番号の設定し直しに同期して、用いるべき前記共通の関数を変更することを特徴とする。
【００２０】
この発明によれば、一定時間毎に前記用いられる共通の関数が変更されるので、より一層、セキュリティの向上を図ることができる。
【００２１】
請求項６に記載の発明は、請求項１乃至５の何れか一項に記載のネットワークシステムにおいて、前記共通の関数は、ハッシュ関数であることを特徴とする。
【００２２】
この発明によれば、各ノード装置の待ち受けポート番号ができるだけ異なる番号になり、分散されるので、より一層のセキュリティの向上を図ることができる。
【００２３】
請求項７に記載の発明は、請求項１乃至６の何れか一項に記載のネットワークシステムにおいて、前記識別情報は、ＩＰアドレス、又はノードＩＤであることを特徴とする。
【００２４】
この発明によれば、各ノード装置が接続先となるノード装置のＩＰアドレス又はノードＩＤを取得しやすい環境（例えば、ノード装置のＩＰアドレス及びノードＩＤが登録されたＤＨＴが用いられるネットワークシステム）において特に有効である。
【００２５】
請求項８に記載の発明は、ネットワークを介して互いに接続可能な複数のノード装置を備えたネットワークシステムにおけるノード装置であって、自己又は自己が前記ネットワークに接続するために必要な中継機器に一意に割り当てられた識別情報、及び当該ネットワークシステムにおいて共通の関数を記憶する記憶手段と、前記共通の関数を用いて、自己又は前記中継機器に割り当てられた前記識別情報に対応する第１ポート番号を生成する第１ポート番号生成手段と、前記生成された第１ポート番号を待ち受けポート番号として設定する待ち受けポート設定手段と、他の前記ノード装置に接続する場合に、当該他のノード装置又は当該他のノード装置が前記ネットワークに接続するために必要な中継機器に一意に割り当てられた識別情報を取得する識別情報取得手段と、前記共通の関数を用いて、前記取得された識別情報に対応する第２ポート番号を生成する第２ポート番号生成手段と、前記生成された第２ポート番号に基づいて前記他のノード装置との間の接続を確立する接続確立手段と、を備えることを特徴とする。
【００２６】
請求項９に記載にプログラムは、コンピュータを、請求項４に記載のノード装置として機能させることを特徴とする。
【００２７】
請求項１０に記載の発明は、ネットワークを介して互いに接続可能な複数のノード装置を備えたネットワークシステムにおける接続確立方法であって、夫々の前記ノード装置が、自己又は自己が前記ネットワークに接続するために必要な中継機器に一意に割り当てられた識別情報、及び当該ネットワークシステムにおいて共通の関数を記憶する工程と、前記夫々のノード装置が、前記共通の関数を用いて、自己又は前記中継機器に割り当てられた前記識別情報に対応する第１ポート番号を生成する工程と、前記夫々のノード装置が、前記生成された第１ポート番号を待ち受けポート番号として設定する工程と、他の前記ノード装置に接続する場合に、当該他のノード装置又は当該他のノード装置が前記ネットワークに接続するために必要な中継機器に一意に割り当てられた識別情報を取得する工程と、前記１のノード装置が、前記共通の関数を用いて、前記取得された識別情報に対応する第２ポート番号を生成する工程と、前記１のノード装置が、前記生成された第２ポート番号に基づいて前記他のノード装置との間の接続を確立する工程と、を備えることを特徴とする。
【発明の効果】
【００２８】
本発明によれば、各ノード装置の待ち受けポート番号は、各ノード装置に一意に割り当てられた識別情報が、共通の関数により生成され設定されるので、セキュリティの向上を図ることができるとともに、各ノード装置は、ポート番号紹介サーバに照会することなく、接続相手のノード装置の待ち受けポート番号を上記共通の関数を用いて効率良く取得することができる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ配信システムに対して本発明を適用した場合の実施形態である。
【００３０】
［１．コンテンツ配信システムの構成等］
始めに、図１を参照して、コンテンツ配信システムの概要構成等について説明する。
【００３１】
図１は、本実施形態に係るコンテンツ配信システムにおける各ノード装置の接続態様の一例を示す図である。
【００３２】
図１の下部枠１０１内に示すように、ＩＸ（Internet eＸchange）３、ＩＳＰ（Internet Service Provider）４、ＤＳＬ（Digital Subscriber Line）回線事業者（の装置）５、ＦＴＴＨ（Fiber To The Home）回線事業者（の装置）６、ルータ（図示せず）及び通信回線（例えば、電話回線や光ケーブル等）７等によって、インターネット等のネットワーク（現実世界のネットワーク）８が構築されている。
【００３３】
コンテンツ配信システムＳは、このようなネットワーク８を介して相互に接続可能な複数のノード装置１ａ，１ｂ，１ｃ・・・１ｘ，１ｙ，１ｚ・・・を備えて構成されることになり、ピアツーピア方式のネットワークシステムとなっている。
【００３４】
各ノード装置１ａ，１ｂ，１ｃ・・・１ｘ，１ｙ，１ｚ・・には、識別情報としての固有の製造番号及びＩＰ（Internet Protocol）アドレス（以下、単に、「ＩＰアドレス」という場合は、グローバルＩＰアドレスを示す）が割り当てられる。なお、製造番号及びＩＰアドレスは、複数のノード装置１間で重複しないものである。また、以下の説明において、ノード装置１ａ，１ｂ，１ｃ・・・１ｘ，１ｙ，１ｚ・・・を総称して「ノード１」というものとする。
【００３５】
そして、このコンテンツ配信システムＳにおいては、特定のアルゴリズム、例えば、ＤＨＴを利用したアルゴリズムによって、図１の上部枠１００内に示すような、オーバーレイネットワーク９が構築されることになる。つまり、このオーバーレイネットワーク９は、既存のネットワーク８を用いて形成された仮想的なリンクを構成するネットワークを意味する。
【００３６】
本実施形態においては、ＤＨＴを利用したアルゴリズムによって構築されたオーバーレイネットワーク９を前提としており、このオーバーレイネットワーク９上に配置されたノード１を、オーバーレイネットワーク９に参加しているノード１という。オーバーレイネットワーク９への参加は、未だ参加していないノード１が、既に参加している任意のノード１に対して参加要求を送ることによって行われる。
【００３７】
また、オーバーレイネットワーク９に参加している各ノード１は、ノードＩＤを有しており、当該ノードＩＤは、例えば、ＩＰアドレスあるいは製造番号を共通のハッシュ関数（例えば、ＳＨＡ−１等のハッシュ関数（以下、「ノードＩＤ用ハッシュ関数」という）によりハッシュ化した値（例えば、ｂｉｔ長は１６０ｂｉｔ）であり、一つのＩＤ空間に偏りなく分散して配置されることになる。このようにノードＩＤ用ハッシュ関数により求められた（ハッシュ化された）ノードＩＤは、当該ＩＰアドレスあるいは製造番号が異なれば、同じ値になる確率が極めて低いものである。なお、ハッシュ関数については公知であるので詳しい説明を省略する。
【００３８】
また、オーバーレイネットワーク９に参加している各ノード１は、夫々、ＤＨＴを保持している。このＤＨＴには、他のノード１への経路情報、すなわち、ノードＩＤ空間内で適度に離れた他のノード１のノードＩＤとそのＩＰアドレスが、複数登録されている。このようなＤＨＴは、ノード１がオーバーレイネットワーク９に参加する際に与えられることになる。また、コンテンツ配信システムＳにおいては、ノード１がオーバーレイネットワーク９への参加若しくは脱退を行うため、定期的に（例えば数十分から数時間間隔で）ＤＨＴの更新が必要かどうかが確認されると共に、その更新情報が他のノード１のＤＨＴに登録されている経路を介して伝達されるようになっている。これにより、ＤＨＴを最新の状態に保つことが可能となる。なお、ＤＨＴの生成方法については公知であるので詳しい説明を省略する。
【００３９】
また、オーバーレイネットワーク９に参加している何れか複数のノード１には、配信情報としてのコンテンツ（例えば、映画や音楽等）データが分散されて保存（格納）されている。例えば、ノード１ａには、タイトルがＸＸＸの映画のコンテンツデータが保存されており、一方、ノード１ｂには、タイトルがＹＹＹの映画のコンテンツデータが保存されるというように、互いに異なるコンテンツデータが、複数のノード１に分散されて保存される。また、あるコンテンツデータは、１つのノード１に保存されているとは限らず、複数のノード１に同じコンテンツデータが保存されうる。これらのコンテンツデータには、夫々、コンテンツ名（タイトル）等が付与されている。
【００４０】
更に、このように分散保存されている各コンテンツデータ毎の所在を示す所在情報（例えば、コンテンツデータが保存されているノード（以下、「コンテンツホルダ」という）のＩＰアドレス）もまた、オーバーレイネットワーク９に参加している複数のノード１に分散して保存されている。例えば、あるコンテンツデータのコンテンツ名（或いは、当該コンテンツデータの先頭数バイトでも良い）が、上記ノードＩＤ用ハッシュ関数によりハッシュ化され（つまり、ノード１のＩＰアドレスのハッシュ値と同一のＩＤ空間に配置）、そのハッシュ値（当該ハッシュ値がコンテンツＩＤとなる）と最も近い（例えば、上位桁がより多く一致する）ノードＩＤを有するノード１（以下、「ルートノード」という）に、当該コンテンツデータの所在情報が保存されることになる。つまり、同一のコンテンツデータ（コンテンツＩＤが同一）が、夫々、複数のコンテンツホルダに保存されている場合であっても、かかるコンテンツデータの所在を示す所在情報（複数のコンテンツホルダのＩＰアドレス等）は、１つのルートノードで管理することができる。
【００４１】
そして、あるコンテンツデータを取得（ダウンロード）したいユーザが使用するノード（以下、これを「ユーザノード」という）は、ルートノードからコンテンツデータの所在を示す所在情報を取得して、これに基づきコンテンツホルダに接続し、当該コンテンツデータを取得することになる。
【００４２】
図２は、ＤＨＴのノードＩＤ空間において、ユーザノードが所在情報を取得する場合におけるＤＨＴルーティングの一例を示す図である。
【００４３】
図２の例では、ユーザノード１ａが、所望のコンテンツデータのコンテンツＩＤが付加されたクエリ（問合せ情報）を他のノード１に対して送出することにより、当該クエリは、ＤＨＴルーティングによっていくつかのノード（以下、これを「中継ノード」という）を経由してそのコンテンツデータの所在を示す所在情報を保存しているルートノード１ｂに辿り着く。上記各中継ノード１ｎは、受信したクエリに付加されたコンテンツＩＤと、ＤＨＴに登録されているノードＩＤとを比較して、次に転送すべきノード１を特定（例えば、コンテンツＩＤの上位数桁が一致するノードＩＤに対応するノード１のＩＰアドレスを特定）し、そこにクエリを転送することになる。こうして、ユーザノード１ａは、上記ルートノード１ｂから所在情報を取得（受信）して、コンテンツホルダ１ｃから上記コンテンツデータを取得（受信）することになる。
【００４４】
なお、ユーザノード１ａからルートノード１ｂに至るまでのＤＨＴを用いたクエリの転送方法は、例えば「Ｐａｓｔｒｙ」等で公知であるので更なる詳しい説明を省略する。また、クエリがルートノードに辿り着くまでの間に当該ルートノードと同じ所在情報をキャッシュしているノード１から当該所在情報が取得（受信）されるように構成してもよい。
【００４５】
このようなコンテンツ配信システムＳにおいて、上記各ノード１は、コンテンツ配信システムＳにおける各ノード１間において共通の関数であるハッシュ関数（以下、「ポート番号用ハッシュ関数」という。これは、上記ノードＩＤ用ハッシュ関数と同一のハッシュ関数であってもよいし、異なるハッシュ関数であっても良い）を用いて、例えば自己に割り当てられているＩＰアドレスに対応するポート番号（第１ポート番号）を生成（例えば、ＩＰアドレスをポート番号用ハッシュ関数にかけ、求めた値の下位１６ビット（１６進数で４桁（最大値“ＦＦＦＦｈ”））をポート番号とする）し、当該ポート番号を待ち受けポート番号として設定するようになっている。そして、あるノード１が、他のノード１にＩＰアドレスを用いて接続する場合に、上記共通のポート番号用ハッシュ関数を用いて、当該他のノード１のＩＰアドレスに対応するポート番号（第２ポート番号）を生成（例えば、ＩＰアドレスをポート番号用ハッシュ関数にかけ、求めた値の下位１６ビット（１６進数で４桁）をポート番号とする）し、当該ポート番号を宛先ポート番号として当該他のノード１との間の接続を確立するようになっている。
【００４６】
なお、ポート番号用ハッシュ関数にかける対象としてはＩＰアドレスに限られず、各ノード１に固有の識別情報であって他のノード１から取得可能な識別情報であれば如何なるものでも適用可能であり、例えば、ノードＩＤ、ＭＡＣアドレスであっても構わない。
【００４７】
また、プライベートＩＰアドレスが割り当てられたノード１が、企業等の組織のイントラネット等に接続されており、インターネット（グローバルネットワーク）に接続するときに、自己の中継機器としてのＮＡＴ（Network Address Translation）機能搭載ルータがＩＰパケット中のプライベートＩＰアドレスをグローバルＩＰアドレスに変換して通信するような（つまり、ノード１がＮＡＴ機能搭載ルータの内側に存在する）場合、プライベートＩＰアドレスは他のノード１と重複する場合があるので、ポート番号用ハッシュ関数にかける対象とすることができない。かかる場合、当該ノード１がインターネットに接続するために必要な中継機器としてのＮＡＴ機能搭載ルータ（図示せず）に割り当てられているグローバルＩＰアドレスを、当該ノード１の固有の識別情報とし、上記共通のポート番号用ハッシュ関数を用いて、当該グローバルＩＰアドレスに対応するポート番号を生成して、これを当該ノード１の待ち受けポート番号としてＮＡＴ機能搭載ルータにおいて設定する。そして、当該ＮＡＴ機能搭載ルータの待ち受けポートに送信されてきたデータは、当該ノード１に転送（ポートフォワーディング）されるように設定される。
【００４８】
ところで、ポート番号には、公知の如く、１０進数で０から６５５３５（１６進数で０からＦＦＦＦ）までの数字が使用されるが、このうち、０から１０２３までは、ウェルノウンポート番号（Well-known port：言い換えれば、予約されたポート番号）であり（例えば、２５番のポート番号の場合、ＳＭＴＰ（Simple Mail Transfer Protocol）を指定することになる）、各ノード１が自由に使用することができない。従って、例えば、上記生成されたポート番号が１０２４未満の値となる（ウェルノウンポート番号と重複する）場合には、当該ウェルノウンポート番号と重複しなくなるように、当該生成されたポート番号に対して所定の演算を施した結果の番号を待ち受けポート番号とする（詳細は後述）。
【００４９】
［２．ノードの構成等］
次に、図３等を参照して、コンテンツ配信システムＳにおけるノード１の構成及び機能について説明する。
【００５０】
図３は、ノード１の概要構成例を示す図である。
【００５１】
各ノード１は、図３に示すように、演算機能を有するＣＰＵ，作業用ＲＡＭ，各種データ及びプログラムを記憶するＲＯＭ等から構成されたコンピュータとしての制御部１１と、ノードＩＤ用ハッシュ関数、ポート番号用ハッシュ関数、上記コンテンツデータ、上記所在情報、ＤＨＴ及びプログラム等を記憶保存（格納）するためのＨＤＤ等から構成された記憶手段としての記憶部１２（上記コンテンツデータ及び上記所在情報は、保存されていないノード１もある）と、受信されたコンテンツデータを一時蓄積するバッファメモリ１３と、コンテンツデータに含まれるエンコードされたビデオデータ（映像情報）及びオーディオデータ（音声情報）等をデコード（データ伸張や復号化等）するデコーダ部１４と、当該デコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部１５と、当該映像処理部１５から出力されたビデオ信号に基づき映像表示するＣＲＴ，液晶ディスプレイ等の表示部１６と、上記デコードされたオーディオデータをアナログオーディオ信号にＤ（Digital）／Ａ（Analog）変換した後これをアンプにより増幅して出力する音声処理部１７と、当該音声処理部１７から出力されたオーディオ信号を音波として出力するスピーカ１８と、ネットワーク８を通じて他のノード１との間の情報の通信制御を行うための通信部２０と、ユーザからの指示を受け付け当該指示に応じた指示信号を制御部１１に対して与える入力部（例えば、キーボード、マウス、或いは、操作パネル等）２１と、を備えて構成され、制御部１１、記憶部１２、バッファメモリ１３、デコーダ部１４、通信部２０、及び入力部２１はバス２２を介して相互に接続されている。なお、ノード１としては、ＳＴＢ（Set Top Box）やパーソナルコンピュータを適用可能である。
【００５２】
そして、制御部１１は、ＣＰＵが記憶部１２等に記憶された各種プログラムを実行することにより、ノード１全体を統括制御するようになっており、上述したユーザノード１ａ、ルートノード１ｂ、コンテンツホルダ１ｃ、及び中継ノード１ｎの何れの動作を行うことが可能になっている。そして、制御部１１は、本発明の第１ポート番号生成手段、待ち受けポート設定手段、識別情報取得手段、第２ポート番号生成手段、及び接続確立手段として機能し、後述する各種処理を行うようになっている。
【００５３】
なお、上記プログラムは、例えば、ネットワーク８上の所定のサーバからダウンロードされるようにしてもよいし、例えば、ＣＤ−ＲＯＭ等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしてもよい。
【００５４】
［３．コンテンツ配信システムの動作］
次に、コンテンツ配信システムＳの動作について実施形態１と実施形態２に分けて夫々、説明する。
【００５５】
（実施形態１）
始めに、実施形態１におけるコンテンツ配信システムＳの動作について、図４乃至図７等を参照して説明する。なお、実施形態１では、ＩＰアドレスをポート番号用ハッシュ関数にかける対象とした場合の実施形態である。
【００５６】
図４は、ノードの制御部１１における待ち受けポート番号設定処理を示すフローチャートであり、図５は、ユーザノードの制御部１１におけるコンテンツデータ検索処理を示すフローチャートであり、図６は、中継ノード又はルートノードの制御部１１におけるコンテンツデータの検索処理を示すフローチャートであり、図７は、ユーザノードの制御部１１におけるコンテンツデータの取得処理を示すフローチャートである。
【００５７】
図４の処理は、例えばユーザが入力部２１を操作して、オーバーレイネットワーク９への参加要求指示を入力した場合に開始され、制御部１１は、先ず、自己のノード１がＮＡＴ機能搭載ルータの内側に存在するか否かを判別する（ステップＳ１）。自己がＮＡＴ機能搭載ルータの内側に存在しない場合（ステップＳ１：Ｎ）、ステップＳ２に移行し、自己がＮＡＴ機能搭載ルータの内側に存在する場合（ステップＳ１：Ｙ）、ステップＳ６に移行する。
【００５８】
ステップＳ２では、制御部１１は、自己のノード１に割り当てられているＩＰアドレスをポート番号用ハッシュ関数によりハッシュ化し、これにより求めたハッシュ値の下位１６ビット（１６進数で４桁）をポート番号として抽出する（ステップＳ２）。例えば、ポート番号用ハッシュ関数により求められたハッシュ値が“Ａ３１７８６９２ｈ”（末尾のｈは１６進数を示す）であったと仮定すると、下位２バイト“８６９２ｈ”が抽出される。
【００５９】
次いで、制御部１１は、ポート番号として抽出された値が“４００ｈ”（１６進数：１０進数で１０２４）未満であるか否かを判別し（ステップＳ３）、“４００ｈ”未満でない場合には（ステップＳ３：Ｎ）、当該ポート番号として抽出された値を待ち受けポート番号として設定（開放）し（ステップＳ５）、ステップＳ１３に移行する。一方、抽出された値が“４００ｈ”未満である場合（ステップＳ３：Ｙ）、つまり、抽出された値がウェルノウンポート番号と重複する場合には、制御部１１は、例えば、当該ポート番号として抽出された値に“４Ｅ２０ｈ” （１６進数：１０進数で２００００）を加算して（ステップＳ４）得た値（つまり、ウェルノウンポート番号と重複しなくなるように、当該生成されたポート番号に対して所定の演算を施した結果の番号）を待ち受けポート番号として設定（開放）し（ステップＳ５）、ステップＳ１３に移行する。
【００６０】
一方、ステップＳ６では、制御部１１は、自己のノード１が接続するＮＡＴ機能搭載ルータのＩＰアドレスを取得する。そして、制御部１１は、当該取得したＩＰアドレスをポート番号用ハッシュ関数によりハッシュ化し、これにより求めたハッシュ値の下位１６ビット（１６進数で４桁）をポート番号として抽出する（ステップＳ７）。
【００６１】
次いで、制御部１１は、ステップＳ３と同様、ポート番号として抽出された値が“４００ｈ”未満であるか否かを判別し（ステップＳ８）、“４００ｈ”未満でない場合には（ステップＳ８：Ｎ）、ステップＳ１０に移行し、“４００ｈ”未満である場合には（ステップＳ８：Ｙ）、当該ポート番号として抽出された値に“４Ｅ２０ｈ”（１６進数：１０進数で２００００）を加算して（ステップＳ９）、ステップＳ１０に移行する。
【００６２】
ステップＳ１０では、制御部１１は、ステップＳ７若しくはステップＳ９で得たポート番号が、他のノード１の待ち受けポート番号として既に使用中であるか否かをＮＡＴ機能搭載ルータに問い合わせることによって判別する。つまり、ＮＡＴ機能搭載ルータの内側にノード１が複数存在し、既に他のノード１によりＮＡＴ機能搭載ルータのＩＰアドレスから得られたポート番号が待ち受けポート番号として設定されているか否かが判別される。
【００６３】
そして、ステップＳ７若しくはステップＳ９で得られたポート番号が他のノード１により使用中でない場合には（ステップＳ１０：Ｎ）、制御部１１は、当該ポート番号を待ち受けポート番号として設定（開放）し（ステップＳ１１）、ステップＳ１３に移行する。かかる設定では、ＮＡＴ機能搭載ルータに対して、当該ノード１の上記ポート番号を待ち受けポート番号として設定する指令がなされ（ポートフォワーディング設定）、これによりＮＡＴ機能搭載ルータにおいて当該ノード１の待ち受けポート番号が設定される。
【００６４】
一方、ステップＳ７若しくはステップＳ９で得られたポート番号が他のノード１により使用中である場合には（ステップＳ１０：Ｙ）、制御部１１は、例えば表示部１６における表示画面上に他のノード１によってポート番号が使用中である旨（例えば、「他のノードによってポート番号が使用されています」）等のメッセージを表示させ（ステップＳ１２）、当該処理を終了する。
【００６５】
そして、ステップＳ１３では、制御部１１は、既にオーバーレイネットワーク９に参加している任意のノード１のＩＰアドレスを取得する（例えば、ノード１の出荷時に記憶部１２に記憶されていてもよいし、ネットワーク３に接続された所定のサーバから取得しても良い）。
【００６６】
次いで、制御部１１は、当該取得したＩＰアドレスを上記ポート番号用ハッシュ関数によりハッシュ化し、これにより求めたハッシュ値の下位１６ビット（１６進数で４桁）をポート番号として抽出する（ステップＳ１４）。
【００６７】
次いで、制御部１１は、ポート番号として抽出された値が“４００ｈ”未満であるか否かを判別し（ステップＳ１５）、“４００ｈ”未満でない場合には（ステップＳ１５：Ｎ）、上記抽出したＩＰアドレス及び当該ポート番号を、それぞれ宛先ＩＰアドレス及び宛先ポート番号として、当該任意のノード１との間の接続を確立して（ステップＳ１６）、当該任意のノード１に対してオーバーレイネットワーク９への参加要求を示す参加要求情報（送信元ＩＰアドレスとして自己のノード１のＩＰアドレス（ＮＡＴ機能搭載ルータの内側のノード１の場合、プライベートＩＰアドレス（ＮＴＡ機能搭載ルータでグローバルＩＰアドレスに変換されて出て行く））及びペイロード中にノードＩＤが含まれる）を送信し（ステップＳ１７）、当該処理を終了する。
【００６８】
一方、ポート番号として抽出された値が“４００ｈ”未満である場合には（ステップＳ１５：Ｙ）、当該ポート番号として抽出された値に“４Ｅ２０ｈ”（１６進数：１０進数で２００００）を加算して（ステップＳ１８）、これをポート番号とし、上記抽出したＩＰアドレス及び当該ポート番号を、それぞれ宛先ＩＰアドレス及び宛先ポート番号として、上記任意のノード１との間の接続を確立し（ステップＳ１６）、当該任意のノード１に対して上記参加要求情報を送信して（ステップＳ１７）、当該処理を終了する。
【００６９】
これにより、自己のノード１は、オーバーレイネットワーク９への参加をし、ＤＨＴを取得することになり、また、当該ノード１のＩＰアドレス及びノードＩＤが他の何れかの１又は複数のノード１におけるＤＨＴに登録されることになる。このように、オーバーレイネットワーク９に参加する全てのノード１は、ポート番号用ハッシュ関数及びＩＰアドレスにより生成した値を待ち受けポート番号として開放することになる。
【００７０】
なお、上記処理においては、ＮＡＴ機能搭載ルータの内側にノード１が複数存在し、生成されたポート番号が他のノード１により使用中である場合に、「他のノードによって使用されています」等のメッセージを表示させるように構成したが、他のノード１により使用中となることがないように夫々のノード１の待ち受けポート番号を設定することも可能である。例えば、上記ステップＳ７において、ノード１に固有に与えられているＭＡＣアドレス又は製造番号をポート番号用ハッシュ関数によりハッシュ化し、これにより求めたハッシュ値の下位１６ビット（１６進数で４桁）をポート番号として抽出し、ステップＳ８，９を経て、ステップＳ１１にて待ち受けポート番号を設定するように構成する。このような構成では、上記ステップＳ１３で送信される参加要求情報には、ＭＡＣアドレス又は製造番号、当該ノード１のノードＩＤ、及びＮＡＴ機能搭載ルータのＩＰアドレスが含まれることになり、当該ＭＡＣアドレス又は製造番号と、ＮＡＴ機能搭載ルータのＩＰアドレスの組がノードＩＤと共に他の何れかの１又は複数のノード１におけるＤＨＴに登録される（この場合、他のノード１はＭＡＣアドレス又は製造番号をポート番号用ハッシュ関数によりハッシュ化して待ち受けポート番号を求める）ことになる。また、ノード１に固有に与えられているノードＩＤをポート番号用ハッシュ関数によりハッシュ化し、これにより求めたハッシュ値の下位１６ビット（１６進数で４桁）をポート番号として抽出し、ステップＳ８，９を経て、ステップＳ１１にて待ち受けポート番号を設定するように構成してもよい。
【００７１】
次に、図５の処理は、ユーザノード１ａにおけるユーザが例えば入力部２１を操作して、コンテンツデータ検索指示を入力した場合に開始され、制御部１１は、例えば記憶部１２に記憶されているコンテンツリストのデータを読み出し、これを表示部１６における表示画面上に表示させる（ステップＳ２１）。このコンテンツリストには、複数のコンテンツデータのコンテンツ名等の情報が記述されている。
【００７２】
このような表示状態において、ユーザが入力部２１を操作して、所望のコンテンツ名を選択すると、制御部１１は、これに応じ（ステップＳ２２：Ｙ）、選択されたコンテンツ名を、ノードＩＤ用ハッシュ関数によりハッシュ化してコンテンツＩＤを求める（ステップＳ２３）。
【００７３】
次いで、制御部１１は、ＤＨＴを参照し、例えば当該コンテンツＩＤの最上位桁が一致するノードＩＤに対応する他のノード１（クエリを送信すべき他のノード１）のＩＰアドレスを抽出する（ステップＳ２４）。
【００７４】
次いで、制御部１１は、抽出したＩＰアドレスを上記ポート番号用ハッシュ関数によりハッシュ化し、これにより求めたハッシュ値の下位１６ビット（１６進数で４桁）をポート番号として抽出する（ステップＳ２５）。
【００７５】
次いで、制御部１１は、ポート番号として抽出された値が“４００ｈ”未満であるか否かを判別し（ステップＳ２６）、“４００ｈ”未満でない場合には（ステップＳ２６：Ｎ）、上記抽出したＩＰアドレス及び当該ポート番号を、それぞれ宛先ＩＰアドレス及び宛先ポート番号として、当該他のノード１との間の接続を確立して（ステップＳ２７）、上記ステップＳ２３で求めたコンテンツＩＤが付加されたクエリを当該他のノード１に送信し（ステップＳ２８）、当該処理を終了する。
【００７６】
一方、ポート番号として抽出された値が“４００ｈ”未満である場合には（ステップＳ２６：Ｙ）、当該ポート番号として抽出された値に“４Ｅ２０ｈ”（１６進数：１０進数で２００００）を加算して（ステップＳ２９）、これをポート番号とし、上記抽出したＩＰアドレス及び当該ポート番号を、それぞれ宛先ＩＰアドレス及び宛先ポート番号として、当該他のノード１との間の接続を確立し（ステップＳ２７）、上記ステップＳ２３で求めたコンテンツＩＤが付加されたクエリ（自己のＩＰアドレスを含む）を当該他のノード１に送信して（ステップＳ２８）、当該処理を終了する。
【００７７】
次に、図６の処理は、ユーザノード１ａから送信されてきたクエリが受信された場合に開始され、先ず、制御部１１は、自己のノード１が、上記受信したクエリに付加されたコンテンツＩＤに対応するコンテンツデータのルートノード１ｂであるか否かを、例えば、自己のノード１のノードＩＤが当該コンテンツＩＤと最も近い（例えば、上位桁がより多く一致する）か否かによって判別する（ステップＳ３１）。
【００７８】
自己のノード１がルートノード１ｂでない場合には（ステップＳ３１：Ｎ）、制御部１１は、ＤＨＴを参照し、例えば当該コンテンツＩＤの上位数桁目（例えば、上位２桁目）が一致するノードＩＤに対応する他のノード１（クエリを転送すべき他のノード１）のＩＰアドレスを抽出する（ステップＳ３２）。
【００７９】
次いで、制御部１１は、抽出したＩＰアドレスを上記ポート番号用ハッシュ関数によりハッシュ化し、これにより求めたハッシュ値の下位１６ビット（１６進数で４桁）をポート番号として抽出する（ステップＳ３３）。
【００８０】
次いで、制御部１１は、ポート番号として抽出された値が“４００ｈ”未満であるか否かを判別し（ステップＳ３４）、“４００ｈ”未満でない場合には（ステップＳ３４：Ｎ）、上記抽出したＩＰアドレス及び当該ポート番号を、それぞれ宛先ＩＰアドレス及び宛先ポート番号として、当該他のノード１との間の接続を確立して（ステップＳ３５）、上記受信されたクエリを当該他のノード１に送信（転送）し（ステップＳ３６）、当該処理を終了する。
【００８１】
一方、ポート番号として抽出された値が“４００ｈ”未満である場合には（ステップＳ３４：Ｙ）、当該ポート番号として抽出された値に“４Ｅ２０ｈ” （１６進数：１０進数で２００００）を加算して（ステップＳ３７）、これをポート番号とし、上記抽出したＩＰアドレス及び当該ポート番号を、それぞれ宛先ＩＰアドレス及び宛先ポート番号として、当該他のノード１との間の接続を確立し（ステップＳ３５）、上記受信されたクエリを当該他のノード１に送信（転送）して（ステップＳ３６）、当該処理を終了する。
【００８２】
一方、ステップＳ３１において、自己のノード１がルートノード１ｂである場合には（ステップＳ３１：Ｙ）、制御部１１は、クエリにより要求されたコンテンツデータの所在情報を記憶部１２から取得する（ステップＳ３８）。
【００８３】
次いで、制御部１１は、上記クエリからユーザノード１ａのＩＰアドレスを取り出し（ステップＳ３９）、当該ＩＰアドレスを上記ポート番号用ハッシュ関数によりハッシュ化し、これにより求めたハッシュ値の下位１６ビット（１６進数で４桁）をポート番号として抽出する（ステップＳ４０）。
【００８４】
次いで、制御部１１は、ポート番号として抽出された値が“４００ｈ”未満であるか否かを判別し（ステップＳ４１）、“４００ｈ”未満でない場合には（ステップＳ４１：Ｎ）、上記取り出したＩＰアドレス及び当該ポート番号を、それぞれ宛先ＩＰアドレス及び宛先ポート番号として、ユーザノード１ａとの間の接続を確立して（ステップＳ４２）、上記ステップＳ３８で取得したコンテンツデータの所在情報を当該ユーザノード１ａに送信し（ステップＳ４３）、当該処理を終了する。
【００８５】
一方、ポート番号として抽出された値が“４００ｈ”未満である場合には（ステップＳ４１：Ｙ）、当該ポート番号として抽出された値に“４Ｅ２０ｈ” （１６進数：１０進数で２００００）を加算して（ステップＳ４４）、これをポート番号とし、上記取り出したＩＰアドレス及び当該ポート番号を、それぞれ宛先ＩＰアドレス及び宛先ポート番号として、ユーザノード１ａとの間の接続を確立し（ステップＳ４２）、上記ステップＳ３８で取得したコンテンツデータの所在情報を当該ユーザノード１ａに送信し（ステップＳ４３）、当該処理を終了する。
【００８６】
次に、図７の処理は、例えば、ルートノード１ｃから送信されてきたコンテンツデータの所在情報が受信された場合に開始され、先ず、制御部１１は、所在情報のうちからコンテンツホルダ１ｃのＩＰアドレスを取得する（ステップＳ５１）。なお、所在情報に複数のコンテンツホルダのＩＰアドレスが含まれている場合には、その中からランダムに選択された１つのＩＰアドレス、或いは、ユーザにより入力部２１を介して選択された１つのＩＰアドレスが取得されることになる。
【００８７】
次いで、制御部１１は、取得したＩＰアドレスを上記ポート番号用ハッシュ関数によりハッシュ化し、これにより求めたハッシュ値の下位１６ビット（１６進数で４桁）をポート番号として抽出する（ステップＳ５２）。
【００８８】
次いで、制御部１１は、ポート番号として抽出された値が“４００ｈ”未満であるか否かを判別し（ステップＳ５３）、“４００ｈ”未満でない場合には（ステップＳ５３：Ｎ）、上記取得したＩＰアドレス及び当該ポート番号を、それぞれ宛先ＩＰアドレス及び宛先ポート番号として、当該コンテンツホルダ１ｃとの間の接続を確立して（ステップＳ５４）、コンテンツデータの要求情報を当該コンテンツホルダ１ｃに送信し（ステップＳ５５）、これに応じてコンテンツホルダ１ｃにより送信されてきたコンテンツデータを受信し（ステップＳ５６）、当該処理を終了する。
【００８９】
一方、ポート番号として抽出された値が“４００ｈ”未満である場合には（ステップＳ５３：Ｙ）、当該ポート番号として抽出された値に“４Ｅ２０ｈ”（１６進数：１０進数で２００００）を加算して（ステップＳ５７）、これをポート番号とし、上記取得したＩＰアドレス及び当該ポート番号を、それぞれ宛先ＩＰアドレス及び宛先ポート番号として、当該コンテンツホルダ１ｃとの間の接続を確立して（ステップＳ５４）、コンテンツデータの要求情報を当該コンテンツホルダ１ｃに送信し（ステップＳ５５）、これに応じてコンテンツホルダ１ｃから送信されてきたコンテンツデータを受信し（ステップＳ５６）、当該処理を終了する。
【００９０】
（実施形態２）
次に、実施形態２におけるコンテンツ配信システムＳの動作について、図８乃至図１１等を参照して説明する。なお、実施形態２では、ノードＩＤをポート番号用ハッシュ関数にかける対象とした場合の実施形態である。
【００９１】
図８は、ノードの制御部１１における待ち受けポート番号設定処理を示すフローチャートであり、図９は、ユーザノードの制御部１１におけるコンテンツデータ検索処理を示すフローチャートであり、図１０は、中継ノード又はルートノードの制御部１１におけるコンテンツデータの検索処理を示すフローチャートであり、図１１は、ユーザノードの制御部１１におけるコンテンツデータの取得処理を示すフローチャートである。
【００９２】
図８の処理は、例えばユーザが入力部２１を操作して、オーバーレイネットワーク９への参加要求指示を入力した場合に開始され、制御部１１は、例えば自己のノード１に一意に割り当てられている製造番号をノードＩＤ用ハッシュ関数によりハッシュ化してノードＩＤ（例えば、１ＣＦ２  Ａ０Ｂ６  Ｆ３２Ｂ  ４５８１ｈ（１６進数））を求める（ステップＳ１０１）。
【００９３】
次いで、制御部１１は、当該ノードＩＤをポート番号用ハッシュ関数によりハッシュ化し、これにより求めたハッシュ値（例えば、Ｂ３５６  ８９７６ｈ（１６進数））の下位１６ビット（１６進数で４桁）をポート番号（例えば、８９７６ｈ）として抽出する（ステップＳ１０２）。
【００９４】
次いで、制御部１１は、ポート番号として抽出された値が“４００ｈ”（１６進数）未満であるか否かを判別し（ステップＳ１０３）、“４００ｈ”未満でない場合には（ステップＳ１０３：Ｎ）、ステップＳ１０５に移行し、“４００ｈ”未満である場合には（ステップＳ１０３：Ｙ）、当該ポート番号として抽出された値に“４Ｅ２０ｈ”（１６進数）を加算して（ステップＳ１０４）、ステップＳ１０５に移行する。
【００９５】
ステップＳ１０５では、制御部１１は、自己のノード１がＮＡＴ機能搭載ルータの内側に存在するか否かを判別する。そして、自己がＮＡＴ機能搭載ルータの内側に存在しない場合（ステップＳ１０５：Ｎ）、ステップＳ１０６に移行し、自己がＮＡＴ機能搭載ルータの内側に存在する場合（ステップＳ１０５：Ｙ）、ステップＳ１０７に移行する。
【００９６】
ステップＳ１０６では、制御部１１は、ステップＳ１０２若しくはステップＳ１０４においてポート番号として得られた値を待ち受けポート番号として設定（開放）し（ステップＳ１０６）、ステップＳ１１０に移行する。
【００９７】
一方、ステップＳ１０７では、制御部１１は、ステップＳ１０２若しくはステップＳ１０４においてポート番号として得られた値が、他のノード１の待ち受けポート番号として既に使用中であるか否かを、ＮＡＴ機能搭載ルータに問い合わせることによって判別する。つまり、ＮＡＴ機能搭載ルータの内側にノード１が複数存在し、ステップＳ１０２若しくはステップＳ１０４においてポート番号として得られた値が、同じＮＡＴ機能搭載ルータの内側に存在する他のノード１により既に得られた（ポート番号用ハッシュ関数により）値と同一であるか否かが判別される。これは、ＮＡＴ機能搭載ルータの内側に存在する複数のノード１のノードＩＤは互いに異なるが、これらのハッシュ値の下位１６ビット（１６進数で４桁）の値（或いは、“４Ｅ２０ｈ” （１６進数）が加算された値）が一致する場合が考えられるためである。但し、一致しない場合も十分に考えられるため、実施形態１のようにＩＰアドレスをポート番号用ハッシュ関数によりハッシュ化してポート番号を得るよりも、ノードＩＤをポート番号用ハッシュ関数によりハッシュ化してポート番号を得る方が待ち受けポート番号の設定の幅が広がるという利点がある。
【００９８】
そして、ステップＳ１０２若しくはステップＳ１０４で得られたポート番号が他のノード１により使用中でない場合には（ステップＳ１０７：Ｎ）、制御部１１は、当該ポート番号を待ち受けポート番号として設定（開放）し（ステップＳ１０８）、ステップＳ１１０に移行する。かかる設定では、ＮＡＴ機能搭載ルータに対して、当該ノード１の上記ポート番号を待ち受けポート番号として設定する指令がなされ（ポートフォワーディング設定）、これによりＮＡＴ機能搭載ルータにおいて当該ノード１の待ち受けポート番号が設定される。
【００９９】
一方、ステップＳ１０２若しくはステップＳ１０４で得られたポート番号が他のノード１により使用中である場合には（ステップＳ１０７：Ｙ）、制御部１１は、例えば表示部１６における表示画面上に他のノード１によってポート番号が使用中である旨（例えば、「他のノードによってポート番号が使用されています」）等のメッセージを表示させ（ステップＳ１０９）、当該処理を終了する。
【０１００】
ステップＳ１１０では、制御部１１は、既にオーバーレイネットワーク９に参加している任意のノード１のＩＰアドレスとノードＩＤを取得する。
【０１０１】
次いで、制御部１１は、当該取得したノードＩＤを上記ポート番号用ハッシュ関数によりハッシュ化し、これにより求めたハッシュ値の下位１６ビット（１６進数で４桁）をポート番号として抽出する（ステップＳ１１１）。
【０１０２】
次いで、制御部１１は、ポート番号として抽出された値が“４００ｈ”未満であるか否かを判別し（ステップＳ１１２）、“４００ｈ”未満でない場合には（ステップＳ１１２：Ｎ）、上記抽出したＩＰアドレス及び当該ポート番号を、それぞれ宛先ＩＰアドレス及び宛先ポート番号として、当該任意のノード１との間の接続を確立して（ステップＳ１１３）、当該任意のノード１に対してオーバーレイネットワーク９への参加要求を示す参加要求情報（送信元アドレスとして自己のノード１のＩＰアドレス（ＮＡＴ機能搭載ルータの内側のノード１の場合、プライベートＩＰアドレス）及びペイロード中にノードＩＤが含まれる）を送信し（ステップＳ１１４）、当該処理を終了する。
【０１０３】
一方、ポート番号として抽出された値が“４００ｈ”未満である場合には（ステップＳ１１２：Ｙ）、当該ポート番号として抽出された値に“４Ｅ２０ｈ”（１６進数：１０進数で２００００）を加算して（ステップＳ１１５）、これをポート番号とし、上記抽出したＩＰアドレス及び当該ポート番号を、それぞれ宛先ＩＰアドレス及び宛先ポート番号として、上記任意のノード１との間の接続を確立して（ステップＳ１１３）、当該任意のノード１に対して上記参加要求情報を送信して（ステップＳ１１４）、当該処理を終了する。
【０１０４】
これにより、自己のノード１は、オーバーレイネットワーク９への参加をし、ＤＨＴを取得することになり、また、当該ノード１のＩＰアドレス及びノードＩＤが他の何れかの１又は複数のノード１におけるＤＨＴに登録されることになる。このように、オーバーレイネットワーク９に参加する全てのノード１は、ポート番号用ハッシュ関数及びノードＩＤにより生成した値を待ち受けポート番号として開放することになる。
【０１０５】
次に、図９の処理は、ユーザノード１ａにおけるユーザが例えば入力部２１を操作して、コンテンツデータ検索指示を入力した場合に開始される。なお、ステップＳ１２１からＳ１２３までの処理は、図５に示すステップＳ２１からＳ２３までの処理と同様であるので重複する説明を省略する。
【０１０６】
次いで、制御部１１は、ＤＨＴを参照し、例えば当該コンテンツＩＤの最上位桁が一致するノードＩＤとこれに対応する他のノード１のＩＰアドレスを抽出する（ステップＳ１２４）。
【０１０７】
次いで、制御部１１は、抽出したノードＩＤを上記ポート番号用ハッシュ関数によりハッシュ化し、これにより求めたハッシュ値の下位１６ビット（１６進数で４桁）をポート番号として抽出する（ステップＳ１２５）。
【０１０８】
なお、ステップＳ１２６からＳ１２９までの処理は、図５に示すステップＳ２６からＳ２９までの処理と同様であるので重複する説明を省略する。
【０１０９】
次に、図１０の処理は、ユーザノード１ａから送信されてきたクエリ（ユーザノード１ａのＩＰアドレス及びノードＩＤを含む）が受信された場合に開始され、先ず、制御部１１は、自己のノード１が、上記受信したクエリに付加されたコンテンツＩＤに対応するコンテンツデータのルートノード１ｂであるか否かを、例えば、自己のノード１のノードＩＤが当該コンテンツＩＤと最も近い（例えば、上位桁がより多く一致する）か否かによって判別する（ステップＳ１３１）。
【０１１０】
自己のノード１がルートノード１ｂでない場合には（ステップＳ１３１：Ｎ）、制御部１１は、ＤＨＴを参照し、例えば当該コンテンツＩＤの上位数桁目（例えば、上位２桁目）が一致するノードＩＤとこれに対応するＩＰアドレスを抽出する（ステップＳ１３２）。
【０１１１】
次いで、制御部１１は、抽出したノードＩＤを上記ポート番号用ハッシュ関数によりハッシュ化し、これにより求めたハッシュ値の下位１６ビット（１６進数で４桁）をポート番号として抽出する（ステップＳ１３３）。
【０１１２】
なお、ステップＳ１３４からＳ１３７までの処理は、図６に示すステップＳ３４からＳ３７までの処理と同様であるので重複する説明を省略する。
【０１１３】
一方、ステップＳ１３１において、自己のノード１がルートノード１ｂである場合には（ステップＳ１３１：Ｙ）、制御部１１は、クエリにより要求されたコンテンツデータの所在情報を記憶部１２から取得する（ステップＳ１３８）。
【０１１４】
次いで、制御部１１は、上記クエリからユーザノード１ａのノードＩＤ及びＩＰアドレスを取り出し（ステップＳ１３９）、当該ノードＩＤを上記ポート番号用ハッシュ関数によりハッシュ化し、これにより求めたハッシュ値の下位１６ビット（１６進数で４桁）をポート番号として抽出する（ステップＳ１４０）。
【０１１５】
なお、ステップＳ１４１からＳ１４４までの処理は、図６に示すステップＳ４１からＳ４４までの処理と同様であるので重複する説明を省略する。なお、ルートノード１ｃはコンテンツデータの所在情報と共にノードＩＤをユーザノード１ａに送信することになる。
【０１１６】
次に、図１１の処理は、例えば、ルートノード１ｃから送信されてきたコンテンツデータの所在情報とノードＩＤが受信された場合に開始され、先ず、制御部１１は、所在情報のうちからコンテンツホルダ１ｃのＩＰアドレスを取得する（ステップＳ１５１）。
【０１１７】
次いで、制御部１１は、受信したノードＩＤを上記ポート番号用ハッシュ関数によりハッシュ化し、これにより求めたハッシュ値の下位１６ビット（１６進数で４桁）をポート番号として抽出する（ステップＳ１５２）。
【０１１８】
なお、ステップＳ１５３からＳ１５７までの処理は、図７に示すステップＳ５３からＳ５７までの処理と同様であるので重複する説明を省略する。
【０１１９】
以上説明したように、上記実施形態によれば、各ノード１の待ち受けポート番号は、各ノード１に一意に割り当てられたＩＰアドレス又はノードＩＤ等が、共通のポート番号用ハッシュ関数によりハッシュ化された値に基づき生成されるので、基本的には夫々異なって分散されることになり、したがって、セキュリティの向上を図ることができるとともに、各ノード１は、ポート番号紹介（照会）サーバに照会することなく、接続相手のノード１の待ち受けポート番号を上記共通のポート番号用ハッシュ関数を用いて（つまり、待ち受けポート番号を設定するノード１と同一のポート番号用ハッシュ関数を用い、同一の演算により）効率良く取得することができる。また、これにより、ポート番号紹介（照会）サーバを設けるコストを削減することもできる。
【０１２０】
なお、上記実施形態において、各ノード１が共通に有するポート番号用ハッシュ関数が、定期的（例えば、ＤＨＴの更新タイミングで）に更新（変更）されると共に、当該更新されたポート番号用ハッシュ関数を基にポート番号が生成され待ち受けポート番号も定期的に変更される（設定し直される）ように構成しても良い。このように構成すれば、より一層、セキュリティの向上を図ることができる。
【０１２１】
例えば、夫々のノード１の記憶部１２に予め複数（互いに異なる複数種類、例えば１２種類）のポート番号用ハッシュ関数（例えば、１〜１２番までのポート番号用ハッシュ関数）を記憶させておき、夫々のノード１における制御部１１は、一定時間毎に記憶部１２に記憶された複数のポート番号用ハッシュ関数のうちから一のポート番号用ハッシュ関数を取得（例えば、毎月１日の０時に、その月に対応した番号を持つポート番号用ハッシュ関数を取得）し、これを用いて第1ポート番号を生成し、当該生成された第１ポート番号を待ち受けポート番号として設定し直す。そして、夫々のノード装置における制御部１１は、上記待ち受けポート番号の設定し直しに同期して、用いるべきポート番号用ハッシュ関数を変更、つまり、他のノード１に接続する際に用いるポート番号用ハッシュ関数を適宜、記憶部１２から取得（例えば、その月に対応した番号を持つポート番号用ハッシュ関数を取得）してこれを用いて宛先となる待ち受けポート番号を生成するように構成する。
【０１２２】
また、ポート番号用ハッシュ関数は、ネットワーク３に接続された所定のノード、或いはサーバから、当該ネットワーク３を介して夫々のノード１に対して定期的に（例えば、月毎に）配信（配布）されて記憶部１２に記憶（例えば、以前の古いポート番号用ハッシュ関数を配信された、新しいポート番号用ハッシュ関数で上書き更新）されるようにし、夫々のノード１における制御部１１は、配信されたポート番号用ハッシュ関数（例えば、当該ハッシュ関数には、更新日時を示す情報も付加されている）を取得し（例えば、更新日時になったら）、これを用いて第1ポート番号を生成し、当該生成された第１ポート番号を待ち受けポート番号として設定し直す。そして、夫々のノード装置における制御部１１は、上記待ち受けポート番号の設定し直しに同期して、用いるべきポート番号用ハッシュ関数を変更、つまり、他のノード１に接続する際に用いるポート番号用ハッシュ関数を記憶部１２から取得してこれを用いて宛先となる待ち受けポート番号を生成するように構成する。
【０１２３】
なお、このようなポート番号用ハッシュ関数の定期的な更新（変更）は、オーバーレイネットワーク９に参加している全てのノード１において同期して（同一タイミングで）行われる必要があることから、全てノード１は、日付及び時刻を正確に認識している必要があるため、例えば、ＮＴＰ（Network Time Protocol）を用いて正確な日付を取得するように構成される。これによりポート番号用ハッシュ関数の更新タイミングを正確にすることができる。
【０１２４】
また、上記実施形態においては、ＩＰアドレス等をポート番号用ハッシュ関数にかけ、得られた値の１６進数で下４桁を抽出し、これに基づき待ち受けポート番号を設定したが、これに限定されるものではなく、例えば、ＩＰアドレス等をポート番号用ハッシュ関数にかけ、得られた値の１０進数で１０進数の下４桁を抽出し、抽出された値に例えば１００００〜６００００を加えて、待ち受けポート番号としても良い（但し、１０２３以下又は６５５３６以上になった場合、１０２４以上６５５３５以下になるように調整される）。
【０１２５】
また、上記ステップＳ９，Ｓ１８，Ｓ２９，Ｓ３７，Ｓ４４，Ｓ５７，Ｓ１０４，Ｓ１１５，Ｓ１２９，Ｓ１３７，Ｓ１４４，及びＳ１５７全てにおいて、一定の値である“４Ｅ２０ｈ”を加算していたが、上記各ステップにおいて共通の値であれば、他の値であっても良いし、加算でなくてもよい。
【０１２６】
例えば、ポート番号用ハッシュ関数から求められた値が１０２４（１０進数）未満の値の場合は、以下のような演算によっても求めること可能である。
【０１２７】
（１）６５５３５から、求められた値（１０２４未満の値）を減算
（２）１０２４以上の値（共通の値）と、求められた値（１０２４未満の値）とのビット単位での排他的論理和
（３）求められた値（１０２４未満の値）の補数（全ビットの反転した値）
また、上記実施形態においては、ＤＨＴを利用したアルゴリズムによって構築されたオーバーレイネットワーク９を前提として説明したが、本発明はこれに限定されるものではなく、その他のコンピュータネットワークシステムに対しても適用可能である。
【図面の簡単な説明】
【０１２８】
【図１】本実施形態に係るコンテンツ配信システムにおける各ノード装置の接続態様の一例を示す図である。
【図２】ＤＨＴのノードＩＤ空間において、ユーザノードが所在情報を取得する場合におけるＤＨＴルーティングの一例を示す図である。
【図３】ノード１の概要構成例を示す図である。
【図４】実施形態１において、ノードの制御部１１における待ち受けポート番号設定処理を示すフローチャートである。
【図５】実施形態１において、ユーザノードの制御部１１におけるコンテンツデータ検索処理を示すフローチャートである。
【図６】実施形態１において、中継ノード又はルートノードの制御部１１におけるコンテンツデータの検索処理を示すフローチャートである。
【図７】実施形態１において、ユーザノードの制御部１１におけるコンテンツデータの取得処理を示すフローチャートである。
【図８】実施形態２において、ノードの制御部１１における待ち受けポート番号設定処理を示すフローチャートである。
【図９】実施形態２において、ユーザノードの制御部１１におけるコンテンツデータ検索処理を示すフローチャートである。
【図１０】実施形態２において、中継ノード又はルートノードの制御部１１におけるコンテンツデータの検索処理を示すフローチャートである。
【図１１】実施形態２において、ユーザノードの制御部１１におけるコンテンツデータの取得処理を示すフローチャートである。
【符号の説明】
【０１２９】
１  ノード
８  ネットワーク
９  オーバーレイネットワーク
１１  制御部
１２  記憶部
１３  バッファメモリ
１４  デコーダ部
１５  映像処理部
１６  表示部
１７  音声処理部
１８  スピーカ
２０  通信部
２１  入力部
２２  バス
【図１】
2006319384.tif 000003
【図２】
2006319384.tif 000004
【図３】
2006319384.tif 000005
【図４】
2006319384.tif 000006
【図５】
2006319384.tif 000007
【図６】
2006319384.tif 000008
【図７】
2006319384.tif 000009
【図８】
2006319384.tif 000010
【図９】
2006319384.tif 000011
【図１０】
2006319384.tif 000012
【図１１】
2006319384.tif 000013