JP3977601B2 - サーバ側プロキシ装置、クライアント側プロキシ装置及びプログラム - Google Patents
サーバ側プロキシ装置、クライアント側プロキシ装置及びプログラム Download PDFInfo
- Publication number
- JP3977601B2 JP3977601B2 JP2001069285A JP2001069285A JP3977601B2 JP 3977601 B2 JP3977601 B2 JP 3977601B2 JP 2001069285 A JP2001069285 A JP 2001069285A JP 2001069285 A JP2001069285 A JP 2001069285A JP 3977601 B2 JP3977601 B2 JP 3977601B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- message
- fingerprint
- server
- side proxy
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【発明の属する技術分野】
本発明は、他の装置のためにデータ転送を行うサーバ側プロキシ装置、クライアント側プロキシ装置及びプログラムに関する。
【0002】
【従来の技術】
ネットワークを介して様々なサービスを提供するサーバと、所望のサービスをサーバに対して要求するクライアントとから構成される、クライアント・サーバ型の情報システムが広く利用されている。特に、インターネット上でHTTPプロトコルを使って通信するWEBサーバとクライアントとからなるWORLD WIDE WEBシステム(あるいは単にWEBとも呼ばれる)は、大変広く利用されているクライアント・サーバ型の情報システムである。通常、サーバ上ではサーバプログラムが動作し、クライアント上ではブラウザなどの所定のツール(プログラム)が動作する。インターネット上で提供されるサービスの内容も多岐に渡っており、ネットワーク経由で文字、静止画像、動画像、音声等の情報(例えば、ホームページ、電子メール、デジタルコンテンツなど)や、プログラムなどを提供、配信あるいは転送などするサービス、また商品を販売するための電子店舗サービス、座席や部屋等の予約サービス、種々の契約の仲介サービスなど、種々のサービスが既に存在し、また次々と新たな形態のサービスが出現している。
【0003】
ところで、WEBのようなクライアント・サーバ型の情報システムにおいては、提供されるサービスがどのような形態のものであろうと、基本的にはクライアント・サーバ間でデータ転送が行われることによってサービスが提供される。したがって、クライアントとサーバとの間で通信に用いるネットワークの容量(バンド幅)が、システム全体のボトルネックになりやすい。そこで、通常、ネットワークの負荷を軽減させるためにキャッシュ技術が用いられる。
【0004】
WEBシステムの場合、クライアント上で動作するブラウザ等はキャッシュ機構を使用するものが多く、最近アクセスしたデータをキャッシュしている。WEBではURLと呼ばれる名前で情報やサービスを指定してアクセスがなされるので、クライアント上のキャッシュは、過去にWEBサーバに要求した情報やサービスの結果として返されるデータのうちでキャッシュ可能なものを、そのURLと対応させてキャッシュに記録している。この場合、キャッシュ内にあるものと同じURLの情報やサービスのリクエストがあった際に、そのキャッシュ内の応答データが古くなっていないと判断できるならば、そのデータを返すことで、WEBサーバとの間の通信を無くすことができる。
【0005】
企業のオフィス内のLANあるいは研究機関におけるLANあるいは家庭内のLANなどで複数のユーザがいる場合、該LANとインターネットとの間にプロキシサーバを置き、プロキシサーバにキャッシュ機構を設けるようにすることも多い。クライアント内のキャッシュ(例えば、ブラウザのキャッシュ)は、当該クライアント・ユーザに専用のキャッシュとして動作するが、LAN上のプロキシサーバのキャッシュは、複数のクライアント・ユーザに共有のキャッシュとして動作する。そのため、後者では、過去に他人(他クライアント)がアクセスしたURLに対してアクセスする際にもキャッシュが効く。
【0006】
さて、WEBにおいて、クライアントとサーバとの間は、HTTPと呼ぶプロトコルで通信が行われる。HTTPプロトコルは、クライアントからサーバへ送る「リクエストメッセージ」と、それに答えてサーバからクライアントへ応答を返す「リプライメッセージ」とが組になっている。
【0007】
リクエストメッセージは、「リクエストヘッダ」と「リクエストボディ」からなる。リクエストヘッダには、アクセスしたい情報やサービスを指定するURLやアクセスの種類を示すメソッド名、その他アクセスに必要な各種の情報が入る。リクエストボディには、サーバに送るデータを入れる。リクエストボディに入っているデータを「リクエストデータ」とも呼ぶ。
【0008】
リプライメッセージは、「リプライヘッダ」と「リプライボディ」からなる。リプライヘッダには、処理結果のステータスなどの情報が入り、リプライボディには要求された情報や要求されたサービスの処理結果などのデータが入る。リプライボディに入っているデータを「リプライデータ」とも呼ぶ。
【0009】
リクエストメッセージのメソッドとしては、サーバ上の情報を読み出す「GETメソッド」、ユーザの持つデータをサーバに書き込む「PUTメソッド」、リクエストの応じて処理した結果を送り返してもらう「POSTメソッド」が、情報やサービスのアクセスに用いられる主要なものである。その他、DELETEなどのメソッドが定義されている。
【0010】
多くの場合、GETメソッドのリクエストメッセージのリクエストボディ、PUTメソッドのリプライメッセージのリプライボディは空である。POSTメソッドのリクエストメッセージのリクエストボディには、必要に応じてサーバ側での処理に用いる情報が入り、POSTメソッドのリプライメッセージのリプライボディには、その処理の結果のデータが入る。
【0011】
GETメソッドでサーバから読み出すデータは、読み出す毎にサーバ側で生成する「動的データ」と、既にサーバ側で記憶しているデータをそのまま送り返す「静的データ」に分けることができる。これらのうち、動的データについては、同じURLでも読み出す度に内容が異なる可能性があるので、多くの場合、サーバはキャッシュ不可の指定をそのリプライメッセージのヘッダに入れて送り返す。したがって、WEBのデータでキャッシュの対象になるのは、静的データの部分である。この静的データは、不特定多数のユーザが参照して構わない「共有データ」と、ユーザ認証することで特定のユーザだけがアクセスできるようにアクセス制御を行う「プライベートデータ」に分けることができる。前者の共有データは、どのようなキャッシュでもキャッシュ可能である。しかしながら、後者のプライベートデータは、プロキシサーバなどの共有キャッシュでは、キャッシュ不可である(プライベートデータは必ずサーバでユーザを認証して送り返す必要があるので)。ただし、ブラウザなどの個人専用のキャッシュの場合には、プライベートデータでもキャッシュは可能である。
【0012】
POSTメソッドは、サーバ側で処理をした結果を返すので、一般的にサーバはキャッシュ不可の指定をリプライメッセージのヘッダに入れて結果を送り返す。そのため、通常はキャッシュの対象にはならない。
【0013】
PUTメソッドは、データをサーバに送るものなので、キャッシュは何も処理をしない。
【0014】
【発明が解決しようとする課題】
従来のWEBのキャッシュは、静的コンテンツをキャッシュの対象にしている。かつては、WEBで公開される情報やサービスには、情報の更新頻度がそれほど高くなく、不特定多数の人に公開されているものが多かったため、静的コンテンツの割合は非常に高く、従来のキャッシュ技術でもネットワークの負荷の軽減に有効であった。
【0015】
しかしながら、WEBベースのASP(Application Service Provider)のように、ユーザがWEBブラウザを使って、ネットワーク経由でサーバ上の情報やサービスにアクセスするシステムが普及するにつれて、下記のように従来のキャッシュ技術では対応できないデータが増加している。
・ユーザの認証を行い、アクセスできるユーザを制限しているので、プライベートデータが多い。
・バックエンドのデータベースを参照して生成する動的データが多い。
・帳票処理や検索などPOSTメソッドを使う場合が多い。
・グループ内の情報共有のためにPUTメソッドを使う場合が多い。
この結果、キャッシュ技術のみではネットワークの負荷を軽減する手法として有効に機能しなくなってきている。
【0016】
本発明は、上記事情を考慮してなされたもので、データ転送装置間を接続するネットワークの負荷をより軽減することができるキャッシュ技術・圧縮技術を備えたサーバ側プロキシ装置、クライアント側プロキシ装置及びプログラムを提供することを目的とする。
【0017】
【課題を解決するための手段】
本発明は、サーバ装置から送信されたリプライメッセージを受信し、該リプライメッセージをその宛先となるクライアント装置に通ずるクライアント側プロキシ装置へ送信するとともに、該クライアント装置から送信されたリクエストメッセージを該クライアント側プロキシ装置を介して受信し、該リクエストメッセージをその宛先となる該サーバ装置へ送信するサーバ側プロキシ装置であって、過去に前記クライアント側プロキシ装置へ送信したリプライメッセージのメッセージボディに搭載されたデータと、該データをもとに生成したフィンガープリントとを対応付けて保持する保持手段と、前記サーバ装置から送信されたリプライメッセージを受信した際に、該受信したリプライメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが前記保持手段に保持されている場合には、該データの代わりに該フィンガープリントを前記リプライメッセージのメッセージボディに搭載して送信する処理を行い、該受信したリプライメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが前記保持手段に保持されていない場合には、該データと該フィンガープリントとを対応付けて前記保持手段に保持する処理を行うとともに、該リプライメッセージを送信する処理を行う第1の処理手段と、前記クライアント側プロキシ装置から受信したリクエストメッセージを前記サーバ装置へ送信するにあたり、該受信したリクエストメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが前記保持手段に保持されていない場合には、該受信したリクエストメッセージのメッセージボディに搭載されたデータと該フィンガープリントとを対応付けて前記保持手段に保持する処理を行う第2の処理手段とを備えたことを特徴とする。
【0018】
本発明は、サーバ装置から送信されたリプライメッセージをサーバ側プロキシ装置を介して受信し、該リプライメッセージをその宛先となるクライアント装置へ送信するとともに、該クライアント装置から送信されたリクエストメッセージを受信し、該リクエストメッセージをその宛先となるサーバ装置に通ずるサーバ側プロキシ装置へ送信するクライアント側プロキシ装置であって、前記サーバ側プロキシ装置は、前記サーバ装置から送信されたリプライメッセージを受信した際に、該受信したリプライメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが第1の保持手段に保持されている場合には、該データの代わりに該フィンガープリントを前記リプライメッセージのメッセージボディに搭載して送信する処理を行い、該受信したリプライメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが該第1の保持手段に保持されていない場合には、該データと該フィンガープリントとを対応付けて該第1の保持手段に保持する処理を行うとともに、該リプライメッセージを送信する処理を行う第1の処理手段と、前記クライアント側プロキシ装置から受信したリクエストメッセージを前記サーバ装置へ送信するにあたり、該受信したリクエストメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが前記第1の保持手段に保持されていない場合には、該受信したリクエストメッセージのメッセージボディに搭載されたデータと該フィンガープリントとを対応付けて該第1の保持手段に保持する処理を行う第2の処理手段とを有し、前記クライアント側プロキシ装置は、過去に前記サーバ側プロキシ装置から受信したリプライメッセージのメッセージボディに搭載されたデータと、該データをもとに生成したフィンガープリントとを対応付けて保持する第2の保持手段と、前記サーバ側プロキシ装置からフィンガープリントをメッセージボディに搭載したリプライメッセージを受信した場合には、前記第2の保持手段から該フィンガープリントに対応付けて保持されているデータを取得し、該取得したデータを該フィンガープリントの代わりにメッセージボディに搭載したリプライメッセージを送信する処理を行い、前記サーバ側プロキシ装置からデータをメッセージボディに搭載したリプライメッセージを受信した場合には、該データと該データのフィンガープリントとを対応付けて前記第2の保持手段に保持する処理を行うとともに、該データをメッセージボディに搭載したリプライメッセージを送信する処理を行う第1の処理手段と、前記クライアント装置から受信したリクエストメッセージを前記サーバ側プロキシ装置へ送信するにあたり、該受信したリクエストメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが前記第2の保持手段に保持されていない場合には、該データと該フィンガープリントとを対応付けて前記第2の保持手段に保持する処理を行う第2の処理手段とを備えたことを特徴とする。
【0026】
なお、装置に係る本発明は方法に係る発明としても成立し、方法に係る本発明は装置に係る発明としても成立する。
また、装置または方法に係る本発明は、コンピュータに当該発明に相当する手順を実行させるための(あるいはコンピュータを当該発明に相当する手段として機能させるための、あるいはコンピュータに当該発明に相当する機能を実現させるための)プログラムとしても成立し、該プログラムを記録したコンピュータ読取り可能な記録媒体としても成立する。
【0027】
本発明によれば、サーバ側プロキシ装置とクライアント側プロキシ装置との間で、データとそのフィンガープリントとの対応を保持し、この対応を保持しているデータについては、データを転送する代わりに対応するフィンガープリントを転送することで、サーバ側プロキシ装置とクライアント側プロキシ装置との間の転送データ量を削減することができる。
【0028】
例えば、GETメソッドのリプライメッセージがプライベートデータであっても、これをフィンガープリントにより圧縮してプロキシ装置間を転送することができるようになる。また、例えば、GETメソッドのリプライメッセージが動的データであっても、内容が同じデータなら、これをフィンガープリントにより圧縮してプロキシ装置間を転送することができるようになる。また、例えば、POSTメソッドであっても、結果が同じデータなら、これをフィンガープリントにより圧縮してプロキシ装置間を転送することができるようになる。
【0029】
また、例えば、PUTメソッドで書き込んだデータをフィンガープリント・キャッシュに登録しておくことで、そのデータをGETメソッドやPOSTメソッドの結果として読み出すときに、これをフィンガープリントにより圧縮してプロキシ装置間を転送することができるようになる。
【0030】
【発明の実施の形態】
以下、図面を参照しながら発明の実施の形態を説明する。
【0031】
以下では、WANがインターネットであり、クライアントはユーザオフィスLANに接続されたものであり、HTTPプロトコルが使用されるような場合を例にとって説明するが、もちろん、本発明は、WANがインターネット以外のものであっても、クライアントがオフィス以外の例えば家庭内LAN等に設置されたものであっても、HTTPプロトコル以外のプロトコルが使用されるものであっても適用可能である。
【0032】
図28に本発明を適用するコンピュータ・ネットワーク・システムの基本的な構成例を示す。この構成例では、ASPサーバセンター102内のローカルエリアネットワーク(LAN)112と、ユーザオフィス104内のローカルエリアネットワーク(LAN)116との間が、インターネットや専用回線などの広域ネットワーク(WAN)114を介して接続されており、ASPサーバセンター102内のサーバ120と、ユーザオフィス104内のクライアント150とが、LAN112・WAN114・LAN116を介して通信可能になっている。ASPサーバセンター内LANには1または複数のサーバが接続され、ユーザオフィス内LANには1または複数のクライアントが接続される。
【0033】
WEBベースのASPは、サーバセンター102に設置したサーバ120から、WAN114を介して、様々なアプリケーションプログラムによるサービスを提供し、ユーザはオフィス104に設置されたクライアント上のWEBブラウザ等を使ってそれらのサービスにアクセスする。
【0034】
このような利用形態においては、ユーザオフィス内LAN116とサーバセンター内LAN112とをつなぐネットワーク、特にインターネットなどの広域ネットワーク114の実効的な通信容量(バンド幅)は、サーバセンター内LAN112やユーザオフィス内LAN116よりも低く、そこが性能上のボトルネックになって通信遅延が発生し、アプリケーションの応答性能が低下するという問題が発生する。
【0035】
そこで、本実施形態では、図1に示すように、サーバセンター内LAN112とユーザオフィス内LAN116とをつなぐ広域ネットワーク114の両端に、サーバ側プロキシ130およびクライアント側プロキシ140という2つのモジュールを設置し、それらの間で後述するフィンガープリント圧縮(FP圧縮)を行って通信データ量を低減することで、広域ネットワークのボトルネックを解消する。
【0036】
本実施形態のサーバ120、サーバ側プロキシ130、クライアント側プロキシ140、クライアント150は、いずれも、計算機上でソフトウェア(サーバ・プログラム、サーバ側プロキシ・プログラム、クライアント側プロキシ・プログラム、クライアント・プログラム)を動作させる形で実現することができる。この場合に、必要に応じて計算機所望の機能を有するOSやドライバソフト、パケット通信用ソフト、暗号ソフト等といったソフトウェア、あるいは通信インタフェース装置や外部記憶装置や入出力装置等といったハードウェアが搭載あるいは接続される。また、この場合に、ユーザあるいは管理者からの情報の入力やユーザへの情報の呈示等のために、グラフィカル・ユーザ・インタフェース(GUI)を用いると好ましい。
【0037】
サービスを利用するためにユーザが使用するクライアント150上では、その目的に応じて例えばWEBブラウザ等のプログラムが動作する。ユーザは、例えば、WEBブラウザからインターネットを介し情報転送あるいは注文受付等の所望のサービスを提供するサーバにリクエストメッセージを出し、リプライメッセージを受けることによって、またはこれを適宜繰り返すことによって、サービスを利用する。もちろん、WEBブラウザ等の汎用のソフトウェアではなく、特定のサービスを利用するための専用のソフトウェアなどの他のものが用いられても構わない。また、クライアントは、汎用の計算機ではなく、例えばインターネット機能を有する携帯電話端末等でもよい。
【0038】
サーバ120上では、所定のサーバ・プログラムが動作し、クライアント120のユーザに対して、当該サーバ・サイトに固有のサービスを提供する。
【0039】
サーバ側プロキシ130は、図1のように、サーバセンター内LAN112とWAN114との両方に接続し、トランスペアレント・プロキシとして動作するように設置して実施することができる。また、図2のように、サーバセンター内LAN112上に設置して実施することもできる。また、図3のように、サーバ側プロキシ130の機能をサーバ120に内蔵するように実施することもできる。
【0040】
同様に、クライアント側プロキシ140は、図1のように、ユーザオフィス内LAN116とWAN114との両方に接続し、トランスペアレント・プロキシとして動作するように設置して実施することができる。また、図2のように、ユーザオフィス内LAN116上に設置して実施することもできる。また、図3のように、クライアント側プロキシ140の機能をクライアント150上で動作するブラウザ等に内蔵するように実施することもできる。あるいは、ブラウザ等の動作するクライアント150上に、個人用のクライアント側プロキシ140を動作させるように実施することもできる。
【0041】
なお、サーバ側プロキシ130とクライアント側プロキシ140とは、図1〜図3などのように同じ形態であってもよいし、異なる形態であってもよい。
【0042】
本実施形態のサーバ側プロキシ130およびクライアント側プロキシ140は、いずれも、フィンガープリント・キャッシュ(FPキャッシュ)と呼ぶキャッシュ機構を持つ。フィンガープリント・キャッシュは、フィンガープリント(FP)と呼ぶ名前によって、HTTPプロトコルでやりとりされるデータを記録・管理する。
【0043】
フィンガープリントは、図4に例示するように、HTTPプロトコルでやり取りされるデータ(図4の例ではコンテンツ)の内容から、あらかじめ決められた計算方法(図4の例ではハッシュ関数)で決定される、短い数値である。この数値は、可変長でもよいが、処理の容易さの観点では、固定長の数値の方が扱いやすい。
【0044】
フィンガープリントを計算する方法としては、良く知られている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に対してそれぞれ計算したハッシュ値が同じになる場合があるが、その確率は実用上無視できるくらいに小さい)。
【0045】
図5に示すように、サーバ側プロキシ130やクライアント側プロキシ140の持つフィンガープリント・キャッシュ(図中の60)は、過去にHTTPプロトコルでやり取りされたデータ本体(図中の61)を、そのデータから計算して求めたフィンガープリントの値(図中の62)を名前として、記録・管理している。
【0046】
HTTPプロトコルでサーバ側プロキシ130からクライアント側プロキシ140へリプライデータを転送するときに、サーバ側プロキシ130は、当該リプライデータのフィンガープリントを計算し、そのフィンガープリントに対応するデータがフィンガープリント・キャッシュに入っていれば、当該データ(と同じ内容のデータ)は過去に転送したことがあるので、当該リプライデータを転送せずに、対応するフィンガープリントの値を転送する。フィンガープリントを受け取ったクライアント側プロキシ140は、当該フィンガープリントの値に対応するデータをフィンガープリント・キャッシュから取り出すことで、転送すべきリプライデータを再現することができる。このような方式(すなわち、データ圧縮→データ転送→データ解凍)により、過去に送ったものと同じデータならばフィンガープリントの値を送るだけでよいので、ネットワークを流れるデータ量を大幅に削減することができる。
【0047】
なお、ここでは、サーバ側プロキシ130からクライアント側プロキシ140へリプライデータを転送する際にフィンガープリント・キャッシュを利用するものとし、あるデータとこれに対するフィンガープリントとの組をフィンガープリント・キャッシュに登録するタイミングは、そのデータが初めて(一旦フィンガープリント・キャッシュ登録されたものがその後に削除あるいは無効化されることがある構成の場合に、一旦フィンガープリント・キャッシュ登録されたが削除あるいは無効化され、その後において初めてである場合を含む;以下、同様)、サーバ側プロキシ130からクライアント側プロキシ140へ転送されるときとしている。したがって、サーバがクライアントへ送信するリプライデータについては、当該リプライデータが初めてサーバ側プロキシ130からクライアント側プロキシ140へ転送されるときとなり、それ以降に同じ内容のリプライデータが転送される際には、フィンガープリント・キャッシュを利用して、転送データ量が削減される。
【0048】
ただし、例えばWEBベースのASPのような利用法では、データはまずユーザオフィス等で作成されてサーバに登録され、それをブラウザ等からアクセスするような場合が多いため、このような場合には、当該データをサーバに登録する時点でクライアント側プロキシおよびサーバ側プロキシのフィンガープリント・キャッシュに登録しておくと、それ以降のアクセスを高速化することができる。そこで、サーバが送信するリプライデータが、もともとはクライアントからサーバへ転送されたデータ(ただし、この転送のときはリクエストデータ)である場合には、登録タイミングは、該リプライデータとなる元のリクエストデータが初めてクライアント側プロキシ140からサーバ側プロキシ130へ転送されるときとしている(この場合、当該データがリプライデータとなって初めてサーバ側プロキシ130からクライアント側プロキシ140へ転送される際には、すでにフィンガープリント・キャッシュへの登録が完了していることになるので、リプライデータとしては初めての転送であっても、フィンガープリント・キャッシュを利用して、転送データ量を削減することができる)。
【0049】
説明上、サーバ側プロキシ130とクライアント側プロキシ140との間でのデータ転送にあたり、フィンガープリント・キャッシュを利用してメッセージ・ボディーのデータをフィンガープリントに置き換えて転送情報量を圧縮することを、フィンガープリント圧縮(FP圧縮)と呼ぶものとする。
【0050】
なお、サーバ側プロキシ130とクライアント側プロキシ140との間において、すべてのメッセージをFP圧縮を適用する対象(すなわち、フィンガープリント・キャッシュを利用してデータをフィンガープリントに置き換えるための処理を行う対象)としてもよいが、例えばフィンガープリント・キャッシュの効果が期待できないものなどに対する適用を除外するために、予め定められた条件を満たすメッセージについては、これをFP圧縮の適用対象外とする(常にFP圧縮しないで転送する)ようにしてもよい。
この場合の予め定められた条件とは、例えば、メッセージ・ヘッダに予め定められた情報が記述されていることである。具体的には、例えば、メッセージ・ヘッダにGETメソッドを示す情報およびリクエストを示す情報が記述されていることである。また、予め定められた条件の他の例としては、転送されるデータが空(null)あるいは非常に短いサイズであることである。
もちろん、それらの他にも種々のバリエーションがある。また、複数の条件を組み合わせて使用するようにしてもよい。
【0051】
次に、図6〜図10を参照しながら、サーバ側プロキシ130とクライアント側プロキシ140との間でデータ転送する際の(FP圧縮の適用対象のメッセージについての)プロキシ間メッセージ・フォーマットについて説明する。
【0052】
なお、FP圧縮の適用対象外のメッセージは、FP圧縮については、何もせずにそのままの(FP圧縮側(送信側)のプロキシが受信した際の)メッセージ・フォーマットでプロキシ間を転送して構わない。あるいは、FP圧縮側(送信側)のプロキシが、例えばそのメッセージ・ヘッダに当該メッセージがFP圧縮の適用対象外を識別可能とする情報を持つようにして転送することも可能である。
【0053】
さて、サーバ側プロキシ130とクライアント側プロキシ140との間でデータ転送する場合、FP圧縮の適用対象のメッセージには、データがFP圧縮されてフィンガープリントに置き換えられたメッセージ(圧縮時のメッセージ)と、FP圧縮されおらず、データが搭載されているメッセージ(非圧縮時のメッセージ)とがある。
【0054】
非圧縮時のメッセージ・フォーマットは、メッセージに含まれるデータがフィンガープリントキャッシュに登録されていない場合に使用される。一方、圧縮時のメッセージ・フォーマットは、メッセージに含まれるデータがフィンガープリントキャッシュに登録されている場合に使用される。
【0055】
解凍側(受信側)では、非圧縮時のフォーマットのメッセージを受信したことを契機として、当該データについてフィンガープリントキャッシュへの登録を行うことができる。
【0056】
図6に、メッセージ・フォーマットの一例を示す。(a)は非圧縮時のメッセージであり、(b)は圧縮時のメッセージである。
【0057】
(a)ではメッセージ・ボディーにデータが載せられ、(b)ではメッセージ・ボディーにデータの代わりにフィンガープリント(FP)が載せられる。また、この例では、メッセージ・ヘッダに、FP圧縮の有無を識別可能とする識別情報が(圧縮側のプロキシにおいて)記述され、この識別情報に基づいて(解凍側のプロキシにおいて)FP圧縮の有無を識別する(例えば、0ならば圧縮なし、1ならば圧縮あり)。なお、識別情報は、プロキシ間で使用される特別のものであってもよいし、もともと通常のHTTPメッセージ・ヘッダに存在するフィールドを利用あるいは併用したものであってもよい。
【0058】
なお、非圧縮時には、図6(a)の例では、メッセージにフィンガープリントを含ませなかったが、メッセージ・ボディーにデータに加えてフィンガープリントを含ませるようにしてもよいし、または図7に示すように、メッセージ・ヘッダにフィンガープリントを含ませるようにしてもよい。このようにすれば、解凍側で当該データについてフィンガープリント・キャッシュの登録を行う際に、該フィンガープリントを利用することによって、あらためて当該データからフィンガープリントを求める手間が省ける。
【0059】
なお、FP圧縮の適用対象外のメッセージが存在し得る場合には、解凍側(受信側)では、メッセージ・ヘッダに上記の識別情報が含まれるか否かで、FP圧縮の適用対象のメッセージか適用対象外のメッセージかを判断することもできる。また、FP圧縮の適用対象外のメッセージのヘッダにも識別情報を設け、該識別情報によって3種類のメッセージを識別するようにしてもよい(例えば、01ならば適用対象外、10なら(適用対象であって且つ)圧縮なし、11なら(適用対象であって且つ)圧縮あり)。
【0060】
ここで、図29に図6(a)のフォーマットのメッセージの具体例を示し、図30に図6(b)のフォーマットのメッセージの具体例を示す。各図のヘッダ中の“Fingerprint−Mode:…”が識別情報に相当し、図30のボディの“6E39…0128”がフィンガープリントに相当する。
【0061】
また、図31に、図7のフォーマットのメッセージの具体例を示す。ヘッダ中の“Fingerprint:…”がフィンガープリントに相当する。
【0062】
図8に、メッセージ・フォーマットの他の例を示す。(a)は非圧縮時のメッセージであり、(b)は圧縮時のメッセージである。(a)ではメッセージ・ボディーにデータが載せられ、(b)ではメッセージ・ボディーは空(null)である。また、この例では、(a),(b)ともにメッセージ・ヘッダにフィンガープリント(FP)が記述される。FP圧縮の有無を識別可能とする識別情報について上記の例と同様である。
【0063】
なお、この場合に、非圧縮時には図6の(a)と同様のメッセージ・フォーマット(フィンガープリントを含まないフォーマット)を用いる方法もある。
【0064】
なお、FP圧縮の適用対象外のメッセージが存在し得る場合には、上記した識別情報に基づく方法の他に、圧縮側(送信側)のプロキシがFP圧縮の適用対象のメッセージ・ヘッダに常にフィンガープリントを記述する構成の場合には、解凍側(受信側)では、メッセージ・ヘッダにフィンガープリントが含まれるか否かで判断することもできる。
【0065】
ここで、図32に図8(a)のフォーマットのメッセージの具体例を示し、図33に図8(b)のフォーマットのメッセージの具体例を示す。
【0066】
図9に、メッセージ・フォーマットのさらに他の例を示す。(a)は非圧縮時のメッセージであり、(b)は圧縮時のメッセージである。(a)ではメッセージ・ボディーにデータが載せられ、(b)ではメッセージ・ボディーは空(null)である。また、この例では、(a),(b)ともにメッセージ・ヘッダにフィンガープリント(FP)が記述される。ただし、この例では、FP圧縮の有無を識別可能とする識別情報は使用しない。
【0067】
この例では、メッセージ・ボディーが空(null)か否かによって、FP圧縮の有無を識別することができる。ただし、FP圧縮の適用対象外のメッセージでメッセージ・ボディーが空(null)のものが存在し得る場合には、例えば、メッセージ・ヘッダにフィンガープリント(FP)が存在するか否かによって、FP圧縮の適用対象で圧縮時のメッセージか、FP圧縮の適用対象外でメッセージ・ボディーが空(null)のメッセージかを識別する(あるいは、メッセージ・ヘッダにFP圧縮の適用対象か適用対象外かを示す情報を設けてもよい)。
【0068】
なお、非圧縮時には図10に示すようにメッセージにフィンガープリントを記述しないフォーマットを用いる方法もある。この場合には、メッセージ・ヘッダにフィンガープリントが含まれるか否かによって、FP圧縮の有無を識別することができる。ただし、FP圧縮の適用対象外のメッセージが存在し得る場合には、例えば、メッセージ・ヘッダにFP圧縮の適用対象か適用対象外かを示す情報を設ければよい。
【0069】
ここで、図34に図9(a)のフォーマットのメッセージの具体例を示し、図35に図9(b)のフォーマットのメッセージの具体例を示す。
【0070】
また、図36に、図10のフォーマットのメッセージの具体例を示す。
【0071】
以下では、サーバ側プロキシ130からクライアント側プロキシ140へリプライメッセージを転送するときにそのリプライデータをFP圧縮・解凍する場合を中心に本実施形態について詳しく説明する。
【0072】
図11に本実施形態のサーバ側プロキシ130の構成例を示し、図12に本実施形態のクライアント側プロキシ140の構成例を示す。なお、図11や図12は、サーバ側プロキシ130からクライアント側プロキシ140へデータを転送する際の構成を中心に示してある。
【0073】
図11に示されるように、本サーバ側プロキシ130は、サーバセンター内LAN112または広域ネットワーク114から転送メッセージを受信するための処理を行う受信部131、転送メッセージに含まれるデータに対してFP圧縮を施すための処理部132、サーバセンター内LAN112または広域ネットワーク114へ転送メッセージを送信するための処理を行う送信部133、フィンガープリントとそのもととなったデータとを対応付けて記憶するためのフィンガープリント・キャッシュ(FPキャッシュ)134を備えている。また、処理部132は、転送メッセージに含まれるデータを圧縮対象とすべきか否かを判定するためのフィンガープリント(FP)圧縮判定部1321、フィンガープリント・キャッシュ134に対する検索や登録などを行うためのフィンガープリント・キャッシュ(FPキャッシュ)管理部1322、転送メッセージに含まれるデータを対応するフィンガープリントで置き換えるなどの処理を行うためのフィンガープリント(FP)圧縮処理部1323を含む。
【0074】
図12に示されるように、本クライアント側プロキシ140は、ユーザオフィス内LAN116または広域ネットワーク114から転送メッセージを受信するための処理を行う受信部141、転送メッセージに含まれるデータに対してFP解凍を施すための処理部142、ユーザオフィス内LAN116または広域ネットワーク114へ転送メッセージを送信するための処理を行う送信部143、フィンガープリントとそのもととなったデータとを対応付けて記憶するためのフィンガープリント・キャッシュ(FP・キャッシュ)144を備えている。また、転送メッセージに含まれるデータを圧縮対象とすべきか否かおよび転送メッセージに対するFP圧縮の有無を判定するためのフィンガープリント(FP)圧縮判定部1421、フィンガープリント・キャッシュ134に対する検索や登録などを行うためのフィンガープリント・キャッシュ(FPキャッシュ)管理部1422、FP圧縮された転送メッセージに含まれるフィンガープリントから元のデータを解凍するなどの処理を行うためのフィンガープリント(FP)解凍処理部1423を含む。
【0075】
なお、圧縮側のFP圧縮判定部1321と解凍側のFP圧縮判定部1421は、前述したようにメッセージが予め定められた条件を満たすか否かを調べることによって、そのメッセージに含まれるデータをFP圧縮の適用対象とするか否かを判断する(すべてのメッセージをFP圧縮の適用対象にする場合には、圧縮側のFP圧縮判定部1321および後に示す手順例の該当部分は不要であり、解凍側のFP圧縮判定部1421の該当判断の部分および後に示す手順例の該当部分は不要である)。また、解凍側のFP圧縮判定部1421は、FP圧縮の適用対象のメッセージについて、そのデータがFP圧縮されたものか否かを判定する。以下では、FP圧縮の適用対象となるメッセージを転送する場合(FP圧縮の適用対象とすると判断された場合、またはすべてのメッセージをFP圧縮の適用対象にする場合)を中心に説明する。
【0076】
以下では、最初に、サーバが送信したリプライデータがサーバ側プロキシ130からクライアント側プロキシ140へ転送される際の動作について説明し、次いで、サーバが送信するリプライデータの元となるリクエストデータがクライアント側プロキシ140からサーバ側プロキシ130へ転送される際の動作について説明する。
【0077】
図13に、サーバ側プロキシ130からクライアント側プロキシ140へリプライメッセージを転送する際のサーバ側プロキシ130の処理手順の一例を示す。なお、図13は、1つのリプライメッセージを受けたときの処理を記述しているが、実際はサーバ側プロキシ130が受け取ったリプライメッセージ全てに対して、図13に例示する処理を行う。
【0078】
サーバ側プロキシ130は、受信部131により、サーバ120からリプライメッセージを受信する(ステップS101)。
【0079】
FP圧縮判定部1321は、該リプライメッセージのリプライデータがFP圧縮対象のものであるか否か調べ、判断する(ステップS102)。リプライデータがFP圧縮対象外のものと判断されたならば(ステップS102)、受信したリプライメッセージを送信部133からクライアント側プロキシ140へ転送する(ステップS109)。
【0080】
ステップS102にて該リプライメッセージのリプライデータがFP圧縮対象のものであると判断されたならば、FPキャッシュ管理部1322にて、該リプライデータのフィンガープリントの値を計算し(ステップS103)、該フィンガープリントの値をキーとしてフィンガープリント・キャッシュ134を検索する(ステップS104)。
【0081】
そして、該フィンガープリントの値とこれに対応するデータとの組がフィンガープリント・キャッシュ134に登録されていたならば(ステップS105)、FP圧縮処理部1323にて、受信したリプライメッセージを、該フィンガープリントの値を用いてFP圧縮時のフォーマットにして(例えば図8(b)等)、送信部133から、クライアント側プロキシ140へ送信する(ステップS106)。このとき、必要に応じて、リプライヘッダ内のデータ長を表すフィールド(Content−Length:フィールド)の値を、FP圧縮時のフォーマットにあわせて設定する。
【0082】
一方、ステップS104の検索の結果、該フィンガープリントの値とこれに対応するデータとの組がフィンガープリント・キャッシュ134に登録されていなかったならば(ステップS105)、次の2つの作業を行う。
(1)FP圧縮処理部1323にて、受信したリプライメッセージを、(必要に応じて該フィンガープリントの値を用いて)非FP圧縮時のフォーマットにして(例えば図8(a)等)、送信部133から、クライアント側プロキシ140へ送信する(ステップS107)。
(2)FPキャッシュ管理部1322にて、該フィンガープリントの値と、該リプライデータとを対応付けて(フィンガープリントの値をキーにして)、フィンガープリント・キャッシュ134に登録する(ステップS108)。
【0083】
なお、上記の(1)と(2)は、いずれを先に行ってもよいし、並行して行ってもよい。
【0084】
次に、図14に、サーバ側プロキシ130からクライアント側プロキシ140へリプライメッセージを転送する際のクライアント側プロキシ140の処理手順の一例を示す。なお、図14は、1つのリクエストメッセージを受けたときの処理を記述しているが、実際はクライアント側プロキシ140が受け取ったリクエストメッセージ全てに対して、図14に例示する処理を行う。
【0085】
クライアント側プロキシ140は、受信部141により、サーバ側プロキシ130からリプライメッセージを受信する(ステップS111)。
【0086】
FP圧縮判定部1421は、該リプライメッセージのリプライデータがFP圧縮対象のものであるか否か調べ、判断する(ステップS112)。リプライデータがFP圧縮対象外のものと判断されたならば(ステップS112)、受信したリプライメッセージを送信部143からクライアント150へ転送する(ステップS120)。
【0087】
ステップS112にて該リプライメッセージのリプライデータがFP圧縮対象のものであると判断されたならば、FP圧縮判定部1421は、さらに、リプライデータがFP圧縮されているか否か調べ、判断する(ステップS113)。
【0088】
ステップS113にて該リプライメッセージのリプライデータがFP圧縮されているものと判断されたならば(例えば図8(b)等の場合)、FPキャッシュ管理部1422にて、該リプライデータのフィンガープリントの値を求め(ステップS114)、該フィンガープリントの値をキーとしてフィンガープリント・キャッシュ144を検索する(ステップS115)。
【0089】
そして、FP解凍処理部1423にて、受信リプライメッセージに対して、フィンガープリント・キャッシュ134から検索された該フィンガープリントの値に対応するデータを付加し、プロキシ間で特別の情報を使用する場合には該情報を削除した後に、これを送信部143からクライアント150へ送信する(ステップS116)。このとき、必要に応じて、リプライヘッダ内のデータ長を表すフィールド(Content−Length:フィールド)の値を、該フィンガープリントの値に対応するデータの長さに設定する。
【0090】
一方、ステップS113にて該リプライメッセージのリプライデータがFP圧縮されていないものと判断されたならば(例えば図8(a)等の場合)、次の2つの作業を行う。
(1)FP解凍処理部1423にて、プロキシ間で特別の情報を使用する場合には受信リプライメッセージから該情報を削除した後に、これを送信部143からクライアント150へ送信する(ステップS118)。
(2)FPキャッシュ管理部1422にて、該リプライデータのフィンガープリントの値を求め(ステップS117)、該フィンガープリントの値と、該リプライデータとを対応付けて(フィンガープリントの値をキーにして)、フィンガープリント・キャッシュ134に登録する(ステップS119)。
【0091】
なお、上記の(1)と(2)は、いずれを先に行ってもよいし、並行して行ってもよい。
【0092】
ところで、ステップS114では、メッセージにフィンガープリントが記述されている。しかし、ステップS117では、メッセージにフィンガープリントが記述されている場合に、該メッセージからフィンガープリントを得る方法と、メッセージにフィンガープリントが記述されてない場合に、リプライデータをもとにハッシュ関数等によってフィンガープリントの値を計算する方法とがある。なお、メッセージにフィンガープリントが記述されている場合であっても、リプライデータをもとにフィンガープリントの値を計算する方法も可能である。
また、ステップS114/ステップS117は、ステップS112とステップS113の間にて行うようにしても構わないし、ステップS117は、ステップS118とステップS119の間にて行うようにしても構わない。
【0093】
また、ステップS112の判断とステップS113の判断は、同時に行ってもよい。
【0094】
以下では、図15(登録時すなわち非FP圧縮時)および図16(FP圧縮時)を参照しながら、フィンガープリント・キャッシュを利用したデータ転送についてより具体的に説明する。
【0095】
まず、図15を参照しながら、サーバ側プロキシ130からクライアント側プロキシ140へ、フィンガープリント・キャッシュ登録されていないデータを転送するとともに、フィンガープリント・キャッシュ登録する場合の動作について説明する。
【0096】
(1)クライアント150上のブラウザ等は、例えば“/A.cgi”というURLでサーバ120に、POSTメソッドのリクエストメッセージを出したとする。サーバ120へのリクエストメッセージは、まず、クライアント側プロキシ140に送られるように、ブラウザ等を設定しておく。
【0097】
(2)クライアント150からリクエストメッセージを受け取ったクライアント側プロキシ140は、そのリクエストメッセージをサーバ側プロキシ130に転送する。
【0098】
(3)リクエストメッセージを受け取ったサーバ側プロキシ130は、そのリクエストメッセージをサーバ150へ転送する。
【0099】
(4)サーバ120は、該リクエストメッセージに対する処理を行った後、サーバ側プロキシ130に、そのリプライメッセージを送り返す。
【0100】
(5)リプライメッセージを受け取ったサーバ側プロキシ130は、まず、受信リプライメッセージの持つリプライデータのフィンガープリントを計算し、そのフィンガープリント名を持ったデータがフィンガープリント・キャッシュ134に入っているかどうかを調べる。入っていなければ、初めてのデータであるので、そのデータをフィンガープリントを名前としてフィンガープリント・キャッシュ134に入れる(登録する)。
【0101】
(6)サーバ側プロキシ130は、リプライメッセージをクライアント側プロキシ140に転送する。
なお、前述したように、リプライデータから計算したフィンガープリントの値を、リプライヘッダ等に入れて送ると、クライアント側プロキシ140で再度フィンガープリントを計算する手間を省くことが出来る。
【0102】
(7)リプライメッセージを受け取ったクライアント側プロキシ140は、初めてのデータであるので、リプライデータをフィンガープリント・キャッシュ144に登録する。
なお、前述したように、リプライデータからフィンガープリントを計算するか、あるいはサーバ側プロキシがリプライヘッダ等に入れたフィンガープリントを取り出し、これを名前として入れる。
【0103】
(8)クライアント側プロキシ140は、(リプライヘッダ等にフィンガープリントの値などのサーバ側プロキシ130とクライアント側プロキシ140との間だけで使用される情報が存在する構成の場合には、これを削除した後に、)リプライメッセージを、クライアント150(上で動作するブラウザ等)へ送り返す。
【0104】
なお、サーバ側プロキシ130において、上記の(5)のフィンガープリント・キャッシュ登録は、(6)の動作の後に行っても構わない。また、クライアント側プロキシ140において、(7)のフィンガープリント・キャッシュ登録は、(8)の動作の後に行っても構わない。
【0105】
次に、図16を参照しながら、図15の動作が行われてキャッシュ登録されているデータを、サーバ側プロキシ130からクライアント側プロキシ140へ転送する場合の動作について説明する。
【0106】
(1)〜(4)は、図15を参照して説明した動作における(1)〜(4)と同様である。
【0107】
(5)サーバ150からリプライメッセージを受け取ったサーバ側プロキシ140は、まず、受信リプライメッセージの持つリプライデータのフィンガープリントを計算し、そのフィンガープリント名を持ったデータがフィンガープリント・キャッシュ134に入っているかどうかを調べる。入っていれば、過去に送ったことのあるデータ(フィンガープリント・キャッシュ登録されているデータ)なので、(前述したように例えばフィンガープリントの値をリプライヘッダに入れ且つリプライボディを空にするなどして)リプライボディのデータをフィンガープリントで置き換える。
【0108】
(6)サーバ側プロキシ130は、リプライボディをフィンガープリントで置き換えたリプライメッセージをクライアント側プロキシ140に転送する。
【0109】
(7)リプライメッセージを受け取ったクライアント側プロキシ140は、リプライデータがフィンガープリントで置き換えられていることを検出し、(前述したように例えばリプライヘッダなどにて)指定されたフィンガープリントを使ってフィンガープリント・キャッシュ144から対応するデータを取り出し、これをリプライボディに入れる。
【0110】
(8)そして、クライアント側プロキシ130は、(リプライヘッダ等にフィンガープリントの値などのサーバ側プロキシ130とクライアント側プロキシ140との間だけで使用される情報が存在する構成の場合には、これを削除した後に、)リプライメッセージを、クライアント(上で動作するブラウザ等)へ送り返す。
【0111】
ところで、サーバ側プロキシ130およびクライアント側プロキシ140のフィンガープリント・キャッシュは、その容量に上限があるため、所定のアルゴリズムに従いガーベジコレクションを行って、例えば古いデータや使いそうに無いデータを消して行くのが好ましい。
【0112】
ただし、このようにすると、サーバ側プロキシ130のフィンガープリント・キャッシュ134は持っていてもクライアント側プロキシ140のフィンガープリント・キャッシュ144では既に消されてしまっているデータが発生し得ることになるので、上記の(7)で、クライアント側プロキシ140において、フィンガープリントをもとにしてフィンガープリント・キャッシュ144からリプライデータを置き換えるべきデータを取り出そうとしたが、フィンガープリント・キャッシュ144に該当するフィンガープリントとデータの組が存在しない場合がある。このような場合には、例えば、クライアント側プロキシ140は、サーバ側プロキシ130に対して、指定したフィンガープリントのデータを送るように依頼し、依頼されたサーバ側プロキシ130は、指定されたフィンガープリントのデータをフィンガープリント・キャッシュ134から取り出して送り返すような仕組みを設ければよい。
【0113】
なお、逆に、サーバ側プロキシ130のフィンガープリント・キャッシュ134では既に消されてしまっているがクライアント側プロキシ140のフィンガープリント・キャッシュ144はまだ持っていてるデータが存在する場合には、図15を参照して説明した動作における(7)で、クライアント側プロキシ140において、フィンガープリント/リプライデータをフィンガープリント・キャッシュ144に登録する際に、その時点で登録されていたフィンガープリント/リプライデータに対して上書きしてもよい。
【0114】
図16を参照して説明した動作における(5)で、サーバ側プロキシ130において、リプライデータのフィンガープリントを求め、該フィンガープリントがフィンガープリント・キャッシュ134に入っていれば、当該リプライデータと同じデータが該フィンガープリントと組になってフィンガープリント・キャッシュ134に入っているものとみなして処理している。実用上、異なるデータから同じフィンガープリントが生成されないことを前提にすれば、この方法で十分であるが、非常に小さな確率で異なるデータのフィンガープリントが偶々同じ値になってしまった場合に生じるエラーを取り除くようにする方法もある。この場合には、リプライデータから求めたフィンガープリントがフィンガープリント・キャッシュ134に入っているときに、該フィンガープリントと組になってフィンガープリント・キャッシュ134に入っているデータと、当該プライデータとを比較して、同じか否かを判断する(内容を確認する)ようにすればよい。このとき、もしフィンガープリントは同じであるが内容が異なるデータが登録されていると判断された場合の処理は、以下に例示するような方法(排他制御)などが考えられる。
・そのフィンガープリントは以降使用しないものとする(そのフィンガープリントを与えるデータは以後キャッシュされないことになる)。
・先に登録されているフィンガープリント/データを優先する(登録中のフィンガープリントと同じ値のフィンガープリントを与える他のデータは、その登録中はキャッシュされないことになる)。
・現在登録対象となっているフィンガープリント/データを優先する(登録中のフィンガープリント/データは、同じ値のフィンガープリントを与える他のデータによって次々と更新されていくことになる)。
【0115】
続いて、サーバが送信するリプライデータの元となるリクエストデータがクライアント側プロキシ140からサーバ側プロキシ130へ転送される際の動作について説明する。
【0116】
図17に、クライアント150からリクエストメッセージを受信した際のクライアント側プロキシ140の処理手順の一例を示す。
【0117】
図17の手順は、フィンガープリント・キャッシュに関しては、図13のサーバ側プロキシ130と同様であるが、ここではクライアント側プロキシ140からサーバ側プロキシ130へのデータ転送にはFP圧縮は適用しないものとしているので、当該リクエストメッセージと同内容のデータが既にフィンガープリント・キャッシュ144に登録されていてもリクエストメッセージにはリクエストデータを載せて転送する点が相違している。
【0118】
さて、クライアント側プロキシ140は、受信部141により、クライアント150からリクエストメッセージを受信する(ステップS135−1)。
【0119】
FP圧縮判定部1421は、該リクエストメッセージのリクエストデータがFP圧縮対象のものであるか否か調べ、判断する(ステップS135−2)。リクエストデータがFP圧縮対象外のものと判断されたならば(ステップS135−2)、受信したリクエストメッセージをサーバ側プロキシ130へ転送する(ステップS135−9)。
【0120】
ステップS135−2にて該リクエストメッセージのリクエストデータがFP圧縮対象のものであると判断されたならば、該リクエストメッセージから該リクエストデータを取得して保持しておき(ステップS135−3)、該リクエストメッセージを送信部143からサーバ側プロキシ130へ転送する(ステップS135−4)。
【0121】
そして、FPキャッシュ管理部1422にて、該リクエストデータのフィンガープリントの値を計算し(ステップS135−5)、該フィンガープリントの値をキーとしてフィンガープリント・キャッシュ144を検索する(ステップS135−6)。
【0122】
該フィンガープリントの値とこれに対応するデータとの組がフィンガープリント・キャッシュ144に登録されていなかったならば(ステップS135−7)、FPキャッシュ管理部1422にて、該フィンガープリントの値と、該リクエストデータとを対応付けて(フィンガープリントの値をキーにして)、フィンガープリント・キャッシュ144に登録する(ステップS135−8)。
【0123】
一方、ステップS135−6の検索の結果、該フィンガープリントの値とこれに対応するデータとの組がフィンガープリント・キャッシュ144に登録されていたならば(ステップS135−7)、何もしない。
【0124】
なお、ステップS135−4の送信は、ステップS135−5またはそれ以降の任意のタイミングで行ってもよい。また、ステップS135−5のフィンガープリントの計算は、ステップS135−4またはそれ以前の任意のタイミングで行ってもよい。
【0125】
次に、図18および図19に、(クライアント側プロキシ140の)他の処理手順例を示す。図17の手順との相違は、図17の手順ではクライアント150からリクエストメッセージを受信した時点でフィンガープリント・キャッシュへの登録を行ってしまったが、図18および図19の手順では、該リクエストメッセージに対してサーバ120が送信したリプライメッセージをサーバ側プロキシ130から受信してからフィンガープリント・キャッシュへの登録を行う点である。
【0126】
図18は、クライアント150からリクエストメッセージを受信した際の手順例であり、図19は、サーバ側プロキシ130からリプライメッセージを受信した際の手順である。なお、図19の手順は、図14の手順と併せて実行される。
【0127】
クライアント側プロキシ140は、受信部141により、クライアント150からリクエストメッセージを受信する(ステップS131−1)。
【0128】
FP圧縮判定部1321は、該リクエストメッセージのリクエストデータがFP圧縮対象のものであるか否か調べ、判断する(ステップS131−2)。リクエストデータがFP圧縮対象外のものと判断されたならば(ステップS131−2)、受信したリクエストメッセージを送信部143からサーバ側プロキシ130へ転送する(ステップS131−4)。
【0129】
ステップS131−2にて該リクエストメッセージのリクエストデータがFP圧縮対象のものであると判断されたならば、該リクエストメッセージから該リクエストデータを取得して保持しておき(ステップS131−3)、該リクエストメッセージを送信部143からサーバ側プロキシ130へ転送する(ステップS131−4)。
【0130】
一方、クライアント側プロキシ140は、受信部141により、サーバ側プロキシ130からリプライメッセージを受信する(ステップS133−1)。
【0131】
ここで、受信リプライメッセージに対応するリクエストメッセージのリクエストデータが保持されていないならば(ステップS133−2)、リクエストメッセージの登録処理に関しては何もしない。
【0132】
受信リプライメッセージに対応するリクエストメッセージのリクエストデータが保持されているならば(ステップS133−2)、FPキャッシュ管理部1322にて、該リクエストデータのフィンガープリントの値を計算し(ステップS133−3)、該フィンガープリントの値をキーとしてフィンガープリント・キャッシュ134を検索する(ステップS133−4)。
【0133】
該フィンガープリントの値とこれに対応するデータとの組がフィンガープリント・キャッシュ134に登録されていなかったならば(ステップS133−5)、FPキャッシュ管理部1322にて、該フィンガープリントの値と、該リクエストデータとを対応付けて(フィンガープリントの値をキーにして)、フィンガープリント・キャッシュ134に登録する(ステップS133−6)。
【0134】
一方、ステップS133−6の検索の結果、該フィンガープリントの値とこれに対応するデータとの組が既にフィンガープリント・キャッシュ134に登録されていたならば(ステップS133−5)、何もしない。
【0135】
次に、図20に、クライアント側プロキシ140からリクエストメッセージを受信した際のサーバ側プロキシ130の処理手順の一例を示す。図20の手順は、図17のクライアント側プロキシ140の手順と同様である。
【0136】
サーバ側プロキシ130は、受信部131により、クライアント側プロキシ140からリクエストメッセージを受信する(ステップS145−1)。
【0137】
FP圧縮判定部1321は、該リクエストメッセージのリクエストデータがFP圧縮対象のものであるか否か調べ、判断する(ステップS145−2)。リクエストデータがFP圧縮対象外のものと判断されたならば(ステップS145−2)、受信したリクエストメッセージをサーバ120へ転送する(ステップS145−9)。
【0138】
ステップS145−2にて該リクエストメッセージのリクエストデータがFP圧縮対象のものであると判断されたならば、該リクエストメッセージから該リクエストデータを取得して保持しておき(ステップS145−3)、該リクエストメッセージを送信部133からサーバ120へ転送する(ステップS145−4)。
【0139】
そして、FPキャッシュ管理部1322にて、該リクエストデータのフィンガープリントの値を計算し(ステップS145−5)、該フィンガープリントの値をキーとしてフィンガープリント・キャッシュ134を検索する(ステップS145−6)。
【0140】
該フィンガープリントの値とこれに対応するデータとの組がフィンガープリント・キャッシュ134に登録されていなかったならば(ステップS145−7)、FPキャッシュ管理部1322にて、該フィンガープリントの値と、該リクエストメッセージとを対応付けて(フィンガープリントの値をキーにして)、フィンガープリント・キャッシュ134に登録する(ステップS145−8)。
【0141】
一方、ステップS145−6の検索の結果、該フィンガープリントの値とこれに対応するデータとの組がフィンガープリント・キャッシュ134に登録されていたならば(ステップS145−7)、何もしない。
【0142】
なお、ステップS145−4の送信は、ステップS145−5またはそれ以降の任意のタイミングで行ってもよい。また、ステップS145−5のフィンガープリントの計算は、ステップS145−4またはそれ以前の任意のタイミングで行ってもよい。
【0143】
次に、図21および図22に、(サーバ側プロキシ130の)他の処理手順例を示す。図21および図22の手順は、図18および図19のクライアント側プロキシ140の手順と同様である(リプライメッセージをサーバ150から受信してからフィンガープリント・キャッシュへの登録を行う)。
【0144】
図21は、クライアント側プロキシ140からリクエストメッセージを受信した際の手順例であり、図22は、サーバ120からリプライメッセージを受信した際の手順である。図22の手順は、図13の手順と併せて実行される。
【0145】
サーバ側プロキシ130は、受信部131により、クライアント側プロキシ140からリクエストメッセージを受信する(ステップS141−1)。
【0146】
FP圧縮判定部1321は、該リクエストメッセージのリクエストデータがFP圧縮対象のものであるか否か調べ、判断する(ステップS141−2)。リクエストデータがFP圧縮対象外のものと判断されたならば(ステップS141−2)、受信したリクエストメッセージを送信部133からサーバ120へ転送する(ステップS141−4)。
【0147】
ステップS141−2にて該リクエストメッセージのリクエストデータがFP圧縮対象のものであると判断されたならば、該リクエストメッセージから該リクエストデータを取得して保持しておき(ステップS141−3)、該リクエストメッセージを送信部133からサーバ120へ転送する(ステップS141−4)。
【0148】
一方、サーバ側プロキシ130は、受信部131により、サーバ120からリプライメッセージを受信する(ステップS143−1)。
【0149】
ここで、受信リプライメッセージに対応するリクエストメッセージのリクエストデータが保持されていないならば(ステップS143−2)、リクエストメッセージの登録処理に関しては何もしない。
【0150】
受信リプライメッセージに対応するリクエストメッセージのリクエストデータが保持されているならば(ステップS143−2)、FPキャッシュ管理部1322にて、該リクエストデータのフィンガープリントの値を計算し(ステップS143−3)、該フィンガープリントの値をキーとしてフィンガープリント・キャッシュ134を検索する(ステップS143−4)。
【0151】
該フィンガープリントの値とこれに対応するデータとの組がフィンガープリント・キャッシュ134に登録されていなかったならば(ステップS143−5)、FPキャッシュ管理部1322にて、該フィンガープリントの値と、該リクエストデータとを対応付けて(フィンガープリントの値をキーにして)、フィンガープリント・キャッシュ134に登録する(ステップS143−6)。
【0152】
一方、ステップS134−6の検索の結果、該フィンガープリントの値とこれに対応するデータとの組が既にフィンガープリント・キャッシュ134に登録されていたならば(ステップS143−5)、何もしない。
【0153】
なお、クライアント側プロキシ140とサーバ側プロキシ130は、一連の処理において、対象とするデータのフィンガープリントをそれぞれ独立に計算してもよいし、サーバ側プロキシ130でフィンガープリントを計算し、クライアント側プロキシ140はサーバ側プロキシ130から通知されたフィンガープリントを使用するようにしてもよい。また、ここでは、クライアント側プロキシ140でフィンガープリントを計算し、サーバ側プロキシ130はクライアント側プロキシ140から通知されたフィンガープリントを使用するようにすることも可能である。
【0154】
以下では、図23を参照しながら、サーバが送信するリプライデータの元となるリクエストデータがクライアント側プロキシ140からサーバ側プロキシ130へ転送される際にフィンガープリント・キャッシュの登録を行う動作についてより具体的に説明する。
【0155】
なお、図23は、図18および図19のクライアント側プロキシ140の手順例ならびに図21および図22のサーバ側プロキシ130の手順に関する具体例である。
【0156】
(1)クライアント150上のブラウザ等は、例えば“/D.doc”というURLでサーバ120に、PUTメソッドのリクエストメッセージを出したとする。このとき、リクエストボディには、サーバ120に送りたいデータが搭載される(図23の例では『文書D』としている)。サーバ120へのリクエストメッセージは、まず、クライアント側プロキシ140に送られるように、ブラウザ等を設定しておく。
【0157】
(2)クライアント150からリクエストメッセージを受け取ったクライアント側プロキシ140は、そのリクエストメッセージをサーバ側プロキシ130に転送する。このとき、当該リクエストデータを保持しておく。
【0158】
(3)リクエストメッセージを受け取ったサーバ側プロキシ130は、そのリクエストメッセージをサーバ120へ転送する。このとき、当該リクエストデータを保持しておく。
【0159】
(4)サーバ120は、該リクエストメッセージに対する処理を行った後、サーバ側プロキシ140に、そのリプライメッセージを送り返す。
【0160】
(5)リプライメッセージを受け取ったサーバ側プロキシ130は、まず、該リプライメッセージに対応するリクエストメッセージのリクエストデータのフィンガープリントを計算し、そのフィンガープリント名を持ったデータがフィンガープリント・キャッシュ134に入っているかどうかを調べる。入っていなければ初めてのデータなので、そのデータをフィンガープリントを名前としてフィンガープリント・キャッシュ134に入れる。
【0161】
(6)サーバ側プロキシ130は、リプライメッセージをクライアント側プロキシ140に転送する。
なお、前述したように、リクエストデータから計算したフィンガープリントの値を、リプライヘッダ等に入れて送ると、クライアント側プロキシ140で再度フィンガープリントを計算する手間を省くことが出来る。
【0162】
(7)リプライメッセージを受け取ったクライアント側プロキシ140は、リクエストデータをフィンガープリント・キャッシュ144に登録する。
なお、前述したように、リプライデータからフィンガープリントを計算するか、あるいはサーバ側プロキシがリプライヘッダ等に入れたフィンガープリントを取り出し、これを名前として入れる。
【0163】
(8)クライアント側プロキシ140は、(リプライヘッダ等にフィンガープリントの値などのサーバ側プロキシ130とクライアント側プロキシ140との間だけで使用される情報が存在する構成の場合には、これを削除した後に、)リプライメッセージを、クライアント150(上で動作するブラウザ等)へ送り返す。
【0164】
なお、上記の動作例において、(5)のフィンガープリント・キャッシュに入れる処理は、(2)でリクエストデータを受け取った以降、任意のタイミングで行ってよい。また、(7)のフィンガープリント・キャッシュに入れる処理は、(8)のリプライデータを送り返す処理の後、あるいは並行して行ってよい。
【0165】
このようにしてフィンガープリント・キャッシュに入れられたリクエストデータは、それ以降のリプライデータの置き換えに用いてネットワークのトラフィックを軽減することができる(図16参照)。
【0166】
さて、これまで説明した例では、サーバ側プロキシ130からクライアント側プロキシ140へリプライデータを転送するときに、該リプライデータがフィンガープリント・キャッシュに登録されているデータと同じものである場合には、該リプライデータに代えて、対応するフィンガープリントを転送することで、ネットワークのトラフィックを軽減しているが、本発明は、クライアント側プロキシ140からサーバ側プロキシ130へリクエストデータを転送する場合についてさらに適用することが可能である。
【0167】
本発明をクライアント側プロキシ140からサーバ側プロキシ130へのリクエストデータ転送に適用する場合、すでに説明したリプライデータに対するサーバ側プロキシ130とクライアント側プロキシ140との役割を逆にすればよいので、サーバ側プロキシ130は図11の構成に加えて、更に処理部132にフィンガープリント解凍処理部を備え、クライアント側プロキシ140は図12の構成に加えて、更に処理部142にフィンガープリント圧縮処理部を備えればよい。
【0168】
なお、いずれのプロキシにおいても、フィンガープリント圧縮処理部とフィンガープリント解凍処理部とを併せて、フィンガープリント(FP)圧縮・解凍処理部としてもよい。
【0169】
また、サーバ側プロキシ130やクライアント側プロキシ140は、リプライデータ転送に対するフィンガープリント・キャッシュとは独立にリクエストデータ転送に対するフィンガープリント・キャッシュを設けてもよいが、リプライデータ転送とクエストデータ転送とで同じフィンガープリント・キャッシュを共用してもよい。
【0170】
図24に、この場合のプロキシ(サーバ側プロキシ、クライアント側プロキシ)の構成例を示す。
【0171】
また、図25、クライアント側プロキシ140からサーバ側プロキシ130へリクエストメッセージを転送する際のクライアント側プロキシ140の処理手順の一例を示す。なお、この場合には、先に説明した図17の手順あるいは図18/図19の手順は不要である。
【0172】
また、図26に、クライアント側プロキシ140からサーバ側プロキシ130へリクエストメッセージを転送する際のサーバ側プロキシ130の処理手順の一例を示す。なお、この場合には、先に説明した図20の手順あるいは図21/図22の手順は不要である。
【0173】
このようにリクエストデータに対してもフィンガープリントで置き換えられるように実施すると、例えば、同じファイルを何度もサーバにアップロードする際ときには、2回目以降フィンガープリントを送るだけで済むので、ネットワークのトラフィックを軽減させることができる。
【0174】
なお、本実施形態では、クライアント側プロセスからサーバ側プロキシへ転送されるリクエストメッセージや、サーバ側プロキシからクライアント側プロセスへ転送されるリプライメッセージを対象とする場合について示してきたが、あるプロキシに、リクエストメッセージを送信する装置とリプライメッセージを送信する装置との両方、あるいはリクエストメッセージおよびリプライメッセージの両方を送信する装置が接続されている場合には、もちろん、クライアント側プロセスからサーバ側プロキシへ転送されるリクエストメッセージおよびリプライメッセージならびにサーバ側プロキシからクライアント側プロセスへ転送されるリクエストメッセージおよびリプライメッセージを対象とすることや、クライアント側プロセスからサーバ側プロキシへ転送されるリクエストメッセージおよびサーバ側プロキシからクライアント側プロセスへ転送されるリクエストメッセージのみ対象とすることなども可能である。
【0175】
また、これまでは、1つのメッセージに含まれるデータ全体をFP圧縮する対象(フィンガープリント・キャッシュに登録する対象)にしていたが、例えば、1つのメッセージに含まれるデータが所定の単位のデータの集合で構成される場合には、1つのメッセージに含まれる一部の単位データのみFP圧縮する対象(フィンガープリント・キャッシュに登録する対象)にする構成も可能である。
【0176】
例えば、図23では、PUTメソッドのリクエストメッセージの持つリクエストデータ全体を、フィンガープリント・キャッシュに入れる対象にしていた。ところが、WEBでは、例えばMIMEエンコードと呼ばれる方式で、複数のデータを一つのデータにまとめてネットワーク上をやり取りすることが多い。そこで、リクエストデータが例えばMIMEエンコーディングで複数のデータがまとめられていた場合、リクエストデータ全体およびそのMIMEエンコーディングを解いた個々のデータのすべて、あるいはそれらの中から所定の選択基準に基づいて選択したもののみを、FP圧縮の対象とし、その個々のデータごとに、フィンガープリントを求め、それを名前としてそれぞれフィンガープリント・キャッシュに登録するように実施することもできる。
【0177】
リクエストデータ全体およびそのMIMEエンコーディングを解いた個々のデータの中からフィンガープリント・キャッシュに入れるものを選択する基準としては、例えば、次のような基準あるいはそれらの組合せなどが考えられる。
・あらかじめ決められているサイズより大きなデータ
・あらかじめ決められているタイプを持つデータ
フィンガープリント・キャッシュに入れるべきデータの選択は、例えば、サーバ側プロキシとクライアント側プロキシの両方に同じ基準を持たせておいて、それぞれが判断して入れるように実施してもよいし、また、例えば、サーバ側プロキシにて選択したものを示す情報(例えば、MIMEエンコードされた複数のデータの並び中で、何番目を選んだかと、そのフィンガープリントの値の組を必要な個数)をリプライヘッダ等に入れて返し、その情報をもとに、クライアント側プロキシが指定されたデータをフィンガープリント・キャッシュに入れるように実施することもできる。また、例えば、サーバ側プロキシでフィンガープリント・キャッシュに入れたデータのフィンガープリントの値をリプライヘッダ等に入れてクライアント側プロキシに送ることで、クライアント側プロキシではフィンガープリントを計算する手間を省くことができる。
【0178】
もちろん、ここで述べたように、MIMEエンコードされたデータを分解して個々のデータをフィンガープリント・キャッシュに入れる方式は、リクエストデータに対してだけではなく、リプライデータに対しても同様に適用することができる。
【0179】
ところで、これまでは1つのサーバ側プロキシと1つのクライアント側プロキシとの間の1対1の通信に着目して説明してきたが、本発明の適用範囲はもちろんサーバ側プロキシとクライアント側プロキシとが1対1で通信するシステムには限定されるものではないく、サーバ側プロキシとクライアント側プロキシとが1対多で通信するシステム、サーバ側プロキシとクライアント側プロキシとが多対1で通信するシステム、あるいはサーバ側プロキシとクライアント側プロキシとが多対多で通信するシステムにも適用可能である。例えば、図27のように、複数のユーザオフィスに設置したクライアント側プロキシや、モバイルユーザが利用する個人用プロキシなどがサーバ側プロキシを共有して使用するように実施することも可能である。
【0180】
なお、以上の各機能は、ソフトウェアとして実現可能である。
また、本実施形態は、コンピュータに所定の手段を実行させるための(あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるための)プログラムとして実施することもでき、該プログラムを記録したコンピュータ読取り可能な記録媒体として実施することもできる。
【0181】
なお、この発明の実施の形態で例示した構成は一例であって、それ以外の構成を排除する趣旨のものではなく、例示した構成の一部を他のもので置き換えたり、例示した構成の一部を省いたり、例示した構成に別の機能あるいは要素を付加したり、それらを組み合わせたりすることなどによって得られる別の構成も可能である。また、例示した構成と論理的に等価な別の構成、例示した構成と論理的に等価な部分を含む別の構成、例示した構成の要部と論理的に等価な別の構成なども可能である。また、例示した構成と同一もしくは類似の目的を達成する別の構成、例示した構成と同一もしくは類似の効果を奏する別の構成なども可能である。
また、この発明の実施の形態で例示した各種構成部分についての各種バリエーションは、適宜組み合わせて実施することが可能である。
また、この発明の実施の形態は、個別装置としての発明、関連を持つ2以上の装置についての発明、システム全体としての発明、個別装置内部の構成部分についての発明、またはそれらに対応する方法の発明等、種々の観点、段階、概念またはカテゴリに係る発明を包含・内在するものである。
従って、この発明の実施の形態に開示した内容からは、例示した構成に限定されることなく発明を抽出することができるものである。
【0182】
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
【0183】
【発明の効果】
本発明によれば、サーバ側プロキシ装置とクライアント側プロキシ装置との間で、データとそのフィンガープリントとの対応を保持し、この対応を保持しているデータについては、データを転送する代わりに対応するフィンガープリントを転送することで、サーバ側プロキシ装置とクライアント側プロキシ装置との間の転送データ量を削減することができる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るコンピュータ・ネットワーク・システムの構成例を示す図
【図2】同実施形態に係るコンピュータ・ネットワーク・システムの他の構成例を示す図
【図3】同実施形態に係るコンピュータ・ネットワーク・システムのさらに他の構成例を示す図
【図4】同実施形態で使用するフィンガープリントについて説明するための図
【図5】同実施形態で使用するフィンガープリント・キャッシュについて説明するための図
【図6】同実施形態で使用するメッセージ・フォーマットの一例を示す図
【図7】同実施形態で使用するメッセージ・フォーマットの他の例を示す図
【図8】同実施形態で使用するメッセージ・フォーマットのさらに他の例を示す図
【図9】同実施形態で使用するメッセージ・フォーマットのさらに他の例を示す図
【図10】同実施形態で使用するメッセージ・フォーマットのさらに他の例を示す図
【図11】同実施形態に係るサーバ側プロキシの構成例を示す図
【図12】同実施形態に係るクライアント側プロキシの構成例を示す図
【図13】同実施形態に係るサーバ側プロキシの手順例を示すフローチャート
【図14】同実施形態に係るクライアント側プロキシの手順例を示すフローチャート同実施形態に係るクライアント側プロキシの手順例を示すフローチャート
【図15】同実施形態に係るサーバ側プロキシとクライアント側プロキシとの間のデータ転送について説明するための図
【図16】同実施形態に係るサーバ側プロキシとクライアント側プロキシとの間のデータ転送について説明するための図
【図17】同実施形態に係るクライアント側プロキシの他の手順例を示すフローチャート
【図18】同実施形態に係るクライアント側プロキシのさらに他の手順例を示すフローチャート
【図19】同実施形態に係るクライアント側プロキシのさらに他の手順例を示すフローチャート
【図20】同実施形態に係るサーバ側プロキシの他の手順例を示すフローチャート
【図21】同実施形態に係るサーバ側プロキシのさらに他の手順例を示すフローチャート
【図22】同実施形態に係るサーバ側プロキシのさらに他の手順例を示すフローチャート
【図23】同実施形態に係るサーバ側プロキシとクライアント側プロキシとの間のデータ転送について説明するための図
【図24】同実施形態にプロキシの他の構成例を示す図
【図25】同実施形態に係るクライアント側プロキシのさらに他の手順例を示すフローチャート
【図26】同実施形態に係るサーバ側プロキシのさらに他の手順例を示すフローチャート
【図27】同実施形態に係るコンピュータ・ネットワーク・システムのさらに他の構成例を示す図
【図28】従来のコンピュータ・ネットワーク・システムについて説明するための図
【図29】図6(a)のフォーマットのメッセージの具体例を示す図
【図30】図6(b)のフォーマットのメッセージの具体例を示す図
【図31】図7のフォーマットのメッセージの具体例を示す図
【図32】図8(a)のフォーマットのメッセージの具体例を示す図
【図33】図8(b)のフォーマットのメッセージの具体例を示す図
【図34】図9(a)のフォーマットのメッセージの具体例を示す図
【図35】図9(b)のフォーマットのメッセージの具体例を示す図
【図36】図10のフォーマットのメッセージの具体例を示す図
【符号の説明】
102…ASPサーバセンター
104…ユーザオフィス
112…ASPサーバセンター内LAN
114…WAN
116…ユーザオフィス内LAN
120…サーバ装置
130…サーバ側プロキシ装置
140…クライアント側プロキシ装置
150…クライアント装置
131,141…受信部
132,142…処理部
133,143…送信部
134,144…フィンガープリント・キャッシュ
1321,1421…FP圧縮判定部
1322,1422…フィンガープリント・キャッシュ管理部
1323…FP圧縮処理部
1423…FP解凍処理部
1325,1425…FP解凍・解凍処理部
Claims (14)
- サーバ装置から送信されたリプライメッセージを受信し、該リプライメッセージをその宛先となるクライアント装置に通ずるクライアント側プロキシ装置へ送信するとともに、該クライアント装置から送信されたリクエストメッセージを該クライアント側プロキシ装置を介して受信し、該リクエストメッセージをその宛先となる該サーバ装置へ送信するサーバ側プロキシ装置であって、
過去に前記クライアント側プロキシ装置へ送信したリプライメッセージのメッセージボディに搭載されたデータと、該データをもとに生成したフィンガープリントとを対応付けて保持する保持手段と、
前記サーバ装置から送信されたリプライメッセージを受信した際に、該受信したリプライメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが前記保持手段に保持されている場合には、該データの代わりに該フィンガープリントを前記リプライメッセージのメッセージボディに搭載して送信する処理を行い、該受信したリプライメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが前記保持手段に保持されていない場合には、該データと該フィンガープリントとを対応付けて前記保持手段に保持する処理を行うとともに、該リプライメッセージを送信する処理を行う第1の処理手段と、
前記クライアント側プロキシ装置から受信したリクエストメッセージを前記サーバ装置へ送信するにあたり、該受信したリクエストメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが前記保持手段に保持されていない場合には、該受信したリクエストメッセージのメッセージボディに搭載されたデータと該フィンガープリントとを対応付けて前記保持手段に保持する処理を行う第2の処理手段とを備えたことを特徴とするサーバ側プロキシ装置。 - サーバ装置から送信されたリプライメッセージをサーバ側プロキシ装置を介して受信し、該リプライメッセージをその宛先となるクライアント装置へ送信するとともに、該クライアント装置から送信されたリクエストメッセージを受信し、該リクエストメッセージをその宛先となるサーバ装置に通ずるサーバ側プロキシ装置へ送信するクライアント側プロキシ装置であって、
前記サーバ側プロキシ装置は、
前記サーバ装置から送信されたリプライメッセージを受信した際に、該受信したリプライメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが第1の保持手段に保持されている場合には、該データの代わりに該フィンガープリントを前記リプライメッセージのメッセージボディに搭載して送信する処理を行い、該受信したリプライメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが該第1の保持手段に保持されていない場合には、該データと該フィンガープリントとを対応付けて該第1の保持手段に保持する処理を行うとともに、該リプライメッセージを送信する処理を行う第1の処理手段と、
前記クライアント側プロキシ装置から受信したリクエストメッセージを前記サーバ装置へ送信するにあたり、該受信したリクエストメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが前記第1の保持手段に保持されていない場合には、該受信したリクエストメッセージのメッセージボディに搭載されたデータと該フィンガープリントとを対応付けて該第1の保持手段に保持する処理を行う第2の処理手段とを有し、
前記クライアント側プロキシ装置は、
過去に前記サーバ側プロキシ装置から受信したリプライメッセージのメッセージボディに搭載されたデータと、該データをもとに生成したフィンガープリントとを対応付けて保持する第2の保持手段と、
前記サーバ側プロキシ装置からフィンガープリントをメッセージボディに搭載したリプライメッセージを受信した場合には、前記第2の保持手段から該フィンガープリントに対応付けて保持されているデータを取得し、該取得したデータを該フィンガープリントの代わりにメッセージボディに搭載したリプライメッセージを送信する処理を行い、前記サーバ側プロキシ装置からデータをメッセージボディに搭載したリプライメッセージを受信した場合には、該データと該データのフィンガープリントとを対応付けて前記第2の保持手段に保持する処理を行うとともに、該データをメッセージボディに搭載したリプライメッセージを送信する処理を行う第3の処理手段と、
前記クライアント装置から受信したリクエストメッセージを前記サーバ側プロキシ装置へ送信するにあたり、該受信したリクエストメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが前記第2の保持手段に保持されていない場合には、該データと該フィンガープリントとを対応付けて前記第2の保持手段に保持する処理を行う第4の処理手段とを備えたことを特徴とするクライアント側プロキシ装置。 - 前記データが、複数の単位データから構成される場合に、該複数の単位データ毎に前記フィンガープリントを生成して前記保持手段への保持を行うことを特徴とする請求項1に記載のサーバ側プロキシ装置。
- 前記データは、MIMEエンコーディングされたものであり、
前記単位データは、MIMEエンコーディングを解いて得られたものであることを特徴とする請求項3に記載のサーバ側プロキシ装置。 - 前記データが、複数の単位データから構成される場合に、該複数の単位データ毎に前記フィンガープリントを生成して前記第2の保持手段への保持を行うことを特徴とする請求項2に記載のクライアント側プロキシ装置。
- 前記データは、MIMEエンコーディングされたものであり、
前記単位データは、MIMEエンコーディングを解いて得られたものであることを特徴とする請求項5に記載のクライアント側プロキシ装置。 - 前記第1の処理手段は、前記受信したリプライメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが前記保持手段に保持されていない場合に該リプライメッセージを送信する際には、該データのフィンガープリントをも該データに併せて該リプライメッセージのメッセージボディに搭載して送信することを特徴とする請求項1に記載のサーバ側プロキシ装置。
- 前記第3の処理手段は、前記サーバ側プロキシ装置から前記データとともに該データのフィンガープリントがメッセージボディに搭載されたリプライメッセージを受信した場合に、該データと該フィンガープリントとを対応付けて前記第2の保持手段に保持することを特徴とする請求項2に記載のクライアント側プロキシ装置。
- 前記第1の処理手段は、前記受信したリプライメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが前記保持手段に保持されていない場合であってかつ該データがNullでない場合に、該フィンガープリントと該データとを関連付けて前記保持手段に追加しかつ該リプライメッセージを前記クライアント装置宛として前記クライアント側プロキシ装置へ送信することを特徴とする請求項1に記載のサーバ側プロキシ装置。
- 前記第4の処理手段は、前記受信したリクエストメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが前記第2の保持手段に保持されていない場合であってかつ該データがNullでない場合に、該フィンガープリントと該データとを関連付けて前記第2の保持手段に追加しかつ該リクエストメッセージを前記サーバ側プロキシ装置へ送信することを特徴とする請求項2に記載のクライアント側プロキシ装置。
- 前記サーバ側プロキシ装置は、ローカルエリアネットワークを介して前記サーバ装置と接続されたものであることを特徴とする請求項1に記載のサーバ側プロキシ装置。
- 前記クライアント側プロキシ装置は、ローカルエリアネットワークを介して前記クライアント装置と接続されたものであることを特徴とする請求項2に記載のクライアント側プロキシ装置。
- サーバ装置から送信されたリプライメッセージを受信し、該リプライメッセージをその宛先となるクライアント装置に通ずるクライアント側プロキシ装置へ送信するとともに、該クライアント装置から送信されたリクエストメッセージを該クライアント側プロキシ装置を介して受信し、該リクエストメッセージをその宛先となる該サーバ装置へ送信するサーバ側プロキシ装置としてコンピュータを機能させるためのプログラムであって、
過去に前記クライアント側プロキシ装置へ送信したリプライメッセージのメッセージボディに搭載されたデータと、該データをもとに生成したフィンガープリントとを対応付けて記憶装置に保持する機能と、
前記サーバ装置から送信されたリプライメッセージを受信した際に、該受信したリプライメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが前記記憶装置に保持されている場合には、該データの代わりに該フィンガープリントを前記リプライメッセージのメッセージボディに搭載して送信する処理を行い、該受信したリプライメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが前記記憶装置に保持されていない場合には、該データと該フィンガープリントとを対応付けて前記記憶装置に保持する処理を行うとともに、該リプライメッセージを送信する処理を行う機能と、
前記クライアント側プロキシ装置から受信したリクエストメッセージを前記サーバ装置へ送信するにあたり、該受信したリクエストメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが前記記憶装置に保持されていない場合には、該受信したリクエストメッセージのメッセージボディに搭載されたデータと該フィンガープリントとを対応付けて前記記憶装置に保持する処理を行う機能とをコンピュータに実現させるためのプログラム。 - サーバ装置から送信されたリプライメッセージをサーバ側プロキシ装置を介して受信し、該リプライメッセージをその宛先となるクライアント装置へ送信するとともに、該クライアント装置から送信されたリクエストメッセージを受信し、該リクエストメッセージをその宛先となるサーバ装置に通ずるサーバ側プロキシ装置へ送信するクライアント側プロキシ装置としてコンピュータを機能させるためのプログラムであって、
前記サーバ側プロキシ装置は、
前記サーバ装置から送信されたリプライメッセージを受信した際に、該受信したリプライメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが第1の記憶装置に保持されている場合には、該データの代わりに該フィンガープリントを前記リプライメッセージのメッセージボディに搭載して送信する処理を行い、該受信したリプライメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが該第1の記憶装置に保持されていない場合には、該データと該フィンガープリントとを対応付けて該第1の記憶装置に保持する処理を行うとともに、該リプライメッセージを送信する処理を行う第1の処理手段と、
前記クライアント側プロキシ装置から受信したリクエストメッセージを前記サーバ装置へ送信するにあたり、該受信したリクエストメッセージのメッセージボディに搭載された データをもとに生成したフィンガープリントが前記第1の記憶装置に保持されていない場合には、該受信したリクエストメッセージのメッセージボディに搭載されたデータと該フィンガープリントとを対応付けて該第1の記憶装置に保持する処理を行う第2の処理手段とを有し、
前記プログラムは、
過去に前記サーバ側プロキシ装置から受信したリプライメッセージのメッセージボディに搭載されたデータと、該データをもとに生成したフィンガープリントとを対応付けて第2の記憶装置に保持する機能と、
前記サーバ側プロキシ装置からフィンガープリントをメッセージボディに搭載したリプライメッセージを受信した場合には、前記第2の記憶装置から該フィンガープリントに対応付けて保持されているデータを取得し、該取得したデータを該フィンガープリントの代わりにメッセージボディに搭載したリプライメッセージを送信する処理を行い、前記サーバ側プロキシ装置からデータをメッセージボディに搭載したリプライメッセージを受信した場合には、該データと該データのフィンガープリントとを対応付けて前記第2の記憶装置に保持する処理を行うとともに、該データをメッセージボディに搭載したリプライメッセージを送信する処理を行う機能と、
前記クライアント装置から受信したリクエストメッセージを前記サーバ側プロキシ装置へ送信するにあたり、該受信したリクエストメッセージのメッセージボディに搭載されたデータをもとに生成したフィンガープリントが前記第2の記憶装置に保持されていない場合には、該データと該フィンガープリントとを対応付けて前記第2の記憶装置に保持する処理を行う機能とをコンピュータに実現させるためのものであることを特徴とするプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001069285A JP3977601B2 (ja) | 2001-03-12 | 2001-03-12 | サーバ側プロキシ装置、クライアント側プロキシ装置及びプログラム |
US10/092,540 US7054912B2 (en) | 2001-03-12 | 2002-03-08 | Data transfer scheme using caching technique for reducing network load |
US11/353,935 US7636765B2 (en) | 2001-03-12 | 2006-02-15 | Data transfer scheme using caching technique for reducing network load |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001069285A JP3977601B2 (ja) | 2001-03-12 | 2001-03-12 | サーバ側プロキシ装置、クライアント側プロキシ装置及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002268936A JP2002268936A (ja) | 2002-09-20 |
JP3977601B2 true JP3977601B2 (ja) | 2007-09-19 |
Family
ID=18927340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001069285A Expired - Fee Related JP3977601B2 (ja) | 2001-03-12 | 2001-03-12 | サーバ側プロキシ装置、クライアント側プロキシ装置及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3977601B2 (ja) |
-
2001
- 2001-03-12 JP JP2001069285A patent/JP3977601B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002268936A (ja) | 2002-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3990115B2 (ja) | サーバ側プロキシ装置及びプログラム | |
US7636765B2 (en) | Data transfer scheme using caching technique for reducing network load | |
US8024484B2 (en) | Caching signatures | |
US7383348B2 (en) | Data transfer scheme using caching technique for reducing network load | |
US20030061275A1 (en) | Method and system for remotely managing persistent state data | |
JP3984086B2 (ja) | キャッシュサーバ、データ転送装置及びプログラム | |
CN105812351A (zh) | 实现会话共享的方法和系统 | |
JP3848209B2 (ja) | データ転送装置、データ転送方法及びプログラム | |
JP4031516B2 (ja) | サーバ側プロキシ装置、クライアント側プロキシ装置、データ転送方法及びプログラム | |
JP3983987B2 (ja) | サーバ側プロキシ装置、データ転送方法及びプログラム | |
JP4053269B2 (ja) | データ転送装置およびデータ転送方法 | |
JP3943867B2 (ja) | サーバ側プロキシ、データ転送方法及びプログラム | |
JP3943868B2 (ja) | サーバ側プロキシ、データ転送方法及びプログラム | |
JP3913508B2 (ja) | データ転送装置およびデータ転送方法 | |
JP3977601B2 (ja) | サーバ側プロキシ装置、クライアント側プロキシ装置及びプログラム | |
JP2003108464A (ja) | データ転送装置およびデータ転送方法 | |
JP4041157B2 (ja) | クライアント側プロキシ装置、データ転送方法及びプログラム | |
JP4157585B2 (ja) | サーバ側プロキシ装置、クライアント側プロキシ装置、データ転送方法及びプログラム | |
JP3977651B2 (ja) | データ転送方法、サーバ側プロキシ装置、クライアント側プロキシ装置及びプログラム | |
JP4300220B2 (ja) | データ転送装置およびデータ転送方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061219 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070219 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070410 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070525 |
|
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: 20070619 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070621 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100629 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110629 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120629 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120629 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130629 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |