JP4031516B2 - サーバ側プロキシ装置、クライアント側プロキシ装置、データ転送方法及びプログラム - Google Patents

サーバ側プロキシ装置、クライアント側プロキシ装置、データ転送方法及びプログラム Download PDF

Info

Publication number
JP4031516B2
JP4031516B2 JP2007032640A JP2007032640A JP4031516B2 JP 4031516 B2 JP4031516 B2 JP 4031516B2 JP 2007032640 A JP2007032640 A JP 2007032640A JP 2007032640 A JP2007032640 A JP 2007032640A JP 4031516 B2 JP4031516 B2 JP 4031516B2
Authority
JP
Japan
Prior art keywords
fingerprint
message
data
client
reply message
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.)
Expired - Fee Related
Application number
JP2007032640A
Other languages
English (en)
Other versions
JP2007188514A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2007032640A priority Critical patent/JP4031516B2/ja
Publication of JP2007188514A publication Critical patent/JP2007188514A/ja
Application granted granted Critical
Publication of JP4031516B2 publication Critical patent/JP4031516B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

本発明は、他の装置のためにデータ転送を行うサーバ側プロキシ装置、クライアント側プロキシ装置、データ転送方法及びプログラムに関する。
ネットワークを介して様々なサービスを提供するサーバと、所望のサービスをサーバに対して要求するクライアントとから構成される、クライアント・サーバ型の情報システムが広く利用されている。特に、インターネット上でHTTPプロトコルを使って通信するWEBサーバとクライアントとからなるWORLD WIDE WEBシステム(あるいは単にWEBとも呼ばれる)は、大変広く利用されているクライアント・サーバ型の情報システムである。通常、サーバ上ではサーバプログラムが動作し、クライアント上ではブラウザなどの所定のツール(プログラム)が動作する。インターネット上で提供されるサービスの内容も多岐に渡っており、ネットワーク経由で文字、静止画像、動画像、音声等の情報(例えば、ホームページ、電子メール、デジタルコンテンツなど)や、プログラムなどを提供、配信あるいは転送などするサービス、また商品を販売するための電子店舗サービス、座席や部屋等の予約サービス、種々の契約の仲介サービスなど、種々のサービスが既に存在し、また次々と新たな形態のサービスが出現している。
ところで、WEBのようなクライアント・サーバ型の情報システムにおいては、提供されるサービスがどのような形態のものであろうと、基本的にはクライアント・サーバ間でデータ転送が行われることによってサービスが提供される。したがって、クライアントとサーバとの間で通信に用いるネットワークの容量(バンド幅)が、システム全体のボトルネックになりやすい。そこで、通常、ネットワークの負荷を軽減させるためにキャッシュ技術が用いられる。
WEBシステムの場合、クライアント上で動作するブラウザ等はキャッシュ機構を使用するものが多く、最近アクセスしたデータをキャッシュしている。WEBではURLと呼ばれる名前で情報やサービスを指定してアクセスがなされるので、クライアント上のキャッシュは、過去にWEBサーバに要求した情報やサービスの結果として返されるデータのうちでキャッシュ可能なものを、そのURLと対応させてキャッシュに記録している。この場合、キャッシュ内にあるものと同じURLの情報やサービスのリクエストがあった際に、そのキャッシュ内の応答データが古くなっていないと判断できるならば、そのデータを返すことで、WEBサーバとの間の通信を無くすことができる。
企業のオフィス内のLANあるいは研究機関におけるLANあるいは家庭内のLANなどで複数のユーザがいる場合、該LANとインターネットとの間にプロキシサーバを置き、プロキシサーバにキャッシュ機構を設けるようにすることも多い。クライアント内のキャッシュ(例えば、ブラウザのキャッシュ)は、当該クライアント・ユーザに専用のキャッシュとして動作するが、LAN上のプロキシサーバのキャッシュは、複数のクライアント・ユーザに共有のキャッシュとして動作する。そのため、後者では、過去に他人(他クライアント)がアクセスしたURLに対してアクセスする際にもキャッシュが効く。
さて、WEBにおいて、クライアントとサーバとの間は、HTTPと呼ぶプロトコルで通信が行われる。HTTPプロトコルは、クライアントからサーバへ送る「リクエストメッセージ」と、それに答えてサーバからクライアントへ応答を返す「リプライメッセージ」とが組になっている。
リクエストメッセージは、「リクエストヘッダ」と「リクエストボディ」からなる。リクエストヘッダには、アクセスしたい情報やサービスを指定するURLやアクセスの種類を示すメソッド名、その他アクセスに必要な各種の情報が入る。リクエストボディには、サーバに送るデータを入れる。リクエストボディに入っているデータを「リクエストデータ」とも呼ぶ。
リプライメッセージは、「リプライヘッダ」と「リプライボディ」からなる。リプライヘッダには、処理結果のステータスなどの情報が入り、リプライボディには要求された情報や要求されたサービスの処理結果などのデータが入る。リプライボディに入っているデータを「リプライデータ」とも呼ぶ。
リクエストメッセージのメソッドとしては、サーバ上の情報を読み出す「GETメソッド」、ユーザの持つデータをサーバに書き込む「PUTメソッド」、リクエストに応じて処理した結果を送り返してもらう「POSTメソッド」が、情報やサービスのアクセスに用いられる主要なものである。その他、DELETEなどのメソッドが定義されている。
多くの場合、GETメソッドのリクエストメッセージのリクエストボディ、PUTメソッドのリプライメッセージのリプライボディは空である。POSTメソッドのリクエストメッセージのリクエストボディには、必要に応じてサーバ側での処理に用いる情報が入り、POSTメソッドのリプライメッセージのリプライボディには、その処理の結果のデータが入る。
GETメソッドでサーバから読み出すデータは、読み出す毎にサーバ側で生成する「動的データ」と、既にサーバ側で記憶しているデータをそのまま送り返す「静的データ」に分けることができる。これらのうち、動的データについては、同じURLでも読み出す度に内容が異なる可能性があるので、多くの場合、サーバはキャッシュ不可の指定をそのリプライメッセージのヘッダに入れて送り返す。したがって、WEBのデータでキャッシュの対象になるのは、静的データの部分である。この静的データは、不特定多数のユーザが参照して構わない「共有データ」と、ユーザ認証することで特定のユーザだけがアクセスできるようにアクセス制御を行う「プライベートデータ」に分けることができる。前者の共有データは、どのようなキャッシュでもキャッシュ可能である。しかしながら、後者のプライベートデータは、プロキシサーバなどの共有キャッシュでは、キャッシュ不可である(プライベートデータは必ずサーバでユーザを認証して送り返す必要があるので)。ただし、ブラウザなどの個人専用のキャッシュの場合には、プライベートデータでもキャッシュは可能である。
POSTメソッドは、サーバ側で処理をした結果を返すので、一般的にサーバはキャッシュ不可の指定をリプライメッセージのヘッダに入れて結果を送り返す。そのため、通常はキャッシュの対象にはならない。
PUTメソッドは、データをサーバに送るものなので、キャッシュは何も処理をしない。
従来のWEBのキャッシュは、静的コンテンツをキャッシュの対象にしている。かつては、WEBで公開される情報やサービスには、情報の更新頻度がそれほど高くなく、不特定多数の人に公開されているものが多かったため、静的コンテンツの割合は非常に高く、従来のキャッシュ技術でもネットワークの負荷の軽減に有効であった。
しかしながら、WEBベースのASP(Application Service Provider)のように、ユーザがWEBブラウザを使って、ネットワーク経由でサーバ上の情報やサービスにアクセスするシステムが普及するにつれて、下記のように従来のキャッシュ技術では対応できないデータが増加している。
・ユーザの認証を行い、アクセスできるユーザを制限しているので、プライベートデータが多い。
・バックエンドのデータベースを参照して生成する動的データが多い。
・帳票処理や検索などPOSTメソッドを使う場合が多い。
・グループ内の情報共有のためにPUTメソッドを使う場合が多い。
この結果、キャッシュ技術のみではネットワークの負荷を軽減する手法として有効に機能しなくなってきている。
本発明は、上記事情を考慮してなされたもので、プロキシ装置間を接続するネットワークの負荷をより軽減することができるキャッシュ技術・圧縮技術を備えたサーバ側プロキシ装置、クライアント側プロキシ装置、データ転送方法及びプログラムを提供することを目的とする。
本発明は、複数のクライアント装置それぞれから複数のサーバ装置宛に送信され、複数のクライアント装置それぞれの前記複数のサーバ装置へのアクセスの代理を担当するクライアント側プロキシ装置に中継された、要求するデータのURLをそれぞれ含む複数のリクエストメッセージを受信して前記複数のサーバのうち該リクエストメッセージの宛先たるサーバ装置へ転送し、前記リクエストメッセージへの返答として前記サーバ装置から前記クライアント装置宛に送信されるリプライメッセージを該リプライメッセージの宛先たるクライアント装置の代理であるクライアント側プロキシ装置へ転送するサーバ側プロキシ装置であって、前記クライアント側プロキシ装置から転送されるリクエストメッセージへの返答であるリプライメッセージを、前記サーバ装置から受信する第1の受信手段と、
前記リプライメッセージのメッセージボディに搭載されたデータのフィンガープリントを生成するフィンガープリント生成手段と、生成した前記フィンガープリントを、該フィンガープリントの元であった前記データに関連付けてフィンガープリントキャッシュとして保持するとともに、該フィンガープリントと、該データに係る前記URLと、その有効期間の判定のための情報とを関連付けてURLフィンガープリントテーブルとして保持する第1の保持手段と、前記第1の受信手段が受信した前記リプライメッセージに係る前記フィンガープリントが、前記フィンガープリントキャッシュに保持されているか否か判定する判定手段と、前記第1の受信手段が前記リプライメッセージを受信した際、該リプライメッセージに係る前記フィンガープリントが前記フィンガープリントキャッシュに保持されていると前記判定手段が判定した場合に、該フィンガープリントの元であった前記データの代わりにフィンガープリントを含む圧縮時のリプライメッセージを、前記リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信し、前記フィンガープリントが前記フィンガープリントキャッシュに保持されていないと前記判定手段が判定した場合に、前記フィンガープリントと該フィンガープリントの元であった前記データとを関連付けて前記フィンガープリントキャッシュに追加しかつ、該データを含む非圧縮時のリプライメッセージを、前記リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信する第1の送信手段と、前記第1の受信手段が前記リプライメッセージを受信し、前記第1の送信手段が前記圧縮時のリプライメッセージ又は前記非圧縮時のリプライメッセージを送信するに際して、該リプライメッセージに係る前記フィンガープリントと、該フィンガープリントの元であった前記データに係る前記URLと、前記有効期間の判定のための情報とを関連付けて前記URLフィンガープリントテーブルに登録する登録手段と、前記クライアント側プロキシ装置から転送されるリクエストメッセージを受信する第2の受信手段と、この第2の受信手段が前記リクエストメッセージを受信した際、該リクエストメッセージに含まれる、要求するデータのURLにつき、該URLに関連付けられたフィンガープリントが、前記URLフィンガープリントテーブルに保持されている場合であって、さらに、該URLに関連付けて前記URLフィンガープリントテーブルに保持されている前記有効期間の判定のための情報に基づきそれらが有効であると判定される場合に、該URLに関連付けられた前記フィンガープリントを含む前記圧縮時のリプライメッセージを、該リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信する第2の送信手段とを備えることを特徴とする。
また、本発明は、複数のクライアント装置それぞれから複数のサーバ装置宛に送信された、要求するデータのURLをそれぞれ含む複数のリクエストメッセージを受信して、該リクエストメッセージの宛先たるサーバ装置へのアクセスの代理を担当するサーバ側プロキシ装置へ転送し、前記リクエストメッセージへの返答として前記サーバ装置から前記サーバ側プロキシ装置を介して前記クライアント装置宛に送信されるリプライメッセージを該リプライメッセージの宛先たるクライアント装置へ転送するクライアント側プロキシ装置であって、前記サーバ側プロキシ装置は、前記リプライメッセージのメッセージボディに搭載されたデータのフィンガープリントを、該データに関連付けて第1のフィンガープリントキャッシュとして保持するための第1の保持手段と、前記クライアント装置から送信され前記クライアント側プロキシ装置により転送されるリクエストメッセージへの前記サーバ装置からの返答であるリプライメッセージを、該サーバ装置から受信する第1の受信手段と、この第1の受信手段が受信したリプライメッセージのメッセージボディに搭載されたデータに基づき生成されたフィンガープリントが前記第1のフィンガープリントキャッシュに保持されている場合に、該フィンガープリントの元であった前記データの代わりに該フィンガープリントを含む圧縮時のリプライメッセージを、前記リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信し、該フィンガープリントが前記第1のフィンガープリントキャッシュに保持されていない場合に、該フィンガープリントと該フィンガープリントの元であった前記データとを関連付けて前記第1のフィンガープリントキャッシュに追加し、かつ、該データを含む非圧縮時のリプライメッセージを、前記リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信する第1の送信手段とを有するものであり、前記クライアント側プロキシ装置は、前記リプライメッセージのメッセージボディに搭載されたデータのフィンガープリントを、該データに関連付けて第2のフィンガープリントキャッシュとして保持するとともに、該フィンガープリントと、該データに係る前記URLと、その有効期間の判定のための情報とを関連付けてURLフィンガープリントテーブルとして保持する第2の保持手段と、前記クライアント装置から送信されるリクエストメッセージへの返答であるリプライメッセージとして、前記圧縮時のリプライメッセージ又は前記非圧縮時のリプライメッセージを、前記サーバ側プロキシ装置から受信する第2の受信手段と、この第2の受信手段が受信したリプライメッセージが、前記圧縮時のリプライメッセージであるか又は前記非圧縮時のリプライメッセージであるか判定する判定手段と、前記第2の受信手段が前記リプライメッセージを受信した際、受信された該リプライメッセージは前記圧縮時のリプライメッセージであると、前記判定手段が判定した場合に、該リプライメッセージに含まれるフィンガープリントに関連付けて前記第2のフィンガープリントキャッシュに保持されているデータをメッセージボディに搭載したリプライメッセージを、前記リクエストデータの送信元の前記クライアント装置へ送信し、受信された該リプライメッセージは前記非圧縮時のリプライメッセージであると、前記判定手段が判定した場合に、該リプライメッセージのメッセージボディに搭載されたデータと該データのフィンガープリントとを関連付けて前記第2のフィンガープリントキャッシュに追加しかつ、前記リプライメッセージを、前記リクエストデータの送信元の前記クライアント装置へ送信する第の送信手段と、前記第2の受信手段が前記圧縮時のリプライメッセージ又は前記非圧縮時のリプライメッセージを受信し、前記第2の送信手段が前記リプライメッセージを送信するに際して、該リプライメッセージに係る前記フィンガープリントと、該フィンガープリントの元であった前記データに係る前記URLと、前記有効期間の判定のための情報とを関連付けて前記URLフィンガープリントテーブルに登録する登録手段と、前記クライアント装置から送信されるリクエストメッセージを受信する第3の受信手段と、この第3の受信手段が前記リクエストメッセージを受信した際、該リクエストメッセージに含まれる、要求するデータのURLにつき、該URLに関連付けられたフィンガープリントが、前記URLフィンガープリントテーブルに保持されている場合であって、さらに、該URLに関連付けて前記URLフィンガープリントテーブルに保持されている前記有効期間の判定のための情報に基づきそれらが有効であると判定される場合に、該URLに関連付けて前記第2のフィンガープリントキャッシュに保持されている前記データをメッセージボディに搭載したリプライメッセージを、該リクエストメッセージの送信元の前記クライアント装置へ送信する第の送信手段とを備えることを特徴とする。
なお、装置に係る本発明は方法に係る発明としても成立し、方法に係る本発明は装置に係る発明としても成立する。また、装置または方法に係る本発明は、コンピュータに当該発明に相当する手順を実行させるための(あるいはコンピュータを当該発明に相当する手段として機能させるための、あるいはコンピュータに当該発明に相当する機能を実現させるための)プログラムとしても成立し、該プログラムを記録したコンピュータ読取り可能な記録媒体としても成立する。
本発明によれば、サーバ側プロキシ装置とクライアント側プロキシ装置との間でリプライメッセージに含まれるリプライデータとそのフィンガープリントとの対応を保持し、この対応を保持しているリプライデータを含むリプライメッセージについては、リプライデータを転送する代わりに対応するフィンガープリントを転送することで、プロキシ装置間の転送データ量を削減することができる。
例えば、GETメソッドのリプライメッセージがプライベートデータであっても、これをフィンガープリントにより圧縮してプロキシ装置間を転送することができるようになる。また、例えば、GETメソッドのリプライメッセージが動的データであっても、内容が同じデータなら、これをフィンガープリントにより圧縮してプロキシ装置間を転送することができるようになる。また、例えば、POSTメソッドであっても、結果が同じデータなら、これをフィンガープリントにより圧縮してプロキシ装置間を転送することができるようになる。
また、本発明によれば、プロキシ装置は、受信したリプライメッセージに含まれるリプライデータとそのフィンガープリントとを対応付けて保持するのに加えて、該リプライメッセージに対応するリクエストデータに係るURLと、該フィンガープリントとを対応付けて保持しておくことによって、リクエストデータを受信した場合に、該リクエストデータに係るURLが保持されていれば、受信したリクエストデータを転送せずに、該URLに対応するフィンガープリントに対応付けて保持されているリプライデータを含むリプライメッセージを応答することができる。
本発明によれば、プロキシ装置間を接続するネットワークの負荷をより軽減することができる。
以下、図面を参照しながら発明の実施の形態を説明する。
以下では、WANがインターネットであり、クライアントはユーザオフィスLANに接続されたものであり、HTTPプロトコルが使用されるような場合を例にとって説明するが、もちろん、本発明は、WANがインターネット以外のものであっても、クライアントがオフィス以外の例えば家庭内LAN等に設置されたものであっても、HTTPプロトコル以外のプロトコルが使用されるものであっても適用可能である。
図31に本発明を適用するコンピュータ・ネットワーク・システムの基本的な構成例を示す。この構成例では、ASPサーバセンター2内のローカルエリアネットワーク(LAN)12と、ユーザオフィス4内のローカルエリアネットワーク(LAN)16との間が、インターネットや専用回線などの広域ネットワーク(WAN)14を介して接続されており、ASPサーバセンター2内のサーバ20と、ユーザオフィス4内のクライアント50とが、LAN12・WAN14・LAN16を介して通信可能になっている。ASPサーバセンター内LANには1または複数のサーバが接続され、ユーザオフィス内LANには1または複数のクライアントが接続される。
WEBベースのASPは、サーバセンター2に設置したサーバ20から、WAN14を介して、様々なアプリケーションプログラムによるサービスを提供し、ユーザはオフィス4に設置されたクライアント上のWEBブラウザ等を使ってそれらのサービスにアクセスする。
このような利用形態においては、ユーザオフィス内LAN16とサーバセンター内LAN12とをつなぐネットワーク、特にインターネットなどの広域ネットワーク14の実効的な通信容量(バンド幅)は、サーバセンター内LAN12やユーザオフィス内LAN16よりも低く、そこが性能上のボトルネックになって通信遅延が発生し、アプリケーションの応答性能が低下するという問題が発生する。
そこで、本実施形態では、図1に示すように、サーバセンター内LAN12とユーザオフィス内LAN16とをつなぐ広域ネットワーク14の両端に、サーバ側プロキシ30およびクライアント側プロキシ40という2つのモジュールを設置し、それらの間で後述するフィンガープリント圧縮(FP圧縮)を行って通信データ量を低減することで、広域ネットワークのボトルネックを解消する。
本実施形態のサーバ20、サーバ側プロキシ30、クライアント側プロキシ40、クライアント50は、いずれも、計算機上でソフトウェア(サーバプログラム、サーバ側プロキシ・プログラム、クライアント側プロキシ・プログラム、クライアント・プログラム)を動作させる形で実現することができる。この場合に、必要に応じて計算機所望の機能を有するOSやドライバソフト、パケット通信用ソフト、暗号ソフト等といったソフトウェア、あるいは通信インタフェース装置や外部記憶装置や入出力装置等といったハードウェアが搭載あるいは接続される。また、この場合に、ユーザあるいは管理者からの情報の入力やユーザへの情報の呈示等のために、グラフィカル・ユーザ・インタフェース(GUI)を用いると好ましい。
サービスを利用するためにユーザが使用するクライアント50上では、その目的に応じて例えばWEBブラウザ等のプログラムが動作する。ユーザは、例えば、WEBブラウザからインターネットを介し情報転送あるいは注文受付等の所望のサービスを提供するサーバにリクエストメッセージを出し、リプライメッセージを受けることによって、またはこれを適宜繰り返すことによって、サービスを利用する。もちろん、WEBブラウザ等の汎用のソフトウェアではなく、特定のサービスを利用するための専用のソフトウェアなどの他のものが用いられても構わない。また、クライアントは、汎用の計算機ではなく、例えばインターネット機能を有する携帯電話端末等でもよい。
サーバ20上では、所定のサーバプログラムが動作し、クライアント20のユーザに対して、当該サーバ・サイトに固有のサービスを提供する。
サーバ側プロキシ30は、図1のように、サーバセンター内LAN12とWAN14との両方に接続し、トランスペアレント・プロキシとして動作するように設置して実施することができる。また、図2のように、サーバセンター内LAN12上に設置して実施することもできる。また、図3のように、サーバ側プロキシ30の機能をサーバ20に内蔵するように実施することもできる。
同様に、クライアント側プロキシ40は、図1のように、ユーザオフィス内LAN16とWAN14との両方に接続し、トランスペアレント・プロキシとして動作するように設置して実施することができる。また、図2のように、ユーザオフィス内LAN16上に設置して実施することもできる。また、図3のように、クライアント側プロキシ40の機能をクライアント50上で動作するブラウザ等に内蔵するように実施することもできる。あるいは、ブラウザ等の動作するクライアント50上に、個人用のクライアント側プロキシ40を動作させるように実施することもできる。
なお、サーバ側プロキシ30とクライアント側プロキシ40とは、図1〜図3などのように同じ形態であってもよいし、異なる形態であってもよい。
本実施形態のサーバ側プロキシ30およびクライアント側プロキシ40は、いずれも、フィンガープリント・キャッシュ(FPキャッシュ)と呼ぶキャッシュ機構を持つ。フィンガープリントキャッシュは、フィンガープリント(FP)と呼ぶ名前によって、HTTPプロトコルでやりとりされるデータを記録・管理する。
フィンガープリントは、図4に例示するように、HTTPプロトコルでやり取りされるデータ(図4の例ではコンテンツ)の内容から、あらかじめ決められた計算方法(図4の例ではハッシュ関数)で決定される、短い数値である。この数値は、可変長でもよいが、処理の容易さの観点では、固定長の数値の方が扱いやすい。
フィンガープリントを計算する方法としては、良く知られているMD−5やSHA−1などのハッシュ関数を用いることができる。これらのハッシュ関数は、データに対する電子署名などに使われており、任意のデータが与えられると、MD−5の場合は128ビットの数値に、SHA−1の場合は160ビットの数値に、変換することができる。これらのハッシュ関数の特徴は、2つのデータX1,X2が与えられ、データX1とデータX2とが同じであれば、データX1に対して計算したハッシュ値とデータX2に対して計算したハッシュ値とは等しくなるが、異なる2つのデータA,Bが与えられた場合には、データAに対して計算したハッシュ値とデータBに対して計算したハッシュ値とは、非常に高い確率で異なるものになることである(原理上は、異なる2つのデータA,Bに対してそれぞれ計算したハッシュ値が同じになる場合があるが、その確率は実用上無視できるくらいに小さい)。
図5に示すように、サーバ側プロキシ30やクライアント側プロキシ40の持つフィンガープリント・キャッシュ(図中の60)は、過去にHTTPプロトコルでやり取りされたデータ本体(図中の61)を、そのデータから計算して求めたフィンガープリントの値(図中の62)を名前として、記録・管理している。
例えばHTTPプロトコルでサーバ側プロキシ30からクライアント側プロキシ40へデータを転送するときに、サーバ側プロキシ30は、当該データのフィンガープリントを計算し、そのフィンガープリントに対応するデータがフィンガープリントキャッシュに入っていれば、当該データ(と同じ内容のデータ)は過去に転送したことがあるので、当該データを転送せずに、対応するフィンガープリントの値を転送する。フィンガープリントを受け取ったクライアント側プロキシ40は、当該フィンガープリントの値に対応するデータをフィンガープリントキャッシュから取り出すことで、転送すべきデータを再現することができる。このような方式(すなわち、データ圧縮→データ転送→データ解凍)により、過去に送ったものと同じデータならばフィンガープリントの値を送るだけでよいので、ネットワークを流れるデータ量を大幅に削減することができる。もちろん、クライアント側プロキシ40からサーバ側プロキシ30へデータを転送するときも同様である。
説明上、サーバ側プロキシ30とクライアント側プロキシ40との間でのデータ転送にあたり、フィンガープリントキャッシュを利用してメッセージボディのデータをフィンガープリントに置き換えて転送情報量を圧縮することを、フィンガープリント圧縮(FP圧縮)と呼ぶものとする。
なお、サーバ側プロキシ30とクライアント側プロキシ40との間において、すべてのメッセージをFP圧縮を適用する対象(すなわち、フィンガープリントキャッシュを利用してデータをフィンガープリントに置き換えるための処理を行う対象)としてもよいが、例えばフィンガープリントキャッシュの効果が期待できないものなどに対する適用を除外するために、予め定められた条件を満たすメッセージについては、これをFP圧縮の適用対象外とする(常にFP圧縮しないで転送する)ようにしてもよい。
この場合の予め定められた条件とは、例えば、メッセージ・ヘッダに予め定められた情報が記述されていることである。具体的には、例えば、メッセージ・ヘッダにGETメソッドを示す情報およびリクエストを示す情報が記述されていることである。また、予め定められた条件の他の例としては、転送されるデータが空(null)あるいは非常に短いサイズであることである。もちろん、それらの他にも種々のバリエーションがある。また、複数の条件を組み合わせて使用するようにしてもよい。
次に、図6〜図10を参照しながら、サーバ側プロキシ30とクライアント側プロキシ40との間でデータ転送する際の(FP圧縮の適用対象のメッセージについての)プロキシ間メッセージ・フォーマットについて説明する。
なお、FP圧縮の適用対象外のメッセージは、FP圧縮については、何もせずにそのままの(FP圧縮側(送信側)のプロキシが受信した際の)メッセージ・フォーマットでプロキシ間を転送して構わない。あるいは、FP圧縮側(送信側)のプロキシが、例えばそのメッセージ・ヘッダに当該メッセージがFP圧縮の適用対象外を識別可能とする情報を持つようにして転送することも可能である。
さて、サーバ側プロキシ30とクライアント側プロキシ40との間でデータ転送する場合、FP圧縮の適用対象のメッセージには、データがFP圧縮されてフィンガープリントに置き換えられたメッセージ(圧縮時のメッセージ)と、FP圧縮されておらず、データが搭載されているメッセージ(非圧縮時のメッセージ)とがある。
非圧縮時のメッセージ・フォーマットは、メッセージに含まれるデータがフィンガープリントキャッシュに登録されていない場合に使用される。一方、圧縮時のメッセージ・フォーマットは、メッセージに含まれるデータがフィンガープリントキャッシュに登録されている場合に使用される。
解凍側(受信側)では、非圧縮時のフォーマットのメッセージを受信したことを契機として、当該データについてフィンガープリントキャッシュへの登録を行うことができる。
図6に、メッセージ・フォーマットの一例を示す。(a)は非圧縮時のメッセージであり、(b)は圧縮時のメッセージである。
(a)ではメッセージボディにデータが載せられ、(b)ではメッセージボディにデータの代わりにフィンガープリント(FP)が載せられる。また、この例では、メッセージ・ヘッダに、FP圧縮の有無を識別可能とする識別情報が(圧縮側のプロキシにおいて)記述され、この識別情報に基づいて(解凍側のプロキシにおいて)FP圧縮の有無を識別する(例えば、0ならば圧縮なし、1ならば圧縮あり)。なお、識別情報は、プロキシ間で使用される特別のものであってもよいし、もともと通常のHTTPメッセージ・ヘッダに存在するフィールドを利用あるいは併用したものであってもよい。
なお、非圧縮時には、図6(a)の例では、メッセージにフィンガープリントを含ませなかったが、メッセージボディにデータに加えてフィンガープリントを含ませるようにしてもよいし、または図7に示すように、メッセージ・ヘッダにフィンガープリントを含ませるようにしてもよい。このようにすれば、解凍側で当該データについてフィンガープリントキャッシュの登録を行う際に、該フィンガープリントを利用することによって、あらためて当該データからフィンガープリントを求める手間が省ける。
なお、FP圧縮の適用対象外のメッセージが存在し得る場合には、解凍側(受信側)では、メッセージ・ヘッダに上記の識別情報が含まれるか否かで、FP圧縮の適用対象のメッセージか適用対象外のメッセージかを判断することもできる。また、FP圧縮の適用対象外のメッセージのヘッダにも識別情報を設け、該識別情報によって3種類のメッセージを識別するようにしてもよい(例えば、01ならば適用対象外、10なら(適用対象であって且つ)圧縮なし、11なら(適用対象であって且つ)圧縮あり)。
ここで、図32に図6(a)のフォーマットのメッセージの具体例を示し、図33に図6(b)のフォーマットのメッセージの具体例を示す。各図のヘッダ中の“Fingerprint−Mode:…”が識別情報に相当し、図33のボディの“6E39…0128”がフィンガープリントに相当する。
また、図34に、図7のフォーマットのメッセージの具体例を示す。ヘッダ中の“Fingerprint:…”がフィンガープリントに相当する。
図8に、メッセージ・フォーマットの他の例を示す。(a)は非圧縮時のメッセージであり、(b)は圧縮時のメッセージである。(a)ではメッセージボディにデータが載せられ、(b)ではメッセージボディは空(null)である。また、この例では、(a),(b)ともにメッセージ・ヘッダにフィンガープリント(FP)が記述される。FP圧縮の有無を識別可能とする識別情報について上記の例と同様である。
なお、この場合に、非圧縮時には図6の(a)と同様のメッセージ・フォーマット(フィンガープリントを含まないフォーマット)を用いる方法もある。
なお、FP圧縮の適用対象外のメッセージが存在し得る場合には、上記した識別情報に基づく方法の他に、圧縮側(送信側)のプロキシがFP圧縮の適用対象のメッセージ・ヘッダに常にフィンガープリントを記述する構成の場合には、解凍側(受信側)では、メッセージ・ヘッダにフィンガープリントが含まれるか否かで判断することもできる。
ここで、図35に図8(a)のフォーマットのメッセージの具体例を示し、図36に図8(b)のフォーマットのメッセージの具体例を示す。
図9に、メッセージ・フォーマットのさらに他の例を示す。(a)は非圧縮時のメッセージであり、(b)は圧縮時のメッセージである。(a)ではメッセージボディにデータが載せられ、(b)ではメッセージボディは空(null)である。また、この例では、(a),(b)ともにメッセージ・ヘッダにフィンガープリント(FP)が記述される。ただし、この例では、FP圧縮の有無を識別可能とする識別情報は使用しない。
この例では、メッセージボディが空(null)か否かによって、FP圧縮の有無を識別することができる。ただし、FP圧縮の適用対象外のメッセージでメッセージボディが空(null)のものが存在し得る場合には、例えば、メッセージ・ヘッダにフィンガープリント(FP)が存在するか否かによって、FP圧縮の適用対象で圧縮時のメッセージか、FP圧縮の適用対象外でメッセージボディが空(null)のメッセージかを識別する(あるいは、メッセージ・ヘッダにFP圧縮の適用対象か適用対象外かを示す情報を設けてもよい)。
なお、非圧縮時には図10に示すようにメッセージにフィンガープリントを記述しないフォーマットを用いる方法もある。この場合には、メッセージ・ヘッダにフィンガープリントが含まれるか否かによって、FP圧縮の有無を識別することができる。ただし、FP圧縮の適用対象外のメッセージが存在し得る場合には、例えば、メッセージ・ヘッダにFP圧縮の適用対象か適用対象外かを示す情報を設ければよい。
ここで、図37に図9(a)のフォーマットのメッセージの具体例を示し、図38に図9(b)のフォーマットのメッセージの具体例を示す。
また、図39に、図10のフォーマットのメッセージの具体例を示す。
以下では、サーバ側プロキシ30からクライアント側プロキシ40へリプライメッセージを転送するときにそのリプライデータをFP圧縮・解凍する場合を中心に本実施形態について詳しく説明する。
図11に本実施形態のサーバ側プロキシ30の構成例を示し、図12に本実施形態のクライアント側プロキシ40の構成例を示す。なお、図11や図12は、サーバ側プロキシ30からクライアント側プロキシ40へデータを転送する際の構成を中心に示してある。
図11に示されるように、本サーバ側プロキシ30は、サーバセンター内LAN12または広域ネットワーク14から転送メッセージを受信するための処理を行う受信部31、転送メッセージに含まれるデータに対してFP圧縮を施すための処理部32、サーバセンター内LAN12または広域ネットワーク14へ転送メッセージを送信するための処理を行う送信部33、フィンガープリントとそのもととなったデータとを対応付けて記憶するためのフィンガープリントキャッシュ(FPキャッシュ)34を備えている。また、処理部32は、転送メッセージに含まれるデータを圧縮対象とすべきか否かを判定するためのフィンガープリント(FP)圧縮判定部321、フィンガープリントキャッシュ34に対する検索や登録などを行うためのフィンガープリントキャッシュ(FPキャッシュ)管理部322、転送メッセージに含まれるデータを対応するフィンガープリントで置き換えるなどの処理を行うためのフィンガープリント(FP)圧縮処理部323を含む。
図12に示されるように、本クライアント側プロキシ40は、ユーザオフィス内LAN16または広域ネットワーク14から転送メッセージを受信するための処理を行う受信部41、転送メッセージに含まれるデータに対してFP解凍を施すための処理部42、ユーザオフィス内LAN16または広域ネットワーク14へ転送メッセージを送信するための処理を行う送信部43、フィンガープリントとそのもととなったデータとを対応付けて記憶するためのフィンガープリントキャッシュ(FP・キャッシュ)44を備えている。また、処理部42は、転送メッセージに含まれるデータを圧縮対象とすべきか否かおよび転送メッセージに対するFP圧縮の有無を判定するためのフィンガープリント(FP)圧縮判定部421、フィンガープリントキャッシュ34に対する検索や登録などを行うためのフィンガープリントキャッシュ(FPキャッシュ)管理部422、FP圧縮された転送メッセージに含まれるフィンガープリントから元のデータを解凍するなどの処理を行うためのフィンガープリント(FP)解凍処理部423を含む。
なお、圧縮側のFP圧縮判定部321と解凍側のFP圧縮判定部421は、前述したようにメッセージが予め定められた条件を満たすか否かを調べることによって、そのメッセージに含まれるデータをFP圧縮の適用対象とするか否かを判断する(すべてのメッセージをFP圧縮の適用対象にする場合には、圧縮側のFP圧縮判定部321および後に示す手順例の該当部分は不要であり、解凍側のFP圧縮判定部421の該当判断の部分および後に示す手順例の該当部分は不要である)。また、解凍側のFP圧縮判定部421は、FP圧縮の適用対象のメッセージについて、そのデータがFP圧縮されたものか否かを判定する。以下では、FP圧縮の適用対象となるメッセージを転送する場合(FP圧縮の適用対象とすると判断された場合、またはすべてのメッセージをFP圧縮の適用対象にする場合)を中心に説明する。
図13に、サーバ側プロキシ30からクライアント側プロキシ40へリプライメッセージを転送する際のサーバ側プロキシ30の処理手順の一例を示す。なお、図13は、1つのリプライメッセージを受けたときの処理を記述しているが、実際はサーバ側プロキシ30が受け取ったリプライメッセージ全てに対して、図13に例示する処理を行う。
サーバ側プロキシ30は、受信部31により、サーバ20からリプライメッセージを受信する(ステップS1)。
FP圧縮判定部321は、該リプライメッセージのリプライデータがFP圧縮対象のものであるか否か調べ、判断する(ステップS2)。リプライデータがFP圧縮対象外のものと判断されたならば(ステップS2)、受信したリプライメッセージを送信部33からクライアント側プロキシ40へ転送する(ステップS9)。
ステップS2にて該リプライメッセージのリプライデータがFP圧縮対象のものであると判断されたならば、FPキャッシュ管理部322にて、該リプライデータのフィンガープリントの値を計算し(ステップS3)、該フィンガープリントの値をキーとしてフィンガープリントキャッシュ34を検索する(ステップS4)。
そして、該フィンガープリントの値とこれに対応するデータとの組がフィンガープリントキャッシュ34に登録されていたならば(ステップS5)、FP圧縮処理部323にて、受信したリプライメッセージを、該フィンガープリントの値を用いてFP圧縮時のフォーマットにして(例えば図8(b)等)、送信部33から、クライアント側プロキシ40へ送信する(ステップS6)。このとき、必要に応じて、リプライヘッダ内のデータ長を表すフィールド(Content−Length:フィールド)の値を、FP圧縮時のフォーマットにあわせて設定する。
一方、ステップS4の検索の結果、該フィンガープリントの値とこれに対応するデータとの組がフィンガープリントキャッシュ34に登録されていなかったならば(ステップS5)、次の2つの作業を行う。
(1)FP圧縮処理部323にて、受信したリプライメッセージを、(必要に応じて該フィンガープリントの値を用いて)非FP圧縮時のフォーマットにして(例えば図8(a)等)、送信部33から、クライアント側プロキシ40へ送信する(ステップS7)。
(2)FPキャッシュ管理部322にて、該フィンガープリントの値と、該リプライデータとを対応付けて(フィンガープリントの値をキーにして)、フィンガープリントキャッシュ34に登録する(ステップS8)。
なお、上記の(1)と(2)は、いずれを先に行ってもよいし、並行して行ってもよい。
次に、図14に、サーバ側プロキシ30からクライアント側プロキシ40へリプライメッセージを転送する際のクライアント側プロキシ40の処理手順の一例を示す。なお、図14は、1つのリクエストメッセージを受けたときの処理を記述しているが、実際はクライアント側プロキシ40が受け取ったリクエストメッセージ全てに対して、図14に例示する処理を行う。
クライアント側プロキシ40は、受信部41により、サーバ側プロキシ30からリプライメッセージを受信する(ステップS11)。
FP圧縮判定部421は、該リプライメッセージのリプライデータがFP圧縮対象のものであるか否か調べ、判断する(ステップS12)。リプライデータがFP圧縮対象外のものと判断されたならば(ステップS12)、受信したリプライメッセージを送信部43からクライアント50へ転送する(ステップS20)。
ステップS12にて該リプライメッセージのリプライデータがFP圧縮対象のものであると判断されたならば、FP圧縮判定部421は、さらに、リプライデータがFP圧縮されているか否か調べ、判断する(ステップS13)。
ステップS13にて該リプライメッセージのリプライデータがFP圧縮されているものと判断されたならば(例えば図8(b)等の場合)、FPキャッシュ管理部422にて、該リプライデータのフィンガープリントの値を求め(ステップS14)、該フィンガープリントの値をキーとしてフィンガープリントキャッシュ44を検索する(ステップS15)。
そして、FP解凍処理部423にて、受信リプライメッセージに対して、フィンガープリントキャッシュ34から検索された該フィンガープリントの値に対応するデータを付加し、プロキシ間で特別の情報を使用する場合には該情報を削除した後に、これを送信部43からクライアント50へ送信する(ステップS16)。このとき、必要に応じて、リプライヘッダ内のデータ長を表すフィールド(Content−Length:フィールド)の値を、該フィンガープリントの値に対応するデータの長さに設定する。
一方、ステップS13にて該リプライメッセージのリプライデータがFP圧縮されていないものと判断されたならば(例えば図8(a)等の場合)、次の2つの作業を行う。
(1)FP解凍処理部423にて、プロキシ間で特別の情報を使用する場合には受信リプライメッセージから該情報を削除した後に、これを送信部43からクライアント50へ送信する(ステップS18)。
(2)FPキャッシュ管理部422にて、該リプライデータのフィンガープリントの値を求め(ステップS17)、該フィンガープリントの値と、該リプライデータとを対応付けて(フィンガープリントの値をキーにして)、フィンガープリントキャッシュ34に登録する(ステップS19)。
なお、上記の(1)と(2)は、いずれを先に行ってもよいし、並行して行ってもよい。
ところで、ステップS14では、メッセージにフィンガープリントが記述されている。しかし、ステップS17では、メッセージにフィンガープリントが記述されている場合に、該メッセージからフィンガープリントを得る方法と、メッセージにフィンガープリントが記述されてない場合に、リプライデータをもとにハッシュ関数等によってフィンガープリントの値を計算する方法とがある。なお、メッセージにフィンガープリントが記述されている場合であっても、リプライデータをもとにフィンガープリントの値を計算する方法も可能である。また、ステップS14/ステップS17は、ステップS12とステップS13の間にて行うようにしても構わないし、ステップS17は、ステップS18とステップS19の間にて行うようにしても構わない。
また、ステップS12の判断とステップS13の判断は、同時に行ってもよい。
なお、クライアント側プロキシ40からサーバ側プロキシ30へリクエストメッセージを転送する際にはフィンガープリントキャッシュを用いないものとする場合には、サーバ側プロキシ30は、図15に例示するように、クライアント側プロキシ40からリクエストメッセージを受信し(ステップS21)、これをサーバ20へ送信する(ステップS22)、という手順で構わない。同様に、クライアント側プロキシ40は、図16に例示するように、クライアント50からリクエストメッセージを受信し(ステップS23)、これをサーバ側プロキシ30へ送信する(ステップS24)、という手順で構わない。
以下では、図17(登録時すなわち非FP圧縮時)および図18(FP圧縮時)を参照しながら、フィンガープリントキャッシュを利用したデータ転送についてより具体的に説明する。
まず、図17を参照しながら、サーバ側プロキシ30からクライアント側プロキシ40へ、フィンガープリントキャッシュ登録されていないデータを転送するとともに、フィンガープリントキャッシュ登録する場合の動作について説明する。
(1)クライアント50上のブラウザ等は、例えば“/A.cgi”というURLでサーバ20に、POSTメソッドのリクエストメッセージを出したとする。サーバ20へのリクエストメッセージは、まず、クライアント側プロキシ40に送られるように、ブラウザ等を設定しておく。
(2)クライアント50からリクエストメッセージを受け取ったクライアント側プロキシ40は、そのリクエストメッセージをサーバ側プロキシ30に転送する。
(3)リクエストメッセージを受け取ったサーバ側プロキシ30は、そのリクエストメッセージをサーバ50へ転送する。
(4)サーバ20は、該リクエストメッセージに対する処理を行った後、サーバ側プロキシ30に、そのリプライメッセージを送り返す。
(5)リプライメッセージを受け取ったサーバ側プロキシ30は、まず、受信リプライメッセージの持つリプライデータのフィンガープリントを計算し、そのフィンガープリント名を持ったデータがフィンガープリントキャッシュ34に入っているかどうかを調べる。入っていなければ、初めてのデータ(一旦フィンガープリントキャッシュ登録されたものがその後に削除あるいは無効化されることがある構成の場合に、一旦フィンガープリントキャッシュ登録されたが削除あるいは無効化され、その後において初めてである場合を含む)であるので、そのデータをフィンガープリントを名前としてフィンガープリントキャッシュ34に入れる(登録する)。
(6)サーバ側プロキシ30は、リプライメッセージをクライアント側プロキシ40に転送する。なお、前述したように、リプライデータから計算したフィンガープリントの値を、リプライヘッダ等に入れて送ると、クライアント側プロキシ40で再度フィンガープリントを計算する手間を省くことが出来る。
(7)リプライメッセージを受け取ったクライアント側プロキシ40は、初めてのデータであるので、リプライデータをフィンガープリントキャッシュ44に登録する。なお、前述したように、リプライデータからフィンガープリントを計算するか、あるいはサーバ側プロキシがリプライヘッダ等に入れたフィンガープリントを取り出し、これを名前として入れる。
(8)クライアント側プロキシ40は、(リプライヘッダ等にフィンガープリントの値などのサーバ側プロキシ30とクライアント側プロキシ40との間だけで使用される情報が存在する構成の場合には、これを削除した後に、)リプライメッセージを、クライアント50(上で動作するブラウザ等)へ送り返す。
なお、サーバ側プロキシ30において、上記の(5)のフィンガープリントキャッシュ登録は、(6)の動作の後に行っても構わない。また、クライアント側プロキシ40において、(7)のフィンガープリントキャッシュ登録は、(8)の動作の後に行っても構わない。
次に、図18を参照しながら、図17の動作が行われてキャッシュ登録されているデータを、サーバ側プロキシ30からクライアント側プロキシ40へ転送する場合の動作について説明する。
(1)〜(4)は、図17を参照して説明した動作における(1)〜(4)と同様である。
(5)サーバ50からリプライメッセージを受け取ったサーバ側プロキシ40は、まず、受信リプライメッセージの持つリプライデータのフィンガープリントを計算し、そのフィンガープリント名を持ったデータがフィンガープリントキャッシュ34に入っているかどうかを調べる。入っていれば、過去に送ったことのあるデータ(フィンガープリントキャッシュ登録されているデータ)なので、(前述したように例えばフィンガープリントの値をリプライヘッダに入れ且つリプライボディを空にするなどして)リプライボディのデータをフィンガープリントで置き換える。
(6)サーバ側プロキシ30は、リプライボディをフィンガープリントで置き換えたリプライメッセージをクライアント側プロキシ40に転送する。
(7)リプライメッセージを受け取ったクライアント側プロキシ40は、リプライデータがフィンガープリントで置き換えられていることを検出し、(前述したように例えばリプライヘッダなどにて)指定されたフィンガープリントを使ってフィンガープリントキャッシュ44から対応するデータを取り出し、これをリプライボディに入れる。
(8)そして、クライアント側プロキシ30は、(リプライヘッダ等にフィンガープリントの値などのサーバ側プロキシ30とクライアント側プロキシ40との間だけで使用される情報が存在する構成の場合には、これを削除した後に、)リプライメッセージを、クライアント(上で動作するブラウザ等)へ送り返す。
ところで、サーバ側プロキシ30およびクライアント側プロキシ40のフィンガープリントキャッシュは、その容量に上限があるため、所定のアルゴリズムに従いガーベジコレクションを行って、例えば古いデータや使いそうに無いデータを消して行くのが好ましい。
ただし、このようにすると、サーバ側プロキシ30のフィンガープリントキャッシュ34は持っていてもクライアント側プロキシ40のフィンガープリントキャッシュ44では既に消されてしまっているデータが発生し得ることになるので、上記の(7)で、クライアント側プロキシ40において、フィンガープリントをもとにしてフィンガープリントキャッシュ44からリプライデータを置き換えるべきデータを取り出そうとしたが、フィンガープリントキャッシュ44に該当するフィンガープリントとデータの組が存在しない場合がある。このような場合には、例えば、クライアント側プロキシ40は、サーバ側プロキシ30に対して、指定したフィンガープリントのデータを送るように依頼し、依頼されたサーバ側プロキシ30は、指定されたフィンガープリントのデータをフィンガープリントキャッシュ34から取り出して送り返すような仕組みを設ければよい。
なお、逆に、サーバ側プロキシ30のフィンガープリントキャッシュ34では既に消されてしまっているがクライアント側プロキシ40のフィンガープリントキャッシュ44はまだ持っているデータが存在する場合には、図17を参照して説明した動作における(7)で、クライアント側プロキシ40において、フィンガープリント/リプライデータをフィンガープリントキャッシュ44に登録する際に、その時点で登録されていたフィンガープリント/リプライデータに対して上書きしてもよい。
図18を参照して説明した動作における(5)で、サーバ側プロキシ30において、リプライデータのフィンガープリントを求め、該フィンガープリントがフィンガープリントキャッシュ34に入っていれば、当該リプライデータと同じデータが該フィンガープリントと組になってフィンガープリントキャッシュ34に入っているものとみなして処理している。実用上、異なるデータから同じフィンガープリントが生成されないことを前提にすれば、この方法で十分であるが、非常に小さな確率で異なるデータのフィンガープリントが偶々同じ値になってしまった場合に生じるエラーを取り除くようにする方法もある。この場合には、リプライデータから求めたフィンガープリントがフィンガープリントキャッシュ34に入っているときに、該フィンガープリントと組になってフィンガープリントキャッシュ34に入っているデータと、当該プライデータとを比較して、同じか否かを判断するようにすればよい。このとき、もしフィンガープリントは同じであるが内容が異なるデータが登録されていると判断された場合の処理は、以下に例示するような方法が考えられる。
・そのフィンガープリントは以降使用しないものとする(そのフィンガープリントを与えるデータは以後キャッシュされないことになる)。
・先に登録されているフィンガープリント/データを優先する(登録中のフィンガープリントと同じ値のフィンガープリントを与える他のデータは、その登録中はキャッシュされないことになる)。
・現在登録対象となっているフィンガープリント/データを優先する(登録中のフィンガープリント/データは、同じ値のフィンガープリントを与える他のデータによって次々と更新されていくことになる)。
ところで、本実施形態のサーバ側プロキシ30あるいはクライアント側プロキシ40に、後述するURLとフィンガープリントとの対応テーブル(URL・FPテーブル)を設け、これとフィンガープリントキャッシュとを併用することで、プロキシサーバの共有キャッシュの動作をも行うようにすることができる。この機能は、個々のサーバ側プロキシ30毎に、また個々のクライアント側プロキシ40毎に、設けるか否かを定めることができる。
まず、上記機能を設けたクライアント側プロキシ40について説明する。
図19に、この場合のクライアント側プロキシ40の構成例を示す。このクライアント側プロキシ40は、図12の構成・機能に加えて、更に過去にアクセスしたURLと、そのリプライデータのフィンガープリントとの対応を保持するURL・フィンガープリント・テーブル(URL・FPテーブル)45と、URLキャッシュ処理部424とを備えている。
なお、URL・FPテーブル45には、URLおよびフィンガープリント以外に、そのURLでアクセスしたときにリプライヘッダに入れられて来たMIMEタイプや、有効期間の判定に使うためのタイムスタンプなどの情報も併せて記録する。また、URL・FPテーブル45には、従来の共有キャッシュがキャッシュできる場合にのみ必要な情報を記録する。
図20に、サーバ側プロキシ30からクライアント側プロキシ40へリプライメッセージを転送する際のクライアント側プロキシ40の処理手順の一例を示す。
なお、この場合の処理手順は、図14の手順のステップS16およびS19の後に追加される以外は、図14の手順と同じであり、図20では、図14の手順のステップS16およびS19より後の処理手順の部分を示してある。ここでは、図14で説明した手順に追加する部分を中心に説明する。
クライアント側プロキシ40は、送信部43により、クライアント50にリプライメッセージを送信(ステップS16またはS18)した後、URLキャッシュ処理部424にて、該リプライメッセージがキャッシュ対象のものであるか否か調べ、判断する(ステップS27)。キャッシュ対象であると判断されたならば、URLキャッシュ処理部424にて、URLとフィンガープリントとリプライヘッダを構成するのに必要な情報等を対応付けて(URLをキーにして)をURL・FPテーブル45に登録する(ステップS28)。キャッシュ対象でないと判断されたならば、何もしない。
なお、ステップS27の判断およびステップS28のURL・FPテーブルへの登録は、ステップS13とステップS16あるいはS19の間にて行うようにしても構わない。
なお、登録時の受信リプライメッセージがキャッシュ対象のものであるか否かの判断方法は、従来の登録時の手法と同様で構わない(例えば、GETメソッドのリプライデータであって、かつ、そのヘッダにキャッシュ不可を示す情報が記述されていないものをキャッシュ対象とする等)。
次に、図21に、クライアント50から受信したリクエストメッセージをクライアント側プロキシ40からサーバ側プロキシ30へ転送する際のクライアント側プロキシ40におけるプロキシサーバの共有キャッシュの動作に関する処理手順の一例を示す。
クライアント側プロキシ40は、受信部41により、クライアント50からリクエストメッセージを受信する(ステップS31)。
URLキャッシュ処理部424は、リクエストメッセージに対するリプライメッセージがキャッシュ対象のものであるか否か調べ、判断する(ステップS32)。なお、応答時のキャッシュ対象か否かの判断方法は、従来の応答時の手法と同様で構わない(例えば、受信リクエストメッセージがGETメソッドのものであるか否か)。
リクエストデータがキャッシュ対象外のものと判断されたならば(ステップS32)、受信したリクエストメッセージを送信部43からサーバ側プロキシ30へ転送する(ステップS38)。
ステップS32にて該リクエストメッセージに対するリプライメッセージがキャッシュ対象のものであると判断されたならば、URLキャッシュ処理部424は、さらに、該リクエストメッセージに指定されているURLを取り出し(ステップS33)、そのURLをキーとしてURL・FPテーブル45を検索する(ステップS34)。
そのURLに対応するリプライデータのフィンガープリントがキャッシュされていなければ(ステップS35)、受信したリクエストメッセージを送信部43からサーバ側プロキシ30へ転送する(ステップS38)。このとき、現在保持しているデータのタイムスタンプをリクエストメッセージのIf−Modified−Sinceヘッダに記入してサーバ側プロキシ30へ転送し、サーバ側プロキシ30から現在保持しているデータが有効であるとのリプライメッセージを受け取ると、ステップS37へ行くように実施することもできる。
また、そのURLに対応するリプライデータのフィンガープリントが登録されていても(ステップS35)、併せて保持されている有効期間の判定のための情報に基づいてそのデータが無効になっていると判断されれば(ステップS36)、受信したリクエストメッセージを送信部43からサーバ側プロキシ30へ転送する(ステップS38)。
一方、そのURLに対応するリプライデータのフィンガープリントが登録されており(ステップS35)、かつ、併せて保持されている有効期間の判定のための情報に基づいてそのデータが有効であると判断されれば(ステップS36)、URLキャッシュ処理部424は、URL・FPテーブル45からリプライデータを構成するのに必要な情報を得るとともに、当該URLに対応するリプライデータのフィンガープリントをキーとしてフィンガープリントキャッシュ44を検索してリプライデータを取得し、それらをもとにリプライメッセージを生成して、これを送信部43からクライアント50へ転送する(ステップS37)。
以下では、図22(応答時)を参照しながら、共有キャッシュの動作についてより具体的に説明する。
(1)クライアント50上のブラウザ等は、例えば“/C.html”というURLでサーバ20に、GETメソッドのリクエストメッセージを出したとする。
(2)新しいURLでリクエストが来たときに、そのURLがURL・FPテーブル45に載っていれば、従来の共有キャッシュと同様に有効期間の判定を行い、有効と判断できれば、そのURLに対応するフィンガープリントをURL・FPテーブル45を引いて求め、それを名前とするデータをフィンガープリントキャッシュ44から取り出してリプライデータとし、さらに、URL・FPテーブル45からMIMEタイプ等のリプライヘッダを構成するのに必要な情報を取り出してリプライヘッダを作成する。
(3)作成したリプライメッセージを、クライアント20(上で動作するブラウザ等)へ送り返す。
なお、キャッシュの内容が指定した時間以降に更新されている場合にのみデータを送ることを依頼するIf−Modified−Sinceヘッダを持ったリクエストメッセージの場合も、まずURL・FPテーブルを参照して更新されていないことが判断できれば、そこでリプライメッセージを作成して返し、そうでなければサーバまで再びIf−Modified−Sinceの情報を書き直して聞きに行くように実施することもできる。
次に、キャッシュ機能を設けたサーバ側プロキシ30について説明する。
上記ではクライアント側プロキシ40のキャッシュ機能について説明したが、サーバ側プロキシ30も同様に実施可能である。
この場合、クライアント側プロキシ40に対するメッセージ転送元のクライアント50とメッセージ転送先のサーバ側プロキシ30が、サーバ側プロキシ30に対してはそれぞれクライアント側プロキシ40(転送元)とサーバ20(転送先)になり、キャッシュに関係する構成・手順は同様である。
図23に、この場合のサーバ側プロキシ30の構成例を示す。このサーバ側プロキシ30は、図11の構成・機能に加えて、更に過去にアクセスしたURLと、そのリプライデータのフィンガープリントとの対応を保持するURL・フィンガープリント・テーブル(URL・FPテーブル)35と、URLキャッシュ処理部324とを備えている。
図24に、サーバ側プロキシ30からクライアント側プロキシ40へリプライメッセージを転送する際のサーバ側プロキシ30の処理手順の一例を示す。
なお、この場合の処理手順は、図13の手順のステップS6およびS8の後に追加される以外は、図13の手順と同じであり、図24では、図13の手順のステップS6およびS8より後の処理手順の部分を示してある。ここでは、図13で説明した手順と相違する部分を中心に説明する。
サーバ側プロキシ30は、送信部33により、クライアント側プロキシ40にリプライメッセージを送信(ステップS6またはS8)した後、URLキャッシュ処理部324にて、該リプライメッセージのリプライデータがキャッシュ対象のものであるか否か調べ、判断する(ステップS39−2)。キャッシュ対象であると判断されたならば、URLキャッシュ処理部324にて、URLとフィンガープリントとリプライヘッダを構成するのに必要な情報等を対応付けて(URLをキーにして)をURL・FPテーブル35に登録する(ステップS39−3)。キャッシュ対象でないと判断されたならば、何もしない。
もちろん、前述と同様に、この手順も種々変形することが可能である。
図25に、クライアント側プロキシ40から受信したリクエストメッセージをサーバ側プロキシ30からサーバ20へ転送する際のサーバ側プロキシ30におけるプロキシサーバの共有キャッシュの動作に関する処理手順の一例を示す。
この場合の処理手順は、基本的には図21の手順と同様である。なお、図21のS37ではリプライデータを作成してクライアント50へ転送するが、これに対応する図25のS47ではFP圧縮時のフォーマット(例えば図8(b)等)でリプライデータを作成してクライアント側プロキシ40へ転送することになる。
このように、サーバ側プロキシにもURL・FPテーブル表を持ってキャッシュの処理をする構成は、一つのサーバ側プロキシが複数のクライアント側プロキシから使われているときに有効に働く。すなわち、あるクライアント側プロキシから要求のあったキャッシュ可能なデータが既に他のクライアント側プロキシによってアクセスされている場合には、サーバ側プロキシにもキャッシュされているので、そのデータを送り返すだけで処理が完了する。
なお、以上では、URL・FPテーブル表をフィンガープリントキャッシュとは別途に設ける場合について説明したが、URL・FPテーブル表をフィンガープリントキャッシュと一体化して構成することも可能である。
さて、これまで説明した例では、サーバ側プロキシ30からクライアント側プロキシ40へリプライデータを転送するときに、該リプライデータがフィンガープリントキャッシュに登録されているデータと同じものである場合には、該リプライデータに代えて、対応するフィンガープリントを転送することで、ネットワークのトラフィックを軽減しているが、FP圧縮は、クライアント側プロキシ40からサーバ側プロキシ30へリクエストデータを転送する場合についてさらに適用することが可能である。なお、FP圧縮を、クライアント側プロキシ240からサーバ側プロキシ230へリクエストデータを転送する場合についてのみ適用することも可能である。
また、FP圧縮を該リクエストデータ転送のみに適用した場合、FP圧縮を該リプライデータ転送のみに適用した場合、FP圧縮を該リクエストデータ転送および該リプライデータ転送に適用した場合のいずれにおいても、リクエストメッセージが指定するURLに対応するリプライデータに対する共用キャッシュ機能に関する構成をクライアント側プロキシのみに設けることも、サーバ側プロキシのみに設けることも、両プロキシに設けることも可能である。
FP圧縮をクライアント側プロキシ40からサーバ側プロキシ30へのリクエストデータ転送に適用する場合、すでに説明したリプライデータに対するサーバ側プロキシ30とクライアント側プロキシ40との役割を逆にすればよいので、FP圧縮を両データ転送に適用する場合には、サーバ側プロキシ30は図11の構成に加えて、更に処理部32にフィンガープリント解凍処理部を備え、クライアント側プロキシ40は図12の構成に加えて、更に処理部42にフィンガープリント圧縮処理部を備えればよい。
なお、いずれのプロキシにおいても、フィンガープリント圧縮処理部とフィンガープリント解凍処理部とを併せて、フィンガープリント(FP)圧縮・解凍処理部としてもよい。
また、サーバ側プロキシ30やクライアント側プロキシ40は、リプライデータ転送に対するフィンガープリントキャッシュとは独立にリクエストデータ転送に対するフィンガープリントキャッシュを設けてもよいが、リプライデータ転送とクエストデータ転送とで同じフィンガープリントキャッシュを共用してもよい。
図26に、この場合のプロキシ(サーバ側プロキシ、クライアント側プロキシ)の構成例を示す。
また、図27に、クライアント側プロキシ40からサーバ側プロキシ30へリクエストメッセージを転送する際のクライアント側プロキシ40の処理手順の一例を示す。
クライアント側プロキシ40は、受信部41により、クライアント50からリクエストメッセージを受信する(ステップS51)。
FP圧縮判定部421は、該リクエストメッセージのリクエストデータがFP圧縮対象のものであるか否か調べ、判断する(ステップS52)。リクエストデータがFP圧縮対象外のものと判断されたならば(ステップS52)、受信したリクエストメッセージを送信部43からサーバ側プロキシ30へ転送する(ステップS59)。
ステップS52にて該リクエストメッセージのリクエストデータがFP圧縮対象のものであると判断されたならば、FPキャッシュ管理部422にて、該リクエストデータのフィンガープリントの値を計算し(ステップS53)、該フィンガープリントの値をキーとしてフィンガープリントキャッシュ44を検索する(ステップS54)。
そして、該フィンガープリントの値とこれに対応するデータとの組がフィンガープリントキャッシュ44に登録されていたならば(ステップS55)、FP圧縮・解凍処理部425にて、受信したリクエストメッセージを、該フィンガープリントの値を用いてFP圧縮時のフォーマットにして(例えば図8(b)等)、送信部43から、サーバ側プロキシ30へ送信する(ステップS56)。
一方、ステップS54の検索の結果、該フィンガープリントの値とこれに対応するデータとの組がフィンガープリントキャッシュ44に登録されていなかったならば(ステップS55)、次の2つの作業を行う。
(1)FP圧縮・解凍処理部425にて、受信したリクエストメッセージを、(必要に応じて該フィンガープリントの値を用いて)非FP圧縮時のフォーマットにして(例えば図8(a)等)、送信部43から、サーバ側プロキシ30へ送信する(ステップS57)。
(2)FPキャッシュ管理部422にて、該フィンガープリントの値と、該リクエストデータとを対応付けて(フィンガープリントの値をキーにして)、フィンガープリントキャッシュ44に登録する(ステップS58)。
なお、上記の(1)と(2)は、いずれを先に行ってもよいし、並行して行ってもよい。
次に、図28に、クライアント側プロキシ40からサーバ側プロキシ30へリクエストメッセージを転送する際のサーバ側プロキシ30の処理手順の一例を示す。
サーバ側プロキシ30は、受信部31により、クライアント側プロキシ40からリクエストメッセージを受信する(ステップS61)。
FP圧縮判定部321は、該リクエストメッセージのリクエストデータがFP圧縮対象のものであるか否か調べ、判断する(ステップS62)。リクエストデータがFP圧縮対象外のものと判断されたならば(ステップS62)、受信したリクエストメッセージを送信部33からサーバ20へ転送する(ステップS70)。
ステップS62にて該リクエストメッセージのリクエストデータがFP圧縮対象のものであると判断されたならば、FP圧縮判定部321は、さらに、リクエストデータがFP圧縮されているか否か調べ、判断する(ステップS63)。
ステップS63にて該リクエストメッセージのリクエストデータがFP圧縮されているものと判断されたならば(例えば図8(b)等の場合)、FPキャッシュ管理部322にて、該リクエストデータのフィンガープリントの値を求め(ステップS64)、該フィンガープリントの値をキーとしてフィンガープリントキャッシュ34を検索する(ステップS65)。
そして、FP圧縮・解凍処理部325にて、受信リプライメッセージに対して、フィンガープリントキャッシュ34から検索された該フィンガープリントの値に対応するデータを付加し、プロキシ間で特別の情報を使用する場合には該情報を削除した後に、これを送信部33からサーバ20へ送信する(ステップS66)。
一方、ステップS63にて該リクエストメッセージのリクエストデータがFP圧縮されていないものと判断されたならば(例えば図8(a)等の場合)、次の2つの作業を行う。
(1)FP圧縮・解凍処理部325にて、プロキシ間で特別の情報を使用する場合には受信リプライメッセージから該情報を削除した後に、これを送信部33からサーバ20へ送信する(ステップS68)。
(2)FPキャッシュ管理部322にて、該リクエストデータのフィンガープリントの値を求め(ステップS67)、該フィンガープリントの値と、該リクエストデータとを対応付けて(フィンガープリントの値をキーにして)、フィンガープリントキャッシュ34に登録する(ステップS69)。
なお、上記の(1)と(2)は、いずれを先に行ってもよいし、並行して行ってもよい。
前述と同様、ステップS67では、メッセージにフィンガープリントが記述されている場合に、該メッセージからフィンガープリントを得る方法と、メッセージにフィンガープリントが記述されてない場合に、リクエストデータをもとにハッシュ関数等によってフィンガープリントの値を計算する方法とがある。なお、メッセージにフィンガープリントが記述されている場合であっても、リクエストデータをもとにフィンガープリントの値を計算する方法も可能である。また、ステップS64/ステップS67は、ステップS62とステップS63の間にて行うようにしても構わないし、ステップS67は、ステップS68とステップS69の間にて行うようにしても構わない。
また、ステップS62の判断とステップS63の判断は、同時に行ってもよい。
このようにリクエストデータに対してもフィンガープリントで置き換えられるように実施すると、例えば、同じファイルを何度もサーバにアップロードする際ときには、2回目以降フィンガープリントを送るだけで済むので、ネットワークのトラフィックを軽減させることができる。
もちろん、この場合に、前述したクライアントが送信したリクエストメッセージが指定するURLに対応するリプライデータに対する共用キャッシュ機能に関する構成をサーバ側プロキシやクライアント側プロキシに対して併せて実施することも可能である。この場合のプロキシ(サーバ側プロキシ、クライアント側プロキシ)の構成例を図29に示す。この場合のサーバ側プロキシやクライアント側プロキシの動作は既に説明したものと同様である。
なお、本実施形態では、クライアント側プロキシからサーバ側プロキシへ転送されるリクエストメッセージや、サーバ側プロキシからクライアント側プロキシへ転送されるリプライメッセージを対象とする場合について示してきたが、あるプロキシに、リクエストメッセージを送信する装置とリプライメッセージを送信する装置との両方、あるいはリクエストメッセージおよびリプライメッセージの両方を送信する装置が接続されている場合には、もちろん、クライアント側プロキシからサーバ側プロキシへ転送されるリクエストメッセージおよびリプライメッセージならびにサーバ側プロキシからクライアント側プロキシへ転送されるリクエストメッセージおよびリプライメッセージを対象とすることや、クライアント側プロキシからサーバ側プロキシへ転送されるリクエストメッセージおよびサーバ側プロキシからクライアント側プロキシへ転送されるリクエストメッセージのみ対象とすることなども可能である。
ところで、これまでは1つのサーバ側プロキシと1つのクライアント側プロキシとの間の1対1の通信に着目して説明してきたが、本発明の適用範囲はもちろんサーバ側プロキシとクライアント側プロキシとが1対1で通信するシステムには限定されるものではなく、サーバ側プロキシとクライアント側プロキシとが1対多で通信するシステム、サーバ側プロキシとクライアント側プロキシとが多対1で通信するシステム、あるいはサーバ側プロキシとクライアント側プロキシとが多対多で通信するシステムにも適用可能である。例えば、図30のように、複数のユーザオフィスに設置したクライアント側プロキシや、モバイルユーザが利用する個人用プロキシなどがサーバ側プロキシを共有して使用するように実施することも可能である。
また、これまでは、1つのメッセージに含まれるデータ全体をFP圧縮する対象(フィンガープリントキャッシュに登録する対象)にしていたが、例えば、1つのメッセージに含まれるデータが所定の単位のデータの集合で構成される場合には、1つのメッセージに含まれる一部の単位データのみFP圧縮する対象(フィンガープリントキャッシュに登録する対象)にする構成も可能である。
なお、以上の各機能は、ソフトウェアとして実現可能である。
また、本実施形態は、コンピュータに所定の手段を実行させるための(あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるための)プログラムとして実施することもでき、該プログラムを記録したコンピュータ読取り可能な記録媒体として実施することもできる。
なお、この発明の実施の形態で例示した構成は一例であって、それ以外の構成を排除する趣旨のものではなく、例示した構成の一部を他のもので置き換えたり、例示した構成の一部を省いたり、例示した構成に別の機能あるいは要素を付加したり、それらを組み合わせたりすることなどによって得られる別の構成も可能である。また、例示した構成と論理的に等価な別の構成、例示した構成と論理的に等価な部分を含む別の構成、例示した構成の要部と論理的に等価な別の構成なども可能である。また、例示した構成と同一もしくは類似の目的を達成する別の構成、例示した構成と同一もしくは類似の効果を奏する別の構成なども可能である。また、この発明の実施の形態で例示した各種構成部分についての各種バリエーションは、適宜組み合わせて実施することが可能である。また、この発明の実施の形態は、個別装置としての発明、関連を持つ2以上の装置についての発明、システム全体としての発明、個別装置内部の構成部分についての発明、またはそれらに対応する方法の発明等、種々の観点、段階、概念またはカテゴリに係る発明を包含・内在するものである。従って、この発明の実施の形態に開示した内容からは、例示した構成に限定されることなく発明を抽出することができるものである。
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
本発明の一実施形態に係るコンピュータ・ネットワーク・システムの構成例を示す図 同実施形態に係るコンピュータ・ネットワーク・システムの他の構成例を示す図 同実施形態に係るコンピュータ・ネットワーク・システムのさらに他の構成例を示す図 同実施形態で使用するフィンガープリントについて説明するための図 同実施形態で使用するフィンガープリントキャッシュについて説明するための図 同実施形態で使用するメッセージ・フォーマットの一例を示す図 同実施形態で使用するメッセージ・フォーマットの他の例を示す図 同実施形態で使用するメッセージ・フォーマットのさらに他の例を示す図 同実施形態で使用するメッセージ・フォーマットのさらに他の例を示す図 同実施形態で使用するメッセージ・フォーマットのさらに他の例を示す図 同実施形態に係るサーバ側プロキシの構成例を示す図 同実施形態に係るクライアント側プロキシの構成例を示す図 同実施形態に係るサーバ側プロキシの手順例を示すフローチャート 同実施形態に係るクライアント側プロキシの手順例を示すフローチャート 同実施形態に係るサーバ側プロキシの手順例を示すフローチャート 同実施形態に係るクライアント側プロキシの手順例を示すフローチャート 同実施形態に係るサーバ側プロキシとクライアント側プロキシとの間のデータ転送について説明するための図 同実施形態に係るサーバ側プロキシとクライアント側プロキシとの間のデータ転送について説明するための図 同実施形態に係るクライアント側プロキシの他の構成例を示す図 同実施形態に係るクライアント側プロキシの他の手順例を示すフローチャート 同実施形態に係るクライアント側プロキシの他の手順例を示すフローチャート 同実施形態に係るクライアントとクライアント側プロキシとの間のデータ転送について説明するための図 同実施形態に係るサーバ側プロキシの他の構成例を示す図 同実施形態に係るサーバ側プロキシの他の手順例を示すフローチャート 同実施形態に係るサーバ側プロキシの他の手順例を示すフローチャート 同実施形態にプロキシのさらに他の構成例を示す図 同実施形態に係るクライアント側プロキシのさらに他の手順例を示すフローチャート 同実施形態に係るサーバ側プロキシのさらに他の手順例を示すフローチャート 同実施形態にプロキシのさらに他の構成例を示す図 同実施形態に係るコンピュータ・ネットワーク・システムのさらに他の構成例を示す図 従来のコンピュータ・ネットワーク・システムについて説明するための図 図6(a)のフォーマットのメッセージの具体例を示す図 図6(b)のフォーマットのメッセージの具体例を示す図 図7のフォーマットのメッセージの具体例を示す図 図8(a)のフォーマットのメッセージの具体例を示す図 図8(b)のフォーマットのメッセージの具体例を示す図 図9(a)のフォーマットのメッセージの具体例を示す図 図9(b)のフォーマットのメッセージの具体例を示す図 図10のフォーマットのメッセージの具体例を示す図
符号の説明
2…ASPサーバセンター、4…ユーザオフィス、12…ASPサーバセンター内LAN、14…WAN、16…ユーザオフィス内LAN、20…サーバ装置、30…サーバ側プロキシ装置、40…クライアント側プロキシ装置、50…クライアント装置、31,41…受信部、32,42…処理部、33,43…送信部、34,44…フィンガープリントキャッシュ、35,45…URL・FPテーブル、321,421…FP圧縮判定部、322,422…フィンガープリントキャッシュ管理部、323…FP圧縮処理部、423…FP解凍処理部、324,424…URLキャッシュ処理部、325,425…FP解凍・解凍処理部

Claims (22)

  1. 複数のクライアント装置それぞれから複数のサーバ装置宛に送信され、複数のクライアント装置それぞれの前記複数のサーバ装置へのアクセスの代理を担当するクライアント側プロキシ装置に中継された、要求するデータのURLをそれぞれ含む複数のリクエストメッセージを受信して前記複数のサーバのうち該リクエストメッセージの宛先たるサーバ装置へ転送し、前記リクエストメッセージへの返答として前記サーバ装置から前記クライアント装置宛に送信されるリプライメッセージを該リプライメッセージの宛先たるクライアント装置の代理であるクライアント側プロキシ装置へ転送するサーバ側プロキシ装置であって、
    前記クライアント側プロキシ装置から転送されるリクエストメッセージへの返答であるリプライメッセージを、前記サーバ装置から受信する第1の受信手段と、
    前記リプライメッセージのメッセージボディに搭載されたデータのフィンガープリントを生成するフィンガープリント生成手段と、
    生成した前記フィンガープリントを、該フィンガープリントの元であった前記データに関連付けてフィンガープリントキャッシュとして保持するとともに、該フィンガープリントと、該データに係る前記URLと、その有効期間の判定のための情報とを関連付けてURLフィンガープリントテーブルとして保持する第1の保持手段と、
    前記第1の受信手段が受信した前記リプライメッセージに係る前記フィンガープリントが、前記フィンガープリントキャッシュに保持されているか否か判定する判定手段と、
    前記第1の受信手段が前記リプライメッセージを受信した際、該リプライメッセージに係る前記フィンガープリントが前記フィンガープリントキャッシュに保持されていると前記判定手段が判定した場合に、該フィンガープリントの元であった前記データの代わりにフィンガープリントを含む圧縮時のリプライメッセージを、前記リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信し、前記フィンガープリントが前記フィンガープリントキャッシュに保持されていないと前記判定手段が判定した場合に、前記フィンガープリントと該フィンガープリントの元であった前記データとを関連付けて前記フィンガープリントキャッシュに追加しかつ、該データを含む非圧縮時のリプライメッセージを、前記リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信する第1の送信手段と、
    前記第1の受信手段が前記リプライメッセージを受信し、前記第1の送信手段が前記圧縮時のリプライメッセージ又は前記非圧縮時のリプライメッセージを送信するに際して、該リプライメッセージに係る前記フィンガープリントと、該フィンガープリントの元であった前記データに係る前記URLと、前記有効期間の判定のための情報とを関連付けて前記URLフィンガープリントテーブルに登録する登録手段と、
    前記クライアント側プロキシ装置から転送されるリクエストメッセージを受信する第2の受信手段と、
    この第2の受信手段が前記リクエストメッセージを受信した際、該リクエストメッセージに含まれる、要求するデータのURLにつき、該URLに関連付けられたフィンガープリントが、前記URLフィンガープリントテーブルに保持されている場合であって、さらに、該URLに関連付けて前記URLフィンガープリントテーブルに保持されている前記有効期間の判定のための情報に基づきそれらが有効であると判定される場合に、該URLに関連付けられた前記フィンガープリントを含む前記圧縮時のリプライメッセージを、該リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信する第2の送信手段とを備えることを特徴とするサーバ側プロキシ装置。
  2. 前記登録手段は、前記第1の受信手段が受信した前記リプライメッセージが、キャッシュ対象のものである場合にのみ、前記登録を行い、
    前記第2の送信手段は、前記第2の受信手段が受信した前記リクエストメッセージに対するリプライメッセージが、キャッシュ対象のものでない場合には、該リクエストメッセージをそのまま前記サーバ装置へ送信することを特徴とする請求項1に記載のサーバ側プロキシ装置。
  3. 前記URLフィンガープリントテーブルは、前記フィンガープリントキャッシュとは独立して構成されたものであることを特徴とする請求項1または2に記載のサーバ側プロキシ装置。
  4. 前記URLフィンガープリントテーブルは、前記フィンガープリントキャッシュに一体化して構成されたものであることを特徴とする請求項1または2に記載のサーバ側プロキシ装置。
  5. 前記第1の送信手段は、前記リプライメッセージに係る前記フィンガープリントが前記フィンガープリントキャッシュに保持されていないと前記判定手段が判定した場合に、前記非圧縮時のリプライメッセージに、前記フィンガープリントをも含ませて、該非圧縮時のリプライメッセージを、前記リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信することを特徴とする請求項1に記載のサーバ側プロキシ装置。
  6. 前記第1の送信手段は、前記リプライメッセージに係る前記フィンガープリントが前記フィンガープリントキャッシュに保持されていないと前記判定手段が判定した場合であってかつ該フィンガープリントの元であった前記データがNullでない場合に、前記フィンガープリントと前記データとを関連付けて前記フィンガープリントキャッシュに追加しかつ、前記非圧縮時のリプライメッセージを、前記リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信することを特徴とする請求項1に記載のサーバ側プロキシ装置。
  7. 前記第1の受信手段は、ローカルエリアネットワークを介して前記サーバ装置と接続されたものであることを特徴とする請求項1に記載のサーバ側プロキシ装置。
  8. 前記リクエストメッセージは、GETメソッドのリクエストメッセージであることを特徴とする請求項1ないしのいずれか1項に記載のサーバ側プロキシ装置。
  9. 複数のクライアント装置それぞれから複数のサーバ装置宛に送信された、要求するデータのURLをそれぞれ含む複数のリクエストメッセージを受信して、該リクエストメッセージの宛先たるサーバ装置へのアクセスの代理を担当するサーバ側プロキシ装置へ転送し、前記リクエストメッセージへの返答として前記サーバ装置から前記サーバ側プロキシ装置を介して前記クライアント装置宛に送信されるリプライメッセージを該リプライメッセージの宛先たるクライアント装置へ転送するクライアント側プロキシ装置であって、
    前記サーバ側プロキシ装置は、
    前記リプライメッセージのメッセージボディに搭載されたデータのフィンガープリントを、該データに関連付けて第1のフィンガープリントキャッシュとして保持するための第1の保持手段と、
    前記クライアント装置から送信され前記クライアント側プロキシ装置により転送されるリクエストメッセージへの前記サーバ装置からの返答であるリプライメッセージを、該サーバ装置から受信する第1の受信手段と、
    この第1の受信手段が受信したリプライメッセージのメッセージボディに搭載されたデータに基づき生成されたフィンガープリントが前記第1のフィンガープリントキャッシュに保持されている場合に、該フィンガープリントの元であった前記データの代わりに該フィンガープリントを含む圧縮時のリプライメッセージを、前記リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信し、該フィンガープリントが前記第1のフィンガープリントキャッシュに保持されていない場合に、該フィンガープリントと該フィンガープリントの元であった前記データとを関連付けて前記第1のフィンガープリントキャッシュに追加し、かつ、該データを含む非圧縮時のリプライメッセージを、前記リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信する第1の送信手段とを有するものであり、
    前記クライアント側プロキシ装置は、
    前記リプライメッセージのメッセージボディに搭載されたデータのフィンガープリントを、該データに関連付けて第2のフィンガープリントキャッシュとして保持するとともに、該フィンガープリントと、該データに係る前記URLと、その有効期間の判定のための情報とを関連付けてURLフィンガープリントテーブルとして保持する第2の保持手段と、
    前記クライアント装置から送信されるリクエストメッセージへの返答であるリプライメッセージとして、前記圧縮時のリプライメッセージ又は前記非圧縮時のリプライメッセージを、前記サーバ側プロキシ装置から受信する第2の受信手段と
    この第2の受信手段が受信したリプライメッセージが、前記圧縮時のリプライメッセージであるか又は前記非圧縮時のリプライメッセージであるか判定する判定手段と、
    前記第2の受信手段が前記リプライメッセージを受信した際、受信された該リプライメッセージは前記圧縮時のリプライメッセージであると、前記判定手段が判定した場合に、該リプライメッセージに含まれるフィンガープリントに関連付けて前記第2のフィンガープリントキャッシュに保持されているデータをメッセージボディに搭載したリプライメッセージを、前記リクエストデータの送信元の前記クライアント装置へ送信し、受信された該リプライメッセージは前記非圧縮時のリプライメッセージであると、前記判定手段が判定した場合に、該リプライメッセージのメッセージボディに搭載されたデータと該データのフィンガープリントとを関連付けて前記第2のフィンガープリントキャッシュに追加しかつ、前記リプライメッセージを、前記リクエストデータの送信元の前記クライアント装置へ送信する第の送信手段と、
    前記第2の受信手段が前記圧縮時のリプライメッセージ又は前記非圧縮時のリプライメッセージを受信し、前記第2の送信手段が前記リプライメッセージを送信するに際して、該リプライメッセージに係る前記フィンガープリントと、該フィンガープリントの元であった前記データに係る前記URLと、前記有効期間の判定のための情報とを関連付けて前記URLフィンガープリントテーブルに登録する登録手段と、
    前記クライアント装置から送信されるリクエストメッセージを受信する第3の受信手段と、
    この第3の受信手段が前記リクエストメッセージを受信した際、該リクエストメッセージに含まれる、要求するデータのURLにつき、該URLに関連付けられたフィンガープリントが、前記URLフィンガープリントテーブルに保持されている場合であって、さらに、該URLに関連付けて前記URLフィンガープリントテーブルに保持されている前記有効期間の判定のための情報に基づきそれらが有効であると判定される場合に、該URLに関連付けて前記第2のフィンガープリントキャッシュに保持されている前記データをメッセージボディに搭載したリプライメッセージを、該リクエストメッセージの送信元の前記クライアント装置へ送信する第の送信手段とを備えることを特徴とするクライアント側プロキシ装置。
  10. 前記登録手段は、前記第2の受信手段が受信した前記リプライメッセージが、キャッシュ対象のものである場合にのみ、前記登録を行い、
    前記第2の送信手段は、前記第3の受信手段が受信した前記リクエストメッセージに対するリプライメッセージが、キャッシュ対象のものでない場合には、該リクエストメッセージをそのまま前記サーバ側プロキシ装置へ送信することを特徴とする特徴とする請求項9に記載のクライアント側プロキシ装置。
  11. 前記URLフィンガープリントテーブルは、前記第2のフィンガープリントキャッシュとは独立して構成されたものであることを特徴とする請求項9または10に記載のクライアント側プロキシ装置。
  12. 前記URLフィンガープリントテーブルは、前記第2のフィンガープリントキャッシュに一体化して構成されたものであることを特徴とする請求項9または10に記載のクライアント側プロキシ装置。
  13. 前記圧縮時のリプライメッセージは、それが圧縮時のリプライメッセージであることを示す識別情報を含むものであり、前記非圧縮時のリプライメッセージは、それが非圧縮時のリプライメッセージであることを示す識別情報を含むものであり、
    前記判定手段は、前記識別情報に基づいて前記判定を行うことを特徴とする請求項9に記載のクライアント側プロキシ装置。
  14. 前記圧縮時のリプライメッセージは、そのメッセージヘッダに前記フィンガープリントを含み、そのメッセージボディーはNULLであり、前記非圧縮時のリプライメッセージは、そのメッセージヘッダとメッセージボディーとのいずれにも前記フィンガープリントを含まず、そのメッセージボディーに前記リプライデータを含むものであり、
    前記判定手段は、前記メッセージヘッダに前記フィンガープリントが含まれるか否かに基づいて前記判定を行うことを特徴とする請求項9に記載のクライアント側プロキシ装置。
  15. 前記圧縮時のリプライメッセージは、そのメッセージヘッダに前記フィンガープリントを含み、そのメッセージボディーはNULLであり、前記非圧縮時のリプライメッセージは、そのメッセージヘッダに前記フィンガープリントを含み、そのメッセージボディーに前記リプライデータを含むものであり、
    前記判定手段は、前記メッセージボディーがNULLか否かに基づいて前記判定を行うことを特徴とする請求項9に記載のクライアント側プロキシ装置。
  16. 前記クライアント装置から送信されるリクエストメッセージへの返答であり前記サーバ側プロキシ装置を介して前記サーバ装置から受信するリプライメッセージのメッセージボディに搭載されたデータのフィンガープリントを生成するフィンガープリント生成手段を更に備え、
    前記第2の保持手段は、前記フィンガープリント生成手段が生成した前記フィンガープリントと該フィンガープリントの元であった前記データとを互いに関連付けて前記第2のフィンガープリントキャッシュとして保持することを特徴とする請求項に記載のクライアント側プロキシ装置。
  17. 前記第の送信手段及び前記第の送信手段は、ローカルエリアネットワークを介して前記クライアント装置と接続されたものであることを特徴とする請求項に記載のクライアント側プロキシ装置。
  18. 前記リクエストメッセージは、GETメソッドのリクエストメッセージであることを特徴とする請求項ないし17のいずれか1項に記載のクライアント側プロキシ装置。
  19. 複数のクライアント装置それぞれから複数のサーバ装置宛に送信され、複数のクライアント装置それぞれの前記複数のサーバ装置へのアクセスの代理を担当するクライアント側プロキシ装置に中継された、要求するデータのURLをそれぞれ含む複数のリクエストメッセージを受信して前記複数のサーバのうち該リクエストメッセージの宛先たるサーバ装置へ転送し、前記リクエストメッセージへの返答として前記サーバ装置から前記クライアント装置宛に送信されるリプライメッセージを該リプライメッセージの宛先たるクライアント装置の代理であるクライアント側プロキシ装置へ転送するものであるとともに、該リプライメッセージのメッセージボディに搭載されたデータのフィンガープリントを、該データに関連付けてフィンガープリントキャッシュとして保持するとともに、該フィンガープリントと、該データに係る前記URLと、その有効期間の判定のための情報とを関連付けてURLフィンガープリントテーブルとして保持する第1の保持手段を備えたサーバ側プロキシ装置のデータ転送方法であって、
    前記クライアント側プロキシ装置から転送されるリクエストメッセージへの返答であるリプライメッセージを、前記サーバ装置から受信するステップと
    受信した前記リプライメッセージのメッセージボディに搭載されたデータのフィンガープリントを生成するステップと、
    生成した前記フィンガープリントが、前記フィンガープリントキャッシュに保持されているか否か判定するステップと
    前記判定にて、前記フィンガープリントが前記フィンガープリントキャッシュに保持されていると判定された場合に、該フィンガープリントの元であった前記データの代わりにフィンガープリントを含む圧縮時のリプライメッセージを、前記リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信するステップと
    前記判定にて、前記フィンガープリントが前記フィンガープリントキャッシュに保持されていないと判定された場合に、前記フィンガープリントと該フィンガープリントの元であった前記データとを関連付けて前記フィンガープリントキャッシュに追加しかつ、該データを含む非圧縮時のリプライメッセージを、前記リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信するステップと、
    前記リプライメッセージを受信し、前記圧縮時のリプライメッセージ又は前記非圧縮時のリプライメッセージを送信するに際して、該リプライメッセージに係る前記フィンガープリントと、該フィンガープリントの元であった前記データに係る前記URLと、前記有効期間の判定のための情報とを関連付けて前記URLフィンガープリントテーブルに登録するステップと、
    記クライアント側プロキシ装置から転送されるリクエストメッセージを受信するステップと、
    受信した前記リクエストメッセージに含まれる、要求するデータのURLにつき、該URLに関連付けられたフィンガープリントが、前記URLフィンガープリントテーブルに保持されている場合であって、さらに、該URLに関連付けて前記URLフィンガープリントテーブルに保持されている前記有効期間の判定のための情報に基づきそれらが有効であると判定される場合に、該URLに関連付けられた前記フィンガープリントを含む前記圧縮時のリプライメッセージを、該リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信するステップとを有することを特徴とするデータ転送方法。
  20. 複数のクライアント装置それぞれから複数のサーバ装置宛に送信された、要求するデータのURLをそれぞれ含む複数のリクエストメッセージを受信して、該リクエストメッセージの宛先たるサーバ装置へのアクセスの代理を担当するサーバ側プロキシ装置へ転送し、前記リクエストメッセージへの返答として前記サーバ装置から前記サーバ側プロキシ装置を介して前記クライアント装置宛に送信されるリプライメッセージを該リプライメッセージの宛先たるクライアント装置へ転送するクライアント側プロキシ装置のデータ転送方法であって、
    前記サーバ側プロキシ装置は、
    前記リプライメッセージのメッセージボディに搭載されたデータのフィンガープリントを、該データに関連付けて第1のフィンガープリントキャッシュとして保持するための第1の保持手段と、
    前記クライアント装置から送信され前記クライアント側プロキシ装置により転送されるリクエストメッセージへの前記サーバ装置からの返答であるリプライメッセージを、該サーバ装置から受信する第1の受信手段と、
    この第1の受信手段が受信したリプライメッセージのメッセージボディに搭載されたデータに基づき生成されたフィンガープリントが前記第1のフィンガープリントキャッシュに保持されている場合に、該フィンガープリントの元であった前記データの代わりに該フィンガープリントを含む圧縮時のリプライメッセージを、前記リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信し、該フィンガープリントが前記第1のフィンガープリントキャッシュに保持されていない場合に、該フィンガープリントと該フィンガープリントの元であった前記データとを関連付けて前記第1のフィンガープリントキャッシュに追加し、かつ、該データを含む非圧縮時のリプライメッセージを、前記リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信する第1の送信手段とを有するものであり、
    前記クライアント側プロキシ装置は、
    前記リプライメッセージのメッセージボディに搭載されたデータのフィンガープリントを、該データに関連付けてフィンガープリントキャッシュとして保持するとともに、該フィンガープリントと、該データに係る前記URLと、その有効期間の判定のための情報とを関連付けてURLフィンガープリントテーブルとして保持する第2の保持手段を有するものであり、
    前記クライアント側プロキシ装置のデータ転送方法は、
    前記クライアント装置から送信されるリクエストメッセージへの返答であるリプライメッセージとして、前記圧縮時のリプライメッセージ又は前記非圧縮時のリプライメッセージを、前記サーバ側プロキシ装置から受信するステップと、
    受信した前記リプライメッセージが、前記圧縮時のリプライメッセージであるか又は前記非圧縮時のリプライメッセージであるか判定するステップと
    前記判定にて、受信された前記リプライメッセージは前記圧縮時のリプライメッセージであると、判定された場合に、該リプライメッセージに含まれるフィンガープリントに関連付けて前記第2のフィンガープリントキャッシュに保持されているデータをメッセージボディに搭載したリプライメッセージを、前記リクエストデータの送信元の前記クライアント装置へ送信するステップと
    前記判定にて、受信された前記リプライメッセージは前記非圧縮時のリプライメッセージであると、判定された場合に、該リプライメッセージのメッセージボディに搭載されたデータと該データのフィンガープリントとを関連付けて前記第2のフィンガープリントキャッシュに追加しかつ、前記リプライメッセージを、前記リクエストデータの送信元の前記クライアント装置へ送信するステップと、
    前記圧縮時のリプライメッセージ又は前記非圧縮時のリプライメッセージを受信し、前記リプライメッセージを送信するに際して、該リプライメッセージに係る前記フィンガープリントと、該フィンガープリントの元であった前記データに係る前記URLと、前記有効期間の判定のための情報とを関連付けて前記URLフィンガープリントテーブルに登録するステップと、
    記クライアント装置から送信されるリクエストメッセージを受信するステップと、
    受信した前記リクエストメッセージに含まれる、要求するデータのURLにつき、該URLに関連付けられたフィンガープリントが、前記URLフィンガープリントテーブルに保持されている場合であって、さらに、該URLに関連付けて前記URLフィンガープリントテーブルに保持されている前記有効期間の判定のための情報に基づきそれらが有効であると判定される場合に、該URLに関連付けて前記第2のフィンガープリントキャッシュに保持されている前記データをメッセージボディに搭載したリプライメッセージを、該リクエストメッセージの送信元の前記クライアント装置へ送信するステップとを有することを特徴とするデータ転送方法。
  21. 複数のクライアント装置それぞれから複数のサーバ装置宛に送信され、複数のクライアント装置それぞれの前記複数のサーバ装置へのアクセスの代理を担当するクライアント側プロキシ装置に中継された、要求するデータのURLをそれぞれ含む複数のリクエストメッセージを受信して前記複数のサーバのうち該リクエストメッセージの宛先たるサーバ装置へ転送し、前記リクエストメッセージへの返答として前記サーバ装置から前記クライアント装置宛に送信されるリプライメッセージを該リプライメッセージの宛先たるクライアント装置の代理であるクライアント側プロキシ装置へ転送するサーバ側プロキシ装置としてコンピュータを機能させるためのプログラムであって、
    前記クライアント側プロキシ装置から転送されるリクエストメッセージへの返答であるリプライメッセージを、前記サーバ装置から受信する第1の受信手段と、
    前記リプライメッセージのメッセージボディに搭載されたデータのフィンガープリントを生成するフィンガープリント生成手段と、
    生成した前記フィンガープリントを、該フィンガープリントの元であった前記データに関連付けてフィンガープリントキャッシュとして保持するとともに、該フィンガープリントと、該データに係る前記URLと、その有効期間の判定のための情報とを関連付けてURLフィンガープリントテーブルとして保持する第1の保持手段と、
    前記第1の受信手段が受信した前記リプライメッセージに係る前記フィンガープリントが、前記フィンガープリントキャッシュに保持されているか否か判定する判定手段と、
    前記第1の受信手段が前記リプライメッセージを受信した際、該リプライメッセージに係る前記フィンガープリントが前記フィンガープリントキャッシュに保持されていると前記判定手段が判定した場合に、該フィンガープリントの元であった前記データの代わりにフィンガープリントを含む圧縮時のリプライメッセージを、前記リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信し、前記フィンガープリントが前記フィンガープリントキャッシュに保持されていないと前記判定手段が判定した場合に、前記フィンガープリントと該フィンガープリントの元であった前記データとを関連付けて前記フィンガープリントキャッシュに追加しかつ、該データを含む非圧縮時のリプライメッセージを、前記リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信する第1の送信手段と、
    前記第1の受信手段が前記リプライメッセージを受信し、前記第1の送信手段が前記圧縮時のリプライメッセージ又は前記非圧縮時のリプライメッセージを送信するに際して、該リプライメッセージに係る前記フィンガープリントと、該フィンガープリントの元であった前記データに係る前記URLと、前記有効期間の判定のための情報とを関連付けて前記URLフィンガープリントテーブルに登録する登録手段と、
    前記クライアント側プロキシ装置から転送されるリクエストメッセージを受信する第2の受信手段と、
    この第2の受信手段が前記リクエストメッセージを受信した際、該リクエストメッセージに含まれる、要求するデータのURLにつき、該URLに関連付けられたフィンガープリントが、前記URLフィンガープリントテーブルに保持されている場合であって、さらに、該URLに関連付けて前記URLフィンガープリントテーブルに保持されている前記有効期間の判定のための情報に基づきそれらが有効であると判定される場合に、該URLに関連付けられた前記フィンガープリントを含む前記圧縮時のリプライメッセージを、該リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信する第2の送信手段とをコンピュータに機能させるためのプログラム。
  22. 複数のクライアント装置それぞれから複数のサーバ装置宛に送信された、要求するデータのURLをそれぞれ含む複数のリクエストメッセージを受信して、該リクエストメッセージの宛先たるサーバ装置へのアクセスの代理を担当するサーバ側プロキシ装置へ転送し、前記リクエストメッセージへの返答として前記サーバ装置から前記サーバ側プロキシ装置を介して前記クライアント装置宛に送信されるリプライメッセージを該リプライメッセージの宛先たるクライアント装置へ転送するクライアント側プロキシ装置としてコンピュータを機能させるためのプログラムであって、
    前記サーバ側プロキシ装置は、
    前記リプライメッセージのメッセージボディに搭載されたデータのフィンガープリントを、該データに関連付けて第1のフィンガープリントキャッシュとして保持するための第1の保持手段と、
    前記クライアント装置から送信され前記クライアント側プロキシ装置により転送されるリクエストメッセージへの前記サーバ装置からの返答であるリプライメッセージを、該サーバ装置から受信する第1の受信手段と、
    この第1の受信手段が受信したリプライメッセージのメッセージボディに搭載されたデータに基づき生成されたフィンガープリントが前記第1のフィンガープリントキャッシュに保持されている場合に、該フィンガープリントの元であった前記データの代わりに該フィンガープリントを含む圧縮時のリプライメッセージを、前記リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信し、該フィンガープリントが前記第1のフィンガープリントキャッシュに保持されていない場合に、該フィンガープリントと該フィンガープリントの元であった前記データとを関連付けて前記第1のフィンガープリントキャッシュに追加し、かつ、該データを含む非圧縮時のリプライメッセージを、前記リクエストメッセージの送信元の前記クライアント装置宛として前記クライアント側プロキシ装置へ送信する第1の送信手段とを有するものであり、
    前記クライアント側プロキシ装置は、
    前記リプライメッセージのメッセージボディに搭載されたデータのフィンガープリントを、該データに関連付けて第2のフィンガープリントキャッシュとして保持するとともに、該フィンガープリントと、該データに係る前記URLと、その有効期間の判定のための情報とを関連付けてURLフィンガープリントテーブルとして保持する第2の保持手段と、
    前記クライアント装置から送信されるリクエストメッセージへの返答であるリプライメッセージとして、前記圧縮時のリプライメッセージ又は前記非圧縮時のリプライメッセージを、前記サーバ側プロキシ装置から受信する第2の受信手段
    この第2の受信手段が受信したリプライメッセージが、前記圧縮時のリプライメッセージであるか又は前記非圧縮時のリプライメッセージであるか判定する判定手段と、
    前記第2の受信手段が前記リプライメッセージを受信した際、受信された該リプライメッセージは前記圧縮時のリプライメッセージであると、前記判定手段が判定した場合に、該リプライメッセージに含まれるフィンガープリントに関連付けて前記第2のフィンガープリントキャッシュに保持されているデータをメッセージボディに搭載したリプライメッセージを、前記リクエストデータの送信元の前記クライアント装置へ送信し、受信された該リプライメッセージは前記非圧縮時のリプライメッセージであると、前記判定手段が判定した場合に、該リプライメッセージのメッセージボディに搭載されたデータと該データのフィンガープリントとを関連付けて前記第2のフィンガープリントキャッシュに追加しかつ、前記リプライメッセージを、前記リクエストデータの送信元の前記クライアント装置へ送信する第の送信手段と、
    前記第2の受信手段が前記圧縮時のリプライメッセージ又は前記非圧縮時のリプライメッセージを受信し、前記第2の送信手段が前記リプライメッセージを送信するに際して、該リプライメッセージに係る前記フィンガープリントと、該フィンガープリントの元であった前記データに係る前記URLと、前記有効期間の判定のための情報とを関連付けて前記URLフィンガープリントテーブルに登録する登録手段と、
    前記クライアント装置から送信されるリクエストメッセージを受信する第3の受信手段と、
    この第3の受信手段が前記リクエストメッセージを受信した際、該リクエストメッセージに含まれる、要求するデータのURLにつき、該URLに関連付けられたフィンガープリントが、前記URLフィンガープリントテーブルに保持されている場合であって、さらに、該URLに関連付けて前記URLフィンガープリントテーブルに保持されている前記有効期間の判定のための情報に基づきそれらが有効であると判定される場合に、該URLに関連付けて前記第2のフィンガープリントキャッシュに保持されている前記データをメッセージボディに搭載したリプライメッセージを、該リクエストメッセージの送信元の前記クライアント装置へ送信する第の送信手段とをコンピュータに機能させるためのプログラム。
JP2007032640A 2007-02-13 2007-02-13 サーバ側プロキシ装置、クライアント側プロキシ装置、データ転送方法及びプログラム Expired - Fee Related JP4031516B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007032640A JP4031516B2 (ja) 2007-02-13 2007-02-13 サーバ側プロキシ装置、クライアント側プロキシ装置、データ転送方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007032640A JP4031516B2 (ja) 2007-02-13 2007-02-13 サーバ側プロキシ装置、クライアント側プロキシ装置、データ転送方法及びプログラム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2001069284A Division JP3983987B2 (ja) 2001-03-12 2001-03-12 サーバ側プロキシ装置、データ転送方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2007188514A JP2007188514A (ja) 2007-07-26
JP4031516B2 true JP4031516B2 (ja) 2008-01-09

Family

ID=38343581

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007032640A Expired - Fee Related JP4031516B2 (ja) 2007-02-13 2007-02-13 サーバ側プロキシ装置、クライアント側プロキシ装置、データ転送方法及びプログラム

Country Status (1)

Country Link
JP (1) JP4031516B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4930305B2 (ja) * 2007-09-20 2012-05-16 日本電気株式会社 データ通信システム、端末、カタログサーバ、データ通信方法、および通信プログラム
US20130311433A1 (en) * 2012-05-17 2013-11-21 Akamai Technologies, Inc. Stream-based data deduplication in a multi-tenant shared infrastructure using asynchronous data dictionaries
JP6323461B2 (ja) * 2013-10-08 2018-05-16 ソニー株式会社 サーバ装置、クライアント装置、情報処理方法および記録媒体
JP2016001810A (ja) * 2014-06-12 2016-01-07 株式会社日立製作所 通信システム、通信装置及びパケット転送方法

