(57)【要約】【課題】中継装置負荷を抑えるためにＴＣＰスプライシング方式による通信システムを利用しつつ、シーケンス異常及び相手側端末での通信異常の発生を抑制する。【解決手段】通信システムは、通信管理装置を介して端末からの通信要求および応答を行って、中継装置を介して端末間のデータ通信を行う。端末は、中継装置との間でＴＣＰコネクションを開設するＴＣＰ処理部と、ＳＳＬセッション開設のためのメッセージ交換を行うＳＳＬセッション開設処理部とを有する。中継装置は、中継のための宛先情報を取得し、データ転送時に端末との間でデータのＴＣＰ処理を行わずに、データのヘッダを書き換えて宛先端末へのデータ転送を行う中継手段（パケット受信部、パケット振分部、ＴＣＰ処理部、ＳＳＬセッション開設処理部、コネクション結合情報管理部、パケット振分情報管理部、コネクション管理テーブル、ヘッダ書換部、及びパケット送信部）を有する。【選択図】図２
2009055418.tif 000002
【特許請求の範囲】
【請求項１】
通信管理装置を介して端末からの通信要求および応答を行って、中継装置を介して端末間のデータ通信を行う通信システムであって、
前記端末は、前記中継装置との間でデータ通信のＴＣＰコネクションを開設するＴＣＰ処理部と、データ通信のＳＳＬセッション開設のためのメッセージ交換を行うＳＳＬセッション開設処理部とを有し、
前記中継装置は、前記端末間でデータを中継するための宛先情報を取得し、データ転送時に前記端末との間でデータのＴＣＰ処理を行わずに、データのヘッダを書き換えて宛先端末へのデータ転送を行う中継手段を有することを特徴とする通信システム。
【請求項２】
前記中継手段は、中継する宛先情報を取得すると、前記端末に対してデータ送信開始を促すためのメッセージを送信することを特徴とする請求項１に記載の通信システム。
【請求項３】
前記中継手段は、前記データ通信開始を促すためのメッセージを前記端末に対して送信するときに、データ転送開始のシーケンス番号を取得することを特徴とする請求項１又は２に記載の通信システム。
【請求項４】
前記中継手段は、前記データ転送開始を促すメッセージを作成したときに、前記メッセージ長から前記シーケンス番号を取得することを特徴とする請求項１から３のいずれか１項に記載の通信システム。
【請求項５】
前記中継手段は、取得した前記シーケンス番号を基点に、前記シーケンス番号以降のデータに対してはヘッダを書き換えて宛先端末へのデータ転送を行い、前記シーケンス番号よりも以前のシーケンス番号のデータに対してはＴＣＰ処理を行って宛先端末へのデータ転送を行うことを特徴とする請求項３又は４に記載の通信システム。
【請求項６】
前記中継手段は、中継する宛先情報を取得し、データ転送時にデータのＴＣＰ処理を行って宛先端末へデータ転送を開始し、データ転送の途中からデータのＴＣＰ処理を行わずにデータのヘッダを書き換えて宛先端末へのデータ転送を行うことを特徴とする請求項１に記載の通信システム。
【請求項７】
前記中継手段は、一定以上のリソース消費を観測した場合に、宛先端末に対して、データのＴＣＰ処理を行ってデータ転送を行う処理から、データのヘッダを書き換えてデータ転送を行う処理に切り替えることを特徴とする請求項６に記載の通信システム。
【請求項８】
前記中継手段は、一定以上のコネクションを中継する場合に、宛先端末に対して、データのＴＣＰ処理を行ってデータ転送を行う処理から、データのヘッダを書き換えてデータ転送を行う処理に切り替えることを特徴とする請求項６に記載の通信システム。
【請求項９】
前記中継手段は、一定以上のトラヒック量を中継する場合に、宛先端末に対して、データのＴＣＰ処理を行ってデータ転送を行う処理から、データのヘッダを書き換えてデータ転送を行う処理に切り替えることを特徴とする請求項６に記載の通信システム。
【請求項１０】
前記中継手段は、前記データ転送の処理を切り替える際に、データのＴＣＰ処理を行ってデータ転送を行う際に進むシーケンス番号を取得し、該シーケンス番号から、データのヘッダを書き換えてデータ転送を開始する際のシーケンス番号を取得することを特徴とする請求項６に記載の通信システム。
【請求項１１】
前記中継手段は、取得した前記シーケンス番号を基点に、前記シーケンス番号以降のデータに対してはヘッダを書き換えて宛先端末へのデータ転送を行い、前記シーケンス番号よりも以前のシーケンス番号のデータに対してはＴＣＰ処理を行って宛先端末へのデータ転送を行うことを特徴とする請求項６又は１０に記載の通信システム。
【請求項１２】
前記端末は、データ転送開始の際、データにデータ転送開始を示す識別子を記載する手段を有し、
前記中継手段は、前記識別子が記載されたデータを受信した際、データ転送開始と判断し、データのヘッダを書き換えて宛先端末へデータ転送を行うことを特徴とする請求項１に記載の通信システム。
【請求項１３】
前記中継手段は、前記データ転送開始を示す識別子が記載されたデータを受信した際、データのヘッダを書き換えて宛先端末へデータ転送を行うためのシーケンス番号を取得することを特徴とする請求項１２に記載の通信システム。
【請求項１４】
前記中継手段は、前記データ転送開始を示す識別子が記載されたデータを受信した際、前記中継装置側のデータのシーケンス番号から、データのヘッダを書き換えて宛先端末へデータ転送を行うためのシーケンス番号を取得することを特徴とする請求項１２又は１３に記載の通信システム。
【請求項１５】
前記端末は、前記中継装置とＳＳＬセッション開設時に決定した暗号化方式で、データを暗号化しないことを特徴とする請求項１、６、１２のいずれか１項に記載の通信システム。
【請求項１６】
データ通信のＴＣＰコネクションを開設するＴＣＰ処理部と、データ通信のＳＳＬセッション開設のためのメッセージ交換を行うＳＳＬセッション開設処理部とを有する端末間のデータ通信を中継する中継装置であって、
前記端末間でデータを中継するための宛先情報を取得し、データ転送時に前記端末との間でデータのＴＣＰ処理を行わずに、データのヘッダを書き換えて宛先端末へのデータ転送を行う中継手段を有することを特徴とする中継装置。
【請求項１７】
前記中継手段は、中継する宛先情報を取得し、データ転送時にデータのＴＣＰ処理を行って宛先端末へデータ転送を開始し、データ転送の途中からデータのＴＣＰ処理を行わずにデータのヘッダを書き換えて宛先端末へのデータ転送を行うことを特徴とする請求項１６に記載の中継装置。
【請求項１８】
前記端末は、データ転送開始の際、データにデータ転送開始を示す識別子を記載する手段を有し、
前記中継手段は、前記識別子が記載されたデータを受信した際、データ転送開始と判断し、データのヘッダを書き換えて宛先端末へデータ転送を行うことを特徴とする請求項１６に記載の中継装置。
【請求項１９】
端末間でデータを中継するための宛先情報を取得し、データ転送時に前記端末との間でデータのＴＣＰ処理を行わずに、データのヘッダを書き換えて宛先端末へのデータ転送を行う中継手段を有する中継装置を介してデータ通信を行う端末であって、
前記中継装置との間で、データ通信のＴＣＰコネクションを開設するＴＣＰ処理部と、
データ通信のＳＳＬセッション開設のためのメッセージ交換を行うＳＳＬセッション開設処理部とを有することを特徴とする端末。
【請求項２０】
データ転送開始の際、データにデータ転送開始を示す識別子を記載する手段をさらに有することを特徴とする請求項１９に記載の端末。
【請求項２１】
データ通信のＴＣＰコネクションを開設するＴＣＰ処理部と、データ通信のＳＳＬセッション開設のためのメッセージ交換を行うＳＳＬセッション開設処理部とを有する端末間のデータ通信を中継する中継装置の中継処理方法であって、
前記端末間でデータを中継するための宛先情報を取得し、データ転送時に前記端末との間でデータのＴＣＰ処理を行わずに、データのヘッダを書き換えて宛先端末へのデータ転送を行う中継ステップを有することを特徴とする中継処理方法。
【請求項２２】
前記中継ステップは、中継する宛先情報を取得し、データ転送時にデータのＴＣＰ処理を行って宛先端末へデータ転送を開始し、データ転送の途中からデータのＴＣＰ処理を行わずにデータのヘッダを書き換えて宛先端末へのデータ転送を行うことを特徴とする請求項２１に記載の中継処理方法。
【請求項２３】
前記端末は、データ転送開始の際、データにデータ転送開始を示す識別子を記載する手段を有し、
前記中継ステップは、前記識別子が記載されたデータを受信した際、データ転送開始と判断し、データのヘッダを書き換えて宛先端末へデータ転送を行うことを特徴とする請求項２１に記載の中継処理方法。
【請求項２４】
データ通信のＴＣＰコネクションを開設するＴＣＰ処理部と、データ通信のＳＳＬセッション開設のためのメッセージ交換を行うＳＳＬセッション開設処理部とを有する端末間のデータ通信を中継する中継装置の中継処理プログラムであって、
コンピュータに、前記端末間でデータを中継するための宛先情報を取得し、データ転送時に前記端末との間でデータのＴＣＰ処理を行わずに、データのヘッダを書き換えて宛先端末へのデータ転送を行う中継処理を実行させることを特徴とするプログラム。
【請求項２５】
前記中継処理は、中継する宛先情報を取得し、データ転送時にデータのＴＣＰ処理を行って宛先端末へデータ転送を開始し、データ転送の途中からデータのＴＣＰ処理を行わずにデータのヘッダを書き換えて宛先端末へのデータ転送を行うことを特徴とする請求項２４に記載のプログラム。
【請求項２６】
前記端末は、データ転送開始の際、データにデータ転送開始を示す識別子を記載する手段を有し、
前記中継処理は、前記識別子が記載されたデータを受信した際、データ転送開始と判断し、データのヘッダを書き換えて宛先端末へデータ転送を行うことを特徴とする請求項２４に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、中継装置、端末、及び中継処理方法並びにそのプログラムに関し、特にファイアウォール配下に接続する端末間での通信中継方法に関する。
【背景技術】
【０００２】
近年、セキュリティの観点から、特に、企業では、部門、拠点毎にファイアウォールが設置されているケースが多い。ファイアウォールは、外部からの攻撃を防ぐことを目的で設置されているため、部門間、拠点間をまたがる通信は、ファイアウォールで遮断される。ファイアウォール越しに通信を実現するには、ファイアウォールの設定を変更して、通信を実現する方法がある。
【０００３】
この場合、管理者が、ユーザ毎、通信アプリケーション毎に通信を許可／不許可を設定しなければならず、管理コストが高いことと、また管理者の設定ミス等でセキュリティが保たれないという問題が発生する。そこで、グローバルネットワーク環境に中継サーバを配置して、端末と中継サーバ間で通信を行い、中継するという方式である。この場合、端末と中継サーバ間では、ファイアウォールが通信を許可している通信ポートを利用しなければならない。
【０００４】
これに関し、非特許文献１によると、ファイアウォールの運用方法として、ＴＣＰ（Transmission Control Protocol）（非特許文献２参照）の４４３番ポートを利用したＳＳＬ（Secure Socket Layer）通信が許可されている場合が多い。そこで、端末と中継サーバ間でＳＳＬ通信を利用して、中継サーバで中継先へデータを転送することで、ファイアウォール越しの通信を実現している（非特許文献１参照）。
【０００５】
端末と中継サーバ間では、ＴＣＰの通信が行われているが、信頼性のある通信実現のため、再送制御を行っているため、中継サーバは、中継するセッション数が多くなるにつれて処理負荷が高くなる。ＴＣＰ通信の中継方式としては、前述のように中継サーバにおいて処理負荷の高いＴＣＰの処理をすることなく、中継先コネクションへ、パケットのヘッダを書き換えて中継するＴＣＰスプライシング方式がある（非特許文献３参照）。
【０００６】
この方式によると、ＴＣＰコネクション開設のための動作は、送信側と受信側でＴＣＰ通信を行う場合と同じで、端末と中継サーバ間で行い、データ転送からは、前述のヘッダ情報を書き換えて転送を行っている。また、順序保証を目的として、記載されているシーケンス番号は、端末と中継サーバ間のコネクション開設動作で決められた初期のシーケンス番号の差分値を利用して書き換えられる（図１８のｆ１〜ｆ１２参照）。
【非特許文献１】則房雅也、「特集：使い方が見えた！  これからが本番、ＳＳＬ−ＶＰＮ（前編）  なぜＳＳＬ−ＶＰＮなのか。素朴な疑問を解消しよう」、[online]、２００７年６月１７日、＠ＩＴ（登録商標）、［２００７年７月２７日検索」、インターネット＜http://www.atmarkit.co.jp/fnetwork/tokusyuu/25sslvpn/01.html＞
【非特許文献２】RFC793, TRANSMISSION CONTROL PROTOCOL DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION, September 1981
【非特許文献３】D. A. Maltz, et al., “TCP Splice application layer proxy performance,” Jornal of High Speed Networks, Volume 8, Issue 3, 1999, p.225-240
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した関連技術では、次のような問題があった。
【０００８】
第１の問題は、中継装置を利用したファイアウォール越え通信を行う場合、中継装置においてＴＣＰ処理を行って中継する場合、ＴＣＰは、再送制御、フロー制御を行っているため処理負荷が増大することである。
【０００９】
第２の問題は、中継装置を利用したファイアウォール越え通信において中継方法として、ＴＣＰスプライシングを利用する場合、端末と中継装置の間で、ＴＣＰコネクション開設後、ＳＳＬセッションを開設するためのＴＣＰパケットが交換されるため、端末間で通信するＴＣＰコネクションのシーケンス番号の差分値がコネクション開設での初期シーケンスの差分値と異なる。従って、従来のＴＣＰスプライシング方式をそのまま適用するとシーケンス異常が発生するという問題がある。また、データ転送が開始しても、ネットワーク内でのパケットロス等による再送で、ＳＳＬセッション開設のために転送したパケットも中継装置にて受信及び転送され、相手側端末で通信異常が発生するという問題もある。
【００１０】
本発明の目的は、中継装置負荷を抑えるためにＴＣＰ処理をすることなく、中継先コネクションへパケットのヘッダを書き換えて中継するＴＣＰスプライシング方式による通信システムを利用しつつ、シーケンス異常及び相手側端末での通信異常の発生を抑制することである。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明に係る通信システムは、通信管理装置を介して端末からの通信要求および応答を行って、中継装置を介して端末間のデータ通信を行う通信システムであって、前記端末は、前記中継装置との間でデータ通信のＴＣＰコネクションを開設するＴＣＰ処理部と、データ通信のＳＳＬセッション開設のためのメッセージ交換を行うＳＳＬセッション開設処理部とを有し、前記中継装置は、前記端末間でデータを中継するための宛先情報を取得し、データ転送時に前記端末との間でデータのＴＣＰ処理を行わずに、データのヘッダを書き換えて宛先端末へのデータ転送を行う中継手段を有することを特徴とする。
【００１２】
本発明に係る中継装置は、データ通信のＴＣＰコネクションを開設するＴＣＰ処理部と、データ通信のＳＳＬセッション開設のためのメッセージ交換を行うＳＳＬセッション開設処理部とを有する端末間のデータ通信を中継する中継装置であって、前記端末間でデータを中継するための宛先情報を取得し、データ転送時に前記端末との間でデータのＴＣＰ処理を行わずに、データのヘッダを書き換えて宛先端末へのデータ転送を行う中継手段を有することを特徴とする。
【００１３】
本発明に係る端末は、端末間でデータを中継するための宛先情報を取得し、データ転送時に前記端末との間でデータのＴＣＰ処理を行わずに、データのヘッダを書き換えて宛先端末へのデータ転送を行う中継手段を有する中継装置を介してデータ通信を行う端末であって、前記中継装置との間で、データ通信のＴＣＰコネクションを開設するＴＣＰ処理部と、データ通信のＳＳＬセッション開設のためのメッセージ交換を行うＳＳＬセッション開設処理部とを有することを特徴とする。
【００１４】
本発明に係る中継処理方法は、データ通信のＴＣＰコネクションを開設するＴＣＰ処理部と、データ通信のＳＳＬセッション開設のためのメッセージ交換を行うＳＳＬセッション開設処理部とを有する端末間のデータ通信を中継する中継装置の中継処理方法であって、前記端末間でデータを中継するための宛先情報を取得し、データ転送時に前記端末との間でデータのＴＣＰ処理を行わずに、データのヘッダを書き換えて宛先端末へのデータ転送を行う中継ステップを有することを特徴とする。
【００１５】
本発明に係るプログラムは、データ通信のＴＣＰコネクションを開設するＴＣＰ処理部と、データ通信のＳＳＬセッション開設のためのメッセージ交換を行うＳＳＬセッション開設処理部とを有する端末間のデータ通信を中継する中継装置の中継処理プログラムであって、コンピュータに、前記端末間でデータを中継するための宛先情報を取得し、データ転送時に前記端末との間でデータのＴＣＰ処理を行わずに、データのヘッダを書き換えて宛先端末へのデータ転送を行う中継処理を実行させることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、中継装置負荷を抑えるためにＴＣＰ処理をすることなく、中継先コネクションへパケットのヘッダを書き換えて中継するＴＣＰスプライシング方式による通信システムを利用しつつ、シーケンス異常及び相手側端末での通信異常の発生を抑制することができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明に係る通信システム、中継装置、端末、及び中継処理方法並びにそのプログラムの各種実施例について、図面を参照して説明する。
【実施例１】
【００１８】
まず、本発明の第１の実施例について図面を用いて説明する。
【００１９】
図１は、本実施例に係る通信システムの全体構成図である。同図に示す通信システムは、中継装置１、端末１０、端末１１、ファイアウォール装置１００、ファイアウォール装置１０１、及び通信管理装置１０００を有する。中継装置１と通信管理装置１０００は、ファイアウォール装置１００配下の端末１０と、ファイアウォール装置１０１配下の端末１１とにそれぞれ通信可能に接続される。
【００２０】
図２は、中継装置１のブロック図である。同図に示すように、中継装置１は、例えば中継サーバで構成され、パケット受信部１−１、パケット振分部１−２、ＴＣＰ処理部１−３、ＳＳＬセッション開設処理部１−４、コネクション結合情報管理部１−５、パケット振分情報管理部１−６、コネクション管理テーブル１−７、ヘッダ書換部１−８、及びパケット送信部１−９を有する。これら各部１−１〜１−９が、本発明の中継手段を構成している。
【００２１】
パケット受信部１−１は、送信されてきたパケット（データ）を受信する。パケット振分部１−２は、受信したパケットをＴＣＰ処理部１−３かヘッダ書換部１−８のいずれかに転送し、ＴＣＰ処理部１−３から転送されてきたパケットをパケット送信部１−９に転送し、また、本パケット振分部１−２から転送されるパケットのＴＣＰヘッダ情報をコネクション管理テーブル１−７に記載する。ＴＣＰ処理部１−３は、受信したパケットのＴＣＰ処理を行う。ＳＳＬセッション開設処理部１−４は、端末とのＳＳＬセッションを開設する。コネクション結合情報管理部１−５は、端末から開設されるコネクションのうちいずれのコネクションを結合するかという情報を管理する。パケット振分情報管理部１−６は、受信したパケットをＴＣＰ処理部１−３かヘッダ書換部１−８のうちいずれかへ転送する条件を管理する。コネクション管理テーブル１−７は、本中継装置１と開設しているコネクションのＴＣＰヘッダ情報を管理する。ヘッダ書換部１−８は、コネクションを中継するためにＴＣＰヘッダを書き換える。パケット送信部１−９は、パケットを送信する。
【００２２】
図３は、端末１０のブロック図である。同図に示すように、端末１０は、パケット受信部１０−１、ＴＣＰ処理部１０−２、通信要求応答部１０−３、ＳＳＬセッション開設部１０−４、宛先情報通知部１０−５、アプリケーション部１０−６、及びパケットを送信するパケット送信部１０−７を有する。
【００２３】
パケット受信部１０−１は、送信されてきたパケットを受信する。ＴＣＰ処理部１０−２は、受信したパケットのＴＣＰ処理を行う。通信要求応答部１０−３は、通信管理装置１０００とコネクションを開設して、ファイアウォール装置配下に接続している端末間で、通信要求／応答メッセージを交換する。ＳＳＬセッション開設部１０−４は、中継装置１とＳＳＬセッションを開設する。宛先情報通知部１０−５は、中継装置１に対して、通信の宛先情報を通知する。アプリケーション部１０−６は、宛先端末とデータ通信を行う。パケット送信部１０−７は、パケットを送信する。端末１１も同様の構成である。
【００２４】
図４は、通信管理装置１０００のブロック図である。同図に示すように、通信管理装置１０００は、例えば通信管理サーバで構成され、メッセージ受信部１０００−１、登録メッセージ処理部１０００−２、通信要求／応答メッセージ処理部１０００−３、端末／中継装置情報管理テーブル１０００−４、及びメッセージ送信部１０００−５を有する。
【００２５】
メッセージ受信部１０００−１は、送信されてきたメッセージを受信する。登録メッセージ処理部１０００−２は、端末から識別情報登録のために送信されてくる登録メッセージを見て、端末／中継装置情報管理テーブル１０００−４へ識別情報を登録する。通信要求／応答メッセージ処理部１０００−３は、端末から通信要求／応答メッセージを受信して、中継装置の識別情報を記載し、転送する。端末／中継装置情報管理テーブル１０００−４は、端末、中継装置のＩＰ（Internet Protocol）アドレス、ポート番号等の識別子を記載する（後述の図８参照）。メッセージ送信部１０００−５は、通信要求／応答メッセージ処理部１０００−２から転送されてくるメッセージを送信する。
【００２６】
次に、本実施例の動作について説明する。
【００２７】
ここでは、端末１０、端末１１と通信管理装置１０００で行われる登録、通信要求／応答メッセージの交換動作、それに続いて、端末１０と端末１１が中継装置１と介して、データ通信を行う一連の動作を、図面を用いて説明する。
【００２８】
１）通信管理装置への登録〜通信要求
端末１０、端末１１は、それぞれファイアウォール装置１００、１０１配下に接続しているため、直接メッセージのやり取りができない。そこで、通信管理装置１０００を介して、中継装置１を介して通信を行う要求およびそれに対する応答を実施する。
【００２９】
最初に、図３、図４、図６を用いて通信管理装置１０００への登録動作から通信要求までの動作を説明する。
【００３０】
図６に示すように、端末１０は、通信要求／応答部１０−３により、まず、通信管理装置１０００に対して、ＩＰアドレス、ポート番号等、識別できる登録メッセージを送信する（図６−ａ１参照）。端末１１も同様のメッセージを送信する（図６−ａ２参照）。登録メッセージを受信した通信管理装置１０００は、登録メッセージ処理部１０００−２により、端末／中継装置情報管理テーブル１０００−４へ登録する（図６−ａ３参照）。この端末／中継装置情報管理テーブル１０００−４は、図８に示すようにＩＤ毎にＩＰアドレスと、ポート番号を登録する。
【００３１】
端末１０は、通信要求／応答部１０−３により、端末１１に対して通信を要求するために、端末１１のＩＰアドレス等識別情報とデータ通信を行うために中継装置１に対してコネクションを開設するときに使用するポート番号を通信要求メッセージに記載して通信管理装置１０００に対して送信する（図６−ａ４参照）。
【００３２】
端末１０からの通信要求メッセージを受信した通信管理装置１０００は、通信要求／管理メッセージ処理部１０００−３により、データ通信で接続する中継装置１の識別情報を加えて（図６−ａ５参照）、通信要求メッセージを端末１１へ送信する（図６−ａ６参照）。通信要求メッセージを受信した端末１１は、データ通信を行うために中継装置１に対してコネクションを開設するときに利用するポート番号を通信応答メッセージに記載して通信管理装置１０００へ送信する（図６−ａ７参照）。端末１１からの通信応答メッセージを受信した通信管理装置１０００は、通信要求／応答メッセージ処理部１０００−３により、中継装置１の識別情報を加えて（図６−ａ８参照）、端末１０へ応答メッセージを送信する（図６−ａ９参照）。この後、端末１０、端末１１は、中継装置１に対して接続を行い、データ通信を実施する。
【００３３】
２）中継装置への接続〜データ通信
端末１０、端末１１は、通信を行うために、通信管理装置１０００から通知された中継装置１へ接続を行う。ここでは、中継装置１による中継処理（ヘッダ書換処理）でＴＣＰのシーケンス番号を利用するため、メッセージ交換で進むシーケンスを追って説明する。
【００３４】
まず、端末１０、端末１１は、中継装置１に対して、ＳＳＬセッション開設を行う。本動作において、端末１０と端末１１は同じ動作をするため、端末１０と中継装置１の間で行われる動作のみ説明する。
【００３５】
２−１）ＴＣＰコネクション開設動作
図７に示すように、端末１０は、ＳＳＬセッション開設処理部１０−４により、中継装置１とＳＳＬセッション開設のため、ＴＣＰ処理部１０−２へ指示する。指示を受けたＴＣＰ処理部１０−２は、中継装置１に対してＴＣＰコネクション開設を行うため、まず、パケット送信部１０−７を介して、ＴＣＰヘッダのコードビット内のＳＹＮ（Synchronize flag）を１とした、ＳＹＮパケットを送信する（図７−ｂ１参照）。このとき、端末１０は、ＴＣＰ処理部１０−２により、初期シーケンス番号を決めて送信するが、その番号を１００番としている（図７−ｂ１参照）。図７における各メッセージにＳｅｑ＃（sequence number：シーケンス番号）、ＡＣＫ＃（acknowledgement number：確認応答番号）が表記されているが、Ｓｅｑ＃は、それぞれ送信したパケットに記載されているバイトシーケンスにデータ部分のサイズを加算した値号、ＡＣＫ＃は、次に受信を期待するバイトシーケンスを表している。
【００３６】
次いで、中継装置１は、パケット受信部１−１を介して端末１０からのＳＹＮパケットを受信すると、パケット振分部１−２を経由してＴＣＰ処理部１−３に転送するが、このとき、端末から送信されてくるパケットのヘッダ（ＴＣＰヘッダ及びＩＰヘッダ）内に記載されているＩＰアドレス、ポート番号、ＴＣＰシーケンス番号を図５に示したように端末毎にコネクション管理テーブル１−７に記載する（図５の例では、１行目は端末１０、２行目は端末１１の情報である）。
【００３７】
これ以降、パケット振分部１−２は、端末１０からのパケットのヘッダ情報をコネクション管理テーブル１−７へ記載する。ただし、ネットワーク内でのパケットロス等による再送パケットのシーケンス番号は記載しない。
【００３８】
中継装置１は、パケット受信部１−１を介してＴＣＰ処理部１−３でＳＹＮパケットを受信すると、ＴＣＰヘッダのコードビット内のＳＹＮ及びＡＣＫ（acknowledgement  flag）を１とした、ＳＹＮ  ＡＣＫパケットを生成し、パケット送信部１−７を介して端末１０へ送信する（図７−ｂ２参照）。このとき、シーケンス番号は、Ｓｅｑ＃２００番とし、ＡＣＫ＃は次に受信を期待するシーケンス番号の先頭のバイトシーケンスである１０１番とする（図７−ｂ２参照）。
【００３９】
次いで、端末１０は、パケット受信部１０−１を介してＳＹＮ  ＡＣＫパケットを受信すると、ＴＣＰ処理部１０−２により、ＴＣＰヘッダのコードビット内のＡＣＫを１とした、ＡＣＫパケットを生成して、Ｓｅｑ＃１０１番、ＡＣＫ＃２０１番として、パケット送信部１０−７を介して中継装置１に対して送信する（図７−ｂ３参照）。
【００４０】
次いで、中継装置１は、パケット受信部１−１を介してＴＣＰ処理部１−３によりＡＣＫパケットを受信する。この時点で、ＴＣＰコネクション開設動作が終了となる。
【００４１】
２−２）ＳＳＬセッション開設動作
次に、ファイアウォール装置１００を越えて通信を行うためのＳＳＬセッション開設を行う。ここでは、端末１０のＳＳＬセッション開設処理部１０−４と中継装置１のＳＳＬセッション開設処理部１−４でＳＳＬセッション開設のためのメッセージ交換を行う（図７−ｂ４、ｂ５参照）。このとき、端末１０のＳｅｑ＃は７０００番、ＡＣＫ＃は５００１番まで進む。
【００４２】
ＳＳＬセッション開設終了後、端末１０では、ＳＳＬセッション開設処理部１０−４が宛先情報通知部１０−５へ終了通知する（図３参照）。また、中継装置１では、ＳＳＬセッション開設処理部１−４からコネクション結合情報管理部１−５へＳＳＬセッション開設終了を通知する。
【００４３】
２−３）中継するコネクションを識別すためのメッセージ交換動作
ＳＳＬセッション開設終了時点において、中継装置１は、どのコネクションのデータを中継すればよいか判断できないため、端末１０は、中継するコネクション情報と、宛先ＩＰアドレスと、通信要求／応答メッセージで取得したポート番号とを記載したコネクションペア作成要求メッセージを中継装置１のコネクション結合情報管理部１−５へ通知する（図７−ｂ６参照）。
【００４４】
このとき、コネクションペア作成要求メッセージ長を１０００ｂｙｔｅとすると、シーケンス番号は、Ｓｅｑ＃８０００番まで進み、ＡＣＫ＃５００１番となる。また、このとき、コネクション結合情報管理部１−５は、コネクション管理テーブル１−７（図５参照）を参照して、中継するコネクションを識別するために、コネクションペアＩＤに、中継するコネクションと同じ識別情報を記載する（図５の例では、端末１０（１行目）、端末１１（２行目）の各コネクションペアＩＤが同じ識別番号「Ｘ」に記載される）。このペアが作成できた時点でデータ通信を開始できる。
【００４５】
２−４）データ転送開始初期シーケンスの決定及びパケット振分動作
データ通信が始まると、中継装置１では、端末１０からの送信されてくるデータパケットを端末１１へ中継する。中継方法は、ＴＣＰヘッダを書き換えて、端末１０と中継装置１で開設されたＴＣＰコネクション上のパケットを、端末１１と中継装置１との間で開設されたコネクション上へ転送する。
【００４６】
本ヘッダ書き換えでは、中継先コネクションのシーケンス番号に進捗にしたがって書き換えなければならない。具体的には、中継先コネクションの端末のシーケンス番号がＳｅｑ＃１００番、ＡＣＫ＃２００番の場合、中継するパケットは、Ｓｅｑ＃は、ＡＣＫ＃が２００番なので、２００番、ＡＣＫ＃は、Ｓｅｑ＃が１００番なので、１０１番にしなければならない。
【００４７】
従って、データ中継開始のシーケンス番号を把握して変換しなければならない。正確に該シーケンス番号が把握できないと、シーケンスのずれが発生し、通信異常が発生する。また、データ中継開始までに、端末１０は、中継装置１とＳＳＬセッション開設、コネクションペアを作成するためにメッセージ交換を行っているため、データと関係ないＴＣＰパケットが再送されてくる可能性があり、該メッセージを宛先に転送すると通信異常が発生するという問題もある。
【００４８】
従来のＴＣＰスプライシング方式では、端末および、サーバがコネクションを開設する際に、双方が決める初期シーケンス番号を基にヘッダ書き換え処理で中継を行っている。
【００４９】
これに対し、本実施例では、ＴＣＰスプライシング方式を利用しつつ、以下のような初期シーケンスの決定及びパケット振分動作を行う。
【００５０】
まず、中継装置１では、データ転送開始前に、端末１０と交換するメッセージのサイズから、データ転送開始時のシーケンス番号を算出する。また、算出した該シーケンス番号を元に、該シーケンス番号よりも小さいシーケンス番号のパケットは、宛先端末へ転送するパケットではないと判断して、中継装置１のＴＣＰ処理部１−５へ、該シーケンス番号以上のシーケンス番号のパケットは、宛先端末へ転送すべきパケットと判断してパケット振分部１−８へ転送する。
【００５１】
以下、上記の処理の流れを図７に沿って具体的に説明する。
【００５２】
図７において、中継装置１は、コネクション結合情報管理部１−５により、データ通信開始直前のコネクションペア作成応答メッセージを作成する（図７−ｂ７参照）と、メッセージサイズを取得してパケット振分情報管理部１−６へ通知する（図７−ｂ８参照）。ここでは、メッセージサイズが１０００ｂｙｔｅとしている。パケット振分情報管理部１−６は、メッセージサイズ１０００ｂｙｔｅを取得すると、コネクション管理テーブル１−７を参照して、データ開始直前の端末１０のＳｅｑ＃、ＡＣＫ＃、すなわち、データ転送初期シーケンス番号を計算する（図７−ｂ９参照）。Ｓｓｑ＃は、端末１０から送信されたコネクションペア作成要求メッセージがコネクション結合情報管理部１−５で受信したときに進んだシーケンス番号に１を加えて、８００１番となり、ＡＣＫ＃は、コネクションペア作成応答メッセージのサイズ分増加するので、６００１番となる（図５、図７−ｂ９参照）。
【００５３】
これにより、データ転送初期シーケンス番号が確定すると、パケット振分情報管理部１−６は、パケット振分部１−２に対して、端末１０から送信されてくるパケットのＳｅｑ＃が８００１番以上の場合、ヘッダ書換部１−８へ、８００１番より小さい場合はＴＣＰ処理部１−３へ、ＡＣＫ＃も同様に、６００１番以上の場合、ヘッダ書換部１−８へ、６００１番より小さい場合、ＴＣＰ処理部１−３へ転送するようにパケット振分ルールを指示する（図７−ｂ１０参照）。
【００５４】
その後、パケット振分情報管理部１−６は、コネクション結合情報管理部１−５に対して、コネクションペア作成応答メッセージを送信するように要求する（図７−ｂ１１参照）。コネクションペア作成応答メッセージの送信を要求されたコネクション結合情報管理部１−５は、該メッセージを端末１０へ転送する（図７−ｂ１２参照）。
【００５５】
コネクション要求応答メッセージをＴＣＰ処理部１−３へ送信する前に該メッセージサイズからデータ転送初期シーケンス番号を確定させた理由は、該メッセージがＴＣＰ処理部１−３からＴＣＰセグメント化されて、いつ送信終了できるのかタイミングを把握することができず、端末１０からデータ送信が開始され、中継装置１のＴＣＰ処理部１−３で処理されることを防ぐためである。
【００５６】
中継装置１には、コネクションペア作成応答パケット送信後、端末１０からデータが転送されてくる（図７−ｂ１３参照）。この場合、図７のｂ１３に示したようにデータのＳｅｑ＃８００１番、ＡＣＫ＃６００１番とする。中継装置１は、該パケットをパケット振分部１−２で受信すると、前述のパケット振分ルールに基づいて、ヘッダ書換部１−８へ転送し、ヘッダ書換部１−８により、パケットの宛先、シーケンス番号を書き換える。
【００５７】
この場合、端末１１のコネクション管理情報は、図５に示すコネクション管理テーブル１−７の２行目の情報に対応する。このため、パケットの宛先は、ＩＰアドレス５．６．７．８、ポート番号２０００番に書き換えられる。また、シーケンス番号は、互いのＳｅｑ番号、ＡＣＫ番号の差分値をもとに書き換えられる。
【００５８】
即ち、図７のｂ１３に示すパケットは、８００１番から、端末１０のデータ転送初期シーケンスのＳｅｑ番号と端末１１のデータ転送初期シーケンス番号のＡＣＫ番号の差分値６０００（＝８００１−２００１）を引いて、２００１番とする（図７−ｂ１４参照）。以降、端末１０からのデータパケットのシーケンス番号は、シーケンス番号から４０００引いた値へ書き換える。書き換えられたパケットは、中継先コネクションの端末１１へ転送される（図７−ｂ１５参照）。端末１１から端末１０の場合も、同様に差分値１０００（＝６００１−５００１）を加えた値へ書き換える。
【００５９】
また、データ転送において、端末１０、端末１１は、中継装置１とＳＳＬセッションを開設しているため、セッション開設時に決めた暗号化方式で、データ部分は暗号化される。従って、端末１０、端末１１は、異なる暗号化方式でデータを暗号化されることが考えられる。データが異なる暗号化方式で暗号化された場合、端末は、暗号化を解くことができず、実質通信できない状態となる。そこで、データを送信する場合は、アプリケーション部１０−６は、ＳＳＬセッション開設処理部１０−４から、ＳＳＬヘッダ情報を取得し、本情報からＳＳＬヘッダを作成し、データは、暗号化しないか、それとも、端末１０、端末１１が対応可能な暗号化方式で暗号化を行う。
【００６０】
従って、本実施例によれば、ＴＣＰコネクション開設後、端末と中継装置の間でＴＣＰパケットの交換が行われ、その後、通信相手先へＴＣＰパケットの転送を行う際、シーケンス異常が発生しないように通信相手先へデータ転送する際の初期シーケンス番号を取得している。
【００６１】
即ち、本実施例では、ＴＣＰスプライシング方式を用いてデータ転送を開始するシーケンス番号を取得し、中継装置で受信するパケットに記載されるシーケンス番号と前述の境界となるシーケンス番号を比較し、中継装置内部のＴＣＰ処理部へ転送するか、ヘッダ書換部へ転送し、宛先端末へ転送するか決定している。このように、通信相手先へデータ転送開始するシーケンスを取得して、中継装置で受信されるパケットの処理を、該シーケンス番号として、通信相手に転送すべきか中継装置内において処理を行うか決定しているため、従来実現できなかった中継装置を用いたファイアウォール越え通信において、中継装置負荷を抑えるためのＴＣＰスプライシング方式を用いた中継を実現できる。
【００６２】
なお、本実施例は、次のように構成してもよい。
【００６３】
ａ）中継手段は、中継する宛先情報を取得すると、端末に対してデータ送信開始を促すためのメッセージを送信してもよい。
【００６４】
ｂ）中継手段は、データ通信開始を促すためのメッセージを端末に対して送信するときに、データ転送開始のシーケンス番号を取得してもよい。
【００６５】
ｃ）中継手段は、データ転送開始を促すメッセージを作成したときに、メッセージ長からシーケンス番号を取得してもよい。
【００６６】
ｄ）中継手段は、取得したシーケンス番号を基点に、シーケンス番号以降のデータに対してはヘッダを書き換えて宛先端末へのデータ転送を行い、シーケンス番号よりも以前のシーケンス番号のデータに対してはＴＣＰ処理を行って宛先端末へのデータ転送を行ってもよい。
【００６７】
ｅ）端末は、中継装置とＳＳＬセッション開設時に決定した暗号化方式で、データを暗号化しないように構成してもよい。
【実施例２】
【００６８】
次に、本発明の第２の実施例について図面を参照して説明する。
【００６９】
図９は、本実施例に係る通信システムの全体構成図である。同図に示す通信システムは、中継装置２、端末１０、端末１１、ファイアウォール１００、ファイアウォール１０１、及び通信管理装置１０００を有する。本実施例と第１の実施例との差異は、中継装置１が中継装置２に置き換えられている点である。
【００７０】
図１０は、中継装置２の内部ブロックを示している。同図に示すように、中継装置２は、第１の実施例の中継装置１と同様に、パケット受信部２−１、パケット振分部２−２、ＴＣＰ処理部２−３、ＳＳＬセッション開設処理部２−４、コネクション結合情報管理部２−５、パケット振分情報管理部２−７、コネクション管理テーブル２−８、ヘッダ書換部２−９、及びパケット送信部２−１０を有する。これに加え、中継装置２は、パケット中継部２−６と、処理切り替えシーケンス計算部２−１１とを有する。これら各部２−１〜２−１１が、本発明の中継手段を構成している。
【００７１】
パケット中継部２−６は、ＴＣＰ処理部２−３から送信されてきたパケットを中継する。処理切り替えシーケンス計算部２−１１は、パケット振分管理部２−７からの指示とコネクション管理テーブル２−８に記載されているシーケンス番号の進捗から処理切り替えシーケンスを計算する。
【００７２】
次に、本実施例の動作について説明する。
【００７３】
本実施例でも、第１の実施例と同様に端末１０と端末１１が中継装置２を介してデータ通信を行う一連の動作を、図面を用いて説明する。
【００７４】
本実施例の動作は、第１の実施例と共通する点が多いため、その差分について図１０、図１１、図１２を用いて説明する。端末１０と中継装置２、端末１１と中継装置２の間で行われる動作は同じため、端末１０と中継装置２で行われる動作のみ説明する。
【００７５】
１）データ転送開始前の動作
第１の実施例では、セッション開設後、データ転送開始時から、ＴＣＰヘッダ書き換えてデータを中継していたが、本実施例では、セッション開設後、中継装置２のデータ中継部２−６を介して中継を行い、ＴＣＰヘッダ書き換えによる中継を行う。本実施例と第１の実施例の動作が異なるのは、端末１０のコネクションペア作成要求メッセージ送信からである。
【００７６】
図１２において、中継装置２は、該メッセージを、パケット受信部２−１を介して、コネクション結合情報管理部２−５が受信すると（図１２−ｃ１参照）、コネクション結合情報管理部２−５により、コネクションペアＩＤを記載し、コネクションペア作成応答メッセージを作成する（図１２−ｃ２参照）。次いで、コネクション結合情報管理部２−５は、作成したメッセージサイズを取得し（図１２−ｃ３参照）、コネクション管理テーブル２−８を参照してデータ転送初期シーケンス番号を算出し、該テーブル２−８へ記載する（図１２−ｃ４参照）。その後、コネクション結合情報管理部２−５は、コネクションペア作成応答メッセージを、パケット送信部２−１０を介して、端末１０に対して送信する（図１２−ｃ５参照）。これにより、端末１０は、データ転送を開始する（図１２−ｃ６参照）。
【００７７】
２）データ転送開始
図１２において、中継装置２は、端末１０からのデータパケットをパケット受信部２−１、パケット振分部２−２を経由してＴＣＰ処理部２−３で受信し、端末１０に対してＡＣＫを送信し、データ部分は、データ中継部２−６へ転送する（図１２−ｃ６参照）。データ中継部２−６は、中継先コネクションへデータを送信するために、ＴＣＰ処理部２−３へ転送し、パケット振分部２−２を経由し、パケット送信部２−１０から端末１１へ送信される。本中継方法による通信で、Ｓｅｑ＃４７０００番、ＡＣＫ＃２９００１番前まで進む（図１２−ｃ６参照）。
【００７８】
３）中継方法の切り替え（中継処理部を介した中継から、ヘッダ書き換えによる中継）指示
図１２において、パケット振分情報管理部２−７は、中継装置２のリソース消費量を監視し、一定以上消費量を観測（検出）する（図１２−ｃ７参照）と、リソース消費量を抑えるために、リソース消費量の高いＴＣＰ処理を行うデータ中継部２−６を介した通信から、ヘッダ書き換えによる中継に処理を切り替えるようパケット振分部２−２へ処理切り替え指示を出す（図１２−ｃ８参照）。ここで述べたリソースとは、ＣＰＵ（Central Processing Unit）、メモリ等をあらわしている。また、リソース消費量だけでなく、一定数以上の通信コネクションの中継、または、一定以上の中継トラヒックを中継する場合にも、処理を切り替えることが考えられる。
【００７９】
４）中継方法切り替え時のシーケンス番号取得について
第１の実施例では、データ転送開始シーケンス番号を取得するのみであったが、本実施例では、中継処理部２−６を介したデータ中継からヘッダ書き換えによる中継を行うため、データ中継部２−６を介して宛先端末に転送されるデータ量から、ヘッダ書き換えによる中継開始シーケンス番号を取得する。
【００８０】
図１２において、前述の処理切り替え指示を受けたパケット振分部２−２は、処理切り替えシーケンス計算部２−１１へ端末１０と端末１１の通信において、データ中継部２−６を経由した通信で、端末１０、端末１１のＳｅｑ番号、ＡＣＫ番号がどれだけ進むか計算して、処理切り替え初期シーケンスを算出する指示を出す。処理切り替えシーケンス計算部２−１１は、図１１のコネクション管理テーブル２−８の１行目に示すように処理切り替えシーケンス番号を算出して決定する（図１２−ｃ９、ｃ１０参照）。以下、その算出方法を示す。
【００８１】
端末１０の処理切り替えシーケンス番号のＳｅｑ番号は、コネクション管理テーブル２−８の端末１０のコネクションのＳｅｑ番号４８０００番に１を加えた４８００１番となる。端末１０からデータ中継部２−６を経由して中継端末１１へ送信されるデータで進むシーケンスは、端末１０の処理切り替え初期シーケンス番号のＳｅｑ番号４８００１番からデータ転送初期シーケンス番号のＳｅｑ番号８００１を引いた４００００番となる。
【００８２】
従って、端末１１の処理切り替えシーケンス番号のＡＣＫ番号は、端末１１のデータ転送初期シーケンス番号のＡＣＫ番号に４００００を加えた４２００１番となる。端末１１の処理切り替えシーケンス番号のＳｅｑ番号、端末１０の処理切り替えシーケンス番号のＡＣＫ番号も同様に算出する。
【００８３】
以降、中継装置２は、端末１０からのパケットを受信する（図１２−ｃ１１参照）と、パケット振分部２−２からヘッダ書換部２−９へ転送し（図１２−ｃ１２参照）、ヘッダを書き換えて（図１２−ｃ１３参照）、端末１１へ転送する（図１２−ｃ１４参照）。この書き換え方法については、処理切り替えシーケンス番号を参照して、第１の実施例と同様に行う。
【００８４】
本実施例によれば、前述した第１の実施例と同様の効果に加え、さらに中継装置の処理負荷に応じて、ＴＣＰ処理を行う中継からヘッダ書き換えによる中継へ切り替えることで、リソースの有効活用が可能となる。
【００８５】
なお、本実施例は、次のように構成してもよい。
【００８６】
ａ）中継手段は、中継する宛先情報を取得し、データ転送時にデータのＴＣＰ処理を行って宛先端末へデータ転送を開始し、データ転送の途中からデータのＴＣＰ処理を行わずにデータのヘッダを書き換えて宛先端末へのデータ転送を行ってもよい。
【００８７】
ｂ）中継手段は、一定以上のリソース消費を観測した場合に、宛先端末に対して、データのＴＣＰ処理を行ってデータ転送を行う処理から、データのヘッダを書き換えてデータ転送を行う処理に切り替えてもよい。
【００８８】
ｃ）中継手段は、一定以上のコネクションを中継する場合に、宛先端末に対して、データのＴＣＰ処理を行ってデータ転送を行う処理から、データのヘッダを書き換えてデータ転送を行う処理に切り替てもよい。
【００８９】
ｄ）中継手段は、一定以上のトラヒック量を中継する場合に、宛先端末に対して、データのＴＣＰ処理を行ってデータ転送を行う処理から、データのヘッダを書き換えてデータ転送を行う処理に切り替えてもよい。
【００９０】
ｅ）中継手段は、データ転送の処理を切り替える際に、データのＴＣＰ処理を行ってデータ転送を行う際に進むシーケンス番号を取得し、該シーケンス番号から、データのヘッダを書き換えてデータ転送を開始する際のシーケンス番号を取得してもよい。
【００９１】
ｆ）中継手段は、取得したシーケンス番号を基点に、前記シーケンス番号以降のデータに対してはヘッダを書き換えて宛先端末へのデータ転送を行い、シーケンス番号よりも以前のシーケンス番号のデータに対してはＴＣＰ処理を行って宛先端末へのデータ転送を行ってもよい。
【００９２】
ｇ）端末は、中継装置とＳＳＬセッション開設時に決定した暗号化方式で、データを暗号化しないように構成してもよい。
【実施例３】
【００９３】
次に、本発明の第３の実施例について図面を参照して説明する。
【００９４】
図１４は、本実施例に係る通信システムの全体構成図である。同図に示す通信システムは、中継装置３、端末１２、端末１３、ファイアウォール装置１００、ファイアウォール装置１０１、及び通信管理装置１０００を有する。本実施例と第１の実施例との差異は、中継装置１が中継装置３に端末１０が端末１２に、端末１１が端末１３に置き換えられている点である。
【００９５】
図１４は、中継装置３の内部ブロックを示している。同図に示すように、中継装置３は、第１の実施例の中継装置１と同様に、パケット受信部３−１、パケット振分部３−２、ＴＣＰ処理部３−４、ＳＳＬセッション開設処理部３−５、コネクション結合情報管理部３−６、パケット振分情報管理部３−７、コネクション管理テーブル３−８、ヘッダ書換部３−９、及びパケット送信部３−１０を有する。これに加え、中継装置２は、同図に示すように、データ開始時のシーケンスを決定するコネクション結合初期シーケンス決定部３−３を有する。これら各部３−１〜３−１０が、本発明の中継手段を構成している。
【００９６】
図１５は、端末１２の内部ブロックを示している。端末１３も同様である。端末１２は、第１の実施例の端末１０と同様に、パケット受信部１２−１、ＴＣＰ処理部１２−２、通信要求応答部１２−３、ＳＳＬセッション開設部１２−４、宛先情報通知部１２−５、アプリケーション部１２−７、及びパケット送信部１２−８を有する。これに加え、端末１２は、データ転送開始を示す識別子を決定し、中継装置３へ通知するデータ転送開始識別子決定部１２−６を有する。
【００９７】
次に、本実施例の動作について説明する。
【００９８】
本実施例でも、第１の実施例と同様に端末１０と端末１１が中継装置２を介してデータ通信を行う一連の動作を、図面を用いて説明する。
【００９９】
本実施例の動作は、第１の実施例と共通する点が多いため、その差分について図１４、図１５、図１６、図１７を用いて説明する。端末１２と中継装置３、端末１３と中継装置３の間で行われる動作は同じため、端末１０と中継装置２で行われる動作のみ説明する。本実施例と第１の実施例の動作が異なるのは、端末１０がコネクションペア作成要求メッセージ送信からである。
【０１００】
図１７において、端末１２は、宛先情報通知部１２−６によりデータ転送開始識別子を決定し、コネクションペア作成要求メッセージ内に記載して、パケット送信部１２−８を介して、中継装置３のコネクション結合情報管理部３−６へ送信する（図１７−ｄ１参照）。
【０１０１】
次いで、中継装置３は、パケット受信部３−１を介して、コネクションペア作成要求メッセージを受信すると、コネクション結合情報管理部３−６により、該メッセージ内のデータ転送開始メッセージのデータ転送開始識別子を取得し（図１７−ｄ２参照）、その識別子をパケット振分情報管理部３−７へ通知する（図１７−ｄ３参照）。
【０１０２】
次いで、データ転送開始識別子を取得したパケット振分情報管理部３−７は、パケット振分部３−２に対して、該データ転送開始識別子が記載されたパケットのシーケンス番号以降のパケットはヘッダ書換部３−９へ転送するようにパケット振分ルールを指示する（図１７−ｄ４参照）。
【０１０３】
次いで、パケット振分情報管理部３−７は、コネクション結合情報管理部３−６に対して、コネクションペア作成応答メッセージを端末１２へ送信するように要求する（図１７−ｄ５参照）。これにより、コネクション結合情報管理部３−６は、パケット送信部３−１０を介して、端末１２に対して、コネクションペア作成応答メッセージを送信する（図１７−ｄ６参照）。
【０１０４】
コネクションペア作成応答メッセージを受信した宛先情報通知部１２−５は、アプリケーション部１２−７に対して、データ転送開始を指示する。
【０１０５】
１）テータ転送開始及びデータ転送開始シーケンス番号の取得動作
本実施例では、端末がデータ転送開始時に、データ転送開始を示す識別情報を付与することで、該識別情報が付与されたパケットを受信することで、データ中継を行うためのセッション開設メッセージ交換を終了したと判断でき、第１の実施例のようにメッセージサイズからデータ転送開始シーケンス番号を算出する処理を行わなくても、該パケットを受信した時点でのシーケンス番号からデータ転送開始シーケンス番号を取得することが可能である。
【０１０６】
以下、その処理を図１７に沿って具体的に説明する。
【０１０７】
図１７において、端末１２は、アプリケーション部１２−７により、データ転送開始識別子１２−６からデータ転送開始識別子を取得して、データの先頭に記載する。アプリケーション部１２−７は、そのデータをＴＣＰ処理部１２−２へ転送し、パケット送信部１２−８から中継装置３へ送信する（図１７−ｄ７参照）。中継装置３は、パケット振分部３−２により、データ転送開始識別子が記載されたパケットを検出すると、コネクション結合初期シーケンス決定部３−３により、コネクション管理テーブル３−８を参照して、コネクション結合初期シーケンスを決定する（図１７−ｄ８参照）。
【０１０８】
ここでは、中継装置３から端末１２へ送信されるコネクションペア作成応答メッセージが、データ転送直前の最後のメッセージとなり、図１６に示した中継装置３のＴＣＰシーケンス番号（図１６の１行目）は、データ転送開始直前の中継装置３のＴＣＰシーケンス番号を表している。そして、中継装置３のＡＣＫ番号が端末１２のデータ転送開始のＳｅｑ番号となり、中継装置のＳｅｑ番号に加えたものが、端末１２のデータ転送開始直前のＡＣＫ番号となる。従って、コネクション結合初期シーケンス番号は、Ｓｅｑ番号８００１番、ＡＣＫ番号６００１番となる。これ以降の動作（図１７−ｄ９、ｄ１０、ｄ１１参照）は、第１の実施例と同じである。
【０１０９】
本実施例によれば、前述した第１の実施例と同様の効果に加え、さらにデータ転送開始の識別子を利用して、ヘッダ切り替えのシーケンス番号を取得することで、容易性が向上する。
【０１１０】
なお、本実施例は、次のように構成してもよい。
【０１１１】
ａ）端末は、データ転送開始の際、データにデータ転送開始を示す識別子を記載する手段を有してもよい。中継手段は、識別子が記載されたデータを受信した際、データ転送開始と判断し、データのヘッダを書き換えて宛先端末へデータ転送を行ってもよい。
【０１１２】
ｂ）中継手段は、データ転送開始を示す識別子が記載されたデータを受信した際、データのヘッダを書き換えて宛先端末へデータ転送を行うためのシーケンス番号を取得してもよい。
【０１１３】
ｃ）中継手段は、データ転送開始を示す識別子が記載されたデータを受信した際、中継装置側のデータのシーケンス番号から、データのヘッダを書き換えて宛先端末へデータ転送を行うためのシーケンス番号を取得してもよい。
【０１１４】
ｄ）端末は、中継装置とＳＳＬセッション開設時に決定した暗号化方式で、データを暗号化しないように構成してもよい。
【０１１５】
なお、上記各実施例の通信システムを構成する中継装置、端末、及び通信管理装置は、上述した各部の機能を実現可能なものであれば、ハードウェア及びソフトウェア構成は特に限定されるものではない。例えば、各部の機能毎に独立して回路（又はプログラム部品）を構成するものでも、１つの回路内に一体的に構成するものでも、いずれのものであってもよい。各部の機能を主にコンピュータ（ＣＰＵ：Central Processing Unit）によるソフトウェア処理で実現する場合、そのソフトウェアを構成するプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に含まれる。
【産業上の利用可能性】
【０１１６】
本発明は、通信システム、中継装置及びそれらに用いる中継処理方法並びにそのプログラムの用途に適用できる。特に本発明は、ファイアウォール装置配下に接続する端末間での通信中継方法の用途に適用できる。
【図面の簡単な説明】
【０１１７】
【図１】本発明の第１の実施例に係る通信システムの全体構成を示す概略ブロック図である。
【図２】図１に示す中継装置の内部構成を示す概略ブロック図である。
【図３】図１に示す端末の内部構成を示す概略ブロック図である。
【図４】図１に示す通信管理装置の内部構成を示す概略ブロック図である。
【図５】図２に示すコネクション管理テーブルの詳細を示す図である。
【図６】第１の実施例に係る通信システムにおいて、通信管理装置への登録から通信要求までの動作を説明するシーケンス図である。
【図７】第１の実施例に係る通信システムにおいて、中継装置への接続からデータ通信までの動作を説明するシーケンス図である。
【図８】図４に示す端末／中継装置情報管理テーブルの詳細を示す図である。
【図９】本発明の第２の実施例に係る通信システムの全体構成を示す図である。
【図１０】図９に示す中継装置の内部構成を示す概略ブロック図である。
【図１１】図１０に示すコネクション管理テーブルの詳細を示す図である。
【図１２】第２の実施例に係る通信システムの動作を説明するシーケンス図である。
【図１３】本発明の第３の実施例に係る通信システムの全体構成を示す図である。
【図１４】図１３に示す中継装置の内部構成を示す概略ブロック図である。
【図１５】図１３に示す端末の内部構成を示す概略ブロック図である。
【図１６】図１４に示すコネクション管理テーブルの詳細を示す図である。
【図１７】第３の実施例に係る通信システムの動作を説明するシーケンス図である。
【図１８】関連技術に係る中継装置を利用したファイアウォール越え通信における中継方式として、ＴＣＰスプライシング方式を用いた場合の動作を説明するシーケンス図である。
【符号の説明】
【０１１８】
１、２、３  中継装置
１０、１１、１２、１３  端末
１００、１０１  ファイアウォール装置
１０００  通信管理装置
【図１】
2009055418.tif 000003
【図２】
2009055418.tif 000004
【図３】
2009055418.tif 000005
【図４】
2009055418.tif 000006
【図５】
2009055418.tif 000007
【図６】
2009055418.tif 000008
【図７】
2009055418.tif 000009
【図８】
2009055418.tif 000010
【図９】
2009055418.tif 000011
【図１０】
2009055418.tif 000012
【図１１】
2009055418.tif 000013
【図１２】
2009055418.tif 000014
【図１３】
2009055418.tif 000015
【図１４】
2009055418.tif 000016
【図１５】
2009055418.tif 000017
【図１６】
2009055418.tif 000018
【図１７】
2009055418.tif 000019
【図１８】
2009055418.tif 000020