JPH11500250A - 差分化通信システム - Google Patents

差分化通信システム

Info

Publication number
JPH11500250A
JPH11500250A JP9529314A JP52931497A JPH11500250A JP H11500250 A JPH11500250 A JP H11500250A JP 9529314 A JP9529314 A JP 9529314A JP 52931497 A JP52931497 A JP 52931497A JP H11500250 A JPH11500250 A JP H11500250A
Authority
JP
Japan
Prior art keywords
server
client
application
response
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP9529314A
Other languages
English (en)
Other versions
JP3491011B2 (ja
Inventor
ビッテンガー、リード、リチャード
フランケル、マイケル、レヴィ
オーセル、バロン、コーネリュース
リンドクイスト、デヴィッド、ブルース
Original Assignee
アイビーエム コーポレーシヨン
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 アイビーエム コーポレーシヨン filed Critical アイビーエム コーポレーシヨン
Publication of JPH11500250A publication Critical patent/JPH11500250A/ja
Application granted granted Critical
Publication of JP3491011B2 publication Critical patent/JP3491011B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/04Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • H04L67/5651Reducing the amount or size of exchanged application data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2876Pairs of inter-processing entities at each side of the network, e.g. split proxies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Optical Communication System (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 第1のコンピュータに常駐している第1のアプリケーションから第2のコンピュータに常駐している第2のアプリケーションへ、外部通信リンクによって伝送されるデータを少なくする方法、装置およびコンピュータ・プログラム・プロダクト。この方法、装置およびコンピュータ・プログラム・プロダクトは第2のアプリケーションからの要求に応じて第2のアプリケーションに与えられる第1のアプリケーションからのデータ・ストリームを第1のコンピュータに常駐しているキャッシュに格納して、サーバ・ベース・キャッシュ項目を作成し、また第2のコンピュータに常駐しているキャッシュに格納して、クライアント・ベース・キャッシュ項目を作成することを含んでいる。第2のアプリケーションからの要求に問い合わせを行って、問い合わせを受けた要求に対応するクライアント・ベース・キャッシュ項目が存在しているかどうか、および問い合わせを受けた要求に対応するサーバ・ベース・キャッシュ項目が存在しているかどうかを判断する。応答データ・ストリームをインタセプトしてから、外部通信リンク上での応答の伝送を行い、またサーバ・ベース・キャッシュ項目と比較して、インタセプトされた応答とサーバ・ベース・キャッシュ項目との間の差分に対応した差分データを与える。差分データを外部通信リンクによって送り、またクライアント・ベース・キャッシュ項目を差分データと組み合わせて、第2のアプリケーションに与えられる応答データ・ストリームを作成することによって応答データ・ストリームを再構成する第2のコンピュータによって取得する。

Description

【発明の詳細な説明】 差分化通信システム 発明の分野 本発明は異なるコンピュータに常駐しているウェブ・ブラウザとウェブ・サー バなどのアプリケーションの間の通信方法に関する。詳細にいうと、本発明は2 台のコンピュータの間の外部通信リンクによる通信を区別する方法に関する。 発明の背景 最近、「情報スーパーハイウェイ」に関して宣伝され、重要視されていること により、マスコミュニケーション媒体としてのインターネットがますます知られ 、受け入れられるようになってきた。複数のネットワークにまたがる通信と対話 のための実現可能な媒体としてインターネットがこのように広く認識されるよう になったことにより、コンピュータ・ネットワーク間の対話のためのインターネ ット標準化プロトコルに基づく大規模なユーザ基盤も確立されている。 インターネットのパラダイムは、インターネット・クライアント(ブラウザ) がインターネット・サーバと通信するクライアント−サーバ関係のパラダイムで ある。インターネットへのアクセスを拡大するために、クライアントとサーバが 使用する通信プロトコルと言語が標準化されるようになった。 これらのプロトコルには、クライアントとサーバの間の通信に使用される通信プ ロトコルであるハイパーテキスト転送プロトコル(HTTP)と、伝送制御プロ トコル/インターネット・プロトコル(TCP/IP)がある。TCP/IPの TCP部分は、コンピュータ間またはアプリケーション間の通信のためのトラン スポート固有のプロトコルである。クライアントとサーバが通信する言語も標準 化されており、これはハイパーテキスト・マークアップ言語(HTML)と呼ば れる。これらのプロトコルと言語は機械から独立しており、コネクションレスの 最善のプロトコルを使用して情報を送信し、各トランザクションは完全に自己完 結している。したがって、たとえば、クライアントからの各メッセージにはブラ ウザの機能に関する情報が含まれ、通信を完結させるために他のどの通信からも 独立している。クライアントとサーバの間の通信のこの自己完結性は「ステート レス」通信と呼ばれることがあり、これは所与の通信のためにクライアントとサ ーバの間で伝送しなければならないデータの量を増大させる。 ワールド・ワイド・ウェブのクライアント/サーバ・アプリケーションの関連 では、ユーザ・インタフェースとして機能するウェブ・ブラウザがクライアント であろう。ウェブ・ブラウザは適切なウェブ・サーバにユーザ要求を送り、ウェ ブ・サーバから返されたHTMLデータのフォーマットと表示を行う。また、ウ ェブ・ブラウザはHTMLデータを評価して、ブラウザが発行する後続のブラウ ザ要求を必要とする ことになるハイパーリンク・ステートメントがHTMLデータに埋め込まれてい ないかどうかを判断する。ウェブ・サーバはクライアントのためのサーバの役割 を果たし、ウェブ・ブラウザ要求を処理し、要求された応答をHTTPデータ・ ストリームのHTMLデータ部分として返す。 典型的なワールド・ワイド・ウェブ通信の例として、ウェブ・ブラウザがウェ ブ・サーバに対して「ホーム・ページ」を求める要求を出す事例を用いて、HT TPとHTMLとTCPとウェブ・ブラウザとウェブ・サーバとの間の基本的な 関係を例示する。ウェブ・ブラウザのユーザが特定のウェブ・サイトに対して情 報を要求すると、ウェブ・ブラウザはウェブ・サーバに所望のウェブ・サイト( この例では「ホーム・ページ」)のユニバーサル・リソース・ロケータ(URL )を指定する「get」要求を送ることによって、ウェブ・サーバの通信を開始 する。URLはウェブ・サイトのアドレスの役割を果たし、インターネット全体 を通じて固有である。次にウェブ・サーバは、URLで指定されたホーム・ペー ジに対応するHTMLデータを入手してウェブ・ブラウザに供給する。この操作 には、インターネット・ウェブ・サーバによるインターネット上での通信がさら に必要となったり、ブラウザが接続しているローカル・ネットワーク内にあるサ ーバをURLによって指定する必要がある場合がある。次にウェブ・ブラウザは ウェブ・サーバからHTTPデータ・ストリームとして受け取ったHTMLデー タを評価して、アイコ ンやイメージなどのハイパーリンクが埋め込まれていないかどうかを調べ、その ようなハイパーリンクがある場合は、そのハイパーリンクのURLを指定する要 求を出して、指定されたデータを入手する。このデータはホーム・ページに組み 込まれ、ユーザに対して表示されることになる。この単純な例でわかるように、 ウェブ・ブラウザによる1つのユーザ入力要求の結果、ユーザ要求に対応するH TMLデータの受信に応答してウェブ・ブラウザが自動的に複数の追加の要求を 行うことになる。 インターネット・ベースのシステムの基本的な通信構造を第1図に示す。第1 図では、ウェブ・ブラウザ10が通信リンク15を介してウェブ・サーバ20と 通信する。この通信リンクは典型的にはローカル・エリア・ネットワーク接続、 ワイド・エリア・ネットワーク接続、電話回線による接続、またはその組合せで ある。ウェブ・ブラウザ10はTCP/IPを使用してウェブ・サーバ20と通 信する。インターネット通信では一般に、ウェブ・ブラウザは、ウェブ・ブラウ ザとウェブ・サーバの間のTCP/IPリンクを介してウェブ・ブラウザとウェ ブ・サーバの間で伝送される汎用通信プロトコルHTTPを使用して、ウェブ・ サーバと通信する。ウェブ・ブラウザ10とウェブ・サーバ20の間で伝送され る実データは前述のHTTPデータ・オブジェクト(たとえばHTMLデータ) である。ウェブ・サーバ20はいくつかのウェブ・ブラウザからウェブ・ブラウ ザ通信を受け取り、 それらを適切なサーバにルーティングするプロキシとすることもできる。 ウェブ・ブラウザ/ウェブ・サーバと、それらの共通の情報とトランスポート ・プロトコルであるHTMLとHTTPの普及によって、ウェブ技法が情報への ネットワーク・アクセスのための汎用インタフェースとして急速に受け入れられ るようになった。さらに、ウェブ・ブラウザとウェブ・サーバの間の通信のため のプロトコルと言語が標準化されているため、ユーザがネットワーク情報にアク セスするためのウェブ・ブラウザとしてNetscape Navigator TM、NCSA、MosaicTM、WebExplorerTM、または他の どのブラウザを使用するかを問わず、通信プロトコルおよび言語は同じになる。 したがって、ウェブ・ブラウザの大規模なインストール済みユーザ基盤と、イン タフェースの接続性と、HTTP定義の共通ゲートウェイ・インタフェース(C GI)を使用したウェブ・アプリケーション・サーバの作成の容易さとが組合わ さって、ウェブ技法を大規模なクラスの書式ベース・アプリケーションにとって きわめて魅力的なものにしている。 インタフェースの普及と受け入れの拡大と同時に、移動体コンピューティング も普及している。ラップトップ、ノートブック、パーソナル・ディジタル/通信 アシスタント(PDA/PCA)およびその他の携帯用装置の使用によって、無 線通信の需要が増大している。しかし、無線ワイド・エリア ・ネットワーク、セルラ通信、およびパケット無線には、ウェブの環境で使用し た場合に共通の制約がある。1バイト当たりの高い通信コストと、遅い応答時間 と、低帯域幅と、信頼性のなさはすべて、ワールド・ワイド・ウェブのステート レス通信プロトコルに無線技法を使用するのを阻害している。また、ウェブ・プ ロトコルはステートレスであるため、1要求当たりのデータ量と無線接続を介し て伝送される通信要求の数は、通信が自己完結型でない場合に必要となる量と数 よりも大きい。したがって、無線技法またはいずれかの低速通信技法をウェブ技 法と組み合わせることは、ウェブ技法の汎用的性質の強さによって無線技法の弱 点がさらにひどくなるため実際的ではないと思われる。 発明の目的と概要 上記の制限事項に関して、本発明の1つの目的は、アプリケーション間のデー タ転送のオーバヘッドの量を少なくする通信システムを提供することである。 本発明の追加の目的は、ウェブ・ブラウザ/サーバ環境内で使用できる通信シ ステムを提供することである。 本発明の他の目的は、ウェブ・ブラウザ・アプリケーションまたはウェブ・サ ーバ・アプリケーションを修正する必要なしに低速通信または無線通信システム 内で既存の通信プロトコルおよび言語に適合できるようにすることである。 本発明の追加の目的は、ウェブ・ブラウザとウェブ・サー バの間で必要とされる通信の量を少なくし、それにより通信システムのパフォー マンスを向上させる通信システムを提供することである。 上記その他の目的に関して、本発明は、通信リンクを介して第1のコンピュー タ内に常駐する第1のアプリケーションから第2のコンピュータ内に常駐する第 2のアプリケーションまで送信されるデータを少なくする方法を提供する。デー タは、外部通信リンクを介して第1のコンピュータから第2のコンピュータまで 送信される。本発明の一態様は第1のコンピュータに常駐しているキャッシュ内 の第2のアプリケーションからの要求に応答して第2のアプリケーションに与え られる第1のアプリケーションからのデータ・ストリームを格納して、サーバ・ ベース・キャッシュ項目を作成することを含んでいる。第2のアプリケーション からの要求に応じて第2のアプリケーションに与えられるデータ・ストリームも 、クライアント・ベース・キャッシュ項目を作成するために第2のコンピュータ に常駐しているキャッシュに格納される。第2のアプリケーションからの要求を 評価して、問い合わせを受けた要求に対応するクライアント・ベース・キャッシ ュ項目が存在していて、クライアント・ベース書式を与えるかどうかを判定する 。第2のアプリケーションからの要求にも問い合わせを行って、問い合わせを受 けた要求に対応するサーバ・ベース・キャッシュ項目が存在していて、サーバ・ ベース書式を与えるかどうかを判定する。第2のアプリケーシ ョンからの問い合わせを受けた要求に応じて第1のアプリケーションが発信した 応答に対応するデータ・ストリームをインタセプトしてから、外部通信リンク上 での応答の伝送を行い、またサーバ・ベース書式と比較して、インタセプトされ た応答とサーバ・ベース書式との間の差に対応する差分データを与える。差分デ ータは外部通信リンクによって第2のコンピュータへ送られ、第1のコンピュー タが送信した外部通信リンクによって伝送される差分データが外部通信リンクか ら取得される。第1のアプリケーションからの通信に対応した応答データ・スト リームが、クライアント・ベース書式を外部通信リンクから受信した差分データ と組み合わせて、インタセプトされた応答に対応する応答データ・ストリームを 作成することにより、外部通信リンクから受信したクライアント/サーバ固有デ ータ・ストリームから再構成される。インタセプトされた応答に対応する再構成 されたデータ・ストリームは、第2のアプリケーションに与えられる。 本発明の他の態様において、第2のコンピュータはサーバ・ベース書式がクラ イアント・ベース書式と同一であるかどうかを判定し、サーバ・ベース書式がク ライアント・ベース書式と同一でない場合には、サーバ・ベース書式と差分デー タとが外部通信リンクによって第2のコンピュータへ伝送される。第1のアプリ ケーションからの応答に対応するインタセプトされた応答データ・ストリームが 次いで、外部通信リンクから受信したサーバ・ベース書式を外部通信リンクから 受信した差分データと組み合わせて、インタセプトされた応答に対応するデータ ・ストリームを作成することにより再構成される。問い合わせを受けた要求に対 応するクライアント・ベース書式も受信したサーバ・ベース書式を問い合わせを 受けた要求に対応するクライアント・ベース・キャッシュ項目として格納するこ とによって更新される。 本発明のサーバ・リベース態様において、第1のコンピュータはサーバ・ベー ス書式とインタセプトされた応答の間の差が事前定義差分閾値よりも大きいかど うか判定する。サーバ・ベース書式とインタセプトされた応答との間の差が、事 前定義差分閾値よりも大きい場合には、問い合わせを受けた要求に対応するサー バ・ベース書式が、第1のアプリケーションから受信したインタセプトされた応 答データ・ストリームを、インタセプトされた要求に対応するサーバ・ベース・ キャッシュ項目として格納することによって更新される。この場合、比較は更新 されたサーバ・ベース書式を利用する。 本発明の他の実施の形態においては、第2のアプリケーションからの要求に対 応する複数のサーバ・ベース・キャッシュ項目が維持される。第2のアプリケー ションからの要求に問い合わせを行って、複数のサーバ・ベース・キャッシュ項 目が第2のアプリケーションからの要求に対応して存在していて、複数のサーバ ・ベース書式を与えるかどうかを判定する。第1のコンピュータは複数のサーバ ・ベース書式の1つがクライアント・ベース書式と同一であるかどうかを判定し 、 複数のサーバ・ベース書式の1つがクライアント・ベース書式と同一である場合 には、クライアント・ベース書式と同一である、複数のサーバ・ベース書式の1 つを利用する。 本発明のさらに他の実施の形態は、第2のアプリケーションからの要求に応じ て、第1のアプリケーションからのデータ・ストリームによって、サーバ・キャ ッシュ項目を更新することを含んでいる。第2のアプリケーションからの要求に 対応しており、かつ連続したサーバ・キャッシュ項目の間の差を表している複数 の差分データ・セットを、アーカイブ差分データを与えるために維持する。複数 のCRC項目も維持し、複数のCRC項目の各々が複数の差分データ・セットの 1つと関連づけられ、差分データ・セットが導かれたサーバ・ベース書式を一意 に識別する。複数の差分データ・セットとCRCとが第2のアプリケーションか らの要求に対応して存在しており、しかも複数のCRCの1つがクライアント・ ベース書式と同一であるサーバ・ベース書式に対応している場合には、クライア ント・ベース書式に対応しているCRCに対応するアーカイブ差分データ、連続 したアーカイブ差分データ・セット、現行サーバ・ベース書式に関して計算され た差分データ、および第1のアプリケーションからの応答が外部通信リンクを通 して第2のコンピュータへ送られる。外部通信リンクから受信したデータ・スト リームから、第1のアプリケーションからの通信に対応している応答データ・ス トリームを、クライアント・ベース書式を外部通信リンクか ら受信した差分データと逐次組み合わせて、インタセプトされた応答に対応する 応答データ・ストリームを作成することによって再構成する。第2のアプリケー ションからの要求に対応したクライアント・キャッシュ項目も、再構成したデー タ・ストリームによって更新される。 本発明の他の実施の形態において、第1のアプリケーションはウェブ・サーバ を含んでおり、第2のアプリケーションはウェブ・ブラウザを含んでいる。また 、外部通信リンクは無線通信リンクを含んでいる。さらに、他の実施の形態はC GI要求を含んでいるウェブ・ブラウザからの要求を含んでいる。 当業者ならわかるように、本発明の前述の態様は装置またはコンピュータ可読 プログラム手段としても提供することができる。 図面の簡単な説明 第1図は、典型的なウェブ・ブラウザ/ウェブ・サーバ・システムを示すブロ ック図である。 第2図は、クライアント・インタセプトとサーバ・インタセプトを使用する本 発明の一実施態様によるウェブ・ブラウザ/ウェブ・サーバ・システムを示すブ ロック図である。 第3図は、コヒーレント・キャッシュ・システムを実施する本発明の好ましい 実施例において、クライアント側インタセプト・モジュールによって行われる操 作を図示する流れ図 である。 第4図は、コヒーレント・キャッシュ・システムを実施する本発明の好ましい 実施例において、クライアント側インタセプト・モジュールによって行われる操 作を図示する流れ図である。 第5図は、コヒーレント・キャッシュ・システムを実施する本発明の好ましい 実施例において、サーバ側インタセプト・モジュールによって行われる操作を図 示する流れ図である。 第6図は、コヒーレント・キャッシュ・システムを実施する本発明の好ましい 実施例において、サーバ側インタセプト・モジュールによって行われる操作を図 示する流れ図である。 第7図は、差分計算データ転送システムを実施する本発明の好ましい実施例に おいて、クライアント側インタセプト・モジュールによって行われる操作を図示 する流れ図である。 第8図は、差分計算データ転送システムを実施する本発明の好ましい実施例に おいて、クライアント側インタセプト・モジュールによって行われる操作を図示 する流れ図である。 第9図は、差分計算データ転送システムを実施する本発明の好ましい実施例に おいて、サーバ側インタセプト・モジュールによって行われる操作を図示する流 れ図である。 第10図(集合的に第10図を形成する第10A図および第10B図から構成 される)は、差分計算転送システムを実施する本発明の好ましい実施例において 、サーバ側インタセプト・モジュールによって行われる操作を図示する流れ図で ある。 第11図は、仮想ソケットを使用する本発明の一態様を示すブロック図である 。 第12図は、仮想ソケットを使用する本発明の一実施例による、クライアント 側インタセプト・モジュールとサーバ側インタセプト・モジュールを示すブロッ ク図である。 第13図(集合的に第13図を形成する第13A図および第13B図から構成 される)は、仮想ソケットを使用する本発明の一実施例による、クライアント側 インタセプト・モジュールまたはサーバ側インタセプト・モジュールのソケット ・マネージャによって行われる操作を図示する流れ図である。 第14図は、仮想ソケットを使用する本発明の一実施例において、クライアン ト側インタセプト機能によって行われる操作を図示する流れ図である。 第15図は、仮想ソケットを使用する本発明の一実施例において、サーバ側イ ンタセプト機能によって行われる操作を図示する流れ図である。 第16−1図は、仮想ソケットを使用する本発明の一実施例による、仮想作成 操作を図示する流れ図である。 第16−2図は、仮想ソケットを使用する本発明の一実施例による仮想送信操 作を図示する流れ図である。 第16−3図は、仮想ソケットを使用する本発明の一実施例による仮想受信操 作を図示する流れ図である。 第16−4図は、仮想ソケットを使用する本発明の一実施 例による仮想選択操作を図示する流れ図である。 第17−1図は、仮想ソケットを使用する本発明の一実施例による仮想フラッ シュ操作を図示する流れ図である。 第17−2図は、仮想ソケットを使用する本発明の一実施例による仮想クロー ズ操作を図示する流れ図である。 詳細な説明 以下に、本発明の好ましい実施例が図示されている添付図面を参照しながら本 発明について詳述する。しかし、本発明は多くの異なる態様で実施することがで き、本明細書に記載の実施例に限定されるものと解釈してはならない。これらの 実施例は、本開示を綿密かつ十全なものとし、本発明の範囲を当業者に完全に伝 えるために示すものである。全体を通じて同様の番号は同様の要素を指す。 第3図ないし第10図と第13図ないし第17−2図は、本発明による方法お よびシステムを示すフローチャートである。フローチャートの各ブロックと、フ ローチャートのブロックの組合せは、コンピュータ・プログラム命令によって実 施することができることがわかるであろう。これらのコンピュータ・プログラム 命令は、コンピュータまたはその他のプログラム式装置にロードし、それによっ てコンピュータまたはその他のプログラム式装置上で実行される命令がフローチ ャートの1つまたは複数のブロックに指定されている機能を実施する手段を生じ させるように機械を作り出すことができ る。これらのコンピュータ・プログラム命令を、コンピュータまたはその他のプ ログラム式装置に対して特定の方式で機能するように指示することができるコン ピュータ可読メモリに格納し、それによってコンピュータ可読メモリに格納され た命令がフローチャートの1つまたは複数のブロックに指定されている機能を実 施する命令手段を含む製品を作り出すようにすることができる。また、コンピュ ータ・プログラム命令をコンピュータまたはその他のプログラム式装置にロード して、コンピュータまたはその他のプログラム式装置上で一連の操作ステップが 行われるようにし、コンピュータまたはその他のプログラム式装置上で実行され る命令がフローチャートの1つまたは複数のブロックに指定されている機能を実 施するステップを提供するようにコンピュータ実施プロセスを作り出すこともで きる。 したがって、フローチャートのブロックは、指定された機能を実行する手段の 組合せと、指定された機能を実行するステップの組合せとに対応する。また、フ ローチャートの各ブロックと、フローチャートのブロックの組合せは、指定され た機能またはステップを実行する特定用途向けハードウェア・ベースのコンピュ ータ・システムによって、または特定用途向けハードウェアとコンピュータ命令 の組合せによって実施することができることがわかるであろう。 第2図に、本発明の一実施例を示す。第2図に示すように、ウェブ・ブラウザ 10はクライアント側インタセプト・モジ ュール30と通信する。ウェブ・サーバ20はサーバ側インタセプト・モジュー ル40と通信する。次にクライアント側インタセプト・モジュール30が通信リ ンク35を介してサーバ側インタセプト・モジュール40と通信する。ウェブ・ ブラウザ10とクライアント側インタセプト・モジュール30は、第1のコンピ ュータ5に組み込むことができる。サーバ側インタセプト・モジュール40とウ ェブ・サーバ20は第2のコンピュータ6に組み込むことができる。第1のコン ピュータ5と第2のコンピュータ6は外部通信リンク35を介して通信する。 ウェブ・ブラウザ10は、ハイパーテキスト転送プロトコル(HTTP)とハ イパーテキスト・マークアップ言語(HTML)を使用して、やはりHTTPと HTMLを使用するインターネット・ウェブ・サーバ20と通信するインターネ ット・ウェブ・ブラウザであることが好ましい。動作中、ウェブ・ブラウザ10 はHTTPデータ・ストリームを出力し、それがクライアント側インタセプト・ モジュール30によってインタセプトされる。クライアント側インタセプト・モ ジュール30によるHTTPデータ・ストリームのインタセプトは、クライアン ト側インタセプト・モジュール30が127.0.0.1のようなネットワーク 番号127を有するIPアドレスにあるTCP/IPループバック機構を使用し て行うことができる。次に、クライアント側インタセプト・モジュール30はH TTPデータ・ストリームをクライアント /サーバ固有プロトコルに変換または変形し、そのクライアント/サーバ固有デ ータ・ストリームを外部通信リンク35に送る。サーバ側インタセプト・モジュ ール40はこのクライアント/サーバ固有データ・ストリームを受け取り、ウェ ブ・ブラウザ発信通信に対応する元のHTTPデータ・ストリームを再構築する 。この再構築されたHTTPデータ・ストリームは次にウェブ・サーバ20に転 送される。ウェブ・サーバ20はインターネット・ウェブ・サーバの通常の方式 でHTTPデータ・ストリームに応答する。当業者ならわかるように、ウェブ・ サーバ20は複数のブラウザがインターネットに接続することができるようにす るプロキシとすることもできる。 たとえば特定のURLホーム・ページを求めるブラウザ要求に応答してウェブ ・サーバ20がウェブ・ブラウザ10に送る情報を受け取ると、ウェブ・サーバ 20はウェブ・ブラウザ10に送る通信に対応するHTTPデータ・ストリーム を出力する。このウェブ・サーバ発信通信はサーバ側インタセプト・モジュール 40によってインタセプトされ、クライアント/サーバ固有データ・ストリーム に変換される。次に、ウェブ・サーバ発信通信に対応するクライアント/サーバ 固有データ・ストリームは外部通信リンク35で第2のコンピュータから第1の コンピュータに送られる。このクライアント/サーバ固有データ・ストリームを クライアント側インタセプト・モジュール30が受け取り、ウェブ・サーバ発信 通 信に対応するHTTPデータ・ストリームが再構築され、ウェブ・ブラウザ10 に供給される。 本発明の特定の実施例では、外部通信リンク35は無線通信リンクである。そ の場合、ユーザにとって受容可能なシステム・パフォーマンスを得るために、外 部通信リンク35を介する通信量を、通信リンク35を介して伝送しなければな らない通信の頻度と情報量の両方について減らすことが望ましい。したがって、 本発明はキャッシング技法と、差分計算技法と、プロトコル縮小技法とを使用し て、外部通信リンク35を介する必要通信量を最小限にする。これらの技法は、 HTTPのステートレスまたは確率論的プロトコルを、クライアントおよびサー バに固有の情報を使用するクライアント/サーバ固有プロトコルに変換して通信 の量と頻度を減らすことによって実現される。 本発明について、単一のウェブ・ブラウザ・アプリケーションと単一のウェブ ・サーバ・アプリケーションに関して説明するが、当業者ならわかるように、本 発明の利便および利点は、単一のウェブ・サーバに関連づけられた複数のウェブ ・ブラウザを使用した場合にも得ることができる。したがって、本発明の方法、 装置、およびプログラム製品は、各ブラウザがクライアント側インタセプト・モ ジュールと通信する複数のブラウザと共に使用することもでき、その場合それら のクライアント側インタセプト・モジュールはウェブ・サーバまたはウェブ・プ ロキシのサーバ側インタセプト・モジュ ールと通信することになる。 本発明の一実施例では、クライアント側インタセプト・モジュール30とサー バ側インタセプト・モジュール40の朗報がキャッシュ格納機能を有する。第1 のコンピュータにあるクライアント・キャッシュには、ウェブ・ブラウザ発信通 信に応答してウェブ・ブラウザが受け取るHTTPデータ・ストリームが格納さ れる。第2のコンピュータにあるサーバ・キャッシュには、ブラウザ発信通信に 応答してウェブ・サーバから受け取るHTTPデータ・ストリームが格納される 。 当業者ならわかるように、第1のコンピュータまたは第2のコンピュータにあ るキャッシュは、コンピュータの特定のハードウェア構成に基づく任意の容量と することができる。これらのキャッシュには、各通信について、通信のURL、 巡回冗長検査(CRC)などの通信内容に基づく固有識別子、キャッシュ項目の 作成またはリフレッシュが行われた時刻を示すデータ格納時刻(SDT)、およ び通信のデータを含む情報が格納される。したがって、キャッシュに格納されて いる各通信についてキャッシュ項目のディレクトリを作成することができる。さ らに、所与のハードウェア構成で使用可能な資源は限られているため、第1のコ ンピュータおよび第2のコンピュータにあるキャッシュを維持するために当業者 に周知の任意の数のキャッシング技法を使用することができる。したがって、た とえば、新しい項目の追加によってユーザ定義キャッシュサイズを超える場合、 キャッシュは最も古いデ ィレクトリ項目を無効化し、無効化された項目の代わりに新しい項目を追加する ことができる。さらに、ウェブ・ブラウザ・アプリケーションまたはウェブ・サ ーバ・アプリケーションの複数のインスタンスにわたって、あるいは第1または 第2のコンピュータの電源投入サイクルについてさえもキャッシュ項目を維持し て持続キャッシュを作成することができる。 以下に、クライアント側インタセプタ・モジュール30とサーバ側インタセプ ト・モジュール40の動作を示すフローチャートである第3図ないし第6図を参 照しながら本発明の一態様によるキャッシング構造について説明する。 具体的に第3図を参照すると、ブロック100はクライアント側インタセプト ・モジュール30がウェブ・ブラウザ10から要求を受け取ったことを示してい る。この要求は、HTTPデータ・ストリームの書式をとることができる。ブロ ック105に示すように、クライアント側インタセプト・モジュール30は着信 した要求のユニフォーム・リソース・ロケータ(URL)を検査する。クライア ント側インタセプト・モジュール30はURLから、ウェブ・ブラウザ発信要求 に対応する情報が前に第1のコンピュータにある第1のクライアント・キャッシ ュに格納されているかどうかを判断する。 URLに対応する情報が前にクライアント・キャッシュに格納されていなかっ た場合、ブロック106に示す操作がクライアント側インタセプト・モジュール によって行われる。 クライアント側インタセプト・モジュール30は外部通信リンク35でサーバ側 インタセプト・モジュール40に要求を送る。 しかし、ブロック105に示すようにウェブ・ブラウザ発信通信に問い合わせ たときに、ウェブ・ブラウザ発信通信に対応するクライアント・キャッシュ項目 が存在する場合、最も単純な実施例では、その情報がHTTPデータ・ストリー ムとしてウェブ・ブラウザに供給される。しかし、第3図に示すように、本発明 の好ましい実施例は、ウェブ・ブラウザ発信通信に対応するキャッシュ項目に対 して本明細書でコヒーレンシ間隔検査と呼ぶ操作を行う。この操作は第3図のブ ロック110に示されている。 クライアント側インタセプト・モジュールのコヒーレンシ間隔はユーザ定義と することができ、キャッシュ項目が陳腐化し、存在はしていてもウェブ・サーバ に対してウェブ・ブラウザ発信通信に対応する情報を要求することによって最新 化しなければならなくなるまでのキャッシュ項目が存在することができる時間の 長さである。ブロック110に示すコヒーレンシ間隔検査は、現在日時をウェブ ・ブラウザ発信通信に対応するキャッシュ項目のSDTとユーザによって指定さ れたコヒーレンシ間隔との和と比較することによって行うことができる。現在日 時がこの和より大きい場合、ウェブ・ブラウザ発信通信に対応するキャッシュ内 に格納されている情報は陳腐化しており、ブロック110の「No」に分岐する 。 しかし、現在日時がSDTにユーザ定義コヒーレンシ間隔を足した和よりも小さ い場合は、ブロック110で「Yes」に分岐し、ブロック111に示すように 、そのキャッシュ項目がHTTPデータ・ストリームとしてブラウザに供給され る。したがって、第3図のブロック100でクライアント側インタセプト・モジ ュール30が受け取ったブラウザ発信通信が完了する。 ブロック110に示すコヒーレンシ間隔検査によって、第1のコンピュータに あるキャッシュ項目が陳腐化していると判断された場合、サーバ側インタセプト ・モジュール40に対して要求を行い、第2のコンピュータにあるキャッシュ項 目のコヒーレンシを検査する。この操作は第3図のブロック112に示されてい る。これは、外部通信リンク35を介してサーバ側インタセプト・モジュール4 0に、特定のクライアント側インタセプト・モジュール30のコヒーレンシ間隔 と、ウェブ・ブラウザ10によって発信されたHTTP要求と、ウェブ・ブラウ ザ発信通信のURLに対応するクライアント・キャッシュの内容を示す固有の標 識を供給することによって行われる。好ましい実施例では、この固有の標識はキ ャッシュ項目の巡回冗長検査(CRC)である。 次に第5図を参照すると、外部通信リンク35を介してクライアント側インタ セプト・モジュール30から受け取った情報に応答したサーバ側インタセプト・ モジュール操作が示されている。サーバ側インタセプト・モジュール40がクラ イアント側インタセプト・モジュールから要求を受け取ると、サーバ側インタセ プト・モジュール40は所定のクライアント・コヒーレンシ時間間隔と、クライ アント・キャッシュ項目のCRC値と、ウェブ・ブラウザによって発信されたH TTP要求を受け取る。この情報の受信は、第5図のブロック120に示されて いる。 クライアント側インタセプト・モジュール30から情報を受け取った後、サー バ側インタセプト・モジュール40は第2のコンピュータにあるそのサーバ・キ ャッシュを検査して、ウェブ・ブラウザによって発信されたHTTP要求のUR Lに対応するサーバ・キャッシュ項目が存在するかどうかを判断する。ブロック 125に示すようにウェブ・ブラウザ発信通信に問い合わせた後、サーバ側イン タセプト・モジュール40が、ウェブ・ブラウザ発信通信によって要求された情 報に対応するキャッシュ項目が存在すると判断した場合、ブロック125で「Y es」分岐をとる。次に、サーバ側インタセプト・モジュール40はSSIモジ ュール40の現在日時を、ウェブ・ブラウザ発信通信によって要求された情報に 対応するサーバ・キャッシュ項目のSDTとクライアント側インタセプト・モジ ュールから受け取った所定のクライアント・コヒーレンシ時間間隔との和と比較 する。 現在日時がサーバ・キャッシュ項目のSDTとコヒーレンシ間隔との和より小 さい場合、第5図のブロック130の「Yes」経路をとる。次にサーバ側イン タセプト・モジュ ール40はサーバ・キャッシュ項目のCRCとクライアント・キャッシュのCR Cとを比較して、その2つのキャッシュ項目が同じかどうかを判断する。2つの キャッシュ項目が同じ場合、ブロック135の「Yes」分岐をとり、ブロック 136に示すように、「コヒーレント」応答がクライアント側インタセプト・モ ジュール30に送られる。 ブロック135の条件で、CRCが等しくないと判断された場合、クライアン ト・キャッシュに入っている情報とサーバ・キャッシュに入っている情報は同じ でなく、ブロック137に示すようにサーバ側インタセプト・モジュールは外部 通信リンクを介して第1のコンピュータにサーバ・キャッシュ項目を送る。サー バ・キャッシュ項目をクライアント側インタセプト・モジュール30に送信する 際に、サーバ側インタセプト・モジュールはその項目を、サーバ・キャッシュ項 目のCRCと、サーバ・キャッシュ項目データと、サーバ・キャッシュ項目のエ ージとを含むクライアント固有通信プロトコルに変換する。サーバ・キャッシュ 項目のエージは、現行日時からキャッシュ項目のSDTを引くことによって計算 する。 第5図に関して最後に、SDTに所定のクライアント・コヒーレンシ時間間隔 を足した和が現在日時よりも小さいか、またはウェブ・ブラウザ発信通信のUR Lに対応する項目がない場合、それぞれブロック130の「No」経路またはブ ロック125の「No」経路がとられる。したがって、ブロ ック126の操作が行われ、サーバ側インタセプト・モジュール40がサーバに ウェブ・ブラウザ発信通信をHTTPデータ・ストリームとして送ることになる 。サーバ側インタセプト・モジュール40がウェブ・ブラウザ発信通信をサーバ にHTTPデータ・ストリームとして送らなければならない場合、サーバ側イン タセプト・モジュール40は第6図の操作を実行する。 第6図のブロック140に示すように、ウェブ・ブラウザ発信通信に応答して 、サーバ側インタセプト・モジュールがウェブ・サーバ20からHTTPデータ ・ストリームを受け取る。HTTPデータ・ストリームを受け取ると、サーバ側 インタセプト・モジュール40はHTTPデータ・ストリームのCRCを計算し 、HTTPデータ・ストリームを一時的に格納する。次に、ブロック145に示 すように、サーバ側インタセプト・モジュールはHTTPデータ・ストリームに 問い合わせて、HTTPデータ・ストリームのURLに対応するサーバ・キャッ シュ項目が存在するかどうかを判断する。そのような項目が存在しない場合、ブ ロック145の「Yes」経路が実行される。次にサーバ側インタセプト・モジ ュール40は、ブロック150に示すように、ウェブ・サーバ20から受け取っ たHTTPデータ・ストリームの最も最近に計算されたCRCを、ウェブ・サー バ発信応答通信のURLに対応するサーバ・キャッシュ項目のCRCと比較する 。CRCが同じ場合、ブロック150の「Yes」分岐が行わ れる。サーバ側インタセプト・モジュール40はブロック151に示すようにサ ーバ・キャッシュ項目のSDT項目を更新し、ブロック152に示すようにウェ ブ・サーバ20によって受信されたHTTPデータ・ストリームを一時格納域か ら除去する。 CRC比較の結果によって、サーバ・キャッシュ項目がウェブ・サーバ20か ら受け取ったHTTPデータ・ストリームと異なることが示された場合、ブロッ ク150の「No」経路が行われる。サーバ側インタセプト・モジュール40は ブロック153に示すようにサーバ・キャッシュから既存のデータを除去し、次 にブロック154に示すようにより新しい方の情報によってサーバ・キャッシュ を更新する。ブロック154に示すように、この更新にはサーバ・キャッシュに ウェブ・サーバ通信のCRCを格納するステップと、キャッシュ項目の一部とし て現在日時をキャッシュ項目のSDTとして格納するステップと、HTTPデー タ・ストリームを格納するステップとが含まれる。サーバ・キャッシュ項目を更 新するかどうか、またはサーバ・キャッシュ項目がウェブ・サーバ20から受け 取ったHTTPデータ・ストリームと同じであることが判明したかどうかを問わ ず、いずれの場合もサーバ側インタセプト・モジュールは次にサーバ・キャッシ ュ項目がウェブ・ブラウザ発信通信に対応するクライアント・キャッシュ項目と 同じかどうかを判断する。この操作をブロック155に示す。 サーバ側インタセプト・モジュール40が、ウェブ・サーバ20から受け取っ た応答に対応するキャッシュ項目が存在しないと判断した場合、ブロック145 の「No」経路がとられる。ブロック146に示すように、ウェブ・サーバから の応答のURLを格納し、ウェブ・サーバからの応答のCRCを格納し、HTT Pデータ・ストリームを格納し、SDTとして現在日時を格納することによって 、サーバ・キャッシュ項目が作成される。ウェブ・ブラウザ発信通信に対応する キャッシュ項目を作成した後、サーバ側インタセプト・モジュール40は次に、 ブロック155に示すように、再度、このサーバ・キャッシュ項目のCRCを対 応するクライアント・キャッシュのCRCと比較する。 サーバ・キャッシュ項目とクライアント・キャッシュ項目との比較の結果によ って、キャッシュ項目が同じであることがわかった場合、ブロック155の「Y es」分岐がとられ、ブロック156の操作が行われる。ブロック156に示す ように、サーバ側インタセプト・モジュール40がクライアント側インタセプト ・モジュール30に応答を送る。サーバ側インタセプト・モジュール40は、ク ライアント側インタセプト・モジュールにコヒーレント応答を送り、ゼロのエー ジを送ることによって、サーバ要求キャッシュ項目をクライアント/サーバ固有 データ・ストリームに変形する。 サーバ側インタセプト・モジュール40が、クライアント・キャッシュ項目が ウェブ・ブラウザ発信通信に対応するサ ーバ・キャッシュ項目と同じではないと判断した場合、ブロック155の「No 」分岐がとられ、ブロック157の操作が行われる。ブロック157に示すよう に、サーバ側インタセプト・モジュール40は、サーバ・キャッシュ項目をクラ イアント/サーバ固有データ・ストリームに変換または変形する。このデータ・ ストリームには、サーバ・キャッシュ項目のCRCと、サーバ・キャッシュ項目 HTTPデータ・ストリームと、キャッシュ項目のゼロに設定されたエージとが 含まれる。このクライアント/サーバ固有通信は次に外部通信リンク35を介し てクライアント側インタセプト・モジュール30に送信される。 サーバ側インタセプト・モジュールから通信を受け取ったときのクライアント 側インタセプト・モジュール30の機能について、第4図を参照しながら以下に 説明する。ブロック160に示すように、クライアント側インタセプト・モジュ ール30は外部通信リンク35を介して送信されたクライアント/サーバ固有デ ータ・ストリームを受信または入手する。クライアント側インタセプト・モジュ ールは次に、ブロック165に示すように、サーバ側インタセプト・モジュール 40からどのようなタイプの応答を受け取ったかを判断する。サーバ側インタセ プト・モジュール40が、クライアントがクライアント・キャッシュ項目がコヒ ーレントであること、すなわちサーバ・キャッシュ項目とクライアント・キャッ シュ項目が同じであることを示している場合、ブロック166 に示す操作が行われる。ブロック166に示すように、クライアント側インタセ プト・モジュール30は、現在日時とサーバ側インタセプト・モジュール40か ら受け取ったエージとの差を使用してウェブ・ブラウザ発信通信に対応するクラ イアント・キャッシュ項目のSDTを更新する。したがって、本発明は、第1の コンピュータ5と第2のコンピュータ6の2つのクロックの同期をとらずに、第 1のコンピュータのキャッシュ項目のコヒーレンシ時間を更新して第2のコンピ ュータの新しい方のデータを反映させたことになる。ウェブ・ブラウザ発信通信 に対応するクライアント・キャッシュ項目のSDTを更新した後、クライアント 側インタセプト・モジュール30はクライアント・キャッシュ項目をウェブ・ブ ラウザ10にHTTPデータ・ストリームとして転送する。この操作をブロック 174に示す。 しかし、クライアント側インタセプト・モジュール30が応答のタイプがデー タまたはデータ・ストリーム応答であると判断した場合は、ブロック165から 「ストリーム」経路をとり、ブロック167の操作が行われる。クライアント側 インタセプト・モジュール30はHTTPデータ・ストリームを受け取り、その データを一時的に格納する。次に、第4図のブロック170に示すように、クラ イアント側インタセプト・モジュール30は、ウェブ・ブラウザ発信通信に対応 するキャッシュ項目が存在するかどうかを判断する。キャッシュ項目が存在する 場合、ブロック170の「Yes」経路 をとって、ブロック171に示すように、既存のキャッシュ項目がフラッシュさ れる。クライアント側インタセプト・モジュールは次に、サーバ側インタセプト ・モジュール40から受け取ったHTTPデータ・ストリームのCRCを格納し 、現在日時とサーバ側インタセプト・モジュール40から受け取ったエージとの 差をSDTとして格納し、HTTPデータ・ストリームを格納することによって 、ウェブ・ブラウザ発信通信に対応するクライアント・キャッシュ項目を更新す る。この操作をブロック172に示す。 ウェブ・ブラウザ発信通信に対応するキャッシュ項目が存在しない場合、ブロ ック170の「No」経路が取られる。ブロック173に示す操作を行うことに よってクライアント・キャッシュ項目が作成される。ブロック173に示すよう に、クライアント側インタセプト・モジュール30は、サーバ側インタセプト・ モジュール40から受け取ったHTTPデータ・ストリームのURLを格納し、 サーバ側インタセプト・モジュール40から受け取ったHTTPデータ・ストリ ームのCRCを格納し、HTTPデータ・ストリームを格納することによって、 クライアント・キャッシュ項目を作成する。また、クライアント側インタセプト ・モジュール30は、サーバ側インタセプト・モジュール40から外部通信リン ク35を介して受け取ったエージSDTを現在日時から引くことによって、SD Tを更新または格納する。 しかし、ブロック166、172、173のいずれの操作 によってクライアント・キャッシュ項目が作成されるかを問わず、クライアント 側インタセプト・モジュールはクライアント・キャッシュ項目をHTTPデータ ・ストリームとしてウェブ・ブラウザ10に転送または供給する。これらの操作 は第4図のブロック174に示されている。 当業者ならわかるように、クライアント・キャッシュとサーバ・キャッシュは 、メモリによって、またはハード・ディスク、読書きCD−ROM、光ディスク 、その他の格納技法などの大容量格納装置によって実装することができる。さら に、当業者ならわかるように、クライアント側インタセプト・モジュールとサー バ側インタセプト・モジュールは、ソフトウェア、ハードウェア、またはその組 合せによって実装することができる。 特定の第1または第2のコンピュータにあるキャッシュについて言及したが、 当業者ならわかるように、本発明の利点は、キャッシュが第1のコンピュータに ではなく、単に外部通信リンクの第1のコンピュータと同じ側にある場合でも得 られる。したがって、ハードウェア・キャッシュをクライアント・キャッシュと して機能する第1のコンピュータの外部に実装し、高速通信によって第1のコン ピュータに接続することもでき、しかもその場合でも、キャッシュが外部通信リ ンクの第1のコンピュータと同じ側にある限り、本発明の利点が得られる。 本発明の他の実施例では、サーバ側インタセプト・モジュ ール40は、ウェブ・サーバ20から受け取ったHTTPデータ・ストリームの コピーを維持せず、単にその通信のディレクトリ項目を維持するに過ぎない。こ のディレクトリ項目には、通信のURLと、HTTPデータ・ストリームのため に計算されたCRCと、HTTPデータ・ストリームをウェブ・サーバから受け 取った時刻と、その通信のSDTとが含まれ、このSDTはCRCを計算した時 刻に設定することができる。このような場合、クライアント側インタセプト・モ ジュール30はサーバ側インタセプト・モジュール40に対して、サーバ側イン タセプト・モジュールがCRCとSDTを維持していたURLに対応する通信を 求める要求を送り、、次にサーバ側インタセプト・モジュール30はクライアン ト側インタセプト・モジュール30から受け取ったCRCを検査して、それが指 定されたURLの最新のHTTPデータ・ストリームに対応しているかどうかを 判断する。一致している場合、クライアント側インタセプト・モジュールにコヒ ーレント応答が送られる。一致していない場合、サーバ側インタセプト・モジュ ールは、クライアント側インタセプト・モジュールから受け取ったHTTPデー タ・ストリームをウェブ・サーバ20に送り、ウェブ・サーバ20から受け取っ た応答をクライアント側インタセプト・モジュール30に返す。 第7図、第8図、第9図、および第10図に、本発明の他の態様においてクラ イアント側インタセプト・モジュール30とサーバ側インタセプト・モジュール 40によって行われ る操作を示す。この態様は、差分計算を使用して、外部通信リンク35を介して 伝送されるデータを削減する。第7図を参照すると、ブロック200にクライア ント側インタセプト・モジュール30によるウェブ・ブラウザ10からのHTT P要求の受信が示されている。ブロック205に示すように、クライアント側イ ンタセプト・モジュール30はウェブ・ブラウザ10からのインタセプトしたH TTP要求に問い合わせて、その要求が共通ゲートウェイ・インタフェース(C GI)に送るものかどうかを判断する。要求が共通ゲート・インタフェースに送 るものでない場合、クライアント側インタセプト・モジュール30は、第3図な いし第6図に示し、第7図のブロック206に図示するように、その要求をサー バ側インタセプト・モジュールに渡す。 しかし、ウェブ・ブラウザ発信通信がCGI要求に対応する場合、ブロック2 05の「Yes」経路がとられる。ブロック210に示すように、クライアント /サーバ・インタセプト・モジュール30は、対応するCGI要求に応答して前 にウェブ・ブラウザに供給されていたHTTPデータ・ストリームに対応するク ライアント・ベース・キャッシュ項目が存在するかどうかを判断する。このCG I要求の問い合わせは、ウェブ・ブラウザ発信通信のURLをクライアント・ベ ース・キャッシュに格納されているURLと比較することによって行うことがで きる。 クライアント・ベース・キャッシュは、所与のURLにつ いてウェブ・ブラウザ10に供給するクライアント側インタセプト・モジュール 30が受信した最初のHTTPデータ・ストリームを格納することによって初期 設定することができる。このベース・キャッシュ項目は、ウェブ・ブラウザ10 の多くのインスタンスまたはセッションにわたって維持することができる。クラ イアント・ベース・キャッシュ項目は、第7図、第8図、第9図、および第10 図に示すように更新することができる。ウェブ・ブラウザ発信通信のURLに対 応するクライアント・ベース・キャッシュ項目が存在する場合、第7図のブロッ ク211に示すように、外部通信リンク35を介してサーバ側インタセプト・モ ジュール40に送るCRCが、クライアント・ベース・キャッシュ項目のCRC に等しく設定される。クライアント・ベース・キャッシュ項目がない場合、第7 図のブロック210から「No」経路をとり、外部通信リンク35を介してサー バ側インタセプト・モジュール40に送る要求のCRCがナルにされる。この操 作は第7図のブロック212に示されている。 ブロック213に、CGI要求を外部通信リンクを介してサーバ側インタセプ ト・モジュール40に送る操作を示す。ブロック213に示すように、クライア ント側インタセプト・モジュール30がHTTP要求と要求CRCを送る。要求 CRCは、CGI要求のURLのクライアント・ベース・キャッシュ項目が存在 しない場合にはナルに設定されており、クライアント・ベース・キャッシュ項目 が存在する場合には その項目のCRCに設定されている。したがって、クライアント側インタセプト ・モジュールは、CGI要求をクライアント/サーバ固有プロトコルに変換し、 そのクライアント/サーバ固有通信を外部通信リンクを介して送信して、サーバ 側インタセプト・モジュール40が受信するようにしたことになる。 CGI要求を受け取るときのサーバ側インタセプト・モジュールの動作を第9 図に示す。サーバ側インタセプト・モジュール40によるCGI要求の受信がブ ロック220に示されている。サーバ側インタセプト・モジュール40はCGI 要求を受け取ると、CRC値とHTTP要求のコピーを保存する。ブロック22 1に示すように、サーバ側インタセプト・モジュール40はHTTP要求をウェ ブ・サーバ20に渡す。 第10図のブロック230に示すように、サーバ側インタセプト・モジュール 40がウェブ・ブラウザ発信通信またはCGI要求に対応するHTTP要求に対 する応答を受け取るとき、サーバ側インタセプト・モジュール40はこの応答を HTTPデータ・ストリームとして受け取る。ブロック230に示すように、サ ーバ側インタセプト・モジュール40は、HTTPデータ・ストリームを保存し 、ウェブ・サーバ20から受け取ったHTTPデータ・ストリームのCRC値を 計算する。また、サーバ側インタセプト・モジュール40は、差分値をナルにし て差分データを初期設定する。次に、ブロ ック235に示すように、サーバ側インタセプト・モジュールは、ウェブ・サー バ発信通信として受け取った応答がCGI要求に対する応答であるかどうかを判 断する。答えが否定の場合、第10図のブロック235から「No」経路をとり 、ブロック236の操作を実行して、HTTPデータ・ストリームがクライアン ト側インタセプト・モジュールに送る。ブロック236に示すように、この操作 には第3図ないし第6図で説明したキャッシング操作が必要な場合がある。ブロ ック230で受け取った応答がCGIに対する応答の場合、ブロック235の「 Yes」経路をとり、サーバ側インタセプト・モジュールは次に、ブロック24 0に示すように、CGI応答のサーバ・ベース・キャッシュ項目が存在するかど うかを判断する。 サーバ側インタセプト・モジュール40がCGI要求に対する応答を初めて受 け取ったとき、サーバ・ベース・キャッシュ項目を作成することができる。この 場合、ブロック240に示す条件の結果によって、ブロック240から「No」 経路がとられる。次に、サーバ側インタセプト・モジュール40は、CGIのU RLと、CGI要求に対する応答のHTTPデータ・ストリームと、HTTPデ ータ・ストリームのCRCとを格納することによって、サーバ・ベース・キャッ シュ項目を作成する。この操作をブロック241に示す。第3図ないし第6図で 説明したコヒーレント・キャッシュとの互換性を持たせるために、サーバ・ベー ス・キャッシュ項目 にはSDTも組み込むことができる。本明細書では、サーバCGIベース書式と いう用語を使用して、ウェブ・ブラウザ10から受け取ったCGI要求に対応す るサーバ・ベース・キャッシュ項目を指す。 CGI要求に対応するサーバ・ベース・キャッシュ項目がある場合、ブロック 240の「Yes」経路がとられる。サーバ側インタセプト・モジュールはサー バ・ベース・キャッシュ項目のCRCを、ウェブ・サーバ20から受け取った応 答のCRCと比較する。これらの操作を第10図のブロック245に示す。CR Cが同じ場合、サーバ側インタセプト・モジュールは、サーバ・ベース・キャッ シュ項目のCRCがクライアント・ベース・キャッシュ項目のCRCに対応する かどうかを判断する。この2つのCRC値が同じ場合、クライアント・ベース・ キャッシュ項目と、サーバ・ベース・キャッシュ項目と、ウェブ・サーバ20か ら受け取った応答のすべてがHTTPデータ・ストリームに入れられる。サーバ ・ベース・キャッシュ項目とクライアント・ベース・キャッシュ項目との比較を ブロック250に示す。 2つのベース・キャッシュ項目が同じ場合、サーバ側インタセプト・モジュー ルはベース・キャッシュ項目をクライアント側インタセプト・モジュール30に 送る必要がなく、したがって、ブロック251に示すように、クライアント側イ ンタセプト・モジュール30に送るHTTPデータ・ストリーム・データをナル にする。次に、ブロック252に示すよ うに、サーバ側インタセプト・モジュール40は、CGI要求に対応するサーバ ・ベース・キャッシュに格納されているHTTPデータ・ストリームのCRCと 、ナルにしたHTTPデータ・ストリームと、ナルにした差分データとを送信し て、CGI要求がクライアント・ベース・キャッシュ項目と同じであったことを 示すことによって、ウェブ・サーバ20から受け取ったHTTPデータ・ストリ ームをクライアント/サーバ固有通信プロトコルに変換する。 ブロック245に戻って、CGI要求に対応するサーバ・ベース・キャッシュ 項目のCRCが、ウェブ・ブラウザによって発信されたCGI要求に応答してウ ェブ・サーバから受け取った応答のCRCと異なる場合、ブロック245から「 No」経路がとられる。次に、サーバ側インタセプト・モジュール40はブロッ ク246に示す操作を行う。サーバ側インタセプト・モジュール40は、インタ セプトしたCGI応答を、インタセプトしたCGIに対応するサーバ・ベース・ キャッシュ項目すなわちサーバCGIベース書式と比較する。このインタセプト したCGI応答とサーバCGIベース書式との比較によって、インタセプトした CGI応答とサーバCGIベース書式との差分に対応するCGI差分データが得 られる。 差分計算は、ベース書式と修正済み書式との間の差分を求める当業者に周知の 任意の方法で行うことができる。本発明で使用するのに適した差分計算の一方法 は、コピーターズ (Coppieters)による″Cross-Platform Binary Diff″(Dr.Dobb's Journal 1995年5月号32〜36ページ)に記載されており、その開示は参照により 、その全部が記載されているかのように本明細書に組み込まれる。差分データを 求める際に使用することができるその他の方法には、″IBM Technical Disclosu re Bulletin(Vol.22,No.8A、1980年1月)に記載されている方法が含まれ 、これも参照によりその全部が記載されているかのように本明細書に組み込まれ る。次に、ブロック247に示すように、サーバ側インタセプト・モジュール4 0はサーバCGIベース書式が更新を必要とするかどうかを判断する。この判断 は、インタセプトされたCGI応答とサーバCGIベース書式との平均差分デー タが所定のしきい値を超えているかどうかを判断することによって行うことがで きる。CGI要求に対応するサーバ・ベース・キャッシュ項目を更新する必要が あるかどうかを判断する他の方法には、第3図ないし第6図で説明したような時 間コヒーレンシ方式や、ベース変更を行って新しいベース・キャッシュ項目を作 成すればシステム・パフォーマンスが向上するほど差分データが増加したかどう かを判断する当業者に周知のその他の方法が含まれる。 サーバのベース変更計算が不要な場合、ブロック247から「No」経路がと られ、サーバ側インタセプト・モジュール40はブロック250の操作を行って 、クライアント・ベース・キャッシュ項目のCRCがサーバ・ベース・キャッシ ュ項目のCRCと同じかどうか、またはサーバCGIベース書式が、ウェブ・ブ ラウザ発信通信のその特定のCGI要求に対応するサーバとクライアントのベー ス・キャッシュ項目であるクライアントCGIベース書式と同じかどうかを判断 する。ベース書式が同じ場合、クライアントはベース変更を行う必要がなく、ブ ロック251に示すようにHTTPデータ・ストリーム情報がナルにされる。次 に、サーバ側インタセプト・モジュール40は、CGI要求に対応するサーバ・ ベース・キャッシュ項目のCRC(すなわちサーバCGIベース書式のCRC) を送り、ベース・データに対応するナルにしたHTTPデータ・ストリームを送 り、ブロック246で求めた差分データを送ることによって、クライアント側イ ンタセプト・モジュール30に差分応答を送る。これらの操作は第10図のブロ ック252として示されている。 サーバ側インタセプト・モジュール40が、クライアントCGIベース書式と サーバCGIベース書式のCRSが同じでないと判断した場合、クライアントの ベース変更計算を行う必要がある。クライアントのベース変更操作は、クライア ント側インタセプト・モジュール30にサーバCGIベース書式を送るステップ を含む。この操作を行うために、サーバ側インタセプト・モジュールはクライア ント側インタセプト・モジュール30に送るHTTPデータ・ストリーム・デー タを、サーバCGIベース書式と等しく設定する。この操作をブロック253に 示す。次に、サーバ側インタセプト・モ ジュール40は、ブロック252に示すように、サーバCGIベース書式のCR Cと、サーバCGIベース書式に対応するHTTPデータ・ストリーム・データ を送信し、CGIベース書式とウェブ・サーバから受け取った応答との差分デー タを送信することによって、ウェブ・サーバから受け取ったHTTPデータ・ス トリームをクライアント/サーバ固有プロトコルに変換する。次にこの情報を外 部通信リンク35を介してクライアント側インタセプト・モジュール30に送る 。 ブロック247に戻って、サーバのベース変更が必要な場合、ブロック247 から「Yes」経路がとられる。ブロック248に示すように、サーバ側インタ セプト・モジュールは、ウェブ・サーバから受け取ったHTTPデータ・ストリ ームを使用してブラウザ発信通信に対応するサーバ・ベース・キャッシュを更新 する。応答のCRCも更新され、CGI差分データがナルにされる。次に、サー バ側インタセプト・モジュールは、ブロック250に示すように新しいサーバ側 キャッシュ項目のCRCを比較し、前述のようにこの転送を完了する。 サーバ側インタセプト・モジュール40から応答を受け取ったときのクライア ント側インタセプト・モジュールの操作を第8図に示す。クライアント側インタ セプト・モジュール30によるサーバ側インタセプト・モジュール40からの応 答の受信は、ブロック260に示されている。ブロック265に示すように、ク ライアント側インタセプト・モジュール 30は、応答がCGI要求に対する応答かどうかを判断する。応答がCGI要求 に対する応答ではない場合、クライアント側インタセプト・モジュールはブロッ ク267の操作を行う。この操作には、第3図ないし第6図に示すキャッシュ操 作を組み込むことができる。しかし、応答がCGI要求に対する応答の場合、ブ ロック265から「Yes」経路がとられる。クライアント側インタセプト・モ ジュール30は、外部通信リンクを介して送信されたクライアント/サーバ固有 データ・ストリームから入手した、HTTPデータ・ストリーム・データと、差 分データと、CRCとを保管する。これらの操作は第8図のブロック266に示 されている。 次に、クライアント側インタセプト・モジュール30は、CGIベース書式を 含むインタセプトされたCGI要求に対応するクライアント・ベース・キャッシ ュ項目が存在するかどうかを判断する。この問い合わせはブロック270に示さ れており、HTTP要求またはHTTP応答のURLを調べることによって行う ことができる。クライアントCGIベース書式が存在する場合、ブロック270 から「Yes」経路がとられる。次に、ブロック275に示すように、クライア ント側インタセプト・モジュール30は外部通信リンクを介して受け取ったCR Cを、クライアントCGIベース書式のCRCと比較する。CRCが異なる場合 、ブロック275から「No」経路がとられ、クライアントは、ウェブ・ブラウ ザ発信通信にのCGI要求のURLに対応するクライアント ・ベース・キャッシュ項目を、外部通信リンク35を介してサーバ側インタセプ ト・モジュール40から受け取ったHTTPデータ・ストリーム・データに置き 換えてCGIベース書式を更新することによって、ベース変更を行う。クライア ント・ベース・キャッシュ項目も、HTTPデータ・ストリームのCRCを基準 にして更新される。これらの操作は第8図のブロック276に示されている。 外部通信リンク35を介して受け取ったCRCがGGIベース書式と同じ場合 、サーバ側インタセプタ・モジュール・サーバCGIベース書式は、クライアン ト側インタセプト・モジュール・クライアントCGIベース書式と同じであり、 ブロック275の「Yes」経路がとられる。 ベース書式が同じであるかクライアントをベース変更するかを問わず、クライ アント側インタセプタ・モジュール30によってブロック277に示す操作が行 われる。ブロック277は、クライアント側インタセプタ・モジュール30が、 クライアントCGIベース書式を外部通信リンク35を介して受け取ったCGI 差分データと比較して、インタセプトしたCGI応答に対応するHTTPデータ ・ストリームを作成することによって、外部通信リンク35を介して受け取った クライアント/サーバ固有データ・ストリームから、ウェブ・サーバ20から受 け取った通信に対応するHTTPデータ・ストリームを再構築する操作を示す。 ブロック278に示すように、この応答は次にHTTPデータ・ストリームとし てウェブ・ブラウザ10に供給される。 クライアントにCGI要求のURLに対応するCGIベース書式が存在しない 場合、第8図のブロック270から「No」経路がとられる。ブロック271に 示すように、クライアント側インタセプト・モジュール30は、URLと、サー バ側インタセプト・モジュール40から外部通信リンクを介して受信したHTT Pデータ・ストリームのCRCと、実HTTPデータ・ストリーム・データとを 格納することによってCGI要求のURLに対応するクライアント・ベース・キ ャッシュ項目を作成する。この情報を格納することによって、インタセプトされ たCGI要求に対応するクライアント・ベース・キャッシュ項目が作成され、し たがってクライアントCGIベース書式が作成される。次に、クライアント側イ ンタセプト・モジュールは、クライアントCGIベース書式をCGI差分データ (ナル化されていることがある)と結合またはマージすることによって、HTT Pデータ・ストリームを再構築することでブロック277の操作を行う。 本発明の差分計算技法は非CGIデータにも適用可能である。その場合、サー バ側インタセプト・モジュール40は、ウェブ・サーバに接続されているウェブ ・ブラウザのクライアント側インタセプト・モジュールが異なるベース書式を持 っている可能性を見込んで、複数の世代のサーバ・ベース・キャッシュ項目を維 持する必要がある。その場合、サーバ側インタセプト・モジュールは、一致する ものが得られるまで、 クライアント側インタセプト・モジュールから受け取ったCRCを各世代のサー バ・ベース書式のCRCと比較する。その際、サーバ側インタセプト・モジュー ル40は、任意選択でクライアント側インタセプト・モジュール30のベース変 更を行うか、または単にクライアント側インタセプト・モジュール30に差分デ ータを供給することができる。したがって、本明細書でCGI要求に関して説明 した差分計算方法は、どのようなHTTP要求および応答にも等しく適用可能で ある。 複数の世代のベース書式を維持する上述のシステムでは、非CGI要求につい て差分計算を使用することができるが、この方法はメモリまたは格納域を多用し 、前述のキャッシング機能が十分に活用されない。メモリまたは格納域必要量を 少なくし、前述のキャッシング方法を活用するために、非CGI要求に差分計算 を使用する以下の好ましい方法を使用することできる。この好ましい実施態様で は、サーバ側インタセプト・モジュールは、要求に対応するサーバ・ベース書式 とウェブ・サーバからの応答のHTTPデータ・ストリームとの差分を計算する 。次に、ベース書式をウェブ・サーバからの新しい応答で置き換えることによっ て、サーバ・ベース書式を更新する。これにはベース書式のCRCの更新も含ま れる。しかし、古いCRCを廃棄するのではなく、前のベース書式のCRCは差 分データとして格納する。次に、前の世代の差分データとCRCを、非CGI要 求に対応するクライ アント・ベースのCRCに基づいて選択的にクライアント側インタセプト・モジ ュールに送る。 非CGI差分計算方法の一例として、サーバ側インタセプト・モジュールが非 CGI要求を受け取った場合、その要求には非CGI要求のURLに対応するク ライアント側インタセプト・モジュールにあるベース書式のCRCも付随してい ることになる。サーバ側インタセプト・モジュールは、ウェブ・サーバから応答 を受け取ると、その応答のCRCを計算する。次に、サーバ側インタセプト・モ ジュールは応答とURLのサーバ・ベース書式との差分を計算し、その差分デー タを保管する。サーバ側インタセプト・モジュールは、応答データを使用してサ ーバ・ベース書式を更新し、前のベース書式のCRCと、応答と古いベース書式 との間の差分データとをアーカイブする。次に、サーバ側インタセプト・モジュ ールは、クライアント・ベース書式のCRCをサーバ・ベース書式のCRCおよ び格納またはアーカイブされているCRCと比較し、一致しているものがあるか どうかを判断する。一致が見つからない場合、その応答は単にクライアント側イ ンタセプト・モジュールに送られる。 一致が見つかった場合、一致するCRCに対応する差分データと、それ以降の 、現行差分データを含む現行差分データまでの差分データがクライアント側イン タセプト・モジュールに送られる。クライアント側インタセプト・モジュールは 、その差分データをクライアント・ベース書式に適用して応答 を再構築する。したがって、3世代古いベース書式のCRCについてCRC一致 があった場合、3セットの差分データがクライアント側インタセプト・モジュー ルに送られることになり、3セットの連続した差分データをクライアント・ベー ス書式に適用することによって、応答の構築が行われることになる。しかし、応 答を再構築するのに必要な差分データ・セットの数が多すぎるかまたは差分デー タ・セットの大きさが大き過ぎて、実応答を送信した方がデータ転送が少なくて 済む場合、サーバ側インタセプト・モジュールは応答自体を送信することができ る。いずれにしても、応答の再構築または受信の後、クライアント側インタセプ ト・モジュールは、要求のURLのクライアント・ベース書式を応答データによ って更新し、CRCを要求のCRCで更新する。クライアント・ベース書式は特 定のURLについて応答を受信するたびに更新されるため、非CGI要求に対し て差分計算を使用した場合、上述のクライアント・キャッシュをクライアント・ ベース書式のキャッシュとして使用することができ、それによってクライアント ・ベース書式の別個のキャッシュを不要にすることができる。 本発明の他の態様では、HTTPなどのステートレス通信プロトコルの冗長性 に基づいて、通信をさらに節約することができる。そのようなプロトコルでは、 クライアントは通信を開始するたびにクライアント自体に関する情報をサーバに 送信する。同様に、サーバは応答を出すたびにサーバ自体に 関する特定の情報をクライアントに伝達する。 本発明の一実施例では、第1のコンピュータ5は第2のコンピュータ6に、第 1のコンピュータの事前定義特性に対応するコンピュータ固有情報を伝達する。 第2のコンピュータはこのコンピュータ固有情報を格納する。次に、第1のコン ピュータはそれ以降のウェブ・ブラウザ発信通信からそのコンピュータ固有情報 を除去してから外部通信リンク35で送信する。第2のコンピュータ6は、外部 通信リンク35を介して受信したそれ以降の通信と格納しているコンピュータ固 有情報とを組み合わせてHTTPデータ・ストリームを作成することによって、 元のウェブ・ブラウザ発信通信を再構築する。 ウェブ・ブラウザによって発信される通信からコンピュータ固有情報を除去す るほかに、このコンピュータ固有情報をウェブ・サーバによって発信される通信 からも除去することができる。その場合、第2図の第2のコンピュータ6は第1 のコンピュータ5に外部通信リンク35を介して、第2のコンピュータ6の事前 定義特性に対応するコンピュータ固有情報を供給する。第1のコンピュータ5は そのコンピュータ固有情報を格納して、サーバ・ヘッダ情報を備える。その後の 通信の時には、第2のコンピュータ6はウェブ・サーバ発信通信からコンピュー タ固有情報を除去し、ウェブ・サーバ発信通信の残りの部分を外部通信リンク3 5で送信する。第1のコンピュータ5は外部通信リンクでその通信を受信し、サ ーバ・ヘッダ情報を外部通信リンクを介して受信したクライアント/サーバ固有 データ・ストリームと結合してHTTPデータ・ストリームを作成することによ って、元のウェブ・サーバ発信通信を再構築する。どちらの場合も、操作が第1 のコンピュータ5と第2のコンピュータ6のどちらで行われるかに応じて、コン ピュータ固有情報を取り除き、その情報を格納してサーバ・ヘッダ情報またはク ライアント・ヘッダ情報を作成する操作がクライアント側インタセプト・モジュ ール30またはサーバ側インタセプト・モジュール40によって行われる。 本発明の一実施例では、ウェブ・ブラウザ10は伝送制御プロトコル/インタ ーネット・プロトコル(TCP/IP)を使用してクライアント側インタセプト ・モジュール30と通信する。TCPは、外部通信リンク35を介したクライア ント側インタセプト・モジュール30とサーバ側インタセプト・モジュール40 との間の通信にも使用することができる。最後に、TCPはサーバ側インタセプ ト・モジュール40とウェブ・サーバ20との間の通信にも使用することができ る。TCPは本発明のシステムを構成する様々な構成要素間の通信に使用するこ とができるが、HTTPプロトコルは外部通信リンクを介した通信にとって最も 効率的な手段を提供するものではない。外部通信リンク35のパフォーマンスを 向上させるために、本発明の一実施例は本明細書で「仮想ソケット」と呼ぶもの を作成する。これは、ウェブ・ブラウザとク ライアント側インタセプト・モジュール30の間の接続と、サーバ側インタセプ ト・モジュール40とウェブ・サーバ20との間の接続に使用される。これらの 仮想ソケットの動作について、第11図ないし第17図を参照しながら以下に説 明する。 第11図は、仮想ソケットを使用する本発明の1つの可能な実施態様を示すブ ロック図である。第11図に示すように、第1のコンピュータ5と第2のコンピ ュータ6は外部通信リンク35を介して接続されている。ウェブ・ブラウザ10 は、ウェブ・ブラウザ10をクライアント側インタセプト・モジュール30と接 続する複数の実ソケットを有する。第11図に示すように、第1の実ソケットは ウェブ・ブラウザ10上に65aとして図示され、それに対応するソケットはク ライアント側インタセプト・モジュール30上の65bである。この第1の実ソ ケットは、それを介してウェブ・ブラウザ10がクライアント側インタセプト・ モジュール30に対してさらに接続を要求するTCPソケットである。 ウェブ・ブラウザ10が新しいTCP接続を要求すると、実ソケット65aを 介して通信が行われ、それが実ソケット65bによって受信される。次にクライ アント側インタセプト・モジュール30は、ウェブ・ブラウザ10との通信のた めに別の実ソケットを作成する。第11図に示すように、ウェブ・ブラウザ10 上で複数の実ソケットが作成され、それに対応する実ソケットがクライアント側 インタセプト・モジ ュール30上で作成される。これらの実ソケットは、ウェブ・ブラウザ10上の 60a〜64aおよびクライアント側インタセプト・モジュール30上の60b 〜64bとして図示されている。これらの実ソケットは、ウェブ・ブラウザ10 がそれを介してクライアント側インタセプト・モジュール30と通信するための 手段である。実ソケット60a〜64aおよび60b〜64bを作成した後、こ れらのソケットを介した通信を多重化して実ソケット36aに送り、実ソケット 36aはクライアント側インタセプト・モジュール30に外部通信リンク35へ のアクセスを提供する。実ソケット36aおよび36bはコンピュータ5の実ソ ケット37aを介してコンピュータ6の実ソケット37bに要求を送るときに作 成される。実ソケット37bが接続要求を受け取ると、実ソケット36aおよび 36bが作成される。ソケット37aおよび37bは、クライアント側インタセ プト・モジュールとサーバ側インタセプト・モジュールとの間の通信のための最 初の実ソケットとして機能し、ソケット36aおよび36bによって示されてい るこの2つのモジュールの間の接続を確立するためにのみ使用することができる 。これらの実ソケットのそれぞれは標準TCP/IPプロトコルの下で動作する 。第2のコンピュータ6が外部通信リンク35を介して通信を受信するとき、そ れらの通信は実ソケット36bで受信される。次にサーバ側インタセプト・モジ ュール40は、ソケット36bで受信した通信を多重化解除し、それらをウェブ ・ サーバ20に送信するために適切なソケットに供給する。したがって、たとえば 、特定のURLに対して情報を要求するためのソケット60aからソケット60 bまでの通信は、ソケット36a上に多重化され、ソケット36bによって受信 され、サーバ側インタセプト・モジュール40によって多重化解除され、ソケッ ト60cからウェブ・サーバ20上のソケット60dに送られることになる。同 様に、ソケット61aを介して行われる通信はソケット61bによって受信され 、クライアント側インタセプト・モジュール30によって多重化され、ソケット 36aからソケット36bに送られ、そこでサーバ側インタセプト・モジュール 40がその通信を多重化解除してソケット61cからソケット61dに送る。し たがって、ソケット60aと60b、61aと61b、62aと62b、63a と63b、64aと64bを介した通信は、サーバ側インタセプト・モジュール 40とウェブ・サーバ20との間のソケット60cと60d、61cと61d、 62cと62d、63cと63d、および64cと64dのうちのそれぞれの対 応するソケットを介して送信される。 同様に、ウェブ・サーバ20によるウェブ・ブラウザ10からの要求に対する 応答も、ウェブ・サーバ20をサーバ側インタセプト・モジュール40に接続す るソケットを介して送られ、外部通信リンク35を介してクライアント側インタ セプト・モジュール30に送られた後、ウェブ・ブラウザ10に送られる。した がって、たとえばウェブ・サーバ20に よって発信された応答はソケット60dから60cを介して送られ、サーバ側イ ンタセプト・モジュール40によってソケット36bに多重化され、そこから外 部通信リンク35を介してソケット36aに送られる。次にクライアント側イン タセプト・モジュール30がその通信を多重化解除し、それをソケット60bに 送り、それがウェブ・ブラウザ10上のソケット60aに送られる。ウェブ・ブ ラウザ10またはウェブ・サーバ20が使用する各ソケットについて同様の通信 経路が確立される。当業者ならわかるように、本発明についてウェブ・ブラウザ 10とウェブ・サーバ20との間の4ソケット通信に関して説明したが、ウェブ ・ブラウザ10とウェブ・サーバ20との間の通信アクセスを実現するために任 意の数のソケットを開くことができる。 第12図は、クライアント側インタセプト・モジュール30とサーバ側インタ セプト・モジュール40における仮想ソケット・システムの実施例を示すブロッ ク図である。これらのモジュールの外部で、クライアント側インタセプト・モジ ュール30とウェブ・ブラウザ10およびサーバ側インタセプト・モジュール4 0とウェブ・サーバ20の間の実ソケットが、通常のTCP/IPソケットとし て機能する。したがって、仮想ソケットの使用はウェブ・ブラウザ10およびウ ェブ・サーバ20には透過である。 第12図のブロック図と第13図ないし第17図の流れ図を参照しながら本発 明の特定の実施例について説明する。第 13図は、第12図にブロック68として図示されているソケット・マネージャ のフローチャートである。第13図を参照すると、ブロック300はクライアン ト側インタセプト・モジュール30の実ソケット・マネージャ68の作成を示し ている。実ソケット・マネージャ68が作成された後、実ソケット・マネージャ は第12図にソケット65bとして図示されている第1の実ソケットを作成する 。この第1の実ソケットの作成は第13図のブロック301として示されている 。第1の実ソケット65bを作成した後、クライアント側インタセプト・モジュ ール30内にあるソケット・マネージャ68(本明細書ではクライアント・ソケ ット・マネージャとも呼ぶ)は、第13図のブロック302に示すように、第1 の実ソケット65b上での事象を待つ。第1の実ソケット65b上で事象を受け 取ると、第13図のブロック305に示すように実ソケット・マネージャ68は その事象を検査し、その検査に基づいて5通りの経路のうちの1つをとる。 第1の実ソケット65bで受信した通信要求に応答して実ソケットが作成され た場合は、第13図のブロック305から306までの経路に示すように、実ソ ケット・マネージャ68はその実ソケットを実事象リストに追加する。次に、実 ソケット・マネージャはブロック307に示すようにシンプレックス仮想ソケッ トを作成する。クライアント側インタセプト・モジュールの場合、実ソケット・ マネージャは、第13図のブロック308に示すように、作成された仮想ソケッ トについてクライアント側インタセプト・モジュールの機能を実行するアプリケ ーション機能を開始する。 本明細書では、「シンプレックス・ソケット」または「シンプレックス仮想ソ ケット」という用語は、単一のソケットまたは単一のアプリケーションに直接接 続するソケットを指す。本明細書では、「マルチプレックス・ソケット」とは他 の複数のソケットに接続するソケットを指す。したがって、マルチプレックス・ ソケットは、多重化または多重化解除機能を実行し、シンプレックス・ソケット は1対1接続を行う。したがって、たとえば、第13図のブロック306から3 08までの機能を実行する際、クライアント・ソケット・マネージャ68は第1 の実ソケット65bが受信した第1の接続要求に応答して、実ソケット60b、 シンプレックス仮想ソケット70を作成し、アプリケーション80のクライアン ト側インタセプト機能を開始することになる。実ソケットが作成されたその後の 事象の場合も同様に、実ソケット・マネージャは実ソケット61b、62b、6 3b、または64bとシンプレックス仮想ソケット71、72、73、または7 4を作成し、第12図でブロック81、82、83、または84として図示され ている、作成された実ソケットおよび仮想ソケットに対応するCSI機能を開始 する。 以下に、クライアント側インタセプト機能の操作について、第12図に示す実 ソケット60bとシンプレックス仮想ソケット70とクライアント側インタセプ ト機能80とを参照し ながら説明する。第14図のブロック325はクライアント側インタセプト機能 80の作成を示している。作成されると、クライアント側インタセプト機能80 はブロック326に示すようにシンプレックス仮想ソケット70上の事象を待つ 。この待機操作は、第16−4図に示す仮想選択機能を実行することによって行 われる。事象を受け取ると、ブロック330に示すようにその事象が検査される 。事象が仮想ソケット閉鎖である場合、第14図のブロック349に示すように クライアント側インタセプト機能80はシンプレックス仮想ソケット70を削除 し、ブロック350に示すように終了する。 事象がデータの受信である場合、ブロック330からブロック331への経路 がとられ、クライアント側インタセプト機能80は第16−3図を参照しながら 説明する仮想受信操作を実行することによって、シンプレックス仮想ソケット7 0からブラウザ発信通信を受け取る。次に、クライアント側インタセプト機能は 前述のクライアント側インタセプト・モジュールの機能(たとえば第3図および 第7図を参照)を実行する。これはブロック332に示されている。次にクライ アント側インタセプト機能80は、クライアント側インタセプト・モジュール3 0内の実ソケット36aに接続されるマルチプレックス仮想ソケット90を作成 する。実ソケット36aはサーバ側インタセプト・モジュール40上の実ソケッ ト36bに接続される。マルチプレックス仮想ソケットの作成は、第14図のブ ロック333に示されており、本明細書 で第16−1図を参照しながら説明する仮想作成操作を実行することによって行 われる。ブロック334は、ウェブ・ブラウザ発信通信のためにクライアント側 インタセプト機能80が実行された後で、実ソケット60bとシンプレックス仮 想ソケット70を介してウェブ・ブラウザから受け取った情報を送信する操作を 示す。この通信は、第16−2図を参照しながら説明する仮想送信操作を実行す ることによってマルチプレックス仮想ソケット90の待ち行列に入れられる。ク ライアント側インタセプト機能80は、要求をマルチプレックス仮想ソケット9 0の待ち行列に入れた後、第14図のブロック335に示すようにマルチプレッ クス仮想ソケット90の待ち行列に入れられているデータをフラッシュし、次に ブロック336に示すようにマルチプレックス仮想ソケット上の事象を待つ。仮 想フラッシュ機能は、第17−1図を参照しながら説明する仮想フラッシュ操作 を実行することによって行われ、マルチプレックス仮想ソケット待ち行列からデ ータを取り出してそのデータを実ソケット36aに供給する。待機機能は、第1 6−4図に示す仮想選択機能を実行することによって行うことができる。この時 点で、クライアント側インタセプト・モジュールはウェブ・ブラウザ発信通信を インタセプトし、その通信を外部通信リンク35を介してサーバ側インタセプト ・モジュールに送信し終わったことになる。 第13図に戻ると、サーバ側インタセプト・モジュール40またはクライアン ト側インタセプト・モジュール30にお けるソケット・マネージャのフローチャートが示されている。第12図のブロッ ク69に示すように、サーバ側インタセプト・モジュール内の実ソケット・マネ ージャ、すなわちサーバ・ソケット・マネージャは、ブロック68に示すクライ アント・ソケット・マネージャと同じ機能を実行する。ブロック301に示すよ うに、第1の実ソケットを作成する際、サーバ側インタセプト・モジュール30 は、サーバ側インタセプト・モジュール40に関連づけられたクライアント側イ ンタセプト・モジュール30からのソケットの要求を受け取る「周知のポート」 37bを作成する。サーバ側インタセプト・モジュール40の実ソケット36b 上で実事象が発生すると、ブロック305に示すようにその事象が検査される。 この場合、この事象は実ソケット36aからのデータの受信であり、したがって 第13図のブロック305からブロック320までの経路がとられる。実ソケッ ト36b上で受信したデータが検査され、この例ではデータはクライアント側イ ンタセプト・モジュールによって送信されたウェブ・ブラウザ発信通信であるた め、サーバ側インタセプト・モジュール40において新しい仮想ソケットを作成 しなければならない。したがって、第13図のブロック320からブロック32 1への経路がとられる。次にサーバ・ソケット・マネージャ69は、第13図の ブロック321、ブロック322、ブロック323、およびブロック324に示 す操作を行う。サーバ・ソケット・マネージャ69はブロック321に示すよう に マルチプレックス仮想ソケット95を作成し、ブロック322に示すようにマル チプレックス・ソケット活動タイマをキャンセルし、第13図のブロック323 と第12図のブロック85に示すサーバ側インタセプト機能のアプリケーション を開始する。実ソケット36bで受け取ったデータは次にマルチプレックス仮想 ソケット95の待ち行列に入れられ、仮想事象が通知される。 ブロック323に示すサーバ側インタセプト機能の作成は、第15図のブロッ ク360に示されている。サーバ側インタセプト機能85の作成後、この機能は 、クライアント側インタセプト・モジュール30から送信され、ウェブ・ブラウ ザ発信通信に対応するデータを、マルチプレックス仮想ソケット95から受け取 る。この操作は第15図のブロック361に示されている。クライアント側イン タセプト・モジュールからデータを受け取った後、サーバ側インタセプト機能8 5は、そのデータを、サーバ側インタセプト・モジュールについて前述したよう に処理する。このサーバ側機能の実行はブロック362に示されている(たとえ ば第5図および第9図を参照)。情報を処理した後、サーバ側インタセプト機能 85は仮想作成を行うことによってシンプレックス仮想ソケット75を作成する 。この操作については本明細書で第16−1図を参照しながら説明する。この操 作は第15図のブロック363に示されている。次に、サーバ側インタセプト機 能85は、仮想送信を行うことによって、ブロック364に示 すようにウェブ・ブラウザ発信通信をシンプレックス仮想ソケット75に送る。 仮想送信の操作については本明細書で第16−2図を参照しながら説明する。次 に、サーバ側インタセプト機能85は、仮想フラッシュを行ってシンプレックス 仮想ソケット75の待ち行列に入っているデータをソケット60cにフラッシュ し、シンプレックス仮想ソケット75上の事象を待つ。仮想フラッシュ操作につ いては本明細書で第17−1図を参照しながら説明する。この送信操作とフラッ シュ操作は第15図のブロック364および365に示されている。待機操作は 、第16−4図で説明されている仮想選択機能を実行することによって行うこと ができる。サーバ側インタセプト機能85がシンプレックス仮想ソケット75を 作成したとき、対応する実ソケット60cも作成されている。サーバ側インタセ プト機能85は、ウェブ・ブラウザ発信通信をシンプレックス仮想ソケット75 に送信することによって、ウェブ・ブラウザ発信通信をウェブ・サーバに転送し た。 サーバ側インタセプト・モジュール40が実ソケット60c上でウェブ・サー バからの応答を受信すると、実事象が発生し、サーバ・ソケット・マネージャ6 9は第13図のブロック302を終了して、ブロック305に示すように実ソケ ット60c上で発生した事象を検査する。この事例の場合、これは既存の仮想ソ ケットのデータであり、第13図のブロック320からブロック324までの経 路がとられる。実ソケット60c上で受信したデータは仮想ソケット75の待ち 行列に入れられ、仮想事象が通知される。仮想事象が通知されると、サーバ側イ ンタセプト機能85は第15図のブロック366を終了し、ブロック370に示 すようにその事象を検査する。事象がソケット閉鎖である場合、エラー条件が発 生し、第15図のブロック375に示すように応答としてエラー・メッセージが 作成される。しかし、事象がデータの受信の場合は、ブロック370からブロッ ク371への経路をとり、サーバ側インタセプト機能85は、第16−3図を参 照しながら説明するように仮想受信を実行して、ブロック371に示すようにシ ンプレックス仮想ソケット75から応答を入手する。次にサーバ側インタセプト 機能85は、ブロック372に示し、第17−2図を参照しながら説明するよう に、シンプレックス仮想ソケット75の仮想閉鎖を実行し、サーバ側インタセプ ト・モジュールに関して前述し、ブロック373に示すように、その応答を処理 する(たとえば第6図および第10図を参照)。 第15図のブロック370の終了経路がブロック375へのエラー経路である かブロック371へのデータ経路であるかを問わず、ブロック374でシンプレ ックス仮想ソケット75が削除される。次にサーバ側インタセプト機能は、ブロ ック376に示すようにマルチプレックス仮想ソケット95への仮想送信操作を 行ってウェブ・サーバ発信通信をクライアント側インタセプト・モジュール30 に送信する。サーバ側インタセプト機能85は次に、仮想フラッシュ操作を行っ て、マルチプレックス仮想ソケット95の待ち行列に入っているデータをフラッ シュする。これらの操作はブロック377に示されている。次にサーバ側インタ セプト機能85は、第15図のブロック378に示すように仮想閉鎖操作を行っ てマルチプレックス仮想ソケット95を閉じる。最後に、サーバ側インタセプト 機能85は、ブロック379および380に示すようにマルチプレックス仮想ソ ケットを削除して終了する。 サーバ側インタセプト機能は、マルチプレックス仮想ソケット95への仮想送 信操作とフラッシュ操作を行う。これらの操作によって、実ソケット36a上で 事象がトリガされ、クライアント・ソケット・マネージャ68はブロック302 を終了し、ブロック305に示すように事象を検査する。これは実ソケット36 aでデータを受信し、第13図のブロック305からブロック320までの経路 がとられ、データがマルチプレックス仮想ソケット90の待ち行列に入れられる ためである。したがって、実ソケット36aが外部通信リンク35を介して実ソ ケット36bからウェブ・サーバ応答を受け取ると、その情報が多重化解除され 、マルチプレックス仮想ソケットに供給される。データの受信によって、第13 図のブロック324に示すように仮想事象が発生し、第14図のブロック336 が終了してクライアント側インタセプト機能80は第14図のブロック340に 示すようにその事象を検査することになる。 事象がソケット閉鎖応答である場合、第14図のブロック340からブロック 345への経路をとり、クライアント側インタセプト機能80はエラー・メッセ ージ応答を作成して第14図のブロック344に進む。この例の場合のように事 象がデータ受信の場合、第14図のブロック340からブロック341の経路を とり、クライアント側インタセプト機能80は仮想受信操作を行ってマルチプレ ックス仮想ソケット90から応答を受信する。この受信操作は第14図のブロッ ク341に示されている。マルチプレックス仮想ソケット90からデータを受信 した後、クライアント側インタセプト機能80はブロック342に示すように仮 想閉鎖操作を行ってマルチプレックス仮想ソケット90を閉じる。次にクライア ント側インタセプト機能80は、ブロック343に示すように、クライアント側 インタセプト・モジュールに関して前述したように応答を処理する(たとえば第 4図および第8図を参照)。 ブロック340を終了してどちらの経路をとる場合も、ブロック344の操作 が行われる。クライアント側インタセプト機能80は、ブロック344に示すよ うにマルチプレックス仮想ソケットを削除し、次にブロック346に示すように 仮想送信操作を行ってシンプレックス仮想ソケット70を介してブラウザに応答 を送信する。この仮想送信操作が完了すると、クライアント側インタセプト機能 80はブロック347に示すように仮想フラッシュ操作を行ってシンプレックス 仮想ソケットの待ち行列に入っているデータを実ソケット60bにフラッシュし 、次にブロック348に示すように仮想閉鎖操作を行ってシンプレックス仮想ソ ケットを閉じる。クライアント側インタセプト機能のシンプレックス仮想ソケッ トを閉じた後、第14図のブロック349および350に示すようにシンプレッ クス仮想ソケットが削除され、クライアント側インタセプト機能は終了する。 当業者ならわかるように、本発明についてシンプレックス仮想ソケットおよび マルチプレックス仮想ソケットとクライアント側インタセプト機能およびサーバ 側インタセプト機能の1つの特定のインスタンスに関して説明したが、単一のク ライアント側インタセプト・モジュールまたはサーバ側インタセプト・モジュー ル内でこれらの機能を複数作成することができる。したがって、本発明によるク ライアント側インタセプト・モジュールとサーバ側インタセプト・モジュールは 、クライアント側インタセプト・モジュール30とサーバ側インタセプト・モジ ュール40との間にTCP/IP接続を作成し、次に、そのTCP/IP接続を 維持しながらそのTCP/IP接続上で複数のウェブ・ブラウザ発信通信または ウェブ・サーバ発信通信を多重化することができる。 クライアント・ソケット・マネージャとサーバ・ソケット・マネージャの残り の機能は、第16−1図ないし第16−4図と第17−1図および第17−2図 を参照すれば最もよく理解できよう。これらの図では、第14図および第15図 のフローチャートに示されているように仮想作成、仮想送信、仮想受信、仮想選 択、仮想フラッシュ、または仮想閉鎖操作を実行するときに、クライアント側イ ンタセプト・モジュールおよびサーバ側インタセプト・モジュールによって行わ れる操作が説明されている。第14図のブロック333および第15図のブロッ ク363に示すような仮想作成操作を行う場合、第16−1図のブロック400 から始まる操作を行う。ブロック405に示すように、ソケット・マネージャは 、実ソケットが必要かどうかを判断する。作成操作によって既存の実ソケットに 接続するマルチプレックス仮想ソケットを作成する場合などのように、実ソケッ トがすでに存在する場合は、ブロック405から「No」経路をとり、ブロック 409に示すようにその仮想ソケットが実ソケットに接続される。しかし、実ソ ケットが必要な場合は、ブロック405から「Yes」経路をとる。ブロック4 06に示すように実ソケットを作成する。次に、第13図のブロック302に示 す監視のために、ブロック408に示すようにその実ソケットを事象リストに追 加する。実ソケットを作成し、接続を確立した後、ブロック409に示すように 仮想ソケットを実ソケットに接続し、ブロック410に示すように作成操作が完 了する。 第14図のブロック334および346または第15図のブロック364およ び376に示す仮想送信操作を行う場合、第16−2図のブロック420から始 まる操作が行われる。 ブロック427に示すようにデータが仮想ソケット待ち行列に加えられ、完了す ると、送信操作はブロック428に示すように終了する。 第14図のブロック331および341と第15図のブロック361および3 71に示す仮想受信操作は、第16−3図のブロック430から始まる操作を行 うことによって行われる。ブロック435に示すように、仮想ソケット待ち行列 を調べて仮想ソケット待ち行列に何かデータが入っているか判断する。仮想ソケ ット待ち行列にデータがある場合、ブロック435の「Yes」経路をとり、ブ ロック436に示すように受信操作を呼び出した機能にそのデータが返される。 仮想ソケット待ち行列にデータがなく、ソケットに閉鎖のマークが付けられてい ない場合、決定ブロック440の「No」経路をとり、ブロック441に示すよ うに何も返されない。しかし、待ち行列にデータがなく、ソケットに閉鎖のマー クが付けられている場合、ブロック440の「Yes」経路をとり、ブロック4 42に示すようにソケットに閉鎖のマークが付けられて、ブロック443に示す ように、受信を要求する操作にソケット閉鎖応答が返される。 第14図のブロック326および336と第15図のブロック366で行われ る仮想選択操作は、第16−4図のブロック445から始まる操作を実行するこ とによって行われる。ブロック446に示すように、まず、選択された仮想ソケ ットについてデータまたは仮想閉鎖操作が保留状態になってい ないかどうかを判断する。保留状態のデータまたは仮想閉鎖がない場合、ブロッ ク446の「No」経路をとり、プロセスはブロック447に示すように選択さ れた仮想ソケット上の仮想ソケットを待ち、そのような事象を受け取った後でブ ロック448に示すように終了する。選択された仮想ソケットについてデータま たは仮想閉鎖が保留状態になっている場合、仮想事象がすでに発生しており、ブ ロック446の「Yes」経路をとって、ブロック448に示すようにプロセス が終了する。 第14図のブロック335および347と第15図のブロック365および3 77で言及した仮想フラッシュ操作は、第17−1図のブロック450から始ま る操作を実行することによって行われる。仮想フラッシュ操作が呼び出されると 、決定ブロック455に示すように、フラッシュする仮想ソケット待ち行列にデ ータが入っているかどうかを調べる。仮想ソケット待ち行列にデータが入ってい ない場合、ブロック455の「No」経路が示すようにフラッシュ操作は単に終 了して呼出し側機能に戻る。しかし、待ち行列にデータが入っている場合、ブロ ック455の「Yes」経路をとり、ブロック460に示すようにその仮想ソケ ット待ち行列がマルチプレックス・ソケットのものであるかどうかを判断する。 マルチプレックス・ソケットである場合は、ブロック461に示すようにソケッ トの固有識別子と転送中のデータ量を示す3バイトから成るソケット・ヘッダが 実ソケット・バッファ に加えられる。マルチプレックス・ソケットであるかシンプレックス・ソケット であるかを問わず、いずれの場合もブロック462に示すように実ソケットのた めのデータが実ソケット・バッファに移される。実ソケット・バッファがいっぱ いの場合、ブロック465の「Yes」経路をとり、ブロック466に示すよう に実ソケット・バッファからデータが実ソケットに送られる。実バッファがいっ ぱいになっていない場合は、ブロック465の「No」経路をとる。次に、仮想 フラッシュ機能は、他のいずれかのマルチプレックス仮想ソケット待ち行列に実 ソケットに送るべき他のデータがあるかどうかを判断する。答えが肯定の場合、 ブロック470の「Yes」経路をとり、実ソケット・バッファ内のデータは、 他の仮想ソケット待ち行列の1つをフラッシュするために仮想フラッシュ操作が 再び呼び出されるまで送られない。他のデータがない場合、または他のマルチプ レックス仮想ソケットからデータを付加した後は、ブロック466の操作を行い 、実ソケットバッファ内のデータを実ソケットに送る。仮想フラッシュ操作を呼 び出した機能に対応する仮想ソケット待ち行列内のすべてのデータが実ソケット に送られた後、ブロック467に示すように仮想フラッシュ操作は終了する。 第14図のブロック342および348と第15図のブロック372および3 78に示す仮想閉鎖操作は、第17−2図のブロック480から始まる操作を実 行することによって行われる。仮想閉鎖操作が呼び出されると、まずブロック4 85に示すようにその仮想閉鎖がマルチプレックス仮想ソケットの閉鎖であるか どうかを判断する。マルチプレックス仮想ソケットである場合、ブロック485 の「Yes」経路をとり、仮想ソケット待ち行列に「閉鎖」操作標識が付加され る。仮想閉鎖がマルチプレックス仮想ソケットの閉鎖であるか否かを問わず、ブ ロック487に示すように仮想閉鎖操作によって仮想フラッシュ操作が呼び出さ れ、ブロック488に示すように実ソケットとの接続を断つ。次に、ブロック4 90に示すように仮想閉鎖がシンプレックス仮想ソケットの閉鎖であるかどうか を調べ、そうでない場合は「No」経路をとってブロック495に進む。閉鎖は マルチプレックス仮想ソケットの閉鎖であるため、ブロック495でそれが最後 のマルチプレックス仮想ソケットであるかどうかを判断し、最後のマルチプレッ クス仮想ソケットである場合は、ブロック496に示すようにマルチプレックス 活動タイマをセットする。最後のマルチプレックス仮想ソケットでない場合は、 ブロック496をスキップする。 ブロック490に戻って、仮想閉鎖がシンプレックス仮想ソケットの閉鎖であ る場合、ブロック491に示すようにそれに対応する実ソケットを事象リストか ら除去し、ブロック492に示すように実ソケットを閉鎖し、削除する。ソケッ トがシンプレックスとマルチプレックスのどちらの仮想ソケットであるかを問わ ず、ブロック497に示すようにその仮想ソケットに閉鎖のマークを付け、ブロ ック498で閉鎖操 作は終了する。 次に、第16−1図ないし第16−4図および第17−1図ないし第17−2 図に関連する第13図について説明する。実事象が発生すると、第13図のブロ ック302を終了し、ソケット・マネージャは事象がどのように生成されたかに 基づいてその事象を調べる。事象が第17−2図のブロック496で設定された マルチプレックス・ソケット活動タイマのタイム・アウトである場合、第13図 のブロック305からブロック312までの経路がとられる。第13図に示すよ うに、次にソケット・マネージャによってブロック312および313の操作が 行われ、マルチプレックス実ソケットが閉じられ、クライアント側インタセプト ・モジュールをサーバ側インタセプト・モジュールに接続するソケットに対応す るマルチプレックス実ソケットが削除される。その後、ソケット・マネージャは 次の実事象を待つ。ブロック322に示すように、このマルチプレックス事象タ イマはマルチプレックス仮想ソケットの作成によってリセットされる。 実ソケット上で発生した事象が、ウェブ・サーバがウェブ・サーバとサーバ側 インタセプト・モジュールとの間のソケット接続に対する閉鎖操作を行う場合な どの実ソケット閉鎖である場合、第13図のブロック305からブロック309 への経路がとられる。ソケット・マネージャはブロック309に示すように実事 象リストからその実ソケットを除去し、ブロック310に示すように1つの仮想 ソケット(または複 数のマルチプレックス・ソケットの場合は複数の仮想ソケット)をその1つの実 ソケットまたは複数の実ソケットから切断する。次に、ソケット・マネージャは その仮想ソケットに閉鎖のマークを付け、仮想事象を通知する。この操作はブロ ック311に示されており、仮想ソケット待ち行列からすべてのデータが空にさ れると、仮想ソケットは閉じる。仮想ソケットに閉鎖のマークを付けた後、決定 ブロック315に示すようにソケット・マネージャは閉じる実ソケットがシンプ レックス・ソケットであるかどうかを判断する。閉じる実ソケットがシンプレッ クス・ソケットである場合、ブロック316に示すようにその実ソケットを閉じ 、削除する。次にソケット・マネージャはブロック302に示すように次の実事 象を待つ。 閉じるソケットがシンプレックス実ソケットではない場合、ブロック315の 「No」経路をとり、ソケット・マネージャは次の実事象を待つ。したがって、 マルチプレックス実ソケット、すなわちクライアント側インタセプト・モジュー ルとサーバ側インタセプト・モジュールとを接続するソケットを、マルチプレッ クス・ソケット活動タイマのタイムアウトのみによって閉じることができる。こ れによって、ユーザ指定の所定時間の間、クライアント側インタセプト・モジュ ールとサーバ側インタセプト・モジュールとの間の接続を、モジュール間の最後 の通信が行われた後でも維持することができる。マルチプレックス・ソケット活 動タイマのタイムアウ トの前にブラウザからその後の接続要求があった場合、クライアント側インタセ プト・モジュールとサーバ側インタセプト・モジュールとの間に接続を再確立せ ずに通信を行うことができ、それによってそのような接続を再確立するオーバー ヘッドが不要になる。 第13図で説明する最後の経路は、実事象が発生し、その事象が第12図の1 つまたは複数のマルチプレックス実ソケット36aまたは36b上でのデータの 受信である場合である。マルチプレックス実ソケット上でデータを受信すると、 そのデータは検査され、第17−2図のブロック486で仮想待ち行列に付加さ れるもののようにデータに閉鎖操作標識が含まれている場合は、仮想閉鎖操作が 行われ、ブロック320からブロック310への経路がとられる。ソケット・マ ネージャは、ブロック310に示すように実ソケット上で受信したデータで識別 されたマルチプレックス仮想ソケットを実ソケットから切断し、次にブロック3 11に示すように仮想ソケットに「閉鎖」のマークを付け、仮想事象を通知する 。この閉鎖はマルチプレックス仮想ソケットの閉鎖であるため、ブロック315 から「No」経路がとられ、ブロック302に示すようにソケット・マネージャ は別の実事象を待つ。 第13図ないし第17図で説明されている操作を行うことによって、本発明の 特定の態様は外部通信リンクを介して第1のコンピュータと第2のコンピュータ との間に持続的接続を確立する。この持続的接続は、すべてのウェブ・ブラウザ 発信通信が完了するまで維持され、持続的接続が維持されている間に複数のウェ ブ・ブラウザ発信通信がインタセプトされ、外部通信リンクに多重化されて送ら れる。次にクライアント/サーバ固有データ・ストリームを多重化解除して複数 のHTTPデータ・ストリームを作成し、その複数のHTTPデータ・ストリー ムをウェブ・サーバに供給することができる。また、持続的接続は、すべてのウ ェブ・サーバ発信通信がインタセプト完了するまで維持される。持続的接続が維 持されている間に、複数のウェブ・サーバ発信通信がインタセプトされ、外部通 信リンクに多重化されて送られる。さらに、クライアント/サーバ固有データ・ ストリームを多重化解除して複数のHTTPデータ・ストリーを作成し、その複 数のHTTPデータ・ストリームをウェブ・サーバに供給することができる。 図面および本明細書では、本発明の典型的な好ましい実施例を開示し、特定の 用語を使用したが、これらの用語は総称および説明のためものに過ぎず、請求の 範囲に記載されている本発明の範囲を限定するためのものではない。
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.6 識別記号 FI G06F 17/30 G06F 15/40 310F (72)発明者 オーセル、バロン、コーネリュース アメリカ合衆国ノースカロライナ州チャペ ル・ヒル、ケンシングトン・ドライブ 702 (72)発明者 リンドクイスト、デヴィッド、ブルース アメリカ合衆国ノースカロライナ州ラレ ー、レイク・スプリングス・コート 4001 【要約の続き】 またサーバ・ベース・キャッシュ項目と比較して、イン タセプトされた応答とサーバ・ベース・キャッシュ項目 との間の差分に対応した差分データを与える。差分デー タを外部通信リンクによって送り、またクライアント・ ベース・キャッシュ項目を差分データと組み合わせて、 第2のアプリケーションに与えられる応答データ・スト リームを作成することによって応答データ・ストリーム を再構成する第2のコンピュータによって取得する。

Claims (1)

  1. 【特許請求の範囲】 1.第1のコンピュータに常駐している第1のアプリケーションから第2のコン ピュータに常駐している第2のアプリケーションへ、第1のコンピュータから第 2のコンピュータへの外部通信リンクによって伝送されるデータを少なくする方 法において、 第2のアプリケーションからの要求に応じて第2のアプリケーションに与えら れる第1のアプリケーションからのデータ・ストリームを第1のコンピュータに 常駐しているキャッシュに格納して、サーバ・ベース・キャッシュ項目を作成す るステップと、 第2のアプリケーションからの要求に応じて第2のアプリケーションに与えら れるデータ・ストリームを第2のコンピュータに常駐しているキャッシュに格納 して、クライアント・ベース・キャッシュ項目を作成するステップと、 第2のアプリケーションからの要求を評価して、問い合わせを受けた要求に対 応するクライアント・ベース・キャッシュ項目が存在していて、クライアント・ ベース書式を与えるかどうかを判断するステップと、 第2のアプリケーションからの要求に問い合わせを行って、問い合わせを受け た要求に対応するサーバ・ベース・キャッシュ項目が存在していて、サーバ・ベ ース書式を与えるかどうかを判断するステップと、 第2のアプリケーションからの問い合わせを受けた要求に応じて第1のアプリ ケーションが発信した応答に対応するデータ・ストリームをインタセプトしてか ら、外部通信リンク上での応答の伝送を行うステップと、 インタセプトされた応答をサーバ・ベース書式と比較して、インタセプトされ た応答とサーバ・ベース書式との間の差分に対応した差分データを与えるステッ プと、 差分データを外部通信リンクによって第2のコンピュータへ送るステップと、 第1のコンピュータによって送られた、外部通信リンクによって伝送される差 分データを取得するステップと、 クライアント・ベース書式を外部通信リンクから受信した差分データと組み合 わせて、インタセプトされた応答に対応している応答データ・ストリームを作成 することにより、外部通信リンクから受信したクライアント/サーバ固有データ ・ストリームから、第1のアプリケーションからの通信に対応した応答データ・ ストリームを再構成するステップと、 インタセプトされた応答に対応する再構成したデータ・ストリームを第2のア プリケーションに与えるステップと を備えている方法。 2.サーバ・ベース書式がクライアント・ベース書式と同一であるかどうかを判 定するステップをさらに含み、 前記送信ステップがサーバ・ベース書式を送信するステップと、前記判定ステ ップがサーバ・ベース書式がクライアン ト・ベース書式と同一ではないと判定した場合に、差分データを外部通信リンク によって第2のコンピュータへ送信するステップとを備えており、 前記再構成ステップが外部通信リンクによって受信したサーバ・ベース書式を 、外部通信リンクによって受信した差分データと組み合わせて、インタセプトさ れた応答に対応するデータ・ストリームを作成することにより、第1のアプリケ ーションからの応答に対応したインタセプトされた応答データを再構成し、 受信したサーバ・ベース書式を問い合わせを受けた要求に対応するクライアン ト・ベース・キャッシュ項目として格納することによって、問い合わせを受けた 要求に対応するクライアント・ベース書式を更新するステップを備えている、請 求項1に記載の方法。 3.サーバ・ベース書式とインタセプトされた応答の間の差が事前定義差分閾値 よりも大きいかどうかを判定するステップと、 サーバ・ベース書式とインタセプトされた応答の間の差が事前定義差分閾値よ りも大きい場合に、インタセプトされた応答に対応するサーバ・ベース・キャッ シュ項目として第1のアプリケーションから受信したインタセプトされた応答の データ・ストリームを格納することによって問い合わせを受けた要求に対応する サーバ・ベース書式を更新するステップとをさらに備えており、 前記比較ステップと前記送信ステップとが更新されたサーバ・ベース書式を利 用する、請求項1に記載の方法。 4.第2のアプリケーションからの要求に対応する複数のサーバ・ベース・キャ ッシュ項目を維持するステップをさらに含み、 前記問い合わせステップが複数のサーバ・ベース・キャッシュ項目が第2のア プリケーションからの要求に対応して存在していて、複数のサーバ・ベース書式 を提供するかどうかを判定し、 複数のサーバ・ベース書式の1つがクライアント・ベース書式と同一であるか どうかを判定するステップを備えており、 前記比較ステップが、複数のサーバ・ベース書式の1つがクライアント・ベー ス書式と同一であると前記判定ステップが判定した場合に、複数のサーバ・ベー ス書式のうちクライアント・ベース書式と同一のものである1つを利用する請求 項1に記載の方法。 5.第2のアプリケーションからの要求に応じて第1のアプリケーションからの データ・ストリームによってサーバ・キャッシュ項目を更新するステップと、 第2のアプリケーションからの要求に対応しており、かつ連続するサーバ・キ ャッシュ項目間の差を表している複数の差分データ・セットを維持して、アーカ イブ差分データを提供するステップと、 前記複数の差分データ・セットの1つと関連づけられ、前 記差分データ・セットが導かれたサーバ・ベース書式を一意に識別する複数のC RC項目を維持するステップとをさらに含み、 前記問い合わせステップが複数の差分データ・セットとCRCとが第2のアプ リケーションからの要求に対応して存在しているかどうかを判定し、 前記複数のCRCの1つがクライアント・ベース書式と同一のものであるサー バ・ベース書式に対応しているかどうかを判定するステップを備えており、 前記送信ステップがクライアント・ベース書式に対応しているCRCに対応し たアーカイブ差分データ、連続したアーカイブ差分データ・セット、および前記 比較ステップによって計算された差分データを外部通信リンクによって第2のコ ンピュータに送るステップを備えており、 前記再構成ステップがクライアント・ベース書式を外部通信リンクによって受 信した差分データと連続的に組み合わせて、インタセプトされた応答に対応する 応答データ・ストリームを作成することによって、外部通信リンクによって受信 したデータ・ストリームから第1のアプリケーションからの通信に対応した応答 データ・ストリームを再構成するステップを備えており、 第2のアプリケーションからの要求に対応するクライアント・キャッシュ項目 を再構成したデータ・ストリームによって更新する、請求項1に記載の方法。 6.第1のアプリケーションがウェブ・サーバを含み、かつ第2のアプリケーシ ョンがウェブ・ブラウザを含むことを特徴とする請求項1に記載の方法。 7.外部通信リンクが無線通信リンクを含むことを特徴とする請求項1に記載の 方法。 8.ウェブ・ブラウザからの要求がCGI要求を含んでいる、請求項6に記載の 方法。 9.第1のコンピュータに常駐している第1のアプリケーションから第2のコン ピュータに常駐している第2のアプリケーションへ、第1のコンピュータから第 2のコンピュータへの外部通信リンクによって伝送されるデータを少なくする装 置において、 第2のアプリケーションからの要求に応じて第2のアプリケーションに与えら れる第1のアプリケーションからのデータ・ストリームを第1のコンピュータに 常駐しているキャッシュに格納して、サーバ・ベース・キャッシュ項目を作成す る手段と、 第2のアプリケーションからの要求に応じて第2のアプリケーションに与えら れるデータ・ストリームを第2のコンピュータに常駐しているキャッシュに格納 して、クライアント・ベース・キャッシュ項目を作成する手段と、 第2のアプリケーションからの要求を評価して、問い合わせを受けた要求に対 応するクライアント・ベース・キャッシュ項目が存在していて、クライアント・ ベース書式を与える かどうかを判断する手段と、 第2のアプリケーションからの要求に問い合わせを行って、問い合わせを受け た要求に対応するサーバ・ベース・キャッシュ項目が存在していて、サーバ・ベ ース書式を与えるかどうかを判断する手段と、 第2のアプリケーションからの問い合わせを受けた要求に応じて第1のアプリ ケーションが発信した応答に対応するデータ・ストリームをインタセプトしてか ら、外部通信リンク上での応答の伝送を行う手段と、 インタセプトされた応答をサーバ・ベース書式と比較して、インタセプトされ た応答とサーバ・ベース書式との間の差分に対応した差分データを与える手段と 、 差分データを外部通信リンクによって第2のコンピュータへ送る手段と、第1 のコンピュータによって送られた、 外部通信リンクによって伝送される差分データを取得する手段と、 クライアント・ベース書式を外部通信リンクから受信した差分データと組み合 わせて、インタセプトされた応答に対応している応答データ・ストリームを作成 することにより、外部通信リンクから受信したクライアント/サーバ固有データ ・ストリームから、第1のアプリケーションからの通信に対応した応答データ・ ストリームを再構成する手段と、 インタセプトされた応答に対応する再構成したデータ・ストリームを第2のア プリケーションに与える手段と を備えている装置。 10.サーバ・ベース書式がクライアント・ベース書式と同一であるかどうかを 判定する手段をさらに含み、 前記送信手段がサーバ・ベース書式を送信する手段と、前記判定手段がサーバ ・ベース書式がクライアント・ベース書式と同一ではないと判定した場合に、差 分データを外部通信リンクによって第2のコンピュータへ送信する手段とを備え ており、 前記再構成手段が外部通信リンクによって受信したサーバ・ベース書式を、外 部通信リンクによって受信した差分データと組み合わせて、インタセプトされた 応答に対応するデータ・ストリームを作成することにより、第1のアプリケーシ ョンからの応答に対応したインタセプトされた応答データ・ストリームを再構成 し、 受信したサーバ・ベース書式を問い合わせを受けた要求に対応するクライアン ト・ベース・キャッシュ項目として格納することによって、問い合わせを受けた 要求に対応するクライアント・ベース書式を更新する手段を備えている、請求項 9に記載の装置。 11.サーバ・ベース書式とインタセプトされた応答の間の差が事前定義差分閾 値よりも大きいかどうかを判定する手段と、 サーバ・ベース書式とインタセプトされた応答の間の差が事前定義差分閾値よ りも大きい場合に、インタセプトされた 要求に対応するサーバ・ベース・キャッシュ項目として第1のアプリケーション から受信したインタセプトされた応答のデータ・ストリームを格納することによ って問い合わせを受けた要求に対応するサーバ・ベース書式を更新する手段とを さらに備えており、 前記比較手段と前記送信手段とが更新されたサーバ・ベース書式を利用する、 請求項9に記載の装置。 12.第2のアプリケーションからの要求に対応する複数のサーバ・ベース・キ ャッシュ項目を維持する手段をさらに含み、 前記問い合わせ手段が複数のサーバ・ベース・キャッシュ項目が第2のアプリ ケーションからの要求に対応して存在していて、複数のサーバ・ベース書式を提 供するかどうかを判定し、 複数のサーバ・ベース書式の1つがクライアント・ベース書式と同一であるか どうかを判定する手段を備えており、 前記比較手段が、複数のサーバ・ベース書式の1つがクライアント・ベース書 式と同一であると前記判定手段が判定した場合に、複数のサーバ・ベース書式の うちクライアント・ベース書式と同一のものである1つを利用する請求項9に記 載の装置。 13.第2のアプリケーションからの要求に応じて第1のアプリケーションから のデータ・ストリームによってサーバ・キャッシュ項目を更新する手段と、 第2のアプリケーションからの要求に対応しており、かつ連続するサーバ・キ ャッシュ項目間の差を表している複数の差分データ・セットを維持して、アーカ イブ差分データを提供する手段と、 前記複数の差分データ・セットの1つと関連づけられ、前記差分データ・セッ トが導かれたサーバ・ベース書式を一意に識別する複数のCRC項目を維持する 手段とをさらに含み、 前記問い合わせ手段が複数の差分データ・セットとCRCとが第2のアプリケ ーションからの要求に対応して存在しているかどうかを判定し、 前記複数のCRCの1つがクライアント・ベース書式と同一のものであるサー バ・ベース書式に対応しているかどうかを判定する手段を備えており、 前記送信手段がクライアント・ベース書式に対応しているCRCに対応したア ーカイブ差分データ、連続したアーカイブ差分データ・セット、および前記比較 ステップによって計算された差分データを外部通信リンクによって第2のコンピ ュータに送る手段を備えており、 前記再構成手段がクライアント・ベース書式を外部通信リンクによって受信し た差分データと連続的に組み合わせて、インタセプトされた応答に対応する応答 データ・ストリームを作成することによって、外部通信リンクによって受信した データ・ストリームから第1のアプリケーションからの通信に対応した応答デー タ・ストリームを再構成する手段を備え ており、 第2のアプリケーションからの要求に対応するクライアント・キャッシュ項目 を再構成したデータ・ストリームによって更新する、請求項9に記載の装置。 14.第1のアプリケーションがウェブ・サーバを含み、かつ第2のアプリケー ションがウェブ・ブラウザを含むことを特徴とする請求項9に記載の装置。 15.外部通信リンクが無線通信リンクを含むことを特徴とする請求項9に記載 の装置。 16.ウェブ・ブラウザからの要求がCGI要求を含んでいる、請求項14に記 載の装置。 17.第1のコンピュータに常駐している第1のアプリケーションから第2のコ ンピュータに常駐している第2のアプリケーションへ第2のアプリケーションか らの要求に応じて、第1のコンピュータから第2のコンピュータへの外部通信リ ンクによって伝送されるデータを少なくするコンピュータ・プログラム・プロダ クトにおいて、 コンピュータ可読プログラム・コード手段が内部に埋め込まれているコンピュ ータ可読格納媒体を備えており、前記コンピュータ可読プログラム・コード手段 が、 第2のアプリケーションからの要求に応じて第2のアプリケーションに与えら れる第1のアプリケーションからのデータ・ストリームを第1のコンピュータに 常駐しているキャッシュに格納して、サーバ・ベース・キャッシュ項目を作成す るコンピュータ可読プログラム・コード手段と、 第2のアプリケーションからの要求に応じて第2のアプリケーションに与えら れるデータ・ストリームを第2のコンピュータに常駐しているキャッシュに格納 して、クライアント・ベース・キャッシュ項目を作成するコンピュータ可読プロ グラム・コード手段と、 第2のアプリケーションからの要求を評価して、問い合わせを受けた要求に対 応するクライアント・ベース・キャッシュ項目が存在していて、クライアント・ ベース書式を与えるかどうかを判断するコンピュータ可読プログラム・コード手 段と、 第2のアプリケーションからの要求に問い合わせを行って、問い合わせを受け た要求に対応するサーバ・ベース・キャッシュ項目が存在していて、サーバ・ベ ース書式を与えるかどうかを判断するコンピュータ可読プログラム・コード手段 と、 第2のアプリケーションからの問い合わせを受けた要求に応じて第1のアプリ ケーションが発信した応答に対応するデータ・ストリームをインタセプトしてか ら、外部通信リンク上での応答の伝送を行うコンピュータ可読プログラム・コー ド手段と、 インタセプトされた応答をサーバ・ベース書式と比較して、インタセプトされ た応答とサーバ・ベース書式との間の差分に対応した差分データを与えるコンピ ュータ可読プログラム・コード手段と、 差分データを外部通信リンクによって第2のコンピュータへ送るコンピュータ 可読プログラム・コード手段と、 第1のコンピュータによって送られた、外部通信リンクによって伝送される差 分データを取得するコンピュータ可読プログラム・コード手段と、 クライアント・ベース書式を外部通信リンクから受信した差分データと組み合 わせて、インタセプトされた応答に対応している応答データ・ストリームを作成 することにより、外部通信リンクから受信したクライアント/サーバ固有データ ・ストリームから、第1のアプリケーションからの通信に対応した応答データ・ ストリームを再構成するコンピュータ可読プログラム・コード手段と、 インタセプトされた応答に対応する再構成したデータ・ストリームを第2のア プリケーションに与えるコンピュータ可読プログラム・コード手段と を備えているコンピュータ可読プログラム・プロダクト。 18.サーバ・ベース書式がクライアント・ベース書式と同一であるかどうかを 判定するコンピュータ可読プログラム・コード手段をさらに含み、 前記送信用コンピュータ可読プログラム・コード手段がサーバ・ベース書式を 送信するコンピュータ可読プログラム・コード手段と、前記判定用コンピュータ 可読プログラム・コード手段がサーバ・ベース書式がクライアント・ベース書式 と同一ではないと判定した場合に、差分データを外部通信リ ンクによって第2のコンピュータへ送信するコンピュータ可読プログラム・コー ド手段とを備えており、 前記再構成用コンピュータ可読プログラム・コード手段が外部通信リンクによ って受信したサーバ・ベース書式を、外部通信リンクによって受信した差分デー タと組み合わせて、インタセプトされた応答に対応するデータ・ストリームを作 成することにより、第1のアプリケーションからの応答に対応したインタセプト された応答データを再構成し、 受信したサーバ・ベース書式を問い合わせを受けた要求に対応するクライアン ト・ベース・キャッシュ項目として格納することによって、問い合わせを受けた 要求に対応するクライアント・ベース書式を更新するコンピュータ可読プログラ ム・コード手段を備えている、請求項17に記載のコンピュータ・プログラム・ プロダクト。 19.サーバ・ベース書式とインタセプトされた応答の間の差が事前定義差分閾 値よりも大きいかどうかを判定するコンピュータ可読プログラム・コード手段と 、 サーバ・ベース書式とインタセプトされた応答の間の差が事前定義差分閾値よ りも大きい場合に、インタセプトされた応答に対応するサーバ・ベース・キャッ シュ項目として第1のアプリケーションから受信したインタセプトされた応答の データ・ストリームを格納することによって問い合わせを受けた要求に対応する サーバ・ベース書式を更新するコンピュータ可読プログラム・コード手段とをさ らに備えており、 前記比較用コンピュータ可読プログラム・コード手段と前記送信用コンピュー タ可読プログラム・コード手段とが更新されたサーバ・ベース書式を利用する、 請求項17に記載のコンピュータ・プログラム・プロダクト。 20.第2のアプリケーションからの要求に対応する複数のサーバ・ベース・キ ャッシュ項目を維持するコンピュータ可読プログラム・コード手段をさらに含み 、 前記問い合わせ用コンピュータ可読プログラム・コード手段が複数のサーバ・ ベース・キャッシュ項目が第2のアプリケーションからの要求に対応して存在し ていて、複数のサーバ・ベース書式を提供するかどうかを判定し、 複数のサーバ・ベース書式の1つがクライアント・ベース書式と同一であるか どうかを判定するコンピュータ可読プログラム・コード手段を備えており、 前記比較用コンピュータ可読プログラム・コード手段が、複数のサーバ・ベー ス書式の1つがクライアント・ベース書式と同一であると前記判定用コンピュー タ可読プログラム・コード手段が判定した場合に、複数のサーバ・ベース書式の うちクライアント・ベース書式と同一のものである1つを利用する請求項17に 記載のコンピュータ・プログラム・プロダクト。 21.第2のアプリケーションからの要求に応じて第1のアプリケーションから のデータ・ストリームによってサーバ・キャッシュ項目を更新するコンピュータ 可読プログラム・コ ード手段と、 第2のアプリケーションからの要求に対応しており、かつ連続するサーバ・キ ャッシュ項目間の差を表している複数の差分データ・セットを維持して、アーカ イブ差分データを提供するコンピュータ可読プログラム・コード手段と、 前記複数の差分データ・セットの1つと関連づけられ、前記差分データ・セッ トが導かれたサーバ・ベース書式を一意に識別する複数のCRC項目を維持する コンピュータ可読プログラム・コード手段とをさらに含み、 前記問い合わせ用コンピュータ可読プログラム・コード手段が複数の差分デー タ・セットとCRCとが第2のアプリケーションからの要求に対応して存在して いるかどうかを判定し、 前記複数のCRCの1つがクライアント・ベース書式と同一のものであるサー バ・ベース書式に対応しているかどうかを判定するコンピュータ可読プログラム ・コード手段を備えており、 前記送信用コンピュータ可読プログラム・コード手段がクライアント・ベース 書式に対応しているCRCに対応したアーカイブ差分データ、連続したアーカイ ブ差分データ・セット、および前記比較用コンピュータ可読プログラム・コード 手段によって計算された差分データを外部通信リンクによって第2のコンピュー タに送るコンピュータ可読プログラム・コード手段を備えており、 前記再構成手段がクライアント・ベース書式を外部通信リンクによって受信し た差分データと連続的に組み合わせて、インタセプトされた応答に対応する応答 データ・ストリームを作成することによって、外部通信リンクによって受信した データ・ストリームから第1のアプリケーションからの通信に対応した応答デー タ・ストリームを再構成するコンピュータ可読プログラム・コード手段を備えて おり、 第2のアプリケーションからの要求に対応するクライアント・キャッシュ項目 を再構成したデータ・ストリームによって更新する、請求項17に記載のコンピ ュータ・プログラム・プロダクト。 22.第1のアプリケーションがウェブ・サーバを含んでおり、第2のアプリケ ーションがウェブ・ブラウザを含んでいる、請求項17に記載のコンピュータ・ プログラム・プロダクト。 23.外部通信リンクが無線通信リンクを含んでいる、請求項17に記載のコン ピュータ・プログラム・プロダクト。 24.ウェブ・ブラウザからの要求がCGI要求を含んでいる、請求項22に記 載のコンピュータ・プログラム・プロダクト。
JP52931497A 1996-02-15 1996-07-11 差分化通信システム Expired - Fee Related JP3491011B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/601,903 1996-02-15
US08/601,903 US5859971A (en) 1996-02-15 1996-02-15 Differencing client/server communication system for use with CGI forms
PCT/US1996/011555 WO1997030539A1 (en) 1996-02-15 1996-07-11 Differencing communication system

Publications (2)

Publication Number Publication Date
JPH11500250A true JPH11500250A (ja) 1999-01-06
JP3491011B2 JP3491011B2 (ja) 2004-01-26

Family

ID=24409216

Family Applications (1)

Application Number Title Priority Date Filing Date
JP52931497A Expired - Fee Related JP3491011B2 (ja) 1996-02-15 1996-07-11 差分化通信システム

Country Status (15)

Country Link
US (1) US5859971A (ja)
EP (1) EP0823171B1 (ja)
JP (1) JP3491011B2 (ja)
KR (1) KR100295730B1 (ja)
CN (1) CN1167237C (ja)
AT (1) ATE201946T1 (ja)
CA (1) CA2218187C (ja)
CZ (1) CZ289259B6 (ja)
DE (1) DE69613225T2 (ja)
ES (1) ES2159037T3 (ja)
HU (1) HU227369B1 (ja)
MY (1) MY120208A (ja)
PL (1) PL180619B1 (ja)
TW (1) TW299544B (ja)
WO (1) WO1997030539A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001518668A (ja) * 1997-09-29 2001-10-16 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報を事前に取り出すための方法およびシステム
JP2005141756A (ja) * 2003-11-06 2005-06-02 Microsoft Corp バイナリ比較を用いたファイル複製の最適化
JP2014222455A (ja) * 2013-05-14 2014-11-27 日本電気株式会社 通信システム、プロキシサーバ、通信方法およびプログラム

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5754774A (en) * 1996-02-15 1998-05-19 International Business Machine Corp. Client/server communication system
US6194992B1 (en) * 1997-04-24 2001-02-27 Nomadix, Llc Mobile web
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
US7266526B1 (en) * 1996-11-27 2007-09-04 Diebold, Incorporated Automated banking machine system with multiple browsers
US6901425B1 (en) 1996-12-23 2005-05-31 International Business Machines Corporation Computer apparatus and method including a disconnect mechanism for communicating between software applications and computers on the world-wide web
US6144990A (en) * 1996-12-23 2000-11-07 International Business Machines Corporation Computer apparatus and method for communicating between software applications and computers on the world-wide web using universal variable handling
US6026404A (en) * 1997-02-03 2000-02-15 Oracle Corporation Method and system for executing and operation in a distributed environment
US6247056B1 (en) 1997-02-03 2001-06-12 Oracle Corporation Method and apparatus for handling client request with a distributed web application server
US6845505B1 (en) 1997-02-03 2005-01-18 Oracle International Corporation Web request broker controlling multiple processes
US6225995B1 (en) 1997-10-31 2001-05-01 Oracle Corporaton Method and apparatus for incorporating state information into a URL
US6710786B1 (en) 1997-02-03 2004-03-23 Oracle International Corporation Method and apparatus for incorporating state information into a URL
US6182122B1 (en) * 1997-03-26 2001-01-30 International Business Machines Corporation Precaching data at an intermediate server based on historical data requests by users of the intermediate server
US7103794B2 (en) 1998-06-08 2006-09-05 Cacheflow, Inc. Network object cache engine
US6070184A (en) * 1997-08-28 2000-05-30 International Business Machines Corporation Server-side asynchronous form management
US6035324A (en) * 1997-08-28 2000-03-07 International Business Machines Corporation Client-side asynchronous form management
US6393526B1 (en) 1997-10-28 2002-05-21 Cache Plan, Inc. Shared cache parsing and pre-fetch
US6334114B1 (en) 1997-10-31 2001-12-25 Oracle Corporation Method and apparatus for performing transactions in a stateless web environment which supports a declarative paradigm
FR2774241B1 (fr) * 1998-01-23 2000-02-25 Sagem Systeme de teleinformation pour un site d'exploitation de donnees et terminal de restitution de donnees d'un tel systeme
US6272534B1 (en) * 1998-03-04 2001-08-07 Storage Technology Corporation Method and system for efficiently storing web pages for quick downloading at a remote device
US7007072B1 (en) 1999-07-27 2006-02-28 Storage Technology Corporation Method and system for efficiently storing web pages for quick downloading at a remote device
AUPP252798A0 (en) * 1998-03-24 1998-04-23 Griffits, John Philip Enhanced trusted systems processing
US6170013B1 (en) * 1998-03-27 2001-01-02 Nortel Networks Limited Method and apparatus for controlling access to network information sources
US6148340A (en) * 1998-04-30 2000-11-14 International Business Machines Corporation Method and system for differencing container files
US6427187B2 (en) 1998-07-31 2002-07-30 Cache Flow, Inc. Multiple cache communication
US6397253B1 (en) 1998-10-06 2002-05-28 Bull Hn Information Systems Inc. Method and system for providing high performance Web browser and server communications
US6574239B1 (en) * 1998-10-07 2003-06-03 Eric Morgan Dowling Virtual connection of a remote unit to a server
US8266266B2 (en) 1998-12-08 2012-09-11 Nomadix, Inc. Systems and methods for providing dynamic network authorization, authentication and accounting
US7194554B1 (en) 1998-12-08 2007-03-20 Nomadix, Inc. Systems and methods for providing dynamic network authorization authentication and accounting
US8713641B1 (en) 1998-12-08 2014-04-29 Nomadix, Inc. Systems and methods for authorizing, authenticating and accounting users having transparent computer access to a network using a gateway device
GB2339516B (en) * 1999-04-06 2000-07-05 Iesearch Limited An inter-computer communications apparatus
US6253198B1 (en) 1999-05-11 2001-06-26 Search Mechanics, Inc. Process for maintaining ongoing registration for pages on a given search engine
US6988138B1 (en) * 1999-06-30 2006-01-17 Blackboard Inc. Internet-based education support system and methods
US7908602B2 (en) 1999-06-30 2011-03-15 Blackboard Inc. Internet-based education support system, method and medium providing security attributes in modular, extensible components
US6658462B1 (en) 1999-08-26 2003-12-02 International Business Machines Corporation System, method, and program for balancing cache space requirements with retrieval access time for large documents on the internet
US6356933B2 (en) * 1999-09-07 2002-03-12 Citrix Systems, Inc. Methods and apparatus for efficiently transmitting interactive application data between a client and a server using markup language
US6721780B1 (en) 1999-11-09 2004-04-13 Fireclick, Inc. Predictive pre-download of network objects
US6324568B1 (en) * 1999-11-30 2001-11-27 Siebel Systems, Inc. Method and system for distributing objects over a network
US6374248B1 (en) * 1999-12-02 2002-04-16 Sun Microsystems, Inc. Method and apparatus for providing local path I/O in a distributed file system
US6983315B1 (en) 2000-01-18 2006-01-03 Wrq, Inc. Applet embedded cross-platform caching
ATE312378T1 (de) * 2000-03-01 2005-12-15 Computer Ass Think Inc Methode und system für die aktualisierung eines archivs einer datei
US7028251B2 (en) * 2000-03-02 2006-04-11 Iora, Ltd. System and method for reducing the size of data difference representations
US6990526B1 (en) * 2000-05-22 2006-01-24 Pointred Technologies, Inc. Method and apparatus for web caching
JP4282207B2 (ja) * 2000-05-31 2009-06-17 日本電気株式会社 サーバ装置、クライアント装置、クライアントサーバ通信システム及びそれらに用いるサーバ特定方式
US6941351B2 (en) * 2000-07-11 2005-09-06 Microsoft Corporation Application program caching
US6839737B1 (en) 2000-07-19 2005-01-04 Neoplanet, Inc. Messaging system for indicating status of a sender of electronic mail and method and computer program product therefor
US7529750B2 (en) * 2000-08-11 2009-05-05 International Business Machines Corporation Accessing information on a network
US7571217B1 (en) 2000-08-16 2009-08-04 Parallel Networks, Llc Method and system for uniform resource locator transformation
US7346842B1 (en) * 2000-11-02 2008-03-18 Citrix Systems, Inc. Methods and apparatus for incorporating a partial page on a client
US7051084B1 (en) 2000-11-02 2006-05-23 Citrix Systems, Inc. Methods and apparatus for regenerating and transmitting a partial page
JP2004519040A (ja) * 2000-11-02 2004-06-24 サイトリックス システムズ, インコーポレイテッド 部分的ページ再生成に影響を与えるページ生成コードを強化する方法および装置
US7194743B2 (en) * 2000-12-12 2007-03-20 Citrix Systems, Inc. Methods and apparatus for communicating changes between a user interface and an executing application using property paths
US7269784B1 (en) 2001-01-22 2007-09-11 Kasriel Stephane Server-originated differential caching
US6912591B2 (en) * 2001-05-02 2005-06-28 Science Application International Corporation System and method for patch enabled data transmissions
US7185063B1 (en) 2001-06-22 2007-02-27 Digital River, Inc. Content delivery network using differential caching
US20020198956A1 (en) * 2001-06-25 2002-12-26 International Business Machines Corporation Method and apparatus for managing a cache
US7092997B1 (en) 2001-08-06 2006-08-15 Digital River, Inc. Template identification with differential caching
US7188214B1 (en) 2001-08-07 2007-03-06 Digital River, Inc. Efficient compression using differential caching
US7305381B1 (en) 2001-09-14 2007-12-04 Ricoh Co., Ltd Asynchronous unconscious retrieval in a network of information appliances
US7375835B1 (en) 2001-10-29 2008-05-20 Ricoh Co., Ltd. E-mail transmission of print-ready documents
JP2003177992A (ja) * 2001-12-10 2003-06-27 Seiko Epson Corp 差分通信システム、差分通信装置及び差分通信プログラム、並びに差分通信方法
US7296051B1 (en) 2002-02-19 2007-11-13 Digital River, Inc. Predictive predownload of templates with delta encoding
US7487261B1 (en) 2002-02-22 2009-02-03 Digital River, Inc. Delta caching service
US7111038B2 (en) * 2002-04-03 2006-09-19 International Business Machines Corporation Enhancing application server performance by relocating performance-degrading processing
US7428578B1 (en) * 2002-07-02 2008-09-23 Ricoh Co., Ltd Remotely initiated document transmission
US8745222B2 (en) * 2003-08-15 2014-06-03 Blackboard Inc. Content system and associated methods
US7472254B2 (en) * 2003-10-10 2008-12-30 Iora, Ltd. Systems and methods for modifying a set of data objects
US8010670B2 (en) 2003-12-23 2011-08-30 Slipstream Data Inc. Meta-data based method for local cache utilization
JP4745839B2 (ja) 2005-01-28 2011-08-10 富士通株式会社 データ転送システム、送信プログラム、受信プログラム及びデータ送信方法
US8326659B2 (en) * 2005-04-12 2012-12-04 Blackboard Inc. Method and system for assessment within a multi-level organization
JP2007128371A (ja) * 2005-11-04 2007-05-24 Fujitsu Ltd コンテンツ検索システム
US7924884B2 (en) * 2005-12-20 2011-04-12 Citrix Systems, Inc. Performance logging using relative differentials and skip recording
US8312120B2 (en) * 2006-08-22 2012-11-13 Citrix Systems, Inc. Systems and methods for providing dynamic spillover of virtual servers based on bandwidth
US8493858B2 (en) 2006-08-22 2013-07-23 Citrix Systems, Inc Systems and methods for providing dynamic connection spillover among virtual servers
US9930099B2 (en) * 2007-05-08 2018-03-27 Riverbed Technology, Inc. Hybrid segment-oriented file server and WAN accelerator
TW201009698A (en) * 2008-08-19 2010-03-01 Arcadyan Technology Corp Method for improving the accessing efficiency of embedded web page
US20100131617A1 (en) * 2008-11-25 2010-05-27 John Osborne Method and system for differential transmission of web page structures
KR20120095431A (ko) * 2009-11-20 2012-08-28 알까뗄 루슨트 서버와 한 세트의 클라이언트들 사이의 데이터 파일들의 분배의 처리
US10142157B2 (en) 2010-06-10 2018-11-27 Blackberry Limited Method and system for reducing transmission of redundant data
US8495019B2 (en) 2011-03-08 2013-07-23 Ca, Inc. System and method for providing assured recovery and replication
WO2013090834A1 (en) * 2011-12-14 2013-06-20 Seven Networks, Inc. Operation modes for mobile traffic optimization and concurrent management of optimized and non-optimized traffic
US8606973B1 (en) * 2012-07-05 2013-12-10 International Business Machines Corporation Managing monitored conditions in adaptors in a multi-adaptor system
CN112333787B (zh) * 2020-11-13 2023-09-12 Oppo广东移动通信有限公司 数据传输方法、装置、存储介质、终端及网络接入点设备
US11968417B2 (en) * 2021-12-30 2024-04-23 Comcast Cable Communications, Llc Systems, methods, and apparatuses for buffer management

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5473772A (en) * 1991-04-02 1995-12-05 International Business Machines Corporation Automatic update of static and dynamic files at a remote network node in response to calls issued by or for application programs
US5193162A (en) * 1989-11-06 1993-03-09 Unisys Corporation Cache memory with data compaction for use in the audit trail of a data processing system having record locking capabilities
US5241625A (en) * 1990-11-27 1993-08-31 Farallon Computing, Inc. Screen image sharing among heterogeneous computers
US5611038A (en) * 1991-04-17 1997-03-11 Shaw; Venson M. Audio/video transceiver provided with a device for reconfiguration of incompatibly received or transmitted video and audio information
JPH06324928A (ja) * 1993-05-14 1994-11-25 Mitsubishi Electric Corp ログ生成装置とファイルの異なるバージョンの調停のための装置及び異なる場所にあるコンピュータファイルの異なるバージョンを調停するための装置
US5446888A (en) * 1994-01-14 1995-08-29 Pyne; Charles F. Remote file transfer method and apparatus
US5574906A (en) * 1994-10-24 1996-11-12 International Business Machines Corporation System and method for reducing storage requirement in backup subsystems utilizing segmented compression and differencing

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001518668A (ja) * 1997-09-29 2001-10-16 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報を事前に取り出すための方法およびシステム
JP2005141756A (ja) * 2003-11-06 2005-06-02 Microsoft Corp バイナリ比較を用いたファイル複製の最適化
JP4676745B2 (ja) * 2003-11-06 2011-04-27 マイクロソフト コーポレーション バイナリ比較を用いたファイル複製の最適化
JP2014222455A (ja) * 2013-05-14 2014-11-27 日本電気株式会社 通信システム、プロキシサーバ、通信方法およびプログラム

Also Published As

Publication number Publication date
JP3491011B2 (ja) 2004-01-26
CA2218187C (en) 2004-11-02
DE69613225T2 (de) 2001-11-08
US5859971A (en) 1999-01-12
EP0823171A1 (en) 1998-02-11
PL322830A1 (en) 1998-02-16
HU227369B1 (en) 2011-04-28
CN1167237C (zh) 2004-09-15
EP0823171B1 (en) 2001-06-06
HUP9801874A3 (en) 1999-05-28
DE69613225D1 (de) 2001-07-12
CZ289259B6 (cs) 2001-12-12
KR19980703864A (ko) 1998-12-05
MY120208A (en) 2005-09-30
ES2159037T3 (es) 2001-09-16
ATE201946T1 (de) 2001-06-15
CN1184575A (zh) 1998-06-10
HUP9801874A2 (hu) 1998-11-30
CZ354097A3 (cs) 1998-03-18
CA2218187A1 (en) 1997-08-21
TW299544B (en) 1997-03-01
PL180619B1 (pl) 2001-03-30
WO1997030539A1 (en) 1997-08-21
KR100295730B1 (ko) 2001-09-07

Similar Documents

Publication Publication Date Title
JPH11500250A (ja) 差分化通信システム
JP3962369B2 (ja) ウェブ・ブラウザ・アプリケーションのパフォーマンスを向上する方法及び装置
US5867661A (en) Method and apparatus of using virtual sockets for reducing data transmitted over a wireless communication link between a client web browser and a host web server using a standard TCP protocol
US5878213A (en) Methods, systems and computer program products for the synchronization of time coherent caching system
US6374305B1 (en) Web applications interface system in a mobile-based client-server system
CZ354197A3 (cs) Způsob zachycování dat přijatých od druhé aplikace, zařízení a počítačový programový produkt k jeho provádění

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071114

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20081114

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20081114

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20091114

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20091114

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20101114

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20101114

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20111114

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20111114

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20121114

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees