JP3943867B2 - Server-side proxy, data transfer method and program - Google Patents

Server-side proxy, data transfer method and program Download PDF

Info

Publication number
JP3943867B2
JP3943867B2 JP2001179015A JP2001179015A JP3943867B2 JP 3943867 B2 JP3943867 B2 JP 3943867B2 JP 2001179015 A JP2001179015 A JP 2001179015A JP 2001179015 A JP2001179015 A JP 2001179015A JP 3943867 B2 JP3943867 B2 JP 3943867B2
Authority
JP
Japan
Prior art keywords
client
side proxy
fingerprint
server
data
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
JP2001179015A
Other languages
Japanese (ja)
Other versions
JP2002373107A (en
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 JP2001179015A priority Critical patent/JP3943867B2/en
Priority to US10/167,413 priority patent/US7383348B2/en
Publication of JP2002373107A publication Critical patent/JP2002373107A/en
Application granted granted Critical
Publication of JP3943867B2 publication Critical patent/JP3943867B2/en
Priority to US12/058,820 priority patent/US7480731B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、他の装置のためにデータ転送を行うサーバ側プロキシ、データ転送方法及びプログラムに関する。
【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】
【課題を解決するための手段】
本発明は、複数のクライアント装置それぞれからサーバ装置宛に送信され、複数のクライアント装置それぞれの前記サーバ装置へのアクセスの代理を担当するクライアント側プロキシそれぞれに中継された、複数のリクエストデータを受信して前記サーバ装置へ転送し、前記複数のリクエストデータそれぞれへの返答として前記サーバ装置から前記クライアント装置それぞれ宛に送信されるリプライデータそれぞれを、リプライデータそれぞれの宛先たるクライアント装置の代理であるクライアント側プロキシそれぞれへ転送するサーバ側プロキシであって、複数のクライアント側プロキシそれぞれから転送されるリクエストデータそれぞれへの返答であるリプライデータそれぞれ、前記サーバ装置から受信し、さらに、前記複数のクライアント側プロキシのうちの或クライアント側プロキシから転送された或リクエストデータへの返答である或リプライデータをも受信する受信手段と、前記リプライデータそれぞれのフィンガープリントを生成し、さらに前記或リプライデータのフィンガープリントである或フィンガープリントを生成するフィンガープリント生成手段と、生成した前記フィンガープリントそれぞれを、それぞれの元であった前記リプライデータそれぞれに関連付けて、前記リプライデータそれぞれの宛先たるクライアント装置それぞれの代理であるクライアント側プロキシ毎に、クライアント側プロキシ毎フィンガープリント・キャッシュとして保持する保持手段と、前記或フィンガープリントが、前記或リプライデータの宛先たる或クライアント装置の代理である或クライアント側プロキシに対応するクライアント側プロキシ毎フィンガープリント・キャッシュに保持されているか否か判定する判定手段と、前記或フィンガープリントが前記或クライアント側プロキシに対応するクライアント側プロキシ毎フィンガープリント・キャッシュに保持されていると前記判定手段が判定した場合に、前記或リプライデータの代わりに前記或フィンガープリント前記或クライアント装置宛として前記或クライアント側プロキシへ送信し、前記或フィンガープリントが前記或クライアント側プロキシに対応するクライアント側プロキシ毎フィンガープリント・キャッシュに保持されていないと前記判定手段が判定した場合に、前記或フィンガープリントと前記或リプライデータとを関連付けて前記或クライアント側プロキシに対応する前記クライアント側プロキシ毎フィンガープリント・キャッシュに追加しかつ前記或リプライデータを前記或クライアント装置宛として前記或クライアント側プロキシへ送信する送信手段とを備えることを特徴とする。
【0021】
なお、装置に係る本発明は方法に係る発明としても成立し、方法に係る本発明は装置に係る発明としても成立する。
また、装置または方法に係る本発明は、コンピュータに当該発明に相当する手順を実行させるための(あるいはコンピュータを当該発明に相当する手段として機能させるための、あるいはコンピュータに当該発明に相当する機能を実現させるための)プログラムとしても成立し、該プログラムを記録したコンピュータ読取り可能な記録媒体としても成立する。
【0022】
本発明によれば、サーバ装置に設けられたサーバ側プロキシは、クライアント装置に設けられたクライアント側プロキシから該クライアント装置が該サーバ装置へ宛てて発したリクエストデータを受信してサーバ装置へ転送した後に、該サーバ装置が該クライアント装置へ宛てて発した該リクエストデータへの返答であるリプライデータを受信してクライアント側プロキシへ転送するにあたって、受信したリプライデータから生成したフィンガープリント、該リプライデータに関連付けて、該リプライデータの宛先となるクライアント装置に係るクライアント側プロキシに対応するクライアント側プロキシ毎フィンガープリント・キャッシュに保持しておくことによって、サーバ装置からリプライデータを受信した場合に、そのフィンガープリントが該リプライデータの宛先となるクライアント装置に係るクライアント側プロキシに対応するクライアント側プロキシ毎フィンガープリント・キャッシュに保持されているリプライデータについては、該リプライデータを転送する代わりに対応するフィンガープリントを転送することで、それらサーバ側プロキシとクライアント側プロキシとの間の転送データ量を削減することができる。また、サーバ側プロキシクライアント側プロキシとが1対多で接続される際に、サーバ側プロキシは、クライアント側プロキシごとに、リプライデータとそのフィンガープリントとを関連付けたクライアント側プロキシ毎フィンガープリント・キャッシュを保持しているので、あるリプライデータについて、その宛先となるクライアント装置に係るクライアント側プロキシに対応するクライアント側プロキシ毎フィンガープリント・キャッシュにリプライデータとそのフィンガープリントとの対応が保持されていない場合に、そのクライアント側プロキシ対して、当該あるリプライデータの代わりにそのフィンガープリントを転送してしまうことを回避することができる。
【0023】
また、本発明によれば、例えば、GETメソッドのリプライメッセージがプライベートデータであっても、これをフィンガープリントにより圧縮してクライアント側プロキシとサーバ側プロキシとの間を転送することができるようになる。また、例えば、GETメソッドのリプライメッセージが動的データであっても、内容が同じデータなら、これをフィンガープリントにより圧縮してクライアント側プロキシとサーバ側プロキシとの間を転送することができるようになる。また、例えば、POSTメソッドであっても、結果が同じデータなら、これをフィンガープリントにより圧縮してクライアント側プロキシとサーバ側プロキシとの間を転送することができるようになる。
【0024】
【発明の実施の形態】
以下、図面を参照しながら発明の実施の形態を説明する。
【0025】
以下では、WANがインターネットであり、クライアントはユーザオフィスLANに接続されたものであり、HTTPプロトコルが使用されるような場合を例にとって説明するが、もちろん、本発明は、WANがインターネット以外のものであっても、クライアントがオフィス以外の例えば家庭内LAN等に設置されたものであっても、HTTPプロトコル以外のプロトコルが使用されるものであっても適用可能である。
【0026】
図22に本発明を適用するコンピュータ・ネットワーク・システムの基本的な構成例を示す。この構成例では、ASPサーバセンター2内のローカルエリアネットワーク(LAN)12と、ユーザオフィス4内のローカルエリアネットワーク(LAN)16との間が、インターネットや専用回線などの広域ネットワーク(WAN)14を介して接続されており、ASPサーバセンター2内のサーバ20と、ユーザオフィス4内のクライアント50とが、LAN12・WAN14・LAN16を介して通信可能になっている。ASPサーバセンター内LANには1または複数のサーバが接続され、ユーザオフィス内LANには1または複数のクライアントが接続される。
【0027】
WEBベースのASPは、サーバセンター2に設置したサーバ20から、WAN14を介して、様々なアプリケーションプログラムによるサービスを提供し、ユーザはオフィス4に設置されたクライアント上のWEBブラウザ等を使ってそれらのサービスにアクセスする。
【0028】
なお、ASPサーバセンター2や、ユーザオフィス4は、複数存在し得る。
【0029】
このような利用形態においては、ユーザオフィス内LAN16とサーバセンター内LAN12とをつなぐネットワーク、特にインターネットなどの広域ネットワーク14の実効的な通信容量(バンド幅)は、サーバセンター内LAN12やユーザオフィス内LAN16よりも低く、そこが性能上のボトルネックになって通信遅延が発生し、アプリケーションの応答性能が低下するという問題が発生する。
【0030】
そこで、本実施形態では、図1に示すように、サーバセンター内LAN12とユーザオフィス内LAN16とをつなぐ広域ネットワーク14の両端に、サーバ側プロキシ30およびクライアント側プロキシ40という2つのモジュールを設置し、それらの間で後述するフィンガープリント圧縮(FP圧縮)を行って通信データ量を低減することで、広域ネットワークのボトルネックを解消する。
【0031】
なお、ここでは、1つのサーバ側プロキシ30と複数のクライアント側プロキシ40との間の通信にFP圧縮を適用する場合を考えている(1つのクライアント側プロキシ40は(ある時点において)1つのサーバ側プロキシ30とFP圧縮を適用した通信を行う場合を考える)。
【0032】
本実施形態のサーバ20、サーバ側プロキシ30、クライアント側プロキシ40、クライアント50は、いずれも、計算機上でソフトウェア(サーバ・プログラム、サーバ側プロキシ・プログラム、クライアント側プロキシ・プログラム、クライアント・プログラム)を動作させる形で実現することができる。この場合に、必要に応じて計算機に所望の機能を有するOSやドライバソフト、パケット通信用ソフト、暗号ソフト等といったソフトウェア、あるいは通信インタフェース装置や外部記憶装置や入出力装置等といったハードウェアが搭載あるいは接続される。また、この場合に、ユーザあるいは管理者からの情報の入力やユーザへの情報の呈示等のために、グラフィカル・ユーザ・インタフェース(GUI)を用いると好ましい。
【0033】
サービスを利用するためにユーザが使用するクライアント50上では、その目的に応じて例えばWEBブラウザ等のプログラムが動作する。ユーザは、例えば、WEBブラウザからインターネットを介し情報転送あるいは注文受付等の所望のサービスを提供するサーバにリクエストメッセージを出し、リプライメッセージを受けることによって、またはこれを適宜繰り返すことによって、サービスを利用する。もちろん、WEBブラウザ等の汎用のソフトウェアではなく、特定のサービスを利用するための専用のソフトウェアなどの他のものが用いられても構わない。また、クライアントは、汎用の計算機ではなく、例えばインターネット機能を有する携帯電話端末等でもよい。
【0034】
サーバ20上では、所定のサーバ・プログラムが動作し、クライアント50のユーザに対して、当該サーバ・サイトに固有のサービスを提供する。
【0035】
サーバ側プロキシ30は、図1のように、サーバセンター内LAN12とWAN14との両方に接続し、トランスペアレント・プロキシとして動作するように設置して実施することができる。また、図2のように、サーバセンター内LAN12上に設置して実施することもできる。また、図3のように、サーバ側プロキシ30の機能をサーバ20に内蔵するように実施することもできる。
【0036】
同様に、クライアント側プロキシ40は、図1のように、ユーザオフィス内LAN16とWAN14との両方に接続し、トランスペアレント・プロキシとして動作するように設置して実施することができる。また、図2のように、ユーザオフィス内LAN16上に設置して実施することもできる。また、図3のように、クライアント側プロキシ40の機能をクライアント50上で動作するブラウザ等に内蔵するように実施することもできる。あるいは、ブラウザ等の動作するクライアント50上に、個人用のクライアント側プロキシ40を動作させるように実施することもできる。
【0037】
なお、各サーバ側プロキシ30及び各クライアント側プロキシ40は、例えば図1〜図3などのように、すべて同じ形態のものであってもよい。また、例えば、あるサーバ側プロキシ30は図1の形態で、あるサーバ側プロキシ30は図2の形態で、あるクライアント側プロキシ40は図1の形態で、あるクライアント側プロキシ40は図3の形態で、というように、異なる形態のものが混在していてもよい。
【0038】
また、クライアント側プロキシ40は、モバイル端末もしくはモバイル計算機等に内蔵されたものであってもよい。図4に、この場合の一例を示す。
【0039】
さて、本実施形態のサーバ側プロキシ30およびクライアント側プロキシ40は、いずれも、フィンガープリント・キャッシュ(FPキャッシュ)と呼ぶキャッシュ機構を持つ。フィンガープリント・キャッシュは、フィンガープリント(FP)と呼ぶ名前によって、HTTPプロトコルでやりとりされるデータを記録・管理する。
【0040】
フィンガープリントは、図5に例示するように、HTTPプロトコルでやり取りされるデータ(図5の例ではコンテンツ)の内容から、あらかじめ決められた計算方法(図5の例ではハッシュ関数)で決定される、短い数値である。この数値は、可変長でもよいが、処理の容易さの観点では、固定長の数値の方が扱いやすい。
【0041】
フィンガープリントを計算する方法としては、良く知られている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に対してそれぞれ計算したハッシュ値が同じになる場合があるが、その確率は実用上無視できるくらいに小さい)。
【0042】
図6に示すように、サーバ側プロキシ30やクライアント側プロキシ40の持つフィンガープリント・キャッシュ(図中の60)は、過去にHTTPプロトコルでやり取りされたデータ本体(図中の61)を、そのデータから計算して求めたフィンガープリントの値(図中の62)を名前として、記録・管理している。なお、詳しくは後述するように、サーバ側プロキシ30は、FP圧縮を適用する通信を行う相手となるクライアント側プロキシ40毎に、フィンガープリントとデータとの対応を管理する。
【0043】
例えば、HTTPプロトコルでサーバ側プロキシ30からクライアント側プロキシ40へデータを転送するときに、サーバ側プロキシ30は、当該データのフィンガープリントを計算し、そのフィンガープリントに対応するデータが、当該クライアント側プロキシ40に対応するフィンガープリント・キャッシュに入っていれば、当該データ(と同じ内容のデータ)は当該クライアント側プロキシ40に対して過去に転送したことがあるので、当該データを転送せずに、対応するフィンガープリントの値を転送する。フィンガープリントを受け取ったクライアント側プロキシ40は、当該フィンガープリントの値に対応するデータをフィンガープリント・キャッシュから取り出すことで、転送すべきデータを再現することができる。このような方式(すなわち、データ圧縮→データ転送→データ解凍)により、過去に送ったものと同じデータならばフィンガープリントの値を送るだけでよいので、ネットワークを流れるデータ量を大幅に削減することができる。
【0044】
なお、サーバ側プロキシ30は、例えば、所定の通信規約に従って、サーバ20から受信したデータを転送すべきクライアント側プロキシ40を特定することができる。
【0045】
また、クライアント側プロキシ40は、登録時に、サーバ側プロキシ30からのメッセージ内にフィンガープリントが記述されてあって且つ該記述されているフィンガープリントを使用する構成と、サーバ側プロキシ30からのメッセージ内にフィンガープリントが記述されてなく且つ自身でフィンガープリントを計算する構成と、サーバ側プロキシ30からのメッセージ内にフィンガープリントが記述されてあって且つ自身であらためてフィンガープリントを計算する構成とがある。
【0046】
説明上、サーバ側プロキシ30とクライアント側プロキシ40との間でのデータ転送にあたり、フィンガープリント・キャッシュを利用してメッセージ・ボディーのデータをフィンガープリントに置き換えて転送情報量を圧縮することを、フィンガープリント圧縮(FP圧縮)と呼ぶものとする。
【0047】
なお、サーバ側プロキシ30とクライアント側プロキシ40との間において、すべてのメッセージをFP圧縮を適用する対象(すなわち、フィンガープリント・キャッシュを利用してデータをフィンガープリントに置き換えるための処理を行う対象)としてもよいが、例えばフィンガープリント・キャッシュの効果が期待できないものなどに対する適用を除外するために、予め定められた条件を満たすメッセージについては、これをFP圧縮の適用対象外とする(常にFP圧縮しないで転送する)ようにしてもよい。
この場合の予め定められた条件とは、例えば、メッセージ・ヘッダに予め定められた情報が記述されていることである。具体的には、例えば、メッセージ・ヘッダにGETメソッドを示す情報およびリクエストを示す情報が記述されていることである。また、予め定められた条件の他の例としては、転送されるデータが空(null)あるいは非常に短いサイズであることである。
もちろん、それらの他にも種々のバリエーションがある。また、複数の条件を組み合わせて使用するようにしてもよい。
なお、このようなFP圧縮の適用対象に関する設定内容は、例えば、システム全体で同一にする方法や、サーバ側プロキシ30とクライアント側プロキシ40との対ごとに取り決める方法などがある。また、後者の場合には、予め設定しておく方法や、セッション毎に設定する方法などがある。
【0048】
次に、図7〜図11を参照しながら、サーバ側プロキシ30とクライアント側プロキシ40との間でデータ転送する際の(FP圧縮の適用対象のメッセージについての)プロキシ間メッセージ・フォーマットについて説明する。
【0049】
なお、FP圧縮の適用対象外のメッセージは、FP圧縮については、何もせずにそのままの(FP圧縮側(送信側)のプロキシが受信した際の)メッセージ・フォーマットでプロキシ間を転送して構わない。あるいは、FP圧縮側(送信側)のプロキシが、例えばそのメッセージ・ヘッダに当該メッセージがFP圧縮の適用対象外を識別可能とする情報を持つようにして転送することも可能である。
【0050】
さて、サーバ側プロキシ30とクライアント側プロキシ40との間でデータ転送する場合、FP圧縮の適用対象のメッセージには、データがFP圧縮されてフィンガープリントに置き換えられたメッセージ(圧縮時のメッセージ)と、FP圧縮されおらず、データが搭載されているメッセージ(非圧縮時のメッセージ)とがある。
【0051】
非圧縮時のメッセージ・フォーマットは、メッセージに含まれるデータが、その転送先となるクライアント側プロキシ40に対応するサーバ側プロキシ30のフィンガープリント・キャッシュに登録されていない場合に使用される。一方、圧縮時のメッセージ・フォーマットは、メッセージに含まれるデータが、その転送先となるクライアント側プロキシ40に対応するサーバ側プロキシ30のフィンガープリント・キャッシュに登録されている場合に使用される。
【0052】
解凍側(受信側)では、非圧縮時のフォーマットのメッセージを受信したことを契機として、当該データについてフィンガープリント・キャッシュへの登録を行うことができる。
【0053】
図7に、メッセージ・フォーマットの一例を示す。(a)は非圧縮時のメッセージであり、(b)は圧縮時のメッセージである。
【0054】
(a)ではメッセージ・ボディーにデータが載せられ、(b)ではメッセージ・ボディーにデータの代わりにフィンガープリント(FP)が載せられる。また、この例では、メッセージ・ヘッダに、FP圧縮の有無を識別可能とする識別情報が(圧縮側のプロキシにおいて)記述され、この識別情報に基づいて(解凍側のプロキシにおいて)FP圧縮の有無を識別する(例えば、0ならば圧縮なし、1ならば圧縮あり)。なお、識別情報は、プロキシ間で使用される特別のものであってもよいし、もともと通常のHTTPメッセージ・ヘッダに存在するフィールドを利用あるいは併用したものであってもよい。
【0055】
なお、非圧縮時には、図7(a)の例では、メッセージにフィンガープリントを含ませなかったが、メッセージ・ボディーにデータに加えてフィンガープリントを含ませるようにしてもよいし、または図8に示すように、メッセージ・ヘッダにフィンガープリントを含ませるようにしてもよい。このようにすれば、解凍側で当該データについてフィンガープリント・キャッシュの登録を行う際に、該フィンガープリントを利用することによって、あらためて当該データからフィンガープリントを求める手間が省ける。
【0056】
なお、FP圧縮の適用対象外のメッセージが存在し得る場合には、解凍側(受信側)では、メッセージ・ヘッダに上記の識別情報が含まれるか否かで、FP圧縮の適用対象のメッセージか適用対象外のメッセージかを判断することもできる。また、FP圧縮の適用対象外のメッセージのヘッダにも識別情報を設け、該識別情報によって3種類のメッセージを識別するようにしてもよい(例えば、01ならば適用対象外、10なら(適用対象であって且つ)圧縮なし、11なら(適用対象であって且つ)圧縮あり)。
【0057】
図9に、メッセージ・フォーマットの他の例を示す。(a)は非圧縮時のメッセージであり、(b)は圧縮時のメッセージである。(a)ではメッセージ・ボディーにデータが載せられ、(b)ではメッセージ・ボディーは空(null)である。また、この例では、(a),(b)ともにメッセージ・ヘッダにフィンガープリント(FP)が記述される。FP圧縮の有無を識別可能とする識別情報について上記の例と同様である。
【0058】
なお、この場合に、非圧縮時には図7の(a)と同様のメッセージ・フォーマット(フィンガープリントを含まないフォーマット)を用いる方法もある。
【0059】
なお、FP圧縮の適用対象外のメッセージが存在し得る場合には、上記した識別情報に基づく方法の他に、圧縮側(送信側)のプロキシがFP圧縮の適用対象のメッセージ・ヘッダに常にフィンガープリントを記述する構成の場合には、解凍側(受信側)では、メッセージ・ヘッダにフィンガープリントが含まれるか否かで判断することもできる。
【0060】
図10に、メッセージ・フォーマットのさらに他の例を示す。(a)は非圧縮時のメッセージであり、(b)は圧縮時のメッセージである。(a)ではメッセージ・ボディーにデータが載せられ、(b)ではメッセージ・ボディーは空(null)である。また、この例では、(a),(b)ともにメッセージ・ヘッダにフィンガープリント(FP)が記述される。ただし、この例では、FP圧縮の有無を識別可能とする識別情報は使用しない。
【0061】
この例では、メッセージ・ボディーが空(null)か否かによって、FP圧縮の有無を識別することができる。ただし、FP圧縮の適用対象外のメッセージでメッセージ・ボディーが空(null)のものが存在し得る場合には、例えば、メッセージ・ヘッダにフィンガープリント(FP)が存在するか否かによって、FP圧縮の適用対象で圧縮時のメッセージか、FP圧縮の適用対象外でメッセージ・ボディーが空(null)のメッセージかを識別する(あるいは、メッセージ・ヘッダにFP圧縮の適用対象か適用対象外かを示す情報を設けてもよい)。
【0062】
なお、非圧縮時には図11に示すようにメッセージにフィンガープリントを記述しないフォーマットを用いる方法もある。この場合には、メッセージ・ヘッダにフィンガープリントが含まれるか否かによって、FP圧縮の有無を識別することができる。ただし、FP圧縮の適用対象外のメッセージが存在し得る場合には、例えば、メッセージ・ヘッダにFP圧縮の適用対象か適用対象外かを示す情報を設ければよい。
【0063】
以下では、サーバ側プロキシ30からクライアント側プロキシ40へリプライメッセージを転送するときにそのリプライデータをFP圧縮・解凍する場合を中心に本実施形態について詳しく説明する。
【0064】
図12に本実施形態のサーバ側プロキシ30の構成例を示し、図13に本実施形態のクライアント側プロキシ40の構成例を示す。なお、図12や図13は、サーバ側プロキシ30からクライアント側プロキシ40へデータを転送する際の構成を中心に示してある。
【0065】
図12に示されるように、本サーバ側プロキシ30は、サーバセンター内LAN12または広域ネットワーク14から転送メッセージを受信するための処理を行う受信部31、転送メッセージに含まれるデータに対してFP圧縮を施すための処理部32、サーバセンター内LAN12または広域ネットワーク14へ転送メッセージを送信するための処理を行う送信部33、フィンガープリントとそのもととなったデータとを対応付けて記憶するためのフィンガープリント・キャッシュ(FPキャッシュ)34を備えている。また、処理部32は、転送メッセージに含まれるデータを圧縮対象とすべきか否かを判定するためのフィンガープリント(FP)圧縮判定部321、フィンガープリント・キャッシュ34に対する検索や登録などを行うためのフィンガープリント・キャッシュ(FPキャッシュ)管理部322、転送メッセージに含まれるデータを対応するフィンガープリントで置き換えるなどの処理を行うためのフィンガープリント(FP)圧縮処理部323を含む。
【0066】
さて、FPキャッシュ管理部322は、FP圧縮を適用する通信を行う相手となるクライアント側プロキシ40毎に、フィンガープリントとデータとの対応を管理する。その形態には種々のバリエーションがあるが、以下、その幾つかについて説明する(なお、図12は、論理的にクライアント側プロキシ40のそれぞれに対応したFPキャッシュ34が設けられる様子を表している)。
【0067】
(1)図14は、クライアント側プロキシ40毎にハッシュテーブルを設けるとともに、フィンガープリントに対応するデータも、クライアント側プロキシ40毎に保持する(同一コンテンツでもクライアント側プロキシ毎にそのコピーを持つ)構成例である。この場合、FPキャッシュ管理部322では、データの転送先となるクライアント側プロキシ40に対応するFPキャッシュ34を特定し、そのFPキャッシュ34に該データに対応するフィンガープリントが保持されているか否かをチェックすることになる。
【0068】
(2)図15は、ハッシュテーブルはクライアント側プロキシ40毎に設けるが、同一のコンテンツは一つしか持たず、そのポインター情報をハッシュテーブルに保持する(なお、クライアント側プロキシ40が異なり且つフィンガープリントの値が同じでも、元のデータの内容が異なる場合には、それぞれのデータを保持することになる)構成例である。この場合、FPキャッシュ管理部322では、データの転送先となるクライアント側プロキシ40に対応するFPキャッシュ34を特定し、そのFPキャッシュ34に該データに対応するフィンガープリントが保持されているか否かをチェックすることになる。
【0069】
(3)図16は、クライアント側プロキシ40毎にはFPキャッシュ34を設けない代わりに、ハッシュテーブルに、当該フィンガープリントに対応するデータの転送先となるクライアント側プロキシを識別するクライアント側プロキシ識別情報を追加して、クライアント側プロキシ識別情報とフィンガープリントの値の対からなるようにした構成例である。なお、図16では、(2)のように同一のコンテンツは一つしか持たず、そのポインター情報をハッシュテーブルに保持する構成例を示しているが、その代わりに、(1)のように、各エントリ毎にデータを保持する構成例も可能である。クライアント側プロキシ識別情報は、ユニークにクライアント側プロキシを識別できる情報であり、例えば、IPアドレスやMACアドレス、ホストID、チャネル識別子、あるいはそれらを一意に特定可能な情報などを用いることができる。この場合、FPキャッシュ管理部322では、データの転送先となるクライアント側プロキシ40のクライアント側プロキシ識別情報を特定し、FPキャッシュ34に、該クライアント側プロキシ識別情報と該データに対応するフィンガープリントとの対が保持されているか否かをチェックすることになる。
【0070】
(4)図17は、クライアント側プロキシ40毎にはFPキャッシュ34を設けず、ハッシュテーブルに、フィンガープリントの値に対応して、該フィンガープリントを利用可能なクライアント側プロキシ識別情報群を保持するようにした構成例である。この場合、FPキャッシュ管理部322では、データの転送先となるクライアント側プロキシ40のクライアント側プロキシ識別情報を特定し、FPキャッシュ34に、該データに対応するフィンガープリントが保持されているか否か、およびそのフィンガープリントに対するクライアント側プロキシ識別情報群に該クライアント側プロキシ識別情報が保持されているか否かをチェックすることになる。
【0071】
次に、図13に示されるように、本クライアント側プロキシ40は、ユーザオフィス内LAN16または広域ネットワーク14から転送メッセージを受信するための処理を行う受信部41、転送メッセージに含まれるデータに対してFP解凍を施すための処理部42、ユーザオフィス内LAN16または広域ネットワーク14へ転送メッセージを送信するための処理を行う送信部43、フィンガープリントとそのもととなったデータとを対応付けて記憶するためのフィンガープリント・キャッシュ(FP・キャッシュ)44を備えている。また、処理部42は、転送メッセージに含まれるデータを圧縮対象とすべきか否かおよび転送メッセージに対するFP圧縮の有無を判定するためのフィンガープリント(FP)圧縮判定部421、フィンガープリント・キャッシュ34に対する検索や登録などを行うためのフィンガープリント・キャッシュ(FPキャッシュ)管理部422、FP圧縮された転送メッセージに含まれるフィンガープリントから元のデータを解凍するなどの処理を行うためのフィンガープリント(FP)解凍処理部423を含む。
【0072】
なお、圧縮側のFP圧縮判定部321と解凍側のFP圧縮判定部421は、前述したようにメッセージが予め定められた条件を満たすか否かを調べることによって、そのメッセージに含まれるデータをFP圧縮の適用対象とするか否かを判断する(すべてのメッセージをFP圧縮の適用対象にする場合には、圧縮側のFP圧縮判定部321および後に示す手順例の該当部分は不要であり、解凍側のFP圧縮判定部421の該当判断の部分および後に示す手順例の該当部分は不要である)。また、解凍側のFP圧縮判定部421は、FP圧縮の適用対象のメッセージについて、そのデータがFP圧縮されたものか否かを判定する。以下では、FP圧縮の適用対象となるメッセージを転送する場合(FP圧縮の適用対象とすると判断された場合、またはすべてのメッセージをFP圧縮の適用対象にする場合)を中心に説明する。
【0073】
図18に、サーバ側プロキシ30が、クライアント側プロキシ40からリクエストメッセージを受信してから、当該クライアント側プロキシ40へリプライメッセージを転送するまでのサーバ側プロキシ30の処理手順の一例を示す。
【0074】
図18は、サーバ側プロキシ30のクライアント側プロキシ40からの1回のリクエストに応じた処理を記述しているが、例えば、複数のクライアント側プロキシ40から同時にリクエストメッセージを受ける場合には、それぞれのリクエストを受け取る都度、図18の処理を並行して行う。
【0075】
なお、図18は、クライアント側プロキシ40からサーバ側プロキシ30へのリクエストメッセージの転送ではFP圧縮を行わず、サーバ側プロキシ30からクライアント側プロキシ40へのリプライメッセージの転送ではFP圧縮を利用する場合の手順例である。
【0076】
以下では、要求元のクライアント側プロキシとは、1対のリクエストメッセージ及びリプライメッセージに対する処理において、当該要求元のクライアントに対応するクライアント側プロキシ、すなわち、リクエストメッセージの送信元且つリプライメッセージの受信先となるクライアント側プロキシを意味するものとする。
【0077】
サーバ側プロキシ30は、複数存在するクライアント側プロキシ中の或る1つのクライアント側プロキシ(すなわち、要求元のクライアント側プロキシ)40から、リクエストメッセージを受信すると(ステップS1)、これを宛先となるサーバ20へ送信する(ステップS2)。この時点で、当該1対のリクエストメッセージ及びリプライメッセージに対する処理としては、一旦、該当するリプライメッセージの受信を待つ状態に入ることになる。
【0078】
さて、その後、サーバ側プロキシ30は、受信部31により、サーバ20からリプライメッセージを受信すると(ステップS3)、まず、FP圧縮判定部321にて、該リプライメッセージのリプライデータがFP圧縮対象のものであるか否か調べ、判断する(ステップS4)。リプライデータがFP圧縮対象外のものと判断されたならば(ステップS4)、受信したリプライメッセージを送信部33からクライアント側プロキシ40へ転送する(ステップS9)。
【0079】
ステップS4にて該リプライメッセージのリプライデータがFP圧縮対象のものであると判断されたならば、FPキャッシュ管理部322にて、該リプライデータのフィンガープリントの値を計算し(ステップS5)、該フィンガープリントの値をキーとして、要求元のクライアント側プロキシ40に対応するフィンガープリント・キャッシュ34を検索する(ステップS6)。
【0080】
そして、該フィンガープリントの値とこれに対応するデータとの組が、当該要求元のクライアント側プロキシ40に対応するフィンガープリント・キャッシュ34に登録されていたならば(ステップS7)、FP圧縮処理部323にて、受信したリプライメッセージを、該フィンガープリントの値を用いてFP圧縮時のフォーマットにして(例えば図9(b)等)、送信部33から、当該要求元のクライアント側プロキシ40へ送信する(ステップS8)。このとき、必要に応じて、リプライヘッダ内のデータ長を表すフィールド(Content−Length:フィールド)の値を、FP圧縮時のフォーマットにあわせて設定する。
【0081】
一方、ステップS6の検索の結果、該フィンガープリントの値とこれに対応するデータとの組が、当該要求元のクライアント側プロキシ40に対応するフィンガープリント・キャッシュ34に登録されていなかったならば(ステップS7)、次の2つの作業を行う。
(1)FP圧縮処理部323にて、受信したリプライメッセージを、(必要に応じて該フィンガープリントの値を用いて)非FP圧縮時のフォーマットにして(例えば図9(a)等)、送信部33から、当該要求元のクライアント側プロキシ40へ送信する(ステップS10)。
(2)FPキャッシュ管理部322にて、該フィンガープリントの値と、該リプライデータとを対応付けて(フィンガープリントの値をキーにして)、当該要求元のクライアント側プロキシ40に対応するフィンガープリント・キャッシュ34に登録する(ステップS11)。
【0082】
なお、上記の(1)と(2)は、いずれを先に行ってもよいし、並行して行ってもよい。
【0083】
図19に、クライアント側プロキシ40が、クライアント50からリクエストメッセージを受信してから、当該クライアント50へリプライメッセージを転送するまでのクライアント側プロキシ40の処理手順の一例を示す。
【0084】
図19は、クライアント側プロキシ40のクライアント50からの1回のリクエストに応じた処理を記述しているが、例えば、複数のクライアント50から同時にリクエストメッセージを受ける場合には、それぞれのリクエストを受け取る都度、図19の処理を並行して行う。
【0085】
なお、図19は、クライアント側プロキシ40からサーバ側プロキシ30へのリクエストメッセージの転送ではFP圧縮を行わず、サーバ側プロキシ30からクライアント側プロキシ40へのリプライメッセージの転送ではFP圧縮を利用する場合の手順例である。
【0086】
クライアント側プロキシ40は、要求元のクライアント50から、リクエストメッセージを受信すると(ステップS21)、これを宛先となるサーバ20に対応するサーバ側プロキシ30へ送信する(ステップS22)。この時点で、当該1対のリクエストメッセージ及びリプライメッセージに対する処理としては、一旦、該当するリプライメッセージの受信を待つ状態に入ることになる。
【0087】
さて、その後、クライアント側プロキシ40は、受信部41により、サーバ側プロキシ30からリプライメッセージを受信すると(ステップS23)、まず、FP圧縮判定部421にて、該リプライメッセージのリプライデータがFP圧縮対象のものであるか否か調べ、判断する(ステップS24)。リプライデータがFP圧縮対象外のものと判断されたならば(ステップS24)、受信したリプライメッセージを送信部43からクライアント50へ転送する(ステップS32)。
【0088】
ステップS24にて該リプライメッセージのリプライデータがFP圧縮対象のものであると判断されたならば、FP圧縮判定部421は、さらに、リプライデータがFP圧縮されているか否か調べ、判断する(ステップS25)。
【0089】
ステップS25にて該リプライメッセージのリプライデータがFP圧縮されているものと判断されたならば(例えば図9(b)等の場合)、FPキャッシュ管理部422にて、該リプライデータのフィンガープリントの値を求め(ステップS26)、該フィンガープリントの値をキーとしてフィンガープリント・キャッシュ44を検索する(ステップS27)。
【0090】
そして、FP解凍処理部423にて、受信リプライメッセージに対して、フィンガープリント・キャッシュ44から検索された該フィンガープリントの値に対応するデータを付加し、プロキシ間で特別の情報を使用する場合には該情報を削除した後に、これを送信部43からクライアント50へ送信する(ステップS28)。このとき、必要に応じて、リプライヘッダ内のデータ長を表すフィールド(Content−Length:フィールド)の値を、該フィンガープリントの値に対応するデータの長さに設定する。
【0091】
一方、ステップS25にて該リプライメッセージのリプライデータがFP圧縮されていないものと判断されたならば(例えば図9(a)等の場合)、次の2つの作業を行う。
(1)FP解凍処理部423にて、プロキシ間で特別の情報を使用する場合には受信リプライメッセージから該情報を削除した後に、これを送信部43からクライアント50へ送信する(ステップS30)。
(2)FPキャッシュ管理部422にて、該リプライデータのフィンガープリントの値を求め(ステップS29)、該フィンガープリントの値と、該リプライデータとを対応付けて(フィンガープリントの値をキーにして)、フィンガープリント・キャッシュ44に登録する(ステップS31)。
【0092】
なお、上記の(1)と(2)は、いずれを先に行ってもよいし、並行して行ってもよい。
【0093】
ところで、ステップS26では、メッセージにフィンガープリントが記述されている。しかし、ステップS29では、メッセージにフィンガープリントが記述されている場合に、該メッセージからフィンガープリントを得る方法と、メッセージにフィンガープリントが記述されてない場合に、リプライデータをもとにハッシュ関数等によってフィンガープリントの値を計算する方法とがある。なお、メッセージにフィンガープリントが記述されている場合であっても、リプライデータをもとにフィンガープリントの値を計算する方法も可能である。
また、ステップS26/ステップS29は、ステップS24とステップS25の間にて行うようにしても構わないし、ステップS29は、ステップS30とステップS31の間にて行うようにしても構わない。
【0094】
また、ステップS24の判断とステップS25の判断は、同時に行ってもよい。
【0095】
次に、図20に、サーバ側プロキシ30からクライアント側プロキシ40へフィンガープリント・キャッシュ登録されていないデータを転送するとともに当該フィンガープリント・キャッシュ登録する場合の動作例を示す。
【0096】
(1)クライアント50上のブラウザ等は、例えば、“/A.cgi”というURLでサーバ20に、POSTメソッドのリクエストメッセージを出したとする。サーバ20へのリクエストメッセージは、まず、クライアント側プロキシ40に送られるように、ブラウザ等を設定しておく。
【0097】
(2),(3)クライアント側プロキシ40及び宛先となるサーバ20に対応するサーバ側プロキシ30により、該リクエストメッセージは、サーバ20へ転送される。
【0098】
(4)サーバ20は、該リクエストメッセージに対する処理を行った後、サーバ側プロキシ30に、そのリプライメッセージを転送する。
【0099】
(5),(6)サーバ側プロキシ30は、受信したリプライメッセージのリプライデータは要求元のクライアント側プロキシ40について初めてのデータであるので、該リプライデータを要求元のクライアント側プロキシ40に対応するフィンガープリント・キャッシュ34に登録するとともに、該リプライメッセージを該クライアント側プロキシ40へ転送する。
【0100】
(7),(8)クライアント側プロキシ40は、受信したリプライメッセージのリプライデータが初めてのデータであるので、該リプライデータをもとにフィンガープリントを求め、該リプライデータとともにフィンガープリント・キャッシュ44に登録する。そして、該リプライメッセージを要求元のクライアント50(上で動作するブラウザ等)へ転送する。
【0101】
続いて、図21に、図20の動作が行われてキャッシュ登録されているデータをサーバ側プロキシ30からクライアント側プロキシ40へ転送する場合の動作例を示す。
【0102】
(1)〜(4)は、図20を参照して説明した動作における(1)〜(4)と同様である。
【0103】
(5),(6)サーバ側プロキシ40は、サーバ20から受け取ったリプライメッセージのリプライデータを、要求元のクライアント側プロキシ40に対応するフィンガープリント・キャッシュ34に登録されている該当するフィンガープリントで置き換え、該クライアント側プロキシ40へ転送する。
【0104】
(7),(8)クライアント側プロキシ40は、リプライメッセージのリプライデータがフィンガープリントで置き換えられていることを検出し、指定されたフィンガープリントを使ってフィンガープリント・キャッシュ44から対応するデータを取り出し、これをリプライボディに入れた後に、該リプライメッセージを要求元のクライアント50(上で動作するブラウザ等)へ転送する。
【0105】
さて、これまでは、サーバ側プロキシからクライアント側プロキシへ転送されるリプライメッセージを対象とする場合を中心に説明してきたが、もちろん、他のメッセージについても本発明は適用可能である。
【0106】
また、これまでは、サーバ側プロキシ30からクライアント側プロキシ40へデータを転送するときに、該データがフィンガープリント・キャッシュに登録されているデータと同じものである場合には、該データに代えて、対応するフィンガープリントを転送することで、ネットワークのトラフィックを軽減しているが、このFP圧縮は、クライアント側プロキシ40からサーバ側プロキシ30へリクエストデータ等のデータを転送する場合に適用することも可能である。
【0107】
また、これまでは、1つのメッセージに含まれるデータ全体をFP圧縮する対象(フィンガープリント・キャッシュに登録する対象)にしていたが、例えば、1つのメッセージに含まれるデータが所定の単位のデータの集合で構成される場合には、1つのメッセージに含まれる一部の単位データのみFP圧縮する対象(フィンガープリント・キャッシュに登録する対象)にする構成も可能である。
【0108】
なお、以上の各機能は、ソフトウェアとして実現可能である。
また、本実施形態は、コンピュータに所定の手段を実行させるための(あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるための)プログラムとして実施することもでき、該プログラムを記録したコンピュータ読取り可能な記録媒体として実施することもできる。
【0109】
なお、この発明の実施の形態で例示した構成は一例であって、それ以外の構成を排除する趣旨のものではなく、例示した構成の一部を他のもので置き換えたり、例示した構成の一部を省いたり、例示した構成に別の機能あるいは要素を付加したり、それらを組み合わせたりすることなどによって得られる別の構成も可能である。また、例示した構成と論理的に等価な別の構成、例示した構成と論理的に等価な部分を含む別の構成、例示した構成の要部と論理的に等価な別の構成なども可能である。また、例示した構成と同一もしくは類似の目的を達成する別の構成、例示した構成と同一もしくは類似の効果を奏する別の構成なども可能である。
また、この発明の実施の形態で例示した各種構成部分についての各種バリエーションは、適宜組み合わせて実施することが可能である。
また、この発明の実施の形態は、個別装置としての発明、関連を持つ2以上の装置についての発明、システム全体としての発明、個別装置内部の構成部分についての発明、またはそれらに対応する方法の発明等、種々の観点、段階、概念またはカテゴリに係る発明を包含・内在するものである。
従って、この発明の実施の形態に開示した内容からは、例示した構成に限定されることなく発明を抽出することができるものである。
【0110】
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
【0111】
【発明の効果】
本発明によれば、サーバ装置側に設けられたサーバ側プロキシは、クライアント装置側に設けられたクライアント側プロキシから該クライアント装置が該サーバ装置へ宛てて発したリクエストデータを受信してサーバ装置へ転送した後に、該サーバ装置が該クライアント装置へ宛てて発した該リクエストデータへの返答であるリプライデータを受信してクライアント側プロキシへ転送するにあたって、受信したリプライデータから生成したフィンガープリント、該リプライデータに関連付けて、該リプライデータの宛先となるクライアント装置に係るクライアント側プロキシに対応するクライアント側プロキシ毎フィンガープリント・キャッシュに保持しておくことによって、サーバ装置からリプライデータを受信した場合に、そのフィンガープリントが該リプライデータの宛先となるクライアント装置に係るクライアント側プロキシに対応するクライアント側プロキシ毎フィンガープリント・キャッシュに保持されているリプライデータについては、該リプライデータを転送する代わりに対応するフィンガープリントを転送することで、それらサーバ側プロキシとクライアント側プロキシとの間の転送データ量を削減することができる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るコンピュータ・ネットワーク・システムの構成例を示す図
【図2】同実施形態に係るコンピュータ・ネットワーク・システムの他の構成例を示す図
【図3】同実施形態に係るコンピュータ・ネットワーク・システムのさらに他の構成例を示す図
【図4】同実施形態に係るコンピュータ・ネットワーク・システムのさらに他の構成例を示す図
【図5】同実施形態で使用するフィンガープリントについて説明するための図
【図6】同実施形態で使用するフィンガープリント・キャッシュについて説明するための図
【図7】同実施形態で使用するメッセージ・フォーマットの一例を示す図
【図8】同実施形態で使用するメッセージ・フォーマットの他の例を示す図
【図9】同実施形態で使用するメッセージ・フォーマットのさらに他の例を示す図
【図10】同実施形態で使用するメッセージ・フォーマットのさらに他の例を示す図
【図11】同実施形態で使用するメッセージ・フォーマットのさらに他の例を示す図
【図12】同実施形態に係るサーバ側プロキシの構成例を示す図
【図13】同実施形態に係るクライアント側プロキシの構成例を示す図
【図14】同実施形態におけるフィンガープリント・キャッシュの一例について説明するための図
【図15】同実施形態におけるフィンガープリント・キャッシュの他の例について説明するための図
【図16】同実施形態におけるフィンガープリント・キャッシュのさらに他の例について説明するための図
【図17】同実施形態におけるフィンガープリント・キャッシュのさらに他の例について説明するための図
【図18】同実施形態に係るサーバ側プロキシの手順例を示すフローチャート
【図19】同実施形態に係るクライアント側プロキシの手順例を示すフローチャート
【図20】同実施形態に係るサーバ側プロキシとクライアント側プロキシとの間のデータ転送について説明するための図
【図21】同実施形態に係るサーバ側プロキシとクライアント側プロキシとの間のデータ転送について説明するための図
【図22】従来のコンピュータ・ネットワーク・システムについて説明するための図
【符号の説明】
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解凍・解凍処理部
[0001]
BACKGROUND OF THE INVENTION
  The present invention relates to a server-side proxy that performs data transfer for other devices, a data transfer method, and a program.
[0002]
[Prior art]
2. Description of the Related Art A client / server type information system is widely used, which includes a server that provides various services via a network and a client that requests a desired service from the server. In particular, a WORLD WIDE WEB system (or simply referred to as WEB) composed of a WEB server and a client communicating with each other using the HTTP protocol on the Internet is a client-server type information system that is very widely used. Normally, a server program operates on the server, and a predetermined tool (program) such as a browser operates on the client. The contents of services provided on the Internet are also diverse, providing information such as text, still images, moving images, audio (such as homepages, e-mails, digital contents, etc.) and programs via the network. Various services such as distribution or transfer services, electronic store services for selling products, reservation services for seats and rooms, mediation services for various contracts, etc., and new forms of services one after another Has appeared.
[0003]
By the way, in a client-server type information system such as WEB, whatever service is provided, the service is basically provided by data transfer between the client and the server. Is done. Therefore, the capacity (bandwidth) of the network used for communication between the client and the server tends to become a bottleneck of the entire system. Therefore, a cache technique is usually used to reduce the load on the network.
[0004]
In the case of a WEB system, browsers and the like that operate on a client often use a cache mechanism, and cache recently accessed data. In WEB, access is made by designating information or service with a name called URL, so that the cache on the client is the information that has been requested to the WEB server in the past and the data returned as a result of the service can be cached. The URL is recorded in the cache in association with the URL. In this case, if there is a request for the same URL information or service as that in the cache and it can be determined that the response data in the cache is not stale, by returning that data, Communication between can be eliminated.
[0005]
When there are a plurality of users in a corporate office LAN, a research institution LAN, or a home LAN, a proxy server may be placed between the LAN and the Internet, and a cache mechanism may be provided in the proxy server. Many. The cache in the client (for example, the browser cache) operates as a cache dedicated to the client user, while the proxy server cache on the LAN operates as a shared cache for a plurality of client users. For this reason, in the latter case, the cache is effective even when accessing a URL accessed by another person (another client) in the past.
[0006]
Now, in WEB, communication is performed between a client and a server using a protocol called HTTP. The HTTP protocol is a combination of a “request message” sent from the client to the server and a “reply message” that returns a response from the server to the client.
[0007]
The request message consists of a “request header” and a “request body”. The request header includes a URL for designating information to be accessed and a service, a method name indicating the type of access, and other various information necessary for access. The data to be sent to the server is entered in the request body. The data contained in the request body is also called “request data”.
[0008]
The reply message includes a “reply header” and a “reply body”. Information such as the status of the processing result is entered in the reply header, and data such as the requested information and the processing result of the requested service is entered in the reply body. The data contained in the reply body is also called “reply data”.
[0009]
As a request message method, there are a “GET method” for reading information on the server, a “PUT method” for writing data held by the user to the server, and a “POST method” for sending back the result of processing in response to the request. It is the main thing used to access services. In addition, a method such as DELETE is defined.
[0010]
In many cases, the request body of the request message of the GET method and the reply body of the reply message of the PUT method are empty. The request body of the POST method request message contains information used for processing on the server side as necessary, and the reply body of the POST method reply message contains data of the processing result.
[0011]
Data read from the server by the GET method can be divided into “dynamic data” generated on the server side each time it is read, and “static data” that returns data already stored on the server side as it is. Of these, the contents of dynamic data may be different each time the same URL is read, and in many cases, the server sends back a specification indicating that caching is impossible in the header of the reply message. Therefore, it is a portion of static data that is subject to caching with WEB data. This static data can be divided into “shared data” that can be referenced by an unspecified number of users and “private data” that performs access control so that only specific users can access by authenticating users. . The former shared data can be cached in any cache. However, the latter private data cannot be cached in a shared cache such as a proxy server (because private data must be authenticated and sent back by the server). However, in the case of a personal cache such as a browser, even private data can be cached.
[0012]
Since the POST method returns the result of processing on the server side, in general, the server sends back the result with a specification indicating that caching is impossible in the header of the reply message. Therefore, it is not normally subject to caching.
[0013]
Since the PUT method sends data to the server, the cache does nothing.
[0014]
[Problems to be solved by the invention]
The conventional WEB cache targets static content as a cache target. In the past, information and services published on the WEB were not so frequently updated, and many were published to an unspecified number of people, so the proportion of static content was very high. Cache technology was also effective in reducing network load.
[0015]
However, as a system in which a user accesses information and services on a server via a network using a WEB browser, such as WEB-based ASP (Application Service Provider), the conventional cache technology as described below. The data that cannot be handled is increasing.
-Since the user is authenticated and the user who can access is restricted, there is much private data.
-Many dynamic data are generated by referring to the backend database.
-In many cases, the POST method is used for form processing and search.
-The PUT method is often used to share information within a group.
As a result, the cache technology alone has not functioned effectively as a technique for reducing the load on the network.
[0016]
  The present invention has been made in consideration of the above circumstances, and a server-side proxy having a cache technology and a compression technology that can further reduce the load on the network connecting the server-side proxy and the client-side proxy, It is an object to provide a data transfer method and program.
[0017]
[Means for Solving the Problems]
  The present inventionThe server apparatus receives a plurality of request data transmitted from each of the plurality of client apparatuses to the server apparatus and relayed to each of the client side proxies in charge of access to the server apparatuses of the plurality of client apparatuses. As a reply to each of the plurality of request dataFrom the deviceTo each of the client devicesSendReplydataServer-side proxy that forwards each to the client-side proxy that is the proxy for the client device that is the destination of the reply dataBecauseReply that is a reply to each request data transferred from each of multiple client side proxiesdataRespectivelyTheFrom the server deviceReceiveFurther, it also receives reply data that is a reply to request data transferred from a client-side proxy among the plurality of client-side proxies.Receiving means forFingerprint generation means for generating a fingerprint of each of the reply data, and further generating a fingerprint that is a fingerprint of the reply data;GenerationEach of the fingerprints associated with each of the original reply data is a proxy on the client side that is a proxy for each client device that is the destination of the reply data.Every,As a fingerprint cache for each client-side proxyHoldRuhoHolding means,Determining means for determining whether or not the fingerprint is held in a fingerprint cache for each client-side proxy corresponding to a client-side proxy that is a proxy of a client device that is the destination of the reply data; The fingerprint is the client-side proxyCorresponding toClient-side per-proxy fingerprint cacheHeld inAnd determined by the determining meansIn case, Said certain replyInstead of dataThe fingerprintTheTo the client side proxy addressed to the client deviceSendAnd the fingerprint is the proxy on the client side.Corresponding toClient-side per-proxy fingerprint cacheNot held inAnd determined by the determining meansIn caseThe fingerprint and the replydataAnd relatedAttached toThe client-side proxyCorresponding toAdd to the client side per-proxy fingerprint cache andDataTo the client side proxy addressed to the client deviceSendSendingAnd a communication means.
