JP2004173287A - パックし圧縮したバッファを使用してクライアント−サーバ間の通信を向上させるシステムおよび方法 - Google Patents

パックし圧縮したバッファを使用してクライアント−サーバ間の通信を向上させるシステムおよび方法 Download PDF

Info

Publication number
JP2004173287A
JP2004173287A JP2003391493A JP2003391493A JP2004173287A JP 2004173287 A JP2004173287 A JP 2004173287A JP 2003391493 A JP2003391493 A JP 2003391493A JP 2003391493 A JP2003391493 A JP 2003391493A JP 2004173287 A JP2004173287 A JP 2004173287A
Authority
JP
Japan
Prior art keywords
response
responses
client
buffer
request
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
JP2003391493A
Other languages
English (en)
Other versions
JP4532098B2 (ja
Inventor
Joseph R Warren
アール.ウォーレン ジョーゼフ
Karl Froelich
フローリック カール
Nicole A Bonilla
エー.ボニーラ ニコル
Remi A Lemarchand
エー.ルマーチャンド レミー
Ronald E Gray
イー.グレイ ロナルド
Alec Dun
ダン アレク
Aaron Hartwell
ハートウェル アーロン
Steven F Goddard
エフ.ゴッダード スティーブン
Brent Curtis
カーティス ブレント
Brendan Power
パワー ブレンダン
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.)
Microsoft Corp
Original Assignee
Microsoft 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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=32302756&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP2004173287(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004173287A publication Critical patent/JP2004173287A/ja
Application granted granted Critical
Publication of JP4532098B2 publication Critical patent/JP4532098B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • 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/04Protocols for data compression, e.g. ROHC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】 サーバ上で多数の応答の組をバッチし、その応答をクライアントに単一のバッチ(すなわち「連鎖された」または「パックされた」バッチ)で送信する方法を提供すること。
【解決手段】 応答の組をそれぞれ難読化し、かつ/または圧縮することができる。クライアントがバッチを受信すると、各組は個々に処理される。クライアントは、処理できる未圧縮の応答の組のサイズを伝えるように構成することができる。サーバは、この情報を使用して適切なサイズの応答の組を作成することができ、また応答の組を圧縮しても、あるいは圧縮しなくてもよい。サーバは、サーバのバッファが満杯になる、あるいはほぼ満杯になるまで、応答の組を連鎖させ、圧縮、未圧縮に関わらず、組を引き続き連鎖させることができる。次いで連鎖された応答の組をクライアントに送信することができ、応答の各組を個々に処理することができる。
【選択図】 図6

Description

本発明は一般にコンピュータネットワークに関し、より詳細には、電子メールなどクライアントアプリケーションとサーバアプリケーションの間で通信するための方法に関する。
電子メールは、通信のための重要な方法になってきている。電子メールシステムには一般に、サーバ構成要素(Microsoft Exchange Serverなど)およびクライアント構成要素(Microsoft OutlookやMicrosoft Outlook Expressなど)などがある。これらの構成要素は一般に、コンピューティング装置(サーバ、PC、ラップトップ、PDAなど)上で実行するように構成されているソフトウェアアプリケーションである。
何種類かの電子メールサーバは、専用の電子メールクライアントではなく、インターネットブラウザクライアント(Microsoft Internet Explorerなど)を介して電子メールをアクセスできるように構成されている。こうしたシステムでは、ブラウザは電子メールサーバと対話し、クライアントシステム上で実行する必要がある任意の機能は、ブラウザ(JavaScript(登録商標)によってダウンロードする)を介して、またはActive Server Pageの使用を介して実行される。
クライアントとサーバとはしばしば帯域幅が低く待ち時間の大きいネットワーク(遅いダイヤルアップ接続など)によって接続されるため、多くの電子メールクライアントおよびサーバは、保留中の命令を格納し、次いでいくつかの命令をいっしょに送信するように構成されている。例えば、クライアントは、オープンフォルダコマンド(open folder command)およびオープンカレンダコマンド(open calender command)を送信するのではなく、第1の命令を格納し、それを第2の命令と結合して2つの命令をいっしょに送信することができる。各伝送に関連する何らかのオーバーヘッドがあるため、この格納、結合、送信方式によって、結果的にネットワークおよびサーバのリソースをより効率良く使用できるようになる。
従来技術のシステムの中には、各クライアントおよびサーバに割り振られ、命令および/またはデータをいっしょに送信するまでのデータ格納エリアとして働く単一のバッファに依存するものもある。こうしたシステムの一例では、クライアントは、バッファを使用してサーバに送信すべき命令およびデータを格納する。バッファが満杯になる、あるいはほぼ満杯になると、クライアントは、バッファの中身をサーバに送信する。サーバは、受信した中身をバッファに格納して、命令の解析および実行を開始する。処理すべき次の要求を指定するポインタを使用してもよい。
サーバは、その応答をそのバッファ内でアセンブルし、そのバッファの中身がクライアントのバッファのサイズを超えないようにする。サーバがそのバッファ内のすべての要求を完了することができない(例えばバッファに十分な空間がない)場合、サーバは、完了していない要求をバッファに書き込み、完了した応答とともにそれらをクライアントに送り返す。
一部のシステムでは、クライアントを、クライアントがどれだけのメモリをそのバッファに割り振ることを望んでいるかを指定するように構成することができる。例えばクライアントは、32KBだけをそのバッファに充てることをサーバに示すことができる。これに応答してサーバは、一度に32KBを超えるものをクライアントに送信しないようにする。
多くの電子メールクライアントとサーバとの間で帯域幅が低く待ち時間の大きい性質の接続が使用されることを考慮すると、性能を向上させるシステムおよび方法が必要である。
以下に、本発明のいくつかの態様を基本的に理解できるようにするために本発明の簡単な概要を示している。この概要は、本発明の広範な概観ではない。本発明の鍵となる/重要な要素を識別するもの、あるいは本発明の範囲を述べるものではない。その唯一の目的は、後述するより詳細な説明の導入部として簡略化した形で本発明のいくつかの概念を示すことである。
応答を要求する方法を開示する。一実施形態では、本方法は、電子メールクライアントと電子メールサーバとの間で使用するために最適化される。この方法は、第1のバッファをクライアント上に割り振り、次いでそのバッファを使用してサーバに対する1つまたは複数の要求をアセンブルすることを含むことができる。また、クライアントを、第1のバッファの中身にヘッダを添付するように構成し、ヘッダを、サーバからの要求に対する応答をクライアントに戻す前に圧縮すべきかどうかについてのインジケータを含むように構成することもできる。
サーバの別の選択肢は、要求をクライアントに送信する前に、その要求を難読化する、あるいは暗号化することである。これらの機能のための対応するインジケータビットをヘッダに含めることもできる。
いくつかの実装形態では、クライアントを、RPC(遠隔手続き呼出し)を使用して要求を実施するように構成することができる。こうした実装形態の中には、ヘッダを固定長の遠隔手続き呼出しヘッダとすることができるものもある。一部の実施形態では、ヘッダに、クライアントが処理するように構成されている1組の応答の未圧縮サイズについてのインジケータをさらに含めることもできる。
また、データをサーバからクライアントに転送する方法も開示する。この方法は、クライアントから1バッチの要求を受信することを含むことができる。要求の1つは、連鎖を使用して要求に対する応答を送信するようサーバに求める要求である。これに応答して、サーバは、クライアントへの第1の組の応答をアセンブリし、圧縮し、それに関する情報(そのサイズなど)を提供するヘッダを添付することができる。サーバは、いくつかの応答の組についてこのプロセスを繰り返し、次いでヘッダおよび応答を1つのバッチでクライアントに送信することができる。各ヘッダは、そのバッチ内の次のヘッダへのポインタを含むことができ、それによってクライアントは応答を適切に復号することができる。そのバッチ内の最後のヘッダは、それが最後の応答に相当することを示す特殊タグで構成することができる。
一部の実装形態では、クライアントを、そのバッファのサイズをサーバに伝えるよう構成することができる。次いでサーバは、この情報を使用してそれ自体のバッファのサイズを設定し、それによって、クライアントが応答を受信したときに、その応答によりクライアントのバッファをオーバーフローするのを防ぐ。さらに、クライアントを、処理するよう構成された1組の未圧縮の応答のサイズを伝えるよう構成することができる。サーバは、この情報を使用して適切なサイズの応答の組を作成することができ、応答の組を圧縮しても、あるいは圧縮しなくてもよい。サーバは、サーバのバッファが満杯になるまで、あるいはほぼ満杯になるまで、応答の組を連鎖させ、圧縮、未圧縮に関わらず、組を引き続き連鎖させることができる。次いで連鎖された応答の組をクライアントに送信することができ、クライアントは、(該当する場合)その組を伸張し、応答の各組を個々に処理することができる。
サーバ上で複数の応答の組を圧縮し、これらを単一のバッチ(すなわち「連鎖された」または「パックされた」バッチ)で送信することによって、クライアントとサーバとの間の通信の性能が向上する可能性がある。従来のシステムは、圧縮を使用してクライアント−サーバ間で送信される総バイト数を低減させていたが、送信前にバッファをパックすることによって、より多くのデータを、バッファに追加し、各セッションで送信することができ、したがって待ち時間の大きいネットワークの場合に合計ラウンドトリップ回数が低減する。
この技術の応用範囲は広いが、特に電子メールクライアントと電子メールサーバの間の操作により適している。例えばこの方法を、CopyMessagesなど高速転送操作のためにMicrosoft Outlookとともに使用することができる。この機能は、サーバからクライアントにメッセージヘッダをコピーする。
本発明の他の特徴および利点を以下の説明に記載する。その一部は説明から明らかになり、一部は本発明の実施によって学びとることができる。本発明の特徴および利点は、添付の特許請求の範囲で特に指摘した手段および組合せによって実現し、得ることができる。本発明のこれらおよび他の特徴は、以下の説明および添付の特許請求の範囲から十分に明らかになり、あるいは以下に記載した本発明の実施によって学びとることができる。以下の詳細な説明に含まれる見出しは、単に構成上付したものであり、本発明の範囲または添付の特許請求の範囲を制限し、あるいは限定するためのものではない。
他の利点は、以下の詳細な説明を図面と併せ読むことによって明らかになる。
以下の説明では、本発明の様々な態様を説明する。説明上、本発明を完全に理解できるようにするために特定の構成および詳細を記載する。しかし、本発明を特定の詳細無しに実施することができることも、当技術分野の技術者であれば理解されよう。さらに、本発明を不明瞭にしないために、よく知られている特徴を省略、あるいは簡略化する場合がある。
本発明の様々な実施形態を説明する前に、本発明の様々な実施形態を実施することができるコンピュータおよびネットワーキング環境について説明する。必須ではないが、本発明は、コンピュータによって実行されるプログラムによって実施することができる。一般にこうしたプログラムには、特定のタスクを実行する、あるいは特定の抽象データ型を実装するルーチン、オブジェクト、構成要素、データ構造などがある。「プログラム」という用語は、本明細書で使用する場合、単一のプログラムモジュール、あるいは協働する複数のプログラムモジュールを意味する場合がある。「コンピュータ」という用語は、本明細書で使用する場合、パーソナルコンピュータ(PC)、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースのプログラム可能家庭用電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、マイクロプロセッサまたはマイクロコントローラを有する家庭用電気器具、ルータ、ゲートウェイ、ハブなど、1つまたは複数のプログラムを電子的に実行する任意の装置を含む。また本発明は、通信ネットワークを介してリンクされている遠隔処理装置によってタスクが実行される分散コンピューティング環境でも使用することができる。分散コンピューティング環境では、プログラムをローカルおよびリモートの双方のメモリ記憶装置に配置することができる。
次に本発明を使用できるネットワーク化環境の一例を、図1に関連して説明する。ネットワークの例は、クラウドで表したネットワーク11を介して互いに通信するいくつかのコンピュータ10を含む。ネットワーク11は、ルータ、ゲートウェイ、ハブなど、よく知られている多くの構成要素を含むことができ、それによってコンピュータ10が有線および/または無線の媒体を介して通信できるようになる。ネットワーク11を介して互いに対話するとき、1つまたは複数のコンピュータ10は、他のコンピュータ10に対してクライアント、サーバ、またはピアとして働くことができる。したがって、たとえ本明細書に含まれる特定の例がこれらのタイプのコンピュータのすべてに言及していなくても、本発明の様々な実施形態をクライアント、サーバ、ピア、またはそれらの組合せで行うことができる。
図2を参照すると、本明細書に記載した本発明のすべてまたは一部を実施できるコンピュータ10の基本的な構成の例を示している。その最も基本的な構成では、コンピュータ10は一般に、少なくとも1つの処理ユニット14およびメモリ16を含む。処理ユニット14は、本発明の様々な実施形態に従ってタスクを行うよう指示する命令を実行する。こうしたタスクを実行する際に、処理ユニット14は、電子信号を相手側のコンピュータ10、およびコンピュータ10の外部の装置に送信して何らかの結果をもたらすことができる。コンピュータ10の正確な構成およびタイプに応じて、メモリ16は、揮発性(RAMなど)、不揮発性(ROMやフラッシュメモリなど)、またはこの2つの何らかの組合せとすることができる。この最も基本的な構成を、図2に破線18で例示する。
コンピュータ10は、他の特徴および/または機能を備えていてもよい。これに限定されないが、コンピュータ10は、例えば磁気または光学式のディスクまたはテープなどの追加の記憶装置(取外し可能記憶装置20および/または取外し不可記憶装置22)を含んでいてもよい。コンピュータ記憶媒体には、コンピュータ実行可能命令、データ構造、プログラムモジュール、他のデータを含む、情報を格納するための任意の方法および技術で実施される揮発性および不揮発性、取外し可能および取外し不可の媒体などがある。コンピュータ記憶媒体には、それだけには限定されないが、RAM、ROM、EEPROM、フラッシュメモリ、CD−ROM、デジタル多用途ディスク(DVD)、または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、所望の情報を格納するために使用でき、コンピュータ10からアクセスできる他の任意の媒体などがある。こうしたコンピュータ記憶媒体であればどんなものでもコンピュータ10の一部とすることができる。
また、コンピュータ10は、装置が他の装置と通信できるようにする通信接続24を含んでいることが好ましい。通信接続(例えば通信接続24の1つ)は、通信媒体の一例である。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波、または他の移送機構などの変調されたデータ信号の形の他のデータを実施する。これには任意の情報配布媒体が含まれる。「通信媒体」という用語は、それだけには限定されないが、一例として、有線ネットワーク、または直接配線接続(direct−wired connection)などの有線媒体、および音響、RF、赤外線、その他の無線媒体などの無線媒体を含む。「コンピュータ可読媒体」という用語は、本明細書で使用する場合、コンピュータ記憶媒体および通信媒体の双方を含む。
また、コンピュータ10は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置26を含んでいてもよい。また、ディスプレイ30、スピーカ、プリンタなどの出力装置28を含んでいてもよい。こうしたすべての装置は、当技術分野ではよく知られており、ここで詳細に説明する必要はない。
(バッファパッキング)
図3を参照すると、本発明を実施できる電子メールネットワーク100の一例を示している。本発明の電子メールネットワーク100は、要求および応答の交換を使用して、電子メールネットワーク100内のクライアント構成要素とサーバ構成要素との間にクエリおよびデータを渡す。実際には、プロトコルの性能は、電子メールネットワーク100など、電子メールネットワーク内のクライアントとサーバとの間の通信の実施に使用される基礎を成す通信ネットワーク移送機構によって影響を受けることがある。例えば、基礎的通信ネットワーク移送機構として遠隔手続き呼出し(RPC)を使用する電子メールネットワークでは、より小さいサイズ(例えば2KB)の遠隔手続き呼出しを複数回行うことにより、大きいサイズ(例えば32KB)の遠隔手続き呼出しを1回だけ行う方がはるかに効率的となり得る。こうした電子メールネットワークにおいて性能を向上させることが知られている1つの方法は、複数の要求および/応答をバッファに入れて1回の遠隔手続き呼出しで送信することである。
一例として、図3は、電子メールクライアント102と電子メールサーバ106との間の要求および応答の交換を示している。これらの一方または双方は、例えばコンピュータ10のように構成することができる。この例では、電子メールクライアント102は、送信バッファ104を割り振り、電子メールサーバ106に送信される要求で送信バッファ104を満たす。要求は、1つまたは複数のサブ要求または遠隔操作(ROP)であってもよい。送信バッファ104が満杯(あるいはほぼ満杯)になると、電子メールクライアント102は、その中身を電子メールサーバ106に送信し、電子メールサーバ106は、それらを要求バッファ108に格納する。電子メールサーバ106は、要求バッファ108から要求を読み出し、それらを処理する。各要求を処理することによって、応答の形の結果が生成される。これらの応答は、電子メールクライアント102によって要求されたデータ(特定の電子メールメッセージなど)を含むことができる。電子メールサーバ106は、これらの応答を応答バッファ110に格納する。
本発明の一実施形態によれば、電子メールサーバ106は、各要求を処理するとき、どの要求が要求バッファ108から処理すべき次の要求であるかを追跡するためにポインタを使用する。電子メールサーバ106は、応答バッファ110が満杯である(例えば32KBのうち残りが8KB未満になった)と判断すると、要求バッファ108内にある要求の処理を停止する。処理されていない残りの要求(すなわち完了していない要求)は、応答バッファ110の中身に追加される。こうした完了していない要求および完了した要求に対する応答が、電子メールクライアント102にある受信バッファ112に送信される。
本発明の一実施形態では、電子メールクライアント102は、任意のバッファ104、108、110、112のサイズを指定することができる。応答のサイズは一般に、要求のサイズより大きい。そのため、応答バッファ110および受信バッファ112(ひとまとめにして「応答バッファ110および112」)のサイズは、電子メールクライアント102によって、送信バッファ104および要求バッファ108(ひとまとめにして「要求バッファ104および108」)のサイズより大きくなるように指定することができる。
本発明者が知っている従来技術の電子メールネットワークシステムは、電子メールクライアントおよび電子メールサーバでバッファを1つしか使用していなかったため、この機能を有していなかった。本明細書が利益を主張する仮出願の背景の部分では、電子メールクライアントおよび電子メールサーバがそれぞれ2つのバッファを有している電子メールネットワークについて記載しているが、出願人は、本発明より前にそれぞれで1つを超えるバッファを使用している電子メールネットワークを知らない。
図3に示す電子メールネットワーク100など、バッファを使用する一部の電子メールネットワークは、クライアント(電子メールクライアント102など)とサーバ(電子メールサーバ106など)の間で高速転送モードを使用することができる。高速転送モードは、例えばROPなど、クライアントによる要求を含み、こうした要求は、サーバにある高速転送データソースの初期化をもたらす要求、および高速転送データソースからクライアントへの効率的なデータ転送をもたらす要求という少なくとも2つのカテゴリに分けられる。高速転送データソースは、例えばデータベーステーブルでもよい。高速転送データソースは、データの作動可能な一時記憶装置(ready temporary store)として働き、別の方法で可能となるはずのものより短い遅延で後からデータの要求を処理できるようにする。高速転送モード要求の第2のカテゴリは、時として、応答のサイズを明示的に指定することによって効率の良いデータ転送を達成しようと努める。一例として、応答のサイズを、受信バッファ112全体マイナス応答のオーバーヘッドのサイズに設定することができる。
図4Aは、少なくとも2つの要求−応答サイクルを有する高速転送操作を示す。第1の要求401では、ROP(FXPrepareなど)が電子メールサーバ106上にある高速転送データソースを初期化する。電子メールサーバ106で、FXPrepareのみが処理され(すなわち高速転送データソースが初期化され)、その結果が第1の応答402で戻される。第2の要求403で、ROP(FXGetBufferなど)が電子メールサーバ106に、高速データソースから応答バッファ110を満たすよう要求する。電子メールサーバ106は、高速データソースを応答バッファ110に移し、その結果を第2の応答404で戻す。高速データソースが空になる前に電子メールサーバ106の応答バッファ110が満杯になった場合、追加のFXGetBuffer ROPが必要となることがある。
図4Bは、要求−応答サイクルが1回だけの高速転送操作を示す。第1の要求405で、FXPrepareおよびFXGetBufferがいずれも電子メールサーバ106によって処理され、両方の操作の結果が第1の応答406で戻される。各バッファの一部は共有データテーブルとして明示的に定義されているため、FXPrepareの結果は、電子メールサーバ106でFXGetBufferによって入手可能である。
要求−応答サイクルの数を低減させることが望ましい。こうした低減によって、データの転送がより効率的になるからである。要求−応答サイクルが1回を超える高速転送操作は、応答バッファ110が満杯になりすぎてFXGetBuffer ROPの結果を保持できないときに起こり得る。
次に図5を参照すると、クライアントの送信バッファ104の中身120の一例を示している。この例では、送信バッファ104は、遠隔手続き呼出し(RPC)ヘッダ122、およびいくつかの要求124を含む。
本発明の一態様によれば、RPCヘッダ122は、圧縮ビット126および難読化ビット(obfuscation bit)128を含むことができる。圧縮ビット126は、電子メールサーバ106が要求に対する応答を圧縮するかどうかを示す。電子メールサーバ106が応答を圧縮すべきであることを示すために、他の情報を中身120内に備えることもできる。圧縮が常に望ましいとは限らない。例えば、クライアントは待ち時間の小さい高速接続を有し、解凍を効率的に行うのに十分な予備の処理能力がない場合、クライアントは、圧縮を希望しないことを示す指示付きの要求を送信することができる。あるいは、クライアントが十分な処理能力を有しており、サーバへの接続が低帯域幅である場合、クライアントはサーバに(例えばヘッダに圧縮インジケータビットを設定して)圧縮を希望することを知らせることができる。
難読化ビット128は、電子メールサーバ106が要求を難読化するかどうかを示す。難読化とは、データがネットワークを介して明確に読取り可能なテキストとして送信されないようにするために行われる簡単な操作である。難読化の一例は、要求が送信される前にその要求をXOR(知られている難読化方法)することである。一部の実施形態では、難読化の代わりに暗号化を使用することができる。この場合もまた、要求を難読化あるいは暗号化すべきであることを示す他の情報を中身120内に含めることができる。
図5に示すように、いくつかの実施形態では、電子メールクライアント102は、以下で説明する連鎖を使用してクライアントの要求に応答するよう電子メールサーバ106に指示する特殊要求130を中身120に含めるよう構成することができる。
次に図6を参照すると、本発明の一実施形態によるクライアントとサーバとの間にデータを転送する方法を例示するフロー図を示している。ステップ600で開始し、電子メールサーバ106は、クライアントから複数の要求(要求124など)を受信する。
本発明の一実施形態によれば、電子メールクライアント102は、連鎖または非連鎖を、応答を送信するための電子メールサーバ106に要求することができる。ステップ602で、電子メールサーバ106は、要求124を検査して、要求に連鎖の要求(例えば特殊要求130)が含まれているかどうかを判定する。含まれていない場合は、ステップ602がステップ604に分岐して、電子メールサーバ106が要求124の応答の構築を開始する。図7に非連鎖を使用した応答の構築のプロセスの一例を示しており、図6の諸ステップがこの説明におけるこの例に当てはまる。
ステップ604(図6)で、電子メールサーバ106は、ヘッダ140を作成する。ステップ606で、要求124に対する応答142(図6)が取り出され、応答バッファ110に格納される。電子メールサーバ106は、応答142およびヘッダ140が応答バッファ110を満杯にする、あるいはほぼ満杯にするように十分な応答を生成したら、要求の処理を停止する。応用バッファ110が満杯またはほぼ満杯になったかどうかは、電子メールサーバ106および/または電子メールクライアント102によって定義することができる。一例として、応答バッファ110を、最初は32Kであったバッファの残りが8K未満になったときに満杯であるとみなすことができる。
電子メールクライアント102が(例えば圧縮ビット126を適切に設定することによって)圧縮をサポートしていることを示している場合、ステップ608で、電子メールサーバ106は、応答バッファ110内の応答を圧縮して応答142の圧縮された1組の応答144(図7)にする。同様に、この場合もまたステップ608で、電子メールクライアント102が(例えば難読化ビット128を適切に設定することによって)難読化をサポートしていることを示している場合、電子メールサーバ106は、応答142を命令通り難読化または暗号化することができる。
ステップ610で、処理されていない任意の要求が要求バッファ108内の応答に追加される。これらの未処理の応答は、おおまかに示した、図7のメモリ146の圧縮後の未使用のメモリに入れることができる。次いでステップ612で、電子メールサーバ106は、応答および完了していない要求を電子メールクライアント102に送信する。
上述し、また図7に示した例からわかるように、非連鎖の応答での圧縮後の未使用のメモリ(すなわちメモリ146)はかなりの量となり得る。本発明の一態様によれば、未使用のメモリ量は、連鎖プロセスを使用して最小限に抑えることができる。しかし、これまでに説明した非連鎖方法は、例えば電子メールクライアント102が連鎖を望まない場合、例えば高速転送モードを要求しないROPにおいて有効となり得る。
電子メールクライアント102が、電子メールサーバ106は連鎖を使用すべきであることを示す場合、ステップ602はステップ614に分岐して、電子メールサーバ106が第1のヘッダ150(図8)を作成する。図8は、応答を連鎖用に構築するプロセスの一例を示しており、ステップ614から620の説明とともに使用する。
ステップ616で、電子メールサーバ106は、応答152を取り出し、それらで応答バッファ110を満たす。この場合もまた、応答バッファ110は、所定の限界に達したら満杯になったとみなすことができる。1つだけの応答を取得して応答バッファ110を満たすことはあり得るが、本明細書で使用する場合、「1組の応答」とは、1つまたは複数の応答を意味する。ステップ618で、応答バッファ110が満杯、またはほぼ満杯になったら、電子メールサーバ106は、電子メールクライアント102からの命令に従って応答バッファ110内の応答を(例えば圧縮ビット126および/または難読化ビット128によって)圧縮し、および/または難読化する。圧縮された1組の応答154が作成され、要求バッファ108内に未使用のメモリの大きい部分156が残される。
圧縮および/または難読化の後、ステップ620で、追加の応答を応答バッファ110内に収めることができるかどうかの判定が行われる。この場合もまた、追加の応答が収まるかどうかは、電子メールクライアント102または電子メールサーバ106によって定義することができる。しかし、最初の圧縮の後、追加のスペースが使用可能であることが予想される。追加のスペースが使用可能である場合、プロセスは折り返してステップ614に戻り、電子メールサーバ106が第2のヘッダ158(図8)を作成し、添付し、再度要求の処理を開始する(ステップ616)。
応答バッファ110が応答で満杯、あるいはほぼ満杯になったら、電子メールサーバ106は、ステップ618で、新たに追加された応答160を圧縮し、かつ/または難読化する。ステップ620で、再度、他の応答のための空間が残っているかどうかの判定が行われる。空間が残っている場合、プロセスは再度ステップ614に戻って、第3のヘッダが添付され、電子メールサーバ106は、再度応答バッファ110を応答で満たし、応答を圧縮し、かつ/または難読化する(ステップ616および618)。このプロセスは、すべての要求が完了する、または応答バッファ110がヘッダおよび対応する圧縮された応答で満杯、またはほぼ満杯になるまで繰り返される。応答バッファ110が圧縮された応答およびヘッダで満杯、あるいはほぼ満杯になったら(図8の下図)、ステップ620はステップ610に分岐し、電子メールサーバ106が(ある場合は)任意の完了していない要求を追加し、応答バッファ110の中身を電子メールクライアント102に送信する。
次いで応答バッファ110の中身をその受信バッファ112内に受信した電子メールクライアント102は、ヘッダ間の応答の各組を処理することができる。応答の組が圧縮され、かつ/または難読化されている場合、電子メールクライアント102は、難読化を伸張または平文化(reverse)することができる。こうした場合、電子メールクライアント102は、次いで処理する複数の応答の組をまだ有している。
図7の非連鎖プロセスで送信されたデータと、図8の連鎖プロセスで送信されたデータの間の違いからわかるように、連鎖によって複数のヘッダ/応答の対をいっしょに連鎖し、またはパックして1つの「バッチ」で送信できるようになり、それによって、場合によっては電子メールクライアント102と電子メールサーバ106の間の往復回数が低減する。このプロセスは、本明細書では応答の「連鎖」または「パッキング」と呼ぶ。連鎖は、特に低帯域幅環境のネットワークにかなり効率的となり得る。本発明の一実施形態によれば、電子メールサーバ106は、高速転送モードの要求には連鎖を行い、高速転送モードではない要求には連鎖を行わないようにすることができる。
次に図9を参照すると、応答バッファ159のより詳細な例を示している。この例では、各ヘッダ161、161、・・・161がバッファ内の次ヘッダへのポインタ162・・・162を含む。あるいは、ヘッダ161は、圧縮サイズの対応する応答を含むことができる。いずれのイベントでも、この特徴によって電子メールクライアント102は、各応答のサイズおよび次の応答の先頭の位置がわかるため、圧縮されたバッチを受信すると、それをより簡単にデコードすることができる。
また、各ヘッダ161は、ヘッダ161がバッファ内の最後の応答に相当するかどうかを示す情報164・・・164を、例えばビットファイルの形で含むこともできる。また、ヘッダ161は、未圧縮サイズの対応する応答情報など他の情報を含むこともできる。
電子メールサーバ106は、複数の電子メールクライアント102から並行して要求を受信し、それらを処理できることに注意されたい。このため、電子メールクライアント102を1つだけ示しているのは、単に図および付随する説明を簡略化するためである。
(より大きい応答バッファの使用)
上述したように、電子メールクライアント102は、電子メールサーバ106に、どんなサイズの要求バッファおよび/応答バッファを使用するかを通知するように構成することができる。例えば、本発明の一実施形態では、要求バッファ104および108はそれぞれ32KB、応答バッファ110および112の最適なサイズはそれぞれ96KBであり、3対1の比率である。
電子メールクライアント102は、より大きい応答バッファ110および112を指定することはできるが、電子メールクライアント102を、応答バッファ110および112の実際のサイズより小さい応答のデータチャンクを扱うように構成することができる。例えば、応答バッファ110および112に対して96Kのバッファを指定しても良く、しかし電子メールクライアント102は、応答のすべてのデータチャンクが32K以下となることを希望しても良い。本発明のパッキングまたは連鎖によって、こうしたシステムが有効となる。
図10のフロー図に、この機能を可能にする方法の一実施形態を示している。ステップ1000で開始し、電子メールクライアント102は、1組の要求を、応答バッファサイズ(例えば96K)を定義する情報、およびクライアントが処理するように構成されたデータチャンクのサイズに関する情報とともに電子メールサーバ106に送信する。ステップ1002で、電子メールサーバ106は、クライアントによって定義されたデータチャンクのサイズと等しいフレームを応答バッファ110内に作成する。次いで電子メールサーバ106は、ステップ1004で、ヘッダを応答バッファ110内のフレームに書き込む。ステップ1006で、電子メールサーバ106は応答の処理を開始し、そのフレームが満杯になる、あるいはほぼ満杯になるまで応答を処理する。応答の組は、ステップ1008で圧縮または難読化しても、あるいはしなくてもよい。
次いでステップ1010で、応答バッファ110が満杯かどうかの判定が行われる。一般に、応答バッファ110は、最初の応答処理の後では満杯にならない。応答バッファ110が満杯になっていない場合、プロセスは折り返しステップ1002に戻り、電子メールサーバ106が、ちょうど今処理された応答の組の最後から始まる新しいフレームを作成する。この次のフレームをどこから開始するかが電子メールサーバ106にわかるようにポインタを使用してもよい。応答バッファ110内に十分な空間がある場合は、新しいフレームも電子メールクライアント102が扱うことができるデータチャンクのサイズとなる。ステップ1004で、電子メールサーバ106は、次のヘッダを新しいフレームに書き込む。次いでプロセスがステップ1010に進む。
応答バッファ110が満杯になる(あるいはすべての要求が処理されるかのどちらかが先)と、プロセスはステップ1012に分岐し、電子メールサーバ106が応答バッファ110内の残りの未圧縮の要求をコピーする。ステップ1014で、電子メールサーバ106は、応答バッファ110の中身を電子メールクライアント102に送信する。
応答バッファ110の中身をその受信バッファ112に受信した電子メールクライアント102は、次いでヘッダ間の各データチャンク(応答の組)を処理することができる。応答が圧縮または難読化されていない場合、電子メールクライアント102は、ヘッダ間の応答の各組をそのまま処理することができる。応答の組は、電子メールクライアント102によって定義されたデータチャンク以下のサイズなので、電子メールクライアント102は、データの組を適切に処理できるはずである。応答の組が圧縮され、および/または難読化されている場合、電子メールクライアント102は、難読を解凍または逆転することができる。こうした場合、電子メールクライアント102は、それぞれ電子メールクライアント102が処理できるデータチャンクのサイズ以下の複数の応答の組をまだ有している。
(サーバを錯覚させてより多くの要求を処理させること)
電子メールサーバ106は、1組の要求の処理を完了したとき、「だまされ」て引き続き別の要求を処理しなければならない場合がある。例えば、既存の電子メールサーバは一般に、要求を処理し、一般に電子メールクライアント102によって指示されているあるサイズ(例えば32KB)までの応答を提供するように構成されている。この処理の後、既存の電子メールサーバは、応答が準備できていることを示す応答(FXPrepare応答)を送信する、あるいは応答を自動的に送信する(FXGetBuffer応答)ように構成される。しかし、本明細書で開示した圧縮を使用して、電子メールサーバ106がFXGetBuffer応答に対してさらに多くの要求を処理して、応答バッファ110内の追加のスペースを満たすようにすることが望ましい場合がある。追加のスペースは、圧縮によって作成することができる。あるいは、上述の大きいバッファの実施形態が、そのフレームの1つを処理した後、追加のスペースを有してもよい。
図11に、この状況を扱うための方法の一実施形態を示している。ステップ1100で開始し、応答のための空間がさらにあるかどうか、および処理する要求がさらにあるかどうかの判定が行われる。ない場合、ステップ1100はステップ1102に分岐し、電子メールサーバ106は、応答を電子メールクライアント102に送信する。1組の応答を提供した後の電子メールサーバ106の状況が、処理するものがさらにあり、それを処理するための空間がさらにあることを示す場合、ステップ1100はステップ1104に分岐し、電子メールサーバ106は、「偽」のインバウンド要求(例えば偽のFXGetBUffer要求)を生成する。次いでこの擬似RPC(遠隔手続き呼出し)インバウンド要求が、あたかも電子メールクライアント102から受信したかのように電子メールサーバ106によって処理される。RPCは、実際にはリモートコンピュータから送信されるのではなく、代わりにサーバ内から送信されるという点で「擬似」である。この擬似RPCのアウトバウンドバッファは、圧縮後の元のアウトバウンドバッファ(上記で定義されたフレームによって限定できる)の残りの部分となるように設定される。次いでステップ1106で、電子メールサーバ106は、上述したように新しい応答を処理する。
電子メールサーバ106は、次の基準の1つに達するまで引き続きこのプロセスを繰り返す。基準とは、インバウンド要求に処理するものは何も残っていない、残りのアウトバウンドバッファサイズが所定のしきい値(例えば8KB)未満である、最大数のバッファが連鎖された(例えば64個)、あるいはハードエラーがあったという基準である。
パックされた応答の各組は、それ自体のフラグ付きのそれ自体のヘッダを有する。1つのパケットは圧縮し、次のパケットは難読化し、あるいは、いずれのパケットも圧縮または難読化しないようにすることができる。連鎖された応答の新しいバッファごとにフラグに従う。
(バッファの中身の例)
以下は、アウトバウンド応答バッファ内の連鎖された2つのバッファに関する一例の詳細図である。
Figure 2004173287
上に示したように、応答がパックされた各バッファは、それ自体のHSOT(Handle to Store Operation Table)テーブルを有している。HOSTは、各ネットワーク要求内にある識別子であり、それが電子メールサーバ106上のどのオブジェクトに作用しているかを示す。これはHSOTのテーブルであり、入力項目は内部記憶オブジェクトに相当する。要求バッファ108内の各操作には、その操作がどの記憶オブジェクトに適用するかを識別するこのテーブル内へのインデックスが含まれている。また、操作中に新しい内部記憶オブジェクトが作成された場合、電子メールサーバ106は、入力項目をこのテーブルに追加する。HSOTテーブルは、リスト内の第1のものと値が異なるべきではなく、上述したようにFXGetBuffer ROPで使用したものを含め、そこまでのすべてのHSOTのHSOTエントリしか含んでいない。これは、電子メールサーバ106での複雑さを低減するので、主に実施上の決定である。HSOTテーブルは一般に、1組のダブルワード(DWORD)以下であるため、帯域幅は大幅には消費されないはずである。
これは単に一例であり、異なる実装形態の詳細は様々であることに注意されたい。例えば、フラグのいくつかは、電子メールクライアント102および/または電子メールサーバ106がどの機能をサポートするかに基づいて異なるように解釈される。例えば、電子メールクライアント102は、パックされ、かつ/または圧縮されたバッファをサポートしていることを示しているが、電子メールサーバ106は、これらの一方または双方をサポートしていない場合、対応するフラグを無視することがある。
上述したように、2つの新しいレジストリキーを電子メールクライアント102上で追加して、電子メールクライアント102が連鎖された応答を使用するべきかどうか、アウトバウンドバッファサイズをどれだけにすべきか(例えば32K≦サイズ≦128K)を切り替えることができる。これはまた、圧縮を要求するために使用することもできる。こうした特徴は、実装に応じてデフォルトで有効にする、あるいはデフォルトで無効にすることができる。
一部の実装形態では、電子メールサーバ106に行くインバウンドバッファをパックすることができる。これらの実装形態では、電子メールサーバ106について上述したようにパッキングを扱う同様のプロセスを電子メールクライアント102上で実施することができる。しかし、項目のダウンロードは一般にアップロードよりより時間がかかるため、一部の実装形態は、インバウンドバッファをパッキング無しに電子メールサーバ106に送信しても良い。
この開示は、電子メールクライアントおよびサーバの実装形態に焦点を置いているが、本明細書で開示したシステムおよび方法は、他のタイプのアプリケーションにも適用可能である。例えば、本明細書で開示した技術を、MicrosoftのMapPointなどのマッピングアプリケーションにおけるマッピングクライアントとサーバとの間の情報の同期化に適用することもできる。さらに、システムおよび方法の実施形態をソフトウェアアプリケーションに関して説明してきたが、システムはハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組合せで実施できることを当業者であれば理解されよう。例ではダイヤルアップ接続に焦点を置いているが、他のタイプのネットワーク接続(例えばそれだけには限定されないが、LAN、無線、ISDN、DSLなど)も考えられる。
したがって、バッファパッキングを使用したクライアントアプリケーションとサーバアプリケーションとの間の通信のための新しく有用なシステムおよび方法を提供してきたことがわかる。本発明の原理を適用できる多くの可能な実施形態の観点から、図面と関連して本明細書に記載した実施形態は、単に例にすぎず、本発明の範囲を限定するものとみなされないものとする。例えば、ソフトウェアで示した実施形態の例の要素をハードウェアで、またはその逆で実施できる、あるいは実施形態の例の構成および詳細を本発明の意図から逸脱することなく変更できることを当業者であれば理解されよう。したがって、本明細書に記載した本発明は、添付の特許請求の範囲およびその均等物の範囲内に含まれるこうした実施形態すべてを企図する。
本発明を組み込むことができるコンピュータネットワークを表すブロック図である。 本発明を組み込むことができるコンピュータの構造を示すブロック図である。 本発明による電子メールクライアントと電子メールサーバの間の要求および応答の交換を示すブロック図である。 本発明の一態様による2段階の高速転送モードプロセスを表す図である。 本発明の一態様による1段階の高速転送モードプロセスを表す図である。 本発明の一実施形態による要求を表すブロック図である。 本発明の一実施形態による電子メールサーバによる要求処理の扱い方を表すフロー図である。 本発明の一実施形態による電子メールサーバによる圧縮を表す図である。 本発明の一実施形態による電子メールサーバによる応答の圧縮および連鎖を表す図である。 本発明の一実施形態による電子メールサーバの応答バッファの中身を表す図である。 本発明の一実施形態による、応答のフレームをフレームより大きいバッファ以内で電子メールクライアントに提供するために電子メールサーバによって行われるステップの概略を表すフロー図である。 本発明の一実施形態による、サーバを錯覚させて応答バッファへの追加応答を追加させるステップの概略を表すフロー図である。
符号の説明
10 コンピュータ
11 ネットワーク
14 処理ユニット
16、146 メモリ
20 取外し可能記憶装置
22 取外し不可記憶装置
24 通信接続
26 入力装置
28 出力装置
30 ディスプレイ
100 電子メールネットワーク
102 電子メールクライアント
104 送信バッファ
106 電子メールサーバ
108 要求バッファ
110 応答バッファ
112 受信バッファ
120 中身
122 遠隔手続き呼出しヘッダ
124 要求
126 圧縮ビット
128 難読化ビット
130 特殊要求
140、161 ヘッダ
142、152、160 応答
144、154 圧縮された1組の応答
150 第1のヘッダ
156 未使用メモリの大きい部分
158 第2のヘッダ
159 応答バッファ
162 ポインタ
164 情報
401、405 第1の要求
402 第1の応答
403、406 第2の要求
404 第2の応答

Claims (24)

  1. クライアントからの要求のバッチに応答するコンピュータで実施する方法であって、
    a)応答のサイズが所望の量未満になるまで要求をトラバースし応答を生成することであって、前記応答は、第1の組の応答を備えること、
    b)前記第1の組の応答にヘッダを添付すること、
    c)前記第1の組の応答を圧縮すること、
    d)追加の応答のサイズおよびバッファの他の中身が前記所望の量未満になるまで残りの要求をトラバースし、各要求のトラバースに応答して、前記追加の応答を作成することであって、前記追加の応答は、追加の1組の応答を備えること、
    e)追加のヘッダを前記追加の1組の応答に添付すること、および
    f)前記ヘッダおよび応答の組をクライアントに送信すること
    を備えることを特徴とする方法。
  2. 前記バッファを送信する前に
    g)前記追加の1組の応答を圧縮すること、
    h)前記ヘッダおよび前記応答の組が所望の量のサイズに達する、あるいは前記要求がすべてトラバースされるまでステップd)、e)、およびg)を繰り返すこと
    をさらに備えることを特徴とする請求項1に記載の方法。
  3. 前記所望の量は前記クライアントが処理するように構成された1組の応答のサイズに相当することを特徴とする請求項1に記載の方法。
  4. 前記所望の量は前記応答の組および前記ヘッダを保持するように設定されているバッファに関連することを特徴とする請求項1に記載の方法。
  5. ステップd)の前に要求を処理するためのインバウンド要求を生成することをさらに備えることを特徴とする請求項1に記載の方法。
  6. 前記インバウンド要求は擬似遠隔手続き呼出しであることを特徴とする請求項5に記載の方法。
  7. 請求項1に記載の前記方法を実行するためのコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
  8. クライアントからの要求のバッチに対して応答するコンピュータで実施する方法であって、
    a)応答のサイズがサーバのバッファ内の第1のフレームの所望の量を満たすまで、前記応答をトラバースし、各要求のトラバースに応答して前記応答を生成することであって、前記応答は第1の組の応答を備え、前記第1のフレームのサイズは前記クライアントが処理するように構成される1組の応答のサイズに関連し、前記第1のフレームのサイズは前記バッファのサイズ未満であること、
    b)前記第1の組の応答にヘッダを添付すること、
    c)前記応答のサイズが前記バッファ内の追加のフレームの所望の量を満たすまで、残りの要求をトラバースし、各要求のトラバースに応答して追加の応答を生成することであって、前記追加の応答は追加の1組の応答を備え、前記追加のフレームのサイズは前記クライアントが処理するように構成される1組の応答のサイズまたは前記バッファの残りのどちらか小さい方に関連し、前記追加のフレームのサイズは前記バッファのサイズ未満であること、
    d)追加のヘッダを前記追加の1組の応答に添付すること、および
    e)前記バッファの中身を前記クライアントに送信すること
    を備えることを特徴とする方法。
  9. f)ステップc)の前に前記第1の組の応答を圧縮すること
    をさらに備えることを特徴とする請求項8に記載の方法。
  10. g)ステップe)の前に前記追加の1組の応答を圧縮すること
    をさらに備えることを特徴とする請求項9に記載の方法。
  11. 前記バッファが所望の量で満たされるまでステップc)、d)、およびg)を繰り返すこと
    をさらに備えることを特徴とする請求項10に記載の方法。
  12. 前記バッファが所望の量で満たされるまでステップc)およびd)を繰り返すことをさらに備えることを特徴とする請求項8に記載の方法。
  13. ステップc)の前に要求を処理するためのインバウンド要求を生成することをさらに備えることを特徴とする請求項8に記載の方法。
  14. 前記インバウンド要求は擬似遠隔手続き呼出しであることを特徴とする請求項13に記載の方法。
  15. 請求項8に記載の前記方法を実行するためのコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
  16. 複数の操作のための要求と、
    前記要求に対する応答を連鎖を介して戻すべきであることを示す指示と
    を備えるデータ構造を格納していることを特徴とするコンピュータ可読媒体。
  17. 連鎖化は
    a)第1の組の応答をアセンブルすること、
    b)前記第1の組の応答にヘッダを添付すること、および
    c)1つまたは複数の追加の応答の組についてa)およびb)を繰り返すこと
    を備えることを特徴とする請求項16に記載のデータ構造。
  18. 応答の組を圧縮すべきであることを示す指示をさらに備えることを特徴とする請求項17に記載のデータ構造。
  19. 圧縮前の前記応答の組のサイズ制限の指示をさらに備えることを特徴とする請求項18に記載のデータ構造。
  20. 前記応答の組のサイズ制限の指示をさらに備えることを特徴とする請求項17に記載のデータ構造。
  21. サーバと前記クライアントとの間でデータを転送する方法であって、
    a)複数の要求をクライアントから受信することであって、前記要求に対する応答の連鎖についての要求を含むこと、
    b)前記クライアントに対する第1の組の応答をアセンブルすること、
    c)前記第1の組の応答を圧縮すること、
    d)前記第1の組の応答にヘッダを添付すること、
    e)1つまたは複数の追加の応答の組について(b)から(d)までを繰り返すこと、および
    f)前記圧縮した応答の組およびヘッダをともに前記クライアントに送信すること
    を備えることを特徴とする方法。
  22. ステップe)の前に要求を処理するためのインバウンド要求を生成することをさらに備えることを特徴とする請求項21に記載の方法。
  23. 前記インバウンド要求は擬似遠隔手続き呼出しであることを特徴とする請求項22に記載の方法。
  24. 請求項21に記載の前記方法を実行するためのコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
JP2003391493A 2002-11-20 2003-11-20 パックし圧縮したバッファを使用してクライアント−サーバ間の通信を向上させるシステムおよび方法 Expired - Lifetime JP4532098B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US42815302P 2002-11-20 2002-11-20
US10/442,380 US7111039B2 (en) 2002-11-20 2003-05-21 System and method for using packed compressed buffers for improved client server communications

Publications (2)

Publication Number Publication Date
JP2004173287A true JP2004173287A (ja) 2004-06-17
JP4532098B2 JP4532098B2 (ja) 2010-08-25

Family

ID=32302756

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003391493A Expired - Lifetime JP4532098B2 (ja) 2002-11-20 2003-11-20 パックし圧縮したバッファを使用してクライアント−サーバ間の通信を向上させるシステムおよび方法

Country Status (14)

Country Link
US (2) US7111039B2 (ja)
EP (2) EP1453270B1 (ja)
JP (1) JP4532098B2 (ja)
KR (1) KR100984457B1 (ja)
CN (1) CN100534071C (ja)
AT (1) ATE487310T1 (ja)
AU (1) AU2003257902B2 (ja)
BR (1) BRPI0305138B1 (ja)
CA (1) CA2448170C (ja)
DE (1) DE60334770D1 (ja)
HK (1) HK1152425A1 (ja)
IN (1) IN2014DE02379A (ja)
MX (1) MXPA03010478A (ja)
RU (1) RU2365049C2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010206262A (ja) * 2009-02-27 2010-09-16 Ricoh Co Ltd 画像形成装置、画像形成システム、情報処理方法、及び、コンピュータプログラム

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7444381B2 (en) * 2000-05-04 2008-10-28 At&T Intellectual Property I, L.P. Data compression in electronic communications
US7653059B1 (en) * 2002-12-20 2010-01-26 Symantec Operating Corporation Communication sessions for a computer network
US7546613B2 (en) * 2004-09-14 2009-06-09 Oracle International Corporation Methods and systems for efficient queue propagation using a single protocol-based remote procedure call to stream a batch of messages
US7827141B2 (en) * 2005-03-10 2010-11-02 Oracle International Corporation Dynamically sizing buffers to optimal size in network layers when supporting data transfers related to database applications
US7917904B2 (en) 2006-01-06 2011-03-29 Microsoft Corporation Automated analysis tasks of complex computer system
US8244883B2 (en) * 2006-08-03 2012-08-14 Citrix Systems, Inc. Systems and methods of for providing multi-mode transport layer compression
JP2008099261A (ja) * 2006-09-12 2008-04-24 Yamaha Corp 通信装置およびプログラム
US20080177872A1 (en) * 2006-11-10 2008-07-24 Vengroff Darren E Managing aggregation and sending of communications
US9070114B2 (en) * 2006-11-21 2015-06-30 Blackberry Limited Method for receiving email attachment on a portable electronic device
US8942182B2 (en) * 2006-11-21 2015-01-27 Blackberry Limited Adjustable download rate for a portable electronic device
US8145766B2 (en) 2007-08-08 2012-03-27 Research In Motion Limited Method for pre-fetching data chunks of an email attachment on a portable electronic device
FR2920935B1 (fr) 2007-09-06 2009-12-11 Miyowa Procede pour echanger des requetes entre l'application informatique d'un terminal mobile et un serveur de messagerie instantanee
FR2923130A1 (fr) * 2007-10-24 2009-05-01 Miyowa Sa Procede et systeme de messagerie instantanee pour terminaux mobiles equipe d'un serveur de presence virtuelle permettant de gerer automatiquement une session de messagerie instantanee
FR2923131B1 (fr) * 2007-10-24 2010-01-15 Miyowa Procede et systeme de messagerie instantanee pour terminaux mobiles equipe d'un serveur de presence virtuelle configure pour gerer differentes listes de contacts d'un meme utilisateur
FR2926176B1 (fr) * 2008-01-08 2014-10-10 Miyowa Reseau de communication de transfert d'informations entre un terminal mobile et des serveurs sources, ainsi que terminal et procede de gestion de transfert d'informations dans un tel reseau.
US8812853B1 (en) * 2008-03-18 2014-08-19 Avaya Inc. Traceability for threaded communications
US20100179982A1 (en) * 2009-01-15 2010-07-15 Miyowa Method for auditing the data of a computer application of a terminal
US20100228790A1 (en) * 2009-03-03 2010-09-09 Miyowa Method for activating functionalities proposed in a computer terminal
FR2944624A1 (fr) * 2009-04-16 2010-10-22 Miyowa Procede pour autoriser une connexion entre un terminal informatique et un serveur source
JP5124527B2 (ja) * 2009-05-26 2013-01-23 株式会社日立製作所 メール中継装置
US8549106B2 (en) * 2009-06-15 2013-10-01 Microsoft Corporation Leveraging remote server pools for client applications
US8806190B1 (en) 2010-04-19 2014-08-12 Amaani Munshi Method of transmission of encrypted documents from an email application
US9240952B2 (en) * 2011-04-02 2016-01-19 Open Invention Network, Llc System and method for communication between networked applications
JP5858046B2 (ja) * 2011-09-30 2016-02-10 富士通株式会社 無線通信システム、移動局、基地局及び無線通信システム制御方法
US9894421B2 (en) * 2012-10-22 2018-02-13 Huawei Technologies Co., Ltd. Systems and methods for data representation and transportation
US10423349B2 (en) * 2017-08-23 2019-09-24 Western Digital Technologies, Inc. Logical and physical address field size reduction by alignment-constrained writing technique
US11044200B1 (en) 2018-07-06 2021-06-22 F5 Networks, Inc. Methods for service stitching using a packet header and devices thereof
US11836388B2 (en) * 2021-04-21 2023-12-05 EMC IP Holding Company LLC Intelligent metadata compression
CN117280333A (zh) * 2021-11-19 2023-12-22 华为技术有限公司 一种目录读取系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675890A (ja) * 1992-08-26 1994-03-18 Chugoku Nippon Denki Software Kk クライアント・サーバ間の要求データ応答データ授受方式
JPH10334003A (ja) * 1997-06-03 1998-12-18 Nippon Joho Tsushin Consulting Kk 電子データ通信システム及び方法と電子メール通信システム及び方法
JP2000278311A (ja) * 1999-03-19 2000-10-06 Mobile Information Dynamics Kk メールの転送方法および端末装置
JP2002135297A (ja) * 2000-10-27 2002-05-10 Nippon Telegr & Teleph Corp <Ntt> 電子メールデータ中継方法及びシステム

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537551A (en) * 1992-11-18 1996-07-16 Denenberg; Jeffrey N. Data compression method for use in a computerized informational and transactional network
US5325361A (en) 1992-12-01 1994-06-28 Legent Corporation System and method for multiplexing data transmissions
JP3184763B2 (ja) 1995-06-07 2001-07-09 インターナショナル・ビジネス・マシーンズ・コーポレ−ション マルチメディア直接アクセス記憶装置及びフォーマット方法
US6321274B1 (en) * 1996-06-28 2001-11-20 Microsoft Corporation Multiple procedure calls in a single request
US6385672B1 (en) * 1997-05-30 2002-05-07 3Com Corporation System to optimize packet buffer utilization via selectively partitioned transmit and receive buffer portions
US6073137A (en) 1997-10-31 2000-06-06 Microsoft Method for updating and displaying the hierarchy of a data store
US6219669B1 (en) 1997-11-13 2001-04-17 Hyperspace Communications, Inc. File transfer system using dynamically assigned ports
CA2275840A1 (en) 1998-08-18 2000-02-18 Lucent Technologies Inc. Generalized messaging construct
US6324544B1 (en) 1998-10-21 2001-11-27 Microsoft Corporation File object synchronization between a desktop computer and a mobile device
AU3767100A (en) 1999-03-22 2000-10-09 Webxi High speed streaming protocol
US6640244B1 (en) * 1999-08-31 2003-10-28 Accenture Llp Request batcher in a transaction services patterns environment
US6304898B1 (en) 1999-10-13 2001-10-16 Datahouse, Inc. Method and system for creating and sending graphical email
DE60142556D1 (de) 2000-04-10 2010-08-26 Research In Motion Ltd System und verfahren zum bündeln von informationen
AU2001287143A1 (en) 2000-09-08 2002-03-22 Plumtree Software Method and system for assembling concurrently-generated content
CA2329891A1 (en) 2000-12-29 2002-06-29 Subsecond Technology Inc. Method and apparatus for remote database maintenance and access
AUPR444601A0 (en) 2001-04-17 2001-05-17 Pro-Super Holdings Limited Business tracking system
US7149813B2 (en) 2001-08-14 2006-12-12 Microsoft Corporation Method and system for synchronizing mobile devices
US7620688B2 (en) 2003-01-03 2009-11-17 Microsoft Corporation Progress mode for electronic mail component

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675890A (ja) * 1992-08-26 1994-03-18 Chugoku Nippon Denki Software Kk クライアント・サーバ間の要求データ応答データ授受方式
JPH10334003A (ja) * 1997-06-03 1998-12-18 Nippon Joho Tsushin Consulting Kk 電子データ通信システム及び方法と電子メール通信システム及び方法
JP2000278311A (ja) * 1999-03-19 2000-10-06 Mobile Information Dynamics Kk メールの転送方法および端末装置
JP2002135297A (ja) * 2000-10-27 2002-05-10 Nippon Telegr & Teleph Corp <Ntt> 電子メールデータ中継方法及びシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010206262A (ja) * 2009-02-27 2010-09-16 Ricoh Co Ltd 画像形成装置、画像形成システム、情報処理方法、及び、コンピュータプログラム

Also Published As

Publication number Publication date
CN100534071C (zh) 2009-08-26
DE60334770D1 (de) 2010-12-16
AU2003257902B2 (en) 2009-05-07
AU2003257902A1 (en) 2004-06-03
IN2014DE02379A (ja) 2015-06-26
HK1152425A1 (en) 2012-02-24
RU2003133771A (ru) 2005-05-10
ATE487310T1 (de) 2010-11-15
CA2448170C (en) 2012-07-17
BRPI0305138B1 (pt) 2017-03-07
CA2448170A1 (en) 2004-05-20
JP4532098B2 (ja) 2010-08-25
MXPA03010478A (es) 2005-06-03
US20060265510A1 (en) 2006-11-23
KR20040044356A (ko) 2004-05-28
EP2264970B2 (en) 2016-05-04
KR100984457B1 (ko) 2010-09-29
EP2264970B1 (en) 2013-09-11
US7451180B2 (en) 2008-11-11
CN1574795A (zh) 2005-02-02
US20040098495A1 (en) 2004-05-20
EP1453270B1 (en) 2010-11-03
EP2264970A1 (en) 2010-12-22
RU2365049C2 (ru) 2009-08-20
EP1453270A1 (en) 2004-09-01
US7111039B2 (en) 2006-09-19
BR0305138A (pt) 2004-08-31

Similar Documents

Publication Publication Date Title
JP4532098B2 (ja) パックし圧縮したバッファを使用してクライアント−サーバ間の通信を向上させるシステムおよび方法
US11275530B2 (en) Method, system, and related device for NAS data access
TWI332150B (en) Processing data for a tcp connection using an offload unit
US8832247B2 (en) Methods and systems for caching content at multiple levels
US7185060B2 (en) Message processing pipeline for streams
US20060167969A1 (en) Data caching based on data contents
US20170012906A1 (en) Accelerated data transfer using thread pool for parallel operations
US20070101023A1 (en) Multiple task offload to a peripheral device
US20050187979A1 (en) System and method for message-level connection management
CN102227718A (zh) 用于远程桌面协议的硬件加速
US20090217030A1 (en) Adaptive server performance adjustment
WO2019134403A1 (zh) 发送数据包的方法、装置及计算机可读存储介质
US10630760B2 (en) Adaptive encryption in checkpoint recovery of file transfers
US7305387B2 (en) Method and apparatus for managing data object size in a multi-user environment
US8219686B2 (en) Method and computer program product utilizing multiple UDP data packets to transfer a quantity of data otherwise in excess of a single UDP packet
US20070250507A1 (en) Electronic file sharing
JP4648415B2 (ja) ファイル転送システムおよびアプリケーションサーバ
JP2022161570A (ja) 通信装置、通信方法およびプログラム
Chiozzi et al. VERY LARGE TELESCOPE
WO2007124505A2 (en) Electronic file sharing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061114

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090604

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090609

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20090709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090709

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090909

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090914

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091009

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100226

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100526

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100610

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4532098

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130618

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term