Also Published As

Publication number Publication date
JP2007188514A (ja) 2007-07-26

Similar Documents

Publication Publication Date Title
JP3990115B2 (ja) サーバ側プロキシ装置及びプログラム
US7636765B2 (en) Data transfer scheme using caching technique for reducing network load
US7383348B2 (en) Data transfer scheme using caching technique for reducing network load
US8024484B2 (en) Caching signatures
JP5192798B2 (ja) サービス提供システム、ゲートウェイ、およびサーバ
CA2655020A1 (en) Method and systems for efficient delivery of previously stored content
JP3984086B2 (ja) キャッシュサーバ、データ転送装置及びプログラム
JP3848209B2 (ja) データ転送装置、データ転送方法及びプログラム
JP4031516B2 (ja) サーバ側プロキシ装置、クライアント側プロキシ装置、データ転送方法及びプログラム
JP3983987B2 (ja) サーバ側プロキシ装置、データ転送方法及びプログラム
CN101741877B (zh) 媒体资源的操作方法、系统和设备
JP4053269B2 (ja) データ転送装置およびデータ転送方法
JP3943867B2 (ja) サーバ側プロキシ、データ転送方法及びプログラム
JP3943868B2 (ja) サーバ側プロキシ、データ転送方法及びプログラム
JP4041157B2 (ja) クライアント側プロキシ装置、データ転送方法及びプログラム
JP3913508B2 (ja) データ転送装置およびデータ転送方法
JP2003108464A (ja) データ転送装置およびデータ転送方法
JP3977601B2 (ja) サーバ側プロキシ装置、クライアント側プロキシ装置及びプログラム
JP4157585B2 (ja) サーバ側プロキシ装置、クライアント側プロキシ装置、データ転送方法及びプログラム
JP3977651B2 (ja) データ転送方法、サーバ側プロキシ装置、クライアント側プロキシ装置及びプログラム
JP4300220B2 (ja) データ転送装置およびデータ転送方法
JP2005190339A (ja) データ転送装置、通信システム、データ転送方法及びプログラム
WO2008034149A2 (en) Data hosting and dissemination system for mobile devices

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070717

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070914

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: 20071016

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071018

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

Free format text: PAYMENT UNTIL: 20101026

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111026

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20111026

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121026

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20131026

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees