(57)【特許請求の範囲】
【請求項１】
相互接続されたコンピュータシステムノードのネットワークにおいて、少なくとも１つのデータ項目を記憶する要求をソースシステムから受信することと、
ノードの地理的座標を示すジオロケーションに基づいて前記ノードに前記少なくとも１つのデータ項目を送ることであって、中央サーバが、前記ジオロケーションにより、速度および効率を向上させるために、互いにまたはユーザに隣接するノードを選択できるようにすることと、
前記ソースシステムからの前記要求に応じて、前記少なくとも１つのデータ項目を、前記ネットワークにおけるどんな二次記憶装置にも記憶せず、前記相互接続されたコンピュータシステムノードのネットワークにおいて、これらのノードの前記ジオロケーションに基づいて、前記ノード間で継続的に転送することであって、前記転送される少なくとも１つのデータ項目は、常に前記ネットワーク内でノードからノードへルーティングされ、前記転送される少なくとも１つのデータ項目は、前記少なくとも１つのデータ項目を検索する要求が受信された場合に、検索のために利用可能であり、前記ジオロケーションにより、速度および効率を向上させるために、互いにまたは前記ユーザに隣接するノードを選択できるようにすることと、
を含む方法であって、前記継続的に転送することが、
前記ジオロケーションに基づいて、前記少なくとも１つのデータ項目を受信するために利用可能なノードのアドレスを決定することと、
前記決定されたノードのアドレスを表す特定のノードのアドレスを有するメッセージを前記ソースシステムに送信することと、
前記特定のノードにおいて前記少なくとも１つのデータ項目の存在を検出することと、
前記転送された少なくとも１つのデータ項目を、どんな二次記憶装置にも記憶せずに、前記相互接続されたコンピュータシステムノードのネットワークにおいて、これらのノードの前記ジオロケーションに基づいて、別のノードに転送することと、
を含む方法。
【請求項２】
継続的に転送することが、前記特定のノードにおいて前記少なくとも１つのデータ項目にタイムスタンプを施すことをさらに含む、請求項１に記載の方法。
【請求項３】
前記ノードのアドレスを決定することが、ネットワークトラフィック解析および利用可能な前記二次記憶装置とは異なるメモリを有するノードにさらに基づく、請求項２に記載の方法。
【請求項４】
前記相互接続されたコンピュータシステムノードのネットワークにおいて前記ノード間で継続的に転送されている前記少なくとも１つのデータ項目を検索する要求を前記ソースシステムから受信することと、
前記少なくとも１つのデータ項目を検索する前記要求に応じて、ノードから前記少なくとも１つのデータ項目を検索することと、
をさらに含む、請求項１に記載の方法。
【請求項５】
検索することが、
ノードに入る前記少なくとも１つのデータ項目を表すハッシュマークを用いて、前記少なくとも１つのデータ項目の検索要求を中央サーバにおいてマッチングすることと、
前記少なくとも１つのデータ項目を有すると予想されるノードにメッセージ送信することであって、前記メッセージが、前記少なくとも１つのデータ項目を前記ソースシステムへ転送するように前記ノードに命令することと、
前記少なくとも１つのデータ項目が前記ソースシステムに転送されたという確認メッセージを前記中央サーバに送信することと、
を含む、請求項４に記載の方法。
【請求項６】
前記要求した少なくとも１つのデータ項目が受信されたという確認応答を前記ソースシステムから受信することをさらに含む、請求項５に記載の方法。
【請求項７】
相互接続されたコンピュータシステムノードのネットワークにおいて、データ項目を記憶する方法を中央サーバに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記方法は、
少なくとも１つのデータ項目を記憶する要求をソースシステムから受信することと、
ノードの地理的座標を示すジオロケーションに基づいて前記少なくとも１つのデータ項目を前記ノードに送ることであって、中央サーバが、前記ジオロケーションにより、速度および効率を向上させるために、互いにまたはユーザに隣接するノードを選択できるようにすることと、
前記ソースシステムからの前記要求に応じて、前記少なくとも１つのデータ項目を、前記ネットワークにおけるどんな二次記憶装置にも記憶せず、前記相互接続されたコンピュータシステムノードのネットワークにおいて、これらのノードの前記ジオロケーションに関連して、前記ノード間で１つのノードから別のノードへ継続的に転送することによってデータを記憶することであって、前記転送される少なくとも１つのデータ項目は、常に前記ネットワーク内でノードからノードへルーティングされ、前記転送される少なくとも１つのデータ項目は、前記少なくとも１つのデータ項目を検索する要求が受信された場合に、検索のために利用可能であり、前記ジオロケーションにより、速度および効率を向上させるために、互いにまたは前記ユーザに隣接するノードを選択できるようにすることと、を含み、
前記継続的に転送することが、
前記ジオロケーションに基づいて、前記少なくとも１つのデータ項目を受信するために利用可能なノードのアドレスを決定することと、
前記決定されたノードのアドレスを表す特定のノードのアドレスを有するメッセージを前記ソースシステムに送信することと、
前記特定のノードにおいて前記少なくとも１つのデータ項目の存在を検出することと、
前記転送された少なくとも１つのデータ項目を、どんな二次記憶装置にも記憶せずに、前記相互接続されたコンピュータシステムノードのネットワークにおける別のノードに転送することと、
を含む記録媒体。
【請求項８】
継続的に転送することが、前記特定のノードにおいて前記少なくとも１つのデータ項目にタイムスタンプを施すことをさらに含む、請求項７に記載の記録媒体。
【請求項９】
前記ノードのアドレスを決定することが、ネットワークトラフィック解析および利用可能な前記二次記憶装置とは異なるメモリを有するノードにさらに基づく、請求項７に記載の記録媒体。
【請求項１０】
前記方法が、
前記相互接続されたコンピュータシステムノードのネットワークにおいて継続的に転送されている前記少なくとも１つのデータ項目を検索する要求を前記ソースシステムから受信することと、
前記少なくとも１つのデータ項目を検索する前記要求に応じて、ノードから前記少なくとも１つのデータ項目を検索することと、をさらに含む、請求項７に記載の記録媒体。
【請求項１１】
検索することが、
ノードに入る前記少なくとも１つのデータ項目を表すハッシュマークを用いて、前記少なくとも１つのデータ項目の検索要求を中央サーバにおいてマッチングすることと、
前記少なくとも１つのデータ項目を有すると予想されるノードにメッセージ送信することであって、前記メッセージが、前記少なくとも１つのデータ項目を前記ソースシステムに転送するように前記ノードに命令することと、
前記少なくとも１つのデータ項目が前記ソースシステムに転送されたという確認メッセージを前記中央サーバに送信することと、
を含む、請求項１０に記載の記録媒体。
【請求項１２】
前記方法が、
前記要求した少なくとも１つのデータ項目が受信されたという確認応答を前記ソースシステムから受信することをさらに含む、請求項１１に記載の記録媒体。
【請求項１３】
相互接続されたコンピュータシステムノードのグループを含むネットワークであって、
各ノードが、
ソースシステムからの、少なくとも１つのデータ項目を記憶する要求に応じて、前記少なくとも１つのデータ項目を受信し、転送される少なくとも１つのデータ項目を、どんな二次記憶装置にも記憶せず、ノードの地理的座標を示すＩＰアドレスジオロケーションに基づいて、前記コンピュータシステムノード間で継続的に転送することであって、前記転送される少なくとも１つのデータ項目は、常に前記相互接続されたコンピュータシステムノードのグループ内でノードからノードへルーティングされる、ことと、
前記ソースシステムからの、前記少なくとも１つのデータ項目を検出する要求に応じて、前記コンピュータシステムノード間で継続的に転送されている少なくとも１つのデータ項目を検出することと、を行うように構成され、
各ノードが、さらに、
前記少なくとも１つのデータ項目の存在を検出し、タイムスタンプを施し、かつノードの利用可能性および前記ジオロケーションに従って、前記相互接続されたコンピュータシステムノードのグループ内の別のノードに前記少なくとも１つのデータ項目を転送するように構成され、前記ジオロケーションにより、速度および効率を向上させるために、互いにまたはユーザに隣接するノードを選択できるようにする、相互接続されたコンピュータシステムノードのグループを含むネットワーク。
【請求項１４】
前記ノードの利用可能性が、そのネットワークトラフィック量に従って決定される、請求項１３に記載のネットワーク。
【請求項１５】
各ノードが、前記少なくとも１つのデータ項目を暗号化する、請求項１４に記載のネットワーク。
【請求項１６】
前記ノードのグループが中央サーバを含み、前記中央サーバが、
ノードに入る前記少なくとも１つのデータ項目を表すハッシュマークを用いて、前記少なくとも１つのデータ項目の検索要求をマッチングし、前記少なくとも１つのデータ項目を有すると予想されるノードにメッセージを送信し、前記メッセージは、前記少なくとも１つのデータ項目を前記ソースシステムの前記ノードに命令するメッセージであり、かつ前記少なくとも１つのデータ項目が前記ソースシステムに転送されたという確認メッセージを受信する、請求項１３に記載のネットワーク。
【発明の詳細な説明】
【技術分野】
【０００１】
背景
本明細書に開示される少なくともいくつかの実施形態は、データ記憶に関し、特に、ジオロケーション支援データ転送記憶に関する。
【背景技術】
【０００２】
個人、組織、企業および政府が記憶しなければならないデータ量は、毎年増えている。単に要求に遅れずについていくことに加えて、組織は、他の記憶問題に直面している。オンライン上でのリアルタイムビジネスおよび政府への移行と共に、重要なデータを、ソフトウェアまたはハードウェア障害による損失またはアクセス不能から保護しなければならない。今日、多くのストレージ製品は、完全な障害保護を提供せず、データ損失または利用不能の危険にユーザをさらしている。例えば、今日市販されている多くのストレージソリューションは、プロセッサ障害などのいくつかの障害モードに対して保護を提供するが、しかしディスクドライブ障害などの他の障害に対しては提供しない。多くの組織が、そのデータ記憶システムにおけるコンポーネント障害ゆえのデータ損失またはデータ利用不能の危険にさらされている。
【０００３】
データ記憶市場は、典型的には、２つの主要なセグメント、すなわち直接接続ストレージ（ＤＡＳ）およびネットワークストレージに分割される。ＤＡＳには、サーバに直接接続されたディスクが含まれる。
【０００４】
ネットワークストレージにはディスクが含まれるが、これらのディスクは、特定のサーバではなくネットワークに接続され、さらに、そのネットワーク上の他のデバイスおよびアプリケーションによってアクセスおよび共有することができる。ネットワークストレージは、典型的には、２つのセグメント、すなわちストレージエリアネットワーク（ＳＡＮ）およびネットワーク接続ストレージ（ＮＡＳ）に分割される。
【０００５】
ＳＡＮは、より大きなユーザネットワークのために、様々な種類のデータ記憶装置を関連データサーバと相互接続する高速な専用ネットワーク（またはサブネットワーク）である。典型的には、ＳＡＮは、企業用コンピューティング資源の全体的なネットワークの一部である。ストレージエリアネットワークは、通常、他のコンピューティング資源のすぐ近くに集められるが、しかしまた、ワイドエリア（ＷＡＮ）ネットワークキャリヤ技術を用いて、バックアップおよび保管記憶用に遠隔地に拡張してもよい。
【０００６】
ＮＡＳは、ネットワークのワークステーションユーザにアプリケーションを提供するローカルコンピュータに接続されるのではなく、それ自身のネットワークアドレスで設定されるハードディスクストレージである。記憶アクセスおよびその管理をローカルサーバから取り除くことによって、アプリケーションプログラミングおよびファイルの両方とも、より速くサービスすることができる。なぜなら、それらは、同じプロセッサ資源を求めて競合しないからである。ＮＡＳは、ローカルエリアネットワーク（典型的にはイーサネット（登録商標）ネットワーク）に接続され、かつＩＰアドレスを割り当てられる。ファイル要求は、メインサーバによってＮＡＳファイルサーバにマッピングされる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記の全ては、１を超える点でアキレス腱になり得る１つの共通の特徴を共有する。すなわち、データが、ディスクドライブ、ＣＤドライブなどの物理的媒体に記憶されることである。
【０００８】
説明の概要
本発明は、ジオロケーション支援データ転送記憶用の、コンピュータプログラム製品を含む方法および装置を提供する。
【課題を解決するための手段】
【０００９】
一般に、一態様において、本発明は、相互接続されたコンピュータシステムノードのネットワークにおいて、データを記憶する要求をソースシステムから受信することと、コンピュータメモリのジオロケーションに関連してコンピュータメモリにデータを送ることであって、ジオロケーションが、速度および効率を向上させるために、互いにまたはユーザに隣接するノードを選択できるようにすることと、ネットワークにおけるどんな物理的記憶装置にも記憶せず、相互接続されたコンピュータシステムノードのネットワークにおいて、これらのノードのジオロケーションに関連して、一コンピュータメモリから別のコンピュータメモリへデータを継続的に転送することであって、ジオロケーションが、速度および効率を向上させるために、互いにまたはユーザに隣接するノードを選択できるようにすることと、を含む方法を特徴とする。
【００１０】
別の態様において、本発明は、相互接続されたコンピュータシステムノードのグループであって、各ノードが、要求しているシステムからの、データを記憶する要求に応じて、データを受信し、データを、どんな物理的記憶装置にも記憶せず、ＩＰアドレスジオロケーションに関連して、コンピュータメモリからコンピュータメモリに継続的に転送し、かつ要求しているシステムからの、データを検出する要求に応じて、コンピュータメモリからコンピュータメモリに継続的に転送されているデータを検出し、各ノードが、さらに、そのメモリにおけるデータの存在を検出し、タイムスタンプを施し、かつノードの利用可能性およびジオロケーションに従って、相互接続されたコンピュータシステムノードにおける別のノードのコンピュータメモリにデータを転送するように構成され、ジオロケーションが、速度および効率を向上させるために、互いにまたはユーザに隣接するノードを選択できるようにする、相互接続されたコンピュータシステムノードのグループを含むネットワークを特徴とする。
【００１１】
本発明の１つまたは複数のインプリメンテーションの詳細は、添付の図面および以下の説明で述べる。本発明のさらなる特徴、態様および利点は、説明、図面および特許請求の範囲から明白になるであろう。
【００１２】
実施形態は、添付の図面の図において限定ではなく例として示され、図面における同様の参照符号は、同様の要素を示す。
【図面の簡単な説明】
【００１３】
【図１】例示的なネットワークのブロック図である。
【図２】例示的なユーザシステムのブロック図である。
【図３】例示的なネットワークシステムのブロック図である。
【図４】プロセスの流れ図である。
【図５】プロセスの流れ図である。
【発明を実施するための形態】
【００１４】
詳細な説明
データが結局はディスクドライブなどの物理的媒体に記憶される、過渡的な方法で（in a transient fashion）データ転送を用いるピアツーピアネットワークとは異なり、本発明は、継続的なデータ転送システムである。すなわち、データは、一ノードメモリから別のノードメモリにデータを継続的に転送することによって、記憶される。
【００１５】
図１に示すように、例示的なネットワーク１０には、ユーザシステム１２および多数のネットワークシステム１４、１６、１８、２０、２２が含まれる。ネットワークシステム１４、１６、１８、２０、２２のそれぞれは、ネットワーク１０におけるノードと見なすことができ、かつネットワークシステム１４など、１つのかかるネットワークシステムは、ネットワーク１０において制御位置を占めることができる中央サーバとして指定してもよい。ノード１４、１６、１８、２０、２２のそれぞれは、中央サーバ１４の直接制御下でプライベート制御ピアネットワークとして確立してもよい。ピアノードはまた、プライベートノードおよびパブリックノードの混合であってもよく、したがって、中央サーバ１４の直接的な物理的制御下になくてもよい。ネットワーク１０はまた、完全にパブリックであってもよく、この場合には、中央サーバ１４（または複数サーバ）は、ピアノードのいずれの直接的な所有権も直接的な物理的制御も有しない。
【００１６】
図２に示すように、ユーザシステム１２には、プロセッサ３０、メモリ３２、および入力／出力（Ｉ／Ｏ）装置３４を含むことができる。メモリ３２には、以下で詳細に説明するように、Linux（リナックス）、Apple（登録商標）ＯＳまたはWindows（ウィンドウズ）（登録商標）などのオペレーティングシステム（ＯＳ）３６、１つまたは複数のアプリケーションプロセス３８、および記憶プロセス１００を含むことができる。アプリケーションプロセス３８には、OpenOffice（オープンオフィス）またはMicrosoft（登録商標）Office（オフィス）などのユーザ生産性ソフトウェアを含むことができる。Ｉ／Ｏ装置３４には、ユーザ４２に表示するためのグラフィカルユーザインタフェース（ＧＵＩ）４０を含むことができる。
【００１７】
図３に示すように、ネットワークシステム１４など、ネットワークシステムのそれぞれには、プロセッサ５０およびメモリ５２を含むことができる。メモリ５２には、以下で詳細に説明するように、Linux（リナックス）、Apple（登録商標）ＯＳまたはWindows（ウィンドウズ）（登録商標）などのＯＳ５４、およびデータ転送プロセス２００を含むことができる。
【００１８】
従来のシステムでは、アプリケーションプロセス３８は、データを記憶および検索する必要がある。これらの従来のシステムでは、データは、ローカルまたはリモートの物理的装置に記憶される。いくつかのシステムでは、このデータは、異なる断片またはパケットにセグメント化し、ローカルまたはリモートの物理的記憶媒体に記憶することができる。固定した物理的データ記憶装置の使用は、それがユーザ４２の要望であろうとなかろうと、コスト、メンテナンス、管理を追加し、データの、固定した物理的記録を生成する。
【００１９】
本発明は、データを記憶するための固定した物理的データ記憶装置を用いない。データを記憶する要求が、記憶プロセス１００から中央サーバ１４によって受信されると、データは、ノードのジオロケーションによって支援されて、ネットワーク１０におけるノードに送られ、次にデータは、ディスクドライブなどのどんな物理的記憶媒体にも記憶されることなく、ネットワークノードのそれぞれにおけるデータ転送プロセス２００によって、ネットワーク１０のノードメモリからノードメモリに継続的に転送される。転送されたデータは、ネットワーク１０における任意の一ノードのメモリに、非常に短い期間のみ常駐する。データは、どんなネットワークノードのどんな物理的記憶媒体にも記憶されない。ジオロケーションを用いることによって、すなわち互いにおよび／またはユーザに隣接するノードを選択することによって、ネットワーク全体にわたってデータを転送する際の速度向上および効率化が可能になる。
【００２０】
ジオロケーションは、一般に、インターネットに接続されたコンピュータ、モバイル装置、ウェブサイト訪問者またはその他の実際の地理的位置を識別することを指す。ジオロケーションは、位置を推定する実践を指すために用いることができ、またはそれは、実際の推定された位置または位置データを指すために用いることができる。ジオロケーションは、例えばインターネットプロトコルアドレス、ＭＡＣアドレス、無線周波数アイデンティフィケーション（ＲＦＩＤ）、ハードウェアに埋め込まれた商品／製品番号、埋め込まれたソフトウェア番号（ＵＵＩＤ、Ｅｘｉｆ／ＩＰＴＣ／ＸＭＰもしくは最新のステガノグラフィなど）、Ｗｉ−Ｆｉ接続位置、もしくは装置のＧＰＳ座標、または他の、恐らく自己開示された情報に、地理的位置を関連させることによって実行することができる。
【００２１】
一般的なネットワーク、特にインターネットは、多数の一般大衆にアピールすることを意図した資源の集まりになった。この多くの情報は大きな恩恵になったが、それはまた、地理的にローカルな情報の重要性を弱めた。地理的位置に基づいた情報をネットワークユーザが取得するための能力を提供することによって、検索時間を低減し、ローカルな企業の露出度を向上させることができる。同様に、ユーザコミュニティおよびチャットルームは、それらが地球をローミングするときに、それらのメンバーの位置（およびしたがって、現地時間、気象状態およびニュース）を知ることを通して、いっそう良くすることができる。ユーザがＧＰＳ受信機を所持する必要もなく、または自分がどこにいるかを知る必要さえもなく、アプリケーションおよびＷｅｂサイトにおけるユーザサービスを提供することが可能である。
【００２２】
ＩＰアドレスによるジオロケーションは、ユーザの地理的緯度、経度、ならびにユーザのパブリックインターネットＩＰアドレスを、他の電子的に隣接するサーバおよびルータの周知の位置と比較することによって、推測により都市、地域および国を決定する技術である。
【００２３】
ＩＰアドレスによるジオロケーションのための可能な用途が、ウェブログ、チャットプログラム、ユーザコミュニティ、フォーラム、分散コンピューティング環境、セキュリティ、都市のマッピングおよびネットワークの堅牢性に対して存在する。
【００２４】
個人の位置を地理的に特定するいくつかの方法が現在存在するが、各システムは、それらをコンピューティング環境において技術的に禁止する、コストおよび他の不都合を有する。全地球測位システム（ＧＰＳ）は、地球の軌道における衛星の位置に対する見通し線によって制限されるが、これは、都市では高層ビルゆえに、かつ屋内では完全な頭上の障害物ゆえに、位置情報管理システム（ＧＰＳ）をひどく制約する。センサを取り付けるかまたは放送テレビジョン信号を用いて、都市および屋内のジオロケーションを提供するために、いくつかのプロジェクトが開始された。
【００２５】
対照的に、これらの環境では、既に、無線アクセスポイント（ＡＰ）を取り付ける傾向の増加が見られる。空港、カフェ、オフィスおよび都市近郊は全て、無線ＡＰを取り付けて、無線機器にインターネットアクセスを提供し始めている。この使用可能で共生的なインフラストラクチャ、すなわちＩＰアドレスによるジオロケーションの利用は、直ちに実現することができる。
【００２６】
ジオロケーション資源およびインフラストラクチャの提供を目標とするいくつかのＲＦＣ提案が、インターネット技術標準化委員会（ＩＥＴＦ）によってなされた。今や、いくつかの会社は、ＩＰによって位置を決定するためのペイパーユースサービスを提供している。
【００２７】
数年前に、ＣＡＩＤＡ、すなわちインターネットデータ分析協会は、ＮｅｔＧｅｏと呼ばれる、ＩＰアドレスによるジオロケーションの取り組みを始めた。このシステムは、地理的に位置を特定されたＩＰアドレスの公にアクセス可能なデータベースだった。多くの複雑な規則の使用を通じて、ＮｅｔＧｅｏデータベースは、ゆっくりと満たされ、ＩＰアドレスの位置用に修正された。
【００２８】
ＮｅｔＧｅｏデータベースに問い合わせるために、ＨＴＴＰ要求は、次のように問い合わせＩＰアドレスを用いて行われる。
----
【００２９】
$ http://netgeo.caida.org/perl/netgeo.cgi?target=192.168
.0.1
VERSION=1.0
TARGET: 192.168.0.1
NAME: IANA-CBLK1
NUMBER: 192.168.0.0 - 192.168.255.255
CITY: MARINA DEL REY
STATE: CALIFORNIA
COUNTRY: US
LAT: 33.98
LONG: -118.45
LAT_LONG_GRAN: City
LAST_UPDATED: 16-May-2001
NIC: ARIN
LOOKUP_TYPE: Block Allocation
RATING:
DOMAIN_GUESS: iana.org
STATUS: OK
----
【００３０】
ＮｅｔＧｅｏ応答には、問題のＩＰアドレスの都市、州、国、緯度、および経度が含まれる。さらにまた、粒度（ＬＡＴ＿ＬＯＮＧ＿ＧＲＡＮ）は、位置の精度に関してある概念を提供するために推定される。この精度はまた、ＬＡＳＴ＿ＵＰＤＡＴＥＤフィールドから推定することができる。明らかに、更新が古ければ古いほど、それだけ位置が変わった可能性がある。これは、特に、一般家庭顧客に割り当てられるＩＰアドレスにとって真実である。なぜなら、これらのアドレスを保持する会社が絶えず変わるからである。
【００３１】
いくつかの既存のパッケージが、ＮｅｔＧｅｏデータベースから情報を検索する際に役立つ。ＰＥＡＲシステムはＰＨＰパッケージを有し、ＰＥＲＬモジュールのＣＡＩＤＡ：：ＮｅｔＧｅｏ：：Ｃｌｉｅｎｔが利用可能である。あなたのアプリケーションまたはサービス用に用いているどんな言語でも、要求を作成するのは比較的簡単な作業である。例えば、ＮｅｔＧｅｏ応答を取得および解析するためのＰＨＰにおける関数は、次のようである。
----
1: function getLocationCaidaNetGeo($ip)
2: {
3:$NetGeoURL="http://netgeo.caida.org/perl/netgeo.cgi?target= ".$ip;
4: 5: if($NetGeoFP = fopen($NetGeoURL,r))
6: {
7:      ob_starto()
8:
9:      fpassthru($NetGeoFP);
10:      $NetGeoHTML=ob_get_contents();
11:      ob_end_clean();
12:
13: fclose($NetGeoFP);
14: }
15: preg_match ("/LAT:(.*)/i", $NetGeoHTML, $temp) or die("Could not find element LAT");
16: $location[0] = $temp[1];
17: preg_match ("/LONG:(.*)/i", $NetGeoHTML, $temp) or die("Could not find element LONG");
18: $location[1] = $temp[1];
19:
20: return $location;
21: }
----
【００３２】
ＮｅｔＧｅｏデータベースは、会社の清算および合併でＩＰアドレスブロックの持ち主が変わるとともに、徐々により不正確になっている。しかしながら、位置を決定するために、他のいくつかのツールが利用可能である。ＮｅｔＧｅｏインフラストラクチャ自体の説明が、ＩＰアドレスをマッピングするためにＮｅｔＧｅｏが用いた方法のいくつかを提示し、かつ将来のプロジェクト用のガイダンスのソースになり得る。
【００３３】
最も有用なジオロケーション資源の１つが、ＤＮＳ  ＬＯＣ情報であるが、しかしそれは、インターネットインフラストラクチャ全体にわたって実施するのは困難である。ＲＦＣ１８７６は、「ドメインネームシステムにおいて位置情報を表すための手段」を概説する規格である。特に、これは、サーバの位置情報をＤＮＳ登録ページ上に載せることによって行われる。いくつかの人気のあるサーバは、この規格を用いているが、しかしまだ今のところ直接的に有用であるほど十分ではない。
【００３４】
サーバのＬＯＣ  ＤＮＳ情報をチェックするために、ホストのＬＯＣタイプを得る必要がある。
----
$ host -t LOC yahoo.com
yahoo.com LOC 37 23 30.900 N 121 59 19.000 W 7.00m 100m 100m 2m
----
【００３５】
これは、高度７メートル、北緯３７度２３’３０．９００’’、西経１２１度５９’１９．０００’’において、１００メートルの水平精度および２メートルの垂直精度におけるほぼ１００メートルのサイズであると解析することができる。このように、自身の地理的位置を提示するサーバには、いくつかの利点がある。第１に、自身のＤＮＳ  ＬＯＣ情報を示すサーバからあなたが接続している場合には、あなたのジオロケーションを決定することは簡単であり、アプリケーションは、さらなる作業なしにこの情報を用いてもよい。とはいえ多少の検証は、有用になり得る。第２に、あなたが、ＤＮＳ  ＬＯＣ情報を有するサーバを介して第２または第３のバウンスで接続している場合には、トラフィックおよびピング時間に基づいて、あなたの位置を推定することが可能になり得る。しかしながら、これらの推定は、精度が非常に低下する。
【００３６】
あなたのＷｅｂサイト用のＤＮＳ  ＬＯＣ情報をその登録簿に載せることもまた可能である。より多くのサーバがＬＯＣ情報を用いるようになれば、ジオロケーション精度は、達成するのがはるかに容易になろう。
【００３７】
「ＨＯＳＴ」は、ホストに関する情報の様々な断片をユーザが発見できるようにするＤＮＳルックアップユーティリティである。最も単純な使用法は、ＩＰアドレスルックアップに対してホスト名を用いること、および逆引きを行うことである。逆引き、すなわちドット付き１０進ＩＰｖ４表記が、このために用いられ、正規名をホストする実際のサーバが返される。タイプフラグ、−ｔは、ネームサーバのホスト記録から特定の情報を得るために用いることができる。
【００３８】
サービスプロバイダは、典型的にはＩＰアドレスを割り当てて、かつこれらのアドレスに名前を関連させる内部命名方式を提供する。典型的には、ＩＰアドレスの正規名には、接尾辞に国別ドメイン（ｃｃＴＬＤ）が含まれる。ＣＮは中国であり、ＦＲはフランスであり、ＲＯはルーマニアである等である。さらに、名前には、ＩＰアドレスが位置する都市または地域さえ含んでもよい。しかしながら、この情報は、判定するためにヒューリスティックを必要とするある名前に短縮されることが多い。例えば、あなたのサービスまたはアプリケーションにおいて、ユーザが、d14-69-1-64.try.wideopenwest.comから来ているように見えるかもしれない。このアドレスにおけるフーイズ（Whois）は、それがミシガン（Michigan）からのＷｉｄｅＯｐｅｎＷｅｓｔアカウントであることを明らかにする。ある論理を用いれば、このユーザが、ミシガン州トロイ（Troy,MI）、従って正規名で．ｔｒｙ．に位置するサーバを介して接続していると推定することが可能である。
【００３９】
これらのアドレスを解読するために、いくつかのプロジェクトが開始され、またＩＡＮＡルートゾーンフーイズ情報、またはＧＥＯｎｅｔネームサーバ（ＧＮＳ）をホストする米国地球空間情報局から、国家の国コードならびに関連する都市および地域の全てを得ることができる。ＧＮＳは、ほとんど全ての世界の国々、地域、州および都市に関して、それらのサイズ、地理的位置および略語と同様に他の情報を含む、自由に利用可能なデータファイルを有する。
【００４０】
また、ＧＮＳ上で提示される情報などの情報を用いて、ユーザの地理的位置に特有のユーティリティおよびサービスをユーザに提供することができる。例えば、ユーザの現地通貨、タイムゾーンおよび言語を判定することが可能である。タイムゾーンは、別の友達がいつ応対でき、オンラインになり得るかを判定するために、コミュニティまたはチャットグループのメンバーにとって特に有用である。
【００４１】
データを検索する要求が、記憶プロセス１００から中央サーバ１４によって受信されると、ノードのジオロケーションによって支援されてネットワーク１０においてノードメモリからノードメモリに転送されている、要求されたデータが、検索される。
【００４２】
このようにして転送されるデータは、セグメント化することができ、上記のようにセグメントを転送することができる。セグメント化されたデータは、やはり、どんなネットワークノードのどんな物理的記憶媒体にも記憶されず、単に、一ノードのメモリから別のノードのメモリに転送されるだけである。
【００４３】
図４に示すように、記憶プロセス１００には、データを記憶または検索する要求を中央サーバ１４に送信すること（１０２）が含まれる。要求がデータ検索要求である場合には、記憶プロセス１００は、ネットワークにおける中央サーバ１４またはノードから要求したデータを受信する。
【００４４】
中央サーバ１４への要求が、データ記憶要求である場合には、記憶プロセス１００は、ノードのアドレスを中央サーバ１４から受信し（１０４）、受信したアドレスが表すノードメモリにデータを転送する（１０６）。中央サーバ１４は、適切なアドレスを見つける際に、ジオロケーションによって支援され、ジオロケーションは、それほど使用されていないノードか、またはネットワークトラフィックの点で軽快なノードの位置を特定するのに役立つことができる。
【００４５】
図５に示すように、データ転送プロセス２００には、データを記憶または検索する要求を受信すること（２０２）が含まれる。受信された要求がデータを記憶する要求である場合には、データ転送プロセス２００は、メモリにデータを受信するために利用可能なノードのアドレスを、そのジオロケーションにより支援されて決定する（２０４）。この決定（２０４）には、ノードの位置を特定するためにジオロケーションを用い、ネットワークをピングしてネットワークにおけるどのノードが利用可能であるかを決定すること、またはネットワークにおけるどのノードが最小トラフィックを有するかを決定すること、またはネットワークにおけるどのノードが最大の利用可能なメモリを有するかを決定すること、またはノードの地理的座標、またはこれらもしくは他の要因の任意の組み合わせを含むことができる。ジオロケーションを用いることによって、互いにおよび／またはユーザに隣接するノードを選択することで、より大きな速度向上および効率化が可能になる。
【００４６】
プロセス２００は、データを転送するための要求者用の特定のノードのアドレスを備えたメッセージをユーザシステムに送信する（２０６）。
【００４７】
プロセス２００は、ノードメモリにおけるデータの存在を検出する（２０８）。プロセス２００は、ジオロケーション（例えば、ネットワークにおけるノードの位置）によって支援されて、メモリにおけるデータをノードネットワークにおける別のノードに転送し（２１０）、そして引き続き、データの検出（２０８）およびジオロケーションによって支援されたノードメモリからノードメモリへのデータの転送（２１０）を繰り返す。データがいずれかのノードメモリに到達すると、プロセス２００は、タイムスタンプをデータに添付する（２１２）。
【００４８】
転送すること（２１０）には、ネットワークにおけるノードをピングして、ネットワークにおけるどのノードが利用可能であるかを決定すること、またはネットワークにおけるどのノードが最小トラフィックを有するかを決定すること、またはネットワークにおけるどのノードが最大の利用可能なメモリを有するかを決定すること、またはこれらもしくは他の要因の任意の組み合わせを含むことができる。
【００４９】
１つの特定の例では、ノードへのエントリポイントにおいて、データは、ノードまたは中央サーバ１４またはユーザとの暗号化された「ハンドシェイク」を経験する。これは、公開−秘密鍵を用いることができる、カシミヤシステムなどの公開または秘密暗号システムとすることができる。カシミヤは、暗号化された転送経路およびメッセージペイロードを分離するが、これは、ソースが、宛先の一意の公開鍵を用いる単一公開鍵暗号化を各メッセージに対して実行する必要があるだけなので、性能を改善する。これには、対応する中継グループの全てのノードではなく、真の宛先ノードだけが、メッセージペイロードを解読できるという利点がある。カシミヤは、宛先が、ソースのアイデンティティを知らずに匿名の応答メッセージを送信できる能力を提供する。これは、ソースが応答経路を作り、それを転送経路と同じように暗号化する場合と、同じように行われる。
【００５０】
別の例では、他のルーティング方式が利用される。
【００５１】
受信された要求が、ノードメモリからノードメモリに継続的に転送されているデータを検索する要求である場合には、データ転送プロセス２００は、暗号化ハンドシェイクを介してデータがノードに着信するとノードが「感づく」ことができるハッシュマークまたは他の一意のコードを用いて、中央サーバ１４においてマッチングする（２１４）。これは、ネットワークにおけるノードをピングすることによって行うことができる。プロセス２００は、データが恐らく現れるだろうと中央サーバ１４が信じるノードまたはノード状態へ、データをユーザに返すためのメッセージを直接送信する（２１６）。中央サーバ１４が、それがピングするノード状態を絞ることができればできるほど、検索は、それだけ効率的になり、かつ中央サーバ１４と、データを転送できるノードとの間のトランザクションには必要でないノードへの不必要なメッセージトラフィックによる負荷がそれだけ少なくなる。
【００５２】
ひとたび正しいノードが、ノードメモリにおけるデータを要求者に転送するメッセージを受信すると、プロセス２００は、ノードメモリのデータを要求者に転送し（２１８）、データがユーザに送信されたという確認メッセージを転送する（２２０）。このルーティングメッセージは、中央サーバ１４に直接送信してもよく、またはネットワーク１０における他のノード（単複）またはスーパーノード（単複）を介して中央サーバ１４または複数サーバに伝達してもよい。要求したデータをユーザが受信すると、ユーザのアプリケーションは、要求したデータが受信されたことを中央サーバ１４に自動的にピングするように機能する。したがって、ネットワーク１０は、どんな物理的記憶媒体にデータをキャッシング、ダウンロードおよび／または記憶することもなく、データ記憶を行う。データ記憶および管理は、ノードメモリからノードメモリへのデータの継続的なルーティングを介して達成され、転送されるデータは、ネットワーク１０からユーザにデータが返されることをユーザが要求する場合にのみダウンロードされる。
【００５３】
性能に基づいて新しいノードおよびノード状態をネットワーク１０に追加するか、かつ／またはそこから削除してもよい。ユーザは、全てのノードへのアクセスを有してもよく、または中央サーバ（単複）によって、もしくはプライベート、パブリック、もしくはプライベート−パブリックネットワークの特定のアーキテクチャを介して、あるノードもしくは「ノード状態」に対してセグメント化されてもよい。
【００５４】
個別ノード、ノード状態およびスーパーノードはまた、パブリックまたはプライベートネットワークにおけるエクストラネットピア、無線ネットワークピア、サテライトピアノード、Ｗｉ−Ｆｉピアノード、広帯域ネットワークなどであってもよい。ピアノードまたはユーザは、同じセキュリティシステムを用いる任意の有効なピアポイントからの、ネットワーク１０におけるルーティング参加者として、ならびに無線ピアのための無線暗号化方式など、特定の配備の困難な点に適した（suitable for the rigors of specific deploypments）カスタムソリューションなどとして用いてもよい。
【００５５】
プロセス２００において、リモートサーバ、ハードドライブまたは他の固定記憶媒体にデータをキャッシュまたは保持するのではなく、データは、ノードメモリからノードメモリに伝達され、ルーティングされ、転送される。データは、許可されたユーザがデータを要求するまでは決してダウンロードされない。システム上のユーザは、１人を超えるユーザがデータへのアクセス権を有するのを認可してもよい。
【００５６】
プロセス２００における主な目標は、データ記憶および管理システムであって、データが物理的記憶装置には決して固定されず、実際には、ネットワークにおけるノードメモリからノードメモリに継続的にルーティング／転送されているデータ記憶および管理システムを生成することである。また、データが転送されるノードの経路を中央サーバ１４によって変更して、システム容量を調整し、この特徴なしではデータ経路の可能性の増加によりネットワークのセキュリティを弱める可能性があるデータの冗長な経路を除去してもよい。
【００５７】
本発明は、次の利点の１つまたは複数を実現するように実施することができる。ネットワークは、キャッシングもダウンロードもなしに、データ記憶を行う。データ記憶および管理は、データの継続的なルーティングを介して達成される。
【００５８】
本発明の実施形態は、デジタル電子回路、またはコンピュータハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせにおいて実施することができる。本発明の実施形態は、例えばプログラム可能プロセッサ、１つのコンピュータもしくは多数のコンピュータなどのデータ処理装置によって実行するための、またはこれらの動作を制御するためのコンピュータプログラム製品として、すなわち、例えば機械可読記憶装置などの情報キャリアにおいて実体的に具体化されるコンピュータプログラムとして、実施することができる。コンピュータプログラムは、コンパイラ型言語またはインタープリタ型言語を含む任意の形態のプログラミング言語で書くことができ、かつそれは、スタンドアローンプログラム、またはモジュール、コンポーネント、サブルーチンもしくはコンピュータ環境で使用するのに適した他のユニットを含む任意の形態で配置することができる。コンピュータプログラムは、１つのサイトにおける１つのコンピュータもしくは多数のコンピュータ上で実行するように配置するか、または多数のサイトにわたって分散し通信ネットワークによって相互接続するように配置することができる。
【００５９】
本発明の実施形態の方法ステップは、入力データに作用して出力を生成することによって本発明の機能を実行するためにコンピュータプログラムを実行する１つまたは複数のプログラム可能プロセッサによって、実行することができる。方法ステップはまた、専用論理回路、例えばＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）によって実行することができ、かつ本発明の装置は、専用論理回路、例えばＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）として実現することができる。
【００６０】
コンピュータプログラムの実行に適したプロセッサには、例として、汎用および専用マイクロプロセッサの両方、ならびに任意の種類のデジタルコンピュータにおける任意の１つまたは複数のプロセッサが含まれる。一般に、プロセッサは、読み出し専用メモリまたはランダムアクセスメモリまたは両方から命令およびデータを受信する。コンピュータの本質的な要素は、命令を実行するためのプロセッサ、命令およびデータを記憶するための１つまたは複数のメモリ装置、である。一般に、コンピュータはまた、データを記憶するための１つもしくは複数の大容量記憶装置、例えば磁気ディスク、光磁気ディスクもしくは光ディスクを含むか、またはこれらの大容量記憶装置からデータを受信するか、もしくはこれらにデータを転送するか、もしくは両方のために動作可能に結合される。コンピュータプログラム命令およびデータを具体化するのに適した情報キャリアには、例として半導体メモリ装置、例えばＥＰＲＯＭ、ＥＥＰＲＯＭ、およびフラッシュメモリ素子と、磁気ディスク、例えば内部ハードディスクまたは取り外し可能ディスクと、光磁気ディスクと、ＣＤ  ＲＯＭおよびＤＶＤ−ＲＯＭディスクと、を含む不揮発性メモリの全ての形態が含まれる。プロセッサおよびメモリは、専用論理回路によって補足するか、または専用論理回路に組み込むことができる。
【００６１】
前述の説明が、本発明の範囲を限定するのではなく、例示するように意図され、本発明が、添付の特許請求の範囲によって定義されることを理解されたい。他の実施形態は、添付の特許請求の範囲の範囲内にある。
【図１】
0005595403.tif 000002
【図２】
0005595403.tif 000003
【図３】
0005595403.tif 000004
【図４】
0005595403.tif 000005
【図５】
0005595403.tif 000006