説明

通信方法および通信システム

【課題】HTTPトンネリングサーバにおける低負荷でリアルタイム通信を実現する。
【解決手段】HTTPトンネルクライアント5は、ホスト識別子とポート番号を含むサーバ接続情報を生成し、HTTPメソッドにPOSTを、コンテンツ長に最大コンテンツ長を、リクエスト本体にサーバ接続情報を指定したHTTPリクエストを送信し、接続IDとが送信されると、最大コンテンツ長からHTTPリクエストのHTTPリクエスト本体フィールドのデータ長を減算して送信可能コンテンツ長を算出して記憶する。HTTPトンネリングサーバ1は、HTTPリクエストを受信すると、リクエスト本体を読み出し、接続情報に含まれたサーバ装置2に通信コネクションを確立し、接続された通信を識別する接続IDを採番するとともに、サーバ側設定データ記憶部210に接続IDと接続情報とを関連づけて記憶する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、HTTP(Hypertext Transfer Protocol)通信に限定されるネットワーク上のクライアントとサーバとの間でリアルタイムに通信を行う通信方法および通信システムに関する。
【背景技術】
【0002】
近年のコンピュータネットワークの発達に伴い、コンピュータワーム、ウィルス、ハッキングなどの不正アクセスから守るセキュリティが重要視されている。このセキュリティ対策では、例えば、インターネットなどの不特定のクライアント装置が接続された通信ネットワークと、社内LANのサーバなどの保護対象装置が接続された通信ネットワークとの境界に、ファイアウォールやプロキシサーバを設置して、特定のプロトコルのパケットのみを通過させることにより、不正アクセスから保護対象の端末を保護する。このファイアウォールやHTTPプロキシサーバは、HTTP通信のみを通過させ、それ以外のプロトコルのパケットを遮断する方法が採られている。このHTTPプロキシサーバやファイアウォールは、アプリケーション層のプロトコルであるHTTPを解釈しながら処理を行うゲートウェイ装置であり、HTTPの状態を記憶装置上に保持しながら処理を行う。
【0003】
このようなHTTP通信のみを通過させるファイアウォールやプロキシサーバが設けられた場合、ファイアウォールやプロキシサーバと、保護対象装置との間に、HTTPトンネリングサーバが設置され、HTTPトンネリングサーバにより任意のパケットをHTTPでカプセル化し、ファイアウォールやプロキシサーバを介する通信を可能にしている。
【0004】
具体的には、図10に示すように処理される。この図10に示した例では、ゲートウェイのサーバ側のインタフェースに、HTTPトンネリングサーバの機能が設けられている場合について説明する。クライアントからゲートウェイに、HTTPでカプセル化されたパケットが送信されると、ゲートウェイで受信したパケットを蓄積してカプセル化されたデータが結合されてサーバに送信される。また、サーバからゲートウェイにHTTPでカプセル化されたパケットが送信されると、ゲートウェイで受信したパケットを蓄積してカプセル化されたデータが結合されてクライアント装置に送信される。このように、従来の方法においては、HTTPトンネリングサーバの機能によって、分割して送信されたデータを結合する処理が行われるので、リアルタイム通信が実現されることがなかった。
【0005】
このようなHTTPトンネリングサーバにおいて分割して送信されたデータを結合する処理を介するため、リモートGUIなどのリアルタイム通信には不適切である。このような状況をふまえ、プロキシが存在する通信経路を介した通信網を利用した双方向通信システムがある(例えば、特許文献1)。この特許文献1に記載の通信システムにおいては、サーバ装置と各クライアント装置間で、データの送受信が行われる以前に、クライアント装置からサーバ装置に対するデータ送信をリアルタイムに行うことを可能にするための、HTTPのPOSTメソッドを用いた上り回線と、サーバ装置からクライアント装置に対するデータ送信をリアルタイムに行うことを可能にするための、HTTPのGET メソッドを用いた下り回線との計2回線をあらかじめ作成するようにしたことを特徴とする、サーバおよび複数のクライアント間の双方向通信システムがある。
【0006】
この特許文献1に記載のシステムにおいては、図11に示すように、まずクライアント装置からサーバ装置にPOSTメソッドを送信して、POSTリクエストを終了させることなくクライアント装置からPOSTのデータを送り続ける上り回線を開設する。一方、クライアント装置からサーバ装置にGETメソッドを送信して、GETリクエストを終了させることなくサーバ装置からGETデータを送り続ける下り回線を開設する。このように、上りと下りでそれぞれの回線を設けることにより、アプリケーションがデータ送信を要求するタイミングでデータセルを送信してリアルタイム通信を実現している。
【特許文献1】特許第3478200号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかし、上述した特許文献1に記載の通信システムは、上り回線と下り回線の双方向の通信を維持しなければならず、一つの双方向通信で2回線分の処理リソースが必要となるため、ゲートウェイ装置の負荷が増大してしまう問題がある。また、保護対象装置へのアクセスが集中するゲートウェイ装置が過負荷状態に陥らないように、ゲートウェイ装置によって処理する回線数が制限されている場合もあり、HTTPトンネリングサーバにおける低負荷でリアルタイム通信を実現する通信方法および通信システムの提供が期待されている。
【0008】
従って本発明の目的は、HTTPトンネリングサーバにおける低負荷でリアルタイム通信を実現する通信方法および通信システムを提供することである。
【課題を解決するための手段】
【0009】
本発明の第1の特徴は、サーバ装置と、サーバ装置に処理を依頼しHTTPで通信するクライアント装置と、クライアント装置に接続されHTTP通信のみを通過させるゲートウェイと、ゲートウェイとサーバ装置との間に接続されHTTP通信を実現するHTTPトンネリングサーバを備える通信システムに用いられる通信方法に関する。即ち、本発明の第1の特徴に係る通信方法は、クライアント装置によって、通信コネクションの接続先であるサーバ装置のホスト識別子とポート番号を含むサーバ接続情報が生成されるステップと、クライアント装置によって、HTTPメソッドフィールドにPOSTが指定され、コンテンツ長フィールドにゲートウェイが通信可能な最大コンテンツ長が指定され、リクエスト本体フィールドにサーバ接続情報が指定されたHTTPリクエストが生成され、HTTPリクエストがHTTPトンネリングサーバに送信されるステップと、HTTPトンネリングサーバによって、HTTPリクエストのリクエスト本体フィールドが読み出され、接続情報に含まれたサーバ装置に通信コネクションが確立されるステップと、HTTPトンネリングサーバによって、接続された通信を識別する接続IDが採番されるとともに、HTTPトンネリングサーバによって読み出し可能な記憶装置のサーバ側設定データ記憶部に接続IDと接続情報とが関連づけられて記憶されるステップと、HTTPトンネリングサーバによって、サーバ装置からHTTP応答が受信されると、HTTP応答と接続IDとがクライアント装置に送信されるステップと、クライアント装置によって、最大コンテンツ長からHTTPリクエストのHTTPリクエスト本体フィールドのデータ長が減算された送信可能コンテンツ長が算出されるステップと、クライアント装置によって、クライアント装置によって読み出し可能な記憶装置のクライアント側設定データ記憶部に送信可能コンテンツ長と接続情報とが関連づけられて記憶されるステップとを備える。
【0010】
このような本発明によれば、HTTPのPOSTメソッドを用いた回線を作成することにより、クライアントとサーバ間のリアルタイム双方向通信を行うことができる。このとき、HTTPリクエストにおいて、コンテンツ長フィールドに、この通信システムで許可される最大コンテンツ長を指定し、送信するべきデータを、この最大コンテンツ長を越えないパケットに分割することにより、リアルタイムに通信することができる。このとき、最大コンテンツ長を越えない限り、一つのHTTPリクエストによって通信することができる。
【0011】
本発明の第2の特徴は、サーバ装置と、サーバ装置に処理を依頼しHTTPで通信するクライアント装置と、クライアント装置に接続されHTTP通信のみを通過させるゲートウェイと、ゲートウェイとサーバ装置との間に接続されHTTP通信を実現するHTTPトンネリングサーバを備える通信システムに関する。即ち本発明の第2の特徴に係る通信システムは、通信コネクションの接続先であるサーバ装置のホスト識別子とポート番号を含むサーバ接続情報を生成し、HTTPメソッドフィールドにPOSTを指定し、コンテンツ長フィールドにゲートウェイが通信可能な最大コンテンツ長を指定し、リクエスト本体フィールドにサーバ接続情報を指定したHTTPリクエストを生成し、HTTPリクエストをHTTPトンネリングサーバに送信し、HTTPトンネリングサーバからHTTP応答と接続IDとが送信されると、最大コンテンツ長からHTTPリクエストのHTTPリクエスト本体フィールドのデータ長を減算して送信可能コンテンツ長を算出し、読み出し可能な記憶装置のクライアント側設定データ記憶部に送信可能コンテンツ長と接続情報とを関連づけて記憶するクライアント装置と、クライアント装置からHTTPリクエストを受信すると、HTTPリクエストのリクエスト本体フィールドを読み出し、接続情報に含まれたサーバ装置に通信コネクションを確立し、接続された通信を識別する接続IDを採番するとともに、読み出し可能な記憶装置のサーバ側設定データ記憶部に接続IDと接続情報とを関連づけて記憶し、サーバ装置からHTTP応答が受信されると、HTTP応答と接続IDとをクライアント装置に送信するHTTPトンネリングサーバとを備える
【発明の効果】
【0012】
本発明によれば、HTTPトンネリングサーバにおける低負荷でリアルタイム通信を実現する通信方法および通信システムを提供することができる。
【発明を実施するための最良の形態】
【0013】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一または類似の部分には同一または類似の符号を付している。
【0014】
(最良の実施の形態)
(通信システム)
図1に示すように、本発明の最良の実施の形態に係る通信システムは、サーバ装置2と、サーバ装置2に処理を依頼しHTTPで通信するクライアント装置7と、クライアント装置7に接続されHTTP通信のみを通過させるプロキシサーバ4およびファイアウォール3などのゲートウェイと、ゲートウェイとサーバ装置2との間に接続されHTTP通信を実現するHTTPトンネリングサーバ1を備える。サーバ装置2とHTTPトンネリングサーバ1、HTTPトンネリングサーバ1とファイアウォール3、ファイアウォール3とプロキシサーバ4、プロキシサーバ4とクライアント装置7は、通信ネットワークによって接続されており、相互に通信可能である。
【0015】
サーバ装置2は、クライアント装置7にコンテンツなどのサービスを提供する装置である。
【0016】
HTTPトンネリングサーバ1は、プロキシサーバ4およびファイアウォール3と、サーバ装置2との間に設置され、クライアント装置7からカプセル化されたHTTPパケットを受信してHTTPパケットからデータを取り出してサーバ装置2に送信し、サーバ装置2から受信したデータをカプセル化してクライアント装置7に送信する。
【0017】
クライアント装置7はサーバ装置2から提供されたサービスを受ける装置である。クライアント装置7は、ブラウザなどのクライアントアプリケーション6と、HTTPトンネリング処理を行うHTTPトンネルクライアント5を備えている。
【0018】
HTTPトンネルクライアント5は、HTTPトンネリングサーバ1からカプセル化されたHTTPパケットを受信してHTTPパケットからからデータを取り出してクライアントアプリケーション6に送信し、クライアントアプリケーション6から受信したデータをカプセル化してHTTPトンネリングサーバ1に送信する。
【0019】
図1に示した例においては、サーバ装置2とHTTPトンネリングサーバ1とプロキシサーバ4、ファイアウォール3は、それぞれ異なるハードウェア上に構成されているが、HTTPトンネリングサーバ1の機能が、サーバ装置2、プロキシサーバ4、ファイアウォール3のいずれか一つ以上のハードウェア上に実装されても良い。また、図1に示した例においては、クライアント装置7が、クライアントアプリケーション6とHTTPトンネルクライアント5を備えているが、HTTPトンネルクライアント5は、クライアント装置7とは異なるハードウェア上に構成されても良い。
【0020】
本発明の最良の実施の形態に係る通信システムは、図2に示すように、クライアント装置7から送信されたPOSTリクエストの完了を待たずに、POSTのリプライを返信することにより、1回線で双方向の通信を実現する。このため、クライアント装置7から送信されるPOSTリクエストの送信バイト数のヘッダに、十分に大きい値を指定する。ここで指定されたバイト数のデータが送信されない限り、HTTPトンネリングサーバ1はPOSTリクエストが継続されていると認識する。またクライアント装置7は、指定された送信バイト数を越えるデータを送信しないように、送信するべきデータをパケットに分割して送信する。
【0021】
図2においては、クライアント装置からリクエストヘッダが送信されたことに対応して、HTTPトンネリングサーバ1からレスポンスヘッダが送信されると、リクエストボディ1、リクエストボディ2・・・・と、POSTリクエストのデータとして、HTTPパケットを送信する。
【0022】
具体的にはクライアント装置7はHTTPトンネリングサーバ1にリクエストボディ1としてHTTPリクエストを送信する。次に、HTTPトンネリングサーバ1は、レスポンスボディ1として、HTTP応答と、このコネクションを識別する接続IDをクライアント装置7に送信する。このとき、HTTPトンネリングサーバ1は、サーバ装置2からクライアント装置7に送信するべきデータを、レスポンスボディ2としてHTTPカプセル化して送信する。一方、クライアント装置7は、サーバ装置2に送信するべきデータを、リクエストボディ2としてHTTPカプセル化して送信する。
【0023】
(HTTPトンネリングサーバ)
図3に示すように、本発明の最良の実施の形態に係るHTTPトンネリングサーバ1は、中央処理制御装置101、ROM(Read Only Memory)102、RAM(Random Access Memory)103および入出力インタフェース109が、バス110を介して接続されている。入出力インタフェース109には、入力装置104、表示装置105、通信制御装置106、記憶装置107およびリムーバブルディスク108が接続されている。
【0024】
中央処理制御装置101は、入力装置104からの入力信号に基づいてROM102からHTTPトンネリングサーバ1を起動するためのブートプログラムを読み出して実行し、更に記憶装置107に記憶されたオペレーティングシステムを読み出す。更に中央処理制御装置101は、入力装置104や通信制御装置106などの入力信号に基づいて、各種装置の制御を行ったり、RAM103や記憶装置107などに記憶されたプログラムおよびデータを読み出してRAM103にロードするとともに、RAM103から読み出されたプログラムのコマンドに基づいて、データの計算または加工など、後述する一連の処理を実現する処理装置である。
【0025】
入力装置104は、操作者が各種の操作を入力するキーボード、マウスなどの入力デバイスにより構成されており、操作者の操作に基づいて入力信号を作成し、入出力インタフェース109およびバス110を介して中央処理制御装置101に送信される。表示装置105は、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどであり、中央処理制御装置101からバス110および入出力インタフェース109を介して表示装置105において表示させる出力信号を受信し、例えば中央処理制御装置101の処理結果などを表示する装置である。通信制御装置106は、LANカードやモデムなどの装置であり、HTTPトンネリングサーバ1をインターネットやLANなどの通信ネットワークに接続する装置である。通信制御装置106を介して通信ネットワークと送受信したデータは入力信号または出力信号として、入出力インタフェースおよびバス110を介して中央処理制御装置101に送受信される。
【0026】
記憶装置107は半導体ディスク装置や磁気ディスク装置などであって、中央処理制御装置101で実行されるプログラムやデータが記憶されている。リムーバブルディスク108は、光ディスクやフレキシブルディスクのことであり、ディスクドライブによって読み書きされた信号は、入出力インタフェース109およびバス110を介して中央処理制御装置101に送受信される。
【0027】
本発明の第1の実施の形態に係るHTTPトンネリングサーバ1の記憶装置107には、HTTPトンネリングプログラムが記憶されるとともに、サーバ側設定データ記憶部210およびサーバ側パケット記憶部211を備える。また、HTTPトンネリングプログラムがHTTPトンネリングサーバ1の中央処理制御装置101に読み込まれ実行されることによって、サーバ側データ送信手段201、サーバ側再送管理手段202、サーバ側データ受信手段203、サーバ側パケット受信手段204、サーバ側パケット送信手段205、サーバ側通信路管理手段206およびサーバ側接続開始手段207がHTTPトンネリングサーバ1に実装される。
【0028】
ここで、本発明の最良の実施の形態に係る通信システムにおいて、データは、サーバ装置2またはクライアントアプリケーション6の間を送受信される情報である。また、パケットは、クライアント装置7のHTTPトンネルクライアント5およびHTTPトンネリングサーバ1との間を送受信される情報である。このように、HTTPトンネルクライアント5は、クライアントアプリケーション6からデータを受信すると、それをHTTPパケットに分割し、プロキシサーバ4、ファイアウォール3を介してHTTPトンネリングサーバ1に送信する。これに伴い、HTTPトンネリングサーバ1は、HTTPトンネルクライアント5からHTTPパケットを受信すると、HTTPパケットからデータを取り出し、サーバ装置2に送信する。一方、HTTPトンネリングサーバ1は、サーバ装置2からデータを受信すると、それをHTTPパケットに分割し、ファイアウォール3、プロキシサーバ4を介してHTTPトンネルクライアント5に送信する。これに伴い、HTTPトンネルクライアント5は、HTTPトンネリングサーバ1からHTTPパケットを受信すると、HTTPパケットからデータを取り出し、クライアントアプリケーション6に送信する。
【0029】
HTTPトンネリングサーバ1は、クライアント装置7からHTTPリクエストが受信されると、HTTPリクエストのリクエスト本体フィールドを読み出し、接続情報に含まれたサーバ装置に通信コネクションを確立し、接続された通信を識別する接続IDが採番されるとともに、読み出し可能な記憶装置のサーバ側設定データ記憶部210に接続IDと接続情報とを関連づけて記憶し、サーバ装置2からHTTP応答が受信されると、HTTP応答と接続IDとをクライアント装置7に送信する。
【0030】
サーバ側設定データ記憶部210には、クライアント装置7との接続コネクションを識別する接続IDをキーとして、接続先のサーバ装置2の識別子であるホスト識別子とポート番号の組合せであるサーバ接続情報と、この通信路で送信可能なデータの長さを示す変数であるSENDABLE_LEN(送信可能コンテンツ長)と、クライアント装置7に次に送信するべきパケットのシーケンス番号である第2のシーケンス番号と、クライアント装置7から受信したパケットのシーケンス番号である第2の確認応答番号とが記憶されている。更に、1パケットにカプセル化できるデータの長さの最大値である最大パケット長(MAX_PACKET_LEN)も、サーバ側設定データ記憶部210に記憶されても良い。
【0031】
サーバ側パケット記憶部211には、HTTPトンネリングサーバ1によって送信されたパケットであって、クライアント装置7によって受信確認されていないパケットと、HTTPトンネルクライアント5から受信したパケットが記憶されている。
【0032】
サーバ側接続開始手段207は、クライアント装置7からHTTPリクエストを受信すると、HTTPリクエストに含まれた接続情報に基づいてサーバ装置2と通信コネクションを確立する。更にサーバ側接続開始手段207は、サーバ側通信路管理手段206に接続IDを採番させ、接続IDをクライアント側接続開始手段503に送信する。
【0033】
サーバ側通信路管理手段206は、この通信コネクションを識別する接続IDを採番して、サーバ側設定データ記憶部210に記憶する。更にサーバ側通信路管理手段206は、HTTPトンネルクライアントから通信コネクション再接続をリクエストするHTTPリクエストを受信し、HTTPリクエストに含まれる接続IDを検索して、クライアント側通信路管理手段502およびサーバ側再送管理手段202に通知する。
【0034】
サーバ側データ受信手段203は、サーバ装置2からクライアント装置7に送信するべきデータを受信して所定の大きさのパケットに分割し、サーバ側パケット送信手段205に入力する手段である。
【0035】
サーバ側パケット送信手段205は、送信するべきパケットが生成されるとそのパケットをクライアント装置7に送信するとともに、サーバ側再送管理手段202にパケットの識別子を入力する。
【0036】
サーバ側パケット受信手段204は、クライアント側パケット送信手段501からパケットが入力されると、そのパケットをサーバ側パケット記憶部211に記憶するとともに、サーバ側再送管理手段202にこのパケットの識別子を入力する。
【0037】
サーバ側データ送信手段201は、サーバ側パケット受信手段204からパケット内データが入力されると、そのデータをサーバ装置2に送信する。
【0038】
サーバ側再送管理手段202は、クライアント装置7から受信したパケットの識別子が入力されると、このパケットの第1のシーケンス番号を読みとり、第1のシーケンス番号を第2の確認応答番号に設定してサーバ側設定データ記憶部210に記憶するとともに、サーバ側パケット記憶部211からパケットの第1の確認応答番号より若い番号に関連づけられたパケットを削除する。また、サーバ側再送管理手段202は、サーバ側パケット送信手段205から送信するべきパケットの識別子が入力されると、サーバ側設定データ記憶部210を読み出して、このパケットに第2のシーケンス番号と第2の確認応答番号とを書き込むとともに、第2のシーケンス番号をインクリメントしてサーバ側設定データ記憶部210に記憶する。
【0039】
(クライアント装置)
クライアント装置7は、図3に示したHTTPトンネリングサーバ1と同様のハードウェア構成図を備える。クライアント装置7の記憶装置には、クライアントアプリケーションプログラム、HTTPトンネルクライアントプログラムが記憶されるとともに、クライアント側設定データ記憶部510およびクライアント側パケット記憶部511を備える。また、HTTPトンネルクライアントプログラムがクライアント装置7の中央処理制御装置に読み込まれ実行されることによって、クライアント側パケット送信手段501、クライアント側通信路管理手段502、クライアント側接続開始手段503、クライアント側パケット受信手段504、クライアント側データ送信手段505、クライアント側再送管理手段506およびクライアント側データ受信手段507が、クライアント装置7に実装される。
【0040】
クライアント装置7は、通信コネクションの接続先であるサーバ装置2のホスト識別子とポート番号を含むサーバ接続情報を生成し、HTTPメソッドフィールドにPOSTを指定し、コンテンツ長フィールドにゲートウェイが通信可能な最大コンテンツ長を指定し、リクエスト本体フィールドにサーバ接続情報が指定されたHTTPリクエストを生成し、HTTPリクエストをHTTPトンネリングサーバ1に送信し、HTTPトンネリングサーバ1からHTTP応答と接続IDとが送信されると、最大コンテンツ長からHTTPリクエストのHTTPリクエスト本体フィールドのデータ長を減算して送信可能コンテンツ長を算出し、読み出し可能な記憶装置のクライアント側設定データ記憶部510に送信可能コンテンツ長と接続情報とを関連づけて記憶する。
【0041】
クライアント側設定データ記憶部510には、サーバ装置2との接続コネクションを識別する接続IDをキーとして、接続先のサーバ装置2の識別子であるホスト識別子とポート番号の組合せであるサーバ接続情報と、この通信路で送信可能なデータの長さを示す変数であるSENDABLE_LEN(送信可能コンテンツ長)と、HTTPトンネリングサーバ1に次に送信するべきパケットのシーケンス番号である第1のシーケンス番号と、HTTPトンネリングサーバ1から受信したパケットのシーケンス番号である第1の確認応答番号とが記憶されている。更に、1パケットにカプセル化できるデータの長さの最大値である最大パケット長(MAX_PACKET_LEN)も、クライアント側設定データ記憶部510に記憶されても良い。
【0042】
クライアント側パケット記憶部511には、クライアント装置7によって送信されたパケットであって、HTTPトンネリングサーバ1によって受信確認されていないパケットと、HTTPトンネリングサーバ1から受信したパケットが記憶されている。
【0043】
クライアント側接続開始手段503は、サーバ接続情報が入力されると、HTTPメソッドフィールドにPOSTを指定し、コンテンツ長(CONTENT−LENGTH)フィールドにゲートウェイが通信可能な最大コンテンツ長を指定し、リクエスト本体フィールドにサーバ接続情報を指定したHTTPリクエストを生成し、HTTPリクエストをHTTPトンネリングサーバ1のサーバ側接続開始手段207に送信する。更にクライアント側接続開始手段503は、HTTP応答と接続IDを受信すると、最大コンテンツ長からHTTPリクエストのHTTPリクエスト本体フィールドのデータ長を減算した送信可能コンテンツ長を算出し、送信可能コンテンツ長と接続IDをクライアント側通信路管理手段502に入力する。
【0044】
クライアント側通信路管理手段502は、クライアント側通信路管理手段502は、送信可能コンテンツ長と接続IDが入力されると、クライアント側設定データ記憶部510に送信可能コンテンツ長と接続情報とを関連づけて記憶する。更にクライアント側通信路管理手段502は、クライアント側接続開始手段503に登録が完了した応答を入力する。クライアント側通信路管理手段502は、サーバ装置2との接続を再確立する場合、HTTPメソッドフィールドにPOSTを指定し、コンテンツ長フィールドにゲートウェイが通信可能な最大コンテンツ長を指定し、リクエスト本体フィールドに接続IDを指定したHTTPリクエストを生成し、このHTTPリクエストをHTTPトンネリングサーバ1のサーバ側通信路管理手段206に入力する。
【0045】
クライアント側パケット受信手段504は、HTTPトンネリングサーバ1からパケットを受信すると、そのパケットの識別子をクライアント側再送管理手段506に入力するとともに、クライアント側データ受信手段507にパケット内データを入力する。
【0046】
クライアント側データ受信手段507は、クライアント側パケット受信手段504からパケット内データが入力されると、それを保存し、クライアントアプリケーション6からの要請に基づいてデータをクライアントアプリケーションに入力する。
【0047】
クライアント側データ送信手段505は、クライアントアプリケーション6からサーバ装置2に送るべきデータを受信すると、クライアント側通信路管理手段502に送信可能コンテンツ長および最大コンテンツ長を読み出させ、送信可能コンテンツ長および最大コンテンツ長に基づいてデータをパケットに分割し、クライアント側パケット送信手段501に入力する。
【0048】
クライアント側パケット送信手段501は、クライアント側再送管理手段506にパケットの識別子を入力するとともに、パケットをサーバ側パケット受信手段204に入力する。
【0049】
クライアント側再送管理手段506は、HTTPトンネリングサーバ1から受信したパケットの識別子が入力されると、パケットの第2のシーケンス番号を読みとり、第2のシーケンス番号を第1の確認応答番号に設定してクライアント側設定データ記憶部510に記憶するとともに、クライアント側パケット記憶部511からパケットの第2の確認応答番号より若い番号に関連づけられたパケットを削除する。またクライアント側再送管理手段506は、HTTPトンネリングサーバ1に送信するパケットの識別子が入力されると、クライアント側設定データ記憶部510からの第1のシーケンス番号と、サーバ装置2から送信されたパケットのシーケンス番号である第1の確認応答番号とを読み出し、第1のシーケンス番号と第1の確認応答番号とをパケットに書き込んでクライアント側パケット記憶部511に記憶する。このとき、クライアント側再送管理手段506は、クライアント側設定データ記憶部510に記憶された第1のシーケンス番号をインクリメントする。
【0050】
(接続開始処理)
次に、図4を参照して本発明の最良の実施の形態に係る通信システムにおける接続開始処理を説明する。
【0051】
まず、クライアントアプリケーション6は、ステップS101において、接続先のサーバ装置2のホスト識別子とポート番号を含むサーバ接続情報を生成し、クライアント側接続開始手段503に入力する。クライアント側接続開始手段503は、サーバ接続情報が入力されると、HTTPメソッドフィールドにPOSTを指定し、コンテンツ長(CONTENT−LENGTH)フィールドにゲートウェイが通信可能な最大コンテンツ長を指定し、リクエスト本体フィールドにサーバ接続情報を指定したHTTPリクエストを生成し、HTTPリクエストをHTTPトンネリングサーバ1のサーバ側接続開始手段207に送信する。ここで、最大コンテンツ長は、プロキシサーバ4またはファイアウォール3などのゲートウェイや、クライアント装置7とサーバ装置2との間の通信ネットワークに備えられた通信機器によって決定される。
【0052】
サーバ側接続開始手段207はHTTPリクエストを受信すると、ステップS103において、HTTPリクエストのリクエスト本体フィールドが読み出され、接続情報に含まれたサーバ装置2に接続依頼を送信し、通信コネクションを確立する。サーバ装置2は、ステップS104において、接続依頼を受信するとそれに対応した応答をサーバ側接続開始手段207に送信する。サーバ側接続開始手段207はサーバ装置2から応答を受信すると、ステップS105において、サーバ側通信路管理手段206にこの通信コネクションを識別する接続IDを採番させるリクエストを送信し、ステップS106において、サーバ側通信路管理手段206から接続IDを受信すると、サーバ側設定データ記憶部210に、接続IDと接続情報とを関連づけて記憶する。
【0053】
サーバ側接続開始手段207は接続IDを受信すると、ステップS107において、ステップS102で送信されたHTTPリクエストに対応するHTTP応答と、接続IDをクライアント側接続開始手段503に送信する。
【0054】
クライアント側接続開始手段503がHTTP応答と接続IDを受信すると、最大コンテンツ長からHTTPリクエストのHTTPリクエスト本体フィールドのデータ長を減算した送信可能コンテンツ長を算出し、送信可能コンテンツ長と接続IDをクライアント側通信路管理手段502に入力する。
【0055】
クライアント側通信路管理手段502は、送信可能コンテンツ長と接続IDが入力されると、クライアント側設定データ記憶部510に送信可能コンテンツ長と接続情報とを関連づけられて記憶する。更にクライアント側通信路管理手段502は、クライアント側接続開始手段503に登録が完了した応答を入力する。
【0056】
クライアント側接続開始手段503は、応答が入力されると、ステップS110において、ステップS107で受信したHTTP応答をクライアントアプリケーション6に入力する。
【0057】
(クライアントアプリケーションからサーバ装置へのデータ送信)
クライアントアプリケーションからサーバ装置へデータを送信する場合、クライアントアプリケーション6は、サーバ装置2へ送信したデータをクライアント側データ送信手段505に入力する。クライアント側データ送信手段505は、図5に示すようなフローチャートに従って、クライアント側パケット送信手段501にパケットを入力する。ここで、パケットのヘッダ長(HEADER_LEN)とは、HTTPトンネルクライアント5からHTTPトンネリングサーバ1に送信するパケットのヘッダ長のことである。またパケットのデータ長(DATA_LEN)は、クライアントアプリケーション6が送信するデータの長さを表す変数である。
【0058】
クライアント側パケット送信手段501はまず、ステップS1において、サーバ装置2との通信コネクションが確立されているか確認し、接続されていない場合、ステップS2において通信コネクションを再確立する。この通信コネクションの再確立は後に詳述される。
【0059】
通信コネクションが確立されていることが確認されると、クライアント側パケット送信手段501は、ステップS3においてパケットのヘッダ長と送信可能コンテンツ長とを比較する。パケットのヘッダ長が送信可能コンテンツ長より大きい場合、ステップS4において通信コネクションが切断され、ステップS2において通信コネクションが再確立される。一方、ステップS3においてパケットのヘッダの長さが送信可能コンテンツ長より小さいと判定されると、ステップS5に進む。
【0060】
ステップS5において1パケットにカプセル化できる最大データ長である最大パケット長がパケットのデータ長より大きいと判断され、かつ、ステップS6において送信可能コンテンツ長がパケットのヘッダ長とデータ長との和よりも大きいと判断された場合、クライアント側パケット送信手段501は、ステップS7において、パケットのデータ長のデータのパケットをHTTPトンネリングサーバに送信する。更にステップS8においてクライアント側パケット送信手段501は、送信可能コンテンツ長からパケットのヘッダ長とデータ長を減算した送信可能コンテンツ長を、クライアント側設定データ記憶部510に記憶する。
【0061】
一方ステップS5において最大パケット長がパケットのデータ長より小さいと判断され、かつステップS11において送信可能コンテンツ長がパケットのヘッダ長とデータ長との和よりも小さいと判断された場合、ステップS12においてクライアント側パケット送信手段501は、最大パケット長のデータのパケットをHTTPトンネリングサーバに送信する。更にステップS13においてクライアント側パケット送信手段501は、送信可能コンテンツ長からパケットのヘッダ長と最大パケット長を減算した送信可能コンテンツ長と、パケットのデータ長から最大パケット長を減算したデータ長とを、クライアント側設定データ記憶部510に記憶する。次にクライアント側パケット送信手段501は、ステップS1に進み、通信路が確立されているかを確認し、次のデータを送信する。
【0062】
ステップS5において最大パケット長がパケットのデータ長よりも大きいと判断されステップS6において送信可能コンテンツ長がパケットのヘッダ長とデータ長との和よりも小さいと判断された場合、またはステップS5において最大パケット長がパケットのデータ長が小さいと判断されステップS11において送信可能コンテンツ長がパケットのヘッダ長とデータ長との和よりも大きいと判断された場合、ステップS9においてクライアント側パケット送信手段501は、送信可能コンテンツ長からパケットのヘッダ長を減算した大きさのデータのパケットをHTTPトンネリングサーバに送信する。更にステップS10においてクライアント側パケット送信手段501は、データ長から送信可能コンテンツ長を減算してヘッダ長を加算したデータ長が、クライアント側設定データ記憶部510に記憶する。その後、ステップS4に進み、クライアント側パケット送信手段501は、通信路を切断し、通信路を再確立する。
【0063】
図5のステップS7、S9およびS12において送信されるパケットは、図9に示すようなフィールドを備える。具体的には、このパケットは、HTTPトンネルクライアントから送信されるパケットのシーケンス番号、HTTPトンネルクライアントから送信されたパケットのシーケンス番号である確認応答番号、このパケットのデータ長、データを備えている。
【0064】
(HTTPトンネルクライアントからHTTPトンネリングサーバへのパケット送信)
次に図7を参照して、図5のステップS7、S9およびS12におけるパケットの送信処理について詳述する。具体的には、クライアントアプリケーション6からパケットのデータ長のデータのパケット、最大パケット長のデータのパケットおよび送信可能コンテンツ長からパケットのヘッダ長を減算した大きさのデータのパケットのいずれかのパケットが、HTTPトンネリングサーバ1に送信される場合について説明する。
【0065】
まず、ステップS201において、クライアント側データ送信手段505は、パケットを作成してクライアント側パケット送信手段501に入力する。クライアント側パケット送信手段501は、パケットをクライアント装置7によって読み出し可能な記憶装置のクライアント側パケット記憶部511に第1のシーケンス番号に関連づけて記憶する。この第1のシーケンス番号は、HTTPトンネルクライアント5から送信するパケットのシーケンス番号である。
【0066】
次に、ステップS202において、パケットの識別子(クライアント側パケット記憶部511に記憶されたパケットの記憶位置の識別子、パケットのポインタ、パケット名などのパケットの識別子)をクライアント側再送管理手段506に入力し、応答を待機する。
【0067】
パケットの識別子が入力されると、クライアント側再送管理手段506は、クライアント側設定データ記憶部510から、第1のシーケンス番号と、サーバ装置から送信されたパケットのシーケンス番号である第1の確認応答番号とを読み出し、第1のシーケンス番号と第1の確認応答番号とをパケットに書き込んでクライアント側パケット記憶部511に記憶する。このとき、クライアント側再送管理手段506は、クライアント側設定データ記憶部510に記憶された第1のシーケンス番号をインクリメントする。更にクライアント側通信路管理手段502は、ステップS203において、ステップS202に対する応答をクライアント側パケット送信手段501に入力する。
【0068】
次にクライアント側パケット送信手段501は、ステップS204においてクライアント側パケット記憶部511からパケットを読み出して、このパケットをHTTPトンネリングサーバ1のサーバ側パケット受信手段204に送信するとともに、ステップS205において、ステップS201に対する応答をクライアント側データ送信手段505に入力する。
【0069】
ステップS204においてHTTPトンネルクライアント5のクライアント側パケット送信手段501からパケットを受信すると、サーバ側パケット受信手段204は、サーバ側パケット記憶部211に記憶するとともに、ステップS206において、そのパケットの識別子をサーバ側再送管理手段202に入力する。
【0070】
パケットの識別子が入力されるとサーバ側再送管理手段202は、パケットの第1のシーケンス番号を読みとり、第1のシーケンス番号を第2の確認応答番号に設定してサーバ側設定データ記憶部210に記憶するとともに、サーバ側パケット記憶部211からパケットの第1の確認応答番号より若い番号に関連づけられたパケットを削除する。更にサーバ側再送管理手段202は、ステップS207において、ステップS206に対する応答をサーバ側パケット受信手段204に入力する。
【0071】
応答が入力されるとサーバ側パケット受信手段204は、パケットからデータを抽出し、ステップS208において、サーバ側データ送信手段201にデータを入力して応答を待機する。
【0072】
データが入力されるとサーバ側データ送信手段201は、ステップS209においてこのデータをサーバ装置2に送信するとともに、ステップS210において、ステップS208に対する応答をサーバ側パケット受信手段204に入力する。
【0073】
(通信コネクションの再確立処理)
次に図8を参照して、図5のステップS2における通信路の再確立処理について詳述する。
【0074】
まず、クライアント側通信路管理手段502は、ステップS301において、HTTPメソッドフィールドにPOSTを指定し、コンテンツ長フィールドにゲートウェイが通信可能な最大コンテンツ長を指定し、リクエスト本体フィールドに接続IDを指定したHTTPリクエストを生成し、このHTTPリクエストをHTTPトンネリングサーバ1のサーバ側通信路管理手段206に入力する。HTTPリクエストが入力されるとサーバ側通信路管理手段206は、サーバ側設定データ記憶部210を検索して接続IDをキーに接続情報を検索し、ステップS302において、ステップS301に対するHTTP応答をHTTPトンネルクライアント5のクライアント側通信路管理手段502に入力する。
【0075】
HTTP応答が入力されると、クライアント側通信路管理手段502は、ステップS303において、クライアント側再送管理手段506に再接続されたことを通知し、ステップS304においてクライアント側再送管理手段506は、再送のためにクライアント側パケット記憶部511に記憶されている全てのパケットをクライアント側パケット送信手段501に入力する。クライアント側パケット送信手段501は、入力されたパケットをHTTPトンネリングサーバ1のサーバ側パケット受信手段204に送信する。
【0076】
一方、接続情報が検索されると、サーバ側通信路管理手段206は、ステップS305において、再接続されたことをサーバ側再送管理手段202に通知し、ステップS306においてサーバ側再送管理手段202は、再送のためにサーバ側パケット記憶部211に記憶されている全てのパケットをサーバ側パケット送信手段205に入力する。サーバ側パケット送信手段205は、入力されたパケットをHTTPトンネルクライアント5のクライアント側パケット受信手段504に送信する。
【0077】
(サーバ装置からクライアント装置へのデータ送信)
次に図9を参照して、サーバ装置2からクライアント装置7へのデータ送信処理について説明する。
【0078】
ステップS401において、サーバ装置2からクライアント装置7に送るべきデータがHTTPトンネリングサーバ1のサーバ側データ受信手段203に入力されると、ステップS203において、サーバ側データ受信手段203は、サーバ側設定データ記憶部210から最大パケット長を読み出し、データが最大パケット長より大きい場合、データから最大パケット長の大きさのデータを読み出し、パケットに書き込む。この処理は、送るべきデータが全て送られるまで繰り返され、ここで作成されたパケットはそれぞれ、以下のステップS402ないしステップS408において処理される。
【0079】
パケットが生成されると、サーバ側データ受信手段203は、ステップS402においてこのパケットをサーバ側パケット送信手段205に入力し、サーバ側パケット送信手段205は、第2のシーケンス番号に関連づけてサーバ側パケット記憶部211に記憶する。この第2のシーケンス番号は、HTTPトンネリングサーバ1から送信するパケットのシーケンス番号である。更にサーバ側パケット送信手段205は、ステップS403においてパケットの識別子をサーバ側再送管理手段202に入力する。
【0080】
サーバ側再送管理手段202は、サーバ側設定データ記憶部210から、第2のシーケンス番号と、クライアント装置から送信されたパケットのシーケンス番号である第2の確認応答番号とを読み出し、第2のシーケンス番号と第2の確認応答番号とをパケットに書き込んでサーバ側パケット記憶部211に記憶する。更にサーバ側再送管理手段202は、ステップS404において、ステップS403に対する応答をサーバ側パケット送信手段205に入力する。このときサーバ側再送管理手段202は、第2のシーケンス番号をインクリメントしてサーバ側設定データ記憶部210に記憶する。
【0081】
応答が入力されるとサーバ側パケット送信手段205は、ステップS405において、サーバ側パケット記憶部211を読み出してパケットをHTTPトンネルクライアント5のクライアント側パケット受信手段504に送信する。
【0082】
パケットを受信すると、クライアント側パケット受信手段504は、受信したパケットをクライアント側パケット記憶部511に記憶するとともに、ステップS406においてパケットの識別子をクライアント側再送管理手段506に入力する。
【0083】
パケットの識別子が入力されるとクライアント側再送管理手段506は、パケットの第2のシーケンス番号を読みとり、第2のシーケンス番号を第1の確認応答番号に設定してクライアント側設定データ記憶部510に記憶するとともに、クライアント側パケット記憶部511からパケットの第2の確認応答番号より若い番号に関連づけられたパケットを削除する。更にクライアント側再送管理手段506は、ステップS406に対する応答をクライアント側パケット受信手段504に入力する。
【0084】
応答が入力されるとクライアント側パケット受信手段504は、パケットからデータを抽出して、ステップS408において、クライアント側データ受信手段507にデータを入力する。クライアント側データ受信手段507は、クライアントアプリケーション6がデータを受け取りに来るまで、データを保存する。
【0085】
このように本発明の最良の実施の形態に係る通信システムによれば、ファイアウォールやHTTPプロキシサーバによってHTTP通信のみが許可されるネットワークにおいて、HTTPのPOSTメソッドを用いた回線を作成することにより、クライアントとサーバ間のリアルタイム双方向通信を行うことができる。このとき、HTTPリクエストにおいて、コンテンツ長フィールドに、この通信システムで許可される最大コンテンツ長を指定し、送信するべきデータを、この最大コンテンツ長を越えないパケットに分割することにより、リアルタイムに通信することができる。このとき、最大コンテンツ長を越えない限り、一つのHTTPリクエストによって通信することができる。
【0086】
更に本発明の最良の実施の形態に係る通信システムによれば、HTTPのPOSTメソッドで最大コンテンツ長を越えた場合、この通信コネクションを識別する接続IDを含む新たなPOSTメソッドで回線を接続することにより、通信を継続することができる。
【0087】
(その他の実施の形態)
上記のように、本発明の最良の実施の形態によって記載したが、この開示の一部をなす論述および図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例および運用技術が明らかとなる。
【0088】
本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。従って、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【図面の簡単な説明】
【0089】
【図1】本発明の最良の実施の形態に係る通信システムのシステム構成図である。
【図2】本発明の最良の実施の形態に係る通信方法の概略を説明するシーケンス図である。
【図3】本発明の最良の実施の形態に係るHTTPトンネリングサーバのハードウェア構成図である。
【図4】本発明の最良の実施の形態に係る通信システムにおける接続開始処理を説明する図である。
【図5】本発明の最良の実施の形態に係る通信システムにおいて、クライアントからデータを送信する処理を説明するフローチャートである。
【図6】本発明の最良の実施の形態に係る通信システムにおいて、HTTPトンネルクライアントとHTTPトンネリングサーバとの間で送受信されるパケットを説明する図である。
【図7】本発明の最良の実施の形態に係る通信システムにおいて、HTTPトンネルクライアントからHTTPトンネリングサーバにパケットを送信する処理を説明するシーケンス図である。
【図8】本発明の最良の実施の形態に係る通信システムにおいて、通信コネクションを再接続する処理を説明するシーケンス図である。
【図9】本発明の最良の実施の形態に係る通信システムにおいて、HTTPトンネリングサーバからHTTPトンネルクライアントにパケットを送信する処理を説明するシーケンス図である。
【図10】従来の通信システムを説明するシーケンス図である。(その1)
【図11】従来の通信システムを説明するシーケンス図である。(その2)
【符号の説明】
【0090】
1…HTTPトンネリングサーバ
2…サーバ装置
3…ファイアウォール
4…プロキシサーバ
5…HTTPトンネルクライアント
6…クライアントアプリケーション
7…クライアント装置
101…中央処理制御装置
102…ROM
103…RAM
104…入力装置
105…表示装置
106…通信制御装置
107…記憶装置
108…リムーバブルディスク
109…入出力インタフェース
110…バス
201…サーバ側データ送信手段
202…サーバ側再送管理手段
203…サーバ側データ受信手段
204…サーバ側パケット受信手段
205…サーバ側パケット送信手段
206…サーバ側通信路管理手段
207…サーバ側接続開始手段
210…サーバ側設定データ記憶部
211…サーバ側パケット記憶部
501…クライアント側パケット送信手段
502…クライアント側通信路管理手段
503…クライアント側接続開始手段
504…クライアント側パケット受信手段
505…クライアント側データ送信手段
506…クライアント側再送管理手段
507…クライアント側データ受信手段
510…クライアント側設定データ記憶部
511…クライアント側パケット記憶部

【特許請求の範囲】
【請求項1】
サーバ装置と、前記サーバ装置に処理を依頼しHTTPで通信するクライアント装置と、前記クライアント装置に接続されHTTP通信のみを通過させるゲートウェイと、前記ゲートウェイと前記サーバ装置との間に接続されHTTP通信を実現するHTTPトンネリングサーバを備える通信システムに用いられる通信方法において、
前記クライアント装置によって、通信コネクションの接続先であるサーバ装置のホスト識別子とポート番号を含むサーバ接続情報が生成されるステップと、
前記クライアント装置によって、HTTPメソッドフィールドにPOSTが指定され、コンテンツ長フィールドに前記ゲートウェイが通信可能な最大コンテンツ長が指定され、リクエスト本体フィールドに前記サーバ接続情報が指定されたHTTPリクエストが生成され、前記HTTPリクエストが前記HTTPトンネリングサーバに送信されるステップと、
前記HTTPトンネリングサーバによって、前記HTTPリクエストの前記リクエスト本体フィールドが読み出され、前記接続情報に含まれた前記サーバ装置に通信コネクションが確立されるステップと、
前記HTTPトンネリングサーバによって、接続された前記通信を識別する接続IDが採番されるとともに、前記HTTPトンネリングサーバによって読み出し可能な記憶装置のサーバ側設定データ記憶部に前記接続IDと前記接続情報とが関連づけられて記憶されるステップと、
前記HTTPトンネリングサーバによって、前記サーバ装置からHTTP応答が受信されると、前記HTTP応答と前記接続IDとが前記クライアント装置に送信されるステップと、
前記クライアント装置によって、前記最大コンテンツ長から前記HTTPリクエストの前記HTTPリクエスト本体フィールドのデータ長が減算された送信可能コンテンツ長が算出されるステップと、
前記クライアント装置によって、前記クライアント装置によって読み出し可能な記憶装置のクライアント側設定データ記憶部に前記送信可能コンテンツ長と前記接続情報とが関連づけられて記憶されるステップ
とを備えることを特徴とする通信方法。
【請求項2】
前記クライアント装置から前記サーバ装置にパケットを送信する場合、前記クライアント装置によって、
前記サーバ装置との通信コネクションが確立されているか確認し、接続されていない場合、前記通信コネクションが再確立されるステップと、
前記通信コネクションが確立されていることが確認されると、前記パケットのヘッダ長が前記送信可能コンテンツ長より大きい場合、前記通信コネクションが切断され、前記通信コネクションが再確立されるステップと、
前記パケットのヘッダの長さが前記送信可能コンテンツ長より小さいと判定され、
1パケットにカプセル化できる最大データ長である最大パケット長が前記パケットのデータ長より大きく、かつ、前記送信可能コンテンツ長が前記パケットの前記ヘッダ長と前記データ長との和よりも大きい場合、前記パケットの前記データ長のデータのパケットが前記HTTPトンネリングサーバに送信されるとともに、前記送信可能コンテンツ長から前記パケットの前記ヘッダ長と前記データ長が減算された前記送信可能コンテンツ長が、前記クライアント側設定データ記憶部に記憶されるステップと、
前記最大パケット長が前記パケットのデータ長が小さく、かつ、前記送信可能コンテンツ長が前記パケットの前記ヘッダ長と前記データ長との和よりも小さい場合、前記最大パケット長のデータのパケットが前記HTTPトンネリングサーバに送信されるとともに、前記送信可能コンテンツ長から前記パケットの前記ヘッダ長と前記最大パケット長が減算された前記送信可能コンテンツ長と、前記パケットのデータ長から前記最大パケット長が減算された前記データ長とが、前記クライアント側設定データ記憶部に記憶されるステップと、
前記最大パケット長が前記パケットのデータ長よりも大きく前記送信可能コンテンツ長が前記パケットのヘッダ長と前記データ長との和よりも小さい場合、または前記最大パケット長が前記パケットのデータ長が小さく、かつ、前記送信可能コンテンツ長が前記パケットの前記ヘッダ長と前記データ長との和よりも大きい場合、前記送信可能コンテンツ長から前記パケットのヘッダ長を減算した大きさのデータのパケットが前記HTTPトンネリングサーバに送信されるとともに、前記データ長から前記送信可能コンテンツ長を減算して前記ヘッダ長を加算した前記データ長が、前記クライアント側設定データ記憶部に記憶されるステップ
とを更に備えることを特徴とする請求項1に記載の通信方法。
【請求項3】
前記サーバ装置との通信コネクションが確立されているか確認し、接続されていない場合、前記通信コネクションが再確立されるステップは、
前記クライアント装置によって、前記HTTPメソッドフィールドにPOSTが指定され、前記コンテンツ長フィールドに前記ゲートウェイが通信可能な最大コンテンツ長が指定され、前記リクエスト本体フィールドに前記接続IDが指定されたHTTPリクエストが前記HTTPトンネリングサーバに送信されるステップと、
前記HTTPトンネリングサーバによって、前記サーバ側設定データ記憶部から前記接続IDをキーに前記接続情報が検索されるステップと、
前記接続情報が検索されると、前記HTTPトンネリングサーバによって、前記クライアント装置にHTTP応答が送信されることにより、前記クライアント装置との通信コネクションが再確立されるステップ
とを更に備えることを特徴とする請求項2に記載の通信方法。
【請求項4】
前記クライアント装置に前記HTTP応答が送信されると、前記クライアント装置によって、再送のために保存されたパケットが前記HTTPトンネリングサーバに送信されるステップと、
前記通信コネクションが再確立されると、前記HTTPトンネリングサーバによって、再送のために保存されたパケットが前記クライアント装置に送信されるステップ
とを更に備えることを特徴とする請求項3に記載の通信方法。
【請求項5】
前記パケットの前記データ長のデータのパケット、前記最大パケット長のデータのパケットおよび前記送信可能コンテンツ長から前記パケットのヘッダ長を減算した大きさのデータのパケットのいずれかのパケットが、前記HTTPトンネリングサーバに送信される場合、
前記クライアント装置によって、前記パケットが生成されるとともに、再送のために生成された前記パケットが前記クライアント装置によって読み出し可能な記憶装置のクライアント側パケット記憶部に第1のシーケンス番号に関連づけて記憶されるステップと、
前記クライアント装置によって、前記クライアント側設定データ記憶部から、前記第1のシーケンス番号と、前記サーバ装置から送信されたパケットのシーケンス番号である第1の確認応答番号とが読み出され、前記第1のシーケンス番号と前記第1の確認応答番号とが前記パケットに書き込まれるステップと、
前記クライアント装置によって、前記第1のシーケンス番号がインクリメントされて前記クライアント側設定データ記憶部に記憶されるとともに、前記パケットが前記HTTPトンネリングサーバに送信されるステップ
とを更に備えることを特徴とする請求項4に記載の通信方法。
【請求項6】
前記HTTPトンネリングサーバによって前記パケットが受信されると、前記HTTPトンネリングサーバによって、前記パケットの前記第1のシーケンス番号が読みとられ、前記第1のシーケンス番号が設定された第2の確認応答番号が前記サーバ側設定データ記憶部に記憶されるとともに、サーバ側パケット記憶部から前記パケットの前記第1の確認応答番号より若い番号に関連づけられたパケットが削除されるステップ
を更に備えることを特徴とする請求項5に記載の通信方法。
【請求項7】
前記サーバ装置から前記HTTPトンネリングサーバにデータが送信されると、前記HTTPトンネリングサーバによって前記サーバ側設定データ記憶部から最大パケット長が読み出され、前記データが前記最大パケット長より大きい場合、前記データから前記最大パケット長の大きさのデータが読み出され、パケットに書き込まれ、第2のシーケンス番号に関連づけられてサーバ側パケット記憶部に記憶されるステップと、
前記HTTPトンネリングサーバによって、前記サーバ側設定データ記憶部から、前記第2のシーケンス番号と、前記クライアント装置から送信されたパケットのシーケンス番号である第2の確認応答番号とが読み出され、前記第2のシーケンス番号と前記第2の確認応答番号とが前記パケットに書き込まれるステップと、
前記HTTPトンネリングサーバによって、前記第2のシーケンス番号がインクリメントされて前記サーバ側設定データ記憶部に記憶されるとともに、前記パケットが前記クライアント装置に送信されるステップ
とを備えることを特徴とする請求項1に記載の通信方法。
【請求項8】
前記クライアント装置によって前記パケットが受信されると、前記クライアント装置によって、前記パケットの前記第2のシーケンス番号が読みとられ、前記第2のシーケンス番号が設定された第1の確認応答番号が前記クライアント側設定データ記憶部に記憶されるとともに、クライアント側パケット記憶部から前記パケットの前記第2の確認応答番号より若い番号に関連づけられたパケットが削除されるステップ
を更に備えることを特徴とする請求項7に記載の通信方法。
【請求項9】
サーバ装置と、前記サーバ装置に処理を依頼しHTTPで通信するクライアント装置と、前記クライアント装置に接続されHTTP通信のみを通過させるゲートウェイと、前記ゲートウェイと前記サーバ装置との間に接続されHTTP通信を実現するHTTPトンネリングサーバを備える通信システムにおいて、
通信コネクションの接続先であるサーバ装置のホスト識別子とポート番号を含むサーバ接続情報を生成し、
HTTPメソッドフィールドにPOSTを指定し、コンテンツ長フィールドに前記ゲートウェイが通信可能な最大コンテンツ長を指定し、リクエスト本体フィールドに前記サーバ接続情報を指定したHTTPリクエストを生成し、前記HTTPリクエストを前記HTTPトンネリングサーバに送信し、
前記HTTPトンネリングサーバからHTTP応答と接続IDとが送信されると、前記最大コンテンツ長から前記HTTPリクエストの前記HTTPリクエスト本体フィールドのデータ長を減算して送信可能コンテンツ長を算出し、
読み出し可能な記憶装置のクライアント側設定データ記憶部に前記送信可能コンテンツ長と前記接続情報とを関連づけて記憶するクライアント装置と、
前記クライアント装置から前記HTTPリクエストを受信すると、前記HTTPリクエストの前記リクエスト本体フィールドを読み出し、前記接続情報に含まれた前記サーバ装置に通信コネクションを確立し、
接続された前記通信を識別する接続IDを採番するとともに、読み出し可能な記憶装置のサーバ側設定データ記憶部に前記接続IDと前記接続情報とを関連づけて記憶し、
前記サーバ装置からHTTP応答が受信されると、前記HTTP応答と前記接続IDとを前記クライアント装置に送信するHTTPトンネリングサーバ
とを備えることを特徴とする通信システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate