(57)【要約】【課題】中継サーバを介して通信を行う端末間でのＴＣＰオプションの不整合によるスループットの低下を防ぐ。【解決手段】中継サーバ１２０が、受信したＳＹＮメッセージに含まれるＴＣＰオプション情報または当該ＴＣＰオプション情報に対応するＴＣＰコネクション待受け用アドレスをクライアント端末Ａ２００に通知し、クライアント端末Ａ２００が通知されたＴＣＰオプション情報または当該ＴＣＰオプション情報に対応するＴＣＰコネクション待受け用アドレスをクライアント端末Ｂ３００に対して通知した後、クライアント端末Ｂ３００が中継サーバ１２０のＴＣＰオプション情報に対応するＴＣＰコネクション待受け用アドレスに対する通信を要求し、中継サーバ１２０がＳＹＮメッセージの受信に利用したアドレスに応じて、ＳＹＮ  ＡＣＫメッセージに含めるＴＣＰオプション情報を決定する。【選択図】図１
2009164948.tif 000002
【特許請求の範囲】
【請求項１】
複数の端末と、前記端末が互いに送受信するパケットデータを中継するサーバとを有してなる通信システムにおいて、
前記サーバは、
前記端末からＴＣＰコネクションを構築するためのＳＹＮメッセージを受信した場合、該ＳＹＮメッセージの応答メッセージであるＳＹＮ  ＡＣＫメッセージを送信するコネクション構築メッセージ処理部と、
前記ＳＹＮメッセージの受信に利用するＩＰアドレスおよびポート番号からなるＴＣＰコネクション待受け用アドレスと、該ＴＣＰコネクション待受け用アドレスを利用して前記受信したＳＹＮメッセージに対して送信するＳＹＮ  ＡＣＫメッセージに含めるＴＣＰオプション情報とが対応付けられて登録されたアドレス−オプション対応管理テーブルと、
前記端末から受信したＳＹＮメッセージに含まれるＴＣＰオプション情報と、前記アドレス−オプション対応管理テーブルにて該ＴＣＰオプション情報と対応付けられて登録されたＴＣＰコネクション待受け用アドレスとの少なくとも一方を含むＴＣＰオプション情報通知メッセージを送信するオプション情報通知部とを有し、
前記サーバが前記端末から前記ＳＹＮメッセージを受信した場合、
前記コネクション構築メッセージ処理部は、前記アドレス−オプション対応管理テーブルに登録された前記ＳＹＮメッセージの受信に利用したＴＣＰコネクション待受け用アドレスに対応付けられたＴＣＰオプション情報を含むＳＹＮ  ＡＣＫメッセージを生成して前記ＳＹＮメッセージの送信元ＩＰアドレス、送信元ポート番号に対して送信し、
前記オプション情報通知部は、前記ＳＹＮメッセージに含まれるＴＣＰオプション情報と、前記アドレス−オプション対応管理テーブルにて該ＴＣＰオプション情報と対応付けられて登録されたＴＣＰコネクション待受け用アドレスとの少なくとも一方を含むＴＣＰオプション情報通知メッセージを前記ＳＹＮメッセージの送信元ＩＰアドレス、送信元ポート番号に対して送信することを特徴とする通信システム。
【請求項２】
請求項１に記載の通信システムにおいて、
前記端末は、前記サーバまたは前記サーバを介して前記サーバと接続された当該端末以外の端末との間で３Ｗａｙ−Ｈａｎｄｓｈａｋｅを行い、当該端末以外の前記端末との間で３Ｗａｙ−Ｈａｎｄｓｈａｋｅを行った場合、当該端末以外の前記端末に対して前記サーバのＴＣＰコネクション待受け用アドレスへの通信要求を送信し、前記行った３Ｗａｙ−Ｈａｎｄｓｈａｋｅに利用した前記サーバと前記端末とを接続するためのコネクションアドレスを利用して前記サーバが送信した前記ＴＣＰオプション通知メッセージを受信した場合、当該ＴＣＰオプション通知メッセージに含まれるＴＣＰオプション情報と、前記サーバのＴＣＰコネクション待受け用アドレスとの少なくとも一方を当該端末以外の前記端末へ通知することを特徴とする通信システム。
【請求項３】
請求項１または請求項２に記載の通信システムにおいて、
前記端末は、前記サーバを介して前記サーバと接続された当該端末以外の端末からＴＣＰオプション情報と、前記サーバのＴＣＰコネクション待受け用アドレスとのいずれか一方の通知を受け、前記ＴＣＰオプション情報の通知を受けた場合、該ＴＣＰオプション情報に対応する前記サーバのＴＣＰコネクション待受け用アドレスを把握し、前記把握した前記サーバのＴＣＰコネクション待受け用アドレスまたは当該端末以外の前記端末との間で３Ｗａy−Ｈａｎｄｓｈａｋｅを行い、当該端末以外の前記端末との間で３Ｗａｙ−Ｈａｎｄｓｈａｋｅを行った場合、当該端末以外の前記端末に対して前記把握した前記サーバのＴＣＰコネクション待受け用アドレスへの通信要求を送信し、前記行った３Ｗａｙ−Ｈａｎｄｓｈａｋｅに利用したコネクションアドレスを利用して当該端末以外の前記端末へ送信したいデータを送信することを特徴とする通信システム。
【請求項４】
複数の端末が互いに送受信するパケットデータを中継するサーバであって、
前記端末からＴＣＰコネクションを構築するためのＳＹＮメッセージを受信した場合、該ＳＹＮメッセージの応答メッセージであるＳＹＮ  ＡＣＫメッセージを送信するコネクション構築メッセージ処理部と、
前記ＳＹＮメッセージの受信に利用するＩＰアドレスおよびポート番号からなるＴＣＰコネクション待受け用アドレスと、該ＴＣＰコネクション待受け用アドレスを利用して前記受信したＳＹＮメッセージに対して送信するＳＹＮ  ＡＣＫメッセージに含めるＴＣＰオプション情報とが対応付けられて登録されたアドレス−オプション対応管理テーブルと、
前記端末から受信したＳＹＮメッセージに含まれるＴＣＰオプション情報と、前記アドレス−オプション対応管理テーブルにて該ＴＣＰオプション情報と対応付けられて登録されたＴＣＰコネクション待受け用アドレスとの少なくとも一方を含むＴＣＰオプション情報通知メッセージを送信するオプション情報通知部とを有し、
当該サーバが前記端末から前記ＳＹＮメッセージを受信した場合、
前記コネクション構築メッセージ処理部は、前記アドレス−オプション対応管理テーブルに登録された前記ＳＹＮメッセージの受信に利用したＴＣＰコネクション待受け用アドレスに対応付けられたＴＣＰオプション情報を含むＳＹＮ  ＡＣＫメッセージを生成して前記ＳＹＮメッセージの送信元ＩＰアドレス、送信元ポート番号に対して送信し、
前記オプション情報通知部は、前記ＳＹＮメッセージに含まれるＴＣＰオプション情報と、前記アドレス−オプション対応管理テーブルにて該ＴＣＰオプション情報と対応付けられて登録されたＴＣＰコネクション待受け用アドレスとの少なくとも一方を含むＴＣＰオプション情報通知メッセージを前記ＳＹＮメッセージの送信元ＩＰアドレス、送信元ポート番号に対して送信するサーバ。
【請求項５】
パケットデータを送受信し、請求項４に記載のサーバと接続された端末であって、
前記サーバまたは前記サーバを介して前記サーバと接続された当該端末以外の端末との間で３Ｗａｙ−Ｈａｎｄｓｈａｋｅを行い、当該端末以外の前記端末との間で３Ｗａｙ−Ｈａｎｄｓｈａｋｅを行った場合、当該端末以外の前記端末に対して前記サーバのＴＣＰコネクション待受け用アドレスへの通信要求を送信し、前記行った３Ｗａｙ−Ｈａｎｄｓｈａｋｅに利用した前記サーバと当該端末とを接続するためのコネクションアドレスを利用して前記サーバが送信したＴＣＰオプション通知メッセージを受信した場合、当該ＴＣＰオプション通知メッセージに含まれるＴＣＰオプション情報と、前記サーバのＴＣＰコネクション待受け用アドレスとの少なくとも一方を当該端末以外の前記端末へ通知する端末。
【請求項６】
パケットデータを送受信し、請求項４に記載のサーバと接続された端末であって、
前記サーバを介して前記サーバと接続された当該端末以外の端末からＴＣＰオプション情報と、前記サーバのＴＣＰコネクション待受け用アドレスとのいずれか一方の通知を受け、前記ＴＣＰオプション情報の通知を受けた場合、該ＴＣＰオプション情報に対応する前記サーバのＴＣＰコネクション待受け用アドレスを把握し、前記把握した前記サーバのＴＣＰコネクション待受け用アドレスまたは当該端末以外の前記端末との間で３Ｗａy−Ｈａｎｄｓｈａｋｅを行い、当該端末以外の前記端末との間で３Ｗａｙ−Ｈａｎｄｓｈａｋｅを行った場合、当該端末以外の前記端末に対して前記把握した前記サーバのＴＣＰコネクション待受け用アドレスへの通信要求を送信し、前記行った３Ｗａｙ−Ｈａｎｄｓｈａｋｅに利用したコネクションアドレスを利用して当該端末以外の前記端末へ送信したいデータを送信する端末。
【請求項７】
請求項５に記載の端末において、さらに、
前記サーバを介して前記サーバと接続された当該端末以外の端末からＴＣＰオプション情報と、前記サーバのＴＣＰコネクション待受け用アドレスとのいずれか一方の通知を受け、前記ＴＣＰオプション情報の通知を受けた場合、該ＴＣＰオプション情報に対応する前記サーバのＴＣＰコネクション待受け用アドレスを把握し、前記把握した前記サーバのＴＣＰコネクション待受け用アドレスまたは当該端末以外の前記端末との間で３Ｗａy−Ｈａｎｄｓｈａｋｅを行い、当該端末以外の前記端末との間で３Ｗａｙ−Ｈａｎｄｓｈａｋｅを行った場合、当該端末以外の前記端末に対して前記把握した前記サーバのＴＣＰコネクション待受け用アドレスへの通信要求を送信し、前記行った３Ｗａｙ−Ｈａｎｄｓｈａｋｅに利用したコネクションアドレスを利用して当該端末以外の前記端末へ送信したいデータを送信することを特徴とする端末。
【請求項８】
複数の端末と、前記端末が互いに送受信するパケットデータを中継するサーバとを有してなる通信システムにおけるパケット転送方法であって、
前記サーバが、前記端末からＴＣＰコネクションを構築するためのＳＹＮメッセージを受信した場合、前記ＳＹＮメッセージの受信に利用したＩＰアドレスおよびポート番号からなるＴＣＰコネクション待受け用アドレスと対応付けられたＴＣＰオプション情報を含む、該ＴＣＰコネクション待受け用アドレスを利用して受信したＳＹＮメッセージに対して送信するＳＹＮ  ＡＣＫメッセージを生成して前記ＳＹＮメッセージの送信元ＩＰアドレス、送信元ポート番号に対して送信する処理と、
前記サーバが、前記ＳＹＮメッセージに含まれるＴＣＰオプション情報と、該ＴＣＰオプション情報と対応付けられたＴＣＰコネクション待受け用アドレスとの少なくとも一方を含むＴＣＰオプション情報通知メッセージを前記ＳＹＮメッセージの送信元ＩＰアドレス、送信元ポート番号に対して送信する処理とを有するパケット転送方法。
【請求項９】
請求項８に記載のパケット転送方法において、
前記端末が、前記サーバまたは前記サーバを介して前記サーバと接続された当該端末以外の端末との間で３Ｗａｙ−Ｈａｎｄｓｈａｋｅを行う処理と、
前記端末が、当該端末以外の前記端末との間で３Ｗａｙ−Ｈａｎｄｓｈａｋｅを行った場合、当該端末以外の前記端末に対して前記サーバのＴＣＰコネクション待受け用アドレスへの通信要求を送信する処理と、
前記端末が、前記行った３Ｗａｙ−Ｈａｎｄｓｈａｋｅに利用した前記サーバと前記端末とを接続するためのコネクションアドレスを利用して前記サーバが送信した前記ＴＣＰオプション通知メッセージを受信した場合、当該ＴＣＰオプション通知メッセージに含まれるＴＣＰオプション情報と、前記サーバのＴＣＰコネクション待受け用アドレスとの少なくとも一方を当該端末以外の前記端末へ通知する処理とを有することを特徴とするパケット転送方法。
【請求項１０】
請求項８または請求項９に記載のパケット転送方法において、
前記端末が、前記サーバを介して前記サーバと接続された当該端末以外の端末からＴＣＰオプション情報の通知を受けた場合、該ＴＣＰオプション情報に対応する前記サーバのＴＣＰコネクション待受け用アドレスを把握する処理と、
前記端末が、前記把握した前記サーバのＴＣＰコネクション待受け用アドレスまたは当該端末以外の前記端末との間で３Ｗａy−Ｈａｎｄｓｈａｋｅを行う処理と、
前記端末が、当該端末以外の前記端末との間で３Ｗａｙ−Ｈａｎｄｓｈａｋｅを行った場合、当該端末以外の前記端末に対して前記把握した前記サーバのＴＣＰコネクション待受け用アドレスへの通信要求を送信する処理と、
前記端末が、前記行った３Ｗａｙ−Ｈａｎｄｓｈａｋｅに利用したコネクションアドレスを利用して当該端末以外の前記端末へ送信したいデータを送信する処理とを有することを特徴とするパケット転送方法。
【請求項１１】
複数の端末が互いに送受信するパケットデータを中継するサーバに実行させるプログラムであって、
前記端末からＴＣＰコネクションを構築するためのＳＹＮメッセージを受信した場合、前記ＳＹＮメッセージの受信に利用したＩＰアドレスおよびポート番号からなるＴＣＰコネクション待受け用アドレスと対応付けられたＴＣＰオプション情報を含む、該ＴＣＰコネクション待受け用アドレスを利用して受信したＳＹＮメッセージに対して送信するＳＹＮ  ＡＣＫメッセージを生成して前記ＳＹＮメッセージの送信元ＩＰアドレス、送信元ポート番号に対して送信する手順と、
前記ＳＹＮメッセージに含まれるＴＣＰオプション情報と、該ＴＣＰオプション情報と対応付けられたＴＣＰコネクション待受け用アドレスとの少なくとも一方を含むＴＣＰオプション情報通知メッセージを前記ＳＹＮメッセージの送信元ＩＰアドレス、送信元ポート番号に対して送信する手順とを前記サーバに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットの送受信を行う通信システム、サーバ、端末、パケット転送方法およびプログラムに関し、特にクライアント端末間で構築されるＴＣＰコネクションを終端せずにパケットの送受信を行う通信システム、サーバ、端末、パケット転送方法およびプログラムに関する。
【背景技術】
【０００２】
近年企業や部門をまたがったコラボレーションが活発化するなど業務形態が多様化しており、異なる企業ＬＡＮや部門ＬＡＮに接続しているクライアント端末同士（すなわち異なるプライベートネットワークに接続しているクライアント端末同士）の通信へのニーズが急速に高まっている。こうした背景から近年異なるプライベートネットワークに接続するクライアント端末同士の通信を可能にする方式が提案されている。従来方式はグローバルネットワークに設置された中継サーバを介することによって、異なるプライベートネットワークに接続しているクライアント端末同士の通信を実現している。こうした方式を採用している代表的なシステムとしてはＳｏｆｔＥｔｈｅｒ、ＰａｃｋｅｔｉｘＶＰＮやＯｐｅｎＶＰＮなどが挙げられる。
【０００３】
通常、プライベートネットワークにはグローバルネットワークからの通信を遮断するファイヤウォールが設置されている。ファイヤウォールはプライベートネットワークからグローバルネットワークへ向けて構築が開始される特定のＴＣＰコネクション上の通信のみ許可する設定がなされているため（通常はＷｅｂ閲覧用通信に用いられる宛先ポート８０番のＴＣＰ通信（すなわちＨＴＴＰ通信）及び宛先ポート４４３番のＴＣＰ通信（すなわちＨＴＴＰＳ通信））、従来方式ではまず、プライベートネットワーク上のクライアント端末から中継サーバに対してＴＣＰコネクションの構築を開始する。クライアント端末と中継サーバの間でＴＣＰコネクションの構築が完了した後はクライアント端末と中継サーバの間で双方向の通信が行える状態なる。その後、クライアント端末は通信相手のクライアント端末に渡したいデータを中継サーバとの間に構築したＴＣＰコネクションを利用して送信する。中継サーバは受信したデータを通信相手のクライアント端末との間に構築したＴＣＰコネクションを利用して送信する。
【０００４】
以下こうした方式をＦｉｒｅｗａｌｌ透過通信方式と呼ぶ。従来のＦｉｒｅｗａｌｌ透過通信方式では中継サーバがクライアント端末間でパケットの転送を行う際ＴＣＰコネクションを終端していたため、中継サーバにパケットの再送処理やフロー制御処理に伴う負荷がかかっていた。
【０００５】
一方で、ＴＣＰコネクション上を流れるデータの転送方式として、前述のように中継サーバにおいて処理負荷の高いＴＣＰコネクションの終端処理をすることなく、パケットのヘッダを書き換えて転送するＴＣＰスプライシング方式がある（非特許文献１参照）。
【０００６】
図６に非特許文献1に記載されているパケット転送方式を示す。図６ではクライアント端末Ａ１０００、Ｂ２０００と中継サーバ３０００が示されており、クライアント端末Ａ１０００、Ｂ２０００は中継サーバ３０００を介して通信を行う。クライアント端末Ａ１０００はまず中継サーバ３０００に対してＳＹＮメッセージを送信し（Ｓ１０００）、３Ｗａｙ−Ｈａｎｄｓｈａｋｅを行い（Ｓ１０００〜Ｓ３０００）、ＴＣＰコネクションを中継サーバ３０００に対して構築する。中継サーバ３０００は内部のパケット転送テーブル３１００にクライアント端末Ａ１０００との間で構築したＴＣＰコネクションに関する情報を登録する。また、クライアント端末Ａ１０００とのＴＣＰコネクション構築完了後、クライアント端末Ｂ２０００に対してＳＹＮメッセージを送信し（Ｓ４０００）、３Ｗａｙ−Ｈａｎｄｓｈａｋｅを行って（Ｓ４０００〜Ｓ６０００）ＴＣＰコネクションをクライアント端末Ｂ２０００に対して構築する。クライアント端末Ａ１０００、Ｂ２０００双方との間でＴＣＰコネクションが構築されたのち、中継サーバ３０００は一方のＴＣＰコネクションから受信したパケットの他方のコネクションへの転送を開始する（Ｓ７０００）。
【０００７】
パケットの転送は具体的に以下のように行う（Ｓ８０００〜Ｓ９０００）。図６の例ではパケット転送テーブル３１００にはクライアント端末Ａ１０００、Ｂ２０００との間に構築した２つのＴＣＰコネクションについて、
・クライアント側ＩＰアドレス、ポート番号
・中継サーバ側ＩＰアドレス、ポート番号
・転送開始前までにクライアント端末及び中継サーバが当該ＴＣＰコネクションを利用してどのＳｅｑ番号のパケットまで送信したか
が登録されており、中継サーバ３０００は一方のＴＣＰコネクションから受信したパケットのＳｅｑ番号、Ａｃｋ番号、送信元および宛先ＩＰアドレス、ポート番号（および書き変えに伴うチェックサム再計算）を書き換え、他方のＴＣＰコネクションへパケットに転送する。中継サーバ３０００はＴＣＰコネクションを終端した場合に必要なパケットロスに備えた再送用パケットのバッファリング処理や、受信したパケットのＳｅｑ番号やＡｃｋ番号の解析によるパケットロスの検出処理、パケットロス検出に伴うパケットの再送処理、フロー制御処理等を行わない。これらの処理は全てクライアント端末で行われる。したがって非特許文献１に記載されるパケット転送方式では従来方式に比べ中継サーバの負荷が軽減される。
【非特許文献１】D. A. Maltz, et al., “TCP Splice application layer proxy performance,” Journal of High Speed Networks, Volume 8, Issue 3, 1999, p.225-240
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述した非特許文献１の方式の課題は、中継サーバを介して互いに通信を行うクライアント端末間のＴＣＰオプションの整合を考慮していない点にある。
【０００９】
通常、ＴＣＰではオプションとして最大セグメントサイズ（以下、ＭＳＳ）、ウィンドウスケール（以下、ＷＳ）、選択的受信確認（以下、ＳＡＣＫ）など様々なものがある。こうしたオプションは３Ｗａｙ−ＨａｎｄＳｈａｋｅ時にＳＹＮメッセージおよびＳＹＮ  ＡＣＫメッセージによってＴＣＰコネクションを終端する双方の端末間で整合される。たとえばＭＳＳについては、双方ＳＹＮメッセージ、ＳＹＮ  ＡＣＫメッセージに利用したいＭＳＳ値を挿入して送信し、お互いが提示したＭＳＳ値の小さい方をＴＣＰコネクション構築後の通信に利用する。また、ＷＳについてはＷＳを利用するか否かのフラグ（以下、ＷＳ利用フラグ）及び利用する場合のシフトカウントをＳＹＮメッセージ、ＳＹＮ  ＡＣＫメッセージに挿入し、双方ともＷＳ利用フラグがＯｎの場合コネクション構築後の通信においてＷＳを利用し、ＳＹＮメッセージ、ＳＹＮ  ＡＣＫメッセージにより相手から通知されたシフトカウント値を利用して相手からの広告ウィンドウサイズを計算する。ＳＡＣＫについても同様にＳＡＣＫを利用するか否かのフラグ（以下、ＳＡＣＫ利用フラグ）をＳＹＮメッセージ、ＳＹＮ  ＡＣＫメッセージに挿入し、双方ともＳＡＣＫ利用フラグがＯｎの場合コネクション構築後の通信においてＳＡＣＫを利用する。
【００１０】
非特許文献１の方式では、３Ｗａｙ−ＨａｎｄＳｈａｋｅ後の再送処理やフロー制御等はクライアント端末と中継サーバではなく、クライアント端末間で行われる。このためＴＣＰオプションはクライアント端末間で整合しておく必要がある。
【００１１】
しかし、非特許文献１には３Ｗａｙ−Ｈａｎｄｓｈａｋｅがクライアント端末と中継サーバの間で行われることしか記載されておらず、クライアント端末間のＴＣＰオプションの整合については触れられていない。例えば図６においてクライアント端末Ａ１０００、Ｂ２０００共に３Ｗａｙ−ＨａｎｄＳｈａｋｅ時にＷＳ利用フラグをＯｎにしたＳＹＮメッセージおよびＳＹＮ  ＡＣＫメッセージを中継サーバ３０００に送信したとしても、中継サーバ３０００がＷＳ利用フラグをオフにしたＳＹＮ  ＡＣＫメッセージおよびＳＹＮメッセージをクライアント端末に送信すると、クライアント端末は中継サーバ３０００との間で構築したＴＣＰコネクションにおいてＷＳを利用せずにフロー制御を行うことになる。このため、ＷＳを利用した場合と比較してクライアント端末間の通信スループットが低くなる可能性がある。また、中継サーバがＷＳ利用フラグをオンにしたＳＹＮ  ＡＣＫメッセージおよびＳＹＮメッセージをクライアント端末に送信すると、一方のクライアント端末ではＷＳ利用フラグがオン、他方のクライアント端末ではＷＳ利用フラグがオフとなっている場合、一方のクライアント端末ではＷＳを利用してフロー制御を行おうとし、他方のクライアント端末ではＷＳを利用せずにフロー制御を行おうとするため、クライアント端末間で正しくフロー制御が行えなくなる。ＳＡＣＫについても同様のことが言える。特にＷＳやＳＡＣＫはＴＣＰコネクションのスループットに与える影響が大きく、これらのオプションが整合できなかった場合にはスループットが大幅に低下する可能性がある。
【００１２】
上記の課題は従来のＦｉｒｅｗａｌｌ透過通信方式のように通信を行う二つのクライアント端末の双方が中継サーバに対してＴＣＰコネクションの構築を開始するケースにも当てはまる。
【００１３】
本発明の目的は、中継サーバに対して構築したＴＣＰコネクションを利用して互いに通信する２つのクライアント端末の双方が中継サーバに対してＴＣＰコネクションの構築を開始する場合において、クライアント端末間のＴＣＰオプションを整合させる通信システム、サーバ、端末、パケット転送方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１４】
上記目的を達成するために本発明は、
複数の端末と、前記端末が互いに送受信するパケットデータを中継するサーバとを有してなる通信システムにおいて、
前記サーバは、
前記端末からＴＣＰコネクションを構築するためのＳＹＮメッセージを受信した場合、該ＳＹＮメッセージの応答メッセージであるＳＹＮ  ＡＣＫメッセージを送信するコネクション構築メッセージ処理部と、
前記ＳＹＮメッセージの受信に利用するＩＰアドレスおよびポート番号からなるＴＣＰコネクション待受け用アドレスと、該ＴＣＰコネクション待受け用アドレスを利用して前記受信したＳＹＮメッセージに対して送信するＳＹＮ  ＡＣＫメッセージに含めるＴＣＰオプション情報とが対応付けられて登録されたアドレス−オプション対応管理テーブルと、
前記端末から受信したＳＹＮメッセージに含まれるＴＣＰオプション情報と、前記アドレス−オプション対応管理テーブルにて該ＴＣＰオプション情報と対応付けられて登録されたＴＣＰコネクション待受け用アドレスとの少なくとも一方を含むＴＣＰオプション情報通知メッセージを送信するオプション情報通知部とを有し、
前記サーバが前記端末から前記ＳＹＮメッセージを受信した場合、
前記コネクション構築メッセージ処理部は、前記アドレス−オプション対応管理テーブルに登録された前記ＳＹＮメッセージの受信に利用したＴＣＰコネクション待受け用アドレスに対応付けられたＴＣＰオプション情報を含むＳＹＮ  ＡＣＫメッセージを生成して前記ＳＹＮメッセージの送信元ＩＰアドレス、送信元ポート番号に対して送信し、
前記オプション情報通知部は、前記ＳＹＮメッセージに含まれるＴＣＰオプション情報と、前記アドレス−オプション対応管理テーブルにて該ＴＣＰオプション情報と対応付けられて登録されたＴＣＰコネクション待受け用アドレスとの少なくとも一方を含むＴＣＰオプション情報通知メッセージを前記ＳＹＮメッセージの送信元ＩＰアドレス、送信元ポート番号に対して送信することを特徴とする。
【００１５】
また、複数の端末が互いに送受信するパケットデータを中継するサーバであって、
前記端末からＴＣＰコネクションを構築するためのＳＹＮメッセージを受信した場合、該ＳＹＮメッセージの応答メッセージであるＳＹＮ  ＡＣＫメッセージを送信するコネクション構築メッセージ処理部と、
前記ＳＹＮメッセージの受信に利用するＩＰアドレスおよびポート番号からなるＴＣＰコネクション待受け用アドレスと、該ＴＣＰコネクション待受け用アドレスを利用して前記受信したＳＹＮメッセージに対して送信するＳＹＮ  ＡＣＫメッセージに含めるＴＣＰオプション情報とが対応付けられて登録されたアドレス−オプション対応管理テーブルと、
前記端末から受信したＳＹＮメッセージに含まれるＴＣＰオプション情報と、前記アドレス−オプション対応管理テーブルにて該ＴＣＰオプション情報と対応付けられて登録されたＴＣＰコネクション待受け用アドレスとの少なくとも一方を含むＴＣＰオプション情報通知メッセージを送信するオプション情報通知部とを有し、
当該サーバが前記端末から前記ＳＹＮメッセージを受信した場合、
前記コネクション構築メッセージ処理部は、前記アドレス−オプション対応管理テーブルに登録された前記ＳＹＮメッセージの受信に利用したＴＣＰコネクション待受け用アドレスに対応付けられたＴＣＰオプション情報を含むＳＹＮ  ＡＣＫメッセージを生成して前記ＳＹＮメッセージの送信元ＩＰアドレス、送信元ポート番号に対して送信し、
前記オプション情報通知部は、前記ＳＹＮメッセージに含まれるＴＣＰオプション情報と、前記アドレス−オプション対応管理テーブルにて該ＴＣＰオプション情報と対応付けられて登録されたＴＣＰコネクション待受け用アドレスとの少なくとも一方を含むＴＣＰオプション情報通知メッセージを前記ＳＹＮメッセージの送信元ＩＰアドレス、送信元ポート番号に対して送信する。
【００１６】
また、パケットデータを送受信し、前記パケットデータを中継するサーバと接続された端末であって、
前記サーバまたは前記サーバを介して前記サーバと接続された当該端末以外の端末との間で３Ｗａｙ−Ｈａｎｄｓｈａｋｅを行い、当該端末以外の前記端末との間で３Ｗａｙ−Ｈａｎｄｓｈａｋｅを行った場合、当該端末以外の前記端末に対して前記サーバのＴＣＰコネクション待受け用アドレスへの通信要求を送信し、前記行った３Ｗａｙ−Ｈａｎｄｓｈａｋｅに利用した前記サーバと当該端末とを接続するためのコネクションアドレスを利用して前記サーバが送信したＴＣＰオプション通知メッセージを受信した場合、当該ＴＣＰオプション通知メッセージに含まれるＴＣＰオプション情報と、前記サーバのＴＣＰコネクション待受け用アドレスとの少なくとも一方を当該端末以外の前記端末へ通知する。
【００１７】
また、複数の端末と、前記端末が互いに送受信するパケットデータを中継するサーバとを有してなる通信システムにおけるパケット転送方法であって、
前記サーバが、前記端末からＴＣＰコネクションを構築するためのＳＹＮメッセージを受信した場合、前記ＳＹＮメッセージの受信に利用したＩＰアドレスおよびポート番号からなるＴＣＰコネクション待受け用アドレスと対応付けられたＴＣＰオプション情報を含む、該ＴＣＰコネクション待受け用アドレスを利用して受信したＳＹＮメッセージに対して送信するＳＹＮ  ＡＣＫメッセージを生成して前記ＳＹＮメッセージの送信元ＩＰアドレス、送信元ポート番号に対して送信する処理と、
前記サーバが、前記ＳＹＮメッセージに含まれるＴＣＰオプション情報と、該ＴＣＰオプション情報と対応付けられたＴＣＰコネクション待受け用アドレスとの少なくとも一方を含むＴＣＰオプション情報通知メッセージを前記ＳＹＮメッセージの送信元ＩＰアドレス、送信元ポート番号に対して送信する処理とを有する。
【００１８】
また、複数の端末が互いに送受信するパケットデータを中継するサーバに実行させるプログラムであって、
前記端末からＴＣＰコネクションを構築するためのＳＹＮメッセージを受信した場合、前記ＳＹＮメッセージの受信に利用したＩＰアドレスおよびポート番号からなるＴＣＰコネクション待受け用アドレスと対応付けられたＴＣＰオプション情報を含む、該ＴＣＰコネクション待受け用アドレスを利用して受信したＳＹＮメッセージに対して送信するＳＹＮ  ＡＣＫメッセージを生成して前記ＳＹＮメッセージの送信元ＩＰアドレス、送信元ポート番号に対して送信する手順と、
前記ＳＹＮメッセージに含まれるＴＣＰオプション情報と、該ＴＣＰオプション情報と対応付けられたＴＣＰコネクション待受け用アドレスとの少なくとも一方を含むＴＣＰオプション情報通知メッセージを前記ＳＹＮメッセージの送信元ＩＰアドレス、送信元ポート番号に対して送信する手順とを前記サーバに実行させる。
【発明の効果】
【００１９】
以上説明したように本発明においては、ＳＹＮメッセージの受信に利用したＴＣＰコネクション待受けアドレスと対応付けられたＴＣＰオプション情報を含むＳＹＮ  ＡＣＫメッセージを生成し、当該ＳＹＮ  ＡＣＫメッセージをＳＹＮメッセージの送信元ＩＰアドレス、送信元ポート番号へ送信し、受信したＳＹＮメッセージに含まれるＴＣＰオプション情報と当該ＴＣＰオプション情報と対応付けられたＴＣＰコネクション待受けアドレスとの少なくとも一方を含むＴＣＰオプション情報通知メッセージをＳＹＮメッセージの送信元ＩＰアドレス、送信元ポート番号へ送信する構成としたため、中継サーバを介して通信を行う端末間でのＴＣＰオプションの不整合によるスループットの低下を防ぐことができる。
【発明を実施するための最良の形態】
【００２０】
以下に、本発明の実施の形態における通信システムの構成について説明する。
【００２１】
図１に本形態における通信システムの構成例を示す。本形態における通信システムは中継サーバ１２０、クライアント端末Ａ２００、クライアント端末Ｂ３００、ファイヤウォール４００、プライベートネットワーク５００、インターネット６００、Ｗｅｂ  Ｐｒｏｘｙ７０１，７０２から成る。
【００２２】
ファイヤウォール４００はプライベートネットワーク５００に対する外部からの接続を遮断する装置であり、例えばプライベートネットワーク５００に接続する端末（クライアント端末Ａ２００、クライアント端末Ｂ３００など）からインターネット６００に接続する端末に対して構築されたＴＣＰコネクション上の通信のみ許可する設定がなされている。
【００２３】
クライアント端末Ａ２００、クライアント端末Ｂ３００は中継サーバ１２０を介して通信を行う。クライアント端末Ａ２００、クライアント端末Ｂ３００は中継サーバ１２０と直接ＴＣＰコネクションを構築することはできず、一旦Ｗｅｂ  Ｐｒｏｘｙ７０１，７０２とＴＣＰコネクションを構築した後、Ｗｅｂ  Ｐｒｏｘｙ７０１，７０２が中継サーバ１２０に対してＴＣＰコネクションを構築する。クライアント端末は通信相手のクライアント端末に送信したいデータをＷｅｂ  Ｐｒｏｘｙ７０１，７０２との間で構築したＴＣＰコネクションを利用して送信し、Ｗｅｂ  Ｐｒｏｘｙ７０１，７０２が当該ＴＣＰコネクションで受信したデータを中継サーバ１２０との間で構築したＴＣＰコネクションへ転送する。中継サーバ１２０は、クライアント端末が送信したデータをＷｅｂ  Ｐｒｏｘｙ７０１，７０２との間に構築したＴＣＰコネクションによって受信する。
【００２４】
中継サーバ１２０は転送テーブル１０１、コネクション構築メッセージ処理部１２４、アドレス−オプション対応管理テーブル１２６、オプション情報通知部１２１、パケット転送部１０４から成る。
＜転送テーブル１０１＞
転送テーブル１０１には中継サーバ１２０が受信したデータパケットの転送を行うのに必要な情報が登録される。具体的に中継サーバ１２０はデータパケットを受信すると、データパケットの転送先を判断しパケットヘッダの書き換え処理を行うが、これら転送先判断と書き換え処理に必要な情報が互いに通信を行うクライアント端末のペア毎に登録される。
【００２５】
図２に転送テーブル１０１の例を示す。図２を参照すると、転送テーブル１０１にはエントリ番号、コネクションアドレス情報、転送開始時Ｓｅｑ番号情報が登録されている。
【００２６】
コネクションアドレス情報には、中継サーバ１２０がクライアント端末間の通信を中継する際に利用するＴＣＰコネクションのクライアント端末側、中継サーバ１２０側双方のＩＰアドレス、ポート番号が登録される。なお、クライアント端末側に登録されるＩＰアドレス、ポート番号は、クライアント端末自身のＩＰアドレス、ポート番号とは限らない。図１の例ではクライアント端末Ａ２００側のＷｅｂ  Ｐｒｏｘｙ７０１及びクライアント端末Ｂ３００側のＷｅｂ  Ｐｒｏｘｙ７０２のＩＰアドレス、ポート番号がクライアント端末側のコネクションアドレス情報として登録される。
【００２７】
転送開始時Ｓｅｑ番号情報には、一方のコネクションから受信したデータパケットを他方のコネクションへ転送する処理を開始した際に、クライアント端末側及び中継サーバ１２０がどのＳｅｑ番号までのパケットを送信したかが登録される。図２のエントリ１２３４５６には、コネクション１側の情報として転送開始までにクライアント端末Ａ２００側のＷｅｂ  Ｐｒｏｘｙ７０１がＳｅｑ番号：ａ＋１までのパケットを、中継サーバ１２０がＳｅｑ番号：ｂ＋１までのパケットをそれぞれ送信した旨登録されている。
＜オプション情報通知部１２１＞
オプション情報通知部１２１は、クライアント端末と中継サーバ１２０との間でＴＣＰコネクションを終端し、中継サーバ１２０に対して直接ＳＹＮメッセージを送信する端末（以下、ＳＹＮメッセージ送信端末と呼ぶ。図１の例ではＷｅｂ  Ｐｒｏｘｙ７０１，７０２がＳＹＮメッセージ送信端末）が中継サーバ１２０に対して提示したＴＣＰオプション情報をクライアント端末に通知する（以下、クライアント端末へのＴＣＰオプション情報の通知に利用するメッセージをＴＣＰオプション情報通知メッセージと呼ぶ）。例えば図１に示す構成の場合、オプション情報通知部１２１はＷｅｂ  Ｐｒｏｘｙ７０１がクライアント端末Ａ２００からの要求に従って中継サーバ１２０に対して送信したＳＹＮメッセージに記載されるＴＣＰオプション情報をクライアント端末Ａ２００に通知する。
【００２８】
オプション情報通知部１２１は中継サーバ１２０がＳＹＮメッセージ送信端末と３ＷＨメッセージの送受信を完了して以降（直後とは限らない）、当該３ＷＨメッセージの送受信に利用したコネクションアドレスを利用してＴＣＰオプション通知メッセージを送信する。クライアント端末と中継サーバ１２０の間でＴＣＰコネクションが終端されているため、中継サーバ１２０はＳＹＮメッセージ送信端末から受信したＳＹＮメッセージがどのクライアント端末からの要求により送信されたものかを判断することができないが、ＳＹＮメッセージ送信端末との３ＷＨメッセージの送受信に利用したコネクションアドレスを利用することにより、ＴＣＰオプション通知メッセージを要求元クライアント端末まで届けることができる。
＜コネクション構築メッセージ処理部１２４＞
コネクション構築メッセージ処理部１２４は、ＳＹＮメッセージ送信端末とＴＣＰコネクションを構築するためのメッセージ、すなわち３Ｗａｙ−Ｈａｎｄｓｈａｋｅ（以下３ＷＨ）メッセージの送受信を行う。また、転送テーブル１０１にデータパケットの転送を行うＴＣＰコネクションのコネクションアドレスのペアを登録する。さらに、パケット転送部１０４に対してクライアント端末から受信したパケットの転送開始のタイミングを指示するとともに、転送開始前までに、クライアント端末と中継サーバ１２０が３ＷＨメッセージの送受信に利用したコネクションアドレスを使って、それぞれＳｅｑ番号が何番のデータパケットまで送信したかを転送テーブル１０１に記録しておく。以下具体的な処理内容を説明する。
（３ＷＨメッセージの送受信）
まず、３ＷＨメッセージの送受信処理について説明する。中継サーバ１２０はＳＹＮメッセージの受信に利用するＩＰアドレス、ポート番号の組（以下、ＴＣＰコネクション待受けアドレス）を複数保持しており、コネクション構築メッセージ処理部１２４はＳＹＮメッセージ送信端末からＳＹＮメッセージを受信すると、ＳＹＮメッセージの受信に利用したＴＣＰコネクション待受けアドレスに応じて当該ＳＹＮメッセージに対して送信するＳＹＮ  ＡＣＫメッセージに含めるＴＣＰオプション情報を決定する。ＴＣＰコネクション待受けアドレスに応じてどのようなＴＣＰオプション情報をＳＹＮ  ＡＣＫメッセージに含めるかは後述するアドレス-オプション対応管理テーブル１２６に予め登録されており、コネクション構築メッセージ処理部１２４はアドレス-オプション対応管理テーブル１２６を参照してＳＹＮ  ＡＣＫメッセージに含めるＴＣＰオプション情報を決定する。送信するＳＹＮ  ＡＣＫメッセージの送信元アドレスは当該ＳＹＮ  ＡＣＫメッセージに対応するＳＹＮメッセージの受信に利用したＴＣＰコネクション待受けアドレスとし、宛先アドレスはＳＹＮメッセージの送信元アドレスとする。
（コネクションアドレスペアの登録）
次にコネクションアドレスペアの転送テーブル１０１への登録について説明する。コネクション構築メッセージ処理部１２４はＳＹＮメッセージ送信端末と３ＷＨメッセージの送受信を完了した後、３ＷＨメッセージ送受信に利用したコネクションアドレスを利用してコネクションペア通知メッセージを受信する。コネクションペア通知メッセージには、データパケットを転送するコネクションアドレスのペアを一意に識別するペアＩＤが含まれている。コネクション構築メッセージ処理部１２４はコネクションペア通知メッセージを受信すると、受信に利用したコネクションアドレスとペアＩＤを転送テーブル１０１に登録する。
（転送開始タイミングの指示）
次に、転送開始タイミングの指示について説明する。コネクション構築メッセージ処理部１２４は同一のペアＩＤを持つコネクションペア通知メッセージを２つの異なるコネクションアドレスから受信した後（直後とは限らない）、パケット転送部１０４に対してデータパケットの転送開始を指示する。
【００２９】
また、データパケット転送開始直前までに転送テーブル１０１に登録したコネクションアドレスを利用してＳＹＮメッセージ送信端末及び中継サーバ１２０がどのＳｅｑ番号のパケットまで送信したかを転送テーブル１０１に登録しておく。
＜アドレス−オプション対応管理テーブル１２６＞
アドレス−オプション対応管理テーブル１２６には、コネクション構築メッセージ処理部１２４が送信するＳＹＮ  ＡＣＫメッセージに含めるＴＣＰオプション情報がＳＹＮメッセージの受信に利用するＴＣＰコネクション待受けアドレス毎に登録される。図３にアドレス-オプション対応管理テーブル１２６の例を示す。図３に示した例において、コネクション構築メッセージ処理部１２４がＳＹＮメッセージ送信端末からＩＰ＿Ｘ２：Ｐｏｒｔ＿Ｘ宛てのＳＹＮメッセージを受信した場合、コネクション構築メッセージ処理部１２４はＳＹＮメッセージ送信端末に対してＷＳ：ｏｎ  ０のＴＣＰオプション情報を含むＳＹＮ  ＡＣＫメッセージを送信する。なお、図３ではＴＣＰオプション情報としてＷＳのみ登録されているが、ＭＳＳやＳＡＣＫでも良いし、複数のＴＣＰオプションの組み合わせとなっていても良い。この場合、アドレス−オプション対応管理テーブル１２６に登録されるＴＣＰコネクション待受けアドレスが図３に示す例よりも多くなる場合がある。
＜パケット転送部１０４＞
パケット転送部１０４は、中継サーバ１２０がＳＹＮメッセージ送信端末から受信したパケットのＩＰヘッダおよびＴＣＰヘッダの書き換えを行い、パケットを他方のＳＹＮメッセージ送信端末へ転送する。具体的な処理内容は以下のとおりである。
【００３０】
パケット転送部１０４はデータパケットを受信すると受信パケットの送信元および宛先ＩＰアドレス、ポート番号と一致するコネクションアドレスを持つエントリを転送テーブル１０１から検索し当該エントリ（以下、受信パケット対応エントリ）を参照して、送信元ＩＰアドレス、ポート番号、宛先ＩＰアドレス、ポート番号、Ｓｅｑ番号、Ａｃｋ番号を以下のように書き換えて、チェックサム再計算後ネットワークに送出する。
・送信元ＩＰアドレス、ポート番号
受信パケット対応エントリに登録されたコネクションアドレスの内、パケット受信に利用したコネクションアドレス（以下送信元コネクションアドレス）ではない方のコネクションアドレス（以下転送先コネクションアドレス）。図２に示す転送テーブル１０１において受信パケット対応エントリがエントリ１２３４５６、送信元コネクションアドレスがコネクション１のコネクションアドレスの場合、コネクション２側のサーバ側アドレス情報、ＩＰ＿Ｘ、Ｐｏｒｔ＿Ｘを送信元ＩＰアドレス、ポート番号とする。
・宛先ＩＰアドレス、ポート番号
送先コネクションアドレスの端末側のアドレス情報を宛先ＩＰアドレス、ポート番号とする。上述の例の場合、ＩＰ＿Ｂ、Ｐｏｒｔ＿Ｂとする。
・Ｓｅｑ番号、Ａｃｋ番号
Ｓｅｑ番号：受信パケットのＳｅｑ番号−受信パケット対応エントリに記載された送信元コネクションのクライアント端末側のＳｅｑ番号＋受信パケット対応エントリに記載された転送先コネクションのサーバ側Ｓｅｑ番号。
【００３１】
Ａｃｋ番号：受信パケットのＡｃｋ番号−受信パケット対応エントリに記載された送信元コネクションのサーバ側Ｓｅｑ番号＋受信パケット対応エントリに記載された転送先コネクションのクライアント端末側Ｓｅｑ番号。
【００３２】
次に本形態における通信システムの動作について説明する。
【００３３】
図４に図１の構成における本実施の形態の通信システムの動作例のメッセージシーケンス図を示す。なお本動作例においてアドレス-オプション対応管理テーブル１２６には図３に示す情報が登録されているものとする。
（クライアント端末Ａ２００−Ｗｅｂ  Ｐｒｏｘｙ７０１のコネクション確立、転送先決定）
まずクライアント端末Ａ２００がＷｅｂ  Ｐｒｏｘｙ７０１とＴＣＰコネクションを構築し（Ｓ４０１）、Ｗｅｂ  Ｐｒｏｘｙ７０１に中継サーバ１２０のＴＣＰコネクション待受けアドレスを指定して中継サーバ１２０へのＴＣＰコネクション構築を要求する（Ｓ４０２）。Ｓ４０２においてクライアント端末Ａ２００が指定するＴＣＰコネクション待受けアドレスはランダムに選択してよい。図４の例ではＩＰ＿Ｘ３：Ｐｏｒｔ＿Ｘが指定される。
（Ｗｅｂ  Ｐｒｏｘｙ７０１−中継サーバ１２０のコネクション確立）
Ｓ４０２の後、Ｗｅｂ  Ｐｒｏｘｙ７０１は中継サーバ１２０に対してＳＹＮメッセージを送信し、ＴＣＰコネクションの構築を開始する（Ｓ４０３）。図４の例ではＳ４０３においてＷｅｂ  Ｐｒｏｘｙ７０１が中継サーバ１２０へ提示するＴＣＰオプションはＷＳ：オン、５ビットシフトである。
【００３４】
コネクション構築メッセージ処理部１２４はＳＹＮメッセージ受信後、アドレス−オプション対応管理テーブル１２６を参照して、ＳＹＮメッセージ受信に利用したＴＣＰコネクション待受けアドレス（ＩＰ＿Ｘ３：Ｐｏｒｘ＿Ｘ）に対応するＴＣＰオプション情報（図３に示すアドレス−オプション対応管理テーブル１２６ではＷＳ：オン、1ビットシフト）を含むＳＹＮ  ＡＣＫメッセージをＷｅｂ  Ｐｒｏｘｙ７０１へ送信する（Ｓ４０４）。
【００３５】
Ｓ４０４の後、Ｗｅｂ  Ｐｒｏｘｙ７０１からＳＹＮ  ＡＣＫメッセージに対するＡＣＫメッセージが送信され（Ｓ４０５）、Ｗｅｂ  Ｐｒｏｘｙ７０１と中継サーバ１２０との３ＷＨメッセージの送受信が完了する。
（中継サーバ１２０→クライアント端末Ａ２００へのＴＣＰオプションの通知）
Ｗｅｂ  Ｐｒｏｘｙ７０１と中継サーバ１２０との３ＷＨメッセージの送受信が完了した後、オプション情報通知部１２１はＳＹＮメッセージ送信端末であるＷｅｂ  Ｐｒｏｘｙ７０１から提示されたＴＣＰオプション情報を含むＴＣＰオプション情報通知メッセージをＳＹＮメッセージ送信端末（Ｗｅｂ  Ｐｒｏｘｙ７０１）との３ＷＨメッセージ送受信に利用したコネクションアドレスを利用して送信する（Ｓ４０６）。本メッセージはＷｅｂ  Ｐｒｏｘｙ７０１によってクライアント端末Ａ２００へ転送される（Ｓ４０７）。なお、オプション情報通知部１２１が送信するＴＣＰオプション情報通知メッセージには、Ｗｅｂ  Ｐｒｏｘｙ７０１から提示されたＴＣＰオプション情報に代えて、アドレス−オプション対応管理テーブル１２６に登録されている当該ＴＣＰオプション情報に対応するＴＣＰコネクション待受けアドレス（図３に示す例ではＷＳ：オン、５ビットシフトに対応するＩＰ＿Ｘ７：Ｐｏｒｔ＿Ｘ）を含めても良い。
（クライアント端末Ａ２００→クライアント端末Ｂ３００へのＴＣＰオプションの通知）
クライアント端末Ａ２００はＴＣＰオプション通知メッセージを受信すると、通信相手のクライアント端末Ｂ３００へＴＣＰオプション通知メッセージにより通知されたＴＣＰオプションまたは当該ＴＣＰオプション情報に対応するＴＣＰコネクション待受けアドレスを通知する（Ｓ４０８）。通知方法としてはＳＩＰを利用したり、メールを利用したりするなどの方法がある。必ずしも中継サーバ１２０を介してクライアント端末Ｂ３００へ通知するわけではない。
（コネクションペア通知メッセージ送信）
また、クライアント端末Ａ２００はＳ４０２によってＷｅｂ  Ｐｒｏｘｙ７０１に対して中継サーバ１２０への通信を要求した後、コネクションペア通知メッセージをＳ４０１においてＷｅｂ  Ｐｒｏｘｙ７０１との間に構築したＴＣＰコネクションを利用して送信する（Ｓ４０９）。コネクションペア通知メッセージにはクライアント端末Ａ２００とクライアント端末Ｂ３００との間で予め合意しておいてコネクションペアＩＤ（１２３４５６）が含まれる。本メッセージはＷｅｂ  Ｐｒｏｘｙ７０１により中継サーバ１２０へ転送され、中継サーバ１２０がＳ４０３〜Ｓ４０５においてＷｅｂ  Ｐｒｏｘｙ７０１との３ＷＨメッセージの送受信に利用したコネクションアドレスによって受信する（Ｓ４１０）。
【００３６】
コネクション構築メッセージ処理部１２４はコネクションペア通知メッセージ受信後、コネクションペア通知メッセージ受信に利用したコネクションアドレス（端末側ＩＰ＿Ｐ：Ｐｏｒｔ＿Ｐ、サーバ側ＩＰ＿Ｘ３：Ｐｏｒｔ＿Ｘ）をＳ４１０のコネクションペア通知メッセージにより通知されたコネクションペアＩＤと同一のエントリＩＤ（１２３４５６）を持つ転送テーブル１０１のエントリに登録する（Ｓ５０１）。
（クライアント端末Ｂ３００−Ｗｅｂ  Ｐｒｏｘｙ７０２のコネクション確立、転送先決定）
クライアント端末Ｂ３００はＳ４０８でクライアント端末Ａ２００からＴＣＰオプションまたはＴＣＰコネクション待受けアドレスの通知を受けると、Ｗｅｂ  Ｐｒｏｘｙ７０２と３ＷＨメッセージの送受信を行いＴＣＰコネクションを構築する（Ｓ４１１）。その後、Ｗｅｂ  Ｐｒｏｘｙ７０２に対して中継サーバ１２０へのＴＣＰコネクション構築を要求する（Ｓ４１２）。Ｓ４１２においてクライアント端末Ｂ３００が指定するＴＣＰコネクション構築先の中継サーバ１２０のアドレスは、Ｓ４０８においてクライアント端末Ａ２００から通知された中継サーバ１２０のＴＣＰコネクション待受けアドレスである（ＩＰ＿Ｘ７：Ｐｏｒｔ＿Ｘ）。なお、Ｓ４０８においてＴＣＰオプションを通知された場合は、当該オプションに対応する中継サーバ１２０のＴＣＰコネクション待受けアドレスをＴＣＰコネクション構築先のアドレスとして把握して指定する。この場合、クライアント端末Ｂ３００は予め中継サーバ１２０が持つアドレス−オプション対応管理テーブル１２６と同じ情報を保持する。
（Ｗｅｂ  Ｐｒｏｘｙ７０２−中継サーバ１２０のコネクション確立）
Ｓ４１２の後、Ｗｅｂ  Ｐｒｏｘｙ７０２は中継サーバ１２０に対してＳＹＮメッセージを送信し、ＴＣＰコネクションの構築を開始する（Ｓ４１３）。図４の例ではＳ４１３においてＷｅｂ  Ｐｒｏｘｙ７０２が中継サーバ１２０へ提示するＴＣＰオプションはＷＳ：オン、４ビットシフトである。
【００３７】
コネクション構築メッセージ処理部１２４はＳＹＮメッセージ受信後、アドレス−オプション対応管理テーブル１２６を参照して、ＳＹＮメッセージ受信に利用したＴＣＰコネクション待受けアドレス（ＩＰ＿Ｘ７：Ｐｏｒｘ＿Ｘ）に対応するＴＣＰオプション情報（図３に示すアドレス−オプション対応管理テーブル１２６ではＷＳ：オン、５ビットシフトカウント）を含むＳＹＮ  ＡＣＫメッセージをＷｅｂ  Ｐｒｏｘｙ７０２へ送信する（Ｓ４１４）。すなわち、クライアント端末Ａ２００側のＷｅｂ  Ｐｒｏｘｙ７０１がＳ４０３のＳＹＮメッセージによって提示したＴＣＰオプション情報と同一のＴＣＰオプション情報が中継サーバ１２０からＳＹＮ  ＡＣＫメッセージによってクライアント端末Ｂ３００側のＷｅｂ  Ｐｒｏｘｙ７０２へ提示されることになる。Ｓ４１４の後、Ｗｅｂ  Ｐｒｏｘｙ７０２からＳＹＮ  ＡＣＫメッセージに対するＡＣＫメッセージが送信され（Ｓ４１５）、Ｗｅｂ  Ｐｒｏｘｙ７０２と中継サーバ１２０との３ＷＨメッセージの送受信が完了する。
（コネクションペア通知メッセージ送信）
クライアント端末Ｂ３００はＳ４１２の後、コネクションペア通知メッセージをＳ４１１においてＷｅｂ  Ｐｒｏｘｙ７０２との間に構築したＴＣＰコネクションを利用して送信する（Ｓ４１６）。コネクションペア通知メッセージには予めクライアント端末Ａ２００との間で合意したコネクションペアＩＤを含める（図４の例ではＳ４０９においてクライアント端末Ａ２００が指定したペアＩＤ１２３４５６と同一の値を含める）。本メッセージはＷｅｂ  Ｐｒｏｘｙ７０２により中継サーバ１２０へ転送され、中継サーバ１２０はＳ４１３〜Ｓ４１５においてＷｅｂ  Ｐｒｏｘｙ７０２との３ＷＨメッセージの送受信に利用したコネクションアドレスによって受信する（Ｓ４１７）。
【００３８】
コネクション構築メッセージ処理部１２４はＳ５０１と同様、コネクションペア通知メッセージを受信したコネクションアドレス（端末側  ＩＰ＿Ｑ：Ｐｏｒｔ＿Ｑ、サーバ側  ＩＰ＿Ｘ７：Ｐｏｒｔ＿Ｘ）をＳ４１７のコネクションペア通知メッセージにより通知されたコネクションペアＩＤと同一のエントリＩＤ（１２３４５６）を持つ転送テーブル１０１のエントリに登録する（Ｓ５０２）。この結果、転送テーブル１０１のエントリ（ＩＤ：１２３４５６）にはコネクションアドレス情報として端末側ＩＰ＿Ｐ：Ｐｏｒｔ＿Ｐ、サーバ側ＩＰ＿Ｘ３：Ｐｏｒｔ＿Ｘのアドレス情報と、端末側  ＩＰ＿Ｑ：Ｐｏｒｔ＿Ｑ、サーバ側  ＩＰ＿Ｘ７：Ｐｏｒｔ＿Ｘのアドレス情報が登録されることになる。
（オプション値の整合）
以上の動作の結果クライアント端末Ａ２００側のＷｅｂ  Ｐｒｏｘｙ７０１が提示したＴＣＰオプション値（ＷＳ：オン、５ビットシフト）がクライアント端末Ｂ３００側のＷｅｂ  Ｐｒｏｘｙ７０２に提示されることとなる。一方でクライアント端末Ａ２００側のＷｅｂ  Ｐｒｏｘｙ７０１にはクライアント端末Ｂ３００側のＷｅｂ  Ｐｒｏｘｙ７０２が提示したＴＣＰオプション値（ＷＳ：オン、４ビットシフト）とは異なるＴＣＰオプション値（ＷＳ：オン、１ビットシフト）が提示されることとなる（Ｓ４１８）。
【００３９】
この結果、中継サーバ１２０がパケットの転送を開始した後（Ｓ４１９）、クライアント端末Ａ２００側のＷｅｂ  Ｐｒｏｘｙ７０１が通知する広告Ｗｉｎｄｏｗサイズがクライアント端末Ｂ３００側のＷｅｂ  Ｐｒｏｘｙ７０２によってクライアント端末Ａ２００側のＷｅｂ  Ｐｒｏｘｙ７０１が意図したとおり解釈される（すなわち５ビットシフトした後の値が広告Ｗｉｎｄｏｗサイズと）ため、クライアント端末Ｂ３００からクライアント端末Ａ２００への通信がＷＳ未使用時と比較して高速化される。
【００４０】
一方でクライアント端末Ａ２００からクライアント端末Ｂ３００への通信についてはクライアント端末Ｂ３００側のＷｅｂ  Ｐｒｏｘｙ７０２が通知する広告Ｗｉｎｄｏｗサイズがクライアント端末Ａ２００側のＷｅｂ  Ｐｒｏｘｙ７０１に意図したとおり解釈されないため通信不能に陥る可能性があるが、図４に示したメッセージシーケンスを、さらにクライアント端末Ｂ３００を起点として実施し、クライアント端末Ｂ３００側のＷｅｂ  Ｐｒｏｘｙ７０２が提示したＴＣＰオプションについてもクライアント端末Ａ２００側のＷｅｂ  Ｐｒｏｘｙ７０１に提示されるようにすることで解決することができる。
【００４１】
この場合、クライアント端末Ａ２００及びクライアント端末Ｂ３００はクライアント端末Ａ２００とクライアント端末Ｂ３００との間の通信用にＷｅｂ  Ｐｒｏｘｙ７０１，７０２に対してそれぞれ２本のコネクションを構築することになる。１本は図４に示したクライアント端末Ａ２００を起点としたメッセージシーケンスにおいて各クライアント端末がＷｅｂ  Ｐｒｏｘｙ７０１，７０２との間に構築したＴＣＰコネクションであり、本ＴＣＰコネクションを利用してデータの送信を行うことで、クライアント端末Ｂ３００からクライアント端末Ａ２００への通信が高速化される。なお、クライアント端末Ａ２００からクライアント端末Ｂ３００へはＴＣＰオプションが整合していないためペイロードを含むパケットの送信（データ送信）を行えない可能性があるが、そのような場合クライアント端末Ａ２００はペイロードを含まないＡＣＫパケットの送信のみ行う。
【００４２】
もう１本は図４に示すメッセージシーケンスをクライアント端末Ｂ３００を起点として行うことにより各クライアント端末とＷｅｂ  Ｐｒｏｘｙ７０１，７０２との間に構築されるＴＣＰコネクションであり、クライアント端末Ａ２００がこのＴＣＰコネクションを利用してデータ送信を行うことで、クライアント端末Ａ２００からクライアント端末Ｂ３００への通信が高速化される。図５にこの例を示す。
【００４３】
なお、本実施の形態におけるクライアント端末、中継サーバは、クライアント端末がＷｅｂ  Ｐｒoｘｙを介さず中継サーバと直接通信を行う場合にもＴＣＰオプションの整合させることができる。この場合、中継サーバの転送テーブルのコネクションアドレス情報にはクライアント端末のＩＰアドレス、ポート番号が記載される。また、コネクション構築メッセージ処理部はクライアント端末と直接３ＷＨメッセージの送受信を行う。
【００４４】
なお、図１に示す中継サーバ１２０の処理は、目的に応じて作製された論理回路で行うようにしても良い。また、処理内容を記述したプログラムを中継サーバ１２０にて読取可能な記録媒体に記録し、この記録媒体に記録されたプログラムを中継サーバ１２０に読み込ませ、実行するものであっても良い。中継サーバ１２０にて読取可能な記録媒体とは、フロッピーディスク（登録商標）、光磁気ディスク、ＤＶＤ、ＣＤなどの移設可能な記録媒体の他、中継サーバ１２０に内蔵されたＨＤＤ等を指す。この記録媒体に記録されたプログラムは、中継サーバ１２０内のＣＰＵ（不図示）にて読み込まれ、ＣＰＵの制御によって、上述したものと同様の処理が行われる。ここで、中継サーバ１２０は、プログラムが記録された記録媒体から読み込まれたプログラムを実行するコンピュータとして動作するものである。
【００４５】
本発明の効果は、クライアント端末が中継サーバを介して通信を行う通信システムにおいて、クライアント端末と中継サーバの間でＴＣＰコネクションを終端するノード（以下、ＴＣＰコネクション終端ノード）が存在し、ＴＣＰコネクション終端ノードが中継サーバへのＴＣＰコネクションの構築を開始する場合に、一方のＴＣＰコネクション終端ノードが中継サーバへ送信したＳＹＮメッセージに記載されるＴＣＰオプション情報が他方のＴＣＰコネクション終端ノードへ提示され、ＴＣＰコネクション終端ノード同士でＴＣＰオプションの整合することができる点である。
【００４６】
その理由は、中継サーバ内のオプション情報通知部が、ＴＣＰコネクション終端ノードが中継サーバに送信したＳＹＮメッセージに含まれるＴＣＰオプション情報または当該ＴＣＰオプション情報に対応するＴＣＰコネクション待受け用アドレスをクライアント端末に通知し、当該クライアント端末が中継サーバから通知されたＴＣＰオプション情報または当該ＴＣＰオプション情報に対応するＴＣＰコネクション待受け用アドレスを通信相手となるクライアント端末に対して通知した後、当該クライアント端末の通信相手となるクライアント端末が中継サーバの当該ＴＣＰオプション情報に対応するＴＣＰコネクション待受け用アドレスに対する通信を要求し、中継サーバ内のコネクション構築メッセージ処理部がＳＹＮメッセージの受信に利用したアドレスに応じて、当該ＳＹＮメッセージ対して送信するＳＹＮ  ＡＣＫメッセージに含めるＴＣＰオプション情報を決定するからである。
【図面の簡単な説明】
【００４７】
【図１】本発明の実施の形態における通信システムの構成の例を示す図である。
【図２】図１に示した形態における転送テーブルの例を示す図である。
【図３】図１に示した形態におけるアドレス−オプション対応管理テーブルの例を示す図である。
【図４】図１に示した形態におけるデータ転送開始までのメッセージシーケンスの例を示す図である。
【図５】図１に示した形態におけるＴＣＰコネクションの構築例を示す図である。
【図６】一般的なパケット転送方式の一例を示す図である。
【符号の説明】
【００４８】
１０１    転送テーブル
１０４    パケット転送部
１２０    中継サーバ
１２１    オプション情報通知部
１２４    コネクション構築メッセージ処理部
１２６    アドレス−オプション対応管理テーブル
２００    クライアント端末Ａ
３００    クライアント端末Ｂ
４００    ファイヤウォール
５００    プライベートネットワーク
６００    インターネット
７０１，７０２    Ｗｅｂ  Ｐｒｏｘｙ
【図１】
2009164948.tif 000003
【図２】
2009164948.tif 000004
【図３】
2009164948.tif 000005
【図４】
2009164948.tif 000006
【図５】
2009164948.tif 000007
【図６】
2009164948.tif 000008