(57)【特許請求の範囲】
【請求項１】
ユーザ端末とサーバ装置との間で通信の中継を行う通信装置であって、
前記サーバ装置に対するサービス要求を前記ユーザ端末から受信した場合に、前記サーバ装置に対する接続要求を、複数種類のIPプロトコルスタックのそれぞれを用いて送信する接続要求送信手段と、
前記接続要求に対する応答として前記サーバ装置から受信した応答に用いられたIPプロトコルスタックを用いて、前記サーバ装置との間のセッションを確立するセッション確立手段と、
前記セッションを用いて前記サービス要求を前記サーバ装置に送信し、当該サーバ装置から当該サービス要求に対する応答を受信し、当該応答を前記ユーザ端末に送信する中継手段とを備え、
前記接続要求送信手段は、前記ユーザ端末から受信するサービス要求の送信に用いられたIPプロトコルスタックの種類を判別し、当該種類に応じて、前記複数種類のIPプロトコルスタックにより送信する前記接続要求の送信順を決定し、決定した送信順で各IPプロトコルスタックにより前記接続要求を順次前記サーバ装置に送信する
ことを特徴とする通信装置。
【請求項２】
前記接続要求送信手段は、前記ユーザ端末から受信するサービス要求の送信に用いられたIPプロトコルスタックと同じIPプロトコルスタックを用いて最初の接続要求を前記サーバ装置に送信する
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記セッション確立手段は、前記サーバ装置から最初に受信した応答に用いられたIPプロトコルスタックを用いて、前記サーバ装置との間のセッションを確立する
ことを特徴とする請求項１又は２に記載の通信装置。
【請求項４】
ユーザ端末とサーバ装置との間で通信の中継を行う通信装置であって、
前記サーバ装置に対するサービス要求を前記ユーザ端末から受信した場合に、前記サーバ装置に対する接続要求を、複数種類のIPプロトコルスタックのそれぞれを用いて送信する接続要求送信手段と、
前記接続要求に対する応答として前記サーバ装置から受信した応答に用いられたIPプロトコルスタックを用いて、前記サーバ装置との間のセッションを確立するセッション確立手段と、
前記セッションを用いて前記サービス要求を前記サーバ装置に送信し、当該サーバ装置から当該サービス要求に対する応答を受信し、当該応答を前記ユーザ端末に送信する中継手段とを備え、
前記セッション確立手段は、前記ユーザ端末から受信するサービス要求の送信に用いられたIPプロトコルスタックとは異なるIPプロトコルスタックにより前記接続要求に対する応答を前記サーバ装置から最初に受信した場合、当該応答を受信後、予め定めた時間以内に、前記ユーザ端末から受信するサービス要求の送信に用いられたIPプロトコルスタックと同じIPプロトコルスタックによる応答を受信した場合に、当該IPプロトコルスタックを用いて前記サーバ装置との間のセッションを確立する
ことを特徴とする通信装置。
【請求項５】
前記複数種類のIPプロトコルスタックは、第１IPプロトコルスタックと第２IPプロトコルスタックを有し、
前記接続要求送信手段は、前記第１IPプロトコルスタックにより前記接続要求を前記サーバ装置に送信した後、所定時間が経過した時点で、前記第２IPプロトコルスタックにより前記接続要求を前記サーバ装置に送信する
ことを特徴とする請求項１ないし４のうちいずれか1項に記載の通信装置。
【請求項６】
前記複数種類のIPプロトコルスタックは、IPv4とIPv6の２種類のIPプロトコルスタックを有する
ことを特徴とする請求項１ないし５のうちいずれか1項に記載の通信装置。
【請求項７】
ユーザ端末とサーバ装置との間で通信の中継を行う通信装置が実行する通信方法であって、
前記サーバ装置に対するサービス要求を前記ユーザ端末から受信した場合に、前記サーバ装置に対する接続要求を、複数種類のIPプロトコルスタックのそれぞれを用いて送信する接続要求送信ステップと、
前記接続要求に対する応答として前記サーバ装置から受信した応答に用いられたIPプロトコルスタックを用いて、前記サーバ装置との間のセッションを確立するセッション確立ステップと、
前記セッションを用いて前記サービス要求を前記サーバ装置に送信し、当該サーバ装置から当該サービス要求に対する応答を受信し、当該応答を前記ユーザ端末に送信する中継ステップとを備え、
前記接続要求送信ステップにおいて、前記通信装置は、前記ユーザ端末から受信するサービス要求の送信に用いられたIPプロトコルスタックの種類を判別し、当該種類に応じて、前記複数種類のIPプロトコルスタックにより送信する前記接続要求の送信順を決定し、決定した送信順で各IPプロトコルスタックにより前記接続要求を順次前記サーバ装置に送信する
ことを特徴とする通信方法。
【請求項８】
ユーザ端末とサーバ装置との間で通信の中継を行う通信装置が実行する通信方法であって、
前記サーバ装置に対するサービス要求を前記ユーザ端末から受信した場合に、前記サーバ装置に対する接続要求を、複数種類のIPプロトコルスタックのそれぞれを用いて送信する接続要求送信ステップと、
前記接続要求に対する応答として前記サーバ装置から受信した応答に用いられたIPプロトコルスタックを用いて、前記サーバ装置との間のセッションを確立するセッション確立ステップと、
前記セッションを用いて前記サービス要求を前記サーバ装置に送信し、当該サーバ装置から当該サービス要求に対する応答を受信し、当該応答を前記ユーザ端末に送信する中継ステップとを備え、
前記セッション確立ステップにおいて、前記通信装置は、前記ユーザ端末から受信するサービス要求の送信に用いられたIPプロトコルスタックとは異なるIPプロトコルスタックにより前記接続要求に対する応答を前記サーバ装置から最初に受信した場合、当該応答を受信後、予め定めた時間以内に、前記ユーザ端末から受信するサービス要求の送信に用いられたIPプロトコルスタックと同じIPプロトコルスタックによる応答を受信した場合に、当該IPプロトコルスタックを用いて前記サーバ装置との間のセッションを確立する
ことを特徴とする通信方法。
【請求項９】
通信機能を備えるコンピュータを、請求項１ないし６のうちいずれか１項に記載の通信装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、IPv4とIPv6等の複数IPプロトコルスタックを使用可能な通信環境における通信技術に関するものである。
【背景技術】
【０００２】
IPv4とIPv6のデュアルスタック環境では、IPv6を優先してセッションの確立を試み、タイムアウト等の支障があった場合にIPv4で再度試す方式が一般的に行われてきた。しかし、IPv6に支障があった場合に、セッションの確立までに時間がかかり、ユーザの利便性が損なわれるという問題があった。それを解決するために、IPv4とIPv6の通信確立を同時に試み、先に応答のあったプロトコルスタックでセッションを確立する手法が知られている（非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Happy Eyeballs,  http://tools.ietf.org/html/draft-wing-v6ops-happy-eyeballs-ipv6-01（２０１２年２月１７日検索）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、前述のHappy Eyeballsは、エンド端末での実装を前提としており、実装していない端末やアプリケーションの場合は、IPv6のタイムアウト後にIPv4へ切り替えとなるため、依然としてユーザの利便性は悪いという問題がある。
【０００５】
本発明は上記の点に鑑みてなされたものであり、IPv4とIPv6等の複数IPプロトコルスタックを使用し得る通信環境において、あるIPプロトコルスタックによる通信に支障がある場合であっても、支障による影響をユーザに感じさせることなく通信サービスを提供するための技術を実現することを目的とする。
【課題を解決するための手段】
【０００６】
上記の課題を解決するために、本発明は、ユーザ端末とサーバ装置との間で通信の中継を行う通信装置であって、
前記サーバ装置に対するサービス要求を前記ユーザ端末から受信した場合に、前記サーバ装置に対する接続要求を、複数種類のIPプロトコルスタックのそれぞれを用いて送信する接続要求送信手段と、
前記接続要求に対する応答として前記サーバ装置から受信した応答に用いられたIPプロトコルスタックを用いて、前記サーバ装置との間のセッションを確立するセッション確立手段と、
前記セッションを用いて前記サービス要求を前記サーバ装置に送信し、当該サーバ装置から当該サービス要求に対する応答を受信し、当該応答を前記ユーザ端末に送信する中継手段と
を備えたことを特徴とする通信装置として構成される。
【０００７】
また、本発明は、上記通信装置が実行する通信方法、及び、通信機能を備えるコンピュータを、上記通信装置の各手段として機能させるためのプログラムとして構成することもできる。
【発明の効果】
【０００８】
本発明によれば、IPv4とIPv6等の複数IPプロトコルスタックを使用し得る通信環境において、あるIPプロトコルスタックによる通信に支障がある場合であっても、支障による影響をユーザに感じさせることなく通信サービスを提供するための技術が実現される。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態に係るシステム構成図である。
【図２】プロキシ装置１０の機能構成図である。
【図３】動作例１を説明するためのシーケンス図である。
【図４】動作例２を説明するためのシーケンス図である。
【図５】動作例３を説明するためのシーケンス図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して本発明の実施の形態を説明する。なお、以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。例えば、本実施の形態では、プロトコルスタックとしてIPv4とIPv6を用いる例を示しているが、プロトコルスタックがIPv4とIPv6以外の場合でも本発明を適用することが可能である。また、通信においてTCPを用いる場合を示しているが、これも一例に過ぎず、本発明はTCP以外のプロトコルを用いた通信においても適用可能である。
【００１１】
（システム構成）
図１に、本発明の実施の形態に係るシステム構成図を示す。図１に示すように、本実施の形態のシステムは、プロキシ装置１０、サーバ装置２０、及びユーザ端末３０が図示のようにネットワークを介して接続された構成を有する。本実施の形態では、プロキシ装置１０とサーバ装置２０間はインターネットにより接続されている。
【００１２】
本実施の形態において、ユーザ端末３０は、ブラウザを備えるPCやスマートフォン等の一般的な端末である。サーバ装置２０は、Webサーバ機能を備え、サービス要求（本例ではデータ要求）に応じて、要求されたデータを提供する機能を有する。なお、本実施の形態では、サーバ装置２０が提供するサービスとしてWebサービスを想定しているが、これは一例に過ぎず、本発明の適用にあたり、サーバ装置２０が提供するサービスは特定のサービスに限定されるわけではない。
【００１３】
プロキシ装置１０は、ユーザ端末３０からのデータ要求を、ユーザ端末３０の代理として、要求先のサーバ装置２０に送信し、サーバ装置２０から受信したデータを、ユーザ端末１０に送信する中継機能を備えた装置である。また、本実施の形態のプロキシ装置１０は、ユーザ端末３０からのデータ要求の送信に用いられたプロトコルスタックや、サーバ装置２０からの応答の通信に用いられたプロトコルスタック等に応じて、セッション接続に用いるプロトコルスタックを決定し、当該プロトコルスタックを用いてセッション接続を行う機能等も有する。
【００１４】
図２に、本実施の形態に係るプロキシ装置１０の機能構成図を示す。図２に示すように、本実施の形態に係るプロキシ装置１０は、通信処理部１１、セッション管理部１２、プロトコルスタック決定部１３を備える。なお、図２に示す構成は、本実施の形態に関わる機能部を主に示すものであり、プロキシとしての処理を行うための図示しない既存の機能を含むことは言うまでもない。
【００１５】
通信処理部１１は、ユーザ端末３０との間、及びサーバ装置２０との間のそれぞれの通信（本実施形態ではIPパケット通信）を行うための機能部である。通信処理部１１は、IPv6機能部１１１とIPv4機能部１１２の両方を備えており、ユーザ端末３０との間、及びサーバ装置２０との間のいずれにおいてもIPv6とIPv4の通信を行うことが可能である。本実施の形態では、ユーザ端末３０との間は、ユーザ端末３０からの接続要求（TCP syn）に用いられたプロトコルスタックを用いて接続を行い、サーバ装置２０との間は、プロトコルスタック決定部１３により決定されたプロトコルスタックで接続を行う。
【００１６】
セッション管理部１２は、プロキシ装置１０とユーザ端末３０との間のTCPセッション（以下、単に"セッション"と呼ぶ）、及びプロキシ装置１０とサーバ装置２０との間のセッションを管理する機能部である。セッション管理部１２は、例えば、セッション生成、消滅の管理（記憶）、プロキシ装置１０とユーザ端末３０との間のセッションとプロキシ装置１０とサーバ装置２０との間のセッションの対応付け等を行う。
【００１７】
プロトコルスタック決定部１３は、ユーザ端末３０から受信するパケットやサーバ装置２０から受信するパケットから得られる使用プロトコルスタックの情報を通信処理部１１から取得して、予め定めた条件に基づいて、サーバ装置２０とプロキシ装置１０間の接続に使用するプロトコルスタックを決定し、決定したプロトコルスタックを通信処理部１１に通知する機能を有する。上記予め定めた条件は、例えば、プロキシ装置１０のメモリ等の記憶手段に予め格納される。具体的なプロトコルスタックの決定方法については、後の動作例のところで説明する。
【００１８】
プロキシ装置１０は、後述する動作を実現できる通信装置であり、当該通信装置は以下のように構成することもできる。
【００１９】
上記通信装置は、ユーザ端末とサーバ装置との間で通信の中継を行う通信装置であって、
前記サーバ装置に対するサービス要求を前記ユーザ端末から受信した場合に、前記サーバ装置に対する接続要求を、複数種類のIPプロトコルスタックのそれぞれを用いて送信する接続要求送信手段と、前記接続要求に対する応答として前記サーバ装置から受信した応答に用いられたIPプロトコルスタックを用いて、前記サーバ装置との間のセッションを確立するセッション確立手段と、前記セッションを用いて前記サービス要求を前記サーバ装置に送信し、当該サーバ装置から当該サービス要求に対する応答を受信し、当該応答を前記ユーザ端末に送信する中継手段とを備える。
【００２０】
なお、接続要求送信手段とセッション確立手段は、主に前述したプロトコルスタック決定部１３と通信処理部１１に対応し、中継手段は主に通信処理部１１とセッション管理部１２に対応する。
【００２１】
前記接続要求送信手段は、前記ユーザ端末から受信するサービス要求の送信に用いられたIPプロトコルスタックの種類を判別し、当該種類に応じて、前記複数種類のIPプロトコルスタックにより複数回送信する前記接続要求の送信順を決定し、決定した送信順で各IPプロトコルスタックにより前記接続要求を順次前記サーバ装置に送信する。
【００２２】
また、例えば、前記接続要求送信手段は、前記ユーザ端末から受信するサービス要求の送信に用いられたIPプロトコルスタックと同じIPプロトコルスタックを用いて最初の接続要求を前記サーバ装置に送信する。また、例えば、前記セッション確立手段は、前記サーバ装置から最初に受信した応答に用いられたIPプロトコルスタックを用いて、前記サーバ装置との間のセッションを確立する。
【００２３】
前記セッション確立手段は、前記ユーザ端末から受信するサービス要求の送信に用いられたIPプロトコルスタックとは異なるIPプロトコルスタックにより前記接続要求に対する応答を前記サーバ装置から最初に受信した場合、当該応答を受信後、予め定めた時間以内に、前記ユーザ端末から受信するサービス要求の送信に用いられたIPプロトコルスタックと同じIPプロトコルスタックによる応答を受信した場合に、当該IPプロトコルスタックを用いて前記サーバ装置との間のセッションを確立するように構成してもよい。
【００２４】
また、前記接続要求送信手段は、第１IPプロトコルスタックにより前記接続要求を前記サーバ装置に送信した後、所定時間が経過した時点で、第２IPプロトコルスタックにより前記接続要求を前記サーバ装置に送信するように構成してもよい。
【００２５】
本実施の形態に係るプロキシ装置１０は、通信機能を有するコンピュータ（サーバ等）、もしくはコンピュータの機能を含む通信装置（ルータ等、通信機能を備えるコンピュータの一種である）に、本実施の形態で説明する処理に対応するプログラムを実行させることにより実現可能である。当該プログラムは、可搬メモリ等の記憶媒体に格納して配布し、上記装置にインストールして用いてもよいし、ネットワーク上のサーバからダウンロードして上記装置にインストールしてもよい。また、本実施の形態で説明する処理をハードウェア回路として実現し、当該ハードウェア回路を備える装置としてプロキシ装置１０を実現してもよい。
【００２６】
（システムの動作）
以下、本実施の形態に係るシステムの動作例を図３〜図５のシーケンス図を参照して説明する。以下の各動作例において、ユーザ端末３０のブラウザには、インターネット接続の際にプロキシ装置１０に接続するようにプロキシ設定がなされているものとする。
【００２７】
＜動作例１＞
まず、動作例１について図３のシーケンス図を参照して説明する。動作例１は、プロキシ装置１０がユーザ端末３０からIPv6による接続要求を受けて、ユーザ端末３０との間にIPv6によるセッションを確立し、サービス要求に応じてIPv6とIPv4の双方でサーバ装置２０に対して接続要求を送るが、サーバ装置２０からIPv6による応答を先に受信した場合の例である。
【００２８】
本例では、IPv6とIPv4の双方のプロトコルスタックでTCP synパケットをサーバ装置２０に送り、先に受信した応答のプロトコルスタックでサーバ装置２０とのセッションを確立する旨の条件が予め定められ、記憶手段に格納されており、プロトコルスタック決定部１３がこの条件を参照することで使用プロトコルスタックを決定している。
【００２９】
ステップ１１）ユーザがWebブラウザでインターネットにアクセスする操作を行うと、ユーザ端末３０はIPv6を用いてTCP synパケットをプロキシ装置１０に送信し、プロキシ装置１０からのTCP syn+ackパケットの応答、ユーザ端末３０からのTCP ackパケットの送信を経て、ユーザ端末３０とプロキシ装置１０との間でIPv6を用いた3 hand shakeによるセッションの確立が行われる。
【００３０】
ステップ１２）その後、ユーザ端末３０から、サーバ装置２０のデータを要求するget requestパケットがプロキシ装置１０に送信される。
【００３１】
ステップ１３）ユーザ端末３０からget requestパケット（サービス要求）を受信したプロキシ装置１０は、サーバ装置２０との間にセッションを確立するために、IPv6を用いたTCP synパケットとIPv4を用いたTCP synパケットの双方をサーバ装置２０に送信する。なお、このとき、get requestの宛先のIPv4アドレス及びIPv6アドレスをDNSサーバに問い合わせ、DNSサーバから取得したIPv4アドレス及びIPv6アドレスを用いてTCP synパケットの送信を行っている。本実施の形態の他の例でも同様にDNSサーバから使用するIPアドレスを取得している。DNSサーバからIPアドレスを取得する動作は、一般的な動作であり、以降の説明ではこの動作の記述を省略する。
【００３２】
ステップ１３では、IPv6を用いたTCP synパケットとIPv4を用いたTCP synパケットをほぼ同時に送信するが、実際には、どちらかが先、どちらかが後になる。そのため、例えば、ユーザ端末３０との間でのセッション確立に用いたプロトコルスタックと同じプロトコルスタックであるIPv6を用いたTCP synパケットを先に送信し、その後（非常に短い時間の後）に、IPv4を用いたTCP synパケットを送るようにしてもよいし、ユーザ端末３０との間でのセッション確立に用いたプロトコルスタックに関わらず、予め定めた順番でIPv6とIPv4の双方のTCP synパケットを送信するようにしてもよい。
【００３３】
ステップ１４）IPv6及びIPv4の双方でTCP synパケットを受信したサーバ装置２０は、応答可能なプロトコルスタックでTCP syn+ackパケットをプロキシ装置１０に送信する。本例では、サーバ装置２０は、IPv6及びIPv4の双方の機能を有するため、サーバ装置２０は、IPv6及びIPv4の双方でTCP syn+ackパケットをプロキシ装置１０に送信する。また、本例では、IPv6を用いたTCP syn+ackパケットが先にプロキシ装置１０に到達し、IPv4を用いたTCP syn+ackパケットがIPv6のTCP syn+ackパケットの後にプロキシ装置１０に到達するものとする。
【００３４】
ステップ１５）IPv6及びIPv4の双方でTCP syn+ackパケットを受信したプロキシ装置１０は、先に受信したプロトコルスタックであるIPv6を用いてTCP ackパケットをサーバ装置２０に返す。これにより、プロキシ装置１０とサーバ装置２０間でIPv6によるセッションが確立される。その後、プロキシ装置１０は、サーバ装置２０に対してIPv6でget requestパケットを送信する。
【００３５】
なお、仮に、１つプロトコルスタックのみのTCP syn+ackパケットを受信した場合は、その受信したパケットに用いられていたプロトコルスタックを用いてTCP ackパケットをサーバ装置２０に返し、そのプロトコルスタックでのセッションが確立される。
【００３６】
ステップ１６）サーバ装置２０はget requestの応答としてのデータをプロキシ装置１０に送信し、プロキシ装置１０は、サーバ装置２０から受信したデータをユーザ端末３０に転送する。以降、サーバ装置２０とプロキシ装置１０間、及びプロキシ装置１０とユーザ端末３０間の両方でIPv6による通信が行われる。
【００３７】
上記の例は、プロキシ装置１０がサーバ装置２０から先にIPv6によるTCP syn+ackパケットを受信した例であるが、プロキシ装置１０がサーバ装置２０から先にIPv4によるTCP syn+ackパケットを受信した場合は、プロキシ装置１０とサーバ装置２０間では、IPv4によるセッションが確立され、プロキシ装置１０とサーバ装置２０間では、IPv4によるデータ通信が行われることになる。
【００３８】
＜動作例２＞
次に、図４を参照して動作例２を説明する。動作例２は、プロキシ装置１０がユーザ端末３０から受信する接続要求に用いられていたプロトコルスタックに応じて、サーバ装置２０に送出するプロトコルスタックの送信順を決定する例である。本例（動作例３も同様）では、どのプロトコルスタックでユーザ端末３０からデータ要求（もしくは接続要求）を受信したときにどのプロトコルスタックでサーバ装置２０に対して接続要求を送るか、サーバ装置２０からどのプロトコルスタックで応答を受信した場合に、どのプロトコルスタックで接続を行うか、送信を待つための所定時間、などの条件が予め定められ、記憶手段に格納されており、プロトコルスタック決定部１３がこの条件を参照することで以下の動作を実現している。また、条件を含むプログラムを実行させて、動作を実現することとしてもよい。また、プロトコルスタック決定部１３は、所定時間待ちを行うためのタイマー機能を備えている。
【００３９】
ステップ２１）ユーザがWebブラウザでインターネットにアクセスする操作を行うと、ユーザ端末３０はIPv6を用いてTCP synパケットをプロキシ装置１０に送信し、プロキシ装置１０からのTCP syn+ackパケットの応答、ユーザ端末３０からのTCP ackパケットの送信を経て、ユーザ端末３０とプロキシ装置１０との間でIPv6を用いた3 hand shakeによるセッションの確立が行われる。
【００４０】
ステップ２２）その後、ユーザ端末３０から、サーバ装置２０のデータを要求するget requestパケットがプロキシ装置１０に送信される。
【００４１】
ステップ２３）ユーザ端末３０からget requestパケットを受信したプロキシ装置１０は、プロトコルスタック決定部１３において、ユーザ端末３０から受信したデータ要求のプロトコルスタックがIPv6であることを判別し、予め定めた条件に基づいて、まず、IPv6を用いてTCP synパケットをサーバ装置２０へ送信する。
【００４２】
本動作例での上記条件は、最初に、ユーザ端末３０から受信するデータ要求のプロトコルスタックと同じプロトコルスタックでTCP synパケットをサーバ装置２０へ送信し、当該TCP synパケットを送信後、所定時間経過した時点（一例として、250msec後）に、別のプロトコルスタックでTCP synパケットをサーバ装置２０へ送信するというものである。従って、本例では、ユーザ端末３０から受信するデータ要求のプロトコルスタックがIPv6であるため、まず、IPv6を用いてTCP synパケットをサーバ装置２０へ送信している。
【００４３】
ステップ２４）続いてプロキシ装置１０は、IPv6によるTCP synパケットを送信してから250msec後に、IPv4によりTCP synパケットをサーバ装置２０に送信する。なお、250msecとするのは一例に過ぎないが、最初に送信したほうのIPv6の応答が250msec程度待っても来ない場合は、障害発生の可能性が高いため、250msec程度の間隔とすることで、IPv6に障害があったとしても、従来のようにIPv4のセッション確立に時間がかからず、ユーザにストレスを感じさせることなく迅速に通信を開始できる。
【００４４】
ステップ２５）TCP synパケットを受信したサーバ装置２０は、応答可能なプロトコルスタックでTCP syn+ackパケットをプロキシ装置１０に送信する。本例では、サーバ装置２０は、IPv6及びIPv4の双方の機能を有するため、サーバ装置２０は、IPv6及びIPv4の双方でTCP syn+ackパケットをプロキシ装置１０に送信する。また、本例では、IPv6を用いたTCP syn+ackパケットが先にプロキシ装置１０に到達し、IPv4を用いたTCP syn+ackパケットがIPv6のTCP syn+ackパケットの後にプロキシ装置１０に到達する。
【００４５】
ステップ２６）IPv6及びIPv4の双方でTCP syn+ackパケットを受信したプロキシ装置は、予め定めた条件に基づき、先に受信したプロトコルスタック（本例ではIPv6）を用いてTCP ackパケットをサーバ装置２０に返す。これにより、プロキシ装置１０とサーバ装置２０間でIPv6によるセッションが確立され、プロキシ装置１０は、サーバ装置２０に対してIPv6でget requestパケットを送信する。
【００４６】
なお、仮に、１つプロトコルスタックのみのTCP syn+ackパケットを受信した場合は、その受信したパケットに用いられていたプロトコルスタックを用いてTCP ackパケットをサーバ装置２０に返し、そのプロトコルスタックでのTCPセッションが確立されることになる。
【００４７】
また、一方のプロトコルスタックでのTCP syn+ackパケットを先に受信した場合に、他のプロトコルスタックでのTCP syn+ackパケットの受信を待たずに、先に受信したほうのプロトコルスタックでTCP ackパケットを送信してもよい。例えば、IPv6でのTCP syn+ackパケットを先に受信した場合に、IPv4でのTCP syn+ackパケットを受信したしないに関わらず、IPv6でのTCP ackパケットを送信してよい。また、例えば、IPv6でのTCP syn+ackパケットを、IPv4でのTCP synパケットの送信タイミングが来る前に受信した場合には、IPv4でのTCP synパケットの送信をキャンセルして、IPv6でのTCP ackパケットを送信することとしてもよい。
【００４８】
ステップ２７）サーバ装置２０はget requestの応答としてのデータをプロキシ装置１０に送信し、プロキシ装置１０は、サーバ装置２０から受信したデータをユーザ端末３０に転送する。以降、サーバ装置２０とプロキシ装置１０間、及びプロキシ装置１０とユーザ端末３０間の両方でIPv6による通信が行われる。
【００４９】
上記の２例は、ユーザ端末３０からIPv6での接続要求が送信される場合の例であるが、ユーザ端末３０からIPv4での接続要求が送信される場合には、プロキシ装置１０はIPv4のみの接続要求をサーバ装置２０に送信することとしてもよいし、IPv4とIPv6の双方で接続要求を送信することとしてもよい。IPv4とIPv6の双方で接続要求を送信する際には、IPv4での接続要求を先に送信することとしてよい。もしくは、ユーザ端末３０との間のプロトコルスイートに関わらず、IPv6での接続要求を先にサーバ装置２０に送信し、所定時間後にIPv4での接続要求をサーバ装置２０に送信することとしてもよい。
【００５０】
＜動作例３＞
上記の２例では、プロキシ装置１０がサーバ装置２０から先に受信したTCP syn+ackパケットのプロトコルスタックにてサーバ装置２０とプロキシ装置１０間のセッションを確立することとしたが、どちらかのプロトコルスタックでのセッション確立を優先させるために、サーバ装置２０から片方のプロトコルスタックによるTCP syn+ackパケットを先に受信したとしても、もう一方を所定時間（例：250msec）だけ待ち、所定時間以内に当該もう一方のプロトコルスタックによるTCP syn+ackパケットを受信した場合は、このプロトコルスタックによるTCP ackパケットを送信し、所定時間以内に当該もう一方のプロトコルスタックによるTCP syn+ackパケットを受信しなかった場合に、最初に受信したTCP syn+ackパケットと同じプロトコルスタックによるTCP ackパケットを送信することとしてよい。
【００５１】
例えば、プロキシ装置１０とユーザ端末３０との間のプロトコルスタックがIPv6の場合にIPv6を優先することとし、仮にサーバ装置２０からIPv4のTCP syn+ackパケットを先に受信したとしても、受信後所定時間（例：250msec）の間はIPv6でのTCP syn+ackパケットを待ち、250msec以内にIPv6のTCP syn+ackパケットを受信した場合には、プロキシ装置１０とサーバ装置２０間のセッションはIPv6を用いて確立することとする。これにより、ユーザ端末３０とプロキシ装置１０間、及びプロキシ装置１０とサーバ装置２０間のプロトコルスタックを揃えることが可能になるため、予期せぬエラー等を防ぐことが可能となる。
【００５２】
図５は、IPv6を優先する場合のプロキシ装置１０とサーバ装置２０間の動作を示す図である。
【００５３】
ステップ３１）プロキシ装置１０は、動作例１、２と同様にIPv6とIPv4の双方でTCP ackパケットをサーバ装置２０に送信する。
【００５４】
ステップ３２）プロキシ装置１０は、IPv4でのTCP syn+ackパケットを先に受信するが、すぐにIPv4でのTCP ackパケットを返さずに、IPv6でのTCP syn+ackパケットを所定時間が経過するまで待つ。
【００５５】
ステップ３３）プロキシ装置１０は、IPv4でのTCP syn+ackパケットを受信してから所定時間以内に、IPv6でのTCP syn+ackパケットを受信する。
【００５６】
ステップ３４）プロキシ装置１０は、所定時間以内にIPv6でのTCP syn+ackパケットを受信したので、IPv6でのTCP ackパケットをサーバ装置２０に送信し、get requestを送信する。
【００５７】
ステップ３５）サーバ装置２０は、要求されたデータをIPv6を用いてプロキシ装置１０に送信する。
【００５８】
（その他の例）
これまでに説明した例では、プロキシ装置１０とサーバ装置２０間で一旦あるプロトコルスタックでセッションが確立した後は、そのセッションを用いて通信を行うこととしているが、先にあるプロトコルスタックでセッションが確立した後に、他のプロトコルスタックによるセッションに切り替えることとしてもよい。例えば、プロキシ装置１０とサーバ装置２０間で先にIPv4でセッションが確立した場合でも、その後に、IPv6での応答（TCP syn+ack）をプロキシ装置１０が受信した場合には、ユーザ端末３０とサーバ装置２０間でのデータ通信に支障のないタイミングで、プロキシ装置１０とサーバ装置２０間のセッションをIPv6によるセッションに切り替えてもよい。
【００５９】
また、これまでに説明した例では、基本的に、ユーザ端末３０とプロキシ装置１０間のプロトコルスタックと同じプロトコルスタックでプロキシ装置１０とサーバ装置２０間でのセッションを確立させるようにしているが、ユーザ端末３０とプロキシ装置１０間のプロトコルスタックに関わらず、いずれかのプロトコルスタックを優先して使用してプロキシ装置１０とサーバ装置２０間でのセッションを確立させるようにしてもよい。
【００６０】
また、本実施の形態は、ユーザ端末３０がプロキシ装置１０を介してWebアクセスを行う例を説明しているが、本発明のプロキシ装置１０は、SIPプロキシサーバ、DNSリゾルバ、その他のリレー系アプリケーションに適用することも可能である。また、プロキシ装置１０の機能を、CPE（ブロードバンドルータ等）に実装することとしてもよい。
【００６１】
（実施の形態の効果）
上記のように、本実施の形態で説明した技術によれば、プロキシ装置１０においてIPv6とIPv4の切り替えを制御することで、ユーザ端末３０で使用するプロトコルスタックやサービス提供側で使用するプロトコルスタックに関わらす、ユーザにストレスのない通信環境を提供することができる。
【００６２】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【００６３】
１０  プロキシ装置
１１  通信処理部
１１１  IPv6機能部
１１２  IPv4機能部
１２  セッション管理部
１３  プロトコルスタック決定部
２０  サーバ装置
３０  ユーザ端末
【図１】
0005723808.tif 000002
【図２】
0005723808.tif 000003
【図３】
0005723808.tif 000004
【図４】
0005723808.tif 000005
【図５】
0005723808.tif 000006