[0021]
The present invention relating to the apparatus is also established as an invention relating to a method, and the present invention relating to a method is also established as an invention relating to an apparatus.
Further, the present invention relating to an apparatus or a method has a function for causing a computer to execute a procedure corresponding to the invention (or for causing a computer to function as a means corresponding to the invention, or for a computer to have a function corresponding to the invention. It is also established as a program (for realizing) and also as a computer-readable recording medium on which the program is recorded.
[0022]
  According to the present invention,Server device~ sideServer-side proxyIsClient device~ sideAfter the request data issued from the client side proxy provided to the server device to the server device is transferred to the server device, the request to the request data issued by the server device to the client device is transferred. When reply data that is a reply is received and transferred to the proxy on the client side,dataFingerprint generated fromTheIn association with the reply data, a fingerprint cache for each client-side proxy corresponding to the client-side proxy associated with the client device that is the destination of the reply dataRetentionFrom the server device.dataIs received in the fingerprint cache for each client-side proxy corresponding to the client-side proxy associated with the client device that is the destination of the reply data.RetentionIsingreplyFor data,The replyRespond instead of transferring dataFingerprintBy transferringBetween the server-side proxy and the client-side proxyThe amount of data transferred between them can be reduced. Also,Server-side proxyWhenClient-side proxyAre connected one-to-many,Server-side proxyIsClient-side proxyEveryreplyData and itsMaintains a per-proxy fingerprint cache cache associated with a fingerprintBecause there isreplyAbout dataIn the fingerprint cache for each client-side proxy corresponding to the client-side proxy related to the destination client deviceThereplyData and itsFingerprintCorrespondence withThe client-side proxy if it is not maintainedInforThe relevantreplyInstead of dataFingerprintWill be transferredYou can avoid that.
[0023]
  Further, according to the present invention, for example, even if the reply message of the GET method is private data, it is compressed by the fingerprint.Between the client-side proxy and the server-side proxyWill be able to transfer between. Also, for example, even if the reply message of the GET method is dynamic data, if the content is the same, compress this with a fingerprint.Between the client-side proxy and the server-side proxyWill be able to transfer between. Also, for example, even with the POST method, if the result is the same data, compress this with a fingerprint.Between the client-side proxy and the server-side proxyWill be able to transfer between.
[0024]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, embodiments of the invention will be described with reference to the drawings.
[0025]
In the following, a case where the WAN is the Internet and the client is connected to the user office LAN and the HTTP protocol is used will be described as an example. Even if the client is installed in a home LAN other than the office, for example, it can be applied even if a protocol other than the HTTP protocol is used.
[0026]
FIG. 22 shows a basic configuration example of a computer network system to which the present invention is applied. In this configuration example, a wide area network (WAN) 14 such as the Internet or a dedicated line is connected between a local area network (LAN) 12 in the ASP server center 2 and a local area network (LAN) 16 in the user office 4. The server 20 in the ASP server center 2 and the client 50 in the user office 4 can communicate with each other via the LAN 12, the WAN 14, and the LAN 16. One or more servers are connected to the ASP server center LAN, and one or more clients are connected to the user office LAN.
[0027]
The WEB-based ASP provides services based on various application programs from the server 20 installed in the server center 2 via the WAN 14, and the user uses the WEB browser on the client installed in the office 4. Access the service.
[0028]
A plurality of ASP server centers 2 and user offices 4 may exist.
[0029]
In such a usage mode, the effective communication capacity (bandwidth) of the network connecting the user office LAN 16 and the server center LAN 12, particularly the wide area network 14 such as the Internet, is the server center LAN 12 or the user office LAN 16. Lower than that, which becomes a bottleneck in performance, causing a communication delay, resulting in a problem that the response performance of the application is lowered.
[0030]
Therefore, in this embodiment, as shown in FIG. 1, two modules, a server-side proxy 30 and a client-side proxy 40, are installed at both ends of the wide area network 14 that connects the server center LAN 12 and the user office LAN 16. By performing fingerprint compression (FP compression) described later between them to reduce the amount of communication data, the bottleneck of the wide area network is eliminated.
[0031]
Here, a case is considered in which FP compression is applied to communication between one server-side proxy 30 and a plurality of client-side proxies 40 (one client-side proxy 40 is one server at a certain time). Suppose that communication is performed with the side proxy 30 using FP compression).
[0032]
The server 20, the server-side proxy 30, the client-side proxy 40, and the client 50 of this embodiment all have software (server program, server-side proxy program, client-side proxy program, client program) on the computer. It can be realized by operating it. In this case, an OS having a desired function in the computer, driver software, software for packet communication, encryption software, etc., or hardware such as a communication interface device, an external storage device, an input / output device, etc. Connected. In this case, it is preferable to use a graphical user interface (GUI) for inputting information from the user or the administrator or presenting information to the user.
[0033]
On the client 50 used by the user to use the service, a program such as a WEB browser operates according to the purpose. A user uses a service by, for example, issuing a request message to a server that provides a desired service such as information transfer or order reception from the WEB browser, receiving a reply message, or repeating this appropriately. . Of course, instead of general-purpose software such as a WEB browser, other software such as dedicated software for using a specific service may be used. Further, the client may be not a general-purpose computer but a mobile phone terminal having an Internet function, for example.
[0034]
A predetermined server program operates on the server 20 and provides services specific to the server site to the user of the client 50.
[0035]
As shown in FIG. 1, the server-side proxy 30 is connected to both the intra-server center LAN 12 and the WAN 14 and can be installed and operated so as to operate as a transparent proxy. Further, as shown in FIG. 2, it can be installed on the LAN 12 in the server center. Further, as shown in FIG. 3, the server-side proxy 30 can be implemented so as to be built in the server 20.
[0036]
Similarly, as shown in FIG. 1, the client-side proxy 40 can be installed and implemented so as to connect to both the intra-user office LAN 16 and the WAN 14 and operate as a transparent proxy. Further, as shown in FIG. 2, it can be installed on the LAN 16 in the user office. Further, as shown in FIG. 3, the function of the client side proxy 40 can be implemented in a browser or the like that operates on the client 50. Alternatively, the client-side proxy 40 for personal use may be operated on the client 50 that operates such as a browser.
[0037]
Each server-side proxy 30 and each client-side proxy 40 may all have the same form as shown in FIGS. Further, for example, a certain server-side proxy 30 is in the form of FIG. 1, a certain server-side proxy 30 is in the form of FIG. 2, a certain client-side proxy 40 is in the form of FIG. 1, and a certain client-side proxy 40 is in the form of FIG. Thus, different forms may be mixed.
[0038]
The client-side proxy 40 may be built in a mobile terminal or a mobile computer. FIG. 4 shows an example of this case.
[0039]
The server side proxy 30 and the client side proxy 40 of this embodiment both have a cache mechanism called a fingerprint cache (FP cache). The fingerprint cache records and manages data exchanged by the HTTP protocol by a name called a fingerprint (FP).
[0040]
As illustrated in FIG. 5, the fingerprint is determined by a predetermined calculation method (hash function in the example of FIG. 5) from the contents of data exchanged by the HTTP protocol (content in the example of FIG. 5). It ’s a short number. This numerical value may be a variable length, but a fixed-length numerical value is easier to handle from the viewpoint of ease of processing.
[0041]
As a method for calculating the fingerprint, a well-known hash function such as MD-5 or SHA-1 can be used. These hash functions are used for digital signatures on data, and when given data is converted into a 128-bit number for MD-5 and a 160-bit number for SHA-1. can do. The feature of these hash functions is that if two data X1 and X2 are given and the data X1 and the data X2 are the same, the hash value calculated for the data X1 and the hash value calculated for the data X2 However, when two different data A and B are given, the hash value calculated for data A and the hash value calculated for data B are different with a very high probability. (In principle, the hash values calculated for two different data A and B may be the same, but the probability is small enough to be ignored in practice).
[0042]
As shown in FIG. 6, the fingerprint cache (60 in the figure) of the server-side proxy 30 and the client-side proxy 40 has a data body (61 in the figure) exchanged by the HTTP protocol in the past as its data. The fingerprint value (62 in the figure) calculated from the above is recorded and managed as a name. As will be described in detail later, the server-side proxy 30 manages the correspondence between the fingerprint and the data for each client-side proxy 40 that is a partner that performs communication to which FP compression is applied.
[0043]
For example, when transferring data from the server-side proxy 30 to the client-side proxy 40 using the HTTP protocol, the server-side proxy 30 calculates a fingerprint of the data, and the data corresponding to the fingerprint is the client-side proxy. If it is in the fingerprint cache corresponding to 40, the data (data having the same contents) has been transferred to the client-side proxy 40 in the past. The fingerprint value to be transferred is transferred. The client-side proxy 40 that has received the fingerprint can reproduce the data to be transferred by taking out the data corresponding to the fingerprint value from the fingerprint cache. By using this method (ie, data compression-> data transfer-> data decompression), it is only necessary to send the fingerprint value if it is the same data that was sent in the past. Can do.
[0044]
The server-side proxy 30 can specify the client-side proxy 40 to which data received from the server 20 should be transferred, for example, according to a predetermined communication protocol.
[0045]
Further, the client-side proxy 40 has a configuration in which a fingerprint is described in the message from the server-side proxy 30 and uses the described fingerprint at the time of registration, and the message in the message from the server-side proxy 30 There are a configuration in which the fingerprint is not described in the server and the fingerprint is calculated by itself, and a configuration in which the fingerprint is described in a message from the server-side proxy 30 and the fingerprint is calculated again.
[0046]
For explanation, when transferring data between the server-side proxy 30 and the client-side proxy 40, the fingerprint cache is used to replace the message body data with the fingerprint to compress the transfer information amount. This is called print compression (FP compression).
[0047]
In addition, between the server-side proxy 30 and the client-side proxy 40, an object to which FP compression is applied to all messages (that is, an object to perform processing for replacing data with a fingerprint using a fingerprint cache) However, for example, in order to exclude the application to a message that cannot be expected to have a fingerprint cache effect, a message that satisfies a predetermined condition is excluded from the application target of FP compression (always FP compression). May be transferred).
The predetermined condition in this case is, for example, that predetermined information is described in the message header. Specifically, for example, information indicating a GET method and information indicating a request are described in a message header. Another example of the predetermined condition is that the data to be transferred is null or has a very short size.
Of course, there are various other variations. A plurality of conditions may be used in combination.
The setting contents regarding the application target of such FP compression include, for example, a method of making the same throughout the system, a method of deciding for each pair of the server side proxy 30 and the client side proxy 40, and the like. In the latter case, there are a method of setting in advance and a method of setting for each session.
[0048]
Next, an inter-proxy message format (for a message to which FP compression is applied) when data is transferred between the server-side proxy 30 and the client-side proxy 40 will be described with reference to FIGS. .
[0049]
Messages that are not subject to FP compression may be transferred between proxies in the message format (when received by the proxy on the FP compression side (transmission side)) without doing anything for FP compression. Absent. Alternatively, the proxy on the FP compression side (transmission side) can transfer the message header, for example, with information that makes it possible to identify that the message is not subject to FP compression.
[0050]
When data is transferred between the server-side proxy 30 and the client-side proxy 40, the message to which FP compression is applied includes a message (a message at the time of compression) in which data is FP-compressed and replaced with a fingerprint. , There is a message that is not FP-compressed and data is loaded (message when uncompressed).
[0051]
The uncompressed message format is used when the data included in the message is not registered in the fingerprint cache of the server-side proxy 30 corresponding to the client-side proxy 40 that is the transfer destination. On the other hand, the message format at the time of compression is used when the data included in the message is registered in the fingerprint cache of the server-side proxy 30 corresponding to the client-side proxy 40 that is the transfer destination.
[0052]
On the decompression side (reception side), the data can be registered in the fingerprint cache when the uncompressed format message is received.
[0053]
FIG. 7 shows an example of the message format. (A) is an uncompressed message, and (b) is a compressed message.
[0054]
In (a), data is placed in the message body, and in (b), a fingerprint (FP) is placed in the message body instead of data. Further, in this example, identification information that enables identification of the presence or absence of FP compression is described in the message header (in the compression proxy), and whether or not FP compression is performed based on this identification information (in the decompression proxy) (For example, 0 means no compression, 1 means compression). The identification information may be special information used between proxies, or may be information that uses or uses a field originally present in a normal HTTP message header.
[0055]
At the time of non-compression, the fingerprint is not included in the message in the example of FIG. 7A, but the message body may include the fingerprint in addition to the data, or FIG. As shown, the message header may include a fingerprint. In this way, when the fingerprint cache is registered for the data on the decompression side, it is possible to save time and effort for obtaining the fingerprint from the data again by using the fingerprint.
[0056]
If there is a message that is not subject to FP compression, the decompression side (reception side) determines whether the message is subject to FP compression depending on whether or not the identification information is included in the message header. It is also possible to determine whether the message is not applicable. Also, identification information may be provided in a header of a message that is not subject to FP compression, and three types of messages may be identified based on the identification information (for example, 01 is not applicable, and 10 is applicable (applicable). And) no compression, 11 (applicable and) with compression).
[0057]
FIG. 9 shows another example of the message format. (A) is an uncompressed message, and (b) is a compressed message. In (a), data is put on the message body, and in (b), the message body is null. In this example, the fingerprint (FP) is described in the message header in both (a) and (b). The identification information that can identify the presence or absence of FP compression is the same as in the above example.
[0058]
In this case, there is a method of using a message format (format not including a fingerprint) similar to that shown in FIG.
[0059]
If there is a message that is not subject to FP compression, the proxy on the compression side (transmission side) always applies a finger to the message header that is subject to FP compression, in addition to the method based on the identification information described above. In the case of a configuration describing a print, the decompression side (reception side) can also determine whether or not a fingerprint is included in the message header.
[0060]
FIG. 10 shows still another example of the message format. (A) is an uncompressed message, and (b) is a compressed message. In (a), data is put on the message body, and in (b), the message body is null. In this example, the fingerprint (FP) is described in the message header in both (a) and (b). However, in this example, identification information that enables identification of the presence or absence of FP compression is not used.
[0061]
In this example, whether or not FP compression is performed can be identified based on whether or not the message body is null. However, if a message that is not subject to FP compression and whose message body is null may exist, for example, depending on whether a fingerprint (FP) exists in the message header, FP compression is performed. To identify whether the message is a compressed message or an FP compression not applicable message body and a null message body (or indicates whether the message header is an FP compression applicable or not applicable) Information may be provided).
[0062]
Note that there is a method of using a format that does not describe a fingerprint in a message as shown in FIG. In this case, the presence or absence of FP compression can be identified by whether or not the fingerprint is included in the message header. However, if there is a message that is not subject to FP compression, for example, information indicating whether the message is subject to FP compression or not may be provided in the message header.
[0063]
In the following, the present embodiment will be described in detail with a focus on the case where the reply data is transferred from the server-side proxy 30 to the client-side proxy 40 when the reply data is FP compressed / decompressed.
[0064]
FIG. 12 shows a configuration example of the server side proxy 30 of the present embodiment, and FIG. 13 shows a configuration example of the client side proxy 40 of the present embodiment. 12 and 13 mainly show the configuration for transferring data from the server-side proxy 30 to the client-side proxy 40. FIG.
[0065]
As shown in FIG. 12, the server-side proxy 30 includes a receiving unit 31 that performs processing for receiving a transfer message from the intra-server center LAN 12 or the wide area network 14, and performs FP compression on data included in the transfer message. A processing unit 32 for performing processing, a transmission unit 33 for performing processing for transmitting a transfer message to the LAN 12 in the server center or the wide area network 14, and a finger for associating and storing the fingerprint and the original data A print cache (FP cache) 34 is provided. In addition, the processing unit 32 is for performing search and registration with respect to the fingerprint (FP) compression determination unit 321 and the fingerprint cache 34 for determining whether or not the data included in the transfer message is to be compressed. A fingerprint cache (FP cache) management unit 322 and a fingerprint (FP) compression processing unit 323 for performing processing such as replacing data included in the transfer message with a corresponding fingerprint are included.
[0066]
Now, the FP cache management unit 322 manages the correspondence between fingerprints and data for each client-side proxy 40 that is a partner for performing communication to which FP compression is applied. Although there are various variations in the form, some of them will be described below (note that FIG. 12 shows a state in which the FP cache 34 logically corresponding to each of the client side proxies 40 is provided). .
[0067]
(1) FIG. 14 shows a configuration in which a hash table is provided for each client-side proxy 40 and data corresponding to a fingerprint is also held for each client-side proxy 40 (the same content has a copy for each client-side proxy) It is an example. In this case, the FP cache management unit 322 specifies the FP cache 34 corresponding to the client-side proxy 40 that is the data transfer destination, and determines whether or not the fingerprint corresponding to the data is held in the FP cache 34. Will be checked.
[0068]
(2) In FIG. 15, a hash table is provided for each client-side proxy 40, but only one identical content is held, and pointer information is held in the hash table (note that the client-side proxy 40 is different and has a fingerprint. If the contents of the original data are different even if the values of are the same, the respective data are retained). In this case, the FP cache management unit 322 specifies the FP cache 34 corresponding to the client-side proxy 40 that is the data transfer destination, and determines whether or not the fingerprint corresponding to the data is held in the FP cache 34. Will be checked.
[0069]
(3) FIG. 16 shows client-side proxy identification information for identifying a client-side proxy serving as a transfer destination of data corresponding to the fingerprint in the hash table instead of providing the FP cache 34 for each client-side proxy 40. Is added to form a pair of client side proxy identification information and a fingerprint value. FIG. 16 shows a configuration example in which there is only one identical content as in (2) and the pointer information is held in the hash table, but instead, as in (1), A configuration example in which data is held for each entry is also possible. The client side proxy identification information is information that can uniquely identify the client side proxy. For example, an IP address, a MAC address, a host ID, a channel identifier, or information that can uniquely identify them can be used. In this case, the FP cache management unit 322 specifies the client-side proxy identification information of the client-side proxy 40 that is the data transfer destination, and stores the client-side proxy identification information and the fingerprint corresponding to the data in the FP cache 34. It is checked whether or not the pair is held.
[0070]
(4) In FIG. 17, the FP cache 34 is not provided for each client-side proxy 40, and the client-side proxy identification information group that can use the fingerprint is stored in the hash table corresponding to the fingerprint value. This is an example of the configuration. In this case, the FP cache management unit 322 specifies the client-side proxy identification information of the client-side proxy 40 that is the data transfer destination, and whether or not the fingerprint corresponding to the data is held in the FP cache 34. It is checked whether the client side proxy identification information is held in the client side proxy identification information group for the fingerprint.
[0071]
Next, as shown in FIG. 13, the client-side proxy 40 performs processing for receiving the transfer message from the user office LAN 16 or the wide area network 14, and the data included in the transfer message. A processing unit 42 for performing FP decompression, a transmission unit 43 for performing processing for transmitting a transfer message to the user office LAN 16 or the wide area network 14, and storing fingerprints in association with the original data A fingerprint cache (FP cache) 44 is provided. In addition, the processing unit 42 applies a fingerprint (FP) compression determination unit 421 and a fingerprint cache 34 for determining whether or not the data included in the transfer message is to be compressed and whether or not the transfer message is subjected to FP compression. Fingerprint cache (FP cache) management unit 422 for performing search and registration, fingerprint (FP) for performing processing such as decompressing the original data from the fingerprint included in the FP compressed transfer message A decompression processing unit 423 is included.
[0072]
Note that the compression-side FP compression determination unit 321 and the decompression-side FP compression determination unit 421 check whether the message satisfies a predetermined condition as described above, thereby converting the data included in the message into the FP. It is determined whether or not to apply compression (when all messages are to be applied to FP compression, the FP compression determination unit 321 on the compression side and the corresponding part of the procedure example shown below are unnecessary, and decompression is performed. The corresponding determination part of the FP compression determination unit 421 on the side and the corresponding part of the procedure example shown later are unnecessary). In addition, the decompression-side FP compression determination unit 421 determines whether or not the data subjected to FP compression application is FP compressed. In the following, description will be focused on the case of transferring a message to which FP compression is applied (when it is determined that FP compression is to be applied, or when all messages are to be applied to FP compression).
[0073]
FIG. 18 shows an example of the processing procedure of the server-side proxy 30 from when the server-side proxy 30 receives the request message from the client-side proxy 40 until the reply message is transferred to the client-side proxy 40.
[0074]
FIG. 18 describes processing corresponding to a single request from the client-side proxy 40 of the server-side proxy 30. For example, when request messages are simultaneously received from a plurality of client-side proxies 40, Each time a request is received, the processing of FIG. 18 is performed in parallel.
[0075]
FIG. 18 shows a case where FP compression is not performed in the transfer of the request message from the client side proxy 40 to the server side proxy 30, and FP compression is used in the transfer of the reply message from the server side proxy 30 to the client side proxy 40. This is an example procedure.
[0076]
In the following, the request-source client-side proxy refers to a client-side proxy corresponding to the request-source client, that is, a request message transmission source and a reply message reception destination in processing for a pair of request message and reply message. The client-side proxy.
[0077]
When the server-side proxy 30 receives a request message from a certain client-side proxy (that is, a request-source client-side proxy) 40 among a plurality of client-side proxies (step S1), the server-side proxy 30 serves as a destination server. 20 (step S2). At this time, as processing for the pair of request message and reply message, a state of waiting for reception of the corresponding reply message is entered.
[0078]
Now, when the server-side proxy 30 receives a reply message from the server 20 by the receiving unit 31 (step S3), first, the reply data of the reply message is subject to FP compression by the FP compression determination unit 321. It is checked and determined whether or not (step S4). If it is determined that the reply data is not subject to FP compression (step S4), the received reply message is transferred from the transmission unit 33 to the client side proxy 40 (step S9).
[0079]
If it is determined in step S4 that the reply data of the reply message is for FP compression, the FP cache management unit 322 calculates a fingerprint value of the reply data (step S5). Using the fingerprint value as a key, the fingerprint cache 34 corresponding to the requesting client-side proxy 40 is searched (step S6).
[0080]
If the set of the fingerprint value and the corresponding data is registered in the fingerprint cache 34 corresponding to the requesting client-side proxy 40 (step S7), the FP compression processing unit At 323, the received reply message is converted into a format at the time of FP compression using the fingerprint value (for example, FIG. 9B) and transmitted from the transmission unit 33 to the requesting client side proxy 40. (Step S8). At this time, the value of the field (Content-Length: field) indicating the data length in the reply header is set according to the format at the time of FP compression as necessary.
[0081]
On the other hand, as a result of the search in step S6, if the pair of the fingerprint value and the corresponding data is not registered in the fingerprint cache 34 corresponding to the requesting client-side proxy 40 ( Step S7), the following two operations are performed.
(1) In the FP compression processing unit 323, the received reply message is converted into a format for non-FP compression (using the fingerprint value as necessary) (for example, FIG. 9A) and transmitted. The unit 33 transmits the request to the requesting client-side proxy 40 (step S10).
(2) The FP cache management unit 322 associates the fingerprint value with the reply data (using the fingerprint value as a key), and the fingerprint corresponding to the requesting client-side proxy 40 Register in the cache 34 (step S11).
[0082]
Note that either of (1) and (2) may be performed first or in parallel.
[0083]
FIG. 19 shows an example of a processing procedure of the client side proxy 40 from when the client side proxy 40 receives the request message from the client 50 to when the reply message is transferred to the client 50.
[0084]
FIG. 19 describes processing according to a single request from the client 50 of the client side proxy 40. For example, when request messages are simultaneously received from a plurality of clients 50, each request is received. 19 are performed in parallel.
[0085]
FIG. 19 shows a case where FP compression is not performed in the transfer of a request message from the client side proxy 40 to the server side proxy 30, and FP compression is used in the transfer of a reply message from the server side proxy 30 to the client side proxy 40. This is an example procedure.
[0086]
When the client-side proxy 40 receives a request message from the requesting client 50 (step S21), the client-side proxy 40 transmits the request message to the server-side proxy 30 corresponding to the destination server 20 (step S22). At this time, as processing for the pair of request message and reply message, a state of waiting for reception of the corresponding reply message is entered.
[0087]
After that, when the client side proxy 40 receives the reply message from the server side proxy 30 by the receiving unit 41 (step S23), the reply data of the reply message is first subjected to FP compression by the FP compression determination unit 421. It is checked and judged whether it is a thing (step S24). If it is determined that the reply data is not subject to FP compression (step S24), the received reply message is transferred from the transmitter 43 to the client 50 (step S32).
[0088]
If it is determined in step S24 that the reply data of the reply message is for FP compression, the FP compression determination unit 421 further checks and determines whether the reply data is FP compressed (step). S25).
[0089]
If it is determined in step S25 that the reply data of the reply message is FP-compressed (for example, in the case of FIG. 9B), the FP cache management unit 422 determines the fingerprint of the reply data. A value is obtained (step S26), and the fingerprint cache 44 is searched using the fingerprint value as a key (step S27).
[0090]
When the FP decompression processing unit 423 adds data corresponding to the fingerprint value retrieved from the fingerprint cache 44 to the received reply message and uses special information between proxies. After deleting this information, the information is transmitted from the transmission unit 43 to the client 50 (step S28). At this time, if necessary, the value of the field (Content-Length: field) indicating the data length in the reply header is set to the length of the data corresponding to the value of the fingerprint.
[0091]
On the other hand, if it is determined in step S25 that the reply data of the reply message is not FP compressed (for example, in the case of FIG. 9A), the following two operations are performed.
(1) When special information is used between proxies in the FP decompression processing unit 423, the information is deleted from the received reply message and then transmitted from the transmission unit 43 to the client 50 (step S30).
(2) The FP cache management unit 422 obtains the fingerprint value of the reply data (step S29), associates the fingerprint value with the reply data (using the fingerprint value as a key). ) And is registered in the fingerprint cache 44 (step S31).
[0092]
Note that either of (1) and (2) may be performed first or in parallel.
[0093]
By the way, in step S26, the fingerprint is described in the message. However, in step S29, when a fingerprint is described in the message, a method for obtaining the fingerprint from the message, and when no fingerprint is described in the message, a hash function or the like is used based on the reply data. There is a method of calculating a fingerprint value. Even when the fingerprint is described in the message, a method of calculating the fingerprint value based on the reply data is also possible.
Moreover, step S26 / step S29 may be performed between step S24 and step S25, and step S29 may be performed between step S30 and step S31.
[0094]
Further, the determination in step S24 and the determination in step S25 may be performed simultaneously.
[0095]
Next, FIG. 20 shows an operation example in the case where data not registered in the fingerprint cache is transferred from the server side proxy 30 to the client side proxy 40 and the fingerprint cache is registered.
[0096]
(1) Assume that the browser or the like on the client 50 issues a POST method request message to the server 20 with a URL of “/A.cgi”, for example. First, a browser or the like is set so that a request message to the server 20 is sent to the client-side proxy 40.
[0097]
(2), (3) The request message is transferred to the server 20 by the client side proxy 40 and the server side proxy 30 corresponding to the destination server 20.
[0098]
(4) After processing the request message, the server 20 transfers the reply message to the server-side proxy 30.
[0099]
(5), (6) Since the reply data of the received reply message is the first data for the requesting client-side proxy 40, the server-side proxy 30 corresponds to the requesting client-side proxy 40. While registering in the fingerprint cache 34, the reply message is transferred to the client side proxy 40.
[0100]
(7), (8) Since the reply data of the received reply message is the first data, the client side proxy 40 obtains a fingerprint based on the reply data, and stores it in the fingerprint cache 44 together with the reply data. sign up. Then, the reply message is transferred to the requesting client 50 (such as a browser operating on the requesting client).
[0101]
Next, FIG. 21 shows an operation example when the operation shown in FIG. 20 is performed and the cache-registered data is transferred from the server side proxy 30 to the client side proxy 40.
[0102]
(1) to (4) are the same as (1) to (4) in the operation described with reference to FIG.
[0103]
(5), (6) The server side proxy 40 uses the corresponding fingerprint registered in the fingerprint cache 34 corresponding to the requesting client side proxy 40 as the reply data of the reply message received from the server 20. Replace and transfer to the client side proxy 40.
[0104]
(7), (8) The client side proxy 40 detects that the reply data of the reply message has been replaced with the fingerprint, and retrieves the corresponding data from the fingerprint cache 44 using the specified fingerprint. After this is put in the reply body, the reply message is transferred to the requesting client 50 (such as a browser operating on the requester).
[0105]
So far, the description has focused on the reply message transferred from the server-side proxy to the client-side proxy, but of course, the present invention can also be applied to other messages.
[0106]
In the past, when data is transferred from the server-side proxy 30 to the client-side proxy 40, if the data is the same as the data registered in the fingerprint cache, the data is replaced with the data. Although the network traffic is reduced by transferring the corresponding fingerprint, this FP compression may be applied when transferring data such as request data from the client side proxy 40 to the server side proxy 30. Is possible.
[0107]
In the past, the entire data included in one message was subject to FP compression (target to be registered in the fingerprint cache). For example, the data included in one message is the data of a predetermined unit. In the case of being configured as a set, a configuration in which only a part of unit data included in one message is subject to FP compression (target to be registered in the fingerprint cache) is also possible.
[0108]
Each function described above can be realized as software.
The present embodiment can also be implemented as a program for causing a computer to execute predetermined means (or for causing a computer to function as predetermined means, or for causing a computer to realize predetermined functions), The present invention can also be implemented as a computer-readable recording medium that records the program.
[0109]
Note that the configuration illustrated in the embodiment of the present invention is an example, and is not intended to exclude other configurations, and a part of the illustrated configuration may be replaced with another or one of the illustrated configurations. Other configurations obtained by omitting a part, adding another function or element to the illustrated configuration, or combining them are also possible. Also, another configuration that is logically equivalent to the exemplified configuration, another configuration that includes a portion that is logically equivalent to the exemplified configuration, another configuration that is logically equivalent to the main part of the illustrated configuration, and the like are possible. is there. Further, another configuration that achieves the same or similar purpose as the illustrated configuration, another configuration that achieves the same or similar effect as the illustrated configuration, and the like are possible.
In addition, various variations of various components illustrated in the embodiment of the present invention can be implemented in appropriate combination.
Further, the embodiment of the present invention is an invention of an invention as an individual device, an invention of two or more related devices, an invention of the entire system, an invention of components within an individual device, or a method corresponding thereto. The invention includes inventions according to various viewpoints, stages, concepts, or categories.
Therefore, the present invention can be extracted from the contents disclosed in the embodiments of the present invention without being limited to the exemplified configuration.
[0110]
The present invention is not limited to the embodiment described above, and can be implemented with various modifications within the technical scope thereof.
[0111]
【The invention's effect】
  According to the present invention,The server-side proxy provided on the server device side receives the request data issued by the client device to the server device from the client-side proxy provided on the client device side and transfers the request data to the server device. When a device receives reply data that is a reply to the request data addressed to the client device and transfers it to the client side proxy, the received replydataFingerprint generated fromTheIn association with the reply data, a fingerprint cache for each client-side proxy corresponding to the client-side proxy associated with the client device that is the destination of the reply dataRetentionThus, when reply data is received from the server device, the fingerprint is stored in the fingerprint cache for each client-side proxy corresponding to the client-side proxy related to the client device that is the destination of the reply data.RetentionIsingreplyFor data,The replyRespond instead of transferring dataFingerprintBy transferringBetween the server-side proxy and the client-side proxyThe amount of data transferred between them can be reduced.
[Brief description of the drawings]
FIG. 1 is a diagram showing a configuration example of a computer network system according to an embodiment of the present invention.
FIG. 2 is a view showing another configuration example of the computer network system according to the embodiment;
FIG. 3 is a view showing still another configuration example of the computer network system according to the embodiment;
FIG. 4 is a diagram showing still another configuration example of the computer network system according to the embodiment;
FIG. 5 is a diagram for explaining a fingerprint used in the embodiment;
FIG. 6 is a diagram for explaining a fingerprint cache used in the embodiment;
FIG. 7 is a view showing an example of a message format used in the embodiment.
FIG. 8 is a view showing another example of the message format used in the embodiment.
FIG. 9 is a view showing still another example of the message format used in the embodiment.
FIG. 10 is a view showing still another example of the message format used in the embodiment.
FIG. 11 is a view showing still another example of the message format used in the embodiment.
FIG. 12 is a diagram showing a configuration example of a server side proxy according to the embodiment;
FIG. 13 is a view showing a configuration example of a client side proxy according to the embodiment;
FIG. 14 is a view for explaining an example of a fingerprint cache in the embodiment;
FIG. 15 is a view for explaining another example of the fingerprint cache in the embodiment;
FIG. 16 is a diagram for explaining still another example of the fingerprint cache in the embodiment;
FIG. 17 is a view for explaining still another example of the fingerprint cache in the embodiment;
FIG. 18 is a flowchart showing a procedure example of a server-side proxy according to the embodiment;
FIG. 19 is a flowchart showing a procedure example of the client side proxy according to the embodiment;
FIG. 20 is a diagram for explaining data transfer between the server-side proxy and the client-side proxy according to the embodiment;
FIG. 21 is a view for explaining data transfer between the server-side proxy and the client-side proxy according to the embodiment;
FIG. 22 is a diagram for explaining a conventional computer network system;
[Explanation of symbols]
2 ... ASP server center
4. User office
12 ... ASP server center LAN
14 ... WAN
16 ... LAN in user office
20 ... Server device
30 ... Server-side proxy device
40 ... Client-side proxy device
50. Client device
31, 41 ... receiving unit
32, 42 ... processing section
33, 43 ... Transmitter
34, 44 ... Fingerprint cash
35, 45 ... URL / FP table
321, 421 ... FP compression determination unit
322, 422 ... Fingerprint cache management unit
323... FP compression processing unit
423 ... FP decompression processing part
324, 424 ... URL cache processing unit
325,425 ... FP decompression / decompression processor

Claims (7)

クライアント装置からサーバ装置宛に送信されクライアント側プロキシに中継されたリクエストデータを受信して前記サーバ装置へ転送し、前記リクエストデータへの返答として前記サーバ装置から前記クライアント装置宛に送信されるリプライデータを前記クライアント側プロキシへ転送するサーバ側プロキシデータ転送方法であって、
複数のクライアント側プロキシそれぞれから転送されるリクエストデータそれぞれへの返答であるリプライデータそれぞれを、前記サーバ装置から受信し、
前記リプライデータそれぞれのフィンガープリントを生成し、
生成した前記フィンガープリントそれぞれを、それぞれの元であった前記リプライデータそれぞれに関連付けて、前記リプライデータそれぞれの宛先となるクライアント装置それぞれに通ずるクライアント側プロキシ毎に、クライアント側プロキシ毎フィンガープリント・キャッシュとして保持し、
或クライアント側プロキシから転送された或リクエストデータへの返答である或リプライデータを前記サーバ装置から受信し、
前記或リプライデータのフィンガープリントである或フィンガープリントを生成し、
前記或フィンガープリントが、前記或リプライデータの宛先となる或クライアント装置に通ずる或クライアント側プロキシに対応するクライアント側プロキシ毎フィンガープリント・キャッシュに保持されているか否か判定し、
前記判定にて、前記或フィンガープリントが前記或クライアント側プロキシに対応するクライアント側プロキシ毎フィンガープリント・キャッシュに保持されていると判定された場合に、前記或リプライデータの代わりに前記或フィンガープリントを前記或クライアント装置宛として前記或クライアント側プロキシへ送信し、
前記判定にて、前記或フィンガープリントが前記或クライアント側プロキシに対応するクライアント側プロキシ毎フィンガープリント・キャッシュに保持されていないと判定された場合に、前記或フィンガープリントと前記或リプライデータとを関連付けて前記或クライアント側プロキシに対応する前記クライアント側プロキシ毎フィンガープリント・キャッシュに追加しかつ前記或リプライデータを前記或クライアント装置宛として前記或クライアント側プロキシへ送信することを特徴とするデータ転送方法。
Reply data transmitted from the client device to the server device, received as request data relayed to the client-side proxy, transferred to the server device, and sent as a reply to the request data from the server device to the client device the a server side proxy data transfer method for transferring to the client-side proxy,
Each of reply data that is a response to each of request data transferred from each of a plurality of client side proxies is received from the server device,
Generating a fingerprint for each of the reply data;
Each of the generated fingerprints is associated with each of the original reply data, and each client-side proxy that communicates with each client device that is the destination of the reply data is used as a fingerprint cache for each client-side proxy. Hold and
Receiving reply data from the server device that is a reply to the request data transferred from the client-side proxy;
Generating a fingerprint that is a fingerprint of the reply data;
Determining whether the fingerprint is held in a fingerprint cache for each client-side proxy corresponding to a client-side proxy that communicates with a client device that is the destination of the reply data;
If it is determined in the determination that the certain fingerprint is held in the fingerprint cache for each client-side proxy corresponding to the certain client-side proxy, the certain fingerprint is used instead of the certain reply data. Send to the client-side proxy as addressed to the client device,
If it is determined in the determination that the fingerprint is not stored in the fingerprint cache for each client-side proxy corresponding to the client-side proxy, the fingerprint is associated with the reply data. A data transfer method comprising: adding to the fingerprint cache for each client-side proxy corresponding to the client-side proxy and transmitting the reply data to the client-side proxy as addressed to the client device.
複数のクライアント装置それぞれからサーバ装置宛に送信され、複数のクライアント装置それぞれの前記サーバ装置へのアクセスの代理を担当するクライアント側プロキシそれぞれに中継された、複数のリクエストデータを受信して前記サーバ装置へ転送し、前記複数のリクエストデータそれぞれへの返答として前記サーバ装置から前記クライアント装置それぞれ宛に送信されるリプライデータそれぞれを、リプライデータそれぞれの宛先たるクライアント装置の代理であるクライアント側プロキシそれぞれへ転送するサーバ側プロキシであって、
複数のクライアント側プロキシそれぞれから転送されるリクエストデータそれぞれへの返答であるリプライデータそれぞれを、前記サーバ装置から受信し、さらに、前記複数のクライアント側プロキシのうちの或クライアント側プロキシから転送された或リクエストデータへの返答である或リプライデータをも受信する受信手段と、
前記リプライデータそれぞれのフィンガープリントを生成し、さらに前記或リプライデータのフィンガープリントである或フィンガープリントを生成するフィンガープリント生成手段と、
生成した前記フィンガープリントそれぞれを、それぞれの元であった前記リプライデータそれぞれに関連付けて、前記リプライデータそれぞれの宛先たるクライアント装置それぞれの代理であるクライアント側プロキシ毎に、クライアント側プロキシ毎フィンガープリント・キャッシュとして保持する保持手段と、
前記或フィンガープリントが、前記或リプライデータの宛先たる或クライアント装置の代理である或クライアント側プロキシに対応するクライアント側プロキシ毎フィンガープリント・キャッシュに保持されているか否か判定する判定手段と、
前記或フィンガープリントが前記或クライアント側プロキシに対応するクライアント側プロキシ毎フィンガープリント・キャッシュに保持されていると前記判定手段が判定した場合に、前記或リプライデータの代わりに前記或フィンガープリントを前記或クライアント装置宛として前記或クライアント側プロキシへ送信し、前記或フィンガープリントが前記或クライアント側プロキシに対応するクライアント側プロキシ毎フィンガープリント・キャッシュに保持されていないと前記判定手段が判定した場合に、前記或フィンガープリントと前記或リプライデータとを関連付けて前記或クライアント側プロキシに対応する前記クライアント側プロキシ毎フィンガープリント・キャッシュに追加しかつ前記或リプライデータを前記或クライアント装置宛として前記或クライアント側プロキシへ送信する送信手段とを備えることを特徴とするサーバ側プロキシ。
The server apparatus receives a plurality of request data transmitted from each of the plurality of client apparatuses to the server apparatus and relayed to each of the client side proxies in charge of access to the server apparatuses of the plurality of client apparatuses. And the reply data transmitted from the server device to each of the client devices as a response to each of the plurality of request data is forwarded to each of the client side proxies acting as a proxy of the client device that is the destination of the reply data. A server-side proxy that
Reply data that is a response to request data transferred from each of a plurality of client-side proxies is received from the server device, and is further transferred from a client-side proxy of the plurality of client-side proxies. Receiving means for receiving reply data that is a reply to the request data;
Fingerprint generation means for generating a fingerprint of each of the reply data, and further generating a fingerprint that is a fingerprint of the reply data;
Each of the generated fingerprints is associated with each of the original reply data, and for each client-side proxy acting as a proxy for each client device that is the destination of the reply data, a client-side proxy fingerprint cache Holding means for holding as,
Determining means for determining whether or not the fingerprint is held in a fingerprint cache for each client-side proxy corresponding to a client-side proxy that is a proxy for a client device that is the destination of the reply data;
When the determination unit determines that the fingerprint is held in a fingerprint cache for each client-side proxy corresponding to the client-side proxy, the fingerprint is replaced with the one or more instead of the reply data. When the determination means determines that the fingerprint is not held in the fingerprint cache for each client-side proxy corresponding to the client-side proxy, A fingerprint and the reply data are associated with each other and added to the client-side proxy fingerprint cache corresponding to the client-side proxy, and the reply data is added to the client Server side proxy, characterized in that it comprises a transmitting means for transmitting said to certain client-side proxy as 置宛.
前記フィンガープリントは、所定の方法によって前記リプライデータを圧縮して得た値であることを特徴とする請求項2に記載のサーバ側プロキシ。  The server-side proxy according to claim 2, wherein the fingerprint is a value obtained by compressing the reply data by a predetermined method. 前記フィンガープリントは、前記リプライデータに所定のハッシュ関数を適用して得られた値であることを特徴とする請求項2に記載のサーバ側プロキシ。  The server-side proxy according to claim 2, wherein the fingerprint is a value obtained by applying a predetermined hash function to the reply data. 前記クライアント側プロキシは、第1のローカルエリアネットワークを介して前記クライアント装置と接続されたものであり、前記サーバ側プロキシは、第2のローカルエリアネットワークを介して前記サーバ装置と接続されたものであることを特徴とする請求項2に記載のサーバ側プロキシ。  The client-side proxy is connected to the client device via a first local area network, and the server-side proxy is connected to the server device via a second local area network. The server-side proxy according to claim 2, wherein there is a server-side proxy. 前記クライアント側プロキシと前記サーバ側プロキシとは、インターネットを介して接続されたものであることを特徴とする請求項2に記載のサーバ側プロキシ。  The server-side proxy according to claim 2, wherein the client-side proxy and the server-side proxy are connected via the Internet. 複数のクライアント装置それぞれからサーバ装置宛に送信され、複数のクライアント装置それぞれの前記サーバ装置へのアクセスの代理を担当するクライアント側プロキシそれぞれに中継された、複数のリクエストデータを受信して前記サーバ装置へ転送し、前記複数のリクエストデータそれぞれへの返答として前記サーバ装置から前記クライアント装置それぞれ宛に送信されるリプライデータそれぞれを、リプライデータそれぞれの宛先たるクライアント装置の代理であるクライアント側プロキシそれぞれへ転送するサーバ側プロキシとしてコンピュータを機能させるためのプログラムであって、
複数のクライアント側プロキシそれぞれから転送されるリクエストデータそれぞれへの返答であるリプライデータそれぞれを、前記サーバ装置から受信し、さらに、前記複数のクライアント側プロキシのうちの或クライアント側プロキシから転送された或リクエストデータへの返答である或リプライデータをも受信する受信機能と、
前記リプライデータそれぞれのフィンガープリントを生成し、さらに前記或リプライデータのフィンガープリントである或フィンガープリントを生成するフィンガープリント生成機能と、
生成した前記フィンガープリントそれぞれを、それぞれの元であった前記リプライデータそれぞれに関連付けて、前記リプライデータそれぞれの宛先たるクライアント装置それぞれの代理であるクライアント側プロキシ毎に、クライアント側プロキシ毎フィンガープリント・キャッシュとして保持する保持機能と、
前記或フィンガープリントが、前記或リプライデータの宛先たる或クライアント装置の代理である或クライアント側プロキシに対応するクライアント側プロキシ毎フィンガープリント・キャッシュに保持されているか否か判定する判定機能と、
前記或フィンガープリントが前記或クライアント側プロキシに対応するクライアント側プロキシ毎フィンガープリント・キャッシュに保持されていると前記判定機能が判定した場合に、前記或リプライデータの代わりに前記或フィンガープリントを前記或クライアント装置宛として前記或クライアント側プロキシへ送信し、前記或フィンガープリントが前記或クライアント側プロキシに対応するクライアント側プロキシ毎フィンガープリント・キャッシュに保持されていないと前記判定機能が判定した場合に、前記或フィンガープリントと前記或リプライデータとを関連付けて前記或クライアント側プロキシに対応する前記クライアント側プロキシ毎フィンガープリント・キャッシュに追加しかつ前記或リプライデータを前記或クライアント装置宛として前記或クライアント側プロキシへ送信する送信機能とをコンピュータに実現させるためのプログラム。
The server apparatus receives a plurality of request data transmitted from each of the plurality of client apparatuses to the server apparatus and relayed to each of the client side proxies in charge of access to the server apparatuses of the plurality of client apparatuses. And the reply data transmitted from the server device to each of the client devices as a response to each of the plurality of request data is forwarded to each of the client side proxies acting as a proxy of the client device that is the destination of the reply data. A program for causing a computer to function as a server-side proxy
Reply data that is a response to request data transferred from each of a plurality of client-side proxies is received from the server device, and is further transferred from a client-side proxy of the plurality of client-side proxies. A receiving function that also receives reply data that is a reply to request data;
A fingerprint generation function for generating a fingerprint of each of the reply data, and further generating a fingerprint that is a fingerprint of the certain reply data;
Each of the generated fingerprints is associated with each of the original reply data, and for each client-side proxy acting as a proxy for each client device that is the destination of the reply data, a client-side proxy fingerprint cache Holding function to hold as,
A determination function for determining whether or not the fingerprint is held in a fingerprint cache for each client-side proxy corresponding to a client-side proxy that is a proxy of a client device that is the destination of the reply data;
When the determination function determines that the certain fingerprint is held in the fingerprint cache for each client-side proxy corresponding to the certain client-side proxy, the certain fingerprint is used instead of the certain reply data. When the determination function determines that the fingerprint is not held in the fingerprint cache for each client-side proxy corresponding to the client-side proxy, A fingerprint and the reply data are associated with each other and added to the client-side proxy fingerprint cache corresponding to the client-side proxy, and the reply data is added to the client Program for realizing the transmission function to the computer to the transmission to the certain client-side proxy as 置宛.
JP2001179015A 2001-06-13 2001-06-13 Server-side proxy, data transfer method and program Expired - Fee Related JP3943867B2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2001179015A JP3943867B2 (en) 2001-06-13 2001-06-13 Server-side proxy, data transfer method and program
US10/167,413 US7383348B2 (en) 2001-06-13 2002-06-13 Data transfer scheme using caching technique for reducing network load
US12/058,820 US7480731B2 (en) 2001-06-13 2008-03-31 Data transfer scheme using caching technique for reducing network load

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001179015A JP3943867B2 (en) 2001-06-13 2001-06-13 Server-side proxy, data transfer method and program

