(57)【要約】【課題】ＨＴＴＰトンネリングサーバにおける低負荷でリアルタイム通信を実現する。【解決手段】ＨＴＴＰトンネルクライアント５は、ホスト識別子とポート番号を含むサーバ接続情報を生成し、ＨＴＴＰメソッドにＰＯＳＴを、コンテンツ長に最大コンテンツ長を、リクエスト本体にサーバ接続情報を指定したＨＴＴＰリクエストを送信し、接続ＩＤとが送信されると、最大コンテンツ長からＨＴＴＰリクエストのＨＴＴＰリクエスト本体フィールドのデータ長を減算して送信可能コンテンツ長を算出して記憶する。ＨＴＴＰトンネリングサーバ１は、ＨＴＴＰリクエストを受信すると、リクエスト本体を読み出し、接続情報に含まれたサーバ装置２に通信コネクションを確立し、接続された通信を識別する接続ＩＤを採番するとともに、サーバ側設定データ記憶部２１０に接続ＩＤと接続情報とを関連づけて記憶する。【選択図】      図１
2006101431.tif 000002
【特許請求の範囲】
【請求項１】
サーバ装置と、前記サーバ装置に処理を依頼しＨＴＴＰで通信するクライアント装置と、前記クライアント装置に接続されＨＴＴＰ通信のみを通過させるゲートウェイと、前記ゲートウェイと前記サーバ装置との間に接続されＨＴＴＰ通信を実現するＨＴＴＰトンネリングサーバを備える通信システムに用いられる通信方法において、
前記クライアント装置によって、通信コネクションの接続先であるサーバ装置のホスト識別子とポート番号を含むサーバ接続情報が生成されるステップと、
前記クライアント装置によって、ＨＴＴＰメソッドフィールドにＰＯＳＴが指定され、コンテンツ長フィールドに前記ゲートウェイが通信可能な最大コンテンツ長が指定され、リクエスト本体フィールドに前記サーバ接続情報が指定されたＨＴＴＰリクエストが生成され、前記ＨＴＴＰリクエストが前記ＨＴＴＰトンネリングサーバに送信されるステップと、
前記ＨＴＴＰトンネリングサーバによって、前記ＨＴＴＰリクエストの前記リクエスト本体フィールドが読み出され、前記接続情報に含まれた前記サーバ装置に通信コネクションが確立されるステップと、
前記ＨＴＴＰトンネリングサーバによって、接続された前記通信を識別する接続ＩＤが採番されるとともに、前記ＨＴＴＰトンネリングサーバによって読み出し可能な記憶装置のサーバ側設定データ記憶部に前記接続ＩＤと前記接続情報とが関連づけられて記憶されるステップと、
前記ＨＴＴＰトンネリングサーバによって、前記サーバ装置からＨＴＴＰ応答が受信されると、前記ＨＴＴＰ応答と前記接続ＩＤとが前記クライアント装置に送信されるステップと、
前記クライアント装置によって、前記最大コンテンツ長から前記ＨＴＴＰリクエストの前記ＨＴＴＰリクエスト本体フィールドのデータ長が減算された送信可能コンテンツ長が算出されるステップと、
前記クライアント装置によって、前記クライアント装置によって読み出し可能な記憶装置のクライアント側設定データ記憶部に前記送信可能コンテンツ長と前記接続情報とが関連づけられて記憶されるステップ  
とを備えることを特徴とする通信方法。
【請求項２】
前記クライアント装置から前記サーバ装置にパケットを送信する場合、前記クライアント装置によって、
前記サーバ装置との通信コネクションが確立されているか確認し、接続されていない場合、前記通信コネクションが再確立されるステップと、
前記通信コネクションが確立されていることが確認されると、前記パケットのヘッダ長が前記送信可能コンテンツ長より大きい場合、前記通信コネクションが切断され、前記通信コネクションが再確立されるステップと、
前記パケットのヘッダの長さが前記送信可能コンテンツ長より小さいと判定され、
１パケットにカプセル化できる最大データ長である最大パケット長が前記パケットのデータ長より大きく、かつ、前記送信可能コンテンツ長が前記パケットの前記ヘッダ長と前記データ長との和よりも大きい場合、前記パケットの前記データ長のデータのパケットが前記ＨＴＴＰトンネリングサーバに送信されるとともに、前記送信可能コンテンツ長から前記パケットの前記ヘッダ長と前記データ長が減算された前記送信可能コンテンツ長が、前記クライアント側設定データ記憶部に記憶されるステップと、
前記最大パケット長が前記パケットのデータ長が小さく、かつ、前記送信可能コンテンツ長が前記パケットの前記ヘッダ長と前記データ長との和よりも小さい場合、前記最大パケット長のデータのパケットが前記ＨＴＴＰトンネリングサーバに送信されるとともに、前記送信可能コンテンツ長から前記パケットの前記ヘッダ長と前記最大パケット長が減算された前記送信可能コンテンツ長と、前記パケットのデータ長から前記最大パケット長が減算された前記データ長とが、前記クライアント側設定データ記憶部に記憶されるステップと、
前記最大パケット長が前記パケットのデータ長よりも大きく前記送信可能コンテンツ長が前記パケットのヘッダ長と前記データ長との和よりも小さい場合、または前記最大パケット長が前記パケットのデータ長が小さく、かつ、前記送信可能コンテンツ長が前記パケットの前記ヘッダ長と前記データ長との和よりも大きい場合、前記送信可能コンテンツ長から前記パケットのヘッダ長を減算した大きさのデータのパケットが前記ＨＴＴＰトンネリングサーバに送信されるとともに、前記データ長から前記送信可能コンテンツ長を減算して前記ヘッダ長を加算した前記データ長が、前記クライアント側設定データ記憶部に記憶されるステップ
とを更に備えることを特徴とする請求項１に記載の通信方法。
【請求項３】
前記サーバ装置との通信コネクションが確立されているか確認し、接続されていない場合、前記通信コネクションが再確立されるステップは、
前記クライアント装置によって、前記ＨＴＴＰメソッドフィールドにＰＯＳＴが指定され、前記コンテンツ長フィールドに前記ゲートウェイが通信可能な最大コンテンツ長が指定され、前記リクエスト本体フィールドに前記接続ＩＤが指定されたＨＴＴＰリクエストが前記ＨＴＴＰトンネリングサーバに送信されるステップと、
前記ＨＴＴＰトンネリングサーバによって、前記サーバ側設定データ記憶部から前記接続ＩＤをキーに前記接続情報が検索されるステップと、
前記接続情報が検索されると、前記ＨＴＴＰトンネリングサーバによって、前記クライアント装置にＨＴＴＰ応答が送信されることにより、前記クライアント装置との通信コネクションが再確立されるステップ
とを更に備えることを特徴とする請求項２に記載の通信方法。
【請求項４】
前記クライアント装置に前記ＨＴＴＰ応答が送信されると、前記クライアント装置によって、再送のために保存されたパケットが前記ＨＴＴＰトンネリングサーバに送信されるステップと、
前記通信コネクションが再確立されると、前記ＨＴＴＰトンネリングサーバによって、再送のために保存されたパケットが前記クライアント装置に送信されるステップ
とを更に備えることを特徴とする請求項３に記載の通信方法。
【請求項５】
前記パケットの前記データ長のデータのパケット、前記最大パケット長のデータのパケットおよび前記送信可能コンテンツ長から前記パケットのヘッダ長を減算した大きさのデータのパケットのいずれかのパケットが、前記ＨＴＴＰトンネリングサーバに送信される場合、
前記クライアント装置によって、前記パケットが生成されるとともに、再送のために生成された前記パケットが前記クライアント装置によって読み出し可能な記憶装置のクライアント側パケット記憶部に第１のシーケンス番号に関連づけて記憶されるステップと、
前記クライアント装置によって、前記クライアント側設定データ記憶部から、前記第１のシーケンス番号と、前記サーバ装置から送信されたパケットのシーケンス番号である第１の確認応答番号とが読み出され、前記第１のシーケンス番号と前記第１の確認応答番号とが前記パケットに書き込まれるステップと、
前記クライアント装置によって、前記第１のシーケンス番号がインクリメントされて前記クライアント側設定データ記憶部に記憶されるとともに、前記パケットが前記ＨＴＴＰトンネリングサーバに送信されるステップ
とを更に備えることを特徴とする請求項４に記載の通信方法。
【請求項６】
前記ＨＴＴＰトンネリングサーバによって前記パケットが受信されると、前記ＨＴＴＰトンネリングサーバによって、前記パケットの前記第１のシーケンス番号が読みとられ、前記第１のシーケンス番号が設定された第２の確認応答番号が前記サーバ側設定データ記憶部に記憶されるとともに、サーバ側パケット記憶部から前記パケットの前記第１の確認応答番号より若い番号に関連づけられたパケットが削除されるステップ
を更に備えることを特徴とする請求項５に記載の通信方法。
【請求項７】
前記サーバ装置から前記ＨＴＴＰトンネリングサーバにデータが送信されると、前記ＨＴＴＰトンネリングサーバによって前記サーバ側設定データ記憶部から最大パケット長が読み出され、前記データが前記最大パケット長より大きい場合、前記データから前記最大パケット長の大きさのデータが読み出され、パケットに書き込まれ、第２のシーケンス番号に関連づけられてサーバ側パケット記憶部に記憶されるステップと、
前記ＨＴＴＰトンネリングサーバによって、前記サーバ側設定データ記憶部から、前記第２のシーケンス番号と、前記クライアント装置から送信されたパケットのシーケンス番号である第２の確認応答番号とが読み出され、前記第２のシーケンス番号と前記第２の確認応答番号とが前記パケットに書き込まれるステップと、
前記ＨＴＴＰトンネリングサーバによって、前記第２のシーケンス番号がインクリメントされて前記サーバ側設定データ記憶部に記憶されるとともに、前記パケットが前記クライアント装置に送信されるステップ
とを備えることを特徴とする請求項１に記載の通信方法。
【請求項８】
前記クライアント装置によって前記パケットが受信されると、前記クライアント装置によって、前記パケットの前記第２のシーケンス番号が読みとられ、前記第２のシーケンス番号が設定された第１の確認応答番号が前記クライアント側設定データ記憶部に記憶されるとともに、クライアント側パケット記憶部から前記パケットの前記第２の確認応答番号より若い番号に関連づけられたパケットが削除されるステップ
を更に備えることを特徴とする請求項７に記載の通信方法。
【請求項９】
サーバ装置と、前記サーバ装置に処理を依頼しＨＴＴＰで通信するクライアント装置と、前記クライアント装置に接続されＨＴＴＰ通信のみを通過させるゲートウェイと、前記ゲートウェイと前記サーバ装置との間に接続されＨＴＴＰ通信を実現するＨＴＴＰトンネリングサーバを備える通信システムにおいて、
通信コネクションの接続先であるサーバ装置のホスト識別子とポート番号を含むサーバ接続情報を生成し、
ＨＴＴＰメソッドフィールドにＰＯＳＴを指定し、コンテンツ長フィールドに前記ゲートウェイが通信可能な最大コンテンツ長を指定し、リクエスト本体フィールドに前記サーバ接続情報を指定したＨＴＴＰリクエストを生成し、前記ＨＴＴＰリクエストを前記ＨＴＴＰトンネリングサーバに送信し、
前記ＨＴＴＰトンネリングサーバからＨＴＴＰ応答と接続ＩＤとが送信されると、前記最大コンテンツ長から前記ＨＴＴＰリクエストの前記ＨＴＴＰリクエスト本体フィールドのデータ長を減算して送信可能コンテンツ長を算出し、
読み出し可能な記憶装置のクライアント側設定データ記憶部に前記送信可能コンテンツ長と前記接続情報とを関連づけて記憶するクライアント装置と、
前記クライアント装置から前記ＨＴＴＰリクエストを受信すると、前記ＨＴＴＰリクエストの前記リクエスト本体フィールドを読み出し、前記接続情報に含まれた前記サーバ装置に通信コネクションを確立し、
接続された前記通信を識別する接続ＩＤを採番するとともに、読み出し可能な記憶装置のサーバ側設定データ記憶部に前記接続ＩＤと前記接続情報とを関連づけて記憶し、
前記サーバ装置からＨＴＴＰ応答が受信されると、前記ＨＴＴＰ応答と前記接続ＩＤとを前記クライアント装置に送信するＨＴＴＰトンネリングサーバ
とを備えることを特徴とする通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＨＴＴＰ（Hypertext Transfer Protocol）通信に限定されるネットワーク上のクライアントとサーバとの間でリアルタイムに通信を行う通信方法および通信システムに関する。
【背景技術】
【０００２】
近年のコンピュータネットワークの発達に伴い、コンピュータワーム、ウィルス、ハッキングなどの不正アクセスから守るセキュリティが重要視されている。このセキュリティ対策では、例えば、インターネットなどの不特定のクライアント装置が接続された通信ネットワークと、社内ＬＡＮのサーバなどの保護対象装置が接続された通信ネットワークとの境界に、ファイアウォールやプロキシサーバを設置して、特定のプロトコルのパケットのみを通過させることにより、不正アクセスから保護対象の端末を保護する。このファイアウォールやＨＴＴＰプロキシサーバは、ＨＴＴＰ通信のみを通過させ、それ以外のプロトコルのパケットを遮断する方法が採られている。このＨＴＴＰプロキシサーバやファイアウォールは、アプリケーション層のプロトコルであるＨＴＴＰを解釈しながら処理を行うゲートウェイ装置であり、ＨＴＴＰの状態を記憶装置上に保持しながら処理を行う。
【０００３】
このようなＨＴＴＰ通信のみを通過させるファイアウォールやプロキシサーバが設けられた場合、ファイアウォールやプロキシサーバと、保護対象装置との間に、ＨＴＴＰトンネリングサーバが設置され、ＨＴＴＰトンネリングサーバにより任意のパケットをＨＴＴＰでカプセル化し、ファイアウォールやプロキシサーバを介する通信を可能にしている。
【０００４】
具体的には、図１０に示すように処理される。この図１０に示した例では、ゲートウェイのサーバ側のインタフェースに、ＨＴＴＰトンネリングサーバの機能が設けられている場合について説明する。クライアントからゲートウェイに、ＨＴＴＰでカプセル化されたパケットが送信されると、ゲートウェイで受信したパケットを蓄積してカプセル化されたデータが結合されてサーバに送信される。また、サーバからゲートウェイにＨＴＴＰでカプセル化されたパケットが送信されると、ゲートウェイで受信したパケットを蓄積してカプセル化されたデータが結合されてクライアント装置に送信される。このように、従来の方法においては、ＨＴＴＰトンネリングサーバの機能によって、分割して送信されたデータを結合する処理が行われるので、リアルタイム通信が実現されることがなかった。
【０００５】
このようなＨＴＴＰトンネリングサーバにおいて分割して送信されたデータを結合する処理を介するため、リモートＧＵＩなどのリアルタイム通信には不適切である。このような状況をふまえ、プロキシが存在する通信経路を介した通信網を利用した双方向通信システムがある（例えば、特許文献１）。この特許文献１に記載の通信システムにおいては、サーバ装置と各クライアント装置間で、データの送受信が行われる以前に、クライアント装置からサーバ装置に対するデータ送信をリアルタイムに行うことを可能にするための、ＨＴＴＰのＰＯＳＴメソッドを用いた上り回線と、サーバ装置からクライアント装置に対するデータ送信をリアルタイムに行うことを可能にするための、ＨＴＴＰのＧＥＴ メソッドを用いた下り回線との計２回線をあらかじめ作成するようにしたことを特徴とする、サーバおよび複数のクライアント間の双方向通信システムがある。
【０００６】
この特許文献１に記載のシステムにおいては、図１１に示すように、まずクライアント装置からサーバ装置にＰＯＳＴメソッドを送信して、ＰＯＳＴリクエストを終了させることなくクライアント装置からＰＯＳＴのデータを送り続ける上り回線を開設する。一方、クライアント装置からサーバ装置にＧＥＴメソッドを送信して、ＧＥＴリクエストを終了させることなくサーバ装置からＧＥＴデータを送り続ける下り回線を開設する。このように、上りと下りでそれぞれの回線を設けることにより、アプリケーションがデータ送信を要求するタイミングでデータセルを送信してリアルタイム通信を実現している。
【特許文献１】特許第３４７８２００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、上述した特許文献１に記載の通信システムは、上り回線と下り回線の双方向の通信を維持しなければならず、一つの双方向通信で２回線分の処理リソースが必要となるため、ゲートウェイ装置の負荷が増大してしまう問題がある。また、保護対象装置へのアクセスが集中するゲートウェイ装置が過負荷状態に陥らないように、ゲートウェイ装置によって処理する回線数が制限されている場合もあり、ＨＴＴＰトンネリングサーバにおける低負荷でリアルタイム通信を実現する通信方法および通信システムの提供が期待されている。
【０００８】
従って本発明の目的は、ＨＴＴＰトンネリングサーバにおける低負荷でリアルタイム通信を実現する通信方法および通信システムを提供することである。
【課題を解決するための手段】
【０００９】
本発明の第１の特徴は、サーバ装置と、サーバ装置に処理を依頼しＨＴＴＰで通信するクライアント装置と、クライアント装置に接続されＨＴＴＰ通信のみを通過させるゲートウェイと、ゲートウェイとサーバ装置との間に接続されＨＴＴＰ通信を実現するＨＴＴＰトンネリングサーバを備える通信システムに用いられる通信方法に関する。即ち、本発明の第１の特徴に係る通信方法は、クライアント装置によって、通信コネクションの接続先であるサーバ装置のホスト識別子とポート番号を含むサーバ接続情報が生成されるステップと、クライアント装置によって、ＨＴＴＰメソッドフィールドにＰＯＳＴが指定され、コンテンツ長フィールドにゲートウェイが通信可能な最大コンテンツ長が指定され、リクエスト本体フィールドにサーバ接続情報が指定されたＨＴＴＰリクエストが生成され、ＨＴＴＰリクエストがＨＴＴＰトンネリングサーバに送信されるステップと、ＨＴＴＰトンネリングサーバによって、ＨＴＴＰリクエストのリクエスト本体フィールドが読み出され、接続情報に含まれたサーバ装置に通信コネクションが確立されるステップと、ＨＴＴＰトンネリングサーバによって、接続された通信を識別する接続ＩＤが採番されるとともに、ＨＴＴＰトンネリングサーバによって読み出し可能な記憶装置のサーバ側設定データ記憶部に接続ＩＤと接続情報とが関連づけられて記憶されるステップと、ＨＴＴＰトンネリングサーバによって、サーバ装置からＨＴＴＰ応答が受信されると、ＨＴＴＰ応答と接続ＩＤとがクライアント装置に送信されるステップと、クライアント装置によって、最大コンテンツ長からＨＴＴＰリクエストのＨＴＴＰリクエスト本体フィールドのデータ長が減算された送信可能コンテンツ長が算出されるステップと、クライアント装置によって、クライアント装置によって読み出し可能な記憶装置のクライアント側設定データ記憶部に送信可能コンテンツ長と接続情報とが関連づけられて記憶されるステップとを備える。
【００１０】
このような本発明によれば、ＨＴＴＰのＰＯＳＴメソッドを用いた回線を作成することにより、クライアントとサーバ間のリアルタイム双方向通信を行うことができる。このとき、ＨＴＴＰリクエストにおいて、コンテンツ長フィールドに、この通信システムで許可される最大コンテンツ長を指定し、送信するべきデータを、この最大コンテンツ長を越えないパケットに分割することにより、リアルタイムに通信することができる。このとき、最大コンテンツ長を越えない限り、一つのＨＴＴＰリクエストによって通信することができる。
【００１１】
本発明の第２の特徴は、サーバ装置と、サーバ装置に処理を依頼しＨＴＴＰで通信するクライアント装置と、クライアント装置に接続されＨＴＴＰ通信のみを通過させるゲートウェイと、ゲートウェイとサーバ装置との間に接続されＨＴＴＰ通信を実現するＨＴＴＰトンネリングサーバを備える通信システムに関する。即ち本発明の第２の特徴に係る通信システムは、通信コネクションの接続先であるサーバ装置のホスト識別子とポート番号を含むサーバ接続情報を生成し、ＨＴＴＰメソッドフィールドにＰＯＳＴを指定し、コンテンツ長フィールドにゲートウェイが通信可能な最大コンテンツ長を指定し、リクエスト本体フィールドにサーバ接続情報を指定したＨＴＴＰリクエストを生成し、ＨＴＴＰリクエストをＨＴＴＰトンネリングサーバに送信し、ＨＴＴＰトンネリングサーバからＨＴＴＰ応答と接続ＩＤとが送信されると、最大コンテンツ長からＨＴＴＰリクエストのＨＴＴＰリクエスト本体フィールドのデータ長を減算して送信可能コンテンツ長を算出し、読み出し可能な記憶装置のクライアント側設定データ記憶部に送信可能コンテンツ長と接続情報とを関連づけて記憶するクライアント装置と、クライアント装置からＨＴＴＰリクエストを受信すると、ＨＴＴＰリクエストのリクエスト本体フィールドを読み出し、接続情報に含まれたサーバ装置に通信コネクションを確立し、接続された通信を識別する接続ＩＤを採番するとともに、読み出し可能な記憶装置のサーバ側設定データ記憶部に接続ＩＤと接続情報とを関連づけて記憶し、サーバ装置からＨＴＴＰ応答が受信されると、ＨＴＴＰ応答と接続ＩＤとをクライアント装置に送信するＨＴＴＰトンネリングサーバとを備える
【発明の効果】
【００１２】
本発明によれば、ＨＴＴＰトンネリングサーバにおける低負荷でリアルタイム通信を実現する通信方法および通信システムを提供することができる。
【発明を実施するための最良の形態】
【００１３】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一または類似の部分には同一または類似の符号を付している。
【００１４】
（最良の実施の形態）
（通信システム）
図１に示すように、本発明の最良の実施の形態に係る通信システムは、サーバ装置２と、サーバ装置２に処理を依頼しＨＴＴＰで通信するクライアント装置７と、クライアント装置７に接続されＨＴＴＰ通信のみを通過させるプロキシサーバ４およびファイアウォール３などのゲートウェイと、ゲートウェイとサーバ装置２との間に接続されＨＴＴＰ通信を実現するＨＴＴＰトンネリングサーバ１を備える。サーバ装置２とＨＴＴＰトンネリングサーバ１、ＨＴＴＰトンネリングサーバ１とファイアウォール３、ファイアウォール３とプロキシサーバ４、プロキシサーバ４とクライアント装置７は、通信ネットワークによって接続されており、相互に通信可能である。
【００１５】
サーバ装置２は、クライアント装置７にコンテンツなどのサービスを提供する装置である。
【００１６】
ＨＴＴＰトンネリングサーバ１は、プロキシサーバ４およびファイアウォール３と、サーバ装置２との間に設置され、クライアント装置７からカプセル化されたＨＴＴＰパケットを受信してＨＴＴＰパケットからデータを取り出してサーバ装置２に送信し、サーバ装置２から受信したデータをカプセル化してクライアント装置７に送信する。
【００１７】
クライアント装置７はサーバ装置２から提供されたサービスを受ける装置である。クライアント装置７は、ブラウザなどのクライアントアプリケーション６と、ＨＴＴＰトンネリング処理を行うＨＴＴＰトンネルクライアント５を備えている。
【００１８】
ＨＴＴＰトンネルクライアント５は、ＨＴＴＰトンネリングサーバ１からカプセル化されたＨＴＴＰパケットを受信してＨＴＴＰパケットからからデータを取り出してクライアントアプリケーション６に送信し、クライアントアプリケーション６から受信したデータをカプセル化してＨＴＴＰトンネリングサーバ１に送信する。
【００１９】
図１に示した例においては、サーバ装置２とＨＴＴＰトンネリングサーバ１とプロキシサーバ４、ファイアウォール３は、それぞれ異なるハードウェア上に構成されているが、ＨＴＴＰトンネリングサーバ１の機能が、サーバ装置２、プロキシサーバ４、ファイアウォール３のいずれか一つ以上のハードウェア上に実装されても良い。また、図１に示した例においては、クライアント装置７が、クライアントアプリケーション６とＨＴＴＰトンネルクライアント５を備えているが、ＨＴＴＰトンネルクライアント５は、クライアント装置７とは異なるハードウェア上に構成されても良い。
【００２０】
本発明の最良の実施の形態に係る通信システムは、図２に示すように、クライアント装置７から送信されたＰＯＳＴリクエストの完了を待たずに、ＰＯＳＴのリプライを返信することにより、１回線で双方向の通信を実現する。このため、クライアント装置７から送信されるＰＯＳＴリクエストの送信バイト数のヘッダに、十分に大きい値を指定する。ここで指定されたバイト数のデータが送信されない限り、ＨＴＴＰトンネリングサーバ１はＰＯＳＴリクエストが継続されていると認識する。またクライアント装置７は、指定された送信バイト数を越えるデータを送信しないように、送信するべきデータをパケットに分割して送信する。
【００２１】
図２においては、クライアント装置からリクエストヘッダが送信されたことに対応して、ＨＴＴＰトンネリングサーバ１からレスポンスヘッダが送信されると、リクエストボディ１、リクエストボディ２・・・・と、ＰＯＳＴリクエストのデータとして、ＨＴＴＰパケットを送信する。
【００２２】
具体的にはクライアント装置７はＨＴＴＰトンネリングサーバ１にリクエストボディ１としてＨＴＴＰリクエストを送信する。次に、ＨＴＴＰトンネリングサーバ１は、レスポンスボディ１として、ＨＴＴＰ応答と、このコネクションを識別する接続ＩＤをクライアント装置７に送信する。このとき、ＨＴＴＰトンネリングサーバ１は、サーバ装置２からクライアント装置７に送信するべきデータを、レスポンスボディ２としてＨＴＴＰカプセル化して送信する。一方、クライアント装置７は、サーバ装置２に送信するべきデータを、リクエストボディ２としてＨＴＴＰカプセル化して送信する。
【００２３】
（ＨＴＴＰトンネリングサーバ）
図３に示すように、本発明の最良の実施の形態に係るＨＴＴＰトンネリングサーバ１は、中央処理制御装置１０１、ＲＯＭ（Read Only Memory）１０２、ＲＡＭ（Random Access Memory）１０３および入出力インタフェース１０９が、バス１１０を介して接続されている。入出力インタフェース１０９には、入力装置１０４、表示装置１０５、通信制御装置１０６、記憶装置１０７およびリムーバブルディスク１０８が接続されている。
【００２４】
中央処理制御装置１０１は、入力装置１０４からの入力信号に基づいてＲＯＭ１０２からＨＴＴＰトンネリングサーバ１を起動するためのブートプログラムを読み出して実行し、更に記憶装置１０７に記憶されたオペレーティングシステムを読み出す。更に中央処理制御装置１０１は、入力装置１０４や通信制御装置１０６などの入力信号に基づいて、各種装置の制御を行ったり、ＲＡＭ１０３や記憶装置１０７などに記憶されたプログラムおよびデータを読み出してＲＡＭ１０３にロードするとともに、ＲＡＭ１０３から読み出されたプログラムのコマンドに基づいて、データの計算または加工など、後述する一連の処理を実現する処理装置である。
【００２５】
入力装置１０４は、操作者が各種の操作を入力するキーボード、マウスなどの入力デバイスにより構成されており、操作者の操作に基づいて入力信号を作成し、入出力インタフェース１０９およびバス１１０を介して中央処理制御装置１０１に送信される。表示装置１０５は、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどであり、中央処理制御装置１０１からバス１１０および入出力インタフェース１０９を介して表示装置１０５において表示させる出力信号を受信し、例えば中央処理制御装置１０１の処理結果などを表示する装置である。通信制御装置１０６は、ＬＡＮカードやモデムなどの装置であり、ＨＴＴＰトンネリングサーバ１をインターネットやＬＡＮなどの通信ネットワークに接続する装置である。通信制御装置１０６を介して通信ネットワークと送受信したデータは入力信号または出力信号として、入出力インタフェースおよびバス１１０を介して中央処理制御装置１０１に送受信される。
【００２６】
記憶装置１０７は半導体ディスク装置や磁気ディスク装置などであって、中央処理制御装置１０１で実行されるプログラムやデータが記憶されている。リムーバブルディスク１０８は、光ディスクやフレキシブルディスクのことであり、ディスクドライブによって読み書きされた信号は、入出力インタフェース１０９およびバス１１０を介して中央処理制御装置１０１に送受信される。
【００２７】
本発明の第１の実施の形態に係るＨＴＴＰトンネリングサーバ１の記憶装置１０７には、ＨＴＴＰトンネリングプログラムが記憶されるとともに、サーバ側設定データ記憶部２１０およびサーバ側パケット記憶部２１１を備える。また、ＨＴＴＰトンネリングプログラムがＨＴＴＰトンネリングサーバ１の中央処理制御装置１０１に読み込まれ実行されることによって、サーバ側データ送信手段２０１、サーバ側再送管理手段２０２、サーバ側データ受信手段２０３、サーバ側パケット受信手段２０４、サーバ側パケット送信手段２０５、サーバ側通信路管理手段２０６およびサーバ側接続開始手段２０７がＨＴＴＰトンネリングサーバ１に実装される。
【００２８】
ここで、本発明の最良の実施の形態に係る通信システムにおいて、データは、サーバ装置２またはクライアントアプリケーション６の間を送受信される情報である。また、パケットは、クライアント装置７のＨＴＴＰトンネルクライアント５およびＨＴＴＰトンネリングサーバ１との間を送受信される情報である。このように、ＨＴＴＰトンネルクライアント５は、クライアントアプリケーション６からデータを受信すると、それをＨＴＴＰパケットに分割し、プロキシサーバ４、ファイアウォール３を介してＨＴＴＰトンネリングサーバ１に送信する。これに伴い、ＨＴＴＰトンネリングサーバ１は、ＨＴＴＰトンネルクライアント５からＨＴＴＰパケットを受信すると、ＨＴＴＰパケットからデータを取り出し、サーバ装置２に送信する。一方、ＨＴＴＰトンネリングサーバ１は、サーバ装置２からデータを受信すると、それをＨＴＴＰパケットに分割し、ファイアウォール３、プロキシサーバ４を介してＨＴＴＰトンネルクライアント５に送信する。これに伴い、ＨＴＴＰトンネルクライアント５は、ＨＴＴＰトンネリングサーバ１からＨＴＴＰパケットを受信すると、ＨＴＴＰパケットからデータを取り出し、クライアントアプリケーション６に送信する。
【００２９】
ＨＴＴＰトンネリングサーバ１は、クライアント装置７からＨＴＴＰリクエストが受信されると、ＨＴＴＰリクエストのリクエスト本体フィールドを読み出し、接続情報に含まれたサーバ装置に通信コネクションを確立し、接続された通信を識別する接続ＩＤが採番されるとともに、読み出し可能な記憶装置のサーバ側設定データ記憶部２１０に接続ＩＤと接続情報とを関連づけて記憶し、サーバ装置２からＨＴＴＰ応答が受信されると、ＨＴＴＰ応答と接続ＩＤとをクライアント装置７に送信する。
【００３０】
サーバ側設定データ記憶部２１０には、クライアント装置７との接続コネクションを識別する接続ＩＤをキーとして、接続先のサーバ装置２の識別子であるホスト識別子とポート番号の組合せであるサーバ接続情報と、この通信路で送信可能なデータの長さを示す変数であるＳＥＮＤＡＢＬＥ＿ＬＥＮ（送信可能コンテンツ長）と、クライアント装置７に次に送信するべきパケットのシーケンス番号である第２のシーケンス番号と、クライアント装置７から受信したパケットのシーケンス番号である第２の確認応答番号とが記憶されている。更に、１パケットにカプセル化できるデータの長さの最大値である最大パケット長（ＭＡＸ＿ＰＡＣＫＥＴ＿ＬＥＮ）も、サーバ側設定データ記憶部２１０に記憶されても良い。
【００３１】
サーバ側パケット記憶部２１１には、ＨＴＴＰトンネリングサーバ１によって送信されたパケットであって、クライアント装置７によって受信確認されていないパケットと、ＨＴＴＰトンネルクライアント５から受信したパケットが記憶されている。
【００３２】
サーバ側接続開始手段２０７は、クライアント装置７からＨＴＴＰリクエストを受信すると、ＨＴＴＰリクエストに含まれた接続情報に基づいてサーバ装置２と通信コネクションを確立する。更にサーバ側接続開始手段２０７は、サーバ側通信路管理手段２０６に接続ＩＤを採番させ、接続ＩＤをクライアント側接続開始手段５０３に送信する。
【００３３】
サーバ側通信路管理手段２０６は、この通信コネクションを識別する接続ＩＤを採番して、サーバ側設定データ記憶部２１０に記憶する。更にサーバ側通信路管理手段２０６は、ＨＴＴＰトンネルクライアントから通信コネクション再接続をリクエストするＨＴＴＰリクエストを受信し、ＨＴＴＰリクエストに含まれる接続ＩＤを検索して、クライアント側通信路管理手段５０２およびサーバ側再送管理手段２０２に通知する。
【００３４】
サーバ側データ受信手段２０３は、サーバ装置２からクライアント装置７に送信するべきデータを受信して所定の大きさのパケットに分割し、サーバ側パケット送信手段２０５に入力する手段である。
【００３５】
サーバ側パケット送信手段２０５は、送信するべきパケットが生成されるとそのパケットをクライアント装置７に送信するとともに、サーバ側再送管理手段２０２にパケットの識別子を入力する。
【００３６】
サーバ側パケット受信手段２０４は、クライアント側パケット送信手段５０１からパケットが入力されると、そのパケットをサーバ側パケット記憶部２１１に記憶するとともに、サーバ側再送管理手段２０２にこのパケットの識別子を入力する。
【００３７】
サーバ側データ送信手段２０１は、サーバ側パケット受信手段２０４からパケット内データが入力されると、そのデータをサーバ装置２に送信する。
【００３８】
サーバ側再送管理手段２０２は、クライアント装置７から受信したパケットの識別子が入力されると、このパケットの第１のシーケンス番号を読みとり、第１のシーケンス番号を第２の確認応答番号に設定してサーバ側設定データ記憶部２１０に記憶するとともに、サーバ側パケット記憶部２１１からパケットの第１の確認応答番号より若い番号に関連づけられたパケットを削除する。また、サーバ側再送管理手段２０２は、サーバ側パケット送信手段２０５から送信するべきパケットの識別子が入力されると、サーバ側設定データ記憶部２１０を読み出して、このパケットに第２のシーケンス番号と第２の確認応答番号とを書き込むとともに、第２のシーケンス番号をインクリメントしてサーバ側設定データ記憶部２１０に記憶する。
【００３９】
（クライアント装置）
クライアント装置７は、図３に示したＨＴＴＰトンネリングサーバ１と同様のハードウェア構成図を備える。クライアント装置７の記憶装置には、クライアントアプリケーションプログラム、ＨＴＴＰトンネルクライアントプログラムが記憶されるとともに、クライアント側設定データ記憶部５１０およびクライアント側パケット記憶部５１１を備える。また、ＨＴＴＰトンネルクライアントプログラムがクライアント装置７の中央処理制御装置に読み込まれ実行されることによって、クライアント側パケット送信手段５０１、クライアント側通信路管理手段５０２、クライアント側接続開始手段５０３、クライアント側パケット受信手段５０４、クライアント側データ送信手段５０５、クライアント側再送管理手段５０６およびクライアント側データ受信手段５０７が、クライアント装置７に実装される。
【００４０】
クライアント装置７は、通信コネクションの接続先であるサーバ装置２のホスト識別子とポート番号を含むサーバ接続情報を生成し、ＨＴＴＰメソッドフィールドにＰＯＳＴを指定し、コンテンツ長フィールドにゲートウェイが通信可能な最大コンテンツ長を指定し、リクエスト本体フィールドにサーバ接続情報が指定されたＨＴＴＰリクエストを生成し、ＨＴＴＰリクエストをＨＴＴＰトンネリングサーバ１に送信し、ＨＴＴＰトンネリングサーバ１からＨＴＴＰ応答と接続ＩＤとが送信されると、最大コンテンツ長からＨＴＴＰリクエストのＨＴＴＰリクエスト本体フィールドのデータ長を減算して送信可能コンテンツ長を算出し、読み出し可能な記憶装置のクライアント側設定データ記憶部５１０に送信可能コンテンツ長と接続情報とを関連づけて記憶する。
【００４１】
クライアント側設定データ記憶部５１０には、サーバ装置２との接続コネクションを識別する接続ＩＤをキーとして、接続先のサーバ装置２の識別子であるホスト識別子とポート番号の組合せであるサーバ接続情報と、この通信路で送信可能なデータの長さを示す変数であるＳＥＮＤＡＢＬＥ＿ＬＥＮ（送信可能コンテンツ長）と、ＨＴＴＰトンネリングサーバ１に次に送信するべきパケットのシーケンス番号である第１のシーケンス番号と、ＨＴＴＰトンネリングサーバ１から受信したパケットのシーケンス番号である第１の確認応答番号とが記憶されている。更に、１パケットにカプセル化できるデータの長さの最大値である最大パケット長（ＭＡＸ＿ＰＡＣＫＥＴ＿ＬＥＮ）も、クライアント側設定データ記憶部５１０に記憶されても良い。
【００４２】
クライアント側パケット記憶部５１１には、クライアント装置７によって送信されたパケットであって、ＨＴＴＰトンネリングサーバ１によって受信確認されていないパケットと、ＨＴＴＰトンネリングサーバ１から受信したパケットが記憶されている。
【００４３】
クライアント側接続開始手段５０３は、サーバ接続情報が入力されると、ＨＴＴＰメソッドフィールドにＰＯＳＴを指定し、コンテンツ長（ＣＯＮＴＥＮＴ−ＬＥＮＧＴＨ）フィールドにゲートウェイが通信可能な最大コンテンツ長を指定し、リクエスト本体フィールドにサーバ接続情報を指定したＨＴＴＰリクエストを生成し、ＨＴＴＰリクエストをＨＴＴＰトンネリングサーバ１のサーバ側接続開始手段２０７に送信する。更にクライアント側接続開始手段５０３は、ＨＴＴＰ応答と接続ＩＤを受信すると、最大コンテンツ長からＨＴＴＰリクエストのＨＴＴＰリクエスト本体フィールドのデータ長を減算した送信可能コンテンツ長を算出し、送信可能コンテンツ長と接続ＩＤをクライアント側通信路管理手段５０２に入力する。
【００４４】
クライアント側通信路管理手段５０２は、クライアント側通信路管理手段５０２は、送信可能コンテンツ長と接続ＩＤが入力されると、クライアント側設定データ記憶部５１０に送信可能コンテンツ長と接続情報とを関連づけて記憶する。更にクライアント側通信路管理手段５０２は、クライアント側接続開始手段５０３に登録が完了した応答を入力する。クライアント側通信路管理手段５０２は、サーバ装置２との接続を再確立する場合、ＨＴＴＰメソッドフィールドにＰＯＳＴを指定し、コンテンツ長フィールドにゲートウェイが通信可能な最大コンテンツ長を指定し、リクエスト本体フィールドに接続ＩＤを指定したＨＴＴＰリクエストを生成し、このＨＴＴＰリクエストをＨＴＴＰトンネリングサーバ１のサーバ側通信路管理手段２０６に入力する。
【００４５】
クライアント側パケット受信手段５０４は、ＨＴＴＰトンネリングサーバ１からパケットを受信すると、そのパケットの識別子をクライアント側再送管理手段５０６に入力するとともに、クライアント側データ受信手段５０７にパケット内データを入力する。
【００４６】
クライアント側データ受信手段５０７は、クライアント側パケット受信手段５０４からパケット内データが入力されると、それを保存し、クライアントアプリケーション６からの要請に基づいてデータをクライアントアプリケーションに入力する。
【００４７】
クライアント側データ送信手段５０５は、クライアントアプリケーション６からサーバ装置２に送るべきデータを受信すると、クライアント側通信路管理手段５０２に送信可能コンテンツ長および最大コンテンツ長を読み出させ、送信可能コンテンツ長および最大コンテンツ長に基づいてデータをパケットに分割し、クライアント側パケット送信手段５０１に入力する。
【００４８】
クライアント側パケット送信手段５０１は、クライアント側再送管理手段５０６にパケットの識別子を入力するとともに、パケットをサーバ側パケット受信手段２０４に入力する。
【００４９】
クライアント側再送管理手段５０６は、ＨＴＴＰトンネリングサーバ１から受信したパケットの識別子が入力されると、パケットの第２のシーケンス番号を読みとり、第２のシーケンス番号を第１の確認応答番号に設定してクライアント側設定データ記憶部５１０に記憶するとともに、クライアント側パケット記憶部５１１からパケットの第２の確認応答番号より若い番号に関連づけられたパケットを削除する。またクライアント側再送管理手段５０６は、ＨＴＴＰトンネリングサーバ１に送信するパケットの識別子が入力されると、クライアント側設定データ記憶部５１０からの第１のシーケンス番号と、サーバ装置２から送信されたパケットのシーケンス番号である第１の確認応答番号とを読み出し、第１のシーケンス番号と第１の確認応答番号とをパケットに書き込んでクライアント側パケット記憶部５１１に記憶する。このとき、クライアント側再送管理手段５０６は、クライアント側設定データ記憶部５１０に記憶された第１のシーケンス番号をインクリメントする。
【００５０】
（接続開始処理）
次に、図４を参照して本発明の最良の実施の形態に係る通信システムにおける接続開始処理を説明する。
【００５１】
まず、クライアントアプリケーション６は、ステップＳ１０１において、接続先のサーバ装置２のホスト識別子とポート番号を含むサーバ接続情報を生成し、クライアント側接続開始手段５０３に入力する。クライアント側接続開始手段５０３は、サーバ接続情報が入力されると、ＨＴＴＰメソッドフィールドにＰＯＳＴを指定し、コンテンツ長（ＣＯＮＴＥＮＴ−ＬＥＮＧＴＨ）フィールドにゲートウェイが通信可能な最大コンテンツ長を指定し、リクエスト本体フィールドにサーバ接続情報を指定したＨＴＴＰリクエストを生成し、ＨＴＴＰリクエストをＨＴＴＰトンネリングサーバ１のサーバ側接続開始手段２０７に送信する。ここで、最大コンテンツ長は、プロキシサーバ４またはファイアウォール３などのゲートウェイや、クライアント装置７とサーバ装置２との間の通信ネットワークに備えられた通信機器によって決定される。
【００５２】
サーバ側接続開始手段２０７はＨＴＴＰリクエストを受信すると、ステップＳ１０３において、ＨＴＴＰリクエストのリクエスト本体フィールドが読み出され、接続情報に含まれたサーバ装置２に接続依頼を送信し、通信コネクションを確立する。サーバ装置２は、ステップＳ１０４において、接続依頼を受信するとそれに対応した応答をサーバ側接続開始手段２０７に送信する。サーバ側接続開始手段２０７はサーバ装置２から応答を受信すると、ステップＳ１０５において、サーバ側通信路管理手段２０６にこの通信コネクションを識別する接続ＩＤを採番させるリクエストを送信し、ステップＳ１０６において、サーバ側通信路管理手段２０６から接続ＩＤを受信すると、サーバ側設定データ記憶部２１０に、接続ＩＤと接続情報とを関連づけて記憶する。
【００５３】
サーバ側接続開始手段２０７は接続ＩＤを受信すると、ステップＳ１０７において、ステップＳ１０２で送信されたＨＴＴＰリクエストに対応するＨＴＴＰ応答と、接続ＩＤをクライアント側接続開始手段５０３に送信する。
【００５４】
クライアント側接続開始手段５０３がＨＴＴＰ応答と接続ＩＤを受信すると、最大コンテンツ長からＨＴＴＰリクエストのＨＴＴＰリクエスト本体フィールドのデータ長を減算した送信可能コンテンツ長を算出し、送信可能コンテンツ長と接続ＩＤをクライアント側通信路管理手段５０２に入力する。
【００５５】
クライアント側通信路管理手段５０２は、送信可能コンテンツ長と接続ＩＤが入力されると、クライアント側設定データ記憶部５１０に送信可能コンテンツ長と接続情報とを関連づけられて記憶する。更にクライアント側通信路管理手段５０２は、クライアント側接続開始手段５０３に登録が完了した応答を入力する。
【００５６】
クライアント側接続開始手段５０３は、応答が入力されると、ステップＳ１１０において、ステップＳ１０７で受信したＨＴＴＰ応答をクライアントアプリケーション６に入力する。
【００５７】
（クライアントアプリケーションからサーバ装置へのデータ送信）
クライアントアプリケーションからサーバ装置へデータを送信する場合、クライアントアプリケーション６は、サーバ装置２へ送信したデータをクライアント側データ送信手段５０５に入力する。クライアント側データ送信手段５０５は、図５に示すようなフローチャートに従って、クライアント側パケット送信手段５０１にパケットを入力する。ここで、パケットのヘッダ長（ＨＥＡＤＥＲ＿ＬＥＮ）とは、ＨＴＴＰトンネルクライアント５からＨＴＴＰトンネリングサーバ１に送信するパケットのヘッダ長のことである。またパケットのデータ長（ＤＡＴＡ＿ＬＥＮ）は、クライアントアプリケーション６が送信するデータの長さを表す変数である。
【００５８】
クライアント側パケット送信手段５０１はまず、ステップＳ１において、サーバ装置２との通信コネクションが確立されているか確認し、接続されていない場合、ステップＳ２において通信コネクションを再確立する。この通信コネクションの再確立は後に詳述される。
【００５９】
通信コネクションが確立されていることが確認されると、クライアント側パケット送信手段５０１は、ステップＳ３においてパケットのヘッダ長と送信可能コンテンツ長とを比較する。パケットのヘッダ長が送信可能コンテンツ長より大きい場合、ステップＳ４において通信コネクションが切断され、ステップＳ２において通信コネクションが再確立される。一方、ステップＳ３においてパケットのヘッダの長さが送信可能コンテンツ長より小さいと判定されると、ステップＳ５に進む。
【００６０】
ステップＳ５において１パケットにカプセル化できる最大データ長である最大パケット長がパケットのデータ長より大きいと判断され、かつ、ステップＳ６において送信可能コンテンツ長がパケットのヘッダ長とデータ長との和よりも大きいと判断された場合、クライアント側パケット送信手段５０１は、ステップＳ７において、パケットのデータ長のデータのパケットをＨＴＴＰトンネリングサーバに送信する。更にステップＳ８においてクライアント側パケット送信手段５０１は、送信可能コンテンツ長からパケットのヘッダ長とデータ長を減算した送信可能コンテンツ長を、クライアント側設定データ記憶部５１０に記憶する。
【００６１】
一方ステップＳ５において最大パケット長がパケットのデータ長より小さいと判断され、かつステップＳ１１において送信可能コンテンツ長がパケットのヘッダ長とデータ長との和よりも小さいと判断された場合、ステップＳ１２においてクライアント側パケット送信手段５０１は、最大パケット長のデータのパケットをＨＴＴＰトンネリングサーバに送信する。更にステップＳ１３においてクライアント側パケット送信手段５０１は、送信可能コンテンツ長からパケットのヘッダ長と最大パケット長を減算した送信可能コンテンツ長と、パケットのデータ長から最大パケット長を減算したデータ長とを、クライアント側設定データ記憶部５１０に記憶する。次にクライアント側パケット送信手段５０１は、ステップＳ１に進み、通信路が確立されているかを確認し、次のデータを送信する。
【００６２】
ステップＳ５において最大パケット長がパケットのデータ長よりも大きいと判断されステップＳ６において送信可能コンテンツ長がパケットのヘッダ長とデータ長との和よりも小さいと判断された場合、またはステップＳ５において最大パケット長がパケットのデータ長が小さいと判断されステップＳ１１において送信可能コンテンツ長がパケットのヘッダ長とデータ長との和よりも大きいと判断された場合、ステップＳ９においてクライアント側パケット送信手段５０１は、送信可能コンテンツ長からパケットのヘッダ長を減算した大きさのデータのパケットをＨＴＴＰトンネリングサーバに送信する。更にステップＳ１０においてクライアント側パケット送信手段５０１は、データ長から送信可能コンテンツ長を減算してヘッダ長を加算したデータ長が、クライアント側設定データ記憶部５１０に記憶する。その後、ステップＳ４に進み、クライアント側パケット送信手段５０１は、通信路を切断し、通信路を再確立する。
【００６３】
図５のステップＳ７、Ｓ９およびＳ１２において送信されるパケットは、図９に示すようなフィールドを備える。具体的には、このパケットは、ＨＴＴＰトンネルクライアントから送信されるパケットのシーケンス番号、ＨＴＴＰトンネルクライアントから送信されたパケットのシーケンス番号である確認応答番号、このパケットのデータ長、データを備えている。
【００６４】
（ＨＴＴＰトンネルクライアントからＨＴＴＰトンネリングサーバへのパケット送信）
次に図７を参照して、図５のステップＳ７、Ｓ９およびＳ１２におけるパケットの送信処理について詳述する。具体的には、クライアントアプリケーション６からパケットのデータ長のデータのパケット、最大パケット長のデータのパケットおよび送信可能コンテンツ長からパケットのヘッダ長を減算した大きさのデータのパケットのいずれかのパケットが、ＨＴＴＰトンネリングサーバ１に送信される場合について説明する。
【００６５】
まず、ステップＳ２０１において、クライアント側データ送信手段５０５は、パケットを作成してクライアント側パケット送信手段５０１に入力する。クライアント側パケット送信手段５０１は、パケットをクライアント装置７によって読み出し可能な記憶装置のクライアント側パケット記憶部５１１に第１のシーケンス番号に関連づけて記憶する。この第１のシーケンス番号は、ＨＴＴＰトンネルクライアント５から送信するパケットのシーケンス番号である。
【００６６】
次に、ステップＳ２０２において、パケットの識別子（クライアント側パケット記憶部５１１に記憶されたパケットの記憶位置の識別子、パケットのポインタ、パケット名などのパケットの識別子）をクライアント側再送管理手段５０６に入力し、応答を待機する。
【００６７】
パケットの識別子が入力されると、クライアント側再送管理手段５０６は、クライアント側設定データ記憶部５１０から、第１のシーケンス番号と、サーバ装置から送信されたパケットのシーケンス番号である第１の確認応答番号とを読み出し、第１のシーケンス番号と第１の確認応答番号とをパケットに書き込んでクライアント側パケット記憶部５１１に記憶する。このとき、クライアント側再送管理手段５０６は、クライアント側設定データ記憶部５１０に記憶された第１のシーケンス番号をインクリメントする。更にクライアント側通信路管理手段５０２は、ステップＳ２０３において、ステップＳ２０２に対する応答をクライアント側パケット送信手段５０１に入力する。
【００６８】
次にクライアント側パケット送信手段５０１は、ステップＳ２０４においてクライアント側パケット記憶部５１１からパケットを読み出して、このパケットをＨＴＴＰトンネリングサーバ１のサーバ側パケット受信手段２０４に送信するとともに、ステップＳ２０５において、ステップＳ２０１に対する応答をクライアント側データ送信手段５０５に入力する。
【００６９】
ステップＳ２０４においてＨＴＴＰトンネルクライアント５のクライアント側パケット送信手段５０１からパケットを受信すると、サーバ側パケット受信手段２０４は、サーバ側パケット記憶部２１１に記憶するとともに、ステップＳ２０６において、そのパケットの識別子をサーバ側再送管理手段２０２に入力する。
【００７０】
パケットの識別子が入力されるとサーバ側再送管理手段２０２は、パケットの第１のシーケンス番号を読みとり、第１のシーケンス番号を第２の確認応答番号に設定してサーバ側設定データ記憶部２１０に記憶するとともに、サーバ側パケット記憶部２１１からパケットの第１の確認応答番号より若い番号に関連づけられたパケットを削除する。更にサーバ側再送管理手段２０２は、ステップＳ２０７において、ステップＳ２０６に対する応答をサーバ側パケット受信手段２０４に入力する。
【００７１】
応答が入力されるとサーバ側パケット受信手段２０４は、パケットからデータを抽出し、ステップＳ２０８において、サーバ側データ送信手段２０１にデータを入力して応答を待機する。
【００７２】
データが入力されるとサーバ側データ送信手段２０１は、ステップＳ２０９においてこのデータをサーバ装置２に送信するとともに、ステップＳ２１０において、ステップＳ２０８に対する応答をサーバ側パケット受信手段２０４に入力する。
【００７３】
（通信コネクションの再確立処理）
次に図８を参照して、図５のステップＳ２における通信路の再確立処理について詳述する。
【００７４】
まず、クライアント側通信路管理手段５０２は、ステップＳ３０１において、ＨＴＴＰメソッドフィールドにＰＯＳＴを指定し、コンテンツ長フィールドにゲートウェイが通信可能な最大コンテンツ長を指定し、リクエスト本体フィールドに接続ＩＤを指定したＨＴＴＰリクエストを生成し、このＨＴＴＰリクエストをＨＴＴＰトンネリングサーバ１のサーバ側通信路管理手段２０６に入力する。ＨＴＴＰリクエストが入力されるとサーバ側通信路管理手段２０６は、サーバ側設定データ記憶部２１０を検索して接続ＩＤをキーに接続情報を検索し、ステップＳ３０２において、ステップＳ３０１に対するＨＴＴＰ応答をＨＴＴＰトンネルクライアント５のクライアント側通信路管理手段５０２に入力する。
【００７５】
ＨＴＴＰ応答が入力されると、クライアント側通信路管理手段５０２は、ステップＳ３０３において、クライアント側再送管理手段５０６に再接続されたことを通知し、ステップＳ３０４においてクライアント側再送管理手段５０６は、再送のためにクライアント側パケット記憶部５１１に記憶されている全てのパケットをクライアント側パケット送信手段５０１に入力する。クライアント側パケット送信手段５０１は、入力されたパケットをＨＴＴＰトンネリングサーバ１のサーバ側パケット受信手段２０４に送信する。
【００７６】
一方、接続情報が検索されると、サーバ側通信路管理手段２０６は、ステップＳ３０５において、再接続されたことをサーバ側再送管理手段２０２に通知し、ステップＳ３０６においてサーバ側再送管理手段２０２は、再送のためにサーバ側パケット記憶部２１１に記憶されている全てのパケットをサーバ側パケット送信手段２０５に入力する。サーバ側パケット送信手段２０５は、入力されたパケットをＨＴＴＰトンネルクライアント５のクライアント側パケット受信手段５０４に送信する。
【００７７】
（サーバ装置からクライアント装置へのデータ送信）
次に図９を参照して、サーバ装置２からクライアント装置７へのデータ送信処理について説明する。
【００７８】
ステップＳ４０１において、サーバ装置２からクライアント装置７に送るべきデータがＨＴＴＰトンネリングサーバ１のサーバ側データ受信手段２０３に入力されると、ステップＳ２０３において、サーバ側データ受信手段２０３は、サーバ側設定データ記憶部２１０から最大パケット長を読み出し、データが最大パケット長より大きい場合、データから最大パケット長の大きさのデータを読み出し、パケットに書き込む。この処理は、送るべきデータが全て送られるまで繰り返され、ここで作成されたパケットはそれぞれ、以下のステップＳ４０２ないしステップＳ４０８において処理される。
【００７９】
パケットが生成されると、サーバ側データ受信手段２０３は、ステップＳ４０２においてこのパケットをサーバ側パケット送信手段２０５に入力し、サーバ側パケット送信手段２０５は、第２のシーケンス番号に関連づけてサーバ側パケット記憶部２１１に記憶する。この第２のシーケンス番号は、ＨＴＴＰトンネリングサーバ１から送信するパケットのシーケンス番号である。更にサーバ側パケット送信手段２０５は、ステップＳ４０３においてパケットの識別子をサーバ側再送管理手段２０２に入力する。
【００８０】
サーバ側再送管理手段２０２は、サーバ側設定データ記憶部２１０から、第２のシーケンス番号と、クライアント装置から送信されたパケットのシーケンス番号である第２の確認応答番号とを読み出し、第２のシーケンス番号と第２の確認応答番号とをパケットに書き込んでサーバ側パケット記憶部２１１に記憶する。更にサーバ側再送管理手段２０２は、ステップＳ４０４において、ステップＳ４０３に対する応答をサーバ側パケット送信手段２０５に入力する。このときサーバ側再送管理手段２０２は、第２のシーケンス番号をインクリメントしてサーバ側設定データ記憶部２１０に記憶する。
【００８１】
応答が入力されるとサーバ側パケット送信手段２０５は、ステップＳ４０５において、サーバ側パケット記憶部２１１を読み出してパケットをＨＴＴＰトンネルクライアント５のクライアント側パケット受信手段５０４に送信する。
【００８２】
パケットを受信すると、クライアント側パケット受信手段５０４は、受信したパケットをクライアント側パケット記憶部５１１に記憶するとともに、ステップＳ４０６においてパケットの識別子をクライアント側再送管理手段５０６に入力する。
【００８３】
パケットの識別子が入力されるとクライアント側再送管理手段５０６は、パケットの第２のシーケンス番号を読みとり、第２のシーケンス番号を第１の確認応答番号に設定してクライアント側設定データ記憶部５１０に記憶するとともに、クライアント側パケット記憶部５１１からパケットの第２の確認応答番号より若い番号に関連づけられたパケットを削除する。更にクライアント側再送管理手段５０６は、ステップＳ４０６に対する応答をクライアント側パケット受信手段５０４に入力する。
【００８４】
応答が入力されるとクライアント側パケット受信手段５０４は、パケットからデータを抽出して、ステップＳ４０８において、クライアント側データ受信手段５０７にデータを入力する。クライアント側データ受信手段５０７は、クライアントアプリケーション６がデータを受け取りに来るまで、データを保存する。
【００８５】
このように本発明の最良の実施の形態に係る通信システムによれば、ファイアウォールやＨＴＴＰプロキシサーバによってＨＴＴＰ通信のみが許可されるネットワークにおいて、ＨＴＴＰのＰＯＳＴメソッドを用いた回線を作成することにより、クライアントとサーバ間のリアルタイム双方向通信を行うことができる。このとき、ＨＴＴＰリクエストにおいて、コンテンツ長フィールドに、この通信システムで許可される最大コンテンツ長を指定し、送信するべきデータを、この最大コンテンツ長を越えないパケットに分割することにより、リアルタイムに通信することができる。このとき、最大コンテンツ長を越えない限り、一つのＨＴＴＰリクエストによって通信することができる。
【００８６】
更に本発明の最良の実施の形態に係る通信システムによれば、ＨＴＴＰのＰＯＳＴメソッドで最大コンテンツ長を越えた場合、この通信コネクションを識別する接続ＩＤを含む新たなＰＯＳＴメソッドで回線を接続することにより、通信を継続することができる。
【００８７】
（その他の実施の形態）
上記のように、本発明の最良の実施の形態によって記載したが、この開示の一部をなす論述および図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例および運用技術が明らかとなる。
【００８８】
本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。従って、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【図面の簡単な説明】
【００８９】
【図１】本発明の最良の実施の形態に係る通信システムのシステム構成図である。
【図２】本発明の最良の実施の形態に係る通信方法の概略を説明するシーケンス図である。
【図３】本発明の最良の実施の形態に係るＨＴＴＰトンネリングサーバのハードウェア構成図である。
【図４】本発明の最良の実施の形態に係る通信システムにおける接続開始処理を説明する図である。
【図５】本発明の最良の実施の形態に係る通信システムにおいて、クライアントからデータを送信する処理を説明するフローチャートである。
【図６】本発明の最良の実施の形態に係る通信システムにおいて、ＨＴＴＰトンネルクライアントとＨＴＴＰトンネリングサーバとの間で送受信されるパケットを説明する図である。
【図７】本発明の最良の実施の形態に係る通信システムにおいて、ＨＴＴＰトンネルクライアントからＨＴＴＰトンネリングサーバにパケットを送信する処理を説明するシーケンス図である。
【図８】本発明の最良の実施の形態に係る通信システムにおいて、通信コネクションを再接続する処理を説明するシーケンス図である。
【図９】本発明の最良の実施の形態に係る通信システムにおいて、ＨＴＴＰトンネリングサーバからＨＴＴＰトンネルクライアントにパケットを送信する処理を説明するシーケンス図である。
【図１０】従来の通信システムを説明するシーケンス図である。（その１）
【図１１】従来の通信システムを説明するシーケンス図である。（その２）
【符号の説明】
【００９０】
１…ＨＴＴＰトンネリングサーバ
２…サーバ装置
３…ファイアウォール
４…プロキシサーバ
５…ＨＴＴＰトンネルクライアント
６…クライアントアプリケーション
７…クライアント装置
１０１…中央処理制御装置
１０２…ＲＯＭ
１０３…ＲＡＭ
１０４…入力装置
１０５…表示装置
１０６…通信制御装置
１０７…記憶装置
１０８…リムーバブルディスク
１０９…入出力インタフェース
１１０…バス
２０１…サーバ側データ送信手段
２０２…サーバ側再送管理手段
２０３…サーバ側データ受信手段
２０４…サーバ側パケット受信手段
２０５…サーバ側パケット送信手段
２０６…サーバ側通信路管理手段
２０７…サーバ側接続開始手段
２１０…サーバ側設定データ記憶部
２１１…サーバ側パケット記憶部
５０１…クライアント側パケット送信手段
５０２…クライアント側通信路管理手段
５０３…クライアント側接続開始手段
５０４…クライアント側パケット受信手段
５０５…クライアント側データ送信手段
５０６…クライアント側再送管理手段
５０７…クライアント側データ受信手段
５１０…クライアント側設定データ記憶部
５１１…クライアント側パケット記憶部
【図１】
2006101431.tif 000003
【図２】
2006101431.tif 000004
【図３】
2006101431.tif 000005
【図４】
2006101431.tif 000006
【図５】
2006101431.tif 000007
【図６】
2006101431.tif 000008
【図７】
2006101431.tif 000009
【図８】
2006101431.tif 000010
【図９】
2006101431.tif 000011
【図１０】
2006101431.tif 000012
【図１１】
2006101431.tif 000013