(57)【要約】【課題】エンドエンドでセッション開設が終端でき、中継装置の前後でシーケンス番号を揃えることができるセッション中継装置を実現する。【解決手段】セッションを中継するか否かを判断するセッション中継判定部１−６と、セッション開始パケット内のオプションパラメータを監視するセッション開始処理監視部１−７とを備え、セッション開始パケットはエンドエンドで終端させて、セッション開始・応答パケット以降で、セッションの中継を始めるのに十分な情報を入手できた後、セッションを中継する。【選択図】  図１
2006279394.tif 000002
【特許請求の範囲】
【請求項１】
送信端末との間に開設した第１のセッションと受信端末との間に開設した第２のセッションとの間で、トランスポート層以上の処理を伴うデータの中継を行うことにより、送受信端末間の通信を実現するセッション中継装置において、
セッション開設を要求するセッション開始パケットあるいはこのパケットに対する応答であるセッション開始・応答パケットを受信したときに、受信したパケットを書き換えることなくそのままの形で送信先に送り出すパケット中継手段と、
セッションを終端してデータを中継するセッション中継手段と、
このセッション中継手段で終端するセッションの情報を記憶する記憶手段と、
前記セッション開始パケットを受信したときに、開設が要求されたセッションに対応するセッション情報を前記記憶手段に仮に登録するセッション状態登録手段と、
前記セッション開始・応答パケットを受信したときに、前記仮に登録したセッション情報を確定させるセッション状態更新手段とを有し、
前記セッション情報が確定したセッションのパケットを受信した際には、このセッションを前記セッション中継手段で終端してトランスポート層以上の処理を行なってデータを中継することを特徴とするセッション中継装置。
【請求項２】
請求項１に記載のセッション中継装置において、
前記セッション状態登録手段は、前記受信端末から受信すべき受信シーケンス番号及び前記送信端末に対して送信すべき送信シーケンス番号を確定せずに前記セッション情報を仮に登録し、
前記セッション状態更新手段は、前記セッション開始・応答パケット内の情報を用いて、前記仮に登録したセッション情報中の前記受信シーケンス番号及び前記送信シーケンス番号を確定することを特徴とするセッション中継装置。
【請求項３】
請求項２に記載のセッション中継装置において、
前記セッション状態更新手段は、前記セッション開始・応答パケット内のシーケンス番号で、前記仮に登録したセッション情報中の前記受信シーケンス番号及び前記送信シーケンス番号を初期化して確定することを特徴とするセッション中継装置。
【請求項４】
請求項１乃至３のいずれか１項に記載のセッション中継装置において、
さらに、前記セッション開始パケットもしくはセッション開始・応答パケット内のオプション情報を変更する変更手段を有することを特徴とするセッション中継装置。
【請求項５】
請求項４に記載の中継装置において、
前記変更手段は、前記送信端末から前記受信端末へのセッション開始パケットを中継するときに、前記送信端末から通知され、かつ前記受信端末へ通知するオプションパラメータを記憶し、前記セッション開始パケットに対する前記受信端末から前記送信端末へのセッション開始・応答パケットのオプションパラメータを前記記憶したオプションパラメータと比較し、この比較結果に基づいて、セッション中継に使用するオプションの有無やオプションの値、前記送信端末へ通知するオプションの有無やオプションの値を変更することを特徴とするセッション中継装置。
【請求項６】
請求項５に記載の中継装置において、
前記変更手段は、前記送信端末からのセッション開始パケットにおける１つ以上のオプションを有効にして、このセッション開始パケットを前記受信端末に送り、前記受信端末からのセッション開始・応答パケットにおける該オプションを無効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えることを特徴とするセッション中継装置。
【請求項７】
請求項５に記載の中継装置において、
前記変更手段は、前記送信端末からのセッション開始パケットにおける１つ以上のオプションを無効にして、このセッション開始パケットを前記受信端末に送り、前記受信端末からのセッション開始・応答パケットにおける該オプションを有効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えることを特徴とするセッション中継装置。
【請求項８】
請求項５に記載の中継装置において、
前記変更手段は、前記送信端末からのセッション開始パケットにおいて有効であったオプションが、前記受信端末からのセッション開始・応答パケットにおいて無効であった場合、セッション中継で用いる該オプションを無効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えることを特徴とするセッション中継装置。
【請求項９】
請求項４に記載の中継装置において、
前記オプションは、ＴＣＰのＭＳＳオプションであり、
前記変更手段は、前記送信端末から受信したパケットのＭＳＳオプションの値を、任意の値もしくは前記送信端末から通知されたＭＳＳ値から増加したオプションヘッダのサイズ分引いた値に変更して、前記受信端末に送る手段を備えることを特徴とするセッション中継装置。
【請求項１０】
請求項４乃至８のいずれか１項に記載の中継装置において、
前記オプションは、少なくともＴＣＰのタイムスタンプオプション、ＴＣＰのＳＡＣＫオプション、ＴＣＰのウインドウスケールオプションを含むことを特徴とするセッション中継装置。
【請求項１１】
請求項５に記載の中継装置において、
前記オプションは、ＴＣＰのＳＡＣＫオプションであり、
前記変更手段は、前記送信端末からのセッション開始パケットにおけるＳＡＣＫオプションを有効にして、このセッション開始パケットを前記受信端末に送り、前記受信端末からのセッション開始・応答パケットにおけるＳＡＣＫオプションを無効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えることを特徴とするセッション中継装置。
【請求項１２】
請求項５に記載の中継装置において、
前記オプションは、ＴＣＰのＳＡＣＫオプションであり、
前記変更手段は、前記送信端末からのセッション開始パケットにおけるＳＡＣＫオプションを無効にして、このセッション開始パケットを前記受信端末に送り、前記受信端末からのセッション開始・応答パケットにおけるＳＡＣＫオプションを有効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えることを特徴とするセッション中継装置。
【請求項１３】
請求項５に記載の中継装置において、
前記オプションは、ＴＣＰのＳＡＣＫプオプションであり、
前記変更手段は、前記送信端末からのセッション開始パケットにおいて有効であったＳＡＣＫオプションが、前記受信端末からのセッション開始・応答パケットにおいて無効であった場合、セッション中継で用いるＳＡＣＫオプションを無効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えることを特徴とするセッション中継装置。
【請求項１４】
請求項５に記載の中継装置において、
前記オプションは、ＴＣＰのタイムスタンプオプションであり、
前記変更手段は、前記送信端末からのセッション開始パケットにおけるタイムスタンプオプションを有効にして、このセッション開始パケットを前記受信端末に送り、前記受信端末からのセッション開始・応答パケットにおけるタイムスタンプオプションを無効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えることを特徴とするセッション中継装置。
【請求項１５】
請求項５に記載の中継装置において、
前記オプションは、ＴＣＰのタイムスタンプオプションであり、
前記変更手段は、前記送信端末からのセッション開始パケットにおけるタイムスタンプオプションを無効にして、このセッション開始パケットを前記受信端末に送り、前記受信端末からのセッション開始・応答パケットにおけるタイムスタンプオプションを有効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えることを特徴とするセッション中継装置。
【請求項１６】
請求項５に記載の中継装置において、
前記オプションは、ＴＣＰのタイムスタンプオプションであり、
前記変更手段は、前記送信端末からのセッション開始パケットにおいて有効であったタイムスタンプオプションが、前記受信端末からのセッション開始・応答パケットにおいて無効であった場合、セッション中継で用いるタイムスタンプオプションを無効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えることを特徴とするセッション中継装置。
【請求項１７】
請求項５に記載の中継装置において、
前記オプションは、ＴＣＰのウインドスケールオプションであり、
前記変更手段は、前記送信端末からのセッション開始パケットにおけるウインドウスケールオプションを有効にして、このセッション開始パケットを前記受信端末に送り、前記受信端末からのセッション開始・応答パケットにおけるウインドウスケールオプションを無効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えることを特徴とするセッション中継装置。
【請求項１８】
請求項５に記載の中継装置において、
前記オプションは、ＴＣＰのウインドスケールオプションであり、
前記変更手段は、前記送信端末からのセッション開始パケットにおけるウインドウスケールオプションを無効にして、このセッション開始パケットを前記受信端末に送り、前記受信端末からのセッション開始・応答パケットにおけるウインドウスケールオプションを有効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えることを特徴とするセッション中継装置。
【請求項１９】
請求項５に記載の中継装置において、
前記オプションは、ＴＣＰのウインドスケールオプションであり、
前記変更手段は、前記送信端末からのセッション開始パケットにおいて有効であったウインドウスケールオプションが、前記受信端末からのセッション開始・応答パケットにおいて無効であった場合、セッション中継で用いるウインドウスケールオプションを無効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えることを特徴とするセッション中継装置。
【請求項２０】
送信端末との間に開設した第１のセッションと受信端末との間に開設した第２のセッションとの間で、トランスポート層以上の処理を伴うデータの中継を行うことにより、送受信端末間の通信を実現するセッション中継方法であって、
セッション開設を要求するセッション開始パケットあるいはこのパケットに対する応答であるセッション開始・応答パケットを受信したときに、受信したパケットを書き換えることなくそのままの形で送信先に送り出すパケット中継手順と、
前記セッション開始パケットを受信したときに、開設が要求されたセッションに対応するセッション情報を記憶手段に仮に登録するセッション状態登録手順と、
前記セッション開始・応答パケットを受信したときに、前記仮に登録したセッション情報を確定させるセッション状態更新手順とを備え、
前記セッション情報が確定したセッションのパケットを受信した際には、このセッションを終端してトランスポート層以上の処理を行なってデータを中継することを特徴とするセッション中継方法。
【請求項２１】
送信端末との間に開設した第１のセッションと受信端末との間に開設した第２のセッションとの間で、トランスポート層以上の処理を伴うデータの中継を行うことにより、送受信端末間の通信を実現するセッション中継装置としてコンピュータを機能させるセッション中継プログラムであって、
セッション開設を要求するセッション開始パケットあるいはこのパケットに対する応答であるセッション開始・応答パケットを受信したときに、受信したパケットを書き換えることなくそのままの形で送信先に送り出すパケット中継手順と、
前記セッション開始パケットを受信したときに、開設が要求されたセッションに対応するセッション情報を記憶手段に仮に登録するセッション状態登録手順と、
前記セッション開始・応答パケットを受信したときに、前記仮に登録したセッション情報を確定させるセッション状態更新手順とを前記コンピュータに実行させ、
前記セッション情報が確定したセッションのパケットを受信した際には、このセッションを終端してトランスポート層以上の処理を行なってデータを中継することを特徴とするセッション中継プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの中継を行うセッション中継装置に係り、特に透過的なセッション中継装置、セッション中継方法、および透過的なセッション中継装置を実現するプログラムに関するものである。
【背景技術】
【０００２】
一般的に、通信アプリケーションは、送受信端末間で通信セッションを確立し、確立したセッション上で通信を行う。しかしながら、送受信端末間の伝播遅延時間が非常に長い場合、もしくは有線と無線のように特性の異なるネットワークを横断して通信する場合、送受信端末間の通信のスループットが低下する。
【０００３】
この問題を解決するため、送受信端末間を一つのセッションで通信を行うのではなく、送受信端末間に中継装置を設置し、送信端末から中継装置へのセッションと中継装置から受信端末へのセッションの２つのセッション間でデータの中継を行うことにより通信を行う方式が存在する。このような中継方式の一例としては、Ｉｎｄｉｒｅｃｔ  ＴＣＰ（例えば、非特許文献１参照）や、特許文献１、特許文献２、特許文献３に開示されている方式がある。
【０００４】
特許文献１に開示された非対称回線用ＴＣＰ通信高速化装置は、計算機間の通信経路上に設置され、一方向の通信速度を高速化するものである。同様に、特許文献２に開示された通信装置は、非対称な通信路に接続され、ＴＣＰのスループットを向上させるものである。特許文献３に開示されたＩＰルータ装置は、コンピュータネットワークにおいて、異なるネットワークを結合しＩＰパケットをネットワーク間で橋渡しするＴＣＰコネクションを終端させる機能を備えるものである。
【０００５】
以降、セッション通信例としてＴＣＰを用いる。通常のＴＣＰの動作に関しては、非特許文献２や、非特許文献３に詳しく記載されている。これら文献の規定を実現した例として、ＬｉｎｕｘやＷｉｎｄｏｗｓ（登録商標）などのＴＣＰ／ＩＰプロトコルスタックなど多くの例がある。
【０００６】
図１４は、従来のセッション中継装置の構成例を示すブロック図である。セッション中継装置３０−０は、ネットワークからパケットを受信するパケット入力部３０−１と、ネットワークパケットを出力するパケット出力部３０−２と、パケット入力部３０−１から入力されたパケットがセッション中継をするパケットであるかないかを判断するパケット判定部３０−３と、パケット中継部３０−３でセッション中継をするパケットであると判断された場合にセッションを終端するセッション終端部３０−４と、セッション終端部３０−４で終端されたセッションのストリームを再びセッションへ構築するセッション構築部３０−５と、セッション終端部３０−４で終端されたセッションのストリームから接続先の端末を割り出す接続先端末算出部３０−８と、セッション終端部３０−４のセッション状態を記憶するセッション状態記憶部３０−６と、セッション構築部３０−５のセッション状態を記憶するセッション状態記憶部３０−７とを備える。
【０００７】
セッション終端部３０−４は、セッション中継装置３０−０宛てのパケットを終端する。セッション構築部３０−５は、送信元がセッション中継装置３０−０であるセッションを、接続先端末算出部３０−８で算出された端末との間で構築する。
【０００８】
図１５は、図１４で示した従来のセッション中継装置３０−０によるＴＣＰ中継のシーケンス図である。図１５は、ＩＰアドレスＡを持つ送信端末１０からＩＰアドレスＢを持つ受信端末２０のポート番号８０へデータを転送する場合のシーケンスを表している。送信端末１０と受信端末２０との間には、セッション中継装置３０−０があり、送信端末１０側にはアドレス：Ｃ１が割り振られ、受信端末２０側にはアドレス：Ｃ２が割り振られている。
【０００９】
最初に、送信端末１０とセッション中継装置３０−０との間のコネクションが開設される。送信端末１０は、アドレス：Ａ、ポート：ｘ、シーケンス番号：１のコネクション開始ＳＹＮパケットをセッション中継装置３０−０のアドレス：Ｃ１、ポート：８０８０へ送る（ステップ１００）。図１５では、ＳＹＮパケットのシーケンスは１となっているが、実際はセッション開設の都度異なる値をとる。
【００１０】
セッション中継装置３０−０は、送信端末１０からのＳＹＮパケットに対して、ＳＹＮとＡＣＫパケットを返す（ステップ１０１）。このときのシーケンス番号は、図１５中では９９９となっているが、実際にはセッション開設の都度異なり、送信端末１０のシーケンス番号とは関係ない値となる。送信端末１０は、セッション中継装置３０−０からのＳＹＮ・ＡＣＫパケットに対して、ＡＣＫパケットを返す（ステップ１０２）。
【００１１】
次に、送信端末１０とセッション中継装置３０−０との間で、データが転送される（ステップ１０３，１０４）。このデータには、接続先のアドレスやポートなどの情報が入っている。図１５の例では、受信端末２０のアドレス：Ｂ、ポート：８０に接続することとする。
次に、セッション中継装置３０−０のアドレス：Ｃ２、ポート：ｙと受信端末２０のアドレス：Ｂ、ポート：８０との間でセッションが確立される（ステップ１０５〜１０９）。確立の仕方は、送信端末１０とセッション中継装置３０−０との間でのセッションの確立の仕方と同じである。この場合も、ＳＹＮパケット中のシーケンスは、他のＳＹＮパケット中のシーケンスと関係なしに決まる。
【００１２】
図１４、図１５で説明した従来のセッション中継装置３０−０では、送信端末１０の接続先はセッション中継装置３０−０となってしまい、実際に接続したい受信端末２０を、別途データとして指定する必要があった。
この問題を解決するため、送信端末の送信先を特別に変更することなくセッション中継できるようにした片側透過型のセッション中継装置がある。
【００１３】
図１６は、片側透過型のセッション中継装置３２−０の構成例を示すブロック図である。セッション中継装置３２−０は、ネットワークからパケットを受信するパケット入力部３２−１と、ネットワークパケットを出力するパケット出力部３２−２と、パケット入力部３２−１から入力されたパケットがセッション中継をするパケットであるかないかを判断するパケット判定部３２−３と、パケット中継部３２−３でセッション中継をするパケットであると判断された場合にセッションを終端するセッション終端部３２−４と、セッション終端部３２−４で終端されたセッションのストリームを再びセッションへ構築するセッション構築部３２−５と、セッション終端部３２−４のセッション状態を記憶するセッション状態記憶部３２−６と、セッション構築部３２−５のセッション状態を記憶するセッション状態記憶部３２−７と、セッションの送信先のアドレスやポートを変換する送信先アドレス・ポート変換部３２−８と、送信先アドレス・ポート変換部３２−８で変換される前の接続先を記憶し、この接続先をセッション構築部３２−５に伝える送信先アドレス・ポート記憶部３２−９とを備える。
【００１４】
送信先アドレス・ポート変換部３２−８は、セッションのパケットをセッション中継装置３２−０宛のアドレス・ポートに変換し、本来の送信先を接続先端末記憶部３２−９に記憶させる。セッション構築部３２−５は、送信元がセッション中継装置３２−０であるセッションを、接続先端末記憶部３２−９で記憶された本来の送信先端末との間で構築する。
【００１５】
図１７は、図１６で示した片側透過型のセッション中継装置３２−０によるＴＣＰ中継のシーケンス図である。図１７は、ＩＰアドレスＡを持つ送信端末１０からＩＰアドレスＢを持つ受信端末２０のポート番号８０へデータを転送する場合のシーケンスを表している。送信端末１０と受信端末２０との間には、セッション中継装置３２−０があり、送信端末１０側にはアドレス：Ｃ１が割り振られ、受信端末２０側にはアドレス：Ｃ２が割り振られている。
【００１６】
最初に、送信端末１０とセッション中継装置３２−０との間のコネクションが開設される。送信端末１０は、アドレス：Ａ、ポート：ｘ、シーケンス番号：１のコネクション開始ＳＹＮパケットをセッション中継装置３２−０のアドレス：Ｂ、ポート：８０へ送る（ステップ２００）。セッション中継装置３２−０は、自分宛のパケットではないが、送信端末１０からのＳＹＮパケットに対して、ＳＹＮとＡＣＫパケットを返す（ステップ２０１）。このときの送信元のアドレスやポートは、アドレス：Ｂ、ポート：８０となっている。送信端末１０は、セッション中継装置３２−０からのＳＹＮパケットに対して、ＡＣＫパケットを返す（ステップ２０２）。
【００１７】
次に、セッション中継装置３２−０のアドレス：Ｃ２、ポート：ｙと受信端末２０のアドレス：Ｂ、ポート：８０との間でセッションが確立される（ステップ２０３〜２０５）。確立の仕方は、送信端末１０とセッション中継装置３２−０との間でのセッションの確立の仕方と同じである。送信端末１０とセッション中継装置３２−０との間でのコネクションの開設、セッション中継装置３２−０と受信端末２０との間でのコネクションの開設のいずれにおいても、ＳＹＮパケット中のシーケンスは、他のＳＹＮパケット中のシーケンスと関係なしに決まる。
【００１８】
送信端末１０とセッション中継装置３２−０との間でデータが転送され（ステップ２０６，２０７）、またセッション中継装置３２−０と受信端末２０との間でデータが転送される（ステップ２０８，２０９）。
【００１９】
図１６、図１７で説明した従来のセッション中継装置３２−０では、片側でしか透過でないため、受信端末２０から送信端末１０へ接続できないという問題がある。
この問題を解決するため、両側から透過的にセッション中継できるようにした両側透過型のセッション中継装置がある（特許文献３参照）。
【００２０】
図１８は、両側透過型のセッション中継装置３４−０の構成例を示すブロック図である。セッション中継装置３４−０は、ネットワークからパケットを受信するパケット入力部３４−１と、ネットワークパケットを出力するパケット出力部３４−２と、パケット入力部３４−１から入力されたパケットがセッション中継をするパケットであるかないかを判断するパケット判定部３４−３と、パケット中継部３４−３でセッション中継をするパケットであると判断された場合にセッションを終端するセッション終端部３４−４と、セッション終端部３４−４で終端されたセッションのストリームを再びセッションへ構築するセッション構築部３４−５と、セッション終端部３４−４のセッション状態を記憶するセッション状態記憶部３４−６と、セッション構築部３４−５のセッション状態を記憶するセッション状態記憶部３４−７と、セッションの送信先のアドレスやポートを変換する送信先アドレス・ポート変換部３４−８と、送信先アドレス・ポート変換部３４−８で変換される前の送信先と送信元を記憶し、この送信先と送信元をセッション構築部３４−５と送信元アドレス・ポート変換部３４−１０に伝えるアドレス・ポート記憶部３４−９と、セッション構築部３４−５で構築されたパケットの送信元を変換する送信元アドレス・ポート変換部３４−１０とを備える。
【００２１】
アドレス・ポート記憶部３４−９は、本来の送信先と送信元のアドレス及びポートを記憶する。送信先アドレス・ポート変換部３４−８は、セッションのパケットをセッション中継装置３４−０宛のアドレスとポートに変換する。セッション構築部３４−５は、送信元がセッション中継装置３４−０であるセッションを、アドレス・ポート記憶部３４−９で記憶された本来の送信先端末との間で構築する。送信元アドレス・ポート変換部３４−１０は、セッション構築部３４−５で構築されたセッションの送信元アドレスを、アドレス・ポート記憶部３４−６で記憶された本来の送信元へ変換する。
【００２２】
図１９は、図１８で示した両側透過型のセッション中継装置３４−０によるＴＣＰ中継のシーケンス図である。図１９は、ＩＰアドレスＡを持つ送信端末１０からＩＰアドレスＢを持つ受信端末２０のポート番号８０へデータを転送する場合のシーケンスを表している。送信端末１０と受信端末２０との間には、セッション中継装置３４−０があり、送信端末１０側にはアドレス：Ｃ１が割り振られ、受信端末２０側にはアドレス：Ｃ２が割り振られている。
【００２３】
最初に、送信端末１０とセッション中継装置３４−０との間のコネクションが開設される。送信端末１０は、アドレス：Ａ、ポート：ｘ、シーケンス番号：１のコネクション開始ＳＹＮパケットをセッション中継装置３４−０のアドレス：Ｂ、ポート：８０へ送る（ステップ３００）。セッション中継装置３４−０は、自分宛のパケットではないが、送信端末１０からのＳＹＮパケットに対して、ＳＹＮとＡＣＫパケットを返す（ステップ３０１）。このときの送信元のアドレスやポートは、アドレス：Ｂ、ポート：８０となっている。送信端末１０は、セッション中継装置３４−０からのＳＹＮパケットに対して、ＡＣＫパケットを返す（ステップ３０２）。
【００２４】
次に、セッション中継装置３４−０と受信端末２０との間のコネクションが開設される。セッション中継装置３４−０は、アドレス：Ａ、ポート：ｘ、シーケンス番号：１０００１のコネクション開始ＳＹＮパケットを受信端末２０のアドレス：Ｂ、ポート：８０へ送る（ステップ３０３）。受信端末２０は、このＳＹＮパケットに対して、セッションＣへ向けてＳＹＮとＡＣＫパケットを返す（ステップ３０４）。このときの送信先のアドレスやポートは、アドレス：Ａ、ポート：ｘとなっている。セッション中継装置３４−０は、受信端末２０からのＳＹＮパケットに対して、ＡＣＫパケットを返す（ステップ３０５）。送信端末１０とセッション中継装置３４−０との間でのコネクションの開設、セッション中継装置３４−０と受信端末２０との間でのコネクションの開設のいずれにおいても、ＳＹＮパケット中のシーケンスは、他のＳＹＮパケット中のシーケンスと関係なしに決まる。
【００２５】
送信端末１０とセッション中継装置３４−０との間でデータが転送され（ステップ３０６，３０７）、またセッション中継装置３４−０と受信端末２０との間でデータが転送される（ステップ３０８，３０９）。
【００２６】
【特許文献１】特許第３４４８４８１号公報
【特許文献２】特許第３４８２０９１号公報
【特許文献３】特許第３４９４６１０号公報
【非特許文献１】Ajay Bakre and B.R.Badrinath，「I-TCP;Indirect TCP for Mobile Host」，Department of Computer Science Rutgers University，DSC-TR-314，1994（http://citeseer.ist.psu.edu/bakre94itcp.html）
【非特許文献２】Jon Postel，「Transmission Control Protocol」，IETF，RFC 793，1981（http://www.ietf.org/rfc/rfc793.txt）
【非特許文献３】W.Richard Stevens，「TCP/IP Illustrated、Volume 1:The Protocols、Addison-Wesley」，1994，ISBN 0-201-63346-989
【発明の開示】
【発明が解決しようとする課題】
【００２７】
第一の問題点は、従来のセッション中継装置では、接続先の端末が応答しない場合、若しくはセッション中継装置から先の経路が存在しない場合にも、セッションが開設されてしまうということである。その理由は、従来のセッション中継装置は、ＳＹＮパケットに対して即座にＳＹＮ・ＡＣＫパケットを返したあとに、接続先の端末へＳＹＮパケットを送っているからである。接続先の端末が存在しない場合にも、一旦コネクションが開設されて、データ中継が可能な状態になるため、存在しない端末へ向けて大量にアクセスがあった場合に過負荷の原因となる。
【００２８】
第二の問題点は、従来のセッション中継装置では、中継装置の前後でシーケンス番号が揃わないということである。その理由は、従来のセッション中継装置がセッション中継の開始を独立に行うためシーケンス番号の関連性が失われるためである。シーケンス番号が揃わないため、エンドエンドでセッションが維持されており、通信が行われていない状態で、セッション中継装置を切り離す場合に、以後の通信が継続されないという問題が発生する。
【００２９】
本発明の目的は、エンドエンドでセッション開設が終端できる透過的なセッション中継装置、セッション中継方法およびプログラムを提供することである。
本発明の他の目的は、アドレス、ポート番号、シーケンス番号が中継器を介しても同じ値に初期化される透過的なセッション中継装置、セッション中継方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００３０】
本発明は、送信端末との間に開設した第１のセッションと受信端末との間に開設した第２のセッションとの間で、トランスポート層以上の処理を伴うデータの中継を行うことにより、送受信端末間の通信を実現するセッション中継装置において、セッション開設を要求するセッション開始パケットあるいはこのパケットに対する応答であるセッション開始・応答パケットを受信したときに、受信したパケットを書き換えることなくそのままの形で送信先に送り出すパケット中継手段と、セッションを終端してデータを中継するセッション中継手段と、このセッション中継手段で終端するセッションの情報を記憶する記憶手段と、前記セッション開始パケットを受信したときに、開設が要求されたセッションに対応するセッション情報を前記記憶手段に仮に登録するセッション状態登録手段と、前記セッション開始・応答パケットを受信したときに、前記仮に登録したセッション情報を確定させるセッション状態更新手段とを有し、前記セッション情報が確定したセッションのパケットを受信した際には、このセッションを前記セッション中継手段で終端してトランスポート層以上の処理を行なってデータを中継するものである。
また、本発明のセッション中継装置の１構成例において、前記セッション状態登録手段は、前記受信端末から受信すべき受信シーケンス番号及び前記送信端末に対して送信すべき送信シーケンス番号を確定せずに前記セッション情報を仮に登録し、前記セッション状態更新手段は、前記セッション開始・応答パケット内の情報を用いて、前記仮に登録したセッション情報中の前記受信シーケンス番号及び前記送信シーケンス番号を確定するものである。
また、本発明のセッション中継装置の１構成例において、前記セッション状態更新手段は、前記セッション開始・応答パケット内のシーケンス番号で、前記仮に登録したセッション情報中の前記受信シーケンス番号及び前記送信シーケンス番号を初期化して確定するものである。
【００３１】
また、本発明のセッション中継装置の１構成例は、さらに、前記セッション開始パケットもしくはセッション開始・応答パケット内のオプション情報を変更する変更手段を有するものである。
また、本発明のセッション中継装置の１構成例において、前記変更手段は、前記送信端末から前記受信端末へのセッション開始パケットを中継するときに、前記送信端末から通知され、かつ前記受信端末へ通知するオプションパラメータを記憶し、前記セッション開始パケットに対する前記受信端末から前記送信端末へのセッション開始・応答パケットのオプションパラメータを前記記憶したオプションパラメータと比較し、この比較結果に基づいて、セッション中継に使用するオプションの有無やオプションの値、前記送信端末へ通知するオプションの有無やオプションの値を変更するものである。
また、本発明のセッション中継装置の１構成例において、前記変更手段は、前記送信端末からのセッション開始パケットにおける１つ以上のオプションを有効にして、このセッション開始パケットを前記受信端末に送り、前記受信端末からのセッション開始・応答パケットにおける該オプションを無効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えるものである。
また、本発明のセッション中継装置の１構成例において、前記変更手段は、前記送信端末からのセッション開始パケットにおける１つ以上のオプションを無効にして、このセッション開始パケットを前記受信端末に送り、前記受信端末からのセッション開始・応答パケットにおける該オプションを有効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えるものである。
また、本発明のセッション中継装置の１構成例において、前記変更手段は、前記送信端末からのセッション開始パケットにおいて有効であったオプションが、前記受信端末からのセッション開始・応答パケットにおいて無効であった場合、セッション中継で用いる該オプションを無効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えるものである。
また、本発明のセッション中継装置の１構成例において、前記オプションは、ＴＣＰのＭＳＳオプションであり、前記変更手段は、前記送信端末から受信したパケットのＭＳＳオプションの値を、任意の値もしくは前記送信端末から通知されたＭＳＳ値から増加したオプションヘッダのサイズ分引いた値に変更して、前記受信端末に送る手段を備えるものである。
【００３２】
また、本発明のセッション中継装置の１構成例において、前記オプションは、少なくともＴＣＰのタイムスタンプオプション、ＴＣＰのＳＡＣＫオプション、ＴＣＰのウインドウスケールオプションを含むものである。
また、本発明のセッション中継装置の１構成例において、前記オプションは、ＴＣＰのＳＡＣＫオプションであり、前記変更手段は、前記送信端末からのセッション開始パケットにおけるＳＡＣＫオプションを有効にして、このセッション開始パケットを前記受信端末に送り、前記受信端末からのセッション開始・応答パケットにおけるＳＡＣＫオプションを無効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えるものである。
また、本発明のセッション中継装置の１構成例において、前記オプションは、ＴＣＰのＳＡＣＫオプションであり、前記変更手段は、前記送信端末からのセッション開始パケットにおけるＳＡＣＫオプションを無効にして、このセッション開始パケットを前記受信端末に送り、前記受信端末からのセッション開始・応答パケットにおけるＳＡＣＫオプションを有効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えるものである。
また、本発明のセッション中継装置の１構成例において、前記オプションは、ＴＣＰのＳＡＣＫプオプションであり、前記変更手段は、前記送信端末からのセッション開始パケットにおいて有効であったＳＡＣＫオプションが、前記受信端末からのセッション開始・応答パケットにおいて無効であった場合、セッション中継で用いるＳＡＣＫオプションを無効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えるものである。
【００３３】
また、本発明のセッション中継装置の１構成例において、前記オプションは、ＴＣＰのタイムスタンプオプションであり、前記変更手段は、前記送信端末からのセッション開始パケットにおけるタイムスタンプオプションを有効にして、このセッション開始パケットを前記受信端末に送り、前記受信端末からのセッション開始・応答パケットにおけるタイムスタンプオプションを無効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えるものである。
また、本発明のセッション中継装置の１構成例において、前記オプションは、ＴＣＰのタイムスタンプオプションであり、前記変更手段は、前記送信端末からのセッション開始パケットにおけるタイムスタンプオプションを無効にして、このセッション開始パケットを前記受信端末に送り、前記受信端末からのセッション開始・応答パケットにおけるタイムスタンプオプションを有効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えるものである。
また、本発明のセッション中継装置の１構成例において、前記オプションは、ＴＣＰのタイムスタンプオプションであり、前記変更手段は、前記送信端末からのセッション開始パケットにおいて有効であったタイムスタンプオプションが、前記受信端末からのセッション開始・応答パケットにおいて無効であった場合、セッション中継で用いるタイムスタンプオプションを無効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えるものである。
【００３４】
また、本発明のセッション中継装置の１構成例において、前記オプションは、ＴＣＰのウインドスケールオプションであり、前記変更手段は、前記送信端末からのセッション開始パケットにおけるウインドウスケールオプションを有効にして、このセッション開始パケットを前記受信端末に送り、前記受信端末からのセッション開始・応答パケットにおけるウインドウスケールオプションを無効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えるものである。
また、本発明のセッション中継装置の１構成例において、前記オプションは、ＴＣＰのウインドスケールオプションであり、前記変更手段は、前記送信端末からのセッション開始パケットにおけるウインドウスケールオプションを無効にして、このセッション開始パケットを前記受信端末に送り、前記受信端末からのセッション開始・応答パケットにおけるウインドウスケールオプションを有効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えるものである。
また、本発明のセッション中継装置の１構成例において、前記オプションは、ＴＣＰのウインドスケールオプションであり、前記変更手段は、前記送信端末からのセッション開始パケットにおいて有効であったウインドウスケールオプションが、前記受信端末からのセッション開始・応答パケットにおいて無効であった場合、セッション中継で用いるウインドウスケールオプションを無効にして、このセッション開始・応答パケットを前記送信端末に送る手段を備えるものである。
【００３５】
また、本発明は、送信端末との間に開設した第１のセッションと受信端末との間に開設した第２のセッションとの間で、トランスポート層以上の処理を伴うデータの中継を行うことにより、送受信端末間の通信を実現するセッション中継方法であって、セッション開設を要求するセッション開始パケットあるいはこのパケットに対する応答であるセッション開始・応答パケットを受信したときに、受信したパケットを書き換えることなくそのままの形で送信先に送り出すパケット中継手順と、前記セッション開始パケットを受信したときに、開設が要求されたセッションに対応するセッション情報を記憶手段に仮に登録するセッション状態登録手順と、前記セッション開始・応答パケットを受信したときに、前記仮に登録したセッション情報を確定させるセッション状態更新手順とを備え、前記セッション情報が確定したセッションのパケットを受信した際には、このセッションを終端してトランスポート層以上の処理を行なってデータを中継するようにしたものである。
また、本発明は、送信端末との間に開設した第１のセッションと受信端末との間に開設した第２のセッションとの間で、トランスポート層以上の処理を伴うデータの中継を行うことにより、送受信端末間の通信を実現するセッション中継装置としてコンピュータを機能させるセッション中継プログラムであって、パケット中継手順と、セッション状態登録手順と、セッション状態更新手順とを前記コンピュータに実行させることにより、前記セッション情報が確定したセッションのパケットを受信した際には、このセッションを終端してトランスポート層以上の処理を行なってデータを中継するようにしたものである。
【発明の効果】
【００３６】
本発明によれば、パケット中継手段とセッション中継手段と記憶手段とセッション状態登録手段とセッション状態更新手段とを設けることにより、最初のセッション開始パケットをパケット中継手段によって中継し、以降のパケットによりセッション中継開始に十分な情報を入手できた後に、セッション中継手段によってセッション中継を行う。これにより、本発明では、エンドエンドでセッション開設が終端できる透過的なセッション中継装置を実現することができる。また、本発明では、接続先の端末が応答するか否かと、セッション中継装置から接続先の端末への経路が存在するか否かを確認することができる。その理由は、最初のセッション開始パケットをエンドエンドで終端させるからである。その結果、本発明では、接続先の端末が応答しない場合、若しくはセッション中継装置から先の経路が存在しない場合に、セッションが開設されることを回避することができる。また、本発明では、シーケンス番号をセッション中継装置の前後で同じ値に初期化して揃えることができる。その理由は、最初のセッション開始パケットをエンドエンドで終端させることにより、セッション中継装置を含めたすべての端末でセッション状態の同期がとれるからである。また、本発明では、シーケンス番号だけでなく、アドレス、ポート番号についてもそれぞれセッション中継装置の前後で同じ値に初期化して揃えることができる。
【００３７】
また、本発明では、セッション開始パケットもしくはセッション開始・応答パケット内のオプション情報を変更する変更手段を設けることにより、区間ごとに初期パラメータを変更することができる。その理由は、セッション開始パケットもしくはセッション開始・応答パケットを中継するときにオプションパラメータの変更を行っているからである。
【発明を実施するための最良の形態】
【００３８】
［第１の実施の形態］
以下、本発明の実施の形態について図面を参照して説明する。図１は、本発明の第１の実施の形態となるセッション中継装置の構成を示すブロック図である。本実施の形態のセッション中継装置１−０は、ネットワークからのパケットを入力するパケット入力部１−１と、ネットワークへのパケットを出力するパケット出力部１−２と、セッションを終端し中継するセッション中継部１−３と、セッション中継部１−３のセッション状態を記憶するセッション状態記憶部１−４と、セッションパケットであるか否かを判断するセッション判定部１−５と、セッション中継するかしないかを判断するセッション中継判定部１−６と、セッション開始パケットを監視するセッション開始処理監視部１−７を備える。
【００３９】
パケット入力部１とパケット出力部１−２とセッション判定部１−５とセッション中継判定部１−６とセッション開始処理監視部１−７とは、セッション開始パケットあるいはセッション開始・応答パケットを受信したときに、受信したパケットを書き換えることなくそのままの形で送信先に送り出すパケット中継手段を構成している。また、パケット入力部１−１とパケット出力部１−２とセッション中継部１−３とセッション判定部１−５とセッション中継判定部１−６とは、セッションを終端してデータを中継するセッション中継手段を構成している。
【００４０】
パケット入力部１−１は、ネットワークからパケットを入力する処理を行う。セッション判定部１−５は、パケット入力部１−１から受け取ったパケットがセッションパケットであるか否かを判断する。セッション判定部１−５は、パケット入力部１−１から受け取ったパケットがセッションパケットであれば、このパケットをセッション中継判定部１−６へ渡し、セッションパケット以外のパケットであれば、パケット出力部１−２へ渡す。
【００４１】
セッション中継判定部１−６は、セッション判定部１−５から受け取ったパケットがセッション状態記憶部１−４に登録されているセッションパケットであるか否かを判断する登録セッション判定部１−６−１と、登録セッション判定部１−６−１から受け取ったパケットがセッション開始・応答パケットより後のパケットであるか否かを判断するセッション中継開始判定部１−６−２とを備える。
【００４２】
登録セッション判定部１−６−１は、セッション判定部１−５から受け取ったパケットがセッション状態記憶部１−４に登録されている場合には、このパケットをセッション中継開始判定部１−６−２へ渡し、セッション状態記憶部１−４に登録されていない場合には、受け取ったパケットをセッション開始処理監視部１−７へ渡す。
【００４３】
セッション中継開始判定部１−６−２は、登録セッション判定部１−６−１から受け取ったパケットがセッション開始・応答パケットより後のパケットである場合には、受け取ったパケットをセッション中継部１−３へ渡し、セッション開始・応答パケットより前のパケットである場合には、受け取ったパケットをセッション開始処理監視部１−７へ渡す。
【００４４】
セッション開始処理監視部１−７は、セッション中継判定部１−６から受け取ったパケットがセッション開始パケットであるか否かを判断するセッション開始パケット判定部１−７−１と、セッション開始パケット判定部１−７−１でセッション開始パケットであると判断されたパケットのパラメータをセッション状態記憶部１−４に登録するセッション状態登録部１−７−２と、セッション中継判定部１−６から受け取ったパケットがセッション開始・応答パケットであるか否かを判断するセッション開始・応答パケット判定部１−７−３と、セッション開始・応答パケット判定部１−７−３でセッション開始・応答パケットであると判断されたパケットのパラメータにより、セッション状態記憶部１−４に記憶されているセッション情報を更新するセッション状態更新部１−７−４とを備える。
【００４５】
セッション状態登録部１−７−２は、受信端末から受信すべき受信シーケンス番号及び送信端末に対して送信すべき送信シーケンス番号を確定せずにセッション情報をセッション状態記憶部１−４に仮に登録する。
セッション状態更新部１−７−４は、セッション状態登録部１−７−２によって仮に作成されたセッション情報中の前記受信シーケンス番号及び前記送信シーケンス番号を確定する。セッション処理監視部１−７の処理が終わった後には、パケット出力部１−２にパケットが渡される。
【００４６】
セッション中継部１−３は、セッション状態記憶部１−４のセッション状態によりセッション中継処理を行い、更新されたセッション状態をセッション状態記憶部１−４に記憶させ、パケットをパケット出力部１−２に渡す。パケット出力部１−２は、パケットをネットワークへ出力する処理を行う。
【００４７】
図２は、本実施の形態における送信端末１０とセッション中継装置１−０と受信端末２０の間のデータの流れを示す図である。本実施の形態では、図２に示すように送信端末１０から受信端末２０へとデータを送る場合に、セッション中継装置１−０がデータの中継を実現する場合を想定し、この場合の処理を説明する。
【００４８】
送信端末１０から受信端末２０へパケットデータを送る場合、送信端末１０はセッション中継装置１−０に向けてデータを格納したパケットを送信する。セッション中継端末１−０は、送信端末１０からのパケットを受信し、セッション中継装置１−０がデータ受信処理を行う。これにより、セッション中継装置１−０は、送信端末１０から受け取ったパケットを受信端末２０へと送信する。
【００４９】
次いで、図３を参照して本実施の形態のセッション中継装置１−０による処理について説明する。図３はセッション中継装置１−０の処理の概要を表すフローチャートである。ステップＡ１では、パケット入力部１−１にネットワークからパケットが入力される。セッション判定部１−５は、パケット入力部１−１に入力されたパケットがセッションパケットであるか否かを判断する（ステップＡ２）。セッションパケットである場合は、ステップＡ３へ移り、セッションパケットでない場合は、ステップＡ６へ移る。
【００５０】
セッション中継判定部１−６の登録セッション判定部１−６−１は、ステップＡ２の処理によりセッション判定部１−５からパケットを受け取ると、このパケットがセッション状態記憶部１−４に登録されているセッションのパケットであるか否かを判断する（ステップＡ３）。登録されているセッションのパケットである場合は、ステップＡ４へ移り、セッションパケットでない場合は、ステップＡ７へ移る。
【００５１】
セッション中継判定部１−６のセッション中継開始判定部１−６−２は、ステップＡ３の処理により登録セッション判定部１−６−１からパケットを受け取ると、このパケットがセッション開始・応答パケットより後のパケットであるか否かを判断する（ステップＡ４）。セッション開始・応答パケットより後のパケットである場合は、ステップＡ５に移り、セッション開始・応答パケットより後のパケットでない場合は、ステップＡ７へ移る。
【００５２】
セッション中継部１−３は、ステップＡ４の処理によりセッション中継開始判定部１−６−２からパケットを受け取ると、セッションを終端するセッション中継処理を行い、受け取ったパケットをパケット出力部１−２へ渡す（ステップＡ５）。
パケット出力部１−２は、ステップＡ２の処理によりセッション判定部１−５からパケットを受け取った場合、あるいはステップＡ５の処理によりセッション中継部１−３からパケットを受け取った場合、受け取ったパケットをネットワークに出力する（ステップＡ６）。
【００５３】
一方、セッション開始処理監視部１−７のセッション開始パケット判定部１−７−１は、ステップＡ３又はＡ４の処理によりセッション中継判定部１−６からパケットを受け取ると、このパケットがセッション開始パケットであるか否かを判断する（ステップＡ７）。セッション開始パケットであった場合は、ステップＡ８に移り、セッション開始パケットでなかった場合は、ステップＡ９へ移る。
【００５４】
セッション状態登録部１−７−２は、セッション開始パケット判定部１−７−１でセッション開始パケットであると判断されたパケットのセッションの初期パラメータ（オプションパラメータ）をセッション状態記憶部１−４に登録し、このパケットをパケット出力部１−２へ渡す（ステップＡ８）。
【００５５】
セッション開始・応答パケット判定部１−７−３は、セッション開始パケット判定部１−７−１でセッション開始パケットでないと判断されたパケットが、セッション開始・応答パケットであるか否かを判断する（ステップＡ９）。セッション開始・応答パケットであった場合は、ステップＡ１０に移り、セッション開始・応答パケットでなかった場合は、ステップＡ６に移る。
【００５６】
セッション状態更新部１−７−４は、セッション開始・応答パケット判定部１−７−３でセッション開始・応答パケットであると判断されたパケットのパラメータにより、セッション状態記憶部１−４に記憶されている該当セッションの初期パラメータを更新し、このパケットをパケット出力部１−２へ渡し（ステップＡ１０）、セッション中継処理を開始させる（ステップＡ１１）。
【００５７】
パケット出力部１−２は、ステップＡ８の処理によりセッション状態登録部１−７−２からパケットを受け取った場合、ステップＡ１０の処理によりセッション状態更新部１−７−４からパケットを受け取った場合、あるいはステップＡ９の処理によりセッション開始・応答パケット判定部１−７−３からパケットを受け取った場合、受け取ったパケットをネットワークに出力する（ステップＡ６）。
【００５８】
［第２の実施の形態］
次に、本発明の第２の実施の形態を図面を参照して詳細に説明する。図４は、本発明の第２の実施の形態となるセッション中継装置の構成を示すブロック図であり、図１と同様の構成には同一の符号を付してある。本実施の形態のセッション中継装置１ａ−０は、第１の実施の形態のセッション中継装置１−０において、セッション中継判定部１−６の代わりにセッション中継判定部１−８を設け、セッション開始処理監視部１−７の代わりにセッション開始処理監視部１−９を設けたものである。
【００５９】
セッション中継判定部１−８内では、登録セッション判定部１−８−１の処理は登録セッション判定部１−６−１と同様であるが、セッション中継許可判定部１−８−２の処理がセッション中継開始判定部１−６−２と異なる。
セッション開始処理監視部１−９内では、セッション開始パケット判定部１−９−１の処理はセッション開始パケット判定部１−７−１と同様であり、セッション開始・応答パケット判定部１−９−３の処理はセッション開始・応答パケット判定部１−７−３と同様であるが、セッション状態登録部１−９−２の処理がセッション状態登録部１−７−２と異なり、セッション状態更新部１−９−４の処理がセッション状態更新部１−７−４と異なる。
【００６０】
セッション中継許可判定部１−８−２は、パケットのセッションがセッション状態記憶部１−４でセッションの中継が許可されているか否かを判断し、許可されていればセッション中継部１−３にパケットを渡し、不許可であればセッション開始パケット判定部１−９−１にパケットを渡す。
【００６１】
セッション状態登録部１−９−２は、セッションの初期パラメータを登録して、セッション中継の中継許可のフラグを立てない。
セッション状態更新部１−９−４は、セッションの初期パラメータを更新して、セッション中継の中継許可のフラグを立てる。登録や、更新時のセッションのシーケンス扱いは、第１の実施の形態と同様である。
【００６２】
以下、本実施の形態の動作を図面を参照して詳細に説明する。図５は、セッション中継装置１ａ−０の処理の概要を表すフローチャートである。図５のステップＡ１−Ａ３の処理は、図３のステップＡ１−Ａ３と同一のため、説明は省略する。
【００６３】
セッション中継判定部１−８のセッション中継許可判定部１−８−２は、ステップＡ３の処理により登録セッション判定部１−８−１からパケットを受け取ると、このパケットがセッション状態記憶部１−４でセッション中継が許可されているセッションのパケットであるか否かを判断する（ステップＢ４）。セッション中継が許可されている場合は、ステップＡ５に移り、許可されていない場合は、ステップＡ７に移る。図５のステップＡ５の処理は、図３のステップＡ５と同一のため、説明は省略する。
【００６４】
セッション開始処理監視部１−９のセッション開始パケット判定部１−９−１は、ステップＡ３又はＢ４の処理によりセッション中継判定部１−８からパケットを受け取ると、このパケットがセッション開始パケットであるか否かを判断する（ステップＡ７）。セッション開始パケットであった場合は、ステップＢ８に移り、セッション開始パケットでなかった場合は、ステップＡ９へ移る。
【００６５】
セッション状態登録部１−９−２は、セッション開始パケット判定部１−９−１でセッション開始パケットであると判断されたパケットのセッションの初期パラメータをセッション状態記憶部１−４に登録し、このパケットをパケット出力部１−２へ渡すと共に、このセッションに関してセッション中継の不許可を表すフラグをセッション状態記憶部１−４に登録する（ステップＢ８）。
【００６６】
セッション開始・応答パケット判定部１−９−３は、セッション状態登録部１−９−２でセッション開始パケットでないと判断されたパケットが、セッション開始・応答パケットであるか否かを判断する（ステップＡ９）。セッション開始・応答パケットであった場合は、ステップＢ１０に移り、セッション開始・応答パケットでなかった場合は、ステップＡ６に移る。
【００６７】
セッション状態更新部１−９−４は、セッション開始・応答パケット判定部１−９−３でセッション開始・応答パケットであると判断されたパケットのパラメータにより、セッション状態記憶部１−４に記憶されている該当セッションの初期パラメータを更新し、このパケットをパケット出力部１−２へ渡すと共に、このセッションに関してセッション中継の許可を表すフラグをセッション状態記憶部１−４に登録し、セッションの中継を許可する（ステップＢ１０）。図５のステップＡ１１の処理は、図３のステップＡ１１と同一のため、説明は省略する。
【００６８】
パケット出力部１−２は、ステップＡ２の処理によりセッション判定部１−５からパケットを受け取った場合、ステップＡ５の処理によりセッション中継部１−３からパケットを受け取った場合、ステップＢ８の処理によりセッション状態登録部１−９−２からパケットを受け取った場合、ステップＢ１０の処理によりセッション状態更新部１−９−４からパケットを受け取った場合、あるいはステップＡ９の処理によりセッション開始・応答パケット判定部１−９−３からパケットを受け取った場合、受け取ったパケットをネットワークに出力する（ステップＡ６）。
【００６９】
［第３の実施の形態］
次に、本発明の第３の実施の形態を図面を参照して詳細に説明する。図６は、本発明の第３の実施の形態となるセッション中継装置の構成を示すブロック図であり、図１と同様の構成には同一の符号を付してある。本実施の形態のセッション中継装置１ｂ−０は、第１の実施の形態のセッション中継装置１−０において、セッション中継判定部１−６の代わりにセッション中継判定部１−１０を設けたものである。
【００７０】
セッション中継判定部１−１０内では、登録セッション判定部１−１０−１の処理は登録セッション判定部１−６−１と同様であるが、セッション中継開始判定部１−１０−２の処理がセッション中継開始判定部１−６−２と異なる。
セッション中継開始判定部１−１０−２は、登録セッション判定部１−１０−１から受け取ったパケットがセッション開始・応答パケットに対する応答パケットより後のパケットであるか否かを判断する。セッション中継開始判定部１−１０−２は、登録セッション判定部１−１０−１から受け取ったパケットが応答パケットより後のパケットである場合には、受け取ったパケットをセッション中継部１−３へ渡し、応答パケットより前のパケットである場合には、受け取ったパケットをセッション開始処理監視部１−７へ渡す。
【００７１】
以下、本実施の形態の動作を図面を参照して詳細に説明する。図７は、セッション中継装置１ｂ−０の処理の概要を表すフローチャートである。図７のステップＡ１−Ａ３の処理は、図３のステップＡ１−Ａ３と同一のため、説明は省略する。第１の実施の形態では、セッション開始・応答パケットがセッション中継装置１−０を通過した後にセッションの中継を行っていた（ステップＡ４，Ａ５）。
【００７２】
これに対して、本実施の形態のセッション中継開始判定部１−１０−２は、ステップＡ３の処理により登録セッション判定部１−１０−１からパケットを受け取ると、このパケットがセッション開始・応答パケットに対する応答パケットより後のパケットであるか否かを判断する（ステップＣ４）。セッション開始・応答パケットに対する応答パケットより後のパケットである場合は、ステップＡ５に移り、セッション開始・応答パケットに対する応答パケットより後のパケットでない場合は、ステップＡ７へ移る。
【００７３】
図７のステップＡ５−Ａ１０の処理は、図３のステップＡ５−Ａ１０と同一のため、説明は省略する。
【００７４】
［第４の実施の形態］
次に、本発明の第４の実施の形態を図面を参照して詳細に説明する。図８は、本発明の第４の実施の形態となるセッション中継装置の構成を示すブロック図であり、図４と同様の構成には同一の符号を付してある。本実施の形態のセッション中継装置１ｃ−０は、第２の実施の形態のセッション中継装置１ａ−０において、セッション開始処理監視部１−９の代わりにセッション開始処理監視部１−１２を設けたものである。
【００７５】
セッション開始処理監視部１−１２内では、セッション開始パケット判定部１−１２−１の処理はセッション開始パケット判定部１−９−１と同様であり、セッション状態登録部１−１２−２の処理はセッション状態登録部１−９−２と同様であり、セッション開始・応答パケット判定部１−１２−３の処理はセッション開始・応答パケット判定部１−９−３と同様であるが、セッション状態更新部１−１２−４の処理がセッション状態更新部１−９−４と異なる。また、図４に示したセッション開始処理監視部１−９の構成に対して、セッション開始・応答パケットの応答パケット判定部１−１２−５とセッション中継許可部１−１２−６とが追加されている。
【００７６】
セッション状態更新部１−１２−４は、セッション状態記憶部１−４に記憶されているセッションの初期パラメータを更新する。
セッション開始・応答パケットの応答パケット判定部１−１２−５は、セッション開始・応答パケット判定部１−１２−３においてセッション開始・応答パケットでないと判断されたパケットが、セッション開始・応答パケットに対する応答パケットであるか否かを判断する。応答パケット判定部１−１２−５は、セッション開始・応答パケット判定部１−１２−３から受け取ったパケットが応答パケットである場合には、受け取ったパケットをセッション中継許可部１−１２−６へ渡し、応答パケットでない場合には、受け取ったパケット出力部１−２へ渡す。
セッション中継許可部１−１２−６は、セッション状態記憶部１−４にセッション中継許可のフラグを立てる。
【００７７】
以下、本実施の形態の動作を図面を参照して詳細に説明する。図９は、セッション中継装置１ｃ−０の処理の概要を表すフローチャートである。図９のステップＡ１−Ａ３，Ａ５−Ａ７，Ｂ４，Ｂ８の処理は、図５のステップＡ１−Ａ３，Ａ５−Ａ７，Ｂ４，Ｂ８と同一のため、説明は省略する。第２の実施の形態では、セッション開始・応答パケットがセッション中継装置１ａ−０を通過したときにセッションの中継を許可していた（ステップＡ９，Ｂ１０）。
【００７８】
これに対して、本実施の形態のセッション開始・応答パケット判定部１−１２−３は、セッション状態登録部１−１２−２でセッション開始パケットでないと判断されたパケットが、セッション開始・応答パケットであるか否かを判断する（ステップＡ９）。セッション開始・応答パケットであった場合は、ステップＤ１０に移り、セッション開始・応答パケットでなかった場合は、ステップＤ２０に移る。
【００７９】
セッション状態更新部１−１２−４は、セッション開始・応答パケット判定部１−１２−３でセッション開始・応答パケットであると判断されたパケットのパラメータにより、セッション状態記憶部１−４に記憶されている該当セッションの初期パラメータを更新し、このパケットをパケット出力部１−２へ渡す（ステップＤ１０）。
【００８０】
一方、セッション開始・応答パケットの応答パケット判定部１−１２−５は、セッション開始・応答パケット判定部１−１２−３でセッション開始・応答パケットでないと判断されたパケットが、セッション開始・応答パケットに対する応答パケットである否かを判断する（ステップＤ２０）。応答パケットであった場合は、ステップＤ２１に移り、応答パケットでなかった場合は、ステップＡ６に移る。
【００８１】
セッション中継許可部１−１２−６は、セッション開始・応答パケットの応答パケット判定部１−１２−５でセッション開始・応答パケットに対する応答パケットであると判断された場合、この応答パケットをパケット出力部１−２へ渡すと共に、該当セッションに関してセッション中継の許可を表すフラグをセッション状態記憶部１−４に登録する（ステップＤ２１）。
【００８２】
パケット出力部１−２は、ステップＡ２の処理によりセッション判定部１−５からパケットを受け取った場合、ステップＡ５の処理によりセッション中継部１−３からパケットを受け取った場合、ステップＢ８の処理によりセッション状態登録部１−１２−２からパケットを受け取った場合、ステップＤ１０の処理によりセッション状態更新部１−１２−４からパケットを受け取った場合、ステップＤ２０の処理によりセッション開始・応答パケットの応答パケット判定部１−１２−５からパケットを受け取った場合、あるいはステップＤ２１の処理によりセッション中継許可部１−１２−６からパケットを受け取った場合、受け取ったパケットをネットワークに出力する（ステップＡ６）。登録や、更新時のセッションのシーケンス扱いは、第１の実施の形態と同様である。
【００８３】
［第５の実施の形態］
次に、本発明の第５の実施の形態を図面を参照して詳細に説明する。図１０は、本発明の第５の実施の形態となるセッション中継装置の構成を示すブロック図であり、図４と同様の構成には同一の符号を付してある。本実施の形態は、送信端末１０とセッション中継装置１ｄ−０間と、セッション中継装置１ｄ−０と受信端末２０間で異なった初期セッションパラメータでセッションを開設するためのものである。
【００８４】
本実施の形態のセッション中継装置１ｄ−０は、図４に示したセッション中継装置１ａ−０の構成に対して、オプションパラメータ変更算出部１−２０とオプションパラメータ変更部１−２１とを追加したものである。オプションパラメータ変更算出部１−２０とオプションパラメータ変更部１−２１とは、セッション開始パケットもしくはセッション開始・応答パケット内のオプション情報を変更する変更手段を構成している。
【００８５】
オプションパラメータ変更算出部１−２０は、セッション開始処理監視部１−９（又は１−７，１−１２）によってセッション状態記憶部１−４に登録又は更新されるオプションパラメータと、セッション情報記憶部１−４に登録されているオプションパラメータとを比較して、オプションパラメータの有無や変更後のオプションパラメータの値を算出し、セッション状態記憶部１−４に登録する。
【００８６】
オプションパラメータ変更部１−２１は、セッション開始処理監視部１−９（又は１−７，１−１２）からパケット出力部１−２に渡されるセッション開始パケット又はセッション開始・応答パケットのオプションパラメータを、オプションパラメータ変更算出部１−２０で算出された変更後のオプションパラメータの値に基づいて変更、追加、若しくは削除する。
【００８７】
本実施の形態は、セッション開始処理監視部１−９（又は１−７，１−１２）によりセッション開始パケット又はセッション開始・応答パケットのオプションパラメータをセッション情報記憶部１−４に登録又は更新する際の処理を変更したものであるため、第２、第３、第４の実施の形態に適用可能である。
【００８８】
以下、本実施の形態の動作を図面を参照して詳細に説明する。図１１は、セッション中継装置１ｄ−０の処理の概要を表すフローチャートである。図１１のステップＡ１−Ａ３，Ａ５−Ａ７，Ａ８（又はＢ８），Ａ９，Ａ１０（又はＢ１０，Ｄ１０）の処理は、図５、図７、図９のステップＡ１−Ａ３，Ａ５−Ａ７，Ａ８（又はＢ８），Ａ９，Ａ１０（又はＢ１０，Ｄ１０）と同一のため、説明は省略する。図１１のステップＢ９の処理は、図５、図７、図９のステップＢ４又はＣ４と同一である。
【００８９】
オプションパラメータ変更算出部１−２０は、セッション状態登録部１−７−２又は１−９−２によるステップＡ８又はＢ８の処理によってセッション状態記憶部１−４に登録されたオプションパラメータ、若しくはセッション状態更新部１−７−４，１−９−４又は１−１２−４によるステップＡ１０，Ｂ１０又はＤ１０の処理によって更新されたオプションパラメータと、セッション情報記憶部１−４に登録されているオプションパラメータとを比較して、変更後のオプションパラメータの値を算出し、セッション状態記憶部１−４に登録する（ステップＥ３０）。
【００９０】
オプションパラメータ変更部１−２１は、セッション開始処理監視部１−７，１−９又は１−１２からパケット出力部１−２に渡されるセッション開始パケット又はセッション開始・応答パケットのオプションパラメータを、オプションパラメータ変更算出部１−２０で算出された変更後のオプションパラメータの値に基づいて変更、追加、若しくは削除した上で、セッション開始パケット又はセッション開始・応答パケットをパケット出力部１−２に渡す（ステップＥ３１）。
【００９１】
なお、第１〜第５の実施の形態では、片方向の通信例で説明したが、双方向の通信であっても問題ない。また、第１〜第５の実施の形態では、端末装置が２つ、セッション中継装置が１つの場合について説明したが、端末装置数、およびセッション中継装置数には制限がない。
【００９２】
［第６の実施の形態］
次に、本発明の第６の実施の形態を図面を参照して詳細に説明する。本実施の形態は、第１の実施の形態をより具体的に説明するものである。本実施の形態は、セッションとしてＴＣＰを用いた場合で説明する。第１の実施の形態において、セッション開始パケットと説明したパケットは、ＴＣＰのＳＹＮパケットとなり、セッション開始・応答パケットと説明したパケットは、ＴＣＰのＳＹＮ・ＡＣＫパケットとなる。
【００９３】
図１２は、図２のネットワーク構成での図１のセッション中継装置１−０によるＴＣＰ中継のシーケンス図である。図１２は、ＩＰアドレスＡを持つ送信端末１０からＩＰアドレスＢを持つ受信端末２０のポート番号８０へデータを転送する場合のシーケンスを表している。
【００９４】
最初に、送信端末１０は、アドレス：Ａ、ポート：ｘ、シーケンス番号：１のコネクション開始ＳＹＮパケットを受信端末２０のアドレス：Ｂ、ポート：８０へ送る（ステップ４００）。経路途中にあるセッション中継装置１−０では、このＳＹＮパケットがパケット入力部１−１に入力され、パケット入力部１−１からセッション判定部１−５に渡される。セッション判定部１−５は、このＳＹＮパケットをセッションパケットであると判断し、登録セッション判定部１−６−１にパケットを渡す。
【００９５】
登録セッション判定部１−６−１は、セッション判定部１−５から受け取ったパケットをセッション状態記憶部１−４に登録されていないセッションのパケットであると判断し、受け取ったパケットをセッション開始パケット判定部１−７−１へ渡す。セッション開始パケット判定部１−７−１は、登録セッション判定部１−６−１から受け取ったパケットをセッション開始（ＳＹＮ）パケットであると判断する。セッション状態登録部１−７−２は、このセッション開始パケットのセッションの初期パラメータをセッション状態記憶部１−４に登録し、セッション開始パケットをパケット出力部１−２に渡す。こうして、セッション中継が開始される。
【００９６】
このとき、セッション状態登録部１−７−２により、少なくとも受信端末２０への送信シーケンス番号と送信端末１０からの受信シーケンス番号とが初期パラメータとして登録される。この２つのシーケンス番号は、セッション開始（ＳＹＮ）パケットのシーケンス番号で初期化される。セッション状態記憶部１−４に登録されるセッションの情報のうち、送信端末１０への送信シーケンス番号と受信端末２０からの受信シーケンス番号とは、確定していないため、セッション情報全体としては、不完全なものである。
【００９７】
パケット出力部１−２は、セッション状態登録部１−７−２から受け取ったＳＹＮパケットを受信端末２０に向けてネットワークに出力する（ステップ４０１）。このとき、セッション中継装置１−０の前後で、ＳＹＮパケット内のパケットの情報が異なることはない。
受信端末２０は、セッション中継装置１−０からＳＹＮパケットを受け取り、送信端末１０へ向けてＳＹＮ・ＡＣＫパケットを返す（ステップ４０２）。
【００９８】
経路途中にあるセッション中継装置１−０では、このＳＹＮ・ＡＣＫパケットがパケット入力部１−１に入力され、パケット入力部１−１からセッション判定部１−５に渡される。セッション判定部１−５は、このＳＹＮ・ＡＣＫパケットをセッションパケットであると判断し、登録セッション判定部１−６−１にパケットを渡す。
【００９９】
登録セッション判定部１−６−１は、セッション判定部１−５から受け取ったパケットをセッション状態記憶部１−４に登録されているセッションのパケットであると判断し、受け取ったパケットをセッション中継開始判定部１−６−２へ渡す。セッション中継開始判定部１−６−２は、登録セッション判定部１−６−１から受け取ったパケットがセッション開始・応答（ＳＹＮ・ＡＣＫ）パケットより後のパケットではないと判断し、受け取ったパケットをセッション開始パケット判定部１−７−１へ渡す。
【０１００】
セッション開始パケット判定部１−７−１は、セッション中継開始判定部１−６−２から受け取ったパケットをセッション開始（ＳＹＮ）パケットではないと判断し、受け取ったパケットをセッション開始・応答パケット判定部１−７−３に渡す。セッション開始・応答パケット判定部１−７−３は、セッション開始パケット判定部１−７−１から受け取ったパケットをセッション開始・応答パケット（ＳＹＮ・ＡＣＫ）パケットであると判断する。セッション状態更新部１−７−４は、このセッション開始・応答パケットのパラメータにより、セッション状態記憶部１−４に記憶されている該当セッションの初期パラメータを更新し、セッション開始・応答パケットをパケット出力部１−２に渡す。こうして、セッション中継が開始される。
【０１０１】
このとき、セッション状態更新部１−７−４により、初期パラメータのうち少なくとも送信端末１０への送信シーケンス番号と受信端末２０からの受信シーケンス番号とが更新される。この２つのシーケンス番号は、セッション開始・応答（ＳＹＮ・ＡＣＫ）パケットのシーケンス番号で初期化される。
パケット出力部１−２は、セッション状態更新部１−７−４から受け取ったＳＹＮ・ＡＣＫパケットを送信端末１０に向けてネットワークに出力する（ステップ４０３）。このとき、セッション中継装置１−０の前後で、ＳＹＮ・ＡＣＫパケット内のパケットの情報が異なることはない。
【０１０２】
送信端末１０は、セッション中継装置１−０からのＳＹＮ・ＡＣＫパケットに対して、ＡＣＫパケットを返す（ステップ４０４）。セッション中継装置１−０は、セッション中継部１−３によって、ＳＹＮ・ＡＣＫパケットに対するＡＣＫパケットを受信端末２０へ返す（ステップ４０５）。ＡＣＫパケットが受信端末２０に届くことにより、エンドエンドの送信端末１０と受信端末２０間でセッションが確立されて、以後、通信が開始される。すなわち、送信端末１０とセッション中継装置１−０との間でデータが転送され（ステップ４０６，４０７）、またセッション中継装置１−０と受信端末２０との間でデータが転送される（ステップ４０８，４０９）。
【０１０３】
［第７の実施の形態］
次に、本発明の第７の実施の形態を図面を参照して詳細に説明する。本実施の形態は、第３の実施の形態をより具体的に説明するものである。本実施の形態は、セッションとしてＴＣＰを用いた場合で説明する。第３の実施の形態において、セッション開始パケットと説明したパケットは、ＴＣＰのＳＹＮパケットとなる。
【０１０４】
図１３は、図２のネットワーク構成での図６のセッション中継装置１ｂ−０によるＴＣＰ中継のシーケンス図である。図１３は、ＩＰアドレスＡを持つ送信端末１０からＩＰアドレスＢを持つ受信端末２０のポート番号８０へデータを転送する場合のシーケンスを表している。
【０１０５】
最初に、送信端末１０は、アドレス：Ａ、ポート：ｘ、シーケンス番号：１のコネクション開始ＳＹＮパケットを受信端末２０のアドレス：Ｂ、ポート：８０へ送る（ステップ５００）。経路途中にあるセッション中継装置１ｂ−０では、このＳＹＮパケットがパケット入力部１−１に入力され、パケット入力部１−１からセッション判定部１−５に渡される。セッション判定部１−５は、このＳＹＮパケットをセッションパケットであると判断し、登録セッション判定部１−１０−１にパケットを渡す。
【０１０６】
登録セッション判定部１−１０−１は、セッション判定部１−５から受け取ったパケットをセッション状態記憶部１−４に登録されていないセッションのパケットであると判断し、受け取ったパケットをセッション開始パケット判定部１−７−１へ渡す。セッション開始パケット判定部１−７−１は、登録セッション判定部１−１０−１から受け取ったパケットをセッション開始（ＳＹＮ）パケットであると判断する。セッション状態登録部１−７−２は、このセッション開始パケットのセッションの初期パラメータをセッション状態記憶部１−４に登録し、セッション開始パケットをパケット出力部１−２に渡す。こうして、セッション中継が開始される。
【０１０７】
パケット出力部１−２は、セッション状態登録部１−７−２から受け取ったＳＹＮパケットを受信端末２０に向けてネットワークに出力する（ステップ５０１）。このとき、セッション中継装置１ｂ−０の前後で、ＳＹＮパケット内のパケットの情報が異なることはない。
受信端末２０は、セッション中継装置１ｂ−０からＳＹＮパケットを受け取り、送信端末１０へ向けてＳＹＮ・ＡＣＫパケットを返す（ステップ５０２）。
【０１０８】
経路途中にあるセッション中継装置１ｂ−０では、このＳＹＮ・ＡＣＫパケットがパケット入力部１−１に入力され、パケット入力部１−１からセッション判定部１−５に渡される。セッション判定部１−５は、このＳＹＮ・ＡＣＫパケットをセッションパケットであると判断し、登録セッション判定部１−１０−１にパケットを渡す。
【０１０９】
登録セッション判定部１−１０−１は、セッション判定部１−５から受け取ったパケットをセッション状態記憶部１−４に登録されているセッションのパケットであると判断し、受け取ったパケットをセッション中継開始判定部１−１０−２へ渡す。セッション中継開始判定部１−１０−２は、登録セッション判定部１−１０−１から受け取ったパケットがセッション開始・応答（ＳＹＮ・ＡＣＫ）パケットに対する応答（ＡＣＫ）パケットより後のパケットではないと判断し、受け取ったパケットをセッション開始パケット判定部１−７−１へ渡す。
【０１１０】
セッション開始パケット判定部１−７−１は、セッション中継開始判定部１−１０−２から受け取ったパケットをセッション開始（ＳＹＮ）パケットではないと判断し、受け取ったパケットをセッション開始・応答パケット判定部１−７−３に渡す。セッション開始・応答パケット判定部１−７−３は、セッション開始パケット判定部１−７−１から受け取ったパケットをセッション開始・応答パケット（ＳＹＮ・ＡＣＫ）パケットであると判断する。セッション状態更新部１−７−４は、このセッション開始・応答パケットのパラメータにより、セッション状態記憶部１−４に記憶されている該当セッションの初期パラメータを更新し、セッション開始・応答パケットをパケット出力部１−２に渡す。
【０１１１】
パケット出力部１−２は、セッション状態更新部１−７−４から受け取ったＳＹＮ・ＡＣＫパケットを送信端末１０に向けてネットワークに出力する（ステップ５０３）。このとき、セッション中継装置１ｂ−０の前後で、ＳＹＮ・ＡＣＫパケット内のパケットの情報が異なることはない。
【０１１２】
送信端末１０は、セッション中継装置１ｂ−０からのＳＹＮ・ＡＣＫパケットに対して、ＡＣＫパケットを受信端末２０へ返す（ステップ５０４）。
経路途中にあるセッション中継装置１ｂ−０では、このＡＣＫパケットがパケット入力部１−１に入力され、パケット入力部１−１からセッション判定部１−５に渡される。セッション判定部１−５は、このＡＣＫパケットをセッションパケットであると判断し、登録セッション判定部１−１０−１にパケットを渡す。
【０１１３】
登録セッション判定部１−１０−１は、セッション判定部１−５から受け取ったパケットをセッション状態記憶部１−４に登録されているセッションのパケットであると判断し、受け取ったパケットをセッション中継開始判定部１−１０−２へ渡す。セッション中継開始判定部１−１０−２は、登録セッション判定部１−１０−１から受け取ったパケットがセッション開始・応答（ＳＹＮ・ＡＣＫ）パケットに対する応答（ＡＣＫ）パケットより後のパケットではないと判断し、受け取ったパケットをセッション開始パケット判定部１−７−１へ渡す。
【０１１４】
セッション開始パケット判定部１−７−１は、セッション中継開始判定部１−１０−２から受け取ったパケットをセッション開始（ＳＹＮ）パケットではないと判断し、受け取ったパケットをセッション開始・応答パケット判定部１−７−３に渡す。セッション開始・応答パケット判定部１−７−３は、セッション開始パケット判定部１−７−１から受け取ったパケットをセッション開始・応答パケット（ＳＹＮ・ＡＣＫ）パケットでないと判断し、受け取ったパケットをパケット出力部１−２に渡す。
【０１１５】
パケット出力部１−２は、セッション開始・応答パケット判定部１−７−３から受け取ったＡＣＫパケットを受信端末２０に向けてネットワークに出力する（ステップ５０５）。このとき、セッション中継装置１ｂ−０の前後で、ＡＣＫパケット内のパケットの情報が異なることはない。
【０１１６】
ＡＣＫパケットが受信端末２０に届くことにより、エンドエンドの送信端末１０と受信端末２０間でセッションが確立されて、以後、通信が開始される。送信端末１０とセッション中継装置１ｂ−０との間でデータが転送され（ステップ５０６，５０７）、またセッション中継装置１ｂ−０と受信端末２０との間でデータが転送される（ステップ５０８，５０９）。
【０１１７】
［第８の実施の形態］
次に、本発明の第８の実施の形態を図面を参照して詳細に説明する。本実施の形態は、第５の実施の形態をより具体的に説明するものである。本実施の形態は、セッションとしてＴＣＰを用いた場合で説明する。第５の実施の形態において、セッション開始パケットと説明したパケットは、ＴＣＰのＳＹＮパケットとなる。オプションパラメータは、ＳＹＮパケット内のアドレス、ポート番号、シーケンス番号、その他の各種オプション情報である。
【０１１８】
オプションパラメータ変更算出部１−２０の動作は、双方向のＳＹＮパケットのやり取りを考慮する必要がある場合と、一方向の通知で済む場合と、エンドエンドのネゴシエーションを考慮する必要がある場合によって異なる。
最初に、双方向のＳＹＮパケットのやり取りを考慮する場合の具体例を以下にあげる。ここでは、オプションの変更例を３つ挙げる。
【０１１９】
最初に、ＴＣＰの広告ウインドウのシフト値を変更するウインドウスケール（Window Scale）オプションの例について説明する。このオプションにより、１６ｂｉｔで表現できない値以上の広告ウインドウを端末に告知することができる。ウインドウスケールオプションについては、例えば前述の非特許文献３や、文献「V.Jacobson， R.Braden，D.Borman，“TCP Extensions for High Performance”，IETF，RFC 1323，1992（http://www.ietf.org/rfc/rfc1323.txt） 」に詳しく記述されている。
【０１２０】
このウインドウスケールオプションの変更例としては、ウインドウスケールオプションの有無、区間ごとの適切なウインドウスケールオプションへの変更がある。具体的には、以下の通りである。送信端末１０からウインドウスケールオプション無しでセッション中継装置１ｄ−０にＳＹＮパケットが送られた場合、オプションパラメータ変更算出部１−２０は、ウインドウスケールオプションを有効にする。そして、オプションパラメータ変更部１−２１は、受信したＳＹＮパケットのウインドウスケールオプションの値を５に変更して、このＳＹＮパケットをパケット出力部１−２を介して受信端末２０へ送る。
【０１２１】
受信端末２０から返ってきたＳＹＮ・ＡＣＫパケットにおいてウインドウスケールオプションが有効となっている場合には、以後セッション中継装置１ｄ−０と受信端末２０との間の通信でウインドウスケールオプションを有効にして通信ができる。
【０１２２】
仮に、受信端末２０から返ってきたＳＹＮ・ＡＣＫパケットにおいてウインドウスケールオプションが無効となっている場合には、受信端末２０ではウインドウスケールオプションが無効であるため、セッション中継装置１ｄ−０と受信端末２０との間でウインドウスケールオプションを使うことはできない。この場合、オプションパラメータ変更算出部１−２０は、ウインドウスケールオプションが有効か無効かの判定を行い、無効と判定すると、セッション中継装置１ｄ−０と受信端末２０との間のセッションに関してセッション状態記憶部１−４に登録されている情報のうち、ウインドウスケールオプションの有効／無効についての情報を使用無効に更新する。
【０１２３】
次に、ＴＣＰのＳＡＣＫ（Ｓｅｌｅｃｔｉｖｅ  ＡＣＫ）オプションの有効化フラグの例について説明する。ＳＡＣＫとは、パケットロスしたときに、ロスしていない連続セグメントを通知するオプションである。ＳＡＣＫオプションについては、例えば文献「S.Floyd，J.Mahdavi，M.Mathis，M.Podolsky，“An Extension to the Selective Acknowledgement (SACK) Option for TCP”，IETF，RFC 2883，2000（http://www.ietf.org/rfc/rfc2883.txt）」に詳しく記述されている。
【０１２４】
送信端末１０からＳＡＣＫオプション無しでセッション中継装置１ｄ−０にＳＹＮパケットが送られた場合、オプションパラメータ変更算出部１−２０は、ＳＡＣＫオプションを有効にする。そして、オプションパラメータ変更部１−２１は、受信したＳＹＮパケットのＳＡＣＫオプションを有効にして、このＳＹＮパケットをパケット出力部１−２を介して受信端末２０へ送る。
【０１２５】
受信端末２０から返ってきたＳＹＮ・ＡＣＫパケットにおいてＳＡＣＫオプションが有効となっている場合には、以後セッション中継装置１ｄ−０と受信端末２０との間の通信でＳＡＣＫオプションを有効にして通信ができる。
【０１２６】
仮に、受信端末２０から返ってきたＳＹＮ・ＡＣＫパケットにおいてＳＡＣＫオプションが無効となっている場合には、受信端末２０ではＳＡＣＫオプションが無効であるため、セッション中継装置１ｄ−０と受信端末２０との間でＳＡＣＫオプションを使うことはできない。この場合、オプションパラメータ変更算出部１−２０は、ＳＡＣＫオプションが有効か無効かの判定を行い、無効と判定すると、セッション中継装置１ｄ−０と受信端末２０との間のセッションに関してセッション状態記憶部１−４に登録されている情報のうち、ＳＡＣＫオプションの有効／無効についての情報を使用無効に更新する。
【０１２７】
次に、ＴＣＰのタイムスタンプ（Time Stamp）オプションの有効化フラグの例について説明する。タイムスタンプオプションとは、送出するパケットに時刻情報を載せて、該当パケットに対するＡＣＫパケットを受信側が返すときにその時刻情報とともに送り返すことにより，精度の高い往復時間の計測を行うオプションである。タイムスタンプオプションについては、例えば前述の非特許文献３や、文献「V.Jacobson， R.Braden，D.Borman，“TCP Extensions for High Performance”，IETF，RFC 1323，1992（http://www.ietf.org/rfc/rfc1323.txt） 」に詳しく記述されている。
【０１２８】
送信端末１０からタイムスタンプオプション無しでセッション中継装置１ｄ−０にＳＹＮパケットが送られた場合、オプションパラメータ変更算出部１−２０は、タイムスタンプオプションを有効にする。そして、オプションパラメータ変更部１−２１は、受信したＳＹＮパケットのタイムスタンプオプションを有効にして、このＳＹＮパケットをパケット出力部１−２を介して受信端末２０へ送る。
【０１２９】
受信端末２０から返ってきたＳＹＮ・ＡＣＫパケットにおいてタイムスタンプオプションが有効となっている場合には、以後セッション中継装置１ｄ−０と受信端末２０との間の通信でタイムスタンプオプションを有効にして通信ができる。
【０１３０】
仮に、受信端末２０から返ってきたＳＹＮ・ＡＣＫパケットにおいてタイムスタンプオプションが無効となっている場合には、受信端末２０ではタイムスタンプオプションが無効であるため、セッション中継装置１ｄ−０と受信端末２０との間でタイムスタンプオプションを使うことはできない。この場合、オプションパラメータ変更算出部１−２０は、タイムスタンプオプションが有効か無効かの判定を行い、無効と判定すると、セッション中継装置１ｄ−０と受信端末２０との間のセッションに関してセッション状態記憶部１−４に登録されている情報のうち、タイムスタンプオプションの有効／無効についての情報を使用無効に更新する。
【０１３１】
次に、一方向の通知で済む場合について、オプションパラメータ変更算出部１−２０の動作を説明する。一方向の通知で済む例としては、最大セグメントサイズを告知するＭＳＳ（Maximum Segment Size）オプションがある。ＭＳＳオプションについては、例えば文献「J.Postel，“The TCP Maximum Segment Size and Related Topics”，IETF，RFC 879，1983（http://www.ietf.org/rfc/rfc879.txt）」に詳しく記述されている。
【０１３２】
このＭＳＳオプションの変更例としては、ＴＣＰヘッダ中のオプション領域の増加によるＭＳＳ値の調節がある。具体的には以下の通りである。送信端末１０からＭＳＳ＝１４６０として通知されて、セッション中継装置１ｄ−０によってオプションヘッダを２０ｂｙｔｅｓ増加させる場合には、オプションパラメータ変更算出部１−２０でＭＳＳ＝１４４０を算出する。そして、オプションパラメータ変更部１−２１は、受信したＳＹＮパケットのＭＳＳオプションの値を１４４０に変更して、このＳＹＮパケットをパケット出力部１−２を介して受信端末２０へ送る。ＳＹＮ・ＡＣＫパケットに対しても同様の処理を行うことができる。オプションヘッダのサイズが増加するオプションの例としては、ＳＡＣＫオプション、タイムスタンプオプションがある。
【０１３３】
次に、エンドエンドのネゴシエーションを考慮する必要がある場合について、オプションパラメータ変更算出部１−２０の動作を説明する。エンドエンドのネゴシエーションを考慮する必要がある例としては、セッション中継装置１ｄ−０においてＴＣＰセグメントの結合・再構成を行わず、ＴＣＰセグメントの総サイズが変更されない場合のＳＡＣＫオプション、タイムスタンプオプションの扱いがある。これら二つのオプションは、オプション領域を増やす必要があるため、送信端末１０と受信端末２０でオプションの有無のネゴシエーションが取れないと、ＴＣＰヘッダのオプション領域のサイズの不整合が生じて、セグメントの結合・再構成無しにはオプションを追加できない可能性がでてくる。
【０１３４】
ＳＡＣＫオプションの場合を例に挙げて説明すると、セッション中継装置１ｄ−０の動作は具体的には以下の通りである。
まず、送信端末１０からＳＡＣＫオプション付きでセッション中継装置１ｄ−０にＳＹＮパケットが送られた場合、セッション監視処理監視部１−７は、セッション状態記憶部１−４にＳＡＣＫオプション有りと登録する。そして、セッション中継装置１ｄ−０から受信端末２０にＳＡＣＫオプション付きのＳＹＮパケットが送られる。
【０１３５】
受信端末２０がＳＡＣＫオプションに対応していない場合、受信端末２０からＳＡＣＫオプション無しでセッション中継装置１ｄ−０にＳＹＮ・ＡＣＫパケットが返される。オプションパラメータ変更算出部１−２０は、ＳＡＣＫオプションが無効と判定して、セッション中継装置１ｄ−０と受信端末２０との間のセッションに関してセッション状態記憶部１−４に登録されている情報のうち、ＳＡＣＫオプションの有効／無効についての情報を使用無効に変更する。そして、オプションパラメータ変更部１−２１は、受信したＳＹＮ・ＡＣＫパケットのＳＡＣＫオプションを無しに変更して、このＳＹＮ・ＡＣＫパケットをパケット出力部１−２を介して送信端末１０へ送る。
【０１３６】
一方、送信端末１０からのＳＹＮパケットで無効だったオプションを、セッション中継装置１ｄ−０で有効にして、受信端末２０へ送信する場合、セッション中継装置１ｄ−０は、受信端末２０からのＳＹＮ・ＡＣＫパケット内の該当オプションを無効にして、送信端末１０に送信する必要がある。
【０１３７】
なお、第１〜第８の実施の形態のセッション中継装置１−０，１ａ−０，１ｂ−０，１ｃ−０，１ｄ−０は、ＣＰＵと記憶装置とインタフェースとを備えたコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。コンピュータをセッション中継装置として機能させるためのセッション中継プログラムは、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、メモリカードなどの記録媒体に記録された状態で提供される。ＣＰＵは、読み込んだプログラムを記憶装置に書き込み、このプログラムに従って第１の実施の形態〜第８の実施の形態で説明した処理を実行する。
【産業上の利用可能性】
【０１３８】
本発明は、例えばＴＣＰ中継器に適用することができ、またプロキシ、暗号化装置といったセッション中継装置にも適用可能である。
【図面の簡単な説明】
【０１３９】
【図１】本発明の第１の実施の形態となるセッション中継装置の構成を示すブロック図である。
【図２】本発明の第１の実施の形態における送信端末とセッション中継装置と受信端末の間のデータの流れを示す図である。
【図３】本発明の第１の実施の形態におけるセッション中継装置の処理の概要を示すフローチャートである。
【図４】本発明の第２の実施の形態となるセッション中継装置の構成を示すブロック図である。
【図５】本発明の第２の実施の形態におけるセッション中継装置の処理の概要を示すフローチャートである。
【図６】本発明の第３の実施の形態となるセッション中継装置の構成を示すブロック図である。
【図７】本発明の第３の実施の形態におけるセッション中継装置の処理の概要を示すフローチャートである。
【図８】本発明の第４の実施の形態となるセッション中継装置の構成を示すブロック図である。
【図９】本発明の第４の実施の形態におけるセッション中継装置の処理の概要を示すフローチャートである。
【図１０】本発明の第５の実施の形態となるセッション中継装置の構成を示すブロック図である。
【図１１】本発明の第５の実施の形態におけるセッション中継装置の処理の概要を示すフローチャートである。
【図１２】本発明の第６の実施の形態のセッション中継装置による送信端末とセッション中継装置と受信端末の間のＴＣＰ中継のシーケンス図である。
【図１３】本発明の第７の実施の形態のセッション中継装置による送信端末とセッション中継装置と受信端末の間のＴＣＰ中継のシーケンス図である。
【図１４】従来のセッション中継装置の構成例を示すブロック図である。
【図１５】図１４のセッション中継装置による送信端末とセッション中継装置と受信端末の間のＴＣＰ中継のシーケンス図である。
【図１６】従来の片側透過型のセッション中継装置の構成例を示すブロック図である。
【図１７】図１６のセッション中継装置による送信端末とセッション中継装置と受信端末の間のＴＣＰ中継のシーケンス図である。
【図１８】従来の両側透過型のセッション中継装置の構成例を示すブロック図である。
【図１９】図１８のセッション中継装置による送信端末とセッション中継装置と受信端末の間のＴＣＰ中継のシーケンス図である。
【符号の説明】
【０１４０】
１−０、１ａ−０、１ｂ−０、１ｃ−０、１ｄ−０…セッション中継装置、１−１…パケット入力部、１−２…パケット出力部、１−３…セッション中継部、１−４…セッション状態記憶部、１−５…セッション判定部、１−６、１−８、１−１０…セッション中継判定部、１−６−１、１−８−１、１−１０−１…登録セッション判定部、１−６−２、１−１０−２…セッション中継開始判定部、１−７、１−９、１−１２…セッション開始処理監視部、１−７−１、１−９−１，１−１２−１…セッション開始パケット判定部、１−７−２、１−９−２、１−１２−２…セッション状態登録部、１−７−３、１−９−３、１−１２−３…セッション開始・応答パケット判定部、１−７−４、１−９−４、１−１２−４…セッション状態更新部、１−８−２…セッション中継許可判定部、１−１２−５…セッション開始・応答パケットの応答パケット判定部、１−１２−６…セッション中継許可部、１−２０…オプションパラメータ変更算出部、１−２１…オプションパラメータ変更部、１０…送信端末、２０…受信端末。
【図１】
2006279394.tif 000003
【図２】
2006279394.tif 000004
【図３】
2006279394.tif 000005
【図４】
2006279394.tif 000006
【図５】
2006279394.tif 000007
【図６】
2006279394.tif 000008
【図７】
2006279394.tif 000009
【図８】
2006279394.tif 000010
【図９】
2006279394.tif 000011
【図１０】
2006279394.tif 000012
【図１１】
2006279394.tif 000013
【図１２】
2006279394.tif 000014
【図１３】
2006279394.tif 000015
【図１４】
2006279394.tif 000016
【図１５】
2006279394.tif 000017
【図１６】
2006279394.tif 000018
【図１７】
2006279394.tif 000019
【図１８】
2006279394.tif 000020
【図１９】
2006279394.tif 000021