Publications (2)

Publication Number Publication Date
JP2002373107A JP2002373107A (en) 2002-12-26
JP3943867B2 true JP3943867B2 (en) 2007-07-11

Family

ID=19019633

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001179015A Expired - Fee Related JP3943867B2 (en) 2001-06-13 2001-06-13 Server-side proxy, data transfer method and program

Country Status (1)

Country Link
JP (1) JP3943867B2 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0321426D0 (en) * 2003-09-12 2003-10-15 Ericsson Telefon Ab L M Data sharing in a multimedia communication system
JP4973358B2 (en) * 2007-07-23 2012-07-11 株式会社日立製作所 Remote operation system
JP5131915B2 (en) * 2008-03-31 2013-01-30 国立大学法人 東京大学 Packet encoding method and apparatus, and decoding method and apparatus
US10805421B2 (en) * 2018-04-03 2020-10-13 Citrix Systems, Inc. Data caching for cloud services
WO2020004033A1 (en) 2018-06-28 2020-01-02 ソニー株式会社 Information processing device, information processing method, and program

Also Published As

Publication number Publication date
JP2002373107A (en) 2002-12-26

Similar Documents

Publication Publication Date Title
JP3990115B2 (en) Server-side proxy device and program
US7383348B2 (en) Data transfer scheme using caching technique for reducing network load
US7636765B2 (en) Data transfer scheme using caching technique for reducing network load
US8024484B2 (en) Caching signatures
US20020004816A1 (en) System and method for on-network storage services
JP3984086B2 (en) Cache server, data transfer device, and program
JP3848209B2 (en) Data transfer device, data transfer method and program
JP4031516B2 (en) Server side proxy device, client side proxy device, data transfer method and program
JP3983987B2 (en) Server-side proxy device, data transfer method, and program
JP4053269B2 (en) Data transfer apparatus and data transfer method
JP3943867B2 (en) Server-side proxy, data transfer method and program
JP3943868B2 (en) Server-side proxy, data transfer method and program
JP3913508B2 (en) Data transfer apparatus and data transfer method
JP2003108464A (en) Device and method for transferring data
JP4041157B2 (en) Client side proxy device, data transfer method and program
JP3977601B2 (en) Server side proxy device, client side proxy device and program
JP3977651B2 (en) Data transfer method, server side proxy device, client side proxy device and program
JP4157585B2 (en) Server side proxy device, client side proxy device, data transfer method and program
JP4300220B2 (en) Data transfer apparatus and data transfer method

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060815

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061016

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20061212

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070131

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070215

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070406

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

Free format text: PAYMENT UNTIL: 20110413

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130413

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20140413

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees