JP3848209B2 - Data transfer device, data transfer method and program - Google Patents

Data transfer device, data transfer method and program Download PDF

Info

Publication number
JP3848209B2
JP3848209B2 JP2002149131A JP2002149131A JP3848209B2 JP 3848209 B2 JP3848209 B2 JP 3848209B2 JP 2002149131 A JP2002149131 A JP 2002149131A JP 2002149131 A JP2002149131 A JP 2002149131A JP 3848209 B2 JP3848209 B2 JP 3848209B2
Authority
JP
Japan
Prior art keywords
data
fingerprint
client
server
complete
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
JP2002149131A
Other languages
Japanese (ja)
Other versions
JP2003345708A (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 JP2002149131A priority Critical patent/JP3848209B2/en
Publication of JP2003345708A publication Critical patent/JP2003345708A/en
Application granted granted Critical
Publication of JP3848209B2 publication Critical patent/JP3848209B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

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】
【課題を解決するための手段】
本発明は、サーバ装置と、該サーバ装置がクライアント装置宛に送信するデータを中継する他のデータ転送装置との通信を中継するデータ転送装置において、サーバ装置から受信して他のデータ転送装置へ送信した第1の完全データと、該第1の完全データをもとに生成した第1のフィンガープリントと、前記第1の完全データが完全データであることを示す第1の識別情報とを対応付けて保持する保持手段と、前記サーバ装置がクライアント装置を宛先として送信した第2の完全データを受信する受信手段と、前記第1の完全データと前記第2の完全データとの差分である差分データと、該第2の完全データをもとに生成した第2のフィンガープリントと、前記差分データが差分データであることを示す第2の識別情報とを対応付けて前記保持手段に保持させるとともに、前記差分データと前記第2の識別情報とを、前記クライアント装置を宛先として送信する送信手段とを備えたことを特徴とする。
また、本発明は、サーバ装置がクライアント装置宛に送信するデータを中継する他のデータ転送装置と、前記クライアント装置との通信を中継するデータ転送装置において、他のデータ転送装置から受信してクライアント装置へ送信した第1の完全データと、該第1の完全データをもとに生成した第1のフィンガープリントと、前記第1の完全データが完全データであることを示す第1の識別情報とを対応付けて保持する保持手段と、前記クライアント装置が宛先とされた、前記第1の完全データと第2の完全データとの差分である差分データと、該差分データが差分データであることを示す第2の識別情報とを受信する受信手段と、前記第1の完全データと前記差分データとを用いて前記第2の完全データを生成し、該差分データと、該第2の完全データをもとに生成した第2のフィンガープリントと、前記第2の識別情報とを対応付けて前記保持手段に保持させるとともに、該第2の完全データを、前記クライアント装置を宛先として送信する送信手段とを備えたことを特徴とする。
【0023】
なお、装置に係る本発明は方法に係る発明としても成立し、方法に係る本発明は装置に係る発明としても成立する。
また、装置または方法に係る本発明は、コンピュータに当該発明に相当する手順を実行させるための(あるいはコンピュータを当該発明に相当する手段として機能させるための、あるいはコンピュータに当該発明に相当する機能を実現させるための)プログラムとしても成立し、該プログラムを記録したコンピュータ読取り可能な記録媒体としても成立する。
【0024】
本発明によれば、データ転送装置間でデータとその名前との対応を保持し、この対応を保持しているデータについては、データ本体を転送する代わりに対応する名前を転送することで、データ転送装置間の転送データ量を削減させることができる。例えば、GETメソッドのリプライメッセージがプライベートデータであっても、これをフィンガープリントにより圧縮してデータ転送装置間を転送することができるようになる。また、例えば、GETメソッドのリプライメッセージが動的データであっても、内容が同じデータなら、これをフィンガープリントにより圧縮してデータ転送装置間を転送することができるようになる。また、例えば、POSTメソッドであっても、結果が同じデータなら、これをフィンガープリントにより圧縮してデータ転送装置間を転送することができるようになる。
【0025】
また、本発明によれば、データに対応する名前が保持されていないために、データを転送する代わりに対応する名前を転送することができない場合であっても、保持されている参照データに対応する名前を利用して当該データを圧縮して表現した圧縮データを転送することによって、データ転送装置間の転送データ量を削減することができる。例えば、GETメソッドやPOSTメソッドのリプライデータが以前にアクセスしたデータと一部が異なる場合には、差分転送することで、データ量を削減することができる。また、例えば、PUTメソッドやPOSTメソッドのリクエストデータが以前に送ったデータと一部が異なる場合には、差分転送することでデータ量を削減することができる。
【0026】
また、本発明によれば、データ圧縮が可能な場合には、データの代わりに圧縮データを保存することにより、記憶装置(メモリやハードディスクなど)を有効利用できる。
【0027】
【発明の実施の形態】
以下、図面を参照しながら発明の実施の形態を説明する。
【0028】
以下では、WANがインターネットであり、クライアントはユーザオフィスLANに接続されたものであり、HTTPプロトコルが使用されるような場合を例にとって説明するが、本発明は、WANがインターネット以外のものでも、クライアントがオフィス以外の例えば家庭内LAN等に設置されたものでも、HTTP以外のプロトコルが使用されるものでも適用可能である。
【0029】
図49に本発明を適用するコンピュータ・ネットワーク・システムの基本的な構成例を示す。この構成例では、ASPサーバセンター2内のローカルエリアネットワーク(LAN)12とユーザオフィス4内のローカルエリアネットワーク(LAN)16との間が、インターネットや専用回線などの広域ネットワーク(WAN)14を介して接続されており、サーバ20とクライアント50とがLAN12・WAN14・LAN16を介して通信可能になっている。LAN12には1または複数のサーバが接続され、LAN16には1または複数のクライアントが接続される。
【0030】
WebベースのASPは、センター2に設置したサーバ20からWAN14を介して様々なアプリケーションプログラムによるサービスを提供し、ユーザはオフィス4に設置されたクライアント上のWebブラウザ等を使ってそれらのサービスにアクセスする。このような利用形態においては、オフィス内LAN16とセンター内LAN12とをつなぐネットワーク、特にインターネットなどのWAN14の実効的な通信容量(バンド幅)は、LAN12やLAN16よりも低く、そこが性能上のボトルネックになって通信遅延が発生し、アプリケーションの応答性能が低下するという問題が発生する。そこで、本実施形態では、例えば図1に示すように、センター内LAN12とオフィス内LAN16をつなぐWAN14の両端に、サーバ側プロキシ30及びクライアント側プロキシ40なる2つのモジュールを設置し、サーバ20とクライアント50がLAN12・プロキシ30・WAN14・プロキシ40・LAN16を介して通信するにあたって、それらプロキシ間で後述するフィンガープリント圧縮(FP圧縮)や差分圧縮を行って通信データ量を低減することで、広域ネットワークのボトルネックを解消する。さらに、それらプロキシでは、詳しくは後述するように、圧縮に必要なデータの一部を差分情報によって保持することで、必要なキャッシュ量を削減する。
【0031】
本実施形態のサーバ20、サーバ側プロキシ30、クライアント側プロキシ40、クライアント50は、いずれも、計算機上でソフトウェア(サーバ・プログラム、サーバ側プロキシ・プログラム、クライアント側プロキシ・プログラム、クライアント・プログラム)を動作させる形で実現することができる。この場合に、所望の機能を有する、OSやドライバソフト、パケット通信用ソフト、暗号ソフト等といったソフトウェア、あるいは通信インタフェース装置や外部記憶装置や入出力装置等といったハードウェアが、必要に応じて計算機に搭載あるいは接続される。また、この場合に、ユーザあるいは管理者などからの情報の入力やユーザへの情報の呈示等のために、グラフィカル・ユーザ・インタフェース(GUI)を用いると好ましい。
【0032】
サービスを利用するためにユーザが使用するクライアント50上では、その目的に応じて例えばWebブラウザ等のプログラムが動作する。ユーザは、例えば、Webブラウザからインターネットを介し情報転送あるいは注文受付等の所望のサービスを提供するサーバにリクエストメッセージを出し、リプライメッセージを受けることによって、またはこれを適宜繰り返すことによって、サービスを利用する。なお、Webブラウザ等の汎用のソフトウェアではなく、特定のサービスを利用するための専用のソフトウェアなどの他のものが用いられても構わない。また、クライアントは、汎用の計算機ではなく、例えばインターネット機能を有する携帯電話端末等でもよい。
【0033】
サーバ20上では、所定のサーバ・プログラムが動作し、クライアント50のユーザに対して、当該サーバ・サイトに固有のサービスを提供する。
【0034】
サーバ側プロキシ30は、図1のように、サーバセンター内LAN12とWAN14の両方に接続し、トランスペアレント・プロキシとして動作するように設置して実施してもよい。また、図2のようにサーバセンター内LAN12上に設置して実施してもよい。また、図3のようにサーバ側プロキシ30の機能をサーバ20に内蔵するように実施してもよい。
【0035】
同様にクライアント側プロキシ40は、図1のように、ユーザオフィス内LAN16とWAN14の両方に接続し、トランスペアレント・プロキシとして動作するように設置して実施してもよい。また、図2のようにユーザオフィス内LAN16上に設置して実施してもよい。また、図3のようにクライアント側プロキシ40の機能をクライアント50上で動作するブラウザ等に内蔵するように実施してもよい。あるいは、ブラウザ等の動作するクライアント50上に、個人用のクライアント側プロキシ40を動作させるように実施してもよい。
【0036】
なお、サーバ側プロキシ30とクライアント側プロキシ40とは、図1〜図3などのように同じ形態であってもよいし、異なる形態であってもよい。
【0037】
以下では、フィンガープリント・キャッシュ、これを利用したFP圧縮及び差分圧縮、データ管理について、それらの概要を説明する。
【0038】
なお、以下、サーバ側プロキシ30とクライアント側プロキシ40との間のデータ転送方向としていずれか一方向を例にとって説明する際には、サーバ側プロキシ30からクライアント側プロキシ40へデータを転送する場合を例にとって説明していくが、クライアント側プロキシ40からサーバ側プロキシ30へデータを転送する場合にも同様のことが可能である。
【0039】
本実施形態のサーバ側プロキシ30とクライアント側プロキシ40は、フィンガープリント・キャッシュと呼ぶキャッシュ機構を持つ。フィンガープリント・キャッシュは、フィンガープリント(FP)と呼ぶ名前によって、HTTPプロトコルでやりとりされるデータを記録・管理する。
【0040】
フィンガープリントは、図4に例示するように、HTTPプロトコルでやり取りされるデータ(図4ではコンテンツ)の内容から、あらかじめ決められた計算方法(図4ではハッシュ関数)で決定される、短い数値である。この数値は、可変長でもよいが、処理の容易さの観点では、固定長の数値の方が扱いやすい。
【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】
図5に示すように、サーバ側プロキシ30やクライアント側プロキシ40の持つフィンガープリント・キャッシュ(260)は、過去にHTTPプロトコルでやり取りされたデータ本体(261)または後述する差分圧縮により生成されたデータ(264)を、そのやりとりされたデータから計算して求めたフィンガープリントの値(262)を名前として、記録されているデータがデータ本体かそれとも差分圧縮により生成されたデータかを示す差分圧縮データ識別子(以下、圧縮識別子と記述する)(263)とともに記録・管理する。なお、以下では、該識別子=0が“記録されているデータはデータ本体である”ことを示し、該識別子=1が“記録されているデータが差分圧縮により生成されたデータである”ことを示すものとした例で説明するが、これに限定されるものではない。
【0043】
例えば、HTTPプロトコルでサーバ側プロキシ30からクライアント側プロキシ40へデータを転送する場合に、サーバ側プロキシ30は、当該データのフィンガープリントを計算し、そのフィンガープリントに対応するデータがフィンガープリント・キャッシュに入っていてかつ圧縮識別子が0であれば、キャッシュに存在するデータは差分圧縮により生成されたデータではないが、当該データ(と同じ内容のデータ)は過去に転送したことがあるので、当該データを転送せずに、対応するフィンガープリントの値を転送する。フィンガープリントを受け取ったクライアント側プロキシ40は、当該フィンガープリントの値に対応するデータをフィンガープリント・キャッシュから取り出すことで、転送すべきデータを再現することができる。
【0044】
また例えば、上記の場合に、サーバ側プロキシ30は、計算したフィンガープリントに対応するデータがフィンガープリント・キャッシュに入っていてかつ圧縮識別子が1であれば、キャッシュに存在するデータは差分圧縮により生成されたデータであり、当該受信データ(と同じ内容のデータ)に対して過去に差分圧縮が成功し、差分情報を転送したことがあることがわかり、当該データを転送せずに、対応するフィンガープリントの値を転送する。フィンガープリントを受け取ったクライアント側プロキシ40は、当該フィンガープリントの値に対応するデータをフィンガープリント・キャッシュから取り出して差分圧縮されているデータを解凍することで、転送すべきデータを再現することができる。
【0045】
このような方式(すなわち、フィンガープリントによるデータの圧縮→フィンガープリントの転送→フィンガープリントによるデータの解凍)により、過去に送ったものと同じデータ(データ本体あるいは差分圧縮により生成されたデータ)ならばフィンガープリントの値を送るだけでよいので、ネットワークを流れるデータ量を大幅に削減することができる。
【0046】
なお、上記の場合に、計算したフィンガープリントに対応するデータがフィンガープリント・キャッシュに入っていないものについては、今回は、後述する差分圧縮により生成されたデータまたはデータ本体を転送するとともに、フィンガープリント・キャッシュへの登録を行うことによって、次回からは、FP圧縮によるフィンガープリントの転送ができるようになる。
【0047】
説明上、サーバ側プロキシ30とクライアント側プロキシ40との間でのデータ転送にあたり、フィンガープリント・キャッシュを利用してメッセージ・ボディーのデータをフィンガープリントに置き換えて転送情報量を圧縮することを、フィンガープリント圧縮(FP圧縮)と呼ぶものとする。
【0048】
続いて、差分圧縮について説明する。
【0049】
上記のFP圧縮では、データに対するフィンガープリントを用いてデータの同一性を高速に判断し、フィンガープリント・キャッシュに登録されているデータと同じデータはプロキシ間で転送せず、代わりに当該データに対するフィンガープリントを転送するようにして、ネットワークの負荷を低減させる。しかし、フィンガープリント・キャッシュに登録されているデータと異なるデータは、たとえ大部分は同じ内容であってもFP圧縮を適用できない。そこで、本実施形態では、FP圧縮できない場合であっても、フィンガープリント・キャッシュに登録されている1または複数のデータを参照データとして、参照データのフィンガープリントや、参照データに対する差分情報など転送すべきデータを復元するための情報によって、転送データを表現することによって、少ない情報量で転送データを表現し、なるべく転送データ量を減らすようにしている。すなわち、フィンガープリント・キャッシュの中のデータを辞書として使って、その中から取り出せるデータは送らないようにする。
【0050】
説明上、サーバ側プロキシ30とクライアント側プロキシ40との間でのデータ転送にあたり、フィンガープリント・キャッシュを利用してメッセージ・ボディーのデータを参照データのフィンガープリント等に置き換えて転送情報量を圧縮することを、差分圧縮と呼ぶものとする。また、この差分圧縮により生成された転送データを、差分圧縮データと呼ぶものとする。
【0051】
なお、このようなフィンガープリントを利用した差分圧縮は、転送すべきデータと参照データとの間の関係を予め取り決めておく必要がなという利点も得られる。すなわち、従来の差分転送では、予め双方で何をベースに差分を取るかを決める必要があるため、差分転送をWebシステムに実際に用いようとすると、このURLのデータはこのデータをベースに差分を取るというようなルールを、双方に登録する手段が必要であり、任意のデータに対して有効に機能させることは不可能であった。これに対して、本差分圧縮方法は、フィンガープリント・キャッシュの中にあるデータを参照データとして差分を取ることで、差分のベースを予め決めておかなくても、差分によるデータの圧縮の効果を得ることができる。
【0052】
次に、本実施形態のデータ管理方法について説明する。
【0053】
本実施形態では、サーバ側プロキシ30においてサーバ20から受信したリプライデータに対して差分圧縮が成功した場合、サーバ側プロキシ30は差分圧縮により生成された差分圧縮データをクライアント側プロキシ40に送信するとともに、自分自身のフィンガープリント・キャッシュ260には、該リプライデータから取得したフィンガープリントと該差分圧縮データとを記録・管理する。この際、記録・管理されているデータが差分圧縮データであることを示すために、圧縮識別子を1にセットする。
【0054】
クライアント側プロキシ40においては、サーバ側プロキシ30から受信したリプライデータが差分圧縮データであった場合には、差分圧縮データからサーバ側プロキシ30が受信したリプライデータを生成しクライアント50に送信するとともに、自分自身のフィンガープリント・キャッシュ260には、差分圧縮データから生成された該リプライデータに対するフィンガープリントと、サーバ側プロキシ30から受信した差分圧縮データとを記録・管理する。この際、記録・管理されているデータが差分圧縮データであることを示すために、圧縮識別子を1にセットする。
【0055】
一方、サーバ側プロキシ30においてサーバ20から受信したリプライデータが初めてのデータであり、FP圧縮及び差分圧縮の両方とも失敗した場合には、サーバ側プロキシ30はクライアント側プロキシ40に対して該リプライデータを送信するとともに、自分自身のフィンガープリント・キャッシュ260には、該リプライデータから取得したフィンガープリントと該リプライデータとを記録・管理する。この際、記録・管理されているデータが差分圧縮データではないことを示すため、圧縮識別子を0にセットする。
【0056】
クライアント側プロキシ40においては、サーバ側プロキシ30から受信したリプライデータがFP圧縮及び差分圧縮のどちらも施されていないデータであることを検知した場合には、該リプライデータをクライアント50へ送信するとともに、自分自身のフィンガープリント・キャッシュ260には、該リプライデータから取得したフィンガープリントと該リプライデータとを記録・管理する。この際、記録・管理されているデータが差分圧縮データではないことを示すため、圧縮識別子を0にセットする。
【0057】
これにより、差分圧縮が成功したデータについては、サーバ側プロキシ30及びクライアント側プロキシ40双方のフィンガープリント・キャッシュ260において、差分圧縮データのみが保存されることになる。
【0058】
ところで、WebベースのASPのような応用では、大部分は同じ内容であるが一部分だけが異なっているようなデータが多く使われる。例えば、帳票のデータなどは、多くのフィールドに同じ情報が記入されていて、一部分だけが違うようなものが多数存在する。また、例えば、Webページで日付もしくは時刻のみ異なるものや、総アクセス回数のカウンタ値のみ異なるものなどもある。このような場合には、差分圧縮データによる転送や保存は特に有効で、データ本体による転送や保存を効果的に少なくすることができる。
【0059】
なお、両プロキシ30,40間において、全メッセージをFP圧縮の適用対象としてもよいが、例えば、予め定められた条件を満たすメッセージについては、これをFP圧縮の適用対象外とする(常にFP圧縮しないで転送する)ようにしてもよい。予め定められた条件は、例えば、メッセージ・ヘッダに予め定められた情報(例えばGETメソッドを示す情報およびリクエストを示す情報)が記述されていること、転送されるデータが空(null)あるいは非常に短いサイズであることなど、種々のバリエーションが考えられる。
【0060】
また、FP圧縮の適用対象のメッセージをすべて差分圧縮の適用対象としてもよいが、FP圧縮の適用対象のメッセージのうち予め定められた条件を満たすメッセージについては、これを差分圧縮の適用対象外とするようにしてもよい(この場合、差分圧縮を適用される条件が、FP圧縮を適用される条件に対して更に他の条件を加重したものになる)。例えば、FP圧縮しないデータサイズの上限値U1よりも、差分圧縮しないデータサイズの上限値U2を大きくする(FP圧縮すべきデータサイズの下限値L1よりも、差分圧縮すべきデータサイズの下限L2を大きくする)という方法や、FP圧縮の適用対象か否かはデータサイズで判断するが、差分圧縮の適用対象か否かについては、FP圧縮の適用対象のうちHTMLやXML以外のデータを適用対象外とする(HTMLやXMLのデータに対してのみ差分圧縮を行う)という方法等、種々のバリエーションが考えられる。なお、以下では、FP圧縮の適用対象のメッセージをすべて差分圧縮の適用対象とする場合を例にとって説明する。
【0061】
本実施形態では、FP圧縮対象且つ差分圧縮対象のメッセージは、データがFP圧縮されたメッセージ(ただし、圧縮識別子が0になるものと1になるものとがある)、データが差分圧縮されたメッセージ、またはデータが圧縮されていないメッセージのいずれかとして、サーバ側プロキシ30とクライアント側プロキシ40との間を転送されることになる。
【0062】
また、FP圧縮対象であり且つ差分圧縮対象でないメッセージがある場合、該メッセージは、データがFP圧縮されたメッセージ(圧縮識別子=0になる)、またはデータが圧縮されていないメッセージのいずれかとして、サーバ側プロキシ30とクライアント側プロキシ40との間を転送されることになる。
【0063】
また、FP圧縮対象でないメッセージがある場合には、該メッセージは、データが圧縮されていないメッセージとして、サーバ側プロキシ30とクライアント側プロキシ40との間を転送されることになる。
【0064】
ここで、差分圧縮の方法について説明する。
【0065】
フィンガープリント・キャッシュを利用した差分圧縮の方法には次に例示するものなど種々の方法がある。
・フィンガープリント・キャッシュに登録されているデータのうちの1つを参照データとする。プロキシ間では、参照データに対応するフィンガープリントの値と、転送データと参照データとの差分を示す情報とを転送する。
・上記の方法において、参照データとの差分の全部または一部についても、フィンガープリント・キャッシュに登録されているデータを利用する。あるいは、フィンガープリント・キャッシュに登録されているデータ(の全体または部分)を組み合わせることによって転送データの全部または一部を表現する。例えば、フィンガープリント・キャッシュに登録されているデータのうち任意数のものを参照データとする。プロキシ間では、参照データに対応するフィンガープリントの値と、参照データのうち転送データの復元に使用する部分を示す情報と、その部分をもとにした転送データの復元方法を示す情報とを転送する。
【0066】
以下では、差分圧縮データの表現方法の一例を示す。
【0067】
図6に、転送すべきデータを表現するための3種類の指示を示す。データの代わりに転送される差分圧縮データは、これら指示の並びで構成する。
【0068】
(a)は、フィンガープリント・キャッシュ内のデータを参照するときに、参照データに番号を付けて定義する指示である。1バイト目の8n(図6の例では、n=0)は指示識別子である。この指示識別子のうちnは、そのフィンガープリントで指定されるデータをn番の参照データとして扱うことを示す。2バイト目から始まる16バイトが当該参照データに対するフィンガープリントの値を示す。この例では、80〜8Fによってそれぞれ0番の参照データから、最大15番までの参照データが扱えるようになっている。扱える参照データの最大数は、実装によって多くも少なくもできる。
【0069】
(b)は、(a)で定義された参照データの中から部分データをコピーする指示を表す。1バイト目の9n(図6の例では、n=0)は指示識別子である。この指示識別子のうちnは、(a)の指示で定義されたn番の参照データを使用することを示す。2バイト目からの4バイトは、そのn番の参照データ中のオフセット位置を、6バイト目からの4バイトでデータの長さをそれぞれ指示する。そして、それらによって、n番の参照データの中の指定オフセット位置から指定長さのデータを、この指示の並びの位置(順番)に従って(転送データの構成部分として)コピーすべきことを示す。
【0070】
(c)は、データを直接指定するための指示である。1バイト目のA0は、指示識別子である。2バイト目からの4バイトは、データの長さを示す。6バイト目以降に、その長さで指定されたバイト数のデータが続く。そして、それらによって、6バイト目以降のデータを、この指示の並びの位置(順番)に従って(転送データの構成部分として)コピーすることを示す。
【0071】
このような指示の並びで構成された差分圧縮データは、フィンガープリント・キャッシュを参照しながら、指示された順にデータをコピーして接続していくだけで解凍することができる。
【0072】
次に、上記の方法に従った差分圧縮の例を示す。
【0073】
図7に示すようなデータがフィンガープリント5E83…B6としてフィンガープリント・キャッシュに入っていたとする。
【0074】
このとき、図8のようなデータが与えられると、図7のデータを参照データとして、図9のように差分圧縮することができる。
【0075】
すなわち、図8のデータは、図7のデータと比較すると、図7のデータの『TOKYO』が『OSAKA』に変わっているだけである。そこで、図9のように、まず、0バイト目でフィンガープリント“5E83…B6”のデータを0番参照データとして定義することを指示し、17バイト目で0番参照データの0バイト目から60バイトをコピーすることを指示し、次に26バイト目で『OSAKA』の5文字をコピーすることを指示し、最後に36バイト目で0番参照データの65バイト目から51バイトをコピーすることを指示している。
【0076】
この指示の通りに解凍すれば、図8のデータを再現することができる。
【0077】
この例では、参照データを1つだけ用いたが、複数個使うことも可能である。
【0078】
次に、上記の方法に従った差分圧縮の他の例を示す。
【0079】
図10に示すようなデータがフィンガープリント82F3…38としてフィンガープリント・キャッシュに入っており、図11に示すようなデータがフィンガープリントA20D…CBとしてフィンガープリント・キャッシュに入っていたとする。このとき、図12のようなデータが与えられると、図10のデータと図11のデータを参照データとして、図13のように差分圧縮することができる。
【0080】
図13では、まず、0バイト目でフィンガープリント“82F3…38”のデータを0番参照データとして定義することを指示し、17バイト目で0番参照データの0バイト目から53バイトをコピーすることを指示し、26バイト目でフィンガープリント“A20D…CB”のデータを1番参照データとして定義することを指示し、43バイト目で1番参照データの96バイト目から55バイトをコピーすることを指示している。
【0081】
この指示の通りに解凍すれば、図12のデータを再現することができる。
【0082】
なお、上記した方法では、参照データの使用すべき部分の指示と、使用すべきデータの直接指定を行う方法(方法1)であったが、その代わりに、参照データのうち使用しない部分(直接指示データで置き換える部分)の指示と、その使用しない部分に嵌め込むデータの直接指定を行う方法(方法2)も可能である。
【0083】
また、方法1と方法2を併用することも可能である。
【0084】
次に、図14〜図18を参照しながら、サーバ側プロキシ30とクライアント側プロキシ40との間でデータ転送する際の(FP圧縮の適用対象のメッセージについての)プロキシ間メッセージ・フォーマットについて説明する。
【0085】
サーバ側プロキシ30とクライアント側プロキシ40との間でデータ転送する場合、FP圧縮の適用対象のメッセージには、データがFP圧縮されてフィンガープリントに置き換えられたメッセージ(FP圧縮時のメッセージ)と、FP圧縮されないが、差分圧縮されたデータが搭載されているメッセージ(差分圧縮時のメッセージ)と、FP圧縮も差分圧縮もされていないデータが搭載されているメッセージ(非圧縮時のメッセージ)とがある。すべてのメッセージをFP圧縮の適用対象とするのではない構成の場合には、これら3つのメッセージに加えて、FP圧縮の適用対象外のメッセージがある。
【0086】
両プロキシのうち送信側プロキシにおいて、FP圧縮時のメッセージでは、データが削除され、フィンガープリントが付加され、差分圧縮時のメッセージでは、データが削除され、参照データのフィンガープリントなど当該データを復元するための情報が付加される。非圧縮時のメッセージおよび圧縮適用対象外のメッセージでは、データは削除されない。
【0087】
両プロキシのうち受信側プロキシにおいては、上記の3種もしくは4種のメッセージを識別できる必要がある。FP圧縮時のメッセージ受信時は、フィンガープリントをデータに戻し(ただし、圧縮識別子が0である場合には、データ本体が保持されているが、圧縮識別子が1である場合には、差分圧縮により生成されたデータが保持されているので、これをもとにデータを復元する)、差分圧縮時のメッセージ受信時は、データを復元する。また、差分圧縮時または非圧縮時のメッセージ受信時は、フィンガープリント・キャッシュの登録を行う。
【0088】
図14に、メッセージ・フォーマットの一例を示す。(a)は非圧縮時のメッセージであり、(b)は差分圧縮時のメッセージであり、(c)はFP圧縮時のメッセージである。
【0089】
(a)ではメッセージ・ボディーにデータが載せられ、(b)ではメッセージ・ボディーにデータの代わりに当該データを復元するための情報が載せられ、(c)ではメッセージ・ボディーにデータの代わりにフィンガープリント(FP)が載せられる。
【0090】
また、この例では、メッセージ・ヘッダに、メッセージの種類を識別可能とする識別情報が(圧縮側のプロキシにおいて)記述され、この識別情報に基づいて(解凍側のプロキシにおいて)FP圧縮の有無を識別する(例えば、01ならば非圧縮なし、10ならば差分圧縮、11ならばFP圧縮)。なお、識別情報は、プロキシ間で使用される特別のものであってもよいし、もともと通常のHTTPメッセージ・ヘッダに存在するフィールドを利用あるいは併用したものであってもよい。
【0091】
なお、FP圧縮の適用対象外のメッセージが存在し得る構成の場合には、圧縮側(送信側)のプロキシにおいて、図14(d)に示すように、FP圧縮の適用対象外のメッセージのメッセージ・ヘッダに上記の識別情報(例えば、00とする)を含めればよい。
【0092】
また、FP圧縮の適用対象外のメッセージが存在し得る構成の場合に、解凍側(受信側)プロキシにおいて、メッセージ・ヘッダに含まれる何らかの情報によって当該メッセージがFP圧縮の適用対象外のメッセージであることを判断できるとき、あるいはメッセージ・ボディーが空(null)のときに当該メッセージがFP圧縮の適用対象外のメッセージであることを判断するようにしたときなどには、FP圧縮の適用対象外のメッセージのメッセージ・ヘッダには識別情報を含めないようにすることも可能である。
【0093】
なお、非圧縮時や差分圧縮時には、図14(a),(b)の例では、メッセージに当該データに対するフィンガープリントを含ませなかったが、メッセージ・ヘッダにフィンガープリントを含ませるようにしてもよい(あるいは、メッセージ・ボディーに当該データに対するフィンガープリントを含ませるようにしてもよい)。図15(a)〜(c)は、非圧縮時や差分圧縮時には、メッセージ・ヘッダにフィンガープリントを含ませ、FP圧縮時には、メッセージ・ボディーにフィンガープリントを含ませる場合の一例である。このようにすれば、解凍側で当該データについてフィンガープリント・キャッシュの登録を行う際に、該フィンガープリントを利用することによって、あらためて当該データからフィンガープリントを求める手間が省ける。
【0094】
なお、以上のいずれの場合においても、図16に示すように、FP圧縮時のメッセージでは、メッセージ・ヘッダにフィンガープリント(FP)を含め、メッセージ・ボディーを空(null)にしてもよい。
【0095】
なお、以上の他にも、種々のメッセージ・フォーマットが可能である。
【0096】
例えば、図17では、(a)の非圧縮時のメッセージのヘッダに非圧縮フラグを記述し且つフィンガープリントは記述せず、(b)の差分圧縮時のメッセージのヘッダに差分圧縮フラグを記述し且つフィンガープリントは記述せず、(c)のFP圧縮時のメッセージのヘッダにフィンガープリントは記述し且つボディーは空(null)にする。
【0097】
この場合には、メッセージ・ボディーが空(null)であることあるいはメッセージのヘッダにフィンガープリントが記述されていることを検出するによって、当該メッセージがFP圧縮時のメッセージであることを識別することができる。また、非圧縮時のメッセージや差分圧縮時のメッセージは、ヘッダに非圧縮フラグや差分圧縮フラグが記述されていることを検出することによって、識別することができる。
【0098】
なお、FP圧縮の適用対象外のメッセージが存在し得る構成の場合には、圧縮側(送信側)のプロキシにおいて、図18の(a),(b)に示すように((a)はデータが空(null)でない場合、(b)はデータが空(null)である場合)、FP圧縮の適用対象外のメッセージのメッセージ・ヘッダに対象外フラグを含めればよい。
【0099】
また、FP圧縮の適用対象外のメッセージが存在し得る構成の場合に、解凍側(受信側)プロキシにおいて、メッセージ・ヘッダに含まれる何らかの情報によって当該メッセージがFP圧縮の適用対象外のメッセージであることを判断できるときなどには、図18の(c),(d)に示すように((c)はデータが空(null)でない場合、(d)はデータが空(null)である場合)FP圧縮の適用対象外のメッセージのメッセージ・ヘッダには対象外フラグを含めないようにすることも可能である。
【0100】
以下では、まずサーバ側プロキシ30からクライアント側プロキシ40へリプライメッセージを転送するときにそのリプライデータをFP圧縮・解凍する場合を中心に本実施形態について詳しく説明する。
【0101】
図19に本実施形態におけるサーバ側プロキシ30の構成例を示し、図20に本実施形態におけるクライアント側プロキシ40の構成例を示す。なお、図19や図20は、サーバ側プロキシ30からクライアント側プロキシ40へデータを転送する際の構成を中心に示してある。
【0102】
図19のサーバ側プロキシ30は、サーバセンター内LAN12または広域ネットワーク14から転送メッセージを受信するための処理を行う受信部31、転送メッセージに含まれるデータに対してFP圧縮、差分圧縮を施すための処理部32、サーバセンター内LAN12または広域ネットワーク14へ転送メッセージを送信するための処理を行う送信部33、フィンガープリントとそのもととなったデータまたは差分圧縮データとを対応付けて記憶するためのフィンガープリント・キャッシュ(FPキャッシュ)34を備えている。また、処理部32は、転送メッセージに含まれるデータを圧縮対象とすべきか否かを判定するためのフィンガープリント圧縮判定部(FP圧縮判定部)321、FPキャッシュ34に対する検索や登録などを行うためのフィンガープリント・キャッシュ管理部(FPキャッシュ管理部)322、転送メッセージに含まれるデータを対応するフィンガープリントで置き換えるなどの処理を行うためのフィンガープリント圧縮処理部(FP圧縮処理部)323、転送メッセージに含まれるデータを差分圧縮データで置き換えるなどの処理を行うための差分圧縮処理部324を含む。
【0103】
図20のクライアント側プロキシ40は、ユーザオフィス内LAN16または広域ネットワーク14から転送メッセージを受信するための処理を行う受信部41、転送メッセージに含まれるデータに対してFP解凍を施すための処理部42、ユーザオフィス内LAN16または広域ネットワーク14へ転送メッセージを送信するための処理を行う送信部43、フィンガープリントとそのもととなったデータまたは差分圧縮データとを対応付けて記憶するためのフィンガープリント・キャッシュ(FPキャッシュ)44を備えている。また、処理部42は、転送メッセージに含まれるデータを圧縮対象とすべきか否か並びに転送メッセージに対するFP圧縮および差分圧縮の有無を判定するためのフィンガープリント圧縮判定部(FP圧縮判定部)421、FPキャッシュ44に対する検索や登録などを行うためのフィンガープリント・キャッシュ管理部(FPキャッシュ管理部)422、FP圧縮された転送メッセージに含まれるフィンガープリントから元のデータを解凍するなどの処理を行うためのフィンガープリント解凍処理部(FP解凍処理部)423、差分圧縮された転送メッセージに含まれる差分圧縮データから元のデータを解凍するなどの処理を行うための差分解凍処理部424を含む。
【0104】
なお、圧縮側のFP圧縮判定部321と解凍側のFP圧縮判定部421は、前述したようにメッセージが予め定められた条件を満たすか否かを調べることによって、そのメッセージに含まれるデータをFP圧縮の適用対象とするか否かを判断する(全メッセージをFP圧縮の適用対象にする場合には、圧縮側のFP圧縮判定部321及び後に示す手順例の該当部分並びに解凍側のFP圧縮判定部421の該当判断の部分及び後に示す手順例の該当部分は不要である)。また、解凍側のFP圧縮判定部421は、FP圧縮の適用対象のメッセージについて、そのデータがFP圧縮されたものか否かを判定する。以下では、FP圧縮の適用対象となるメッセージを転送する場合(FP圧縮の適用対象とすると判断された場合、または全メッセージをFP圧縮の適用対象にする場合)を中心に説明する。
【0105】
図21及び図22に、サーバ側プロキシ30からクライアント側プロキシ40へリプライメッセージを転送する際のサーバ側プロキシ30の処理手順の一例を示す。なお、図21及び図22は、1つのリプライメッセージを受けたときの処理を記述しているが、実際はサーバ側プロキシ30が受け取ったリプライメッセージ全てに対して、図21及び図22に例示する処理を行う。
【0106】
サーバ側プロキシ30は、受信部31により、サーバ20からリプライメッセージを受信する(ステップS1)。
【0107】
FP圧縮判定部321は、該リプライメッセージのリプライデータがFP圧縮対象のものであるか否か調べ、判断する(S2)。リプライデータがFP圧縮対象外のものと判断されたならば(S2)、受信したリプライメッセージを送信部33からクライアント側プロキシ40へ転送する(S13)。
【0108】
ステップS2にて該リプライメッセージのリプライデータがFP圧縮対象のものであると判断されたならば、FPキャッシュ管理部322にて、該リプライデータのフィンガープリントの値を計算し(S3)、該フィンガープリントの値をキーとしてFPキャッシュ34を検索する(S4)。
【0109】
そして、該フィンガープリントの値とこれに対応するデータ(データ本体または差分圧縮データ)との組がFPキャッシュ34に登録されていたならば(S5)、FP圧縮処理部323にて、受信したリプライメッセージを、該フィンガープリントの値を用いてFP圧縮時のフォーマットにして、送信部33から、クライアント側プロキシ40へ送信する(S6)。
【0110】
一方、ステップS4の検索の結果、該フィンガープリントの値とこれに対応するデータとの組がFPキャッシュ34に登録されていなかったならば(S5)、差分圧縮処理部324にて、差分圧縮を行い(S7)、差分圧縮に成功したか否か判定する(S8)。
【0111】
差分圧縮に成功したか否かは、例えば、差分圧縮の対象とした元のデータのデータ量r0と、差分圧縮データのデータ量r1とを比較し、r0−r1>dを満たすならば、成功したと判断する。ここで、定数dは、予め定められた0以上の整数である。
【0112】
ステップS8で差分圧縮に成功したと判断された場合、次の2つの作業を行う(1-1と1-2のいずれを先に行ってもよいし、並行して行ってもよい)。
(1−1)差分圧縮処理部324にて、受信したリプライメッセージを、(必要に応じて該フィンガープリントの値を用いて)差分圧縮時のフォーマットにして、送信部33から、クライアント側プロキシ40へ送信する(S9)。
(1−2)FPキャッシュ管理部322にて、該フィンガープリントの値と、ステップS7において生成された差分圧縮データとを対応付けて(フィンガープリントの値をキーにして)、FPキャッシュ34に登録する(S10)。この際、登録するデータは差分圧縮データであるので、圧縮識別子を1にセットする。
【0113】
なお、上記(1−2)においては全ての差分圧縮データをFPキャッシュに登録するものとしたが、(i)差分圧縮データのサイズと該差分圧縮データの元になったデータのサイズがほとんど変わらない場合は差分圧縮データではなく該差分圧縮データの元になったデータを保存する、(ii)差分圧縮データのサイズが該差分圧縮データの元になったデータのサイズに比べて非常に小さい場合は差分圧縮データは保存せず、該差分圧縮データの元になったデータも保存せず差分圧縮データ作成時に参照データとして用いたデータのFPキャッシュにおける登録を維持する、などの方法も可能である。その他にも種々のバリエーションがある。また、この点は、後で説明する他の処理手順例において差分圧縮データをFPキャッシュに登録する場合についても同様である(なお、後の説明でも、全ての差分圧縮データをFPキャッシュに登録するものとした場合を例にとって説明している)。
【0114】
一方、ステップS8で差分圧縮に失敗したと判断された場合、次の2つの作業を行う(2-1と2-2のいずれを先に行ってもよいし、並行して行ってもよい)。
(2-1)差分圧縮処理部324(あるいはFP圧縮処理部323)にて、受信したリプライメッセージを、非圧縮時のフォーマットにして、送信部33から、クライアント側プロキシ40へ送信する(S11)。
(2-2)FPキャッシュ管理部322にて、該フィンガープリントの値と、該リプライメッセージとを対応付けて(フィンガープリントの値をキーにして)、FPキャッシュ34に登録する(S12)。この際、登録するデータは差分圧縮データではないので、圧縮識別子を0にセットする。
【0115】
次に、図23〜図25に、サーバ側プロキシ30からクライアント側プロキシ40へリプライメッセージを転送する際のクライアント側プロキシ40の処理手順の一例を示す。なお、図23〜図25は、1つのリクエストメッセージを受けたときの処理を記述しているが、実際はクライアント側プロキシ40が受け取ったリクエストメッセージ全てに対して、図23〜図25に例示する処理を行う。
【0116】
クライアント側プロキシ40は、受信部41により、サーバ側プロキシ30からリプライメッセージを受信する(ステップS21)。
【0117】
FP圧縮判定部421は、該リプライメッセージのリプライデータがFP圧縮対象のものであるか否か調べ、判断する(S22)。リプライデータがFP圧縮対象外のものと判断されたならば(S22)、受信したリプライメッセージを送信部43からクライアント50へ転送する(S38)。
【0118】
ステップS22にて該リプライメッセージのリプライデータがFP圧縮対象のものであると判断されたならば、FP圧縮判定部421は、さらに、リプライデータがFP圧縮されているか否か調べ、判断する(S23)。
【0119】
ステップS23にて該リプライメッセージのリプライデータがFP圧縮されているものと判断されたならば、FPキャッシュ管理部422にて、該リプライデータのフィンガープリントの値を求め(S24)、該フィンガープリントの値をキーとしてFPキャッシュ44を検索する(S25)。
【0120】
次に、ステップS25において検索の結果得られたデータが差分圧縮データかどうか、FPキャッシュ管理部422にて該データの圧縮識別子を用いて調べ、判断する(S26)。
【0121】
ステップS26にて該データが差分圧縮データであると判断された(本例では、圧縮識別子が1)ならば、差分解凍処理部424にて、(FPキャッシュ管理部422において参照データを検索・取得した後に)差分圧縮データを解凍して元のリプライデータを復元し(S27)、該復元したリプライデータをリプライメッセージに付加し、またプロキシ間で特別の情報を使用する場合には受信リプライメッセージから該情報を削除し、該リプライメッセージを送信部43からクライアント50へ送信する(S28)。
【0122】
ステップS26にて該データが差分圧縮データではないと判断された(本例では、圧縮識別子が0)ならば、FP解凍処理部423にて、受信リプライメッセージに対して、FPキャッシュ44から検索された該フィンガープリントの値に対応するデータを付加し、プロキシ間で特別の情報を使用する場合には該情報を削除した後に、これを送信部43からクライアント50へ送信する(S29)。
【0123】
一方、ステップS23にて該リプライメッセージのリプライデータがFP圧縮されていないものと判断されたならば、FP圧縮判定部421は、さらに、該リプライデータが差分圧縮されているか否か判定する(S30)。
【0124】
ステップS30で差分圧縮されていると判断された場合、次の2つの作業を行う(1-1と1-2のいずれを先に行ってもよいし、並行して行ってもよい)。
(1−1)差分解凍処理部424にて、(FPキャッシュ管理部422により参照データを検索・取得した後に)差分圧縮データを解凍して元のリプライデータを復元し(S31)、該復元したリプライデータをリプライメッセージに付加し、またプロキシ間で特別の情報を使用する場合には受信リプライメッセージから該情報を削除し、該リプライメッセージを送信部43からクライアント50へ送信する(S32)。
(1−2)FPキャッシュ管理部422にて、該リプライデータのフィンガープリントの値を求め(S33)、該フィンガープリントの値と、差分圧縮データとを対応付けて(フィンガープリントの値をキーにして)、FPキャッシュ44に登録する(S34)。このとき、FPキャッシュ44への登録においては、リプライメッセージは差分圧縮データであるので、圧縮識別子は1にセットする。
【0125】
一方、ステップS30で差分圧縮されてないと判断された場合、次の2つの作業を行う(2-1と2-2のいずれを先に行ってもよいし、並行して行ってもよい)。
(2-1)差分解凍処理部424(あるいはFP解凍処理部423)にて、プロキシ間で特別の情報を使用する場合には受信リプライメッセージから該情報を削除した後に、これを送信部43からクライアント50へ送信する(S35)。
(2-2)FPキャッシュ管理部422にて、該リプライデータのフィンガープリントの値を求め(S36)、該フィンガープリントの値と、該リプライメッセージとを対応付けて(フィンガープリントの値をキーにして)、FPキャッシュ44に登録する(S37)。このとき、FPキャッシュ44への登録においては、リプライメッセージは差分圧縮データではないので、圧縮識別子は0にセットする。
【0126】
なお、ステップS24/S33/S36では、メッセージにフィンガープリントが記述されている場合に、該メッセージからフィンガープリントを得る方法と、メッセージにフィンガープリントが記述されてない場合に、リプライデータをもとにハッシュ関数等によってフィンガープリントの値を計算する方法とがある。なお、メッセージにフィンガープリントが記述されている場合であっても、リプライデータをもとにフィンガープリントの値を計算する方法も可能である。また、ステップS24/S33/S36は、フィンガープリントを使用する以前の他のタイミングで行って構わない。また、ステップS22、S23、S26、S30の判断の全部または一部を同時に行ってもよい。
【0127】
次に、差分圧縮を行う手順について説明する。
【0128】
図26に、差分圧縮手順の一例を示す。これは、先に説明した3種類の指定を用いる場合の手順例である。
【0129】
ここでは、差分圧縮を行うために、フィンガープリント・キャッシュに入っているデータのうち、最近アクセスしたものを順に並べた履歴表を利用するものとする。この履歴表には、必ずしもフィンガープリント・キャッシュに入っている全てのデータのフィンガープリントが記録されている必要は無い。例えば、予め定められた個数が記録されていればよい(この場合、個数は、例えば差分圧縮の参照データとして使用するに有効な個数を想定して予め決定する)。
もちろん、履歴表への記録の基準として、最近のアクセスの順以外の1又は複数の基準を用いてもよいし、最近のアクセスの順の基準に加えて他に1又は複数の基準を併用してもよい。
【0130】
なお、履歴表は、フィンガープリント・キャッシュと一体化して構成する方法もある。
【0131】
(ステップS231)
まず、作業用のコピーバッファおよび指示バッファを空にする。
【0132】
このコピーバッファにコピーされた内容をもとに、図6(a)〜(c)の指示が作成され、これが指示バッファに書き出される。最終的に、指示バッファに書き出された指示の並びが、差分圧縮データになる。
【0133】
(ステップS232)
差分圧縮の対象とするデータを文字列として扱い、その文字列上を指すポインタを用意する。まず、ポインタが当該文字列のうちの最初の文字を指すように設定する。
【0134】
以下では、ステップS241でポインタが当該文字列のうちの最後の文字に辿りついたと判断されるまで、ループ処理を実行することになる。
【0135】
(ステップS233)
履歴表に記録されているフィンガープリントに対応するデータを、新しいものから順に取り出し、その中に、差分圧縮したいデータの中のポインタの指す場所から予め定められた長さ以上マッチするデータを参照データとして取り出す。
【0136】
なお、参照データと決定方法としては、種々の方法がある。例えば、履歴表に記録されているフィンガープリントに対応するデータを最新の順に調べていき、最初に予め定めた長さ以上マッチしたデータを参照データとして取り出す方法、履歴表に記録されているフィンガープリントに対応するデータの全てを調べ、その中でマッチした長さが最も長かったデータ(ただし、予め定めた長さ以上マッチしたことを条件とする)を参照データとして取り出す方法などがある。
【0137】
(ステップS234)
参照データが見つけられたらならば、ステップS237へ移る。参照データが見つけられなかったならば、ステップS235へ移る。
【0138】
(ステップS237)
ステップS234にて参照データが見つけられた場合に、コピーバッファが空でなければ、コピーバッファ中の文字列に対応する、図6の(c)の直接指定によるコピー指示を作成し、これを指示バッファに書き出す。コピーバッファは、空にする。
なお、コピーバッファが空ならば、何もしない。
【0139】
(ステップS238)
ステップS233にて見つかった参照データに対応する図6の(a)の参照データ定義が未だ指示バッファに書き出されていなければ、指示バッファに当該参照データ定義の指示を書き出す。
【0140】
(ステップS239)
参照データからマッチした文字列のコピー指示を、図6の(b)のコピー指示として指示バッファに書き出す。
【0141】
(ステップS240)
ポインタを参照データとマッチした文字列の長さ分だけ進める。
【0142】
(ステップS235)
一方、ステップS234にて参照データが見つけられた場合に、ポインタの指す文字をコピーバッファに入れる。
【0143】
(ステップS236)
ポインタを1文字分だけ進める。
【0144】
(ステップS241)
差分圧縮の対象とするデータの最後までポインタが来ていなければ(処理していないデータ部分が残っていれば)、ステップS233へ戻る。差分圧縮の対象とするデータの最後までポインタが来ていたら(処理していないデータ部分が残っていなければ)、処理ループを抜けて、ステップS242へ移る。
【0145】
(ステップS242)
コピーバッファが空でなければ、コピーバッファ中の文字列に対応する、図6の(c)の直接指定によるコピー指示を作成し、これを指示バッファに書き出す。コピーバッファは、空にする。
なお、コピーバッファが空ならば、何もしない。
【0146】
このときの指示バッファの内容が、差分圧縮データとなる。
【0147】
なお、前述のように、実際には、このようにして差分圧縮を行った後、差分圧縮を行った結果のデータサイズが、行う前のデータサイズよりも小さくなっている(あるいは一定基準(一定の圧縮量)を超えて小さくなっている)ことを確認する。差分圧縮によってデータサイズが小さくならない(あるいは一定基準(一定の圧縮量)を超えては小さくならない)場合には、差分圧縮しない方が良いので、データはそのまま転送する。
【0148】
ところで、上記の差分圧縮の処理において、ステップS233の予め定められた長さ以上マッチする文字列を持つ最新のデータを選び出す処理が、最も時間がかかる処理であると考えられる。この処理をより高速化するために、ハッシュ表を利用することができる。履歴表に入れるデータから、その中の全ての予め定められた長さの文字列を取り出し、そのハッシュ値(例えば、全ての文字のコードを足したものなど)を計算し、ハッシュ表に登録しておく。このハッシュ表は、同じハッシュ値を持つデータがあればより最新のデータによって上書きされるようにしておく。
このハッシュ表を使って、差分圧縮したいデータの現在のポインタの位置から予め定められた長さの文字列のハッシュ値を求め、そのハッシュ値を使ってハッシュ表を引いて求めたデータが、ステップS233で選ぶべきデータの第1の候補になる。ここで、異なる文字列でも同じハッシュ値を生成する場合があるので、本当に同じかどうかは文字列を実際に比較して確認し、同じでなければ、履歴表のデータを順に見るなど方法で次の候補を探す。
【0149】
ステップS233の処理を高速化する他の方法は、行を単位として比較処理を行う方法である。図26の手順では文字を単位として比較処理をしていたが、履歴表にあるすべてのデータに対して、そのデータ内の各行のハッシュ値の列を計算しておく。差分圧縮したいデータからも、まず、各行のハッシュ値の列を計算する。以降は、図26の手順と同様であるが、比較は文字単位ではなく、行のハッシュ値を単位として行う。この方法は、行を単位としているため、文字単位よりも比較回数を減らすことができる。ただし、ハッシュ値で比較するために、異なる行でも同じハッシュ値を持つ場合があるので、最終的にはハッシュ値が同じだと判断した後に、実際に行の中も比較して本当に同じかどうかを判断するのが望ましい。
もちろん、このように行を単位として比較する構成についても、上記のハッシュ技法を組み合わせることができる。この場合、連続する複数行を組み合わせて、予め定められた長さと同じか長くなる最少の行数を単位としてハッシュ表に登録すればよい。
【0150】
次に、図27に、差分圧縮手順の他の例を示す。これは、フィンガープリント・キャッシュに登録されているデータのうちの1つを参照データとし、プロキシ間では、参照データに対応するフィンガープリントの値と、転送データと参照データとの差分を示す情報とを転送する場合の手順例である。
【0151】
ここでも、前述したような履歴表を用いるものとする。
【0152】
まず、履歴表に記録されているフィンガープリントに対応するデータのうち、所定の基準を満たす一つを、参照データとして選択する(ステップS245)。
【0153】
所定の基準は、例えば、差分圧縮の対象とするデータのうち、参照データとするデータとの間でマッチしなかった部分のデータ量が、予め定められたデータ量以下であって、かつ、参照データをそのマッチしなかった部分によって複数の塊に分断したときにおけるその分断された塊の数が、予め定められた数以下である場合に、これを参照データとして選択可能とする。
【0154】
そして、参照データとして決定する方法としては、前述のように、例えば、履歴表に記録されているフィンガープリントに対応するデータを最新の順に調べていき、最初に予め定めた長さ以上マッチしたデータを参照データとして取り出す方法、履歴表に記録されているフィンガープリントに対応するデータの全てを調べ、その中でマッチしなかったデータ量や分断数が最も少なかったデータを参照データとして取り出す方法など、種々の方法がある。
【0155】
参照データが見つけられたらならば(S246)、参照データ定義の指示(例えば図6の(a))を、指示バッファに書き出す(S247)。
【0156】
参照データのうち、マッチしなかった部分(直接指定データで置換する部分)を示す指示(例えば図6の(b)と同じフォーマットの指示で1バイト目の指示識別子を変えたもの)を、指示バッファに書き出す(S248)。
【0157】
参照データのマッチしなかった部分に嵌め込むべきデータを示す直接指定する指示(例えば図6の(c))を、指示バッファに書き出す(S249)。
【0158】
なお、置換部分が複数個所ある場合には、その分だけステップS248とステップS249を実行する。
【0159】
このときの指示バッファの内容が、差分圧縮データとなる。
【0160】
一方、参照データが見つけられたらならば(S246)、差分圧縮はしないことになる。
【0161】
なお、上記の図26や図27の説明では、履歴表をフィンガープリント・キャッシュとは別に設けるものとしたが、履歴表は、フィンガープリント・キャッシュと一体化して構成する方法もある。
【0162】
また、上記の説明では、履歴表を用いるものとしたが、履歴表を用いない方法もある。例えば、フィンガープリント・キャッシュを所定の順番で(例えば、エントリ順にあるいはランダムに)予め定められた上限数だけ調べ、それらのうちで最良のものを使用するようにする方法や、フィンガープリント・キャッシュを所定の順番で(例えば、エントリ順にあるいはランダムに)調べ、予め定められた条件を満たす参照データが初めて得られた時点で、参照データを決定してしまう方法など、種々の方法がある。
【0163】
また、履歴表またはフィンガープリント・キャッシュに、フィンガープリントに加えて、そのフィンガープリントを登録したときに元となったリプライデータを含んでいたリプライメッセージについてのURLをも保持しておき、参照データを探索する際に、まず差分圧縮対象のリプライデータを含むリプライメッセージについてのURLと同じURLを持つデータが、履歴表またはフィンガープリント・キャッシュに登録されていないかどうか調べ、登録されているならば当該URLと同じURLを持つデータを他のものよりも優先して、参照データとして使用できないかどうか調べるようにしてもよい。
【0164】
もちろん、図26や図27の他にも、種々の差分圧縮の手順が可能である。
【0165】
なお、クライアント側プロキシ40からサーバ側プロキシ30へリクエストメッセージを転送する際にはフィンガープリント・キャッシュを用いないものとする場合には、サーバ側プロキシ30は、図28に例示するように、クライアント側プロキシ40からリクエストメッセージを受信し(ステップS60)、これをサーバ20へ送信する(ステップS61)、という手順で構わない。同様に、クライアント側プロキシ40は、図29に例示するように、クライアント50からリクエストメッセージを受信し(ステップS62)、これをサーバ側プロキシ30へ送信する(ステップS63)、という手順で構わない。
【0166】
以下では、図30〜図32を参照しながら、フィンガープリント・キャッシュを利用したデータ転送についてより具体的に説明する。
【0167】
まず、図30を参照しながら、サーバ側プロキシ30からクライアント側プロキシ40へ、フィンガープリント・キャッシュ登録されていないデータであって且つ差分圧縮も成功しなかったデータを転送するとともに、該データについてフィンガープリント・キャッシュ登録する場合の動作について説明する。
【0168】
(1)クライアント50上のブラウザ等は、例えば“/A.cgi”というURLでサーバ20に、POSTメソッドのリクエストメッセージを出したとする。サーバ20へのリクエストメッセージは、まず、クライアント側プロキシ40に送られるように、ブラウザ等を設定しておく。
【0169】
(2)クライアント50からリクエストメッセージを受け取ったクライアント側プロキシ40は、そのリクエストメッセージをサーバ側プロキシ30に転送する。
【0170】
(3)リクエストメッセージを受け取ったサーバ側プロキシ30は、そのリクエストメッセージをサーバ20へ転送する。
【0171】
(4)サーバ20は、該リクエストメッセージに対する処理を行った後、サーバ側プロキシ30に、そのリプライメッセージを送り返す。
【0172】
(5)リプライメッセージを受け取ったサーバ側プロキシ30は、まず、受信リプライメッセージの持つリプライデータのフィンガープリントを計算し、そのフィンガープリント名を持ったデータがFPキャッシュ34に入っているかどうかを調べる。ここでは、入っておらず、初めてのデータ(一旦フィンガープリント・キャッシュ登録されたものがその後に削除あるいは無効化されることがある構成の場合に、一旦フィンガープリント・キャッシュ登録されたが削除あるいは無効化され、その後において初めてである場合を含む)であるので、そのデータをフィンガープリントを名前としてFPキャッシュ34に入れる(登録する)。なお、ここでは、リプライデータを差分圧縮してデータ量を減らすことができなかったものとする。このとき、FPキャッシュ34への登録においては、該データが差分圧縮データではないので、圧縮識別子は0にセットする。
【0173】
(6)サーバ側プロキシ30は、データを載せたリプライメッセージをクライアント側プロキシ40に転送する。なお、リプライデータから計算したフィンガープリントの値を、リプライヘッダ等に入れて送ると、クライアント側プロキシ40で再度フィンガープリントを計算する手間を省くことが出来る。
【0174】
(7)リプライメッセージを受け取ったクライアント側プロキシ40は、初めてのデータであるので、リプライデータをFPキャッシュ44に登録する。このとき、FPキャッシュ44への登録においては、該リプライデータが差分圧縮データではないので、圧縮識別子は0にセットする。なお、前述したように、リプライデータからフィンガープリントを計算するか、あるいはサーバ側プロキシがリプライヘッダ等に入れたフィンガープリントを取り出し、これを名前として入れる。
【0175】
(8)クライアント側プロキシ40は、(リプライヘッダ等にフィンガープリントの値などのサーバ側プロキシ30とクライアント側プロキシ40との間だけで使用される情報が存在する構成の場合には、これを削除した後に、)リプライメッセージを、クライアント50(上で動作するブラウザ等)へ送り返す。
【0176】
なお、サーバ側プロキシ30において、上記の(5)のフィンガープリント・キャッシュ登録は、(6)の動作の後に行っても構わない。また、クライアント側プロキシ40において、(7)のフィンガープリント・キャッシュ登録は、(8)の動作の後に行っても構わない。
【0177】
次に、図31を参照しながら、サーバ側プロキシ30からクライアント側プロキシ40へ、フィンガープリント・キャッシュ登録されていないデータであって且つ差分圧縮が成功したデータを転送するとともに、該データについてフィンガープリント・キャッシュ登録する場合の動作について説明する。
【0178】
(1)〜(4)は、図30を参照して説明した動作における(1)〜(4)と同様である。
【0179】
(5)リプライメッセージを受け取ったサーバ側プロキシ30は、まず、受信リプライメッセージの持つリプライデータのフィンガープリントを計算し、そのフィンガープリント名を持ったデータがFPキャッシュ34に入っているかどうかを調べる。ここでは、入っておらず、初めてのデータであることを判断する。そして、圧縮対象になるデータをFP圧縮できなかった場合には、差分圧縮処理を行い、リプライデータを差分圧縮してデータ量を減らすことができるならば、差分圧縮する。ここでは、フィンガープリントが“71F0…73E6”のデータを参照データとした場合に、リプライデータを差分圧縮してデータ量を減らすことができたものとする。リプライデータを差分圧縮データに置き換え、リプライヘッダ等に差分圧縮したことを示す情報を入れる。
【0180】
(6)サーバ側プロキシ30は、(5)において生成された差分圧縮データを同じく(5)で計算したフィンガープリントを名前としてFPキャッシュ34へ入れる(登録する)。このとき、FPキャッシュ34への登録においては、該データが差分圧縮データであるので、圧縮識別子を1にセットする。
【0181】
(7)サーバ側プロキシ30は、リプライメッセージをクライアント側プロキシ40に転送する。
【0182】
(8)クライアント側プロキシ40は、リプライヘッダ等を見て、リプライデータが差分圧縮されていることを知り、圧縮の解凍を行う。このとき、まず、圧縮されたデータ内に指定されている参照データのフィンガープリント“71F0…73E6”を取り出し、次に、該フィンガープリントに対応するデータをFPキャッシュ44から取り出して使用する。そして解凍したデータをリプライデータに入れ、リプライヘッダのコンテンツサイズなど必要なヘッダを書き換える。
【0183】
(9)また、リプライメッセージを受け取ったクライアント側プロキシ40は、初めてのデータであるので、サーバ側プロキシ30から受信した差分圧縮データをFPキャッシュ44に登録する。このとき、FPキャッシュ44への登録においては、登録するデータが差分圧縮データであるので、圧縮識別子を1にセットする。また、リプライヘッダ等にフィンガープリントの値などのサーバ側プロキシ30とクライアント側プロキシ40との間だけで使用される情報が存在する構成の場合には、これを削除する。なお、前述したように、リプライデータ(差分圧縮データから解凍して得られたデータ)からフィンガープリントを計算するか、あるいはサーバ側プロキシがリプライヘッダ等に入れたフィンガープリントを取り出し、これを名前として入れる。
【0184】
(10)クライアント側プロキシ40は、リプライメッセージを、クライアント50(上で動作するブラウザ等)へ送り返す。
【0185】
なお、上記の(5)では、圧縮対象で未登録のデータは、すべてフィンガープリント・キャッシュに登録するものとし、また、上記の(6)で参照データに用いたデータは、すべてフィンガープリント・キャッシュの登録を維持するものとしたが、参照データに唯一のデータを使用した場合であって、かつ、差分圧縮対象となったデータと、その差分圧縮に用いた参照データとが、ほとんど同じ内容(例えば、両者でマッチしないデータ量が基準以下)である場合には、(i)圧縮対象で未登録のデータはフィンガープリント・キャッシュに登録せず、参照データはフィンガープリント・キャッシュの登録を維持する、あるいは(ii)圧縮対象で未登録のデータをフィンガープリント・キャッシュに登録し、参照データはフィンガープリント・キャッシュから削除する、などの方法も可能である。また、参照データに唯一のデータを使用した場合であって、かつ、差分圧縮対象となったデータと、その差分圧縮に用いた参照データとが、ほとんど同じ内容であって、かつ、URLが同一の場合には、データが更新されたものとして、圧縮対象で未登録のデータをフィンガープリント・キャッシュに登録し、参照データはフィンガープリント・キャッシュから削除する、などの方法も可能である。その他にも種々のバリエーションがある。
【0186】
次に、図32を参照しながら、図30または図31の動作が行われてキャッシュ登録されているデータを、サーバ側プロキシ30からクライアント側プロキシ40へ転送する場合の動作について説明する。
【0187】
(1)〜(4)は、図30を参照して説明した動作における(1)〜(4)と同様である。
【0188】
(5)サーバ50からリプライメッセージを受け取ったサーバ側プロキシ40は、まず、受信リプライメッセージの持つリプライデータのフィンガープリントを計算し、そのフィンガープリント名を持ったデータがFPキャッシュ34に入っているかどうかを調べる。ここではフィンガープリント・キャッシュ登録されているので、(例えばフィンガープリントの値をリプライヘッダ等に入れ且つリプライボディを空にするなどして)リプライボディのデータをフィンガープリントで置き換える。
【0189】
(6)サーバ側プロキシ30は、リプライボディをフィンガープリントで置き換えたリプライメッセージをクライアント側プロキシ40に転送する。
【0190】
(7)リプライメッセージを受け取ったクライアント側プロキシ40は、リプライデータがフィンガープリントで置き換えられていることを検出し、(前述したように例えばリプライヘッダなどにて)指定されたフィンガープリントを使ってFPキャッシュ44から対応するデータを取り出す。
ここで、該データの圧縮識別子が0である場合には、該データは差分圧縮データではないので、これをリプライボディに入れる。一方、該データの圧縮識別子は1である場合には、該データは差分圧縮データであるので、これを解凍してもとのリプライデータを復元し、これをリプライボディに入れる。なお、図32は、前者の場合を例示している。
また、リプライヘッダ等にフィンガープリントの値などのサーバ側プロキシ30とクライアント側プロキシ40との間だけで使用される情報が存在する構成の場合には、これを削除する。
【0191】
(8)そして、クライアント側プロキシ30は、リプライメッセージを、クライアント50(上で動作するブラウザ等)へ送り返す。
【0192】
ところで、サーバ側プロキシ30およびクライアント側プロキシ40のフィンガープリント・キャッシュは、その容量に上限があるため、所定のアルゴリズムに従いガベージコレクションを行って、例えば古いデータや使いそうに無いデータを消して行くのが好ましい。
【0193】
ただし、このようにすると、サーバ側プロキシ30のFPキャッシュ34は持っていてもクライアント側プロキシ40のFPキャッシュ44では既に消されているようなデータが発生し得ることになるので、図32を参照して説明した動作における(7)で、クライアント側プロキシ40において、フィンガープリントをもとにしてFPキャッシュ44からリプライデータを置き換えるべきデータを得ようとしたが、FPキャッシュ44に該当するフィンガープリントとデータの組が存在しない場合がある。このような場合には、例えば、クライアント側プロキシ40は、サーバ側プロキシ30に対して、指定したフィンガープリントのデータを送るように依頼し、依頼されたサーバ側プロキシ30は、指定されたフィンガープリントのデータをFPキャッシュ34から取り出して送り返すような仕組みを設ければよい。
【0194】
なお、逆に、サーバ側プロキシ30のFPキャッシュ34では既に消されているがクライアント側プロキシ40のFPキャッシュ44はまだ持っているようなデータが存在する場合には、図30を参照して説明した動作における(7)や図31を参照して説明した動作における(9)で、クライアント側プロキシ40において、フィンガープリント/データをFPキャッシュ44に登録する際に、その時点で登録されていたフィンガープリント/リプライデータに対して上書きしてもよい。
【0195】
図32を参照して説明した動作における(5)で、サーバ側プロキシ30において、リプライデータのフィンガープリントを求め、該フィンガープリントがFPキャッシュ34に入っていれば、当該プライデータと同じデータが該フィンガープリントと組になってFPキャッシュ34に入っているものとみなして処理している。実用上、異なるデータから同じフィンガープリントが生成されないことを前提にすれば、この方法で十分であるが、非常に小さな確率で異なるデータのフィンガープリントが偶々同じ値になってしまった場合に生じるエラーを取り除くようにする方法もある。この場合には、リプライデータから求めたフィンガープリントがFPキャッシュ34に入っているときに、該フィンガープリントと組になってFPキャッシュ34に入っているデータと、当該プライデータとを比較して、同じか否かを判断するようにすればよい。このとき、もしフィンガープリントは同じであるが内容が異なるデータが登録されていると判断された場合の処理は、以下に例示するような方法が考えられる。
・そのフィンガープリントは以降使用しないものとする(そのフィンガープリントを与えるデータは以後キャッシュされないことになる)
・先に登録されているフィンガープリント/データを優先する(登録中のフィンガープリントと同じ値のフィンガープリントを与える他のデータは、その登録中はキャッシュされないことになる)
・現在登録対象となっているフィンガープリント/データを優先する(登録中のフィンガープリント/データは、同じ値のフィンガープリントを与える他のデータによって次々と更新されていくことになる)
ところで、これまで説明した例では、サーバ側プロキシ30からクライアント側プロキシ40へリプライデータを転送する際にフィンガープリント・キャッシュを利用するものとし、あるデータとこれに対するフィンガープリントとの組をフィンガープリント・キャッシュに登録するタイミングは、そのデータが初めてサーバ側プロキシ30からクライアント側プロキシ40へ転送されるときとしている。しかし、例えばWebベースのASPのような利用法では、データはまずユーザオフィス等で作成されてサーバに登録され、それをブラウザ等からアクセスするような場合が多いため、このような場合には、当該データを(データ本体または差分圧縮データとして)サーバに登録する時点でクライアント側プロキシおよびサーバ側プロキシのフィンガープリント・キャッシュに登録しておくと、それ以降のアクセスを高速化することができる。そこで、サーバが送信するリプライデータが、もともとはクライアントからサーバへ転送されたデータ(ただし、この転送のときはリクエストデータ)である場合には、登録タイミングを、該リプライデータとなる元のリクエストデータが初めてクライアント側プロキシ40からサーバ側プロキシ30へ転送されるときとするようにしてもよい(この場合、当該データがリプライデータとなって初めてサーバ側プロキシ30からクライアント側プロキシ40へ転送される際には、すでにフィンガープリント・キャッシュへの登録が完了していることになるので、リプライデータとしては初めての転送であっても、フィンガープリント・キャッシュを利用して、転送データ量を削減することができる)。
【0196】
さて、これまで説明した例では、サーバ側プロキシ30からクライアント側プロキシ40へリプライデータを転送するときに、該リプライデータがフィンガープリント・キャッシュに登録されているデータと同じものである場合には、該リプライデータに代えて、対応するフィンガープリントを転送し、または差分圧縮データを転送することで、ネットワークのトラフィックを軽減しているが、本発明は、クライアント側プロキシ40からサーバ側プロキシ30へリクエストデータを転送する場合についてさらに適用することが可能である。
【0197】
なお、FP圧縮を両方に適用する場合に、差分圧縮をいずれか一方についてのみ適用することも可能である。
【0198】
また、FP圧縮および差分圧縮を、クライアント側プロキシ40からサーバ側プロキシ30へリクエストデータを転送する場合についてのみ適用することも可能である。
【0199】
FP圧縮および差分圧縮をクライアント側プロキシ40からサーバ側プロキシ30へのリクエストデータ転送に適用する場合、すでに説明したリプライデータに対するサーバ側プロキシ30とクライアント側プロキシ40との役割を逆にすればよいので、FP圧縮および差分圧縮を両データ転送に適用する場合には、サーバ側プロキシ30は図19の構成に加えて、更に処理部32にフィンガープリント解凍処理部および差分解凍処理部を備え、クライアント側プロキシ40は図20の構成に加えて、更に処理部42にフィンガープリント圧縮処理部および差分圧縮処理部を備えればよい。
【0200】
なお、いずれのプロキシにおいても、フィンガープリント圧縮処理部とフィンガープリント解凍処理部とを併せて、フィンガープリント(FP)圧縮・解凍処理部としてもよい。同様に、差分圧縮処理部と差分解凍処理部とを併せて、差分圧縮・解凍処理部としてもよい。
【0201】
また、サーバ側プロキシ30やクライアント側プロキシ40は、リプライデータ転送に対するフィンガープリント・キャッシュとは独立にリクエストデータ転送に対するフィンガープリント・キャッシュを設けてもよいが、リプライデータ転送とクエストデータ転送とで同じフィンガープリント・キャッシュを共用してもよい。なお、差分圧縮の際に前述した履歴表を使用する構成の場合には、履歴表についても同様に独立して設けてもよいし、共用してもよい。
【0202】
図33に、リプライデータ転送とクエストデータ転送とで同じフィンガープリント・キャッシュを共用する場合のプロキシ(サーバ側プロキシ、クライアント側プロキシ)の構成例を示す。
【0203】
また、図34及び図35に、クライアント側プロキシ40からサーバ側プロキシ30へリクエストメッセージを転送する際のクライアント側プロキシ40の処理手順の一例を示す。図34及び図35は、図21及び図22において、転送するメッセージがリプライメッセージからリクエストメッセージになり、メッセージ送信元がサーバからクライアントになり、メッセージ送信先がクライアントからサーバになり、サーバ側プロキシ30の動作とクライアント側プロキシ40の動作とを入れ替えたものに相当する。
【0204】
また、図36〜図38に、クライアント側プロキシ40からサーバ側プロキシ30へリクエストメッセージを転送する際のサーバ側プロキシ30の処理手順の一例を示す。
【0205】
図36〜図38は、図23〜図25において、転送するメッセージがリプライメッセージからリクエストメッセージになり、メッセージ送信元がサーバからクライアントになり、メッセージ送信先がクライアントからサーバになり、サーバ側プロキシ30の動作とクライアント側プロキシ40の動作とを入れ替えたものに相当する。
【0206】
このようにリクエストデータに対してもフィンガープリントまたは差分圧縮データで置き換えられるように実施すると、例えば、同じファイルを何度もサーバにアップロードするときには、2回目以降フィンガープリントを送るだけで済むので、ネットワークのトラフィックを軽減させることができる。
【0207】
なお、本実施形態では、クライアント側プロセスからサーバ側プロキシへ転送されるリクエストメッセージや、サーバ側プロキシからクライアント側プロセスへ転送されるリプライメッセージを対象とする場合について示してきたが、あるプロキシに、リクエストメッセージを送信する装置とリプライメッセージを送信する装置との両方、あるいはリクエストメッセージおよびリプライメッセージの両方を送信する装置が接続されている場合には、もちろん、クライアント側プロセスからサーバ側プロキシへ転送されるリクエストメッセージおよびリプライメッセージならびにサーバ側プロキシからクライアント側プロセスへ転送されるリクエストメッセージおよびリプライメッセージを対象とすることや、クライアント側プロセスからサーバ側プロキシへ転送されるリクエストメッセージおよびサーバ側プロキシからクライアント側プロセスへ転送されるリクエストメッセージのみ対象とすることなども可能である。
【0208】
ところで、これまでは1つのサーバ側プロキシと1つのクライアント側プロキシとの間の1対1の通信に着目して説明してきたが、本発明の適用範囲はもちろんサーバ側プロキシとクライアント側プロキシとが1対1で通信するシステムには限定されるものではなく、サーバ側プロキシとクライアント側プロキシとが1対多で通信するシステム、サーバ側プロキシとクライアント側プロキシとが多対1で通信するシステム、あるいはサーバ側プロキシとクライアント側プロキシとが多対多で通信するシステムにも適用可能である。例えば、図39のように、複数のユーザオフィスに設置したクライアント側プロキシや、モバイルユーザが利用する個人用プロキシなどがサーバ側プロキシを共有して使用するように実施することも可能である。
【0209】
また、これまでは、1つのメッセージに含まれるデータ全体をFP圧縮する対象(フィンガープリント・キャッシュに登録する対象)にしていたが、例えば、1つのメッセージに含まれるデータが所定の単位のデータの集合で構成される場合には、1つのメッセージに含まれる一部の単位データのみFP圧縮する対象(フィンガープリント・キャッシュに登録する対象)にする構成も可能である。
【0210】
ところで、本実施形態のサーバ側プロキシあるいはクライアント側プロキシ(一方でも両方でもよい)に、プロキシの共有キャッシュ機構でキャッシュ可能とされているリプライデータについて、クライアントが出したリクエストメッセージにおいて指定されていたURLと、該リクエストメッセージに対応するリプライメッセージに含まれていたリプライデータと、該リプライデータに対応するフィンガープリントと、該リプライメッセージのリプライ・ヘッダに入れられて来たMIMEタイプなどのリクエスト・ヘッダを構成するのに必要な情報や有効期間の判定に使うためのタイムスタンプなどの情報を対応付けてキャッシュしておき(フィンガープリント・キャッシュにすべて保持してもよいし、リプライデータを除く情報(URLとフィンガープリントと他の情報)を保持する対応テーブルを別途設けてもよい)、これとフィンガープリント・キャッシュとを併用することで、プロキシサーバの共有キャッシュの動作をも行うようにすることができる。例えば、クライアント側プロキシに該キャッシュ機能を設けた場合、クライアントが送信したリクエストメッセージにて指定されているURLに対するリプライデータがキャッシュされており且つ該データが有効である場合には、該クライアント側プロキシが、URLに対応するデータをフィンガープリント・キャッシュから取得して、リプライメッセージを作成して、これをクライアントに応答することができる。
【0211】
この機能は、個々のサーバ側プロキシ30毎に、また個々のクライアント側プロキシ40毎に、設けるか否かを定めることができる。
【0212】
まず、上記機能を設けたクライアント側プロキシ40について説明する。
【0213】
図40に、この場合のクライアント側プロキシ40の構成例を示す。このクライアント側プロキシ40は、図20の構成・機能に加えて、更に過去にアクセスしたURLと、そのリプライデータのフィンガープリントとの対応を保持するURL・フィンガープリント・テーブル(URL・FPテーブル)45と、URLキャッシュ処理部427とを備えている。
【0214】
なお、URL・FPテーブル45には、URLおよびフィンガープリント以外に、そのURLでアクセスしたときにリプライヘッダに入れられて来たMIMEタイプや、有効期間の判定に使うためのタイムスタンプなどの情報も併せて記録する。また、URL・FPテーブル45には、従来の共有キャッシュがキャッシュできる場合にのみ必要な情報を記録する。
【0215】
図41に、サーバ側プロキシ30からクライアント側プロキシ40へリプライメッセージを転送する際のクライアント側プロキシ40の処理手順例を示す。
【0216】
なお、この場合の処理手順は、図23〜図25の手順の端子4および端子6およびステップS38の後に追加される以外は、図23〜図25の手順と同じであり、図41では、図23〜図25の手順の端子4および端子6およびステップS38より後の処理手順の部分を示してある。ここでは、図23〜図25で説明した手順に追加する部分を中心に説明する。
【0217】
クライアント側プロキシ40は、送信部43により、クライアント50にリプライメッセージを送信(図23〜図25のステップS28、S29、S32、S35またはS38)した後、URLキャッシュ処理部427にて、該リプライメッセージがキャッシュ対象のものであるか否か調べ、判断する(S39)。キャッシュ対象であると判断されたならば、URLキャッシュ処理部427にて、URLとフィンガープリントとリプライヘッダを構成するのに必要な情報等を対応付けて(URLをキーにして)をURL・FPテーブル45に登録する(S40)。キャッシュ対象でないと判断されたならば、何もしない。
【0218】
なお、ステップS39の判断およびステップS40のURL・FPテーブルへの登録は、ステップS23とステップS28あるいはS29、ステップS23とステップS32あるいはステップS35の間にて行うようにしても構わない。
【0219】
なお、登録時の受信リプライメッセージがキャッシュ対象のものであるか否かの判断方法は、従来の登録時の手法と同様で構わない(例えば、GETメソッドのリプライデータであって、かつ、そのヘッダにキャッシュ不可を示す情報が記述されていないものをキャッシュ対象とする等)。
【0220】
次に、図42および図43に、クライアント250から受信したリクエストメッセージをクライアント側プロキシ40からサーバ側プロキシ30へ転送する際のクライアント側プロキシ40におけるプロキシサーバの共有キャッシュの動作に関する処理手順の一例を示す。
【0221】
クライアント側プロキシ40は、受信部41により、クライアント50からリクエストメッセージを受信する(ステップS141)。
【0222】
URLキャッシュ処理部427は、リクエストメッセージに対するリプライメッセージがキャッシュ対象のものであるか否か調べ、判断する(S142)。なお、応答時のキャッシュ対象か否かの判断方法は、従来の応答時の手法と同様で構わない(例えば、受信リクエストメッセージがGETメソッドのものであるか否か)。
【0223】
リクエストデータがキャッシュ対象外のものと判断されたならば(S142)、受信したリクエストメッセージを送信部43からサーバ側プロキシ30へ転送する(S151)。
【0224】
ステップS142にて該リクエストメッセージに対するリプライメッセージがキャッシュ対象のものであると判断されたならば、URLキャッシュ処理部427は、さらに、該リクエストメッセージに指定されているURLを取り出し(S143)、そのURLをキーとしてURL・FPテーブル45を検索する(S144)。
【0225】
そのURLに対応するリプライデータのフィンガープリントがキャッシュされていなければ(S145)、受信したリクエストメッセージを送信部43からサーバ側プロキシ30へ転送する(S151)。このとき、現在保持しているデータのタイムスタンプをリクエストメッセージのIf-Modified-Sinceヘッダに記入してサーバ側プロキシ30へ転送し、サーバ側プロキシ30から現在保持しているデータが有効であるとのリプライメッセージを受け取ると、ステップS147へ行くように実施することもできる。
【0226】
また、そのURLに対応するリプライデータのフィンガープリントが登録されていても(S145)、併せて保持されている有効期間の判定のための情報に基づいてそのデータが無効になっていると判断されれば(S146)、受信したリクエストメッセージを送信部43からサーバ側プロキシ30へ転送する(S151)。
【0227】
一方、そのURLに対応するリプライデータのフィンガープリントが登録されており(S145)、かつ、併せて保持されている有効期間の判定のための情報に基づいてそのデータが有効であると判断されれば(S146)、URLキャッシュ処理部427は、URL・FPテーブル45からリプライデータを構成するのに必要な情報を得るとともに、当該URLに対応するリプライデータのフィンガープリントをキーとしてFPキャッシュ44を検索する(S147)。
【0228】
次に、FPキャッシュ管理部422は、ステップS147にて取得したデータが差分圧縮データであるかどうかを、圧縮識別子が0または1のいずれであるかをもって判断する(S148)。圧縮識別子が0であれば、差分圧縮データではないと判断され、1であれば、差分圧縮データであると判断される。
【0229】
該データが差分圧縮データであることが判明した場合(S148)、差分解凍処理部424は該データを解凍し、リプライデータを生成する(S149)。そして、該リプライデータからリプライメッセージを生成し、送信部43からクライアントへ転送する(S150)。
【0230】
一方、該データが差分圧縮データでないことが判明した場合(S148)、FP圧縮解凍部423は、該データからリプライデータを生成し、送信部43からクライアントへ転送する(S150)。
【0231】
以下では、図44(応答時)を参照しながら、共有キャッシュの動作についてより具体的に説明する。
【0232】
(1)クライアント50上のブラウザ等は、例えば“/C.html”というURLでサーバ20に、GETメソッドのリクエストメッセージを出したとする。
【0233】
(2)新しいURLでリクエストが来たときに、そのURLがURL・FPテーブル45に載っていれば、従来の共有キャッシュと同様に有効期間の判定を行い、有効と判断できれば、そのURLに対応するフィンガープリントをURL・FPテーブル45を引いて求め、それを名前とするデータをFPキャッシュ44から取り出す。そして、圧縮識別子により、該データが差分圧縮データかどうか調べる。図44の例では、圧縮識別子が1であるので差分圧縮データである。すると、差分圧縮を解凍し(図44では、差分圧縮データ内に、フィンガープリントが“71F0…73E6”であるデータへの参照情報があるため、既にキャッシュされている該データが参照され、解凍される)、これをリプライデータとする。さらに、URL・FPテーブル45からMIMEタイプ等のリプライヘッダを構成するのに必要な情報を取り出してリプライヘッダを作成する。
【0234】
(3)作成したリプライメッセージを、クライアント50(上で動作するブラウザ等)へ送り返す。
【0235】
なお、キャッシュの内容が指定した時間以降に更新されている場合にのみデータを送ることを依頼するIf-Modified-Sinceヘッダを持つリクエストメッセージの場合も、まずURL・FPテーブルを参照し更新されていないことが判断できれば、そこでリプライメッセージを作成して返し、そうでなければサーバまで再びIf-Modified-Sinceの情報を書き直して聞きに行くように実施することもできる。
【0236】
次に、キャッシュ機能を設けたサーバ側プロキシ30について説明する。
【0237】
上記ではクライアント側プロキシ40のキャッシュ機能について説明したが、サーバ側プロキシ30も同様に実施可能である。
【0238】
この場合、クライアント側プロキシ40に対するメッセージ転送元のクライアント50とメッセージ転送先のサーバ側プロキシ30が、サーバ側プロキシ30に対してはそれぞれクライアント側プロキシ40(転送元)とサーバ20(転送先)になり、キャッシュに関係する構成・手順は同様である。
【0239】
図45に、この場合のサーバ側プロキシ30の構成例を示す。このサーバ側プロキシ30は、図19の構成・機能に加えて、更に過去にアクセスしたURLと、そのリプライデータのフィンガープリントとの対応を保持するURL・フィンガープリント・テーブル(URL・FPテーブル)35と、URLキャッシュ処理部327とを備えている。
【0240】
図46に、サーバ側プロキシ30からクライアント側プロキシ40へリプライメッセージを転送する際のサーバ側プロキシ30の処理手順の一例を示す。
【0241】
なお、この場合の処理手順は、図21及び図22の手順のステップS6および端子2およびS13の後に追加される以外は、図21及び図22の手順と同じであり、図46では、図21及び図22の手順のステップS6および端子2およびS13より後の処理手順の部分を示してある。ここでは、図21及び図22で説明した手順と相違する部分を中心に説明する。
【0242】
サーバ側プロキシ30は、送信部33により、クライアント側プロキシ40にリプライメッセージを送信(図21及び図22のステップS6、S9、S11、またはS13)した後、URLキャッシュ処理部327にて、該リプライメッセージのリプライデータがキャッシュ対象のものであるか否か調べ、判断する(S14)。キャッシュ対象であると判断されたならば、URLキャッシュ処理部327にて、URLとフィンガープリントとリプライヘッダを構成するのに必要な情報等を対応付けて(URLをキーにして)をURL・FPテーブル35に登録する(S15)。キャッシュ対象でないと判断されたならば、何もしない。
【0243】
もちろん、前述と同様に、この手順も種々変形することが可能である。
【0244】
図47に、クライアント側プロキシ40から受信したリクエストメッセージをサーバ側プロキシ30からサーバ20へ転送する際のサーバ側プロキシ30におけるプロキシサーバの共有キャッシュの動作に関する処理手順の一例を示す。
【0245】
サーバ側プロキシ30は、受信部31により、クライアント側プロキシ40からリクエストメッセージを受信する(ステップS161)。
【0246】
URLキャッシュ処理部327は、リクエストメッセージに対するリプライメッセージがキャッシュ対象のものであるか否か調べ、判断する(S162)。なお、応答時のキャッシュ対象か否かの判断方法は、従来の応答時の手法と同様で構わない(例えば、受信リクエストメッセージがGETメソッドのものであるか否か)。
【0247】
リクエストデータがキャッシュ対象外のものと判断されたならば(S162)、受信したリクエストメッセージを送信部33からサーバ20へ転送する(S169)。
【0248】
ステップS162にて該リクエストメッセージに対するリプライメッセージがキャッシュ対象のものであると判断されたならば、URLキャッシュ処理部327は、さらに、該リクエストメッセージに指定されているURLを取り出し(S163)、そのURLをキーとしてURL・FPテーブル35を検索する(S164)。
【0249】
そのURLに対応するリプライデータのフィンガープリントがキャッシュされていなければ(S165)、受信したリクエストメッセージを送信部33からサーバ20へ転送する(S169)。このとき、現在保持しているデータのタイムスタンプをリクエストメッセージのIf-Modified-Sinceヘッダに記入してサーバ20へ転送し、サーバ20から現在保持しているデータが有効であるとのリプライメッセージを受け取ると、ステップS167へ行くように実施することもできる。
【0250】
また、そのURLに対応するリプライデータのフィンガープリントが登録されていても(S165)、併せて保持されている有効期間の判定のための情報に基づいてそのデータが無効になっていると判断されれば(S166)、受信したリクエストメッセージを送信部33からサーバ20へ転送する(S169)。
【0251】
一方、そのURLに対応するリプライデータのフィンガープリントが登録されており(S165)、かつ、併せて保持されている有効期間の判定のための情報に基づいてそのデータが有効であると判断されれば(S166)、URLキャッシュ処理部327は、URL・FPテーブル35からリプライデータを構成するのに必要な情報を得るとともに、当該URLに対応するリプライデータのフィンガープリントをキーとしてFPキャッシュ34を検索する(S167)。
【0252】
FPキャッシュ管理部322は、FPキャッシュ34から取得したデータから、該フィンガープリントの値を用いてリプライメッセージをFP圧縮時のフォーマットで生成し、送信部33から、クライアント側プロキシ40へ送信する(S168)。
【0253】
このように、サーバ側プロキシにもURL・FPテーブル表を持ってキャッシュの処理をする構成は、一つのサーバ側プロキシが複数のクライアント側プロキシから使われているときに有効に働く。すなわち、あるクライアント側プロキシから要求のあったキャッシュ可能なデータが既に他のクライアント側プロキシによってアクセスされている場合には、サーバ側プロキシにもキャッシュされているので、そのデータを送り返すだけで処理が完了する。
【0254】
このように、サーバ側プロキシにもURL・FPテーブル表を持ってキャッシュの処理をする構成は、一つのサーバ側プロキシが複数のクライアント側プロキシから使われているときに有効に働く。すなわち、あるクライアント側プロキシから要求のあったキャッシュ可能なデータが既に他のクライアント側プロキシによってアクセスされている場合には、サーバ側プロキシにもキャッシュされているので、そのデータを送り返すだけで処理が完了する。
【0255】
なお、以上では、URL・FPテーブル表をフィンガープリント・キャッシュとは別途に設ける場合について説明したが、URL・FPテーブル表をフィンガープリント・キャッシュと一体化して構成することも可能である。
【0256】
なお、いずれのプロキシにおいても、フィンガープリント圧縮処理部とフィンガープリント解凍処理部とを併せて、フィンガープリント(FP)圧縮・解凍処理部としてもよい。また、いずれのプロキシにおいても、差分圧縮処理部と差分解凍処理部とを併せて、差分圧縮・解凍処理部としてもよい。図48に、この場合のプロキシ(サーバ側プロキシ、クライアント側プロキシ)の構成例を示す。
【0257】
FP圧縮を該リクエストデータ転送のみに適用した場合、FP圧縮を該リプライデータ転送のみに適用した場合、FP圧縮を該リクエストデータ転送および該リプライデータ転送に適用した場合のいずれにおいても、リクエストメッセージが指定するURLに対応するリプライデータに対する共用キャッシュ機能に関する構成をクライアント側プロキシのみに設けることも、サーバ側プロキシのみに設けることも、両プロキシに設けることも可能である。
【0258】
なお、本実施形態は、コンピュータに所定の手段を実行させるための(あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるための)プログラムとして実施することも、該プログラムを記録したコンピュータ読取り可能な記録媒体として実施することもできる。
【0259】
なお、この発明の実施の形態で例示した構成は一例であって、それ以外の構成を排除する趣旨のものではなく、例示した構成の一部を他のもので置き換えたり、例示した構成の一部を省いたり、例示した構成に別の機能あるいは要素を付加したり、それらを組み合わせたりすることなどによって得られる別の構成も可能である。また、例示した構成と論理的に等価な別の構成、例示した構成と論理的に等価な部分を含む別の構成、例示した構成の要部と論理的に等価な別の構成なども可能である。また、例示した構成と同一もしくは類似の目的を達成する別の構成、例示した構成と同一もしくは類似の効果を奏する別の構成なども可能である。
また、この発明の実施の形態で例示した各種構成部分についての各種バリエーションは、適宜組み合わせて実施することが可能である。
また、この発明の実施の形態は、個別装置としての発明、関連を持つ2以上の装置についての発明、システム全体としての発明、個別装置内部の構成部分についての発明、またはそれらに対応する方法の発明等、種々の観点、段階、概念またはカテゴリに係る発明を包含・内在するものである。
従って、この発明の実施の形態に開示した内容からは、例示した構成に限定されることなく発明を抽出することができるものである。
【0260】
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
【0261】
【発明の効果】
本発明によれば、データ転送装置間でデータとその名前との対応を保持し、この対応を保持しているデータについては、データ本体を転送する代わりに対応する名前を転送することで、データ転送装置間の転送データ量を削減させることができる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るネットワーク・システムの構成例を示す図
【図2】同実施形態に係るネットワーク・システムの他の構成例を示す図
【図3】同実施形態に係るネットワーク・システムのさらに他の構成例を示す図
【図4】フィンガープリントについて説明するための図
【図5】同実施形態に係るフィンガープリント・キャッシュについて説明するための図
【図6】同実施形態で使用する差分圧縮の指示方法について説明するための図
【図7】同実施形態の差分圧縮の具体例について説明するための図
【図8】同実施形態の差分圧縮の具体例について説明するための図
【図9】同実施形態の差分圧縮の具体例について説明するための図
【図10】同実施形態の差分圧縮の他の具体例について説明するための図
【図11】同実施形態の差分圧縮の他の具体例について説明するための図
【図12】同実施形態の差分圧縮の他の具体例について説明するための図
【図13】同実施形態の差分圧縮の他の具体例について説明するための図
【図14】同実施形態で使用するメッセージ・フォーマットの一例を示す図
【図15】同実施形態で使用するメッセージ・フォーマットの他の例を示す図
【図16】同実施形態で使用するメッセージ・フォーマットのさらに他の例を示す図
【図17】同実施形態で使用するメッセージ・フォーマットのさらに他の例を示す図
【図18】同実施形態で使用するメッセージ・フォーマットのさらに他の例を示す図
【図19】同実施形態に係るサーバ側プロキシの構成例を示す図
【図20】同実施形態に係るクライアント側プロキシの構成例を示す図
【図21】同実施形態に係るサーバ側プロキシの手順例を示すフローチャート
【図22】同実施形態に係るサーバ側プロキシの手順例を示すフローチャート
【図23】同実施形態に係るクライアント側プロキシの手順例を示すフローチャート
【図24】同実施形態に係るクライアント側プロキシの手順例を示すフローチャート
【図25】同実施形態に係るクライアント側プロキシの手順例を示すフローチャート
【図26】同実施形態の差分圧縮の処理手順の一例を示すフローチャート
【図27】同実施形態の差分圧縮の処理手順の他の例を示すフローチャート
【図28】同実施形態に係るサーバ側プロキシの手順例を示すフローチャート
【図29】同実施形態に係るクライアント側プロキシの手順例を示すフローチャート
【図30】同実施形態に係るプロキシ間のデータ転送について説明するための図
【図31】同実施形態に係るプロキシ間のデータ転送について説明するための図
【図32】同実施形態に係るプロキシ間のデータ転送について説明するための図
【図33】同実施形態にプロキシの他の構成例を示す図
【図34】同実施形態に係るクライアント側プロキシの他の手順例を示すフローチャート
【図35】同実施形態に係るクライアント側プロキシの他の手順例を示すフローチャート
【図36】同実施形態に係るサーバ側プロキシの他の手順例を示すフローチャート
【図37】同実施形態に係るサーバ側プロキシの他の手順例を示すフローチャート
【図38】同実施形態に係るサーバ側プロキシの他の手順例を示すフローチャート
【図39】同実施形態に係るネットワーク・システムのさらに他の構成例を示す図
【図40】同実施形態に係るクライアント側プロキシの他の構成例を示す図
【図41】同実施形態に係るクライアント側プロキシの他の手順例を示すフローチャート
【図42】同実施形態に係るクライアント側プロキシの他の手順例を示すフローチャート
【図43】同実施形態に係るクライアント側プロキシの他の手順例を示すフローチャート
【図44】同実施形態に係るクライアントとクライアント側プロキシとの間のデータ転送について説明するための図
【図45】同実施形態に係るサーバ側プロキシの他の構成例を示す図
【図46】同実施形態に係るサーバ側プロキシの他の手順例を示すフローチャート
【図47】同実施形態に係るサーバ側プロキシの他の手順例を示すフローチャート
【図48】同実施形態に係るプロキシのさらに他の構成例を示す図
【図49】従来のコンピュータ・ネットワーク・システムについて説明するための図
【符号の説明】
2…ASPサーバセンター
4…ユーザオフィス
12…ASPサーバセンター内LAN
14…WAN
16…ユーザオフィス内LAN
20…サーバ装置
30…サーバ側プロキシ装置
40…クライアント側プロキシ装置
31,41…受信部
32,42…処理部
33,43…送信部
34,44…フィンガープリント・キャッシュ
35,45…URL・FPテーブル
321,421…FP圧縮判定部
322,422…フィンガープリント・キャッシュ管理部
323…FP圧縮処理部
423…FP解凍処理部
324…差分圧縮処理部
424…差分解凍処理部
325,425…FP圧縮・解凍処理部
326,426…差分圧縮・解凍処理部
327,427…URLキャッシュ処理部
50…クライアント装置
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a data transfer apparatus, a data transfer method, and a program for transferring data for another apparatus.
[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 that communicate 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 the Web, the service is basically provided by transferring data between the client and the server regardless of the form of the provided service. 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, many browsers or the like that operate on a client use a cache mechanism, and cache recently accessed data. On the Web, access is made by designating information and services with names called URLs, so the cache on the client is the information that has been requested from the Web server in the past and the data returned as a result of the service that can be cached The URL is recorded in the cache in association with the URL. In this case, when there is a request for information or a service with the same URL as that in the cache, and it can be determined that the response data in the cache is not stale, by returning the 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, on the 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” that reads information on the server, a “PUT method” that writes data held by the user to the server, and a “POST method” that sends back the result processed 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 the static data portion that is the target of caching in the 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 a Web-based ASP (Application Service Provider), has been popularized 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 provides a data transfer device, a data transfer method, and a program provided with a cache technology and a compression technology that can further reduce the load on the network connecting the data transfer devices. The purpose is to provide.
[0017]
[Means for Solving the Problems]
The present invention relates to a data transfer device that relays communication between a server device and another data transfer device that relays data transmitted from the server device to a client device, and receives the data from the server device to another data transfer device. Correspondence between transmitted first complete data, first fingerprint generated based on the first complete data, and first identification information indicating that the first complete data is complete data A holding means for attaching and holding, a receiving means for receiving the second complete data transmitted by the server device to the client device, and a difference that is a difference between the first complete data and the second complete data The data, the second fingerprint generated based on the second complete data, and the second identification information indicating that the difference data is difference data, Causes held in lifting means and said difference data and the second identification information, characterized by comprising a transmitting means for transmitting the client device as a destination.
The present invention also relates to another data transfer device that relays data transmitted from the server device to the client device and a data transfer device that relays communication with the client device, and receives the client from the other data transfer device and First complete data transmitted to the device, a first fingerprint generated based on the first complete data, and first identification information indicating that the first complete data is complete data; Storing means for associating and holding, difference data that is a difference between the first complete data and the second complete data, which is destined for the client device, and that the difference data is difference data. Receiving means for receiving the second identification information, and generating the second complete data using the first complete data and the differential data, and the differential data, The second fingerprint generated on the basis of the complete data and the second identification information are associated with each other and held in the holding unit, and the second complete data is transmitted to the client device as the destination And transmitting means.
[0023]
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.
[0024]
According to the present invention, the correspondence between the data and its name is held between the data transfer devices, and the data having this correspondence is transferred by transferring the corresponding name instead of transferring the data body. The amount of data transferred between transfer devices can be reduced. For example, even if the reply message of the GET method is private data, it can be compressed between fingerprints and transferred between data transfer apparatuses. For example, even if the reply message of the GET method is dynamic data, if the content is the same, it can be compressed between fingerprints and transferred between data transfer apparatuses. Further, for example, even in the case of the POST method, if the result is the same data, the data can be transferred between the data transfer devices by compressing the data with a fingerprint.
[0025]
Further, according to the present invention, since the name corresponding to the data is not held, the data is transferred. Cost Even if the corresponding name cannot be transferred instead, the compressed data expressed by compressing the data using the name corresponding to the stored reference data is transferred between the data transfer devices. The amount of transfer data can be reduced. For example, if the reply data of the GET method or the POST method is partially different from the previously accessed data, the data amount can be reduced by differential transfer. Also, for example, if the PUT method or POST method request data is partially different from the previously sent data, the amount of data can be reduced by differential transfer.
[0026]
Further, according to the present invention, when data compression is possible, the storage device (memory, hard disk, etc.) can be effectively used by storing the compressed data instead of the data.
[0027]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, embodiments of the invention will be described with reference to the drawings.
[0028]
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, or a protocol using a protocol other than HTTP is applicable.
[0029]
FIG. 49 shows a basic configuration example of a computer network system to which the present invention is applied. In this configuration example, a local area network (LAN) 12 in the ASP server center 2 and a local area network (LAN) 16 in the user office 4 are connected via a wide area network (WAN) 14 such as the Internet or a dedicated line. The server 20 and the client 50 can communicate with each other via the LAN 12, the WAN 14, and the LAN 16. One or more servers are connected to the LAN 12, and one or more clients are connected to the LAN 16.
[0030]
The Web-based ASP provides services by various application programs from the server 20 installed in the center 2 via the WAN 14, and the user accesses these services using a Web browser on a client installed in the office 4. To do. In such a form of use, the effective communication capacity (bandwidth) of the network connecting the intra-office LAN 16 and the intra-center LAN 12, particularly the WAN 14 such as the Internet, is lower than that of the LAN 12 or LAN 16. There is a problem that a communication delay occurs as a bottleneck and the response performance of the application deteriorates. Therefore, in this embodiment, for example, 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 WAN 14 that connects the intra-center LAN 12 and the intra-office LAN 16, and the server 20 and the client When 50 communicates via LAN 12, proxy 30, WAN 14, proxy 40, and LAN 16, the communication data amount is reduced by performing fingerprint compression (FP compression) and differential compression, which will be described later, between the proxies. Eliminate bottlenecks. Furthermore, in these proxies, as will be described in detail later, a necessary amount of cache is reduced by holding a part of data necessary for compression as difference information.
[0031]
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, software having a desired function, such as OS, driver software, packet communication software, encryption software, etc., or hardware such as a communication interface device, external storage device, input / output device, etc., is added to the computer as necessary. Mounted or connected. In this case, it is preferable to use a graphical user interface (GUI) for inputting information from a user or an administrator or presenting information to the user.
[0032]
On the client 50 used by the user in order 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 a Web browser, receiving a reply message, or repeating this appropriately. . 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.
[0033]
A predetermined server program operates on the server 20 and provides services specific to the server site to the user of the client 50.
[0034]
As shown in FIG. 1, the server-side proxy 30 may be installed and implemented so as to be connected to both the server center LAN 12 and the WAN 14 and operate as a transparent proxy. Further, as shown in FIG. 2, it may be installed on the LAN 12 in the server center. Moreover, you may implement so that the function of the server side proxy 30 may be incorporated in the server 20 like FIG.
[0035]
Similarly, as shown in FIG. 1, the client side proxy 40 may be installed and connected to both the intra-user office LAN 16 and the WAN 14 so as to operate as a transparent proxy. Further, as shown in FIG. 2, it may be installed on the LAN 16 in the user office. Further, as shown in FIG. 3, the function of the client side proxy 40 may be incorporated 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.
[0036]
Note that the server-side proxy 30 and the client-side proxy 40 may have the same form as shown in FIGS. 1 to 3 or different forms.
[0037]
In the following, an outline of the fingerprint cache, FP compression and differential compression using this, and data management will be described.
[0038]
In the following description, when one direction is taken as an example of the data transfer direction between the server-side proxy 30 and the client-side proxy 40, data is transferred from the server-side proxy 30 to the client-side proxy 40. As will be described by way of example, the same can be done when transferring data from the client side proxy 40 to the server side proxy 30.
[0039]
The server side proxy 30 and the client side proxy 40 of this embodiment have a cache mechanism called a fingerprint cache. The fingerprint cache records and manages data exchanged by the HTTP protocol by a name called a fingerprint (FP).
[0040]
As shown in FIG. 4, the fingerprint is a short numerical value determined by a predetermined calculation method (hash function in FIG. 4) from the contents of data exchanged by the HTTP protocol (content in FIG. 4). is there. 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. 5, the fingerprint cache (260) of the server-side proxy 30 and the client-side proxy 40 is a data body (261) exchanged by the HTTP protocol in the past or data generated by differential compression described later. Using the fingerprint value (262) obtained by calculating (264) from the exchanged data as a name, differentially compressed data indicating whether the recorded data is a data body or data generated by differential compression It is recorded and managed together with an identifier (hereinafter referred to as a compressed identifier) (263). In the following, the identifier = 0 indicates that “the recorded data is a data body”, and the identifier = 1 indicates that “the recorded data is data generated by differential compression”. The description will be made with reference to an example, but the present invention is not limited to this.
[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 stored in the fingerprint cache. If it is included and the compression identifier is 0, the data existing in the cache is not data generated by differential compression, but the data (data having the same contents) has been transferred in the past. The corresponding fingerprint value is transferred without transferring. 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.
[0044]
Also, for example, in the above case, if the data corresponding to the calculated fingerprint is in the fingerprint cache and the compression identifier is 1, the server-side proxy 30 generates the data existing in the cache by differential compression. It can be seen that differential compression has succeeded in the past with respect to the received data (data having the same content as the received data) and that differential information has been transferred, and the corresponding finger is transferred without transferring the data. Transfer print values. The client-side proxy 40 that has received the fingerprint can reproduce the data to be transferred by extracting the data corresponding to the fingerprint value from the fingerprint cache and decompressing the differentially compressed data. .
[0045]
If it is the same data (data body or data generated by differential compression) sent in the past by such a method (that is, compression of data by fingerprint → transfer of fingerprint → decompression of data by fingerprint) Since only the fingerprint value needs to be sent, the amount of data flowing through the network can be greatly reduced.
[0046]
In the above case, the data corresponding to the calculated fingerprint is not stored in the fingerprint cache. -By registering in the cache, the fingerprint can be transferred by FP compression from the next time.
[0047]
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).
[0048]
Subsequently, differential compression will be described.
[0049]
In the above FP compression, the identity of the data is determined at high speed using the fingerprint for the data, and the same data as the data registered in the fingerprint cache is not transferred between the proxies. Reduces network load by transferring prints. However, FP compression cannot be applied to data that is different from data registered in the fingerprint cache, even if most of the data has the same contents. Therefore, in this embodiment, even when FP compression is not possible, one or more data registered in the fingerprint cache is used as reference data to transfer the reference data fingerprint, difference information for the reference data, or the like. By expressing transfer data with information for restoring power data, the transfer data is expressed with a small amount of information, and the transfer data amount is reduced as much as possible. That is, the data in the fingerprint cache is used as a dictionary so that data that can be extracted from the dictionary is not sent.
[0050]
For the sake of explanation, when transferring data between the server-side proxy 30 and the client-side proxy 40, the amount of transfer information is compressed by replacing the message body data with the fingerprint of the reference data using a fingerprint cache. This is called differential compression. In addition, transfer data generated by this differential compression is referred to as differential compressed data.
[0051]
Note that differential compression using such a fingerprint does not require that the relationship between the data to be transferred and the reference data be determined in advance. No The advantage is also obtained. That is, in the conventional differential transfer, it is necessary to decide in advance what the difference is to be taken in both sides. Therefore, when the differential transfer is actually used in the Web system, the data of this URL is the difference based on this data. Therefore, it is impossible to effectively operate arbitrary data because it is necessary to register a rule such as On the other hand, this differential compression method takes the difference in the fingerprint cache data as reference data, so that the effect of compressing the data by the difference can be obtained even if the base of the difference is not determined in advance. Obtainable.
[0052]
Next, the data management method of this embodiment will be described.
[0053]
In this embodiment, when the differential compression is successful for the reply data received from the server 20 in the server side proxy 30, the server side proxy 30 transmits the differential compression data generated by the differential compression to the client side proxy 40. In the own fingerprint cache 260, the fingerprint acquired from the reply data and the differentially compressed data are recorded and managed. At this time, the compression identifier is set to 1 to indicate that the recorded / managed data is differentially compressed data.
[0054]
In the client side proxy 40, when the reply data received from the server side proxy 30 is differentially compressed data, the reply data received by the server side proxy 30 is generated from the differentially compressed data and transmitted to the client 50. In its own fingerprint cache 260, the fingerprint for the reply data generated from the differentially compressed data and the differentially compressed data received from the server-side proxy 30 are recorded and managed. At this time, the compression identifier is set to 1 to indicate that the recorded / managed data is differentially compressed data.
[0055]
On the other hand, when the reply data received from the server 20 in the server side proxy 30 is the first data and both FP compression and differential compression have failed, the server side proxy 30 sends the reply data to the client side proxy 40. Is recorded and managed in the fingerprint cache 260 of its own and the fingerprint acquired from the reply data and the reply data are recorded and managed. At this time, the compression identifier is set to 0 to indicate that the recorded / managed data is not differentially compressed data.
[0056]
When the client-side proxy 40 detects that the reply data received from the server-side proxy 30 is data that has not been subjected to either FP compression or differential compression, the reply data is transmitted to the client 50. In the own fingerprint cache 260, the fingerprint acquired from the reply data and the reply data are recorded and managed. At this time, the compression identifier is set to 0 to indicate that the recorded / managed data is not differentially compressed data.
[0057]
As a result, only the differentially compressed data is stored in the fingerprint cache 260 of both the server-side proxy 30 and the client-side proxy 40 for the data that has been successfully differentially compressed.
[0058]
By the way, in an application such as a Web-based ASP, data that is mostly the same content but different in only a part is often used. For example, there are many forms of data that have the same information written in many fields but differ only in part. Further, for example, there are Web pages that differ only in date or time, and those that differ only in the total access count counter value. In such a case, transfer and storage using differentially compressed data are particularly effective, and transfer and storage using the data body can be effectively reduced.
[0059]
Note that all the messages may be applied to the FP compression between the proxies 30 and 40. For example, a message that satisfies a predetermined condition is excluded from the FP compression application (always FP compression). May be transferred). The predetermined condition is, for example, that predetermined information (for example, information indicating a GET method and information indicating a request) is described in a message header, data to be transferred is null or very Various variations such as short size are conceivable.
[0060]
Further, all messages subject to application of FP compression may be subject to application of differential compression, but among messages subject to application of FP compression, messages that satisfy a predetermined condition are excluded from the subject of application of differential compression. (In this case, the condition to which the differential compression is applied is a condition in which another condition is weighted to the condition to which the FP compression is applied). For example, the upper limit value U2 of the data size not subjected to differential compression is set larger than the upper limit value U1 of the data size not subjected to FP compression (the lower limit L2 of the data size to be differentially compressed is set lower than the lower limit value L1 of the data size to be FP compressed). It is determined by the data size whether it is an application target of FP compression, or whether it is an application target of differential compression, but data other than HTML or XML is an application target of the application target of FP compression. Various variations are conceivable, such as a method in which data is excluded (differential compression is performed only on HTML or XML data). In the following description, a case where all the messages subject to application of FP compression are subject to application of differential compression will be described as an example.
[0061]
In this embodiment, the message subject to FP compression and differential compression is a message in which data is FP-compressed (however, the compression identifier may be 0 or 1), and a message in which data is differentially compressed. Or a message whose data is not compressed is transferred between the server-side proxy 30 and the client-side proxy 40.
[0062]
When there is a message that is a target for FP compression and not a target for differential compression, the message is either a message in which data is FP compressed (compression identifier = 0) or a message in which data is not compressed. Transfer is performed between the server-side proxy 30 and the client-side proxy 40.
[0063]
When there is a message that is not subject to FP compression, the message is transferred between the server side proxy 30 and the client side proxy 40 as a message whose data is not compressed.
[0064]
Here, a differential compression method will be described.
[0065]
There are various methods of differential compression using a fingerprint cache such as the following.
One of the data registered in the fingerprint cache is used as reference data. Between the proxies, a fingerprint value corresponding to the reference data and information indicating a difference between the transfer data and the reference data are transferred.
In the above method, the data registered in the fingerprint cache is used for all or part of the difference from the reference data. Alternatively, all or part of the transfer data is expressed by combining data (entire or part) registered in the fingerprint cache. For example, any number of data registered in the fingerprint cache is used as reference data. Between the proxies, the fingerprint value corresponding to the reference data, the information indicating the portion of the reference data used for restoring the transfer data, and the information indicating the method for restoring the transfer data based on that portion are transferred. To do.
[0066]
Below, an example of the expression method of differential compression data is shown.
[0067]
FIG. 6 shows three types of instructions for expressing data to be transferred. The differentially compressed data transferred instead of the data is composed of a sequence of these instructions.
[0068]
(A) is an instruction for defining the reference data with a number when referring to the data in the fingerprint cache. The first byte 8n (n = 0 in the example of FIG. 6) is an instruction identifier. Among the instruction identifiers, n indicates that data designated by the fingerprint is handled as nth reference data. 16 bytes starting from the second byte indicate a fingerprint value for the reference data. In this example, 80 to 8F can handle reference data from 0th reference data to 15th maximum. The maximum number of reference data that can be handled can be more or less depending on the implementation.
[0069]
(B) represents an instruction to copy partial data from the reference data defined in (a). 9n in the first byte (n = 0 in the example of FIG. 6) is an instruction identifier. Among the instruction identifiers, n indicates that the nth reference data defined by the instruction (a) is used. The 4 bytes from the 2nd byte indicate the offset position in the nth reference data, and the 4 bytes from the 6th byte indicate the data length. These indicate that data of a specified length from the specified offset position in the nth reference data should be copied (as a constituent part of the transfer data) in accordance with the position (order) of this instruction sequence.
[0070]
(C) is an instruction for directly specifying data. A0 in the first byte is an instruction identifier. Four bytes from the second byte indicate the length of the data. The number of bytes specified by the length follows the 6th byte. Then, they indicate that the data after the 6th byte is copied (as a constituent part of the transfer data) in accordance with the position (order) of this instruction sequence.
[0071]
The differentially compressed data composed of such a sequence of instructions can be decompressed by simply copying and connecting the data in the order in which they are instructed while referring to the fingerprint cache.
[0072]
Next, an example of differential compression according to the above method is shown.
[0073]
Assume that data as shown in FIG. 7 is stored in the fingerprint cache as fingerprints 5E83... B6.
[0074]
At this time, if data as shown in FIG. 8 is given, differential compression can be performed as shown in FIG. 9 using the data in FIG. 7 as reference data.
[0075]
That is, the data in FIG. 8 is merely changed from “TOYO” in FIG. 7 to “OSAKA” as compared with the data in FIG. Therefore, as shown in FIG. 9, first, it is instructed to define the data of fingerprint “5E83... B6” as the 0th reference data at the 0th byte, and from the 0th byte of the 0th reference data to the 17th byte. Instruct to copy bytes, then instruct to copy 5 characters of “OSAKA” at 26th byte, and finally copy 51 bytes from 65th byte of 0th reference data at 36th byte Is instructing.
[0076]
If decompression is performed according to this instruction, the data in FIG. 8 can be reproduced.
[0077]
In this example, only one reference data is used, but a plurality of reference data can be used.
[0078]
Next, another example of differential compression according to the above method will be shown.
[0079]
Assume that data as shown in FIG. 10 is in the fingerprint cache as fingerprints 82F3... 38 and data as shown in FIG. 11 is in the fingerprint cache as fingerprints A20D. At this time, if data as shown in FIG. 12 is given, differential compression can be performed as shown in FIG. 13 using the data in FIG. 10 and the data in FIG. 11 as reference data.
[0080]
In FIG. 13, first, it is instructed to define the data of the fingerprint “82F3... 38” as 0th reference data at the 0th byte, and 53 bytes from the 0th byte of the 0th reference data are copied at the 17th byte. And instructing to define the fingerprint “A20D... CB” data as the first reference data at the 26th byte, and copying the 55th byte from the 96th byte of the first reference data at the 43rd byte. Is instructing.
[0081]
If decompression is performed according to this instruction, the data in FIG. 12 can be reproduced.
[0082]
In the above-described method, the method of specifying the portion to be used of the reference data and directly specifying the data to be used (method 1) is used. Instead, the portion of the reference data that is not used (directly). A method (method 2) in which an instruction of a part to be replaced with instruction data and direct designation of data to be inserted into the unused part is also possible.
[0083]
It is also possible to use method 1 and method 2 in combination.
[0084]
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. .
[0085]
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 in which data is FP-compressed and replaced with a fingerprint (message at the time of FP compression), FP compressed Rena However, there are a message in which differentially compressed data is mounted (message at the time of differential compression) and a message in which data that is not subjected to FP compression or differential compression is mounted (message at the time of non-compression). In the case of a configuration in which not all messages are subject to FP compression, there are messages that are not subject to FP compression in addition to these three messages.
[0086]
In the proxy on the transmission side of both proxies, the data is deleted and the fingerprint is added in the message at the time of FP compression, the data is deleted in the message at the time of differential compression, and the data such as the fingerprint of the reference data is restored. Information is added. Data is not deleted for uncompressed messages and messages not subject to compression.
[0087]
Of the two proxies, the receiving proxy needs to be able to identify the above three or four types of messages. When a message is received at the time of FP compression, the fingerprint is returned to the data (however, if the compression identifier is 0, the data body is retained, but if the compression identifier is 1, the difference compression is used) Since the generated data is retained, the data is restored based on this data), and the data is restored when a message is received during differential compression. When a message is received at the time of differential compression or non-compression, the fingerprint cache is registered.
[0088]
FIG. 14 shows an example of the message format. (A) is a message at the time of non-compression, (b) is a message at the time of differential compression, and (c) is a message at the time of FP compression.
[0089]
In (a), data is placed in the message body, in (b) information for restoring the data is placed in the message body instead of data, and in (c), a finger is substituted in the message body instead of data. A print (FP) is placed.
[0090]
Also, in this example, identification information for identifying the type of message is described (in the compression proxy) in the message header, and whether or not FP compression is performed based on this identification information (in the decompression proxy). Identify (for example, 01 means no compression, 10 means differential compression, 11 means FP 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.
[0091]
Note that, in a configuration in which a message that is not subject to FP compression may exist, a message of a message that is not subject to FP compression, as shown in FIG. 14D, in the proxy on the compression side (transmission side). -The identification information (for example, 00) may be included in the header.
[0092]
Further, in a configuration in which a message that is not subject to FP compression may exist, the message on the decompression side (reception side) proxy is a message that is not subject to FP compression due to some information included in the message header. When it is possible to determine whether or not the message body is null and the message is determined not to be subject to FP compression, the FP compression is not applicable. It is also possible not to include identification information in the message header of the message.
[0093]
In the example of FIGS. 14A and 14B, the fingerprint for the data is not included in the message at the time of non-compression or differential compression. However, the fingerprint may be included in the message header. Good (or a fingerprint for the data may be included in the message body). FIGS. 15A to 15C show an example in which a fingerprint is included in the message header at the time of non-compression or differential compression, and a fingerprint is included in the message body at the time of FP compression. 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.
[0094]
In any of the above cases, as shown in FIG. 16, in the message at the time of FP compression, a fingerprint (FP) may be included in the message header, and the message body may be null.
[0095]
In addition to the above, various message formats are possible.
[0096]
For example, in FIG. 17, the uncompressed flag is described in the header of the message at the time of (a) uncompressed and the fingerprint is not described, and the differential compression flag is described in the header of the message at the time of differential compression of (b). Also, the fingerprint is not described, the fingerprint is described in the header of the message at the time of FP compression in (c), and the body is null.
[0097]
In this case, it is possible to identify that the message is a message at the time of FP compression by detecting that the message body is null or the fingerprint is described in the header of the message. it can. Further, a message at the time of non-compression and a message at the time of differential compression can be identified by detecting that a non-compression flag or a differential compression flag is described in the header.
[0098]
In the case of a configuration in which a message that is not subject to FP compression may exist, in the proxy on the compression side (transmission side), as shown in (a) and (b) of FIG. If (b) is not null (if the data is null), a non-target flag may be included in the message header of a message that is not subject to FP compression.
[0099]
Further, in a configuration in which a message that is not subject to FP compression may exist, the message on the decompression side (reception side) proxy is a message that is not subject to FP compression due to some information included in the message header. 18 (c) and 18 (d), (c) indicates that the data is not empty (null), and (d) indicates that the data is empty (null). ) It is also possible not to include a non-target flag in the message header of a message that is not subject to FP compression.
[0100]
In the following, the present embodiment will be described in detail focusing on the case where the reply data is first FP compressed / decompressed when the reply message is transferred from the server side proxy 30 to the client side proxy 40.
[0101]
FIG. 19 shows a configuration example of the server-side proxy 30 in this embodiment, and FIG. Ru The structural example of the client side proxy 40 is shown. 19 and 20 mainly show the configuration when data is transferred from the server-side proxy 30 to the client-side proxy 40. FIG.
[0102]
The server-side proxy 30 in FIG. 19 is 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 FP compression and differential compression for the data included in the transfer message. The processing unit 32, the transmission unit 33 that performs processing for transmitting a transfer message to the LAN 12 in the server center or the wide area network 14, and the fingerprint and the original data or differentially compressed data are stored in association with each other. A fingerprint cache (FP cache) 34 is provided. In addition, the processing unit 32 performs a search or registration for the fingerprint compression determination unit (FP compression determination unit) 321 and the FP cache 34 for determining whether or not the data included in the transfer message is to be compressed. Fingerprint cache management unit (FP cache management unit) 322, fingerprint compression processing unit (FP compression processing unit) 323 for performing processing such as replacing the data included in the transfer message with the corresponding fingerprint, and transfer message Includes a differential compression processing unit 324 for performing processing such as replacing the data included in the data with differential compression data.
[0103]
20 includes a receiving unit 41 that performs processing for receiving a transfer message from the user office LAN 16 or the wide area network 14, and a processing unit 42 that performs FP decompression on data included in the transfer message. A transmission unit 43 that performs processing for transmitting a transfer message to the user office LAN 16 or the wide area network 14, and a fingerprint for storing the fingerprint and the original data or differentially compressed data in association with each other A cache (FP cache) 44 is provided. The processing unit 42 also includes a fingerprint compression determination unit (FP compression determination unit) 421 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 and differential compression. In order to perform processing such as a fingerprint cache management unit (FP cache management unit) 422 for performing search and registration for the FP cache 44, and decompressing original data from the fingerprint included in the FP compressed transfer message. A fingerprint decompression processing unit (FP decompression processing unit) 423, and a differential decompression processing unit 424 for performing processing such as decompressing original data from differentially compressed data included in a differentially compressed transfer message.
[0104]
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 compression is to be applied (when all messages are to be applied to FP compression, the compression side FP compression determination unit 321 and the corresponding part of the procedure example shown later and the decompression side FP compression determination are determined. The corresponding determination part of the part 421 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, a description will be mainly given of a case where a message to be applied to FP compression is transferred (when it is determined that FP compression is to be applied or all messages are to be applied to FP compression).
[0105]
FIG. 21 and FIG. 22 show an example of the processing procedure of the server side proxy 30 when the reply message is transferred from the server side proxy 30 to the client side proxy 40. 21 and 22 describe the processing when one reply message is received, but the processing illustrated in FIGS. 21 and 22 is actually performed for all reply messages received by the server-side proxy 30. I do.
[0106]
The server side proxy 30 receives a reply message from the server 20 by the receiving unit 31 (step S1).
[0107]
The FP compression determination unit 321 determines whether or not the reply data of the reply message is for FP compression (S2). If it is determined that the reply data is not subject to FP compression (S2), the received reply message is transferred from the transmission unit 33 to the client side proxy 40 (S13).
[0108]
If it is determined in step S2 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 (S3), The FP cache 34 is searched using the print value as a key (S4).
[0109]
If the set of the fingerprint value and the corresponding data (data body or differentially compressed data) is registered in the FP cache 34 (S5), the FP compression processing unit 323 receives the received reply. The message is sent to the client side proxy 40 from the transmission unit 33 in the FP compression format using the fingerprint value (S6).
[0110]
On the other hand, as a result of the search in step S4, if the set of the fingerprint value and the corresponding data is not registered in the FP cache 34 (S5), the differential compression processing unit 324 performs differential compression. (S7), it is determined whether or not the differential compression is successful (S8).
[0111]
Whether or not the differential compression has succeeded is determined if, for example, the data amount r0 of the original data targeted for differential compression is compared with the data amount r1 of the differential compression data, and if r0−r1> d is satisfied, Judge that Here, the constant d is a predetermined integer of 0 or more.
[0112]
If it is determined in step S8 that the differential compression is successful, the following two operations are performed (either 1-1 or 1-2 may be performed first or in parallel).
(1-1) In the differential compression processing unit 324, the received reply message is converted into a format at the time of differential compression (using the fingerprint value as necessary), and the client side proxy 40 is sent from the transmission unit 33. (S9).
(1-2) The FP cache management unit 322 associates the fingerprint value with the differentially compressed data generated in step S7 (using the fingerprint value as a key) and registers it in the FP cache 34. (S10). At this time, since the data to be registered is differentially compressed data, the compression identifier is set to 1.
[0113]
In the above (1-2), all the differentially compressed data is registered in the FP cache. However, (i) the size of the differentially compressed data is almost the same as the size of the data that is the basis of the differentially compressed data. If not, store the original data of the differential compressed data instead of the differential compressed data. (Ii) When the size of the differential compressed data is very small compared to the size of the data of the differential compressed data It is also possible to maintain the registration in the FP cache of the data used as reference data when creating the differential compressed data without saving the differential compressed data and without saving the original data of the differential compressed data. . There are various other variations. This also applies to the case where differential compressed data is registered in the FP cache in other processing procedure examples described later (in the following description, all differential compressed data is registered in the FP cache as well). The case is assumed to be an example).
[0114]
On the other hand, if it is determined in step S8 that the differential compression has failed, the following two operations are performed (either 2-1 or 2-2 may be performed first or in parallel). .
(2-1) The differential compression processing unit 324 (or the FP compression processing unit 323) converts the received reply message into the uncompressed format from the transmission unit 33 to the client side proxy 40 (S11). .
(2-2) The FP cache management unit 322 associates the fingerprint value with the reply message (using the fingerprint value as a key) and registers it in the FP cache 34 (S12). At this time, since the data to be registered is not differential compression data, the compression identifier is set to 0.
[0115]
Next, FIG. 23 to FIG. 25 show an example of the processing procedure of the client side proxy 40 when the reply message is transferred from the server side proxy 30 to the client side proxy 40. 23 to 25 describe the processing when one request message is received, but the processing illustrated in FIGS. 23 to 25 is actually performed for all the request messages received by the client-side proxy 40. I do.
[0116]
The client side proxy 40 receives a reply message from the server side proxy 30 by the receiving unit 41 (step S21).
[0117]
The FP compression determination unit 421 checks and determines whether the reply data of the reply message is for FP compression (S22). If it is determined that the reply data is not subject to FP compression (S22), the received reply message is transferred from the transmitter 43 to the client 50 (S38).
[0118]
If it is determined in step S22 that the reply data of the reply message is for FP compression, the FP compression determination unit 421 further checks whether or not the reply data is FP compressed (S23). ).
[0119]
If it is determined in step S23 that the reply data of the reply message is FP compressed, the FP cache management unit 422 obtains the fingerprint value of the reply data (S24), The FP cache 44 is searched using the value as a key (S25).
[0120]
Next, whether or not the data obtained as a result of the search in step S25 is differentially compressed data is examined and determined by the FP cache management unit 422 using the compression identifier of the data (S26).
[0121]
If it is determined in step S26 that the data is differentially compressed data (in this example, the compression identifier is 1), the differential decompression processing unit 424 searches for and acquires reference data in the FP cache management unit 422. After that, the differential compressed data is decompressed to restore the original reply data (S27), the restored reply data is added to the reply message, and when using special information between proxies, the received reply message is used. The information is deleted, and the reply message is transmitted from the transmission unit 43 to the client 50 (S28).
[0122]
If it is determined in step S26 that the data is not differentially compressed data (in this example, the compression identifier is 0), the FP decompression processing unit 423 retrieves the received reply message from the FP cache 44. In addition, when data corresponding to the fingerprint value is added and special information is used between proxies, the information is deleted and then transmitted from the transmission unit 43 to the client 50 (S29).
[0123]
On the other hand, if it is determined in step S23 that the reply data of the reply message is not FP compressed, the FP compression determination unit 421 further determines whether or not the reply data is differentially compressed (S30). ).
[0124]
If it is determined in step S30 that differential compression has been performed, the following two operations are performed (either 1-1 or 1-2 may be performed first or in parallel).
(1-1) In the differential decompression processing unit 424, the differential reply data is decompressed (after retrieving and acquiring the reference data by the FP cache management unit 422) to restore the original reply data (S31). When reply data is added to the reply message and special information is used between proxies, the information is deleted from the received reply message, and the reply message is transmitted from the transmission unit 43 to the client 50 (S32).
(1-2) The FP cache management unit 422 obtains the fingerprint value of the reply data (S33) and associates the fingerprint value with the differentially compressed data (using the fingerprint value as a key). And is registered in the FP cache 44 (S34). At this time, in registration in the FP cache 44, since the reply message is differentially compressed data, the compression identifier is set to 1.
[0125]
On the other hand, if it is determined in step S30 that differential compression has not been performed, the following two operations are performed (either 2-1 and 2-2 may be performed first or in parallel). .
(2-1) When the difference decompression processing unit 424 (or the FP decompression processing unit 423) uses special information between proxies, the information is deleted from the received reply message, and then is transmitted from the transmission unit 43. It transmits to the client 50 (S35).
(2-2) The FP cache management unit 422 obtains a fingerprint value of the reply data (S36), associates the fingerprint value with the reply message (using the fingerprint value as a key). And register in the FP cache 44 (S37). At this time, in registration in the FP cache 44, the reply message is not differentially compressed data, so the compression identifier is set to zero.
[0126]
In steps S24 / S33 / S36, 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, the reply data is used. There is a method of calculating a fingerprint value by a hash function or the like. Even when the fingerprint is described in the message, a method of calculating the fingerprint value based on the reply data is also possible. Steps S24 / S33 / S36 may be performed at other timing before using the fingerprint. Moreover, you may perform all or one part of judgment of step S22, S23, S26, S30 simultaneously.
[0127]
Next, a procedure for performing differential compression will be described.
[0128]
FIG. 26 shows an example of the differential compression procedure. This is a procedure example in the case of using the three types of designation described above.
[0129]
Here, in order to perform differential compression, it is assumed that a history table in which recently accessed data is sequentially arranged among the data stored in the fingerprint cache is used. This history table does not necessarily need to record the fingerprints of all data stored in the fingerprint cache. For example, a predetermined number may be recorded (in this case, the number is determined in advance assuming a number effective for use as reference data for differential compression, for example).
Of course, one or a plurality of criteria other than the order of recent access may be used as the criteria for recording in the history table, and one or more other criteria may be used in addition to the criteria of the order of recent access. May be.
[0130]
There is also a method in which the history table is configured integrally with the fingerprint cache.
[0131]
(Step S231)
First, the working copy buffer and instruction buffer are emptied.
[0132]
Based on the contents copied to the copy buffer, the instructions in FIGS. 6A to 6C are created and written to the instruction buffer. Finally, the sequence of instructions written in the instruction buffer becomes differentially compressed data.
[0133]
(Step S232)
Data to be subjected to differential compression is handled as a character string, and a pointer pointing to the character string is prepared. First, the pointer is set to point to the first character in the character string.
[0134]
In the following, loop processing is executed until it is determined in step S241 that the pointer has reached the last character in the character string.
[0135]
(Step S233)
The data corresponding to the fingerprints recorded in the history table are taken out in order from the newest one, and the data that matches more than a predetermined length from the location indicated by the pointer in the data to be differentially compressed is the reference data Take out as.
[0136]
There are various reference data and determination methods. For example, a method of examining data corresponding to fingerprints recorded in the history table in the latest order, and first extracting data that matches a predetermined length or more as reference data, fingerprints recorded in the history table There is a method in which all of the data corresponding to the above are examined, and the data having the longest matching length (provided that the matching is longer than a predetermined length) is taken out as reference data.
[0137]
(Step S234)
If reference data is found, the process proceeds to step S237. If the reference data is not found, the process proceeds to step S235.
[0138]
(Step S237)
When the reference data is found in step S234, if the copy buffer is not empty, a copy instruction by direct designation in FIG. 6C corresponding to the character string in the copy buffer is created and designated. Write to buffer. The copy buffer is emptied.
If the copy buffer is empty, nothing is done.
[0139]
(Step S238)
If the reference data definition of FIG. 6A corresponding to the reference data found in step S233 has not yet been written to the instruction buffer, the reference data definition instruction is written to the instruction buffer.
[0140]
(Step S239)
A copy instruction for the matched character string from the reference data is written in the instruction buffer as a copy instruction in FIG.
[0141]
(Step S240)
Advance the pointer by the length of the character string that matches the reference data.
[0142]
(Step S235)
On the other hand, when the reference data is found in step S234, the character pointed to by the pointer is entered in the copy buffer.
[0143]
(Step S236)
Advance the pointer by one character.
[0144]
(Step S241)
If the pointer has not reached the end of the data to be subjected to differential compression (if there is a data portion that has not been processed), the process returns to step S233. If the pointer has come to the end of the data to be subjected to differential compression (if no unprocessed data portion remains), the processing loop is exited and the process proceeds to step S242.
[0145]
(Step S242)
If the copy buffer is not empty, a copy instruction by direct designation in FIG. 6C corresponding to the character string in the copy buffer is created and written to the instruction buffer. The copy buffer is emptied.
If the copy buffer is empty, nothing is done.
[0146]
The contents of the instruction buffer at this time become differentially compressed data.
[0147]
In addition, as described above, after the differential compression is actually performed in this way, the data size as a result of the differential compression is smaller than the data size before the execution (or a constant standard (constant Confirm that it is smaller than the compression amount). If the data size is not reduced by differential compression (or if it does not decrease beyond a certain standard (a certain amount of compression)), it is better not to perform differential compression, so the data is transferred as it is.
[0148]
By the way, in the differential compression process described above, the process of selecting the latest data having a character string that matches the predetermined length or more in step S233 is considered to be the process that takes the longest time. To speed up this process, a hash table can be used. Extract all the character strings of a predetermined length from the data to be entered in the history table, calculate the hash value (for example, the sum of all the character codes), and register it in the hash table. Keep it. This hash table is overwritten with the latest data if there is data having the same hash value.
Using this hash table, the hash value of a character string of a predetermined length is obtained from the current pointer position of the data to be differentially compressed, and the data obtained by subtracting the hash table using the hash value is the step It becomes the first candidate of data to be selected in S233. Here, since the same hash value may be generated even in different character strings, whether or not they are really the same is confirmed by actually comparing the character strings. Search for candidates.
[0149]
Another method for speeding up the processing in step S233 is a method of performing comparison processing in units of rows. In the procedure of FIG. 26, the comparison processing is performed in units of characters. However, for all data in the history table, a hash value column for each row in the data is calculated. First, a column of hash values of each row is calculated from data to be differentially compressed. Thereafter, the procedure is the same as that in FIG. 26, but the comparison is performed not in units of characters but in units of row hash values. Since this method uses a line as a unit, the number of comparisons can be reduced as compared with a character unit. However, in order to compare by hash value, there may be the same hash value in different rows, so after finally judging that the hash values are the same, whether or not they are really the same by actually comparing the rows It is desirable to judge.
Of course, the above-described hash technique can be combined for such a configuration in which the comparison is performed in units of rows. In this case, a plurality of consecutive rows may be combined and registered in the hash table in units of the minimum number of rows that is the same as or longer than a predetermined length.
[0150]
Next, FIG. 27 shows another example of the differential compression procedure. This uses one of the data registered in the fingerprint cache as reference data, and between the proxies, the fingerprint value corresponding to the reference data, and information indicating the difference between the transfer data and the reference data It is an example of a procedure when transferring.
[0151]
Again, the history table as described above is used.
[0152]
First, of the data corresponding to the fingerprints recorded in the history table, one satisfying a predetermined standard is selected as reference data (step S245).
[0153]
The predetermined standard is, for example, that the data amount of a portion that does not match the reference data among the data to be subjected to differential compression is equal to or less than a predetermined data amount, and the reference When the data is divided into a plurality of chunks by the unmatched portion, if the number of the divided chunks is equal to or less than a predetermined number, this can be selected as reference data.
[0154]
As a method for determining the reference data, as described above, for example, the data corresponding to the fingerprints recorded in the history table are checked in the latest order, and the data that matches the predetermined length or more at first As a reference data, to examine all of the data corresponding to the fingerprint recorded in the history table, to extract the data that did not match and the data with the least number of divisions as reference data, etc. There are various methods.
[0155]
If the reference data is found (S246), the reference data definition instruction (for example, (a) in FIG. 6) is written in the instruction buffer (S247).
[0156]
An instruction indicating a part of the reference data that has not been matched (a part to be replaced with the directly specified data) (for example, an instruction in the same format as in FIG. Writing to the buffer (S248).
[0157]
A direct designation instruction (for example, (c) in FIG. 6) indicating data to be inserted into the unmatched portion of the reference data is written to the instruction buffer (S249).
[0158]
If there are a plurality of replacement parts, step S248 and step S249 are executed accordingly.
[0159]
The contents of the instruction buffer at this time become differentially compressed data.
[0160]
On the other hand, if reference data is found (S246), differential compression is not performed.
[0161]
In the above description of FIG. 26 and FIG. 27, the history table is provided separately from the fingerprint cache. However, there is a method in which the history table is integrated with the fingerprint cache.
[0162]
In the above description, the history table is used. However, there is a method that does not use the history table. For example, the fingerprint cache is checked in a predetermined order (for example, in order of entry or at random) by a predetermined upper limit number, and the best one of them is used. There are various methods such as a method of checking reference data in a predetermined order (for example, in order of entry or randomly) and determining reference data when reference data satisfying a predetermined condition is first obtained.
[0163]
In addition to the fingerprint, the history table or fingerprint cache also stores the URL of the reply message that included the reply data that was the original when the fingerprint was registered, and stores the reference data. When searching, first, it is checked whether or not data having the same URL as the reply message including the reply data to be subjected to differential compression is registered in the history table or the fingerprint cache. Data having the same URL as the URL may be prioritized over other data to check whether it can be used as reference data.
[0164]
Of course, in addition to FIG. 26 and FIG. 27, various differential compression procedures are possible.
[0165]
In the case where the fingerprint cache is not used when the request message is transferred from the client side proxy 40 to the server side proxy 30, the server side proxy 30, as illustrated in FIG. A procedure of receiving a request message from the proxy 40 (step S60) and transmitting it to the server 20 (step S61) may be used. Similarly, as illustrated in FIG. 29, the client-side proxy 40 may receive a request message from the client 50 (step S62) and transmit it to the server-side proxy 30 (step S63).
[0166]
Hereinafter, the data transfer using the fingerprint cache will be described more specifically with reference to FIGS. 30 to 32.
[0167]
First, referring to FIG. 30, data that has not been registered in the fingerprint cache and that has not been successfully compressed is transferred from the server-side proxy 30 to the client-side proxy 40, and The operation when registering a print cache will be described.
[0168]
(1) It is assumed that the browser or the like on the client 50 issues a POST method request message to the server 20 with a URL “/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.
[0169]
(2) The client-side proxy 40 that has received the request message from the client 50 transfers the request message to the server-side proxy 30.
[0170]
(3) The server-side proxy 30 that has received the request message transfers the request message to the server 20.
[0171]
(4) After processing the request message, the server 20 sends the reply message back to the server-side proxy 30.
[0172]
(5) Upon receiving the reply message, the server-side proxy 30 first calculates the fingerprint of the reply data included in the received reply message, and checks whether data having the fingerprint name is in the FP cache 34. Here, for the first time not entered, the data that was registered in the fingerprint cache is deleted or invalidated in the case of the configuration that may be deleted or invalidated afterwards. Therefore, the data is entered (registered) in the FP cache 34 with the fingerprint as a name. Here, it is assumed that the data amount cannot be reduced by differentially compressing the reply data. At this time, in the registration in the FP cache 34, since the data is not differentially compressed data, the compression identifier is set to 0.
[0173]
(6) The server side proxy 30 transfers the reply message carrying the data to the client side proxy 40. If the fingerprint value calculated from the reply data is sent in a reply header or the like, the trouble of calculating the fingerprint again by the client side proxy 40 can be saved.
[0174]
(7) Since the client side proxy 40 that has received the reply message is the first data, it registers the reply data in the FP cache 44. At this time, in the registration in the FP cache 44, since the reply data is not differentially compressed data, the compression identifier is set to 0. As described above, the fingerprint is calculated from the reply data, or the fingerprint put in the reply header or the like by the server side proxy is taken out and this is entered as a name.
[0175]
(8) The client-side proxy 40 deletes the information used only between the server-side proxy 30 and the client-side proxy 40 (such as a fingerprint value in the reply header). After that, a reply message is sent back to the client 50 (such as a browser operating on the client 50).
[0176]
The server-side proxy 30 may perform the fingerprint cache registration (5) described above after the operation (6). Further, in the client side proxy 40, the fingerprint cache registration of (7) may be performed after the operation of (8).
[0177]
Next, referring to FIG. 31, data that has not been registered in the fingerprint cache and has been subjected to differential compression is transferred from the server-side proxy 30 to the client-side proxy 40, and the fingerprint of the data is fingerprinted. -The operation when registering a cache will be described.
[0178]
(1) to (4) are the same as (1) to (4) in the operation described with reference to FIG.
[0179]
(5) Upon receiving the reply message, the server-side proxy 30 first calculates the fingerprint of the reply data included in the received reply message, and checks whether data having the fingerprint name is in the FP cache 34. Here, it is determined that the data is not included and is the first data. If the data to be compressed cannot be FP compressed, differential compression processing is performed. If the reply data can be differentially compressed to reduce the data amount, differential compression is performed. Here, it is assumed that when data having a fingerprint of “71F0... 73E6” is used as reference data, the reply data is differentially compressed to reduce the data amount. Reply data is replaced with differential compression data, and information indicating that differential compression has been performed is put in a reply header or the like.
[0180]
(6) The server-side proxy 30 puts (registers) the differentially compressed data generated in (5) into the FP cache 34 with the fingerprint calculated in (5) as a name. At this time, in the registration in the FP cache 34, since the data is differentially compressed data, the compression identifier is set to 1.
[0181]
(7) The server side proxy 30 transfers the reply message to the client side proxy 40.
[0182]
(8) The client-side proxy 40 sees the reply header and the like, knows that the reply data is differentially compressed, and decompresses the compression. At this time, first, the fingerprint “71F0... 73E6” of the reference data specified in the compressed data is extracted, and then the data corresponding to the fingerprint is extracted from the FP cache 44 and used. Then, the decompressed data is put in the reply data, and necessary headers such as the reply header content size are rewritten.
[0183]
(9) Since the client-side proxy 40 that has received the reply message is the first data, it registers the differentially compressed data received from the server-side proxy 30 in the FP cache 44. At this time, in the registration in the FP cache 44, since the data to be registered is differential compression data, the compression identifier is set to 1. In addition, in the case of a configuration in which information used only between the server-side proxy 30 and the client-side proxy 40 such as a fingerprint value exists in the reply header or the like, this is deleted. As described above, the fingerprint is calculated from the reply data (data obtained by decompressing the differentially compressed data), or the fingerprint put in the reply header or the like by the server side proxy is taken out, and this is used as the name. Put in.
[0184]
(10) The client-side proxy 40 sends a reply message back to the client 50 (such as a browser operating on the client 50).
[0185]
In (5) above, all unregistered data to be compressed is registered in the fingerprint cache, and all the data used as reference data in (6) above is the fingerprint cache. However, when the only data is used for the reference data and the data subject to differential compression is almost the same as the reference data used for the differential compression ( For example, if the amount of data that does not match is below the standard), (i) unregistered data to be compressed is not registered in the fingerprint cache, and the reference data maintains the fingerprint cache registration Or (ii) Register unregistered data to be compressed in the fingerprint cache and reference data as fingerprint To remove from the cache, it is also possible to methods such as. In addition, when the only data is used for the reference data, the data subject to differential compression and the reference data used for the differential compression have almost the same contents and the same URL. In this case, it is possible to register the unregistered data to be compressed in the fingerprint cache and delete the reference data from the fingerprint cache, assuming that the data has been updated. There are various other variations.
[0186]
Next, with reference to FIG. 32, an operation in the case where the data registered in the cache by performing the operation of FIG. 30 or 31 is transferred from the server side proxy 30 to the client side proxy 40 will be described.
[0187]
(1) to (4) are the same as (1) to (4) in the operation described with reference to FIG.
[0188]
(5) Upon receiving the reply message from the server 50, the server-side proxy 40 first calculates the fingerprint of the reply data included in the received reply message, and whether or not the data having the fingerprint name is in the FP cache 34 Check out. Since the fingerprint cache is registered here, the reply body data is replaced with the fingerprint (for example, by inserting the fingerprint value into the reply header or the like and emptying the reply body).
[0189]
(6) The server side proxy 30 transfers the reply message in which the reply body is replaced with the fingerprint to the client side proxy 40.
[0190]
(7) The client-side proxy 40 that has received the reply message detects that the reply data has been replaced with the fingerprint, and FP is performed using the specified fingerprint (for example, in the reply header as described above). The corresponding data is retrieved from the cache 44.
Here, when the compression identifier of the data is 0, since the data is not differentially compressed data, it is put in the reply body. On the other hand, when the compression identifier of the data is 1, since the data is differentially compressed data, the reply data that has been decompressed is restored and placed in the reply body. FIG. 32 illustrates the former case.
In addition, in the case of a configuration in which information used only between the server-side proxy 30 and the client-side proxy 40 such as a fingerprint value exists in the reply header or the like, this is deleted.
[0191]
(8) Then, the client side proxy 30 sends a reply message back to the client 50 (such as a browser operating on the client 50).
[0192]
By the way, since the fingerprint caches of the server side proxy 30 and the client side proxy 40 have an upper limit in capacity, garbage collection is performed according to a predetermined algorithm, for example, old data or data that is unlikely to be used is deleted. Is preferred.
[0193]
However, in this case, even if the FP cache 34 of the server-side proxy 30 is held, data that has already been deleted can be generated in the FP cache 44 of the client-side proxy 40, so see FIG. In (7) in the operation described above, the client-side proxy 40 tried to obtain data to replace the reply data from the FP cache 44 based on the fingerprint, but the fingerprint corresponding to the FP cache 44 There may be no data set. In such a case, for example, the client-side proxy 40 requests the server-side proxy 30 to send the specified fingerprint data, and the requested server-side proxy 30 receives the specified fingerprint. It is sufficient to provide a mechanism for fetching the data from the FP cache 34 and sending it back.
[0194]
Conversely, the FP cache 34 of the server side proxy 30 has already been deleted, but the FP cache 44 of the client side proxy 40 is still held. Have When such data exists, the fingerprint / data is set in the client-side proxy 40 in (7) in the operation described with reference to FIG. 30 and (9) in the operation described with reference to FIG. When registering in the FP cache 44, the fingerprint / reply data registered at that time may be overwritten.
[0195]
In (5) in the operation described with reference to FIG. 32, the server-side proxy 30 obtains the fingerprint of the reply data. If the fingerprint is in the FP cache 34, the same data as the ply data is Processing is performed assuming that the fingerprint and the fingerprint are contained in the FP cache 34. In practice, this method is sufficient if the same fingerprint is not generated from different data, but an error that occurs when the fingerprints of different data accidentally become the same value with a very small probability. There is also a way to get rid of. In this case, when the fingerprint obtained from the reply data is in the FP cache 34, the data in the FP cache 34 paired with the fingerprint is compared with the ply data, What is necessary is just to judge whether it is the same. At this time, if it is determined that data having the same fingerprint but different contents is registered, a method exemplified below can be considered.
・ The fingerprint is not used anymore (the data giving the fingerprint will not be cached)
Prioritize fingerprints / data registered earlier (other data giving the same fingerprint value as the fingerprint being registered will not be cached during the registration)
-Give priority to the fingerprint / data currently registered (the fingerprint / data being registered will be updated one after another by other data giving the same value fingerprint)
By the way, in the example described so far, when the reply data is transferred from the server-side proxy 30 to the client-side proxy 40, the fingerprint cache is used, and a set of a certain data and a fingerprint corresponding thereto is used as a fingerprint. The data is registered in the cache when the data is transferred from the server-side proxy 30 to the client-side proxy 40 for the first time. However, in the usage such as Web-based ASP, for example, data is first created in a user office or the like and registered in a server and accessed from a browser or the like in many cases. If the data is registered in the server (as the data main body or differentially compressed data) in the fingerprint cache of the client-side proxy and the server-side proxy, subsequent access can be speeded up. Therefore, if the reply data sent by the server is data originally transferred from the client to the server (however, in this case, request data), the registration request is sent to the original request data as the reply data. May be transferred from the client-side proxy 40 to the server-side proxy 30 for the first time (in this case, when the data becomes reply data and is transferred from the server-side proxy 30 to the client-side proxy 40 for the first time). Since the registration to the fingerprint cache has already been completed, even if it is the first transfer of reply data, the amount of transferred data can be reduced by using the fingerprint cache. it can).
[0196]
In the example described so far, when the reply data is transferred from the server side proxy 30 to the client side proxy 40, if the reply data is the same as the data registered in the fingerprint cache, The network traffic is reduced by transferring a corresponding fingerprint or differentially compressed data instead of the reply data. In the present invention, a request is sent from the client side proxy 40 to the server side proxy 30. The present invention can be further applied to the case of transferring data.
[0197]
In addition, when applying FP compression to both, it is also possible to apply differential compression only about either one.
[0198]
Further, it is also possible to apply FP compression and differential compression only when request data is transferred from the client side proxy 40 to the server side proxy 30.
[0199]
When FP compression and differential compression are applied to request data transfer from the client-side proxy 40 to the server-side proxy 30, the roles of the server-side proxy 30 and the client-side proxy 40 with respect to the reply data already described may be reversed. When the FP compression and differential compression are applied to both data transfers, the server-side proxy 30 further includes a fingerprint decompression processing unit and a differential decompression processing unit in the processing unit 32 in addition to the configuration of FIG. In addition to the configuration of FIG. 20, the proxy 40 may further include a fingerprint compression processing unit and a differential compression processing unit in the processing unit 42.
[0200]
In any proxy, the fingerprint compression processing unit and the fingerprint decompression processing unit may be combined into a fingerprint (FP) compression / decompression processing unit. Similarly, the differential compression processing unit and the differential decompression processing unit may be combined into a differential compression / decompression processing unit.
[0201]
The server-side proxy 30 and the client-side proxy 40 may be provided with a fingerprint cache for request data transfer independently of a fingerprint cache for reply data transfer, but the same for reply data transfer and quest data transfer. The fingerprint cache may be shared. In the case of the configuration using the above-described history table at the time of differential compression, the history table may be provided independently as well, or may be shared.
[0202]
FIG. 33 shows a configuration example of proxies (server-side proxy and client-side proxy) when the same fingerprint cache is shared for reply data transfer and quest data transfer.
[0203]
FIG. 34 and FIG. 35 show an example of a processing procedure of the client side proxy 40 when transferring a request message from the client side proxy 40 to the server side proxy 30. 34 and 35 are the same as in FIG. 21 and FIG. 22, the message to be transferred changes from the reply message to the request message, the message transmission source changes from the server to the client, the message transmission destination changes from the client to the server, and the server side proxy 30. And the operation of the client side proxy 40 are interchanged.
[0204]
36 to 38 show an example of a processing procedure of the server-side proxy 30 when a request message is transferred from the client-side proxy 40 to the server-side proxy 30.
[0205]
In FIGS. 36 to 38, the message to be transferred is changed from the reply message to the request message, the message transmission source is changed from the server to the client, the message transmission destination is changed from the client to the server, and the server side proxy 30 is changed. And the operation of the client side proxy 40 are interchanged.
[0206]
If the request data is replaced with the fingerprint or the differentially compressed data in this way, for example, when uploading the same file to the server many times, it is only necessary to send the fingerprint after the second time. Can reduce traffic.
[0207]
In the present embodiment, the request message transferred from the client-side process to the server-side proxy and the reply message transferred from the server-side proxy to the client-side process have been shown. If both the device that sends the request message and the device that sends the reply message, or the device that sends both the request message and the reply message are connected, of course, it is transferred from the client side process to the server side proxy. Target request messages and reply messages, and request messages and reply messages transferred from the server side proxy to the client side process. It is also such that the target only request message transmitted from the request message and the server side proxy is transferred to the side proxy to the client process.
[0208]
By the way, the description has so far been focused on the one-to-one communication between one server-side proxy and one client-side proxy. Of course, the scope of the present invention is not limited to the server-side proxy and the client-side proxy. The system is not limited to a one-to-one communication system, a server-side proxy and a client-side proxy communicate one-to-many, a server-side proxy and a client-side proxy communicate many-to-one, Alternatively, the present invention can be applied to a system in which a server-side proxy and a client-side proxy communicate many-to-many. For example, as shown in FIG. 39, a client-side proxy installed in a plurality of user offices, a personal proxy used by a mobile user, or the like can be implemented so as to share and use the server-side proxy.
[0209]
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.
[0210]
By the way, the URL specified in the request message issued by the client for the reply data that can be cached by the shared cache mechanism of the proxy in the server side proxy or the client side proxy (either or both) of this embodiment A reply data included in the reply message corresponding to the request message, a fingerprint corresponding to the reply data, and a request header such as the MIME type included in the reply header of the reply message. Information necessary for configuration and information such as a time stamp to be used for determining the validity period are cached in association with each other (may be stored in the fingerprint cache or information excluding reply data (URL) Fingerprint and may be other information) separately corresponding table holding provided), by a combination of this with fingerprint cache, it is possible to perform also an operation of the shared cache of the proxy server. For example, when the cache function is provided in the client-side proxy, when the reply data for the URL specified in the request message transmitted by the client is cached and the data is valid, the client-side proxy Can retrieve data corresponding to the URL from the fingerprint cache, create a reply message, and respond to the client.
[0211]
Whether or not this function is provided for each server-side proxy 30 and for each client-side proxy 40 can be determined.
[0212]
First, the client side proxy 40 provided with the above functions will be described.
[0213]
FIG. 40 shows a configuration example of the client side proxy 40 in this case. This client-side proxy 40 has a URL / fingerprint table (URL / FP table) 45 that holds correspondence between URLs accessed in the past and fingerprints of reply data in addition to the configuration / function of FIG. And a URL cache processing unit 427.
[0214]
In addition to the URL and fingerprint, the URL / FP table 45 also includes information such as the MIME type entered in the reply header when accessed with the URL, and a time stamp used to determine the validity period. Also record. The URL / FP table 45 records information necessary only when the conventional shared cache can be cached.
[0215]
FIG. 41 shows a processing procedure example of the client side proxy 40 when a reply message is transferred from the server side proxy 30 to the client side proxy 40.
[0216]
The processing procedure in this case is the same as the procedure in FIGS. 23 to 25 except that it is added after terminal 4 and terminal 6 and step S38 in the procedure in FIGS. 23 to 25. The terminal 4 and the terminal 6 of the procedure of FIGS. 23-25, and the part of the process procedure after step S38 are shown. Here, the description will focus on the part added to the procedure described with reference to FIGS.
[0217]
The client side proxy 40 transmits a reply message to the client 50 by the transmission unit 43 (steps S28, S29, S32, S35, or S38 in FIGS. 23 to 25), and then the URL cache processing unit 427 performs the reply message. Is determined whether it is a cache target or not (S39). If it is determined that the URL is to be cached, the URL cache processing unit 427 associates the URL, the fingerprint, the information necessary for constructing the reply header, etc. (using the URL as a key) with the URL / FP. Register in the table 45 (S40). If it is determined not to be cached, nothing is done.
[0218]
The determination in step S39 and the registration in the URL / FP table in step S40 may be performed between step S23 and step S28 or S29, or between step S23 and step S32 or step S35.
[0219]
Note that the method for determining whether or not the received reply message at the time of registration is a cache target may be the same as the conventional method at the time of registration (for example, GET method reply data and its header) Caches that do not contain information indicating that caching is not possible).
[0220]
Next, FIG. 42 and FIG. 43 show an example of a processing procedure regarding the operation of the shared cache of the proxy server in the client side proxy 40 when the request message received from the client 250 is transferred from the client side proxy 40 to the server side proxy 30. Show.
[0221]
The client side proxy 40 receives a request message from the client 50 by the receiving unit 41 (step S141).
[0222]
The URL cache processing unit 427 determines whether or not the reply message for the request message is a cache target (S142). It should be noted that the method for determining whether or not it is a cache target at the time of response may be the same as the conventional method at the time of response (for example, whether or not the reception request message is of the GET method).
[0223]
If the request data is determined not to be cached (S142), the received request message is transferred from the transmission unit 43 to the server side proxy 30 (S151).
[0224]
If it is determined in step S142 that the reply message for the request message is to be cached, the URL cache processing unit 427 further extracts the URL specified in the request message (S143), and the URL The URL / FP table 45 is searched using as a key (S144).
[0225]
If the fingerprint of the reply data corresponding to the URL is not cached (S145), the received request message is transferred from the transmission unit 43 to the server side proxy 30 (S151). At this time, if the time stamp of the currently held data is entered in the If-Modified-Since header of the request message and transferred to the server side proxy 30, the currently held data from the server side proxy 30 is valid. When the reply message is received, the process may be performed to go to step S147.
[0226]
Even if the fingerprint of the reply data corresponding to the URL is registered (S145), it is determined that the data is invalid based on the information for determining the validity period held together. If so (S146), the received request message is transferred from the transmitter 43 to the server-side proxy 30 (S151).
[0227]
On the other hand, the fingerprint of the reply data corresponding to the URL is registered (S145), and it is determined that the data is valid based on the information for determining the validity period held together. In step S146, the URL cache processing unit 427 obtains information necessary to construct reply data from the URL / FP table 45, and searches the FP cache 44 using the fingerprint of the reply data corresponding to the URL as a key. (S147).
[0228]
Next, the FP cache management unit 422 determines whether the data acquired in step S147 is differentially compressed data based on whether the compression identifier is 0 or 1 (S148). If the compression identifier is 0, it is determined not to be differential compressed data, and if it is 1, it is determined to be differential compressed data.
[0229]
When it is determined that the data is differentially compressed data (S148), the differential decompression processing unit 424 decompresses the data and generates reply data (S149). Then, a reply message is generated from the reply data and transferred from the transmission unit 43 to the client (S150).
[0230]
On the other hand, when it is determined that the data is not differentially compressed data (S148), the FP compression / decompression unit 423 generates reply data from the data and transfers it from the transmission unit 43 to the client (S150).
[0231]
Hereinafter, the operation of the shared cache will be described more specifically with reference to FIG. 44 (during response).
[0232]
(1) It is assumed that the browser or the like on the client 50 issues a GET method request message to the server 20 with a URL “/C.html”, for example.
[0233]
(2) When a request is received with a new URL, if the URL is listed in the URL / FP table 45, the validity period is determined in the same manner as in the conventional shared cache. The fingerprint to be obtained is obtained by drawing the URL / FP table 45, and the data having the name is taken out from the FP cache 44. Then, it is checked whether or not the data is differentially compressed data based on the compression identifier. In the example of FIG. 44, since the compression identifier is 1, it is differentially compressed data. Then, the differential compression is decompressed (in FIG. 44, since there is reference information to the data whose fingerprint is “71F0... 73E6” in the differential compression data, the already cached data is referred to and decompressed. This is used as reply data. Further, information necessary for constructing a reply header such as MIME type is extracted from the URL / FP table 45 to create a reply header.
[0234]
(3) The created reply message is sent back to the client 50 (such as a browser operating on the client 50).
[0235]
Even in the case of a request message having an If-Modified-Since header that requests to send data only when the cache contents have been updated after the specified time, it is first updated by referring to the URL / FP table. If it can be determined that there is no such message, a reply message can be created and returned. Otherwise, the server can rewrite the If-Modified-Since information and listen to it.
[0236]
Next, the server side proxy 30 provided with the cache function will be described.
[0237]
Although the cache function of the client-side proxy 40 has been described above, the server-side proxy 30 can be similarly implemented.
[0238]
In this case, the message transfer source client 50 and the message transfer destination server side proxy 30 for the client side proxy 40 are respectively connected to the client side proxy 40 (transfer source) and the server 20 (transfer destination) for the server side proxy 30. Thus, the configuration and procedure related to the cache are the same.
[0239]
FIG. 45 shows a configuration example of the server side proxy 30 in this case. This server-side proxy 30 has a URL / fingerprint table (URL / FP table) 35 that holds correspondence between URLs accessed in the past and fingerprints of reply data in addition to the configuration / function of FIG. And a URL cache processing unit 327.
[0240]
FIG. 46 shows an example of a processing procedure of the server side proxy 30 when a reply message is transferred from the server side proxy 30 to the client side proxy 40.
[0241]
The processing procedure in this case is the same as the procedure in FIGS. 21 and 22 except that it is added after step S6 and terminals 2 and S13 in the procedure in FIGS. 21 and 22, and FIG. And the part of the process procedure after step S6 and the terminal 2 and S13 of the procedure of FIG. 22 is shown. Here, the description will focus on parts that are different from the procedures described in FIGS.
[0242]
The server side proxy 30 transmits a reply message to the client side proxy 40 by the transmission unit 33 (steps S6, S9, S11, or S13 in FIGS. 21 and 22), and then the URL cache processing unit 327 performs the reply. It is determined whether or not the reply data of the message is to be cached (S14). If it is determined that the URL is to be cached, the URL cache processing unit 327 associates the URL, the fingerprint, the information necessary for constructing the reply header, etc. (using the URL as a key) with the URL / FP. It is registered in the table 35 (S15). If it is determined not to be cached, nothing is done.
[0243]
Of course, as described above, this procedure can be variously modified.
[0244]
FIG. 47 shows an example of a processing procedure related to the operation of the shared cache of the proxy server in the server side proxy 30 when the request message received from the client side proxy 40 is transferred from the server side proxy 30 to the server 20.
[0245]
The server-side proxy 30 receives a request message from the client-side proxy 40 by the receiving unit 31 (step S161).
[0246]
The URL cache processing unit 327 determines whether or not the reply message for the request message is a cache target (S162). Note that the method for determining whether or not the response target is a cache target may be the same as the conventional response method (for example, whether or not the reception request message is for the GET method).
[0247]
If the request data is determined not to be cached (S162), the received request message is transferred from the transmission unit 33 to the server 20 (S169).
[0248]
If it is determined in step S162 that the reply message for the request message is to be cached, the URL cache processing unit 327 further extracts the URL specified in the request message (S163), and the URL The URL / FP table 35 is searched using as a key (S164).
[0249]
If the fingerprint of the reply data corresponding to the URL is not cached (S165), the received request message is transferred from the transmission unit 33 to the server 20 (S169). At this time, the time stamp of the currently held data is written in the If-Modified-Since header of the request message and transferred to the server 20, and a reply message from the server 20 that the currently held data is valid is sent. If it is received, the process may go to step S167.
[0250]
Even if the fingerprint of the reply data corresponding to the URL is registered (S165), it is determined that the data is invalid based on the information for determining the validity period held together. If so (S166), the received request message is transferred from the transmission unit 33 to the server 20 (S169).
[0251]
On the other hand, the fingerprint of the reply data corresponding to the URL is registered (S165), and it is determined that the data is valid based on the information for determining the validity period held together. In step S166, the URL cache processing unit 327 obtains information necessary for constructing reply data from the URL / FP table 35, and searches the FP cache 34 using the fingerprint of the reply data corresponding to the URL as a key. (S167).
[0252]
The FP cache management unit 322 generates a reply message from the data acquired from the FP cache 34 using the fingerprint value in a format at the time of FP compression, and transmits it from the transmission unit 33 to the client side proxy 40 (S168). ).
[0253]
As described above, the configuration in which the server side proxy also has the URL / FP table table to perform the cache processing works effectively when one server side proxy is used by a plurality of client side proxies. In other words, if cacheable data requested by a client-side proxy is already being accessed by another client-side proxy, it is also cached by the server-side proxy. Complete.
[0254]
As described above, the configuration in which the server side proxy also has the URL / FP table table to perform the cache processing works effectively when one server side proxy is used by a plurality of client side proxies. In other words, if cacheable data requested by a client-side proxy is already being accessed by another client-side proxy, it is also cached by the server-side proxy. Complete.
[0255]
In the above description, the URL / FP table table is provided separately from the fingerprint cache. However, the URL / FP table table may be integrated with the fingerprint cache.
[0256]
In any proxy, the fingerprint compression processing unit and the fingerprint decompression processing unit may be combined into a fingerprint (FP) compression / decompression processing unit. In any proxy, the differential compression processing unit and the differential decompression processing unit may be combined into a differential compression / decompression processing unit. FIG. 48 shows a configuration example of the proxy (server side proxy, client side proxy) in this case.
[0257]
When the FP compression is applied only to the request data transfer, the FP compression is applied only to the reply data transfer, or the FP compression is applied to the request data transfer and the reply data transfer, the request message is The configuration related to the shared cache function for the reply data corresponding to the specified URL can be provided only in the client side proxy, only in the server side proxy, or in both proxies.
[0258]
The present embodiment may 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). It can also be implemented as a computer-readable recording medium in which the program is recorded.
[0259]
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.
[0260]
The present invention is not limited to the embodiment described above, and can be implemented with various modifications within the technical scope thereof.
[0261]
【The invention's effect】
According to the present invention, the correspondence between the data and its name is held between the data transfer devices, and the data having this correspondence is transferred by transferring the corresponding name instead of transferring the data body. The amount of data transferred between transfer devices can be reduced.
[Brief description of the drawings]
FIG. 1 is a diagram showing a configuration example of a network system according to an embodiment of the present invention.
FIG. 2 is a view showing another configuration example of the network system according to the embodiment;
FIG. 3 is a diagram showing still another configuration example of the network system according to the embodiment;
FIG. 4 is a diagram for explaining a fingerprint
FIG. 5 is a diagram for explaining a fingerprint cache according to the embodiment;
FIG. 6 is a diagram for explaining a differential compression instruction method used in the embodiment;
FIG. 7 is a diagram for explaining a specific example of differential compression according to the embodiment;
FIG. 8 is a diagram for explaining a specific example of differential compression according to the embodiment;
FIG. 9 is a diagram for explaining a specific example of differential compression according to the embodiment;
FIG. 10 is a diagram for explaining another specific example of differential compression according to the embodiment;
FIG. 11 is a diagram for explaining another specific example of differential compression according to the embodiment;
FIG. 12 is a diagram for explaining another specific example of differential compression according to the embodiment;
FIG. 13 is a diagram for explaining another specific example of differential compression according to the embodiment;
FIG. 14 is a view showing an example of a message format used in the embodiment.
FIG. 15 is a view showing another example of the message format used in the embodiment.
FIG. 16 is a view showing still another example of the message format used in the embodiment.
FIG. 17 is a view showing still another example of the message format used in the embodiment.
FIG. 18 is a diagram showing still another example of the message format used in the embodiment.
FIG. 19 is a view showing a configuration example of a server side proxy according to the embodiment;
FIG. 20 is a view showing a configuration example of a client side proxy according to the embodiment;
FIG. 21 is a flowchart showing a procedure example of the server side proxy according to the embodiment;
FIG. 22 is a flowchart showing a procedure example of the server-side proxy according to the embodiment;
FIG. 23 is a flowchart showing a procedure example of the client side proxy according to the embodiment;
FIG. 24 is a flowchart showing a procedure example of the client side proxy according to the embodiment;
FIG. 25 is a flowchart showing a procedure example of the client side proxy according to the embodiment;
FIG. 26 is a flowchart showing an example of a difference compression processing procedure according to the embodiment;
FIG. 27 is a flowchart showing another example of the difference compression processing procedure according to the embodiment;
FIG. 28 is a flowchart showing a procedure example of the server side proxy according to the embodiment;
FIG. 29 is a flowchart showing a procedure example of a client side proxy according to the embodiment;
FIG. 30 is a view for explaining data transfer between proxies according to the embodiment;
FIG. 31 is a view for explaining data transfer between proxies according to the embodiment;
FIG. 32 is a view for explaining data transfer between proxies according to the embodiment;
FIG. 33 is a diagram showing another configuration example of the proxy in the embodiment;
FIG. 34 is a flowchart showing another procedure example of the client side proxy according to the embodiment;
FIG. 35 is a flowchart showing another procedure example of the client side proxy according to the embodiment;
FIG. 36 is a flowchart showing another procedure example of the server-side proxy according to the embodiment;
FIG. 37 is a flowchart showing another procedure example of the server-side proxy according to the embodiment;
FIG. 38 is a flowchart showing another procedure example of the server-side proxy according to the embodiment;
FIG. 39 is a diagram showing still another configuration example of the network system according to the embodiment;
FIG. 40 is a view showing another configuration example of the client side proxy according to the embodiment;
FIG. 41 is a flowchart showing another procedure example of the client side proxy according to the embodiment;
FIG. 42 is a flowchart showing another procedure example of the client side proxy according to the embodiment;
FIG. 43 is a flowchart showing another procedure example of the client side proxy according to the embodiment;
44 is a view for explaining data transfer between the client and the client-side proxy according to the embodiment; FIG.
FIG. 45 is a view showing another configuration example of the server side proxy according to the embodiment;
FIG. 46 is a flowchart showing another procedure example of the server-side proxy according to the embodiment;
FIG. 47 is a flowchart showing another procedure example of the server-side proxy according to the embodiment;
FIG. 48 is a view showing still another configuration example of the proxy according to the embodiment;
FIG. 49 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
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 ... Differential compression processing unit
424 ... Differential decompression processing unit
325, 425 ... FP compression / decompression processor
326, 426 ... differential compression / decompression processor
327, 427 ... URL cache processing unit
50: Client device

Claims (10)

サーバ装置と、該サーバ装置がクライアント装置宛に送信するデータを中継する他のデータ転送装置との通信を中継するデータ転送装置において、
サーバ装置から受信して他のデータ転送装置へ送信した第1の完全データと該第1の完全データをもとに生成した第1のフィンガープリントと、前記第1の完全データが完全データであることを示す第1の識別情報とを対応付けて保持する保持手段と、
前記サーバ装置がクライアント装置を宛先として送信した第2の完全データを受信する受信手段と、
前記第1の完全データと前記第2の完全データとの差分である差分データと、該第2の完全データをもとに生成した第2のフィンガープリントと、前記差分データが差分データであることを示す第2の識別情報とを対応付けて前記保持手段に保持させるとともに、前記差分データと前記第2の識別情報とを、前記クライアント装置を宛先として送信する送信手段とを備えたことを特徴とするデータ転送装置。
In a data transfer device that relays communication between a server device and another data transfer device that relays data transmitted to the client device by the server device,
A first complete data was transmitted to another data transfer apparatus is received from the server apparatus, a first fingerprint generated based on the full data of the first, the first complete data Holding means for holding in association with first identification information indicating complete data ;
Receiving means for receiving a second complete data by the server device transmits the client apparatus as a destination,
Difference data that is a difference between the first complete data and the second complete data, a second fingerprint generated based on the second complete data, and the difference data is difference data Rutotomoni is held by the holding means in association with second identification information indicating, and the difference data and the second identification information, further comprising a transmission means for transmitting said client device as a destination A data transfer device.
前記送信手段は、The transmission means includes
前記第2のフィンガープリントが前記第1のフィンガープリントと一致する場合には、前記第2のフィンガープリントと、前記第2のフィンガープリントがフィンガープリントであることを示す第3の識別情報とを前記クライアント装置宛に送信し、If the second fingerprint matches the first fingerprint, the second fingerprint and third identification information indicating that the second fingerprint is a fingerprint Sent to the client device,
前記第2のフィンガープリントが前記第1のフィンガープリントと一致しない場合には、前記差分データと、前記第2のフィンガープリントと、前記第2の識別情報とを対応付けて前記保持手段に保持させるとともに、前記差分データと前記第2の識別情報とを前記クライアント装置宛に送信することを特徴とする請求項1に記載のデータ転送装置。If the second fingerprint does not match the first fingerprint, the difference data, the second fingerprint, and the second identification information are associated with each other and held in the holding unit. The data transfer apparatus according to claim 1, wherein the difference data and the second identification information are transmitted to the client apparatus.
前記第2のフィンガープリントが第1のフィンガープリントと一致しない場合に、前記第2の完全データから前記差分データを差し引いたデータ量の差が所定の値より大きくなるかどうかを判断する判断手段を更に備え、A determination unit configured to determine whether or not a difference in data amount obtained by subtracting the difference data from the second complete data is greater than a predetermined value when the second fingerprint does not match the first fingerprint; In addition,
前記送信手段は、The transmission means includes
前記第2のフィンガープリントが前記第1のフィンガープリントと一致する場合には、前記第2のフィンガープリントと、前記第2のフィンガープリントがフィンガープリントであることを示す第3の識別情報とを前記クライアント装置宛に送信し、If the second fingerprint matches the first fingerprint, the second fingerprint and third identification information indicating that the second fingerprint is a fingerprint Sent to the client device,
前記第2のフィンガープリントが前記第1のフィンガープリントと一致しない場合であってかつ前記判断手段が前記第2の完全データから前記差分データを差し引いたデータ量の差が所定の値より大きくなると判断した場合には、前記差分データと、前記第2のフィンガープリントと、前記第2の識別情報とを対応付けて前記保持手段に保持させるとともに、前記差分データと前記第2の識別情報とを前記クライアント装置宛に送信し、When the second fingerprint does not match the first fingerprint, and the determination means determines that the difference in data amount obtained by subtracting the difference data from the second complete data is greater than a predetermined value. In this case, the difference data, the second fingerprint, and the second identification information are associated with each other and held in the holding unit, and the difference data and the second identification information are Sent to the client device,
前記第2のフィンガープリントが前記第1のフィンガープリントと一致しない場合であってかつ前記判断手段が前記第2の完全データから前記差分データを差し引いたデータ量の差が所定の値より大きくならないと判断した場合には、前記第2の完全データと、前記第2のフィンガープリントと、前記第2の完全データが完全データであることを示す前記第1の識別情報とを対応付けて前記保持手段に保持させるとともに、前記第2の完全データと前記第1の識別情報とを前記クライアント装置宛に送信することを特徴とする請求項1に記載のデータ転送装置。When the second fingerprint does not match the first fingerprint, and the difference in the data amount obtained by subtracting the difference data from the second complete data is not greater than a predetermined value. If it is determined, the holding means is associated with the second complete data, the second fingerprint, and the first identification information indicating that the second complete data is complete data. 2. The data transfer device according to claim 1, wherein the second complete data and the first identification information are transmitted to the client device.
サーバ装置がクライアント装置宛に送信するデータを中継する他のデータ転送装置と、前記クライアント装置との通信を中継するデータ転送装置において、
のデータ転送装置から受信してクライアント装置へ送信した第1の完全データと、該第1の完全データをもとに生成した第1のフィンガープリントと、前記第1の完全データが完全データであることを示す第1の識別情報とを対応付けて保持する保持手段と、
前記クライアント装置宛先とされた、前記第1の完全データと第2の完全データとの 差分である差分データと、該差分データが差分データであることを示す第2の識別情報とを受信する受信手段と、
前記第1の完全データと前記差分データとを用いて前記第2の完全データを生成し、該差分データと、該第2の完全データをもとに生成した第2のフィンガープリントと、前記第2の識別情報とを対応付けて前記保持手段に保持させるとともに、該第2の完全データを、前記クライアント装置を宛先として送信する送信手段とを備えたことを特徴とするデータ転送装置。
In another data transfer device that relays data transmitted from the server device to the client device and the data transfer device that relays communication with the client device,
First and complete data, said a first fingerprint first full data generated based, the first complete data complete data transmission received from another data transfer apparatus to the client apparatus holding means for holding in association with first identification information indicating that it,
The client device is destined to receive the differential data which is the first complete data and the difference between the second complete data and a second identification information indicating that said difference data is a difference data Receiving means;
The second complete data is generated using the first complete data and the difference data, the difference data, a second fingerprint generated based on the second complete data, and the first data Rutotomoni is held by the holding means in association with second identification information, the full data of the second data transfer apparatus characterized by comprising a transmitting means for transmitting the client device as a destination.
前記送信手段は、The transmission means includes
前記受信手段が前記第1の識別情報を受信した場合は、前記第1の識別情報に付随して受信した第3の完全データを前記クライアント装置宛に送信し、When the receiving means receives the first identification information, the third complete data received accompanying the first identification information is transmitted to the client device,
前記受信手段が第3のフィンガープリントと前記第3のフィンガープリントがフィンガープリントであることを示す第3の識別情報とを受信した場合であってかつ、前記第3のフィンガープリントが前記第1のフィンガープリントと一致する場合には、前記第1のフィンガープリントに対応付けられた前記第1の完全データを前記クライアント装置宛に送信し、The receiving means receives a third fingerprint and third identification information indicating that the third fingerprint is a fingerprint, and the third fingerprint is the first fingerprint. If it matches the fingerprint, send the first complete data associated with the first fingerprint to the client device;
前記受信手段が前記第3のフィンガープリントと前記第3の識別情報とを受信した場合であってかつ、前記第3のフィンガープリントが前記第2のフィンガープリントと一致する場合には、前記第1のフィンガープリントに対応付けられた前記第1の完全データと前記第2のフィンガープリントに対応付けられた前記差分データとを用いて生成した前記第2の完全データを前記クライアント装置宛に送信することを特徴とする請求項4に記載のデータ転送装置。When the receiving means receives the third fingerprint and the third identification information, and the third fingerprint matches the second fingerprint, the first fingerprint Transmitting the second complete data generated using the first complete data associated with the fingerprint and the differential data associated with the second fingerprint to the client device. The data transfer apparatus according to claim 4.
前記名前は、前記データに所定のハッシュ関数を適用して得られた値であることを特徴とする請求項1ないしのいずれか1項に記載のデータ転送装置。The name, the data transfer apparatus according to any one of claims 1 to 5, characterized in that the data is a value obtained by applying a predetermined hash function. サーバ装置と、該サーバ装置がクライアント装置宛に送信するデータを中継する他のデータ転送装置との通信を中継するデータ転送装置におけるデータ転送方法であって、
サーバ装置から受信して他のデータ転送装置へ送信した第1の完全データと該第1の完全データをもとに生成した第1のフィンガープリントと、前記第1の完全データが完全データであることを示す第1の識別情報とを対応付けて保持手段に保持するステップと、
前記サーバ装置がクライアント装置を宛先として送信した第2の完全データを受信するステップと、
前記第1の完全データと前記第2の完全データとの差分である差分データと、該第2の完全データをもとに生成した第2のフィンガープリントと、前記差分データが差分データであることを示す第2の識別情報とを対応付けて前記保持手段に保持させるとともに、前記差分データと前記第2の識別情報とを、前記クライアント装置を宛先として送信するステップとを有することを特徴とするデータ転送装置。
A data transfer method in a data transfer device that relays communication between a server device and another data transfer device that relays data transmitted by the server device to a client device,
A first complete data was transmitted to another data transfer apparatus is received from the server apparatus, a first fingerprint generated based on the full data of the first, the first complete data Holding the first identification information indicating complete data in association with the holding means ;
Receiving the second complete data sent by the server device to the client device;
Difference data that is a difference between the first complete data and the second complete data, a second fingerprint generated based on the second complete data, and the difference data is difference data is held by the holding means in association with second identification information indicating a Rutotomoni, and the difference data and the second identification information, and characterized by a step of transmitting said client device as a destination Data transfer device.
サーバ装置がクライアント装置宛に送信するデータを中継する他のデータ転送装置と、前記クライアント装置との通信を中継するデータ転送装置におけるデータ転送方法であって、
のデータ転送装置から受信してクライアント装置へ送信した第1の完全データと第1の完全データをもとに生成した第1のフィンガープリントと、前記第1の完全データが完全データであることを示す第1の識別情報とを対応付けて保持手段に保持するステップと、
前記クライアント装置が宛先とされた、前記第1の完全データと第2の完全データとの差分である差分データと該差分データが差分データであることを示す第2の識別情報とを受信するステップと、
前記第1の完全データと前記差分データとを用いて前記第2の完全データを生成し、該 差分データと、該第2の完全データをもとに生成した第2のフィンガープリントと、前記第2の識別情報とを対応付けて前記保持手段に保持させるとともに、該第2の完全データを、前記クライアント装置を宛先として送信するステップとを有することを特徴とするデータ転送方法。
A data transfer method in another data transfer device that relays data transmitted from a server device to a client device, and a data transfer device that relays communication with the client device,
First and complete data, said a first fingerprint first full data generated based, the first complete data complete data transmission received from another data transfer apparatus to the client apparatus a step of holding the first identification information holding means in association with each other to indicate that it,
Receiving differential data that is a difference between the first complete data and the second complete data, and second identification information indicating that the differential data is differential data, which is addressed to the client device; When,
Using said difference data and the first complete data to generate the second complete data, and the difference data, a second fingerprint generated based on the full data of the second, the third Rutotomoni is held by the holding means in association with second identification information, the full data of the second data transfer method characterized by a step of transmitting said client device as a destination.
サーバ装置と、該サーバ装置がクライアント装置宛に送信するデータを中継する他のデータ転送装置との通信を中継するデータ転送装置としてコンピュータを機能させるためのプログラムであって、
サーバ装置から受信して他のデータ転送装置へ送信した第1の完全データと該第1の完全データをもとに生成した第1のフィンガープリントと、前記第1の完全データが完全データであることを示す第1の識別情報とを対応付けて記憶装置に保持する機能と、
前記サーバ装置がクライアント装置を宛先として送信した第2の完全データを受信する受信機能と、
前記第1の完全データと前記第2の完全データとの差分である差分データと、該第2の完全データをもとに生成した第2のフィンガープリントと、前記差分データが差分データであることを示す第2の識別情報とを対応付けて前記記憶装置に保持させるとともに、前記差分データと前記第2の識別情報とを、前記クライアント装置を宛先として送信する機能とをコンピュータに実現させるためのプログラム。
A program for causing a computer to function as a data transfer device that relays communication between a server device and another data transfer device that relays data transmitted by the server device to a client device,
A first complete data was transmitted to another data transfer apparatus is received from the server apparatus, a first fingerprint generated based on the full data of the first, the first complete data A function of associating with the first identification information indicating complete data in association with the storage device,
A receiving function for receiving the second complete data transmitted by the server device to the client device;
Difference data that is a difference between the first complete data and the second complete data, a second fingerprint generated based on the second complete data, and the difference data is difference data It is held in the storage device in association with second identification information indicating a Rutotomoni, realized and the difference data and the second identification information, and that functions to send to the computer the client device as a destination Program to let you.
サーバ装置がクライアント装置宛に送信するデータを中継する他のデータ転送装置と、前記クライアント装置との通信を中継するデータ転送装置としてコンピュータを機能させるためのプログラムであって、
のデータ転送装置から受信してクライアント装置へ送信した第1の完全データと、該第1の完全データをもとに生成した第1のフィンガープリントと、前記第1の完全データが完全データであることを示す第1の識別情報とを対応付けて記憶装置に保持する機能と、
前記クライアント装置宛先とされた、前記第1の完全データと第2の完全データとの差分である差分データと、該差分データが差分データであることを示す第2の識別情報とを受信する機能と、
前記第1の完全データと前記差分データとを用いて前記第2の完全データを生成し、該差分データと、該第2の完全データをもとに生成した第2のフィンガープリントと、前記第2の識別情報とを対応付けて前記記憶装置に保持させるとともに、該第2の完全データを、前記クライアント装置を宛先として送信する機能とをコンピュータに実現させるためのプログラム。
A program for causing a computer to function as another data transfer device that relays data transmitted from a server device to a client device, and a data transfer device that relays communication with the client device,
First and complete data, said a first fingerprint first full data generated based, the first complete data complete data transmission received from another data transfer apparatus to the client apparatus a function of holding the storage device in association with first identification information indicating that it,
The client device is destined to receive the differential data which is the first complete data and the difference between the second complete data and a second identification information indicating that said difference data is a difference data Function and
The second complete data is generated using the first complete data and the difference data, the difference data, a second fingerprint generated based on the second complete data, and the first data Rutotomoni is held in the storage device in association with second identification information, the full data of the second program for realizing the to that function transmits to the computer the client device as a destination.
JP2002149131A 2002-05-23 2002-05-23 Data transfer device, data transfer method and program Expired - Fee Related JP3848209B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002149131A JP3848209B2 (en) 2002-05-23 2002-05-23 Data transfer device, data transfer method and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002149131A JP3848209B2 (en) 2002-05-23 2002-05-23 Data transfer device, data transfer method and program

Publications (2)

Publication Number Publication Date
JP2003345708A JP2003345708A (en) 2003-12-05
JP3848209B2 true JP3848209B2 (en) 2006-11-22

Family

ID=29767399

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002149131A Expired - Fee Related JP3848209B2 (en) 2002-05-23 2002-05-23 Data transfer device, data transfer method and program

Country Status (1)

Country Link
JP (1) JP3848209B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150099425A (en) * 2014-02-12 2015-08-31 레지피 에스.에이. Network system for retrieval of configuration related data

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7555531B2 (en) * 2004-04-15 2009-06-30 Microsoft Corporation Efficient algorithm and protocol for remote differential compression
US8606830B2 (en) 2004-12-17 2013-12-10 Microsoft Corporation Contiguous file allocation in an extensible file system
US9639554B2 (en) 2004-12-17 2017-05-02 Microsoft Technology Licensing, Llc Extensible file system
US8321439B2 (en) 2004-12-17 2012-11-27 Microsoft Corporation Quick filename lookup using name hash
US7873596B2 (en) 2006-05-23 2011-01-18 Microsoft Corporation Extending cluster allocations in an extensible file system
JP4587312B2 (en) * 2005-09-16 2010-11-24 株式会社リコー Code conversion apparatus and code conversion method
JP2007226635A (en) * 2006-02-24 2007-09-06 Victor Co Of Japan Ltd Server device and client device of remote desktop system
JP4784909B2 (en) * 2007-03-13 2011-10-05 日本電気株式会社 Transaction accelerator, communication system, communication method, and program
JP4766025B2 (en) * 2007-10-05 2011-09-07 日本電気株式会社 E-mail transmission / reception system
CN101494658B (en) 2008-01-24 2013-04-17 华为技术有限公司 Method, apparatus and system for implementing fingerprint technology
JP5131915B2 (en) * 2008-03-31 2013-01-30 国立大学法人 東京大学 Packet encoding method and apparatus, and decoding method and apparatus
JP6378601B2 (en) * 2014-10-02 2018-08-22 日本電信電話株式会社 Content analysis apparatus, content analysis method, and program

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5931904A (en) * 1996-10-11 1999-08-03 At&T Corp. Method for reducing the delay between the time a data page is requested and the time the data page is displayed
JP3313604B2 (en) * 1997-02-25 2002-08-12 中部日本電気ソフトウェア株式会社 Internet homepage management system
JP2002055870A (en) * 2000-08-15 2002-02-20 Fuji Xerox Co Ltd Data providing apparatus, data acquiring apparatus and data processing system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150099425A (en) * 2014-02-12 2015-08-31 레지피 에스.에이. Network system for retrieval of configuration related data
KR102344121B1 (en) * 2014-02-12 2021-12-28 레지피 에스.에이. Network system for retrieval of configuration related data

Also Published As

Publication number Publication date
JP2003345708A (en) 2003-12-05

Similar Documents

Publication Publication Date Title
JP3990115B2 (en) Server-side proxy device and program
US7636765B2 (en) Data transfer scheme using caching technique for reducing network load
US8024484B2 (en) Caching signatures
US7383348B2 (en) Data transfer scheme using caching technique for reducing network load
JP4671332B2 (en) File server that converts user identification information
CN104081739B (en) Compression and the data difference device and system in Intrusion Detection based on host/path of differentiation engine are utilized in overlay network
JP3848209B2 (en) Data transfer device, data transfer method and program
US20050027731A1 (en) Compression dictionaries
JP2013512514A (en) System and method for efficient media distribution using cache
US20090049243A1 (en) Caching Dynamic Content
JP3984086B2 (en) Cache server, data transfer device, and program
JP2004310371A (en) System, method, server for sharing file and client terminal for file sharing service, file sharing program and recording medium with program recorded
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
JP4157585B2 (en) Server side proxy device, client side proxy device, data transfer method and program
JP3943868B2 (en) Server-side proxy, data transfer method and program
JP2003108464A (en) Device and method for transferring data
JP4041157B2 (en) Client side proxy device, data transfer method and program
JP3913508B2 (en) Data transfer apparatus and data transfer method
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
JP4300220B2 (en) Data transfer apparatus and data transfer method

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060424

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060516

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060718

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060824

LAPS Cancellation because of no payment of annual fees