JP4537579B2 - 二方向的なプロセス対プロセスのバイトストリームのプロトコル - Google Patents
二方向的なプロセス対プロセスのバイトストリームのプロトコル Download PDFInfo
- Publication number
- JP4537579B2 JP4537579B2 JP2000553893A JP2000553893A JP4537579B2 JP 4537579 B2 JP4537579 B2 JP 4537579B2 JP 2000553893 A JP2000553893 A JP 2000553893A JP 2000553893 A JP2000553893 A JP 2000553893A JP 4537579 B2 JP4537579 B2 JP 4537579B2
- Authority
- JP
- Japan
- Prior art keywords
- request
- messages
- server system
- client system
- response
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/029—Firewall traversal, e.g. tunnelling or, creating pinholes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/324—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the data link layer [OSI layer 2], e.g. HDLC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer 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)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
- Time-Division Multiplex Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Discharge-Lamp Control Circuits And Pulse- Feed Circuits (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Measuring Volume Flow (AREA)
Description
発明の背景
発明の分野
本発明は、分散されたコンピュータのプログラムの分野に関する。より詳しくは、本発明は二方向的なプロセス対プロセスのバイトストリームのプロトコルに関する。
【0002】
背景
コンピュータ技術の進歩とインターネットの出現によって、コンピュータ・ユーザは世界中に分散したポイントからコンピュータ・プログラムを集合的に実行できるようになった。分散型プログラムの例には、コンピュータ・チャットルーム、会議プログラム、およびゲーム・プログラムが含まれ、ここでは複数のコンピュータ・ユーザがリアルタイムに情報のインタラクティブな交換が可能である。例えば、コンピュータによるチャット(chat)のルームによって多数の分散したユーザが個々の分散ユーザの1人がタイプするのと同時に会話テキストを見ることができ、会議アプリケーションでは分散ユーザが集合的に1つのテキスト文書の草案を作成したり編集したりすることができ、ゲーム・プログラムでは分散ユーザが仮想ゲームの環境で競争または協力することができる。
【0003】
分散型プログラムを実行するためには、2つの個別プロセスが両方向バイト・ストリームを維持する必要がある。プロセスとは、コンピュテーションのアクティブな実行を指し、広くタスク、ジョブ、またはスレッドとも呼ばれる。分散型プログラミングはしばしばクライアント・サーバ・パラダイムに基づき、ここではクライアント・システムで実行するプロセスはサーバ・システムで実行するプロセスと通信しなければならない。
【0004】
クライアント・サーバのパラダイムにおいては、クライアント・システムはサーバ・プロセスへのアクセスとサーバ・プロセスからの情報を要求する。クライアント・プロセスおよびサーバ・プロセスは同じコンピュータ・システムで実行することもでき、別個の通信的に接続されたシステムで実行することもできる。サーバ・システムがインターネットのようなネットワークによってアクセス可能な場合、世界各地の多数のクライアント・システムがサーバ・システムに要求することができる。
【0005】
クライアントとサーバの間の通信はしばしば各種ネットワーク内あるいはその間の各種メディアによるデータの伝送が関与する。このような通信メディアはしばしば信頼性が低い。例えば、インターネットはスケールがグローバルで、無数の個々のコンピュータおよび接続に依存している。インターネットのいずれかの部分の故障は予測または防止が不可能で、インターネットを本質的に信頼性の低いものにしている。転送制御プロトコル/インターネット・プロトコル(TCP/IP)は、インターネットの本質的な低信頼性に拘らず、サーバを信頼性高く転送するよう設計された多数の通信プロトコルから構成される。一般的に、TCP/IPはデータの到着を検証し、到着しないセグメントを自動的に再転送する。インターネットで通信する大半の分散型プログラムは信頼性を確保するためTCP/IPフォーマット化されたメッセージを利用している。
【0006】
信頼性に加えて、ネットワーク・ユーザにとってセキュリティが大きな問題である。多くのシステムがある種のネットワーク通信を選択的にブロックするためファイアウォールを使っている。例えば、ほとんどのファイアウォールはTCP/IP通信を防ぎ、分散型プログラミングに広く使われる両方向バイト・ストリームをブロックする。
【0007】
そのため、分散型プログラミングを利用するには、ファイアウォールを通過し、ファイアウォールの提供するセキュリティレベルを維持し、本質的低信頼性メディアで信頼できる通信を提供することができる両方向プロセス・トゥ・プロセス・バイト・ストリーム・プロトコルが必要である。
【0008】
発明の概要
クライアント・システムはメッセージを保存し、サーバ・システムにメッセージを送信する。メッセージはファイアウォールを通過できるプロトコルに従ってフォーマット化された要求に含まれる。そして、クライアント・システムはサーバ・システムからの応答を待つ。応答もファイアウォールを通過できるプロトコルに従ってフォーマット化される。応答は、最後の要求でサーバ・システムがクライアント・システムからどのメッセージを受けたかの表示も含む。クライアント・システムに一定数のメッセージが蓄積されるか、応答受信までに一定の時間が経過すると、クライアント・システムは第2の要求を送信する。
【0009】
サーバ・システムもメッセージを保存し、クライアント・システムにメッセージを送信する。サーバ・システムはクライアント・システムからの第1の要求と第2の要求を待つ。第1の要求を受け取り、特定の数のメッセージがサーバ・システムに蓄積されると、サーバ・システムは第1の要求に対応する応答を送る。第2の要求を受け取ると、サーバ・システムはメッセージが蓄積されていなくとも、第1の要求に対応する応答を送る。応答は蓄積されたあらゆるメッセージを含む。次回、クライアント・システムが要求を送るとき、要求はクライアント・システムが最後の応答でサーバ・システムからどのメッセージを受けたかの表示を含む。
【0010】
詳細な説明
以下の詳細な説明では、本発明を完全に理解するため多数の特定の詳細を記載する。しかしながら、本発明はこれら特定の詳細なしに実行でき、本発明は数々の別の実施例で実行できることが当業者には理解される。他の場合、周知の方法、手順、コンポーネントおよび回路は詳細には説明しない。
【0011】
図1は、ファイアウォールが分散型コンピュータ・プログラムの実行と干渉するコンピュータ・ネットワークを示す。クライアント・システム110で実行するプログラムは転送制御プロトコル/インターネット・プロトコル(TCP/IP)160フォーマット化された通信を使ってサーバ・システム120で実行するプロセスとの通信を妨害される。しかしながら、以下に詳細に述べるように、本発明は、ファイアウォールを通過できるTCP/IPタイプ通信を作成するため、大半のファイアウォールに共通するループホールを利用する。
【0012】
分散型プログラミングはほぼあらゆる種類のクライアント・サーバ・インタラクションを含む。例えば、プロセスはサーバ・システムで実行される別のプロセスと通信するクライアント・システムで実行できる。あるアプリケーションでは、クライアント・プロセスはアプレットと呼ばれ、サーバ・プロセスはサーブレットと呼ばれる。2つのプロセスの間の通信は、分散型プログラミングからなる。複数のクライアント・プロセスが1つのサーバ・プロセスと同時にインタラクトできる。
【0013】
図示の例では、クライアント・システム110およびクライアント・システム・145はインターネット130に接続される。インターネット130はサーバ・システム120を含む。ある実施例では、クライアント・システム110、クライアント・システム145、およびサーバ・システム120は集合的に分散型コンピュータ・プログラムを実行し、ここでプログラムの一部はサーバ・システム120で実行され、プログラムの一部はクライアント・システムのそれぞれで実行される。本発明の教示を除き、クライアント・システム110、サーバ・システム120、およびクライアント・システム145は当業で周知のあらゆる数の分散型システムを表す。
【0014】
メッセージはクライアント・システムのそれぞれおよびサーバ・システム120にインターネット130の幅広い接続によって送受信される。本発明の教示を除き、インターネット130による通信は当業で周知の多数の方法のいずれかで実施される。分散型プログラムはあらゆる数の分散型プログラムでよく、コンピュータ・チャットルーム、会議プログラム、およびゲーム・プログラムを含む。
【0015】
クライアント・システム110はファイアウォール140に保護され、これはTCP/IP160フォーマット化された通信を含む通信を選択的にブロックし、大半の分散型プログラムの実行を不可能にする。しかしながら、しばしば発生することだが、ファイアウォール140はクライアント・システム110のユーザがインターネット130のウェブ・ページをブラウジングできるようにする。このためにループホール150が設けられ、ハイパーテキスト・トランスファー・プロトコル(HTTP)フォーマット化されたトランザクションがファイアウォール140を通過できるようにする。HTTPトランザクションを用いてインターネット130のウェブページにアクセスする。1回のHTTPトランザクションは2部に分かれる。トランザクションの第1部はHTTP要求で、これはクライアントしか開始できない。クライアント・システムはHTTP要求を送信してウェブ・ページへのアクセスを要求する。トランザクションの第2部はHTTP応答である。サーバ・システムにあるウェブ・ページがHTTP応答を送り返す。
【0016】
ループホール150があっても、ファイアウォール140は一定量のセキュリティをクライアント・システム110に提供する。すなわち、HTTPトランザクションはクライアント・システムしか開始できず、ファイアウォール140は外向きHTTP要求のみ許し、外向きHTTP要求に対応する内向きHTTP応答のみ許すよう設計できる。あらゆる数の周知のHTTPループホール付きファイアウォール・セキュリティ・システムを本発明を使って通過することができる。
【0017】
以下に詳細に述べるように、本発明はループホール150を利用してHTTPフォーマット化された要求としてメッセージを送信し、HTTPフォーマット化された応答としてメッセージを送り返すことで、クライアント・システム110とサーバ・システム120との間にTCP/IPのような接続を作成する。このように、本発明はファイアウォール140が提供するセキュリティレベルを維持しながらTCP/IPタイプ接続を提供する。
【0018】
図2は、クライアント・システム110とファイアウォール140の1つの実施例を示す。クライアント・システム110は図示のように接続されたクライアント・プロセス210、バッファ220、およびHTTPゲートウェイ230を含む。HTTPゲートウェイ230は当業で周知の多数のHTTPゲートウェイのいずれかを表し、クライアント・システム110がインターネット・ウェブ・ブラウジングに用いる。クライアント・プロセス210は、クライアント・システム110で実行される分散型プログラムの一部である。ファイアウォール140がないと、クライアント・プロセス210はTCP/IP160を使ってサーバ・システム120と通信することができる。例えば、上記引用の特許出願に説明する分散型プログラムは非同期TCP/IPプロトコルを利用し、ここではメッセージはクライアント・システム110またはサーバ・システム120から開始することができる。しかしながら、図示の例では、ファイアウォール140はTCP/IP通信を妨害する。この場合、クライアント・システム110はHTTPループホール150を介した通信に切り換えることができる。
【0019】
クライアント・システム110は複数の異なる方法のいずれかで自動的にファイアウォール140を認識することができる。例えば、クライアント・システム110はTCP/IPフォーマット化された要求をサーバ・システム120に送り、サーバ・システム120からの応答を求めることができる。一定のタイムフレーム内に応答を受け取らないと、クライアント・システム110はタイムアウトになり、ループホール150を介してHTTPフォーマット化された要求を送ろうとする。
【0020】
図3は、サーバ・システム120の1つの実施例を示す。サーバ・システム120は、図示のように接続されたサーバ・プロセス310、バッファ320、およびHTTPサーバ330を含む。1つの実施例では、HTTPサーバ330はHTTPサーバの役割を演じる専用ソフトウェアからなるが、特に当業で周知のHTTPサーバのオーバヘッドなしに転送にメッセージを含むよう設計される。あるいは、HTTPサーバ330はコモン・ゲートウェイ・インターフェース(CGI)を持つ当業で周知の多数のHTTPサーバのいずれかを表すことができる。ソフトウェアはCGIを使って本発明の教示に従いHTTPトランザクションを修正することができる。
【0021】
サーバ・プロセス310はサーバ・システム120で実行する分散型プログラムの一部である。サーバ・プロセス310はTCP/IP通信を使ってあらゆる数のクライアント・システム145と通信することができる。しかしながら、ファイアウォール140はサーバ・プロセス310がTCP/IP160を使ってクライアント・システム110と通信することを妨害する。クライアント・システム110同様、サーバ・システム120は複数の異なる方法のいずれかでファイアウォール140を検出することができる。しかしながらサーバ・システム120はHTTPトランザクションを開始できないため、クライアント・システム110からのHTTP要求を待つ。
【0022】
HTTPトランザクションは必然的にクライアントが開始する2部トランザクションであるため、HTTP通信は大半のTCP/IPフォーマット化通信よりやや遅く、面倒になる傾向がある。そのため、分散型プログラムはTCP/IP接続をまず試すことが多い。これに失敗すると、クライアント・システム110およびサーバ・システム120はTCP/IPメッセージをバッファし、メッセージのグループをバンドルで送り、HTTPトランザクションの頻度を減らし、これによってスループットをほぼTCP/IP接続のものまで増やす。また。インターネット接続は本質的に信頼性が低いため、クライアント・システム110およびサーバ・システム120は送信した後もメッセージを保存し続け、信頼性を確保する。メッセージは相手システムからのメッセージが正しく受信されたという通知を受けて初めてそれぞれのバッファから削除される。
【0023】
図2で、クライアント・システム110はクライアント・プロセス210からのメッセージをバッファ220でバッファすることによってこれら機能を実行する。そこから、メッセージを1つのバンドルにグループ化し、HTTPゲートウェイ230、ファイアウォール140のHTTPループホール150を介してサーバ・システム120に送出する。対応するHTTP応答をサーバ・システム120から受けると、応答はループホール150を介してHTTPゲートウェイ230、ひいてはクライアント・プロセス210に戻る。
【0024】
図3で、サーバ・システム120はサーバ・プロセス310からのメッセージをバッファ320でバッファする。要求が入った後、サーバ・システム120はバッファ320に保存されたメッセージを1つのバンドルにグループ化し、これらをHTTPサーバ330を介してHTTPフォーマット化応答に含める。要求と共に到着したメッセージはサーバ・プロセス310に与えられる。
【0025】
各HTTPトランザクションは要求と対応する応答からなり、HTTPトランザクションはクライアント・システムが開始するため、両システムは通信の回線を開いておくため互いのシステムに依存する。すなわち、サーバ・システム120は要求を受け取った後にのみ応答できる。HTTP接続が両方向TCP/IP接続と同様に動作して、クライアント・システム110とサーバ・システム120の両方が転送を開始できるようにするには、クライアント・システム110とサーバ・システム120が協力して要求をそのままにしておかなければならない。
【0026】
ある実施例では、クライアント・システム110はバッファ220に最大バンドルサイズまで保存されたあらゆるメッセージを含む第1の要求を送る。しかしながら、クライアント・システム110はサーバ・システム120からの応答を単に待っているのではない。その代わり、クライアント・システム110は追加メッセージがあれば保存を続け、3つのイベントのうち1つが発生すると別の要求を送る。
【0027】
まず、一定量の追加メッセージがバッファ220に蓄積されると、クライアント・システム110は追加メッセージを含む第2の要求を送る。例えば、最大バンドルサイズを10個のメッセージとして、追加メッセージが蓄積するとすぐ、クライアント・システム110はこの10個の追加メッセージを含む第2の要求を送ることができる。
【0028】
第2に、応答を受信せずに一定の時間が経過すると、クライアント・システム110はあらゆる保存メッセージを含む追加メッセージが蓄積されていなくとも、第2の要求を送る。例えば、信頼性の低いネットワークで要求が失われると、応答は受信されることはない。クライアント・システム110は例えば1秒でタイムアウトになり、エラーが発生したと想定する。第1の要求に5個のメッセージが含まれており、クライアント・システム110がタイムアウトになる前にさらに3個のメッセージが蓄積された場合、クライアント・システム110は8個のメッセージ全てを含む第2の要求を送る。
【0029】
第3に、クライアント・システム110がサーバ・システム120から応答を受けると、クライアント・システム110は第2の要求を送る。この第3の場合、利用できる帯域や蓄積された追加メッセージの数により、クライアント・システム110はサーバ・システム120から応答を受け次第、第2の要求を送ることができ、またはクライアント・システム110は短期間遅延してさらにメッセージを蓄積することができる。
【0030】
トランザクションのサーバ側では、サーバ・システム120は第1の要求の受信を待たなければならない。サーバ・システム120は待っている間、外向きのメッセージを保存する。サーバ・システム120が第1の要求を受信すると、サーバ・システム120は直ちに応答しないことがある。まず、一定数のメッセージが蓄積されている場合、あるいは第1の要求を受けた後のあるポイントで一定数のメッセージが蓄積されている場合、サーバ・システム120は応答を送る。例えば、最大バンドルサイズが10個のメッセージで、サーバ・システム120が第1の要求を受けたときに10個のメッセージを保存していると、サーバ・システム120は直ちに応答する。しかしながら、メッセージの数が一定数のメッセージより少ない場合、サーバ・システム120はさらにメッセージが蓄積されるのを待つか、第2の要求が到着するのを待つ。第2の要求を受信すると、サーバ・システム120は第1の要求に対応する応答を送り、メッセージが蓄積されていなくとも、蓄積されているメッセージがあれば最大バンドルサイズまで含める。クライアント・システム110同様、利用可能な帯域および蓄積されたメッセージの数により、サーバ・システム120は第2の要求受信直後に応答することができ、あるいはサーバ・システム120は短期間遅延してさらにメッセージを蓄積することができる。
【0031】
オペレーションでは、一連のエラーフリー・トランスファーが次のように進む。クライアント・システム110は第1の要求を送る。サーバ・システム120は第1の要求を受信するが、応答しない。短時間後、クライアント・システム110は第2の要求を送る。サーバ・システム120は第2の要求受信後に第1の要求に応答する。クライアント・システム110はさらに要求を送り続け、新しい要求の度に、サーバ・システム120は前の要求に応答する。このように、クライアント・システム110およびサーバ・システム120は協力してサーバ・システム120で1つの要求をそのままにしておき、サーバ・システム120が常に応答できるようにする。
【0032】
各種実施例において、遅延とバンドル中のメッセージの最大数は、スループットを増やしTCP/IP接続のスループットに近似するよう最適化できる。インプリメンテーションは、クライアント・プロセス210およびサーバ・プロセス310などのさらに高いレベルのアプリケーションに対してトランスペアレントにできる。例えば、クライアント・システム110とサーバ・システム120との間の直接TCP/IP接続を想定して書かれたアプリケーションは、アプリケーションのコードや行動を変更せず、パフォーマンスが無視できる劣化を示すのみでHTTPプロトコルを使って切り替え可能である。
【0033】
別の実施例では、サーバ・システム120は1個以上の要求をそのままにしておき、例えばサーバ・システム120が大きなデータブロックを取り扱えるようクローズ・サクセッションで複数の応答を送ることができる。しかしながら、サーバ・システム120がそのままにしておく要求の数はクライアント・システム110のバッファ220のサイズ、クライアント・システム110がタイムアウトするまでの時間、最大バンドルサイズなどの要因によって限定される。例えば、メッセージが受信されたとの通知によって初めてメッセージがバッファから削除されるため、応答が受信されないとメッセージはバッファ220に蓄積される。また、クライアント・システム120がタイムアウトし、エラーが発生したと想定するとメッセージを再送信する。蓄積されたメッセージの数が最大バンドル数を超えると、クライアント・システム110が送る要求の数は急激に増加し、不要に帯域を無駄にする。
【0034】
図4は、HTTP要求の1つの実施例をさらに詳細に示す。HTTP要求は、HTTP要求であることを識別し、要求の宛先を指定し、各種追加特性を指定するヘッダ情報を含む。ヘッダの後には、あらゆる形式のデータが来ることができる。実施例では、データはクライアント・システム110がサーバ・システム120からの最後の応答でメッセージを受け取っていればどのメッセージかを示す接頭辞を含む。ここで、接頭辞はクライアント・システム110が最後の応答で1からNまでのメッセージを受け取ったことを示す。接頭辞の後に、要求はバッファ220に保存された1からMまでのメッセージすべてのコピーを含む。要求をサーバ・システム120が受け取ると、サーバ・システム120はサーバ・プロセス310に1からMまでのメッセージを与える。サーバ・システム120はまた、バッファ320に保存されたメッセージから1からNのメッセージを削除し、次の応答に残るメッセージがあればこれのみ送る。
【0035】
図5は、HTTP応答の1つの実施例を示す。要求同様、応答はこれが特定のHTTP要求に対応するHTTP応答であることを識別し、宛先を指定し、応答の各種追加特性を指定するヘッダ情報を含む。ヘッダの後には、あらゆる形式のデータが来ることができる。図示の実施例では、データは最後の要求でサーバ・システム120が受け取ったメッセージがあればどのメッセージか示す接頭辞を含む。ここで、接頭辞はサーバ・システム120が最後の要求で1からMまでのメッセージを受け取ったことを示す。接頭辞の後、応答はバッファ320に保存された1からNまでのメッセージのコピーも含む。応答をクライアント・システム110が受け取ると、クライアント・システム110はクライアント・プロセス210に1からNのメッセージを与え、バッファ220に保存されたメッセージから1からMのメッセージを削除し、次の要求に残るメッセージがあればこれのみ送信する。
【0036】
いずれのシステムもメッセージを受信したとの表示を受け取る前にそのバッファからメッセージを削除しない。また、上述のように、クライアント・システム110は、一定時間内に応答を受信しないと要求を送る。例えば、要求が何らかの理由でサーバ・システム120に届かない場合、クライアント・システム110は同じメッセージと蓄積されていた追加メッセージがあればこれを含む別の要求を送る。同様に、応答が到着しないと、クライアント・システム110は別の要求を送り、サーバ・システム120は同じメッセージと蓄積されていた追加メッセージがあればこれを含む別の応答を送る。さらに、要求または応答を受けたが、メッセージが読めない場合、対応して返された接頭辞はメッセージが読めなかったことと、メッセージを再送信することを示す。このように、本発明は本質的に信頼できない通信メディアで信頼できるメッセージ転送を行う。
【0037】
図6は、クライアントシステム110の一実施例によって実行される手順を示す。ブロック610において、クライアントシステム110はHTTPリクエストを送り出すが、これには、バッファ220の中に保存された何らかのメッセージのコピー、ならびに、そのメッセージのインジケータとして、クライアントシステム110が最後のレスポンスにおいて受け取ったメッセージ(それがある場合)も含まれる。リクエストが第1のリクエストであって、最後のレスポンスがいかなるメッセージも含んでいなかった場合、または、最後のリクエストからのメッセージが読み取り不能であった場合、インジケータは、ゼロメッセージが受け取られたことを示すことになる。クライアントシステム110がレスポンスを受け取るのを待つ間、追加の出力メッセージ(それがある場合)がバッファ220、ブロック620および630の中に保存される。ある程度の数のメッセージが蓄積されると、クライアントシステム110は、ブロック640へと進むことになる。レスポンスが受け取られなかったので、ブロック640ではいかなる動作も起こらず、クライアントシステム110がブロック610に戻り、追加のメッセージを含む別のリクエストを送り出すことになる。例えば、最大バンドルサイズが10メッセージで、10の追加メッセージが貯まった場合、10のメッセージを含む別のリクエストが送られることになる。
【0038】
ブロック630において、ある程度の数のメッセージが貯まる前にレスポンスが受け取られると、プロセスは、再びブロック640へと進むことになる。レスポンスが受け取られると、そのレスポンスは、プリフィックスと、サーバシステム120から送られた何らかのメッセージを含むことになる。プリフィックスは、サーバシステム120が最後のリクエストにおいてどんなメッセージを受け取ったかを指示することになる。リクエストがメッセージを含んでいなかった場合、またはエラーがあって、メッセージが読み取り不能であった場合、プリフィックスはゼロメッセージを指示することになる。クライアントシステム110は、指示された何らかのメッセージをブロック640においてバッファ220から除去することになる。レスポンスに何らかのメッセージが含まれていた場合には、そのメッセージもクライアントプロセス210に提供されることになる。すると、手順はブロック610に戻り、プリフィックスと保存されていた何らかのメッセージを含む新たなリクエストが送られる。
【0039】
上に述べた通り、有効帯域幅や保存されたメッセージの数などのファクターに応じて、クライアントシステム110は、レスポンスを受け取り次第直ちにリクエストを送ることもあれば、もっと多くのメッセージを貯めさせるために時間を遅らせることもある。
【0040】
クライアントシステム110は、レスポンスが受け取られるか、1バンドル分の追加メッセージが貯まるかする前に、ブロック630においてタイムアウトすることがある。例えば、最大バンドルサイズが10メッセージで、3つしかメッセージが貯まっていない場合でも、ある程度時間が経過した後にクライアントシステム110はタイムアウトすることがある。エラーが生じたのかもしれないし、サーバシステム120が第2のリクエストを待っているのかもしれない。いずれにしても、クライアントシステム110はブロック640へと進むことになる。レスポンスが受け取られなかったのであるから、メッセージが指定されなかったし、メッセージが受け取られなったわけで、結局、ブロック640において一切アクションが起こされないことになる。代わりに、クライアントシステム110はブロック610へと進み、第1のリクエストで送られたメッセージを含めて保存されていた何らかのメッセージを最大バンドルサイズまで送り出すことになる。貯まったメッセージの数が最大バンドルサイズを超えると、クライアントシステム110は、2つ以上のリクエストを送ることがある。その上、クライアントシステム110は、レスポンスを受け取ることなくある程度の数のリクエストが送られた後に接続が切断されたことを指示することがある。
【0041】
図7は、サーバシステム120の一実施例によって実行される手順を示す。ブロック710において、サーバシステム120は、出力メッセージがある場合には、これを保存し、ブロック720において第1のリクエストを待つ。第1のリクエストが受け取られると、そのリクエストは、クライアントシステムが最後のレスポンスにおいて受け取ったメッセージ(それがある場合)を指示するプリフィックスを含むことになる。最後のレスポンスがいかなるメッセージも含んでいなかった場合、またはエラーがあって、メッセージが読み取り不能であった場合、プリフィックスは、ゼロメッセージが受け取られたことを指示することになる。リクエストはまた、クライアントシステム110から送られた何らかのメッセージを含むことにもなる。ブロック730において、サーバシステム120は、指示された何らかのメッセージを、バッファ320の中に保存されたメッセージから除去し、何らかの入力メッセージをサーバプロセス310に提供することになる。
【0042】
次に、サーバシステム120は、第2のリクエストがブロック740で受け取られるまで、またはある程度の数のメッセージがブロック741および745の中に貯まるまで、第1のリクエストを保持することになる。例えば、最大バンドルサイズが10メッセージで、10のメッセージが貯まった場合、サーバシステム120は、第2のリクエストを受け取らなかったとしても、ブロック741からブロック744へと進むことになる。ブロック744において、サーバシステム120は、保存されていたメッセージを含めて第1のリクエストに対応するレスポンスを送り、ブロック710に戻って別の第1のリクエストを待つことになる。
【0043】
ブロック740において第2のリクエストが受け取られると、サーバシステム120は、メッセージが貯まっていなくても、ブロック750へと進むことになる。ブロック750において、指示された何らかのメッセージがバッファ320から削除され、何らかの入力メッセージがサーバプロセス310に提供されることになる。ブロック760において、保存されていたメッセージを含めて第1のリクエストに対応するレスポンスが送り出される。サーバシステム120は、ブロック740に戻って別のリクエストまたは丸々1バンドル分のメッセージを待つことになる。別のリクエストが受け取られると、クライアントシステム120はすでに1つのリクエストを保持しているので、新たなリクエストは第2のリクエストのように処理され、クライアントシステム120は、ブロック750を通過し、ブロック760において別のレスポンスを送り出すことになる。その上、1つのリクエストがブロック740で保持されている限り、いつでも1バンドル分のメッセージが貯まっていき、サーバシステム120は、保持されたリクエストに対応するレスポンスを出すことができる。
【0044】
上に述べた通り、有効帯域幅や保存されたメッセージの数などのファクターに応じて、サーバシステム120は、第2のリクエストを受け取り次第直ちにレスポンスを送ることもあれば、もっと多くのメッセージを貯めさせるために時間を遅らせることもある。また、別の実施例では、サーバシステム120は、ある程度の時間枠の中でリクエストが受け取られなかった場合にタイムアウトすることになり、そうなった場合、サーバシステム120は、接続が切断されたことを指示することがある。
【0045】
クライアントシステム110とサーバシステム120の間でひとたびHTTP接続が確立されれば、どちらかのシステムは、多数の方法のどれかで接続を終わらせることができる。例えばリクエストまたはレスポンスが所定の終了メッセージを含むこともあり得よう。
【0046】
代替の実施例では、適当な情報が提供され、その情報が適当なシステムによって識別できる限り、最後の伝送においてどんなメッセージが受け取られたかを指示するインジケータを何らかの仕方で提供することができる。例えばサフィックスを使用することができるであろうし、あるいは、メッセージが、ある範囲の中で指定されたというよりむしろ個別に数字であることもあり得るし、従って、個別に失われたメッセージを識別することもできよう。
【0047】
クライアントシステム110またはサーバシステム120の機能を実行するためにハードウェアシステムをどんな数でも使用することができる。各システムは、従来公知の広いカテゴリのコンピュータシステム、例えば、Intel Corporation(カリフォルニア州サンタクララ)が製造、市販するPentiumRプロセッサ、PentiumRプロ・プロセッサ、PentiumRIIプロセッサ、またはDigital Equipment Corporation(マサチューセッツ州メイナード)が製造するAlphaRプロセッサなどの高性能マイクロプロセッサを搭載したコンピュータシステムによって表してよい。
【0048】
図8は、適当なハードウェアシステム800の一実施例を示す。図示された実施例では、ハードウェアシステム800は、高性能バス805に結合したマイクロプロセッサ810を包含し、高性能バス805の方は、バスブリッジ830を通して入出力(I/O)バス815に結合している。テンポラリメモリ820がバス805に結合している。パーマネントメモリ840がバス815に結合している。ディスプレイ装置870、キーボード880、通信インタフェース850および汎用I/O860がすべて、バス815に結合している。通信インタフェース850は、ハードウェアシステム800をインターネット130に結合させることができる。汎用I/O860は、ハードウェアシステム800を多数の外部装置のどれかに結合させることができる。
【0049】
実施例の中には、追加コンポーネントを包含してよい実施例、上記コンポーネントのすべてを必要としなくてよい実施例、または2つ以上のコンポーネントを組み合わせてよい実施例もある。例えばテンポラリメモリ820が、マイクロプロセッサ810を備えたオンチップであってよい。あるいは、パーマネントメモリ840が無くしてあってよく、テンポラリメモリ820の代わりに、電気的消去可能なプログラマブル・リード・オンリー・メモリ(EEPROM)、例えばソフトウェアルーチンがEEPROMから適当な場所で実行されるフラッシュ・メモリなどが使用してあってよい。実施態様によっては、すべてのコンポーネントが結合する単一のバスを使用しても、多数の追加バスを使用してもよい。また、従来公知のプロセッサ、CD-ROMなどの記憶装置、メモリ、その他の周辺機器などの追加コンポーネントがハードウェアシステムに含まれていてもよい。
【0050】
一実施例では、上に述べた通りのクライアントシステム110またはサーバシステム120が、ハードウェアシステム800によって実行されるソフトウェアルーチンのシリーズとして実現している。かかるソフトウェアルーチンは、マイクロプロセッサ810などの、ハードウェアシステム内のマイクロプロセッサによって実行される複数の、または一連の命令からなる。最初、一連の命令は、パーマネントメモリ840などの記憶装置に保存しておくことができる。それでも、一連の命令は、ディスケット、CD-ROM、磁気テープ、ディジタルビデオディスク、DVD、レーザーディスク、ROM、フラッシュ・メモリなどの従来の記憶媒体のどれを使っても保存できることを認識しなければならない。また、一連の命令は、ローカルメモリに保存する必要がなく、多数のネットワークのどれかにおける別のサーバシステム、CD-ROMデバイス、フロッピディスクなどの遠隔記憶装置から受け取ることができることも認識しなければならない。命令は、記憶装置からテンポラリメモリ820にコピーし、そこでアクセスし、マイクロプロセッサ810によって実行してよい。一実施態様では、かかるハードウェアルーチンは、JAVATMプログラミング言語で書かれている。それでも、かかるルーチンは、多種多様なプログラミング言語のそれででも実行できることを認識すべきである。
【0051】
代替の実施例では、クライアントシステム110またはサーバシステム120が、離散型のハードウェアまたはファームウェアの形で実現している。例えば1つ以上の特定用途向け集積回路(ASIC)を、上に述べたクライアントシステム110またはサーバシステム120の機能を使ってプログラムすることができよう。別の例では、クライアントシステム110またはサーバシステム120を追加回路板上の1つ以上のASICの形で実現させ、回路板をハードウェアシステム800に挿入することができよう。
【0052】
本発明は、広範囲の用途を有する。例えば、仮想分散させられた何らかのプログラムによって、HTTPフォーマットによるトランザクションを許す何らかのファイアウォールを仮想横断するのに使用することができる。その上、本発明は、ファイアウォール背後から双方向通信を始めることを許されたどんなプロトコルフォーマットも使用することができる。HTTP/1.0は、まさしくそのようなフォーマットの1つである。HTTP/1.1および他のそのようなフォーマットも使用することができる。
【0053】
本発明は、イントラネットを含む多種多様なネットワークで実行される多種多様な分散形プログラムに適用してよい。その上、本発明は、多重クライアントシステムによって同時に、多重ファイアウォールを通して1つ以上のサーバにアクセスするのに使用することができる。それゆえ、本特許の目的のためには、クライアントシステムは、他の何らかのシステムにリクエストを出すどんなシステムにも当てはまる。同様に、サーバシステムは、リクエストを受けるどんなシステムにも当てはまる。1つのシステムが同時にクライアントシステムとサーバシステムの両方であり得る。
【0054】
以上、分散形プログラムにファイアウォールを横断させるための方法および装置について述べた。当業者であれば、上の説明を読んだ後、本発明に変更や改良を加えた多くの態様のあることを理解されるであろうが、同時に、本発明が図に則して述べた特殊な実施例だけに制限されるものでは決してないことを理解すべきである。よって、特殊な実施例の詳細に言及することは、請求の範囲を制限することを意図するものでない。
【図面の簡単な説明】
【図1】 図1は、コンピュータ・ネットワークの一実施例を示す。
【図2】 図2は、クライアント・システムの一実施例を示す。
【図3】 図3は、サーバ・システムの一実施例を示す。
【図4】 図4は、HTTPフォーマット化された要求の一実施例を示す。
【図5】 図5は、HTTPフォーマット化された応答の一実施例を示す。
【図6】 図6は、クライアント・システムの一実施例のプロセスを示す。
【図7】 図7は、サーバ・システムの一実施例のプロセスを示す。
【図8】 図8は、クライアント・システムまたはサーバ・システムの機能を実行するハードウェア・システム・オペラティブの一実施例を示す。
Claims (1)
- 少なくとも1つの送信すべきメッセージの第1のセットを記憶し、そしてクライアントシステム(110)からの第1のリクエスト及び第2のリクエストを受信するように構成されたサーバシステム(120)を含み、
前記サーバシステムは、前記サーバシステムに特定の数の送信すべきメッセージが蓄積されている場合及び前記第2のリクエストが受信された場合にクライアントシステムに第1のレスポンスを送信し、
前記第1のレスポンスは、前記送信すべきメッセージの第1のセットのコピーを含み、そして前記第1のリクエストに対応しており、
前記第1及び第2のリクエスト及び前記レスポンスは、ファイアウォールを通過できるプロトコルに従ってフォーマットされていて、
前記サーバシステム(120)はさらに前記メッセージを記憶するためのバッファ(320)及びハイパーテキストトランスファプロトコル(HTTP)サーバを介して前記第1と第2のリクエストを受信して前記レスポンスを送信するサーバプロセス(310)とを含むことを特徴とする装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/094,388 | 1998-06-09 | ||
US09/094,388 US6289461B1 (en) | 1998-06-09 | 1998-06-09 | Bi-directional process-to-process byte stream protocol |
PCT/US1999/013068 WO1999064958A1 (en) | 1998-06-09 | 1999-06-09 | Bi-directional process-to-process byte stream protocol |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010100888A Division JP4929371B2 (ja) | 1998-06-09 | 2010-04-26 | 二方向的なプロセス対プロセスのバイトストリームのプロトコル |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002517857A JP2002517857A (ja) | 2002-06-18 |
JP4537579B2 true JP4537579B2 (ja) | 2010-09-01 |
Family
ID=22244874
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000553893A Expired - Fee Related JP4537579B2 (ja) | 1998-06-09 | 1999-06-09 | 二方向的なプロセス対プロセスのバイトストリームのプロトコル |
JP2010100888A Expired - Fee Related JP4929371B2 (ja) | 1998-06-09 | 2010-04-26 | 二方向的なプロセス対プロセスのバイトストリームのプロトコル |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010100888A Expired - Fee Related JP4929371B2 (ja) | 1998-06-09 | 2010-04-26 | 二方向的なプロセス対プロセスのバイトストリームのプロトコル |
Country Status (9)
Country | Link |
---|---|
US (2) | US6289461B1 (ja) |
EP (2) | EP1633109B1 (ja) |
JP (2) | JP4537579B2 (ja) |
AT (2) | ATE381193T1 (ja) |
AU (1) | AU4558699A (ja) |
CA (1) | CA2334971C (ja) |
DE (2) | DE69937762T2 (ja) |
HK (1) | HK1039189B (ja) |
WO (1) | WO1999064958A1 (ja) |
Families Citing this family (107)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6088515A (en) | 1995-11-13 | 2000-07-11 | Citrix Systems Inc | Method and apparatus for making a hypermedium interactive |
US7555529B2 (en) * | 1995-11-13 | 2009-06-30 | Citrix Systems, Inc. | Interacting with software applications displayed in a web page |
US6289461B1 (en) * | 1998-06-09 | 2001-09-11 | Placeware, Inc. | Bi-directional process-to-process byte stream protocol |
US6338086B1 (en) * | 1998-06-11 | 2002-01-08 | Placeware, Inc. | Collaborative object architecture |
US6409602B1 (en) * | 1998-11-06 | 2002-06-25 | New Millenium Gaming Limited | Slim terminal gaming system |
US6751670B1 (en) * | 1998-11-24 | 2004-06-15 | Drm Technologies, L.L.C. | Tracking electronic component |
US6928469B1 (en) | 1998-12-29 | 2005-08-09 | Citrix Systems, Inc. | Apparatus and method for determining a program neighborhood for a client node in a client-server network using markup language techniques |
US7127515B2 (en) * | 1999-01-15 | 2006-10-24 | Drm Technologies, Llc | Delivering electronic content |
US6535905B1 (en) * | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
JP3446946B2 (ja) * | 1999-05-12 | 2003-09-16 | 日本電気株式会社 | データ通信システム及びタイムスロット割当方法並びにタイムスロット割当制御プログラムを格納した記憶媒体 |
US6424993B1 (en) * | 1999-05-26 | 2002-07-23 | Respondtv, Inc. | Method, apparatus, and computer program product for server bandwidth utilization management |
US7620980B1 (en) * | 1999-07-21 | 2009-11-17 | Sun Microsystems, Inc. | Secure data broker |
US20060195400A1 (en) * | 2000-10-13 | 2006-08-31 | Patrick Patterson | Controlling access to electronic content |
US7171473B1 (en) * | 1999-11-17 | 2007-01-30 | Planet Exchange, Inc. | System using HTTP protocol for maintaining and updating on-line presence information of new user in user table and group table |
US6496925B1 (en) | 1999-12-09 | 2002-12-17 | Intel Corporation | Method and apparatus for processing an event occurrence within a multithreaded processor |
US7856633B1 (en) | 2000-03-24 | 2010-12-21 | Intel Corporation | LRU cache replacement for a partitioned set associative cache |
US6711558B1 (en) | 2000-04-07 | 2004-03-23 | Washington University | Associative database scanning and information retrieval |
US8095508B2 (en) | 2000-04-07 | 2012-01-10 | Washington University | Intelligent data storage and processing using FPGA devices |
US7139743B2 (en) | 2000-04-07 | 2006-11-21 | Washington University | Associative database scanning and information retrieval using FPGA devices |
US6809749B1 (en) | 2000-05-02 | 2004-10-26 | Oridus, Inc. | Method and apparatus for conducting an interactive design conference over the internet |
EP1161048A3 (en) * | 2000-05-19 | 2005-02-16 | Attachmate Corporation | System and method for secure duplex browser communication over disparate networks |
US7020773B1 (en) | 2000-07-17 | 2006-03-28 | Citrix Systems, Inc. | Strong mutual authentication of devices |
US7117239B1 (en) | 2000-07-28 | 2006-10-03 | Axeda Corporation | Reporting the state of an apparatus to a remote computer |
US8108543B2 (en) | 2000-09-22 | 2012-01-31 | Axeda Corporation | Retrieving data from a server |
US7185014B1 (en) | 2000-09-22 | 2007-02-27 | Axeda Corporation | Retrieving data from a server |
US7028051B1 (en) * | 2000-09-29 | 2006-04-11 | Ugs Corp. | Method of real-time business collaboration |
US6986040B1 (en) | 2000-11-03 | 2006-01-10 | Citrix Systems, Inc. | System and method of exploiting the security of a secure communication channel to secure a non-secure communication channel |
US20020169879A1 (en) * | 2001-05-10 | 2002-11-14 | Kobus Jooste | Method and apparatus for firewall-evading stealth protocol |
US20050198379A1 (en) * | 2001-06-13 | 2005-09-08 | Citrix Systems, Inc. | Automatically reconnecting a client across reliable and persistent communication sessions |
US7716330B2 (en) | 2001-10-19 | 2010-05-11 | Global Velocity, Inc. | System and method for controlling transmission of data packets over an information network |
US7254601B2 (en) | 2001-12-20 | 2007-08-07 | Questra Corporation | Method and apparatus for managing intelligent assets in a distributed environment |
US7421515B2 (en) * | 2002-01-17 | 2008-09-02 | Hewlett-Packard Development Company, L.P. | Method and system for communications network |
US7984157B2 (en) | 2002-02-26 | 2011-07-19 | Citrix Systems, Inc. | Persistent and reliable session securely traversing network components using an encapsulating protocol |
US7661129B2 (en) | 2002-02-26 | 2010-02-09 | Citrix Systems, Inc. | Secure traversal of network components |
US8135843B2 (en) * | 2002-03-22 | 2012-03-13 | Citrix Systems, Inc. | Methods and systems for providing access to an application |
US6983020B2 (en) * | 2002-03-25 | 2006-01-03 | Citrix Online Llc | Method and apparatus for fast block motion detection |
US7178149B2 (en) | 2002-04-17 | 2007-02-13 | Axeda Corporation | XML scripting of soap commands |
US7711844B2 (en) | 2002-08-15 | 2010-05-04 | Washington University Of St. Louis | TCP-splitter: reliable packet monitoring methods and apparatus for high speed networks |
US7346669B2 (en) * | 2002-12-19 | 2008-03-18 | Intel Corporation | Method, apparatus and system for processing message bundles on a network |
MY141160A (en) * | 2003-01-13 | 2010-03-31 | Multimedia Glory Sdn Bhd | System and method of preventing the transmission of known and unknown electronic content to and from servers or workstations connected to a common network |
US7966418B2 (en) | 2003-02-21 | 2011-06-21 | Axeda Corporation | Establishing a virtual tunnel between two computer programs |
CA2519116C (en) | 2003-03-13 | 2012-11-13 | Drm Technologies, Llc | Secure streaming container |
CA2523548C (en) | 2003-05-23 | 2014-02-04 | Washington University | Intelligent data processing system and method using fpga devices |
US10572824B2 (en) | 2003-05-23 | 2020-02-25 | Ip Reservoir, Llc | System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines |
US20050010961A1 (en) * | 2003-06-02 | 2005-01-13 | Hagen David A. | System for providing live and pre-recorded audio-video content to a plurality of portals over the Internet |
US20050030892A1 (en) * | 2003-06-23 | 2005-02-10 | Hagen David A. | System for providing network load distribution |
EP1503286B1 (en) * | 2003-07-30 | 2014-09-03 | Jaluna SA | Multiple operating system networking |
US7558842B2 (en) * | 2003-10-17 | 2009-07-07 | E2Open, Inc. | Large file transfer in a design collaboration environment |
WO2005043802A1 (en) * | 2003-10-20 | 2005-05-12 | Drm Technologies, Llc | Securing digital content system and method |
US7602785B2 (en) * | 2004-02-09 | 2009-10-13 | Washington University | Method and system for performing longest prefix matching for network address lookup using bloom filters |
US7500108B2 (en) | 2004-03-01 | 2009-03-03 | Microsoft Corporation | Metered execution of code |
JP4505257B2 (ja) * | 2004-05-12 | 2010-07-21 | 京セラ株式会社 | 放送受信機能付き携帯電話機 |
US7853676B1 (en) * | 2004-06-10 | 2010-12-14 | Cisco Technology, Inc. | Protocol for efficient exchange of XML documents with a network device |
US8200828B2 (en) | 2005-01-14 | 2012-06-12 | Citrix Systems, Inc. | Systems and methods for single stack shadowing |
US8230096B2 (en) | 2005-01-14 | 2012-07-24 | Citrix Systems, Inc. | Methods and systems for generating playback instructions for playback of a recorded computer session |
US8296441B2 (en) | 2005-01-14 | 2012-10-23 | Citrix Systems, Inc. | Methods and systems for joining a real-time session of presentation layer protocol data |
US20060159432A1 (en) | 2005-01-14 | 2006-07-20 | Citrix Systems, Inc. | System and methods for automatic time-warped playback in rendering a recorded computer session |
US8935316B2 (en) | 2005-01-14 | 2015-01-13 | Citrix Systems, Inc. | Methods and systems for in-session playback on a local machine of remotely-stored and real time presentation layer protocol data |
EP1859378A2 (en) | 2005-03-03 | 2007-11-28 | Washington University | Method and apparatus for performing biosequence similarity searching |
US7725595B1 (en) * | 2005-05-24 | 2010-05-25 | The United States Of America As Represented By The Secretary Of The Navy | Embedded communications system and method |
US8788619B2 (en) | 2005-10-25 | 2014-07-22 | International Business Machines Corporation | Method and infrastructure for accessing remote applications through a secure firewall |
US7702629B2 (en) | 2005-12-02 | 2010-04-20 | Exegy Incorporated | Method and device for high performance regular expression pattern matching |
US7954114B2 (en) * | 2006-01-26 | 2011-05-31 | Exegy Incorporated | Firmware socket module for FPGA-based pipeline processing |
US8379841B2 (en) * | 2006-03-23 | 2013-02-19 | Exegy Incorporated | Method and system for high throughput blockwise independent encryption/decryption |
US7636703B2 (en) * | 2006-05-02 | 2009-12-22 | Exegy Incorporated | Method and apparatus for approximate pattern matching |
US7921046B2 (en) | 2006-06-19 | 2011-04-05 | Exegy Incorporated | High speed processing of financial information using FPGA devices |
US7840482B2 (en) | 2006-06-19 | 2010-11-23 | Exegy Incorporated | Method and system for high speed options pricing |
US20080086274A1 (en) * | 2006-08-10 | 2008-04-10 | Chamberlain Roger D | Method and Apparatus for Protein Sequence Alignment Using FPGA Devices |
US8370479B2 (en) | 2006-10-03 | 2013-02-05 | Axeda Acquisition Corporation | System and method for dynamically grouping devices based on present device conditions |
US8326819B2 (en) | 2006-11-13 | 2012-12-04 | Exegy Incorporated | Method and system for high performance data metatagging and data indexing using coprocessors |
US7660793B2 (en) | 2006-11-13 | 2010-02-09 | Exegy Incorporated | Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors |
US8065397B2 (en) | 2006-12-26 | 2011-11-22 | Axeda Acquisition Corporation | Managing configurations of distributed devices |
US7809818B2 (en) | 2007-03-12 | 2010-10-05 | Citrix Systems, Inc. | Systems and method of using HTTP head command for prefetching |
US8504775B2 (en) | 2007-03-12 | 2013-08-06 | Citrix Systems, Inc | Systems and methods of prefreshening cached objects based on user's current web page |
US8701010B2 (en) | 2007-03-12 | 2014-04-15 | Citrix Systems, Inc. | Systems and methods of using the refresh button to determine freshness policy |
US7783757B2 (en) | 2007-03-12 | 2010-08-24 | Citrix Systems, Inc. | Systems and methods of revalidating cached objects in parallel with request for object |
US20080228864A1 (en) * | 2007-03-12 | 2008-09-18 | Robert Plamondon | Systems and methods for prefetching non-cacheable content for compression history |
US7584294B2 (en) | 2007-03-12 | 2009-09-01 | Citrix Systems, Inc. | Systems and methods for prefetching objects for caching using QOS |
US7720936B2 (en) | 2007-03-12 | 2010-05-18 | Citrix Systems, Inc. | Systems and methods of freshening and prefreshening a DNS cache |
US8103783B2 (en) | 2007-03-12 | 2012-01-24 | Citrix Systems, Inc. | Systems and methods of providing security and reliability to proxy caches |
US8037126B2 (en) | 2007-03-12 | 2011-10-11 | Citrix Systems, Inc. | Systems and methods of dynamically checking freshness of cached objects based on link status |
TW200847711A (en) * | 2007-05-31 | 2008-12-01 | Wistron Corp | Method and related system for building up a network connection between clients and servers through a stream fork by utilizing http protocol |
WO2009029842A1 (en) | 2007-08-31 | 2009-03-05 | Exegy Incorporated | Method and apparatus for hardware-accelerated encryption/decryption |
US8024407B2 (en) * | 2007-10-17 | 2011-09-20 | Citrix Systems, Inc. | Methods and systems for providing access, from within a virtual world, to an external resource |
US10229453B2 (en) * | 2008-01-11 | 2019-03-12 | Ip Reservoir, Llc | Method and system for low latency basket calculation |
US8374986B2 (en) | 2008-05-15 | 2013-02-12 | Exegy Incorporated | Method and system for accelerated stream processing |
CN101729434B (zh) * | 2008-10-10 | 2012-05-23 | 中兴通讯股份有限公司 | 消息交互的实现方法和融合业务系统 |
CA3184014A1 (en) | 2008-12-15 | 2010-07-08 | Exegy Incorporated | Method and apparatus for high-speed processing of financial market depth data |
CN101860459B (zh) * | 2009-04-07 | 2012-08-29 | 鸿富锦精密工业(深圳)有限公司 | 网络装置及其连线状态侦测方法 |
US9473460B2 (en) * | 2009-06-22 | 2016-10-18 | Microsoft Technology Licensing, Llc | Using hypertext transfer protocol as a transport for bi-directional data streams |
JP5429003B2 (ja) * | 2010-03-30 | 2014-02-26 | 富士通株式会社 | 情報処理装置、通信制御方法及び通信制御プログラム |
US10037568B2 (en) | 2010-12-09 | 2018-07-31 | Ip Reservoir, Llc | Method and apparatus for managing orders in financial markets |
US9355180B2 (en) * | 2011-02-07 | 2016-05-31 | Microsoft Technology Licensing, Llc | Name-based customization of executables from web |
US8615159B2 (en) | 2011-09-20 | 2013-12-24 | Citrix Systems, Inc. | Methods and systems for cataloging text in a recorded session |
US9344514B2 (en) * | 2011-10-26 | 2016-05-17 | Viagenie | Method and proxy for transporting IP payloads over a delay-tolerant network (DTN) |
US9047243B2 (en) | 2011-12-14 | 2015-06-02 | Ip Reservoir, Llc | Method and apparatus for low latency data distribution |
US10650452B2 (en) | 2012-03-27 | 2020-05-12 | Ip Reservoir, Llc | Offload processing of data packets |
US11436672B2 (en) | 2012-03-27 | 2022-09-06 | Exegy Incorporated | Intelligent switch for processing financial market data |
US10121196B2 (en) | 2012-03-27 | 2018-11-06 | Ip Reservoir, Llc | Offload processing of data packets containing financial market data |
US9990393B2 (en) | 2012-03-27 | 2018-06-05 | Ip Reservoir, Llc | Intelligent feed switch |
US10146845B2 (en) | 2012-10-23 | 2018-12-04 | Ip Reservoir, Llc | Method and apparatus for accelerated format translation of data in a delimited data format |
US9633097B2 (en) | 2012-10-23 | 2017-04-25 | Ip Reservoir, Llc | Method and apparatus for record pivoting to accelerate processing of data fields |
US9633093B2 (en) | 2012-10-23 | 2017-04-25 | Ip Reservoir, Llc | Method and apparatus for accelerated format translation of data in a delimited data format |
WO2015164639A1 (en) | 2014-04-23 | 2015-10-29 | Ip Reservoir, Llc | Method and apparatus for accelerated data translation |
US10942943B2 (en) | 2015-10-29 | 2021-03-09 | Ip Reservoir, Llc | Dynamic field data translation to support high performance stream data processing |
WO2018119035A1 (en) | 2016-12-22 | 2018-06-28 | Ip Reservoir, Llc | Pipelines for hardware-accelerated machine learning |
CN114553806B (zh) * | 2022-02-21 | 2023-09-05 | 深圳平安智慧医健科技有限公司 | 一种即时通讯的优化方法、装置、设备及存储介质 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5430876A (en) | 1989-06-27 | 1995-07-04 | Digital Equipment Corporation | Remote procedure callback system and method |
US5163055A (en) * | 1990-06-27 | 1992-11-10 | Telefonaktiebolaget Lm Ericsson | Communications system using a fault tolerant protocol |
JPH05344148A (ja) * | 1992-06-05 | 1993-12-24 | Nippon Denki Joho Service Kk | 電子メール装置 |
US5499343A (en) | 1993-12-17 | 1996-03-12 | Taligent, Inc. | Object-oriented networking system with dynamically configurable communication links |
US5550848A (en) * | 1994-05-13 | 1996-08-27 | Lucent Technologies Inc. | Signaling protocol for a noisy communications channel |
US5732219A (en) * | 1995-03-17 | 1998-03-24 | Vermeer Technologies, Inc. | Computer system and computer-implemented process for remote editing of computer files |
US5774479A (en) * | 1995-03-30 | 1998-06-30 | Motorola, Inc. | Method and system for remote procedure call via an unreliable communication channel using multiple retransmission timers |
US5713017A (en) * | 1995-06-07 | 1998-01-27 | International Business Machines Corporation | Dual counter consistency control for fault tolerant network file servers |
US5721908A (en) * | 1995-06-07 | 1998-02-24 | International Business Machines Corporation | Computer network for WWW server data access over internet |
US5850517A (en) * | 1995-08-31 | 1998-12-15 | Oracle Corporation | Communication link for client-server having agent which sends plurality of requests independent of client and receives information from the server independent of the server |
JP3441306B2 (ja) * | 1995-09-12 | 2003-09-02 | 株式会社東芝 | クライアント装置、メッセージ送信方法、サーバ装置、ページ処理方法及び中継サーバ装置 |
JPH0991219A (ja) * | 1995-09-28 | 1997-04-04 | Mitsubishi Electric Corp | 障害監視システム |
DE69736684T2 (de) * | 1996-01-23 | 2007-09-13 | Ntt Mobile Communications Network Inc. | Kommunikationsanordnung und Übertragungsstation mit Fehlerdetektion und Wiederübertragung |
US5826014A (en) * | 1996-02-06 | 1998-10-20 | Network Engineering Software | Firewall system for protecting network elements connected to a public network |
US5815665A (en) * | 1996-04-03 | 1998-09-29 | Microsoft Corporation | System and method for providing trusted brokering services over a distributed network |
AU2935297A (en) * | 1996-05-07 | 1997-11-26 | Webline Communications Corporation | Method and apparatus for coordinating internet multi-media content with telephone and audio communications |
US5935211A (en) * | 1996-07-10 | 1999-08-10 | Microsoft Corporation | Distributed notification |
US5944823A (en) * | 1996-10-21 | 1999-08-31 | International Business Machines Corporations | Outside access to computer resources through a firewall |
TW400487B (en) * | 1996-10-24 | 2000-08-01 | Tumbleweed Software Corp | Electronic document delivery system |
US5778174A (en) * | 1996-12-10 | 1998-07-07 | U S West, Inc. | Method and system for providing secured access to a server connected to a private computer network |
US5805803A (en) * | 1997-05-13 | 1998-09-08 | Digital Equipment Corporation | Secure web tunnel |
US6457054B1 (en) * | 1997-05-15 | 2002-09-24 | Intel Corporation | System for reducing user-visibility latency in network transactions |
US6289461B1 (en) | 1998-06-09 | 2001-09-11 | Placeware, Inc. | Bi-directional process-to-process byte stream protocol |
US6338086B1 (en) | 1998-06-11 | 2002-01-08 | Placeware, Inc. | Collaborative object architecture |
DE10038557B4 (de) * | 2000-08-03 | 2005-12-15 | Siemens Ag | System und Verfahren zur Übertragung von Daten über Datennetze, insbesondere Internet, mit asynchroner Datenverbindung |
JP2002223483A (ja) * | 2000-11-09 | 2002-08-09 | Yamatake Corp | 遠隔管理システム |
JP2003281005A (ja) * | 2002-03-27 | 2003-10-03 | Matsushita Electric Ind Co Ltd | 発呼サーバー装置および端末装置 |
JP2004227121A (ja) * | 2003-01-21 | 2004-08-12 | Toshiba Corp | サーバ装置、通信制御システム、通信方法及びサーバプログラム |
-
1998
- 1998-06-09 US US09/094,388 patent/US6289461B1/en not_active Expired - Lifetime
-
1999
- 1999-06-09 AU AU45586/99A patent/AU4558699A/en not_active Abandoned
- 1999-06-09 CA CA002334971A patent/CA2334971C/en not_active Expired - Fee Related
- 1999-06-09 EP EP05021516A patent/EP1633109B1/en not_active Expired - Lifetime
- 1999-06-09 DE DE69937762T patent/DE69937762T2/de not_active Expired - Lifetime
- 1999-06-09 EP EP99928540A patent/EP1125207B1/en not_active Expired - Lifetime
- 1999-06-09 DE DE69939067T patent/DE69939067D1/de not_active Expired - Lifetime
- 1999-06-09 WO PCT/US1999/013068 patent/WO1999064958A1/en active Application Filing
- 1999-06-09 AT AT05021516T patent/ATE381193T1/de not_active IP Right Cessation
- 1999-06-09 AT AT99928540T patent/ATE400847T1/de not_active IP Right Cessation
- 1999-06-09 JP JP2000553893A patent/JP4537579B2/ja not_active Expired - Fee Related
-
2001
- 2001-08-17 US US09/930,991 patent/US7103799B2/en not_active Expired - Fee Related
-
2002
- 2002-01-11 HK HK02100198.8A patent/HK1039189B/zh not_active IP Right Cessation
-
2010
- 2010-04-26 JP JP2010100888A patent/JP4929371B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
ATE400847T1 (de) | 2008-07-15 |
US6289461B1 (en) | 2001-09-11 |
HK1039189A1 (en) | 2002-04-12 |
EP1633109B1 (en) | 2007-12-12 |
JP2010250834A (ja) | 2010-11-04 |
EP1125207B1 (en) | 2008-07-09 |
CA2334971A1 (en) | 1999-12-16 |
ATE381193T1 (de) | 2007-12-15 |
CA2334971C (en) | 2005-04-05 |
DE69937762T2 (de) | 2008-11-27 |
DE69939067D1 (de) | 2008-08-21 |
AU4558699A (en) | 1999-12-30 |
EP1633109A1 (en) | 2006-03-08 |
EP1125207A4 (en) | 2005-10-05 |
JP2002517857A (ja) | 2002-06-18 |
US7103799B2 (en) | 2006-09-05 |
HK1039189B (zh) | 2009-05-08 |
EP1125207A1 (en) | 2001-08-22 |
US20010056547A1 (en) | 2001-12-27 |
DE69937762D1 (de) | 2008-01-24 |
JP4929371B2 (ja) | 2012-05-09 |
WO1999064958A1 (en) | 1999-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4537579B2 (ja) | 二方向的なプロセス対プロセスのバイトストリームのプロトコル | |
US9729664B2 (en) | System and method for managing connections between a client and a server | |
US7461160B2 (en) | Obtaining a destination address so that a network interface device can write network data without headers directly into host memory | |
US5931916A (en) | Method for retransmitting data packet to a destination host by selecting a next network address of the destination host cyclically from an address list | |
US5745685A (en) | Protocol extension in NSPP using an acknowledgment bit | |
US7289509B2 (en) | Apparatus and method of splitting a data stream over multiple transport control protocol/internet protocol (TCP/IP) connections | |
US7970925B2 (en) | Method and apparatus for an improved bulk read socket call | |
US6321269B1 (en) | Optimized performance for transaction-oriented communications using stream-based network protocols | |
JP4274195B2 (ja) | マルチメディア・アプリケーションに関連付けられたマルチメディアデータを送信する方法、データ送信方法、分散されたネットワーク中にマルチメディアデータを送信するシステム、及びコンピュータ間のマルチメディア通信をイネーブルする通信プロトコル | |
US8539112B2 (en) | TCP/IP offload device | |
US5802064A (en) | Protocol header alignment | |
US6339796B1 (en) | System for logical connection resynchronization | |
US6834307B2 (en) | Event-based application layer switching for high-speed protocol processing | |
US7213074B2 (en) | Method using receive and transmit protocol aware logic modules for confirming checksum values stored in network packet | |
US6230283B1 (en) | Logical connection resynchronization | |
KR100311619B1 (ko) | 분산처리 시스템에서 프로세서간 메시지 송수신 방법 | |
US6237111B1 (en) | Method for logical connection resynchronization | |
KR100563825B1 (ko) | 컨텐츠 분석이 가능한 고성능의 프럭시 서버 및 이를이용한 패킷 처리 방법 | |
Chen | Design and Validation of an XTP Simulator | |
Weaver et al. | Computer communications for factory automation | |
Arun | A sliding window protocol:(SLIWP) | |
Stoess | Porting LibRIPC to iWARP |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20040121 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20040121 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20040121 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20040121 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060421 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20071225 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090501 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090731 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090828 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091126 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20091225 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100426 |
|
RD13 | Notification of appointment of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7433 Effective date: 20100427 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20100427 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20100524 |
|
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: 20100611 |
|
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: 20100618 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130625 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
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 |
|
LAPS | Cancellation because of no payment of annual fees |