JP2010505201A - セキュア・ピアツーピア・キャッシュ共有 - Google Patents

セキュア・ピアツーピア・キャッシュ共有 Download PDF

Info

Publication number
JP2010505201A
JP2010505201A JP2009530533A JP2009530533A JP2010505201A JP 2010505201 A JP2010505201 A JP 2010505201A JP 2009530533 A JP2009530533 A JP 2009530533A JP 2009530533 A JP2009530533 A JP 2009530533A JP 2010505201 A JP2010505201 A JP 2010505201A
Authority
JP
Japan
Prior art keywords
peer
computer
data
requested data
caching
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009530533A
Other languages
English (en)
Other versions
JP4762347B2 (ja
JP2010505201A5 (ja
Inventor
アハメド,クハジャ・イー
サイモン,ダニエル・アール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2010505201A publication Critical patent/JP2010505201A/ja
Publication of JP2010505201A5 publication Critical patent/JP2010505201A5/ja
Application granted granted Critical
Publication of JP4762347B2 publication Critical patent/JP4762347B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/126Applying verification of the received information the source of the received data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1068Discovery involving direct consultation or announcement among potential requesting and potential source peers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • H04L67/1091Interfacing with client-server systems or between P2P systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

セキュアP2Pキャッシングのためのシステム、機器、方法、およびコンピューター可読媒体が提供される。一方法では、要求側ピアが、要求したデータのハッシュをサーバーから得る。次いで、要求側ピアは、データを求める要求を他のピアに送信する。要求は、要求側ピアがハッシュを有することを証明する。キャッシングピアがデータを有する場合、キャッシングピアは、キャッシングピアが要求されたデータを有することを証明する、要求に対する応答を生成する。要求側ピアがキャッシングピアから応答を受信した場合、要求側ピアは、キャッシングピアに対する接続を確立し、キャッシングピアからデータを取り出す。要求側ピアが他のどのピアからも要求に対する応答を受信しない場合、要求側ピアは、サーバーに対する接続を確立し、サーバーからデータを取り出す。要求側ピアは、他のピアからの要求に応答する際に使用するために、データを格納する。
【選択図】図2

Description

経済のグローバル化の結果として、多くの企業は、主要企業オフィスを、ブランチオフィスと呼ばれる多数のリモートオフィスサイトと共に運営している。企業のオフィスのすべての間のネットワーク接続性を実現するために、通常は広域ネットワーク(「WAN」)が使用される。WANは、広範な地理領域をカバーし、異なる地理位置で動作する多数のコンピューターを含むコンピューターネットワークである。例えば、西半球を基盤とする会社は、WANを使用して、東半球に位置するブランチオフィスへの接続性を実現することができる。
世界中の企業の情報技術(「IT」)予算の大部分が、ブランチオフィス内の技術とブランチオフィスのネットワーク接続性とを確立および維持することに対して費やされる。具体的には、こうした予算の大部分が、ブランチオフィスに対するWANリンクの購入および保守に費やされる。オフィスがグローバルに分散する傾向は、WANの使用と、企業にとっての関連するコストとを増大させることが予期される。その結果、WAN保守コストを削減するために、一般にはWAN利用率を改良することが望ましい。
現在、WAN利用率を最大にし、それによって関連するWANリンクコストを削減するために、様々な技術が使用されている。例えば、データ圧縮、サービス品質(「QoS」)、トラフィックシェーピング、伝送制御プロトコル(「TCP」)最適化、広域ファイルサービス(「WAFS」)、キャッシングのような技術、およびその他を使用して、WAN利用率を最大にすることができる。多くの場合、こうした技術は、各ブランチオフィスに常駐するネットワークアプライアンスに集約される。遺憾ながら、こうした装置は多くの場合費用がかかり、ブランチオフィスでは利用可能ではない可能性のある管理監視も必要とする。しかし、さらに厄介なことは、こうした現在の解決策が、エンドツーエンドセキュリティが必要である環境ではうまく動作しないことである。
こうした考慮すべき点およびその他に関して、セキュアピアツーピア(「P2P」)キャッシュ共有のための方法、システム、機器、およびコンピューター可読媒体の態様が本明細書で説明される。
セキュアP2Pキャッシュ共有のためのシステム、機器、方法、およびコンピューター可読媒体が本明細書で提供される。本明細書で提供される開示の一態様によれば、ピアコンピューター(peer computer)でデータを安全にキャッシュすることによってネットワークリンクの利用率が最大となる。本明細書に記載のキャッシングはネットワークスタックのアプリケーション層の下で実施されるので、キャッシングプロセスは、費用のかかるネットワークアプライアンス、クライアント・アプリケーション・プログラムまたはサーバー・アプリケーション・プログラムの修正、あるいは追加の管理サポートを必要としない。
本明細書に記載の一方法によれば、P2Pネットワーク内で動作するピアコンピューターは、キャッシュ・マネージャー・プログラムを含む。キャッシュ・マネージャー・プログラムは、ピアコンピューター上でネットワーク・プロトコル・スタックと共に実行され、アプリケーション・プロトコル・データ要求に関するプロキシとして働く。そのような要求を受信したことに応答して、キャッシュマネージャーは、サーバーコンピューターと連絡を取り、要求されたデータに関するハッシュ値(hash value)(本明細書では「ハッシュ」(hash)とも呼ばれる)を取り出すように動作する。ハッシュ値は、要求されたデータに対するハッシュ関数の適用の結果である。サーバーコンピューターは、キャッシュマネージャーが実行中の要求側ピアコンピューターがデータに対する適切なアクセス権を有するときに、要求されたデータに関するハッシュ値を提供するだけである。例えば、サーバーコンピューターは、要求されたデータに関するハッシュ値をキャッシュマネージャーに提供する前に、要求されたデータについてアクセス制御リスト(「ACL」)をチェックすることができ、または別のタイプのセキュリティチェックを実施することができる。
キャッシュマネージャーが、要求されたデータに関するハッシュ値を得ると、キャッシュマネージャーは、ネットワーク上の他のピアコンピューターに、データを求めるブロードキャスト要求を送信する。ブロードキャスト要求は、キャッシング・ピア・コンピューターと呼ばれる別のピアコンピューターが要求されたデータを有するかどうかを、要求側コンピューターが判定することを可能にする。ブロードキャスト要求は、要求されたデータに関するハッシュ値を要求側ピアが所有することを証明するのに十分なデータを含む。要求されたデータに関するハッシュ値の所有が、要求されたデータ自体の所有に対する権利を示唆するので、このことが、要求されたデータに関するハッシュ値を送信することなく実施される。
一実装では、ブロードキャスト要求は、要求されたデータに関するハッシュ値と、要求側ピアコンピューターによって生成されたランダムデータと、要求側ピアコンピューターに関する識別子のハッシュを含む。この実装では、ブロードキャスト要求はまた、要求側ピアによって生成されたランダムデータと連結された、要求されたデータに関するハッシュ値と、タイムスタンプと、要求側ピアコンピューターに関する識別子のハッシュも含む。ブロードキャスト要求内に含まれるデータを使用して、他のピアコンピューター上で実行中のキャッシュマネージャーは、要求側ピアコンピューターが、要求されたデータに関するハッシュ値を実際に所有しているかどうかを判定することができる。ブロードキャスト要求内のデータはまた、要求されたデータを他のピアコンピューターが所有しているかどうかを判定する際に他のピアコンピューターを援助する。
別のピアコンピューター上で実行中のキャッシュマネージャーが、要求されたデータに関するハッシュ値を要求側ピアコンピューターが所有しており、要求されたデータを要求側ピアコンピューターが有すると判定した場合、キャッシング・ピア・コンピューター上で実行中のキャッシュマネージャーが、要求に対する応答を生成する。応答は、要求されたデータに関するハッシュ値を送信することなく、要求されたデータのキャッシング・ピア・コンピューターによる所有を証明するのに十分なデータを含む。具体的には、一実施形態によれば、応答は、要求されたデータに関するハッシュ値と、キャッシング・ピア・コンピューターによって生成されたランダムデータのハッシュを含む。応答はまた、キャッシング・ピア・コンピューターによって生成されたランダムデータと連結された、要求されたデータに関するハッシュ値と、要求側ピアコンピューターに関する識別子と、キャッシング・ピア・コンピューターに関する識別子と、タイムスタンプのハッシュも含む。
要求側ピアコンピューターがキャッシング・ピア・コンピューターから要求に対する応答を受信した場合、要求側ピアコンピューター上で実行中のキャッシュマネージャーは、応答の内容を使用して、要求されたデータをキャッシング・ピア・コンピューターが実際に所有しているかどうかを判定する。要求されたデータをキャッシング・ピア・コンピューターが実際に所有している場合、要求側ピアコンピューターは、キャッシング・ピア・コンピューターに対するセキュアネットワーク接続を確立し、キャッシング・ピア・コンピューターからセキュア接続を介して、要求されたデータを取り出す。要求側ピアコンピューターが他のどんなピアコンピューターからも要求に対する応答を受信しない場合、要求側ピアコンピューターは、要求側ピアコンピューターがハッシュを得たサーバーコンピューターに対する接続を確立し、サーバーコンピューターから要求されたデータを取り出す。
要求側ピアコンピューターが、要求されたデータを別のピアコンピューターまたはサーバーコンピューターから得た後は、要求側ピアコンピューターは、要求されたデータをキャッシュに格納し、要求されたデータに関するハッシュ値のハッシュを使用してデータを索引付けすることができる。次いで、ピアコンピューターは、格納されたデータを使用して、データを求める他のピアコンピューターからの要求に応答することができる。このようにして、各ピアコンピューターは、要求側ピアコンピューターとキャッシング・ピア・コンピューターのどちらとしても働く。
上述の主題を、コンピューター制御機器、コンピュータープロセス、コンピューティングシステムとして、またはコンピュータープログラム製品やコンピューター可読媒体などの製品として実装することもできる。コンピュータープログラム製品は、コンピューターシステムで可読であり、コンピュータープロセスを実行するためのコンピュータープログラムの命令を符号化するコンピューター記憶媒体でよい。コンピュータープログラム製品はまた、コンピューティングシステムで可読であり、コンピュータープロセスを実行するためのコンピュータープログラムの命令を符号化する、搬送波上の伝播信号でもよい。上記および様々な他の特徴が、以下の発明を実施するための形態を読み、関連する図面を検討することで明らかとなるであろう。
この概要は、以下の発明を実施するための形態でさらに説明される概念の抜粋を単純化した形で導入するために与えられたものである。この概要は、特許請求される主題の主要な特徴または不可欠な特徴を識別するためのものではなく、特許請求される範囲を限定するのに使用されるものでもない。
本明細書に記載のプロセスおよびコンピューターシステムのための例示的動作環境を示すネットワーク図である。 ピアコンピューター上で実行中の例示的ネットワーク・プロトコル・スタックと、コンテンツ・サーバー・コンピューター上で実行中のネットワーク・プロトコル・スタックの態様をそれぞれ示すソフトウェアアーキテクチャ図である。 本明細書で論じられるP2Pネットワーク内でデータを安全にキャッシュする例示的プロセスの態様を示す流れ図である。 本明細書で論じられるP2Pネットワーク内でデータを安全にキャッシュする例示的プロセスの態様を示す流れ図である。 本明細書で論じられるP2Pネットワーク内でデータを安全にキャッシュする例示的プロセスの態様を示す流れ図である。 本明細書で論じられる一実装で使用される、データを求める要求の内容を示すデータ構造図である。 本明細書で論じられる一実装で使用される、要求に対する応答の内容を示すデータ構造図である。 本明細書に記載の様々なコンピューターシステムを実装するのに適したコンピューターキテクチャを示すコンピューターキテクチャ図である。
以下の詳細な説明は、セキュアP2Pキャッシュ共有のためのシステム、方法、およびコンピューター可読媒体を対象とする。本明細書に記載の主題が、コンピューターシステム上のオペレーティングシステムおよびアプリケーションプログラムの実行と共に実行されるプログラムモジュールの一般的状況で提示されるが、他のタイプのプログラムモジュールと組み合わせた他の実装を実施できることを当業者は理解されよう。特定用途向け集積回路(「ASIC」)、フィールド・プログラマブル・ゲート・アレイ(「FPGA」)、カスタムハードウェア、または他のタイプのハードウェア装置の使用などを介して、本明細書に記載のソフトウェア構成要素をハードウェアとして実装することもできることも当業者は理解されよう。
本明細書に記載のように、プログラムモジュールは一般に、特定のタスクを実行し、または特定の抽象データタイプを実装するルーチン、プログラム、コンポーネント、データ構造、および他のタイプの構造を含む。さらに、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースの、またはプログラム可能なコンシューマエレクトロニクス、ミニコンピューター、メインフレームコンピューターなどを含む他のコンピューターシステム構成と共に本明細書に記載の主題を実施できることを当業者は理解されよう。本明細書に記載の主題はまた、通信ネットワークを介してリンクされるリモート処理装置によってタスクが実行される分散コンピューティング環境で実施されるものとして説明され、プログラムモジュールは、ローカルメモリ記憶装置とリモートメモリ記憶装置のどちらにも配置することができる。しかし、スタンドアロン・コンピューター・システムおよび他のタイプのコンピューティング装置と共に本明細書に記載の実装を使用することもできることを理解されたい。
以下の詳細な説明では、本発明の一部を形成し、特定の実施形態または実施例の例示として示される添付の図面に対して参照がなされる。次に、いくつかの図にわたって同様の番号が同様の要素を表す図面を参照して、セキュアP2Pキャッシュ共有のためのコンピューティングシステムおよび方法の態様が説明される。
図1は、本明細書に記載の主題のための例示的動作環境の態様を示す。具体的には、図1は、本明細書に記載のコンピューティングシステムおよびプロセスのための動作環境を形成するコンピューティングネットワーク100の態様を示すネットワーク図である。図1に示されるように、ネットワーク100は、多数のピアコンピューター102A〜102F(本明細書では「ピア」、「ノード」、または「クライアント」とも呼ばれる)にコンテンツサーバー104を接続し、ピアコンピューター102A〜102Fを互いに接続するWANを含む。
図1に示されるネットワークアーキテクチャは、主要企業構内またはオフィスと複数の遠隔位置またはブランチオフィスを接続するのにビジネスで利用される典型的なネットワークアーキテクチャである。しかし、図1に示されるネットワーク環境は例に過ぎず、任意のタイプのネットワーク環境で動作するコンピューターシステム間でデータを安全に転送するのに本明細書に記載の実装を利用できることを理解されたい。その結果、図1に示され、本明細書に記載のネットワークアーキテクチャは、単なる例とみなされるべきであり、いかなる形でも限定的なものとみなされるべきではない。
図1に示されるWANは、コンテンツサーバー104が直接接続される主要企業ネットワーク108を含む。主要企業ネットワーク108は、インターネット110などの分散公衆コンピューティングネットワークに接続される。ブランチ・オフィス・ネットワーク106A〜106Cもインターネット110に接続される。ブランチ・オフィス・ネットワーク106A〜106Cは、2つ以上のコンピューターシステムをローカルに接続するのに適したローカルエリアネットワーク(「LAN」)である。例えば、ピアコンピューター102A〜102Cはブランチ・オフィス・ネットワーク106Aに接続され、ピアコンピューター102D〜102Fはブランチ・オフィス・ネットワーク106Bに接続される。図1に示されるものより多数または少数のブランチ・オフィス・ネットワークを使用することができ、より多数または少数のピアコンピューターを各ブランチ・オフィス・ネットワークに接続できることを理解されたい。図1に示されない他のネットワークを使用して、ピアコンピューター102A〜102F間のネットワーク経路、およびコンテンツサーバー104に対するネットワーク経路を完成することができる。
本明細書に記載の実装によれば、ピアコンピューター102A〜102Fは、P2Pネットワーキングシステムを作成するように動作する。P2Pネットワーキングシステムは、計算能力、帯域幅、および記憶を比較的少数のサーバーに集中させるのではなく、主にネットワーク内の参加コンピューターの計算能力、帯域幅、および記憶に依拠するネットワークである。以下でより詳細に説明されるように、ピアコンピューター102A〜102Fによって作成されたP2Pネットワーキングシステムは、ピア102A〜102Fの一部またはすべてでデータをキャッシュし、キャッシュしたデータを他のピアコンピューターに安全に提供するように動作する。このようにして、WANを介してコンテンツサーバー104から取り出されたデータをブランチ・オフィス・ネットワーク内にキャッシュすることができる。ピアコンピューター102A〜102Fのうちの1つからの、データを求める後続の要求時に、WANを介してコンテンツサーバー104からデータを再び取り出すのではなく、キャッシュされたデータが使用される。このようにして、WANを介して送られるネットワークトラフィック量が削減される。このプロセスに関する追加の詳細が、図2〜5に関して以下で与えられる。
図1に示されるピアコンピューター102A〜102Fのそれぞれは、標準デスクトップ、ラップトップ、ハンドヘルド、サーバー、または他のタイプのコンピューターシステムを含む。以下で詳細に論じるように、ピアコンピューター102A〜102Fのそれぞれは、ピアコンピューター102A〜102Fでデータを安全にキャッシュするプロセスと、要求されたデータをP2Pキャッシュから取り出し、または必要に応じてコンテンツサーバー104から取り出すプロセスを調整するキャッシュ・マネージャー・プログラムを含む。ピアコンピューター102A〜102Fで使用されるソフトウェアおよびハードウェアならびにその動作に関する追加の詳細が、図2〜5に関して以下で与えられる。
図1に示されるコンテンツ・サーバー・コンピューター104は、コンテンツサーバー104に格納され、またはコンテンツサーバー104にとって利用可能なコンテンツを求める要求をピアコンピューター102A〜102Fから受信し、その要求に応答するように動作する標準サーバーコンピューターを含む。コンテンツは、限定はしないが、電子メール(「Eメール」)メッセージ、コンテンツサーバー104または他の場所に格納されたデータファイル、コンテンツサーバー104に格納されたウェブページまたはインターネット110上のウェブページ、カレンダーイベント、連絡先、タスク、ノートなどの個人情報マネージャー(「PIM」)データ、または他のタイプのデータを含む任意のタイプのデジタルデータを含むことができる。以下でより詳細に説明されるように、コンテンツサーバー104は、ピアコンピューター102A〜102Fによって要求されたデータを一意的に記述するハッシュ値を提供することにより、ピアコンピューター102A〜102Fでのデータのキャッシングを援助する。さらに、要求されたデータがピアコンピューター102A〜102Fのうちの1つによってキャッシュされない場合、コンテンツサーバー104は、要求されたデータを要求側ピアコンピューターに直接提供する。コンテンツサーバー104およびその動作で使用されるハードウェアおよびソフトウェアに関する追加の詳細が、図2〜5に関して以下で説明される。
次に図2を参照して、P2Pシステムでデータを安全にキャッシュする本明細書で提示される実施形態に関して追加の詳細が与えられる。具体的には、図2は、ピアコンピューター102A〜102Fおよびコンテンツサーバー104によって使用されるネットワーク・プロトコル・スタックの態様を示すソフトウェアアーキテクチャ図である。コンテンツサーバー104に関して、アプリケーション206Aが、サーバー104によってプロトコルスタックの上端で実行される。アプリケーション206Aは、サーバー104または別のネットワーク化された場所に格納されたコンテンツを求める要求を受信し、その要求に応答するサーバープリケーションを含む。例えば、一実装では、アプリケーション206Aは、ウェブページおよびその中で参照されるデータを求める要求を受信し、その要求に応答するウェブ・サーバー・アプリケーションを含む。あるいは、アプリケーション206Aは、Eメール・サーバー・アプリケーション、ファイル・サーバー・アプリケーション、または任意の他のタイプのサーバー側アプリケーションプログラムを含むこともできる。
アプリケーションプロトコル204Aが、アプリケーション206Aの直下で実行される。アプリケーションプロトコル204Aは、アプリケーション特有のプロトコルである。例えば、アプリケーション206Aがウェブ・サーバー・アプリケーションである場合、アプリケーションプロトコル204Aは、Hypertext Transfer Protocol(「HTTP」)でよい。アプリケーション206AがEメール・サーバー・アプリケーションである場合、アプリケーションプロトコル204Aは、Messaging Application Programming Interface(「MAPI」)プロトコルでよい。アプリケーション206Aがファイル・サーバー・アプリケーションである場合、アプリケーションプロトコル204Aは、Common Internet File Service(「CIFS」)プロトコルでよい。図2を参照して本明細書で説明されるアプリケーションプロトコルは例に過ぎず、他の適切なアプリケーションプロトコルを使用して、他のタイプのサーバー側アプリケーションプログラムのためのプロトコルサービスを提供できることを理解されたい。
サーバー104はまた、ネットワーク・プロトコル・スタック内のアプリケーションプロトコル204Aの直下でプロキシ208を実行する。プロキシ208は、ピアコンピューター102A〜102F上で実行中のキャッシュマネージャー202Aから要求を受信し、その要求に応答する1つまたは複数のプロトコル特有のシム210A〜210Cを使用する。具体的には、プロトコル特有のシム210A〜210Cは、コンテンツサーバー204からダウンロード可能なコンテンツの、ハッシュ値と呼ばれるシグニチャを生成する。ハッシュ値は、要求されたデータに対するハッシュ関数の適用の結果である。本明細書に記載の一実装では、シム210A〜210Cで使用されるハッシュ関数は、暗号的に安全な一方向ハッシュ関数である。このことは、ハッシュ関数がコリジョンフリーである(すなわち、相異なる入力データは同一のハッシュを生成しない)こと、およびハッシュ値を使用して、ハッシュを生成した入力データを生成することはできないことを示唆する。そのようなハッシュ関数は当業者には周知である。シム210A〜210Cによって生成されるハッシュ値の使用に関する追加の詳細が、図3A〜4Bに関して以下で与えられる。
別の実装によれば、ハッシュ値は、データの各ブロックについて固有のキーを有する、キー付きハッシュメッセージ認証コード(「HMAC」)を含むことができる。この実装では、秘密がサーバー104によって生成および維持され、HMACを生成するのに使用される。秘密はまた、HMACと共に各ピアコンピューターに通信される。一実装では、データの所与のブロックは常に、サーバーコンピューターごとに同一の秘密を使用する。別の実装では、ブロックごとの秘密をサーバーコンピューター間で共有することができる。データ防止の各ブロックについての固有のキーと共にHMACを使用することにより、プレーンテキストの一部を知ることができるブルートフォースアタックが防止される。
例えばCIFSなどの一部のプロトコルおよびアプリケーションについて、別々のサーバーが、プロトコル特有のシム210A〜210Cによって実施されるものとして本明細書で説明した機能を提供できることを理解されたい。他のプロトコルについて、プロトコルを使用するアプリケーション206Aに対するアドオンによってこの機能を提供することができる。例えば、ピアコンピューターのうちの1つの上で実行中のクライアントアプリケーションと、コンテンツサーバー104上で実行中のEメールアプリケーションとの間のMAPI通信の場合、サーバー104上にプロトコル特有のシム210Bが存在する。ピア上で実行中のプロキシは、シム210Bと通信して、要求されたデータに関するハッシュ値を要求する。一実装では、ピアコンピューター上で実行中のプロキシは、キャッシュマネージャー202Aである。シム210A〜210Cとキャッシュマネージャー202Aの動作が、以下でより詳細に説明される。
図2にも示されるように、伝送制御プロトコル/インターネットプロトコル(「TCP/IP」)層200Aは、プロキシ208の下に位置する。当技術分野で周知のように、TCP/IP層200Aは、送信側から受信側へのデータの確実かつ順序正しい送達を共に保証するTCPプロトコルおよびインターネットプロトコルを実装する。TCP/IP層200Aに関する詳細は当業者には周知である。ピアコンピューター102A〜102Bおよびコンテンツサーバー104に関して図2に示されるネットワーク・プロトコル・スタックは、図2に示されない追加のプロトコル層を含むことができることを理解されたい。こうしたプロトコル層は、当技術分野で一般的に理解されている。
図2はまた、ピアコンピューター102A〜102Fによって使用されるネットワーキング・プロトコル・スタックの態様も示す。具体的には、図2は、ピアコンピューター102Aおよびピアコンピューター102Bの態様を示す。図2に示される例では、ピアコンピューター102Aは、要求側ピアコンピューターの役割で動作中である。要求側ピアコンピューターは、コンテンツサーバー104または別のピアコンピューターにデータを要求したピアコンピューター102A〜102Fのうちの1つである。図2では、ピアコンピューター102Bは、キャッシング・ピア・コンピューターの役割で動作中である。キャッシング・ピア・コンピューターは、要求側ピアコンピューターに対して利用可能にしたデータをキャッシュしたピアコンピューター102A〜102Fのうちの1つである。
ピアコンピューター102A〜102Fのそれぞれはその時々に、要求側ピアコンピューターとキャッシング・ピア・コンピューターのどちらとしても動作することがあることを理解されたい。こうした役割を同時に実施することもできる。すなわち、任意の与えられた時間に、単一のピアコンピューターは、ある要求に関して要求側ピアコンピューターとして働くことができ、別の要求に関してキャッシング・ピア・コンピューターとして働くことができる。代替実装では、ピアコンピューター102A〜102Fの一部についてキャッシング機能をオフにすることができ、それによって、こうしたピアを要求側ピアコンピューターの役割でのみ働かせる。
ピア102A〜102Bによって使用されるネットワーキング・プロトコル・スタックはまた、それぞれクライアント・アプリケーション・プログラム206B〜206Cも含む。こうしたクライアント・アプリケーション・プログラムは、限定はしないが、個人情報マネージャー・デスクトップ・クライアント、ファイル転送プログラム、ウェブブラウザ、または任意の他のタイプのアプリケーションプログラムを含む。本明細書で与えられるピアコンピューター102A〜102Bによって使用されるネットワーク・プロトコル・スタックはまた、それぞれアプリケーションプロトコル204B〜204Cも含む。アプリケーションプロトコル204B〜204Cは、コンテンツサーバー104に関して上記で説明したのと同様のピアに関する機能を実施する。ピアコンピューター102A〜102BのTCP/IP層200B〜200Cも、コンテンツサーバー104に関して上記で説明したのと同様の機能をそれぞれ実施する。
上記で簡潔に触れたように、各ピアコンピューター102A〜102Bは、そのネットワーク・プロトコル・スタックの一部として、それぞれキャッシュマネージャー202A〜202Bを含む。キャッシュマネージャーは、スタック内のアプリケーションプロトコルとTCP/IP層との間で実行される。ピア102Aなどの要求側ピア上で実行中のキャッシュマネージャー202Aは、データを求める要求をアプリケーションプロトコル204Bから受信するように動作する。そのような要求に応答して、キャッシュマネージャー202Aはプロキシ208と連絡を取り、要求されたデータに関するハッシュを要求する。要求されたデータに関するハッシュ値の所有が要求されたデータ自体に対する資格の証明であるので、プロキシ208は、キャッシュマネージャー202Aがデータに対する資格を有するかどうかを判定する。例えば、プロキシ208は、ピア102Aがデータに対する資格を有するかどうかを判定するためにACLを検査させることができる。ピア102Aがデータの所有に対する資格を有する場合、プロキシ208は、要求されたデータに関するハッシュ値をキャッシュマネージャー202Aに返す。
キャッシュマネージャー202Aが、要求されたデータに関するハッシュ値を得ると、キャッシュマネージャー202Aは、他のピアコンピューターにブロードキャスト要求を送信し、要求されたデータを何らかの他のピアコンピューターが有するかどうかを判定する。ブロードキャスト要求は、ハッシュ値自体を送信することなく、要求されたデータに関するハッシュ値を要求側ピアが所有することを証明するのに十分なデータを含む。ブロードキャスト要求はまた、各ピアコンピューターが要求されたデータを有するかどうかを判定する際に各ピアコンピューターを援助するためのデータも含む。そのような要求で送信されるデータに関する追加の詳細が、図4Aに関して以下で与えられる。
例えば図2のピアコンピューター102Bなどのピアコンピューターが、要求されたデータを有する場合、ピア上で実行中のキャッシュマネージャーは、要求に対する応答を生成し、応答を要求側ピアに送信する。応答は、ハッシュ値を送信することなく、キャッシングピアが、要求されたデータに関するハッシュ値と、要求されたデータ自体も所有することを証明するのに十分なデータを含む。キャッシングピアによって生成される応答で送信されるデータに関する追加の詳細が、図4Bに関して以下で与えられる。
要求側ピアがキャッシング・ピア・コンピューターのうちの1つから応答を受信したとき、要求側ピアは、応答が有効であることを検証する。応答が有効である場合、要求側ピアは、キャッシングピアに対するセキュア接続を確立し、要求されたデータを取り出す。キャッシングピアが要求に対する応答を提供しない場合、要求側ピアのキャッシュマネージャー202Aがプロキシ208と連絡を取り、要求されたデータをコンテンツサーバー104から直接得る。要求側ピアが要求したデータを得ると、データを求める他のピアからの要求に応答する際に使用するために、データが要求側ピアにキャッシュされる。単一のデータファイルを得るためにこのプロセスを何回も反復することができることを理解されたい。例えば、ファイル全体が得られるまで、ファイルの各ブロックまたは各セクタについてプロセスを反復することができる。このプロセスに関する追加の詳細が、図3A〜4Bに関して以下で与えられる。
図3A〜3Cは、キャッシング・ピア・コンピューター、要求側ピアコンピューター、およびコンテンツサーバー104によってそれぞれ実行されるルーチン300、330、および370を示す流れ図である。図3A〜3Cに関して、ピアコンピューター102Aは要求側ピアと呼ばれ、ピアコンピューター102Bはキャッシングピアと呼ばれる。ルーチン300、330、および370はまた、図2に関して上記で説明された様々なソフトウェア構成要素を参照しながら説明される。
図3A〜3Cを参照しながら説明される論理演算が、(1)コンピューティングシステム上で実行中の、コンピューターで実装される動作またはプログラムモジュールのシーケンスとして、かつ/または(2)コンピューティングシステム内の相互接続マシン論理回路または回路モジュールとして実装されることを理解されたい。実装は、コンピューティングシステムの性能要件に応じた選択の問題である。したがって、本明細書に記載の論理演算は、オペレーション、構造的装置、動作、またはモジュールと様々な形で呼ばれる。こうしたオペレーション、構造的装置、動作、およびモジュールを、ソフトウェア、ファームウェア、専用デジタルロジック、および任意の組合せとして実装することができる。
ルーチン330はオペレーション332で始まり、要求側ピア102A上で実行中のアプリケーション206Bが、アプリケーションプロトコル204Bにデータを要求する。オペレーション334で、アプリケーションプロトコル204Bは、キャッシュマネージャー202Aにデータを要求する。そのような要求を受信したことに応答して、キャッシュマネージャー202Aは、要求されたデータに関するハッシュ値を、コンテンツサーバー104上で実行中の適切なプロトコル特有のシムに要求する。このことがオペレーション336で行われる。
ルーチン370はオペレーション372で始まり、コンテンツサーバー104上で実行中のプロキシ208が、ハッシュ値を求める要求をキャッシュマネージャー202Aから受信する。オペレーション372から、ルーチン370はオペレーション374に進み、コンテンツサーバー104が、要求側ピア102Aは要求されたデータに対する資格を有するかどうかを判定する。このことは、例えば、ピアコンピューターまたはそのユーザに関するアクセス権を定義するACLまたは他のタイプのデータ構造の検査によって行うことができる。要求側ピア102Aがデータに対する資格を有する場合、ルーチン370は、判定オペレーション374から、図3Bに示され、以下で説明されるオペレーション380に進む。要求側ピア102Aがデータに対する資格を有さない場合、ルーチン370はオペレーション374からオペレーション376に進み、エラーが要求側ピア102Aに返される。オペレーション338および340で、エラーが要求側ピア102Aによって処理される。オペレーション376から、ルーチン370はオペレーション378に進み、そこで終了する。
オペレーション380では、プロキシ208および適切なプロトコル特有のシム210が、上述のハッシュ関数を使用して、要求されたデータに関するハッシュ値を生成する。ハッシュ値が生成されると、コンテンツサーバー304は、要求側ピア102Aのキャッシュマネージャー202Aにハッシュ値を返す。次いで、ルーチン370は、以下で説明されるオペレーション384および386に進む。
ルーチン330のオペレーション344では、要求側ピア102Aは、コンテンツサーバー104からハッシュ値を受信する。次いで、ルーチン330はオペレーション346に進み、要求側ピア102Aが、他のピアコンピューター102A〜102Fにブロードキャストメッセージを送信し、ピアコンピューター102A〜102Fのうちのいずれかが要求したデータを有するかどうかを判定する。上記で簡潔に論じたように、ブロードキャストメッセージは、要求内でハッシュ値自体を送信することなく、要求側ピア102Aがハッシュ値を有することを証明するのに十分なデータを含む。
一実装によれば、図4Aに示されるデータ構造400が、ブロードキャストメッセージとして送信される。図4Aに示されるように、データ構造400は、コンテンツサーバー104から受信された、要求したデータに関するハッシュ値404と、要求側ピア102Aに関するnumber used once(「NONCE」)406と、タイムスタンプ408と、要求側ピアに関する識別子410の連結のハッシュ402を含む。NONCEはランダムデータを含み、リプレーアタックの防止を援助し、ブロードキャスト要求に対して応答を合致させるのに使用される。タイムスタンプ408も、リプレーアタックの防止を援助するために含まれる。識別子410は、要求側ピア102Aに関するIPアドレスまたは完全修飾ドメイン名などの要求側ピア102Aに関する固有識別子を含む。ブロードキャスト要求はまた、要求されたデータ412に関するハッシュと、要求側ピア102Aに関するNONCE406と、タイムスタンプ408と、要求側ピア102Aに関する識別子410のハッシュも含む。以下でより詳細に説明されるように、キャッシングピア102Bは、データ構造400の内容を使用して、ハッシュ値を要求で送信することを必要とせずに、要求側ピア102Aが要求されたデータに関するハッシュ値を所有するかどうかを判定する。
一実装によれば、要求されたデータ412に関するハッシュのハッシュは、一定文字列と連結されたハッシュのハッシュを含むことができる。例えば、一定文字列「MS_P2P_Caching」をハッシュと連結することができる。ピアコンピューターは、ピアコンピューターが当該のブロックを有するかどうかに関して迅速な判定を可能にするために、このようにして生成されたハッシュ値を索引付けすることができる。HMACが使用される実施形態では、要求されたデータ412に関するハッシュのハッシュは、一定文字列の代わりに、サーバー104から得た秘密を使用する。
ルーチン300はオペレーション302で始まり、キャッシングピア102Bが、要求側ピア102Aによって送信されたブロードキャストメッセージを受信する。次いで、ルーチン300はオペレーション304に進み、キャッシングピア304が、ブロードキャスト要求で提供される要求されたデータ412に関するハッシュのハッシュを使用して、要求されたデータの位置を突き止めることを試みる。一実装では、キャッシングピア102Bが、格納されたデータに関するハッシュ値のハッシュを使用して、キャッシュされたデータを索引付けすることができるので、このことが可能である。このようにして、キャッシングピア102Bが要求されたデータを実際に有するかどうかに関して、各キャッシングピア102Bによって迅速な判定を行うことができる。
オペレーション306では、キャッシングピア102Bが要求されたデータを有さないと判定した場合、ルーチン300はオペレーション308に進み、そこで終了する。キャッシングピア102Bが要求されたデータを有すると判定した場合、ルーチン300は、判定オペレーション306からオペレーション310に進む。オペレーション310では、キャッシングピア102Bは、要求側ピアが実際に、要求されたデータに関するハッシュ値を所有することを検証する。一実装では、要求されたデータのハッシュ(キャッシングピア102Bが要求されたデータを有する場合に、キャッシングピア102Bがそれを有することになる)と、要求側ピア406のNONCE406と、タイムスタンプ408と、要求側ピア102Aに関する識別子410のハッシュを生成することによってこのことが実施される。次いで、結果として得られる値が、ブロードキャスト要求で要求側ピア102Aによって送信されたハッシュ402と比較される。2つの値が合致する場合、要求側ピア102Aは要求されたデータに関するハッシュ値を実際に所有しており、キャッシングピア102Bからデータ自体を受信する資格を有する。
要求されたデータに関するハッシュ値を要求側ピア102Aが所有していることをキャッシングピア102Bが検証することができない場合、ルーチン300はオペレーション312からオペレーション314に進み、そこで終了する。要求されたデータに関するハッシュ値を要求側ピア102Aが所有していることをキャッシングピア102Bが検証した場合、ルーチン300は、オペレーション312からオペレーション316に進む。オペレーション316では、キャッシングピア102Bは、要求側ピア102Aに対する応答を生成する。応答は、要求されたデータに関するハッシュ値を送信することなく、要求されたデータのキャッシング・ピア・コンピューターによる所有を証明するのに十分なデータを含む。
一実装によれば、応答では、図4Bに示されるデータ構造450が送信される。図4Bに示されるように、データ構造450は、要求されたデータに関するハッシュ値404と、キャッシングピア102Aによって生成されたNONCE454と、要求側ピア102Aに関する識別子410と、キャッシングピア102Bに関する識別子456と、タイムスタンプ408のハッシュ452を含む。データ構造450はまた、キャッシングピア102BのNONCE454と連結された、要求されたデータに関するハッシュ値のハッシュ412も含む。以下でより詳細に説明されるように、データ構造450に格納されたデータは、キャッシングピア102Bが要求されたデータを実際に有することを検証するのに要求側ピア102Aによって使用される。
オペレーション346から、ルーチン330はオペレーション348に進み、ブロードキャストメッセージに対して何らかの応答が受信されたかどうかをキャッシュマネージャー202Aが判定する。応答が受信されなかった場合、ピアコンピューターのいずれも、要求されたデータをキャッシュしていない。したがって、この場合、ルーチン330はオペレーション348からオペレーション350に進み、セキュア接続がコンテンツサーバー104との間で確立され、要求されたデータがコンテンツサーバー104から直接取り出される。ルーチン370のオペレーション384で、コンテンツサーバー104は、要求側ピア102Aにデータを送信する。要求側ピア102Aがデータを受信したとき、ルーチン330はオペレーション358に進み、キャッシュマネージャー202Aが要求されたデータを格納し、要求されたデータに関するハッシュ値のハッシュを使用してデータを索引付けする。このようにして、他のピアからのデータを求める要求に応答する際に使用するために、データが索引付けされ、キャッシュされる。キャッシュマネージャー202Aはまた、要求されたデータをアプリケーション206Bに返す。次いで、ルーチン330はオペレーション360に戻り、そこで終了する。
オペレーション348で、応答がブロードキャストメッセージに対して受信されたとキャッシュマネージャー202Aが判定した場合、ルーチン330はオペレーション348からオペレーション352に進み、応答が受信される。本明細書に記載の方式で複数の応答を受信および処理できることを理解されたい。さらに、複数の応答が受信されたとき、要求側ピア102Aは、キャッシングピアのいずれが最も多くのデータを有するか、キャッシングピアに対するネットワーク接続の速度が最も高いか、または待ち時間が最も長いかを含む様々な要素に基づいて、応答するキャッシングピアのいずれがデータを取り出すかを選ぶことができる。
ルーチン370のオペレーション354で、要求側ピア102Aは、有効な応答がキャッシングピア102Bによって受信されたかどうかを判定する。一実装では、このことが、要求されたデータに関するハッシュ値404と、キャッシングピア102Aによって生成されたNONCE454と、要求側ピア102Aに関する識別子410と、キャッシングピア102Bに関する識別子456と、タイムスタンプ408のハッシュを生成することによって実施される。次いで、生成されたハッシュが、応答で送信されたハッシュ452と比較される。2つの値が合致する場合、応答は有効であり、要求されたデータをキャッシングピア102Bから取り出すことができる。したがって、応答が無効であると要求側ピア102Aが判定した場合、ルーチン330は、オペレーション354からオペレーション360に分岐し、そこで終了する。応答が有効である場合、ルーチン330はオペレーション356に進む。
オペレーション356で、要求側ピア102Aは、例えばSecure Sockets Layer(「SSL」)接続を使用することなどにより、キャッシングピア102Bに対するセキュアネットワーク接続を確立する。さらにオペレーション356では、要求側ピア102Aがキャッシングピア102Aから要求したデータを取り出す。具体的には、HMACが使用される実施形態では、要求側ピア102Aが、秘密と連結されたデータのハッシュのハッシュをキャッシングピア102Bに送信する。ブロックごとの秘密もキャッシングピア102Bに送信しなければならない。次いで、キャッシングピア102Bは、秘密を使用して、要求側ピア102Aの権限を検証する。要求側ピア102Aの権限が検証された場合、ルーチン300のオペレーション320で、キャッシングピア102Bは接続を確立し、要求されたデータを送信する。要求されたデータが要求側ピア102Aで受信されると、オペレーション358で、データが索引付けされ、キャッシュされ、アプリケーション206Bに返される。次いで、ルーチン330はオペレーション360に進み、そこで終了する。
次に図5を参照して、本明細書で提示される様々な実施形態で使用されるコンピューター500に関する例示的コンピューターキテクチャが論じられる。図5に示されるコンピューターキテクチャは、従来型デスクトップ、ラップトップコンピューター、ハンドヘルド、またはサーバーコンピューターを示し、上述のピアコンピューター102A〜102Fまたはコンテンツサーバー104を具体化するのに使用することができる。図5に示されるコンピューターアーキテクチャは、中央演算処理装置502(「CPU」)と、ランダムアクセスメモリ508(「RAM」)および読取り専用メモリ(「ROM」)510を含むシステムメモリ506と、メモリをCPU502に結合するシステムバス504とを含む。起動時などにコンピューター500内の要素間で情報を転送する助けになる基本ルーチンを含む基本入出力システムが、ROM510に格納される。コンピューター500は、以下でより詳細に説明されるオペレーティングシステム520、アプリケーションプログラム、およびその他のプログラムモジュールを格納する大容量記憶装置518をさらに含む。
大容量記憶装置518は、バス504に接続された大容量記憶コントローラ(図示せず)を介してCPU502に接続される。大容量記憶装置518およびその関連するコンピューター可読媒体は、コンピューター500に対する不揮発性記憶を実現する。本明細書に含まれるコンピューター可読媒体の説明は、ハードディスクやCD−ROMドライブなどの大容量記憶装置を指すが、コンピューター可読媒体はコンピューター500によってアクセスすることのできる入手可能などんな媒体でもよいことを理解されたい。
例えば、限定はしないが、コンピューター可読媒体は、コンピューター記憶媒体および通信媒体を含むことができる。コンピューター記憶媒体は、コンピューター可読命令、データ構造、プログラムモジュール、他のデータなどの情報を記憶するために何らかの方法または技術で実装された、揮発性および不揮発性の、取外し可能および取外し不能な媒体を含む。コンピューター記憶媒体は、限定はしないが、RAM、ROM、EEPROM、フラッシュメモリ、またはその他の固体メモリ技術、CD−ROM、デジタルバーサタイルディスク(「DVD」)、HD−DVD、Blue−ray、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気記憶装置、あるいは所望の情報を格納するのに使用することができ、コンピューター500でアクセスすることのできる他のどんな媒体も含む。
本発明の様々な実施形態によれば、コンピューター500は、図1に関して上記で説明したWANなどのネットワーク514を介したリモートコンピューターに対する論理接続を使用するネットワーク環境で動作することができる。コンピューター500は、バス504に接続されたネットワーク・インターフェース・ユニット512を介してネットワーク514に接続することができる。ネットワーク・インターフェース・ユニット512を使用して、他のタイプのネットワークおよびリモート・コンピューター・システムに接続することもできることを理解されたい。コンピューター500はまた、キーボード、マウス、または電子スタイラス(図5には示さず)を含むいくつかの他の装置から入力を受け取って処理する入出力コントローラ516も含むことができる。同様に、入出力コントローラは、ディスプレイ画面、プリンタ、または他のタイプの出力装置(やはり図5には示さず)に出力を提供することができる。
上記で簡潔に触れたように、ワシントン州レドモンドのMICROSOFT CORPORATIONによるWINDOWS XPオペレーティングシステム、WINDOWS VISTAオペレーティングシステムなどの、ネットワーク化されたコンピューターの動作を制御するのに適したオペレーティングシステム520を含むいくつかのプログラムモジュールおよびデータファイルを、コンピューター500の大容量記憶装置518およびRAM508に格納することができる。大容量記憶装置518およびRAM508はまた、1つまたは複数のプログラムモジュールも格納することができる。具体的には、大容量記憶装置518およびRAM508は、クライアントアプリケーション206B、キャッシュマネージャー202B、ハッシュ522B、他のピアまたはコンテンツサーバー104から受信したデータ524Bなど、図2に示され、図2を参照しながら上記で説明したソフトウェア構成要素を格納することができる。コンテンツサーバー104の場合、大容量記憶装置518を使用して、サーバープリケーション206A、プロキシ208、プロトコル特有のシム210、ハッシュ522A、およびデータ524Aを格納することができる。他のデータおよびプログラムモジュールもピア102A〜102Fおよびコンテンツサーバー104の大容量記憶装置518上に格納することができる。
上記に基づいて、セキュアP2Pキャッシングのためのシステム、方法、機器、データ構造、およびコンピューター可読媒体が本明細書で提供されることを理解されたい。本明細書で提示される主題がコンピューターの構造的特徴、方法動作、コンピューター可読媒体に特有の術語で説明されたが、添付の特許請求の範囲で定義される本発明は必ずしも本明細書に記載の特定の特徴、動作、または媒体に限定されないことを理解されたい。むしろ、この特定の特徴、動作、および媒体は、特許請求の範囲を実装する例示的形態として開示される。上述の主題は、例示として与えられたものに過ぎず、限定として解釈されるべきではない。図示および説明される例示的な実施形態および応用例に追従することなく、かつ添付の特許請求の範囲に記載の本発明の真の精神および範囲から逸脱することなく、本明細書に記載の主題に対して様々な修正および変更を行うことができる。

Claims (20)

  1. 2つ以上のネットワーク化されたピアコンピューターを含むピアツーピアネットワークで、キャッシュされたデータを安全に取り出す方法であって、
    要求されたデータを求めるブロードキャスト要求をネットワーク上で送信するステップであって、前記ブロードキャスト要求が、前記要求されたデータに関するハッシュ値の所有を前記ピアコンピューターに対して証明するのに十分なデータを含むステップと、
    キャッシング・ピア・コンピューターからの前記ブロードキャスト要求に対する応答を受信するステップであって、前記応答が、前記要求されたデータの前記キャッシング・ピア・コンピューターによる所有を証明するのに十分なデータを含むステップと、
    前記応答を受信したことに応答して、前記キャッシング・ピア・コンピューターから前記要求されたデータを受信するステップと
    を含む方法。
  2. 前記ブロードキャスト要求を送信するステップの前に、
    前記要求されたデータに関する前記ハッシュ値を求める要求をサーバーコンピューターに送信するステップと、
    前記要求されたデータに関する前記ハッシュ値を前記サーバーコンピューターから受信するステップと
    をさらに含む請求項1に記載の方法。
  3. 前記ブロードキャスト要求の前記データが、前記要求されたデータに関する前記ハッシュ値、要求側ピアコンピューターによって生成されたランダムデータ、タイムスタンプおよび前記要求側ピアコンピューターに関する識別子のハッシュ、ならびに、前記要求側ピアによって生成された前記ランダムデータと連結された前記要求されたデータに関する前記ハッシュ値のハッシュ、前記タイムスタンプおよび前記要求側ピアコンピューターに関する識別子を含む請求項1に記載の方法。
  4. 前記応答の前記データが、前記キャッシング・ピア・コンピューターによって生成されたランダムデータ、前記要求されたデータに関する前記ハッシュ値のハッシュ、ならびに、前記キャッシング・ピア・コンピューターによって生成された前記ランダムデータと連結された前記要求されたデータに関する前記ハッシュ値、前記要求側ピアコンピューターに関する前記識別子、前記キャッシング・ピア・コンピューターに関する識別子および前記タイムスタンプのハッシュを含む請求項1に記載の方法。
  5. 前記ピアコンピューターのいずれかから前記ブロードキャスト要求に対する応答を受信することに失敗したことに応答して、前記要求されたデータを前記サーバーコンピューターから取り出すステップをさらに含む請求項2に記載の方法。
  6. 前記要求されたデータを前記キャッシング・ピア・コンピューターから取り出すステップに応答して、
    前記要求されたデータを格納するステップと、
    文字列と連結された、前記要求されたデータに関する前記ハッシュ値のハッシュを使用して、格納した前記要求されたデータを索引付けするステップと
    をさらに含む請求項5に記載の方法。
  7. 前記要求されたデータを前記キャッシング・ピア・コンピューターから受信するステップが、
    前記キャッシング・ピア・コンピューターに対するセキュアネットワーク接続を確立するステップと、
    前記キャッシング・ピア・コンピューターから前記セキュアネットワーク接続を介して前記要求されたデータを受信するステップと
    を含む請求項6に記載の方法。
  8. コンピューターによって実行されたときに、前記コンピューターに請求項1に記載の方法を実施させる、コンピューター実行可能命令が格納されたコンピューター可読媒体。
  9. 請求項1に記載の方法を実施するように動作するコンピューター制御機器。
  10. 2つ以上のネットワーク化されたピアコンピューターを含むピアツーピアネットワークで、キャッシュされたデータを安全に提供する方法であって、
    要求されたデータを求めるブロードキャスト要求をキャッシング・ピア・コンピューターで受信するステップであって、前記ブロードキャスト要求が、前記要求されたデータに関するハッシュ値の前記要求側ピアコンピューターによる所有を証明するのに十分なデータを含むステップと、
    前記ブロードキャスト要求を受信したことに応答して、前記キャッシング・ピア・コンピューターが前記要求されたデータを有するかどうかを判定するステップと、
    前記キャッシング・ピア・コンピューターが前記要求されたデータを有すると判定したことに応答して、前記ブロードキャスト要求に対する応答を送信するステップであって、前記応答が、前記要求されたデータの前記キャッシング・ピア・コンピューターによる所有を証明するのに十分なデータを含むステップと、
    前記要求されたデータを前記要求側ピアコンピューターに送信するステップと
    を含む方法。
  11. 前記ブロードキャスト要求の前記データが、前記要求されたデータに関する前記ハッシュ値、要求側ピアコンピューターによって生成されたランダムデータ、タイムスタンプおよび前記要求側ピアコンピューターに関する識別子のハッシュ、ならびに、前記要求側ピアによって生成された前記ランダムデータと連結された前記要求されたデータに関する前記ハッシュ値、前記タイムスタンプおよび前記要求側ピアに関する識別子のハッシュを含む請求項10に記載の方法。
  12. 前記キャッシング・ピア・コンピューターが前記要求されたデータを有するかどうかを判定する前記ステップが、
    前記要求されたデータに関する前記ハッシュ値の前記ハッシュを求めて、前記キャッシング・ピア・コンピューターに格納された索引を探索するステップと、
    前記要求されたデータに関する前記ハッシュ値の前記ハッシュの前記索引中の位置を突き止めたことに応答して、前記キャッシングコンピューターが前記要求されたデータを有することを判定するステップと
    を含む請求項11に記載の方法。
  13. 前記応答の前記データが、前記キャッシング・ピア・コンピューターによって生成されたランダムデータ、前記要求されたデータに関する前記ハッシュ値のハッシュ、ならびに、前記キャッシング・ピア・コンピューターによって生成された前記ランダムデータと連結された前記要求されたデータに関する前記ハッシュ値、前記要求側ピアコンピューターに関する前記識別子、前記キャッシング・ピア・コンピューターに関する識別子および前記タイムスタンプのハッシュを含む請求項12に記載の方法。
  14. 前記要求されたデータを前記要求側ピアコンピューターに送信する前記ステップが、
    前記要求側ピアコンピューターとの間のセキュアネットワーク接続を確立するステップと、
    前記セキュアネットワーク接続を介して前記要求側ピアコンピューターに前記要求されたデータを送信するステップと
    を含む請求項13に記載の方法。
  15. コンピューターによって実行されたときに、前記コンピューターに請求項10に記載の方法を実施させる、コンピューター実行可能命令が格納されたコンピューター可読媒体。
  16. 2つ以上のネットワーク化されたピアコンピューターを含むピアツーピアネットワークで、データをキャッシュする方法であって、
    前記ピアコンピューターのそれぞれで実行されるキャッシュマネージャーを提供するステップであって、前記キャッシュマネージャーが、データを求める要求をアプリケーションプロトコルから受信するように動作するステップと、前記要求されたデータに関するハッシュ値の所有を前記ピアコンピューターに対して証明するのに十分なデータを含むブロードキャスト要求を送信するステップと、前記要求されたデータのキャッシング・ピア・コンピューターによる所有を証明するのに十分なデータを含む、前記ブロードキャスト要求に対する応答を受信するステップと、前記応答を受信したことに応答して、前記要求されたデータを前記キャッシング・ピア・コンピューターから受信するステップと
    を含む方法。
  17. 前記キャッシュマネージャーが、前記ピアコンピューター上でネットワーキング・プロトコル・スタックと共に実行される請求項16に記載の方法。
  18. 前記キャッシュマネージャーがさらに、前記データを求める要求に応答して使用するために、受信した前記データを格納するように動作する請求項17に記載の方法。
  19. 前記キャッシュマネージャーがさらに、
    前記要求されたデータのハッシュの要求側ピアコンピューターによる所有を証明するのに十分なデータを含むブロードキャスト要求を受信し、前記ブロードキャスト要求を受信したことに応答して、キャッシング・ピア・コンピューターが前記要求されたデータを有するかどうかを判定し、前記要求されたデータの前記キャッシング・ピア・コンピューターによる所有を証明するのに十分なデータを含む、前記ブロードキャスト要求に対する応答を送信し、前記要求されたデータを前記要求側ピアコンピューターに送信する
    ように動作する請求項18に記載の方法。
  20. コンピューターによって実行されたときに、前記コンピューターに請求項16に記載の方法を実施させる、コンピューター実行可能命令が格納されたコンピューター可読媒体。
JP2009530533A 2006-09-29 2007-09-20 セキュア・ピアツーピア・キャッシュ共有 Active JP4762347B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/540,435 2006-09-29
US11/540,435 US7617322B2 (en) 2006-09-29 2006-09-29 Secure peer-to-peer cache sharing
PCT/US2007/079054 WO2008042617A1 (en) 2006-09-29 2007-09-20 Secure peer-to-peer cache sharing

Publications (3)

Publication Number Publication Date
JP2010505201A true JP2010505201A (ja) 2010-02-18
JP2010505201A5 JP2010505201A5 (ja) 2010-10-07
JP4762347B2 JP4762347B2 (ja) 2011-08-31

Family

ID=39262290

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009530533A Active JP4762347B2 (ja) 2006-09-29 2007-09-20 セキュア・ピアツーピア・キャッシュ共有

Country Status (6)

Country Link
US (1) US7617322B2 (ja)
EP (1) EP2069941B1 (ja)
JP (1) JP4762347B2 (ja)
KR (1) KR20090074021A (ja)
CN (1) CN101523360B (ja)
WO (1) WO2008042617A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012242975A (ja) * 2011-05-17 2012-12-10 Nippon Telegr & Teleph Corp <Ntt> 分散並列処理キャッシュ装置及び方法及び資源管理ノード及びプログラム
JP2012242972A (ja) * 2011-05-17 2012-12-10 Nippon Telegr & Teleph Corp <Ntt> 集約システム及び方法及び資源管理ノード及び計算ノード及び集約処理プログラム
WO2015166680A1 (ja) * 2014-04-30 2015-11-05 ソニー株式会社 クライアント装置、サーバ、記録媒体および情報処理方法

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008146517A (ja) * 2006-12-13 2008-06-26 Hitachi Ltd データ配布システムおよびインデクス保持装置
US8762636B2 (en) * 2006-12-14 2014-06-24 Emc Corporation Data storage system having a global cache memory distributed among non-volatile memories within system disk drives
US20090187978A1 (en) * 2008-01-18 2009-07-23 Yahoo! Inc. Security and authentications in peer-to-peer networks
US7958261B2 (en) * 2008-02-14 2011-06-07 Microsoft Corporation Domain name cache control system generating series of varying nonce-bearing domain names based on a function of time
US7865618B2 (en) * 2008-02-22 2011-01-04 Micorsoft Corporation Defeating cache resistant domain name systems
US9747340B2 (en) * 2008-06-19 2017-08-29 Microsoft Technology Licensing, Llc Method and system of using a local hosted cache and cryptographic hash functions to reduce network traffic
US8661082B2 (en) * 2008-06-20 2014-02-25 Microsoft Corporation Extracting previous messages from a later message
US8769277B2 (en) * 2008-06-23 2014-07-01 Microsoft Corporation Content retrieval
US9286293B2 (en) * 2008-07-30 2016-03-15 Microsoft Technology Licensing, Llc Populating and using caches in client-side caching
US8064362B2 (en) * 2008-08-21 2011-11-22 Cisco Technology, Inc. Wide area network optimization proxy routing protocol
EP2462732A1 (en) * 2009-08-07 2012-06-13 Secure Electrans Limited Data communication authentication system and method
US8700727B1 (en) * 2010-02-05 2014-04-15 Toshiba Corporation Peer-to-peer based caching for network file system
US9135154B2 (en) 2010-03-02 2015-09-15 Microsoft Technology Licensing, Llc Algorithm execution output cache
US8380931B2 (en) * 2010-03-12 2013-02-19 Microsoft Corporation Memory cache data center
US8463788B2 (en) 2010-09-03 2013-06-11 Marvell World Trade Ltd. Balancing caching load in a peer-to-peer based network file system
US10198462B2 (en) * 2012-04-05 2019-02-05 Microsoft Technology Licensing, Llc Cache management
CN103581207A (zh) * 2012-07-18 2014-02-12 富泰华工业(深圳)有限公司 云端数据存储系统及基于该系统的数据存储与共享方法
US8875254B2 (en) 2012-08-07 2014-10-28 International Business Machines Corporation Cache sharing of enterprise data among peers via an enterprise server
US9460312B2 (en) * 2014-03-11 2016-10-04 Qualcomm Incorporated Data integrity protection from rollback attacks for use with systems employing message authentication code tags
TWI540459B (zh) * 2015-01-22 2016-07-01 物聯智慧科技(深圳)有限公司 資料傳輸方法及系統與客戶端之資料傳輸方法
CN105120530B (zh) * 2015-09-11 2019-02-12 北京金山安全软件有限公司 一种获取数据的方法、装置及数据获取系统
GB2545397A (en) 2015-12-07 2017-06-21 Fujitsu Ltd A communications system, user apparatus, content source and method for secure content delivery
US10356039B1 (en) * 2016-09-30 2019-07-16 Amdocs Development Limited Apparatus, computer program, and method for utilizing a data structure to access fully qualified domain name information
US10152269B2 (en) * 2017-03-06 2018-12-11 Dell Products L.P. Method and system for preserving branch cache file data segment identifiers upon volume replication
CN108984433B (zh) * 2017-06-05 2023-11-03 华为技术有限公司 缓存数据控制方法及设备
US10917323B2 (en) 2018-10-31 2021-02-09 Nutanix, Inc. System and method for managing a remote office branch office location in a virtualized environment
US10841393B2 (en) 2018-11-12 2020-11-17 Citrix Systems, Inc. Systems and methods for secure peer-to-peer caching
US11386233B2 (en) 2019-04-30 2022-07-12 JFrog, Ltd. Data bundle generation and deployment
US11340894B2 (en) 2019-04-30 2022-05-24 JFrog, Ltd. Data file partition and replication
US11886390B2 (en) 2019-04-30 2024-01-30 JFrog Ltd. Data file partition and replication
WO2021014326A2 (en) 2019-07-19 2021-01-28 JFrog Ltd. Software release verification
US10999314B2 (en) 2019-07-19 2021-05-04 JFrog Ltd. Software release tracking and logging
US11695829B2 (en) * 2020-01-09 2023-07-04 JFrog Ltd. Peer-to-peer (P2P) downloading
US11860680B2 (en) 2020-11-24 2024-01-02 JFrog Ltd. Software pipeline and release validation
WO2022140923A1 (zh) 2020-12-28 2022-07-07 京东方科技集团股份有限公司 显示面板和显示装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040044727A1 (en) * 2002-08-30 2004-03-04 Abdelaziz Mohamed M. Decentralized peer-to-peer advertisement
JP2004185263A (ja) * 2002-12-03 2004-07-02 Oki Electric Ind Co Ltd 分散協調型コンテンツ配信システム

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0993163A1 (en) * 1998-10-05 2000-04-12 Backweb Technologies Ltd. Distributed client-based data caching system and method
US6542964B1 (en) * 1999-06-02 2003-04-01 Blue Coat Systems Cost-based optimization for content distribution using dynamic protocol selection and query resolution for cache server
US6349368B1 (en) * 1999-06-24 2002-02-19 International Business Machines Corporation High performance mechanism to support O state horizontal cache-to-cache transfers
US7089301B1 (en) * 2000-08-11 2006-08-08 Napster, Inc. System and method for searching peer-to-peer computer networks by selecting a computer based on at least a number of files shared by the computer
US7010578B1 (en) * 2000-09-21 2006-03-07 Akamai Technologies, Inc. Internet content delivery service with third party cache interface support
US20020112125A1 (en) * 2000-12-18 2002-08-15 Copeland George P. Command caching to improve network server performance
US7136840B2 (en) * 2001-04-20 2006-11-14 Intertrust Technologies Corp. Systems and methods for conducting transactions and communications using a trusted third party
US6934702B2 (en) * 2001-05-04 2005-08-23 Sun Microsystems, Inc. Method and system of routing messages in a distributed search network
US7194656B2 (en) * 2001-11-28 2007-03-20 Yottayotta Inc. Systems and methods for implementing content sensitive routing over a wide area network (WAN)
US6912622B2 (en) * 2002-04-15 2005-06-28 Microsoft Corporation Multi-level cache architecture and cache management method for peer-to-peer name resolution protocol
GB0303192D0 (en) * 2003-02-12 2003-03-19 Saviso Group Ltd Methods and apparatus for traffic management in peer-to-peer networks
US20050100166A1 (en) * 2003-11-10 2005-05-12 Parc Inc. Systems and methods for authenticating communications in a network medium
US20050129240A1 (en) * 2003-12-15 2005-06-16 Palo Alto Research Center Incorporated Method and apparatus for establishing a secure ad hoc command structure
US7555531B2 (en) * 2004-04-15 2009-06-30 Microsoft Corporation Efficient algorithm and protocol for remote differential compression
US7788713B2 (en) * 2004-06-23 2010-08-31 Intel Corporation Method, apparatus and system for virtualized peer-to-peer proxy services
US7664109B2 (en) * 2004-09-03 2010-02-16 Microsoft Corporation System and method for distributed streaming of scalable media
US7640299B2 (en) * 2004-09-30 2009-12-29 Microsoft Corporation Optimizing communication using scaleable peer groups
KR100529231B1 (ko) * 2005-07-18 2005-11-17 피어컴 주식회사 P2p 컨텐츠/서비스 제공 시스템 및 방법
JP4661429B2 (ja) * 2005-07-26 2011-03-30 ブラザー工業株式会社 情報配信システム、情報処理装置、情報処理プログラム及び情報処理方法
KR100747147B1 (ko) * 2005-10-05 2007-08-07 문종섭 콘텐츠 유통에 있어서, 저작권자와 네트워크 운영자그리고, 유통자 모두에게 수익을 보장해주고, 통신상의보안을 제공해주는 피투피 시스템

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040044727A1 (en) * 2002-08-30 2004-03-04 Abdelaziz Mohamed M. Decentralized peer-to-peer advertisement
JP2004185263A (ja) * 2002-12-03 2004-07-02 Oki Electric Ind Co Ltd 分散協調型コンテンツ配信システム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012242975A (ja) * 2011-05-17 2012-12-10 Nippon Telegr & Teleph Corp <Ntt> 分散並列処理キャッシュ装置及び方法及び資源管理ノード及びプログラム
JP2012242972A (ja) * 2011-05-17 2012-12-10 Nippon Telegr & Teleph Corp <Ntt> 集約システム及び方法及び資源管理ノード及び計算ノード及び集約処理プログラム
WO2015166680A1 (ja) * 2014-04-30 2015-11-05 ソニー株式会社 クライアント装置、サーバ、記録媒体および情報処理方法
US10171613B2 (en) 2014-04-30 2019-01-01 Sony Corporation Client device, server, recording medium and information processing method

Also Published As

Publication number Publication date
EP2069941B1 (en) 2017-08-02
WO2008042617A1 (en) 2008-04-10
JP4762347B2 (ja) 2011-08-31
US20080082648A1 (en) 2008-04-03
EP2069941A4 (en) 2014-12-24
CN101523360B (zh) 2013-03-13
US7617322B2 (en) 2009-11-10
KR20090074021A (ko) 2009-07-03
EP2069941A1 (en) 2009-06-17
CN101523360A (zh) 2009-09-02

Similar Documents

Publication Publication Date Title
JP4762347B2 (ja) セキュア・ピアツーピア・キャッシュ共有
US10158620B2 (en) DNSSEC signing server
US8200971B2 (en) Method for the provision of a network service
Koponen et al. A data-oriented (and beyond) network architecture
US8176189B2 (en) Peer-to-peer network computing platform
JP4363520B2 (ja) ピアツーピア・ネットワークにおけるリソース検索方法
US8850553B2 (en) Service binding
US7430755B1 (en) Method and system for providing persistence in a secure network access
US7543145B2 (en) System and method for protecting configuration settings in distributed text-based configuration files
US10356153B2 (en) Transferring session data between network applications accessible via different DNS domains
US9680801B1 (en) Selectively altering references within encrypted pages using man in the middle
US20120185370A1 (en) System and method for tracking request accountability in multiple content delivery network environments
Bayardo Jr et al. YouServ: a web-hosting and content sharing tool for the masses
US20050228848A1 (en) Method and system for operating a peer network
KR101642665B1 (ko) 다이렉트 전자 메일
Chandhok Web distribution systems: Caching and replication
Pais et al. Providing Secure Access to Unsecure Web Services
GB2473827A (en) Provision of a network service

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100818

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100818

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20101004

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20101027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101029

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110330

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110509

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110607

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140617

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4762347

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250