以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず、第1の実施の形態について説明する。第1の実施の形態では、通信制御装置に接続した端末に通知する接続識別子に通信制御装置の装置識別子を含める。そして、通信切断時には、端末装置からの再接続要求で示される接続識別子に基づいて、切断前に接続されていた通信制御装置(元の通信制御装置)を判断するものである。これにより、端末装置の再接続を効率的に行うことができる。
図1は、第1の実施の形態に係る装置の機能構成例を示す図である。端末装置1は、DHCPサーバ2を介してネットワーク3に接続されている。ネットワーク3には、ロードバランサ4を介して、複数の通信制御装置5,6が接続されている。通信制御装置5,6それぞれには、サーバ7,8が接続されている。
端末装置1は、DHCPサーバ2に例えばPPP(Point to Point Protocol)により接続する。DHCPサーバ2は、接続された端末装置1に、DHCPによりアドレスを割り当てる。端末装置1は、DHCPサーバ2により割り当てられたアドレスを用いて、ネットワーク3を介した通信を行う。
ロードバランサ4は、NAT機能を有しており、グローバルアドレスにより、ネットワーク3を介した通信を行う。ロードバランサ4は、端末装置1からの接続要求または再接続要求10を、ラウンドロビンなどの所定のアルゴリズムで、いずれかの通信制御装置5,6に振り分ける。ロードバランサ4は、接続要求または再接続要求10の宛先のアドレスを、グローバルアドレスから、振り分け先の通信制御装置のローカルアドレスに変更し、その接続要求または再接続要求10を振り分け先の通信制御装置に送信する。またロードバランサ4は、端末装置1と通信制御装置とが接続された後は、端末装置1と通信制御装置との間のパケットを中継する。ロードバランサ4は、端末装置1から通信制御装置へのパケットを中継する場合、パケットの宛先のグローバルアドレスを、送信先の通信制御装置のローカルアドレスに変更する。またロードバランサ4は、通信制御装置から端末装置1へのパケットを中継する場合、パケットの送信元のローカルアドレスをグローバルアドレスに変更する。
通信制御装置5,6は、端末装置1からの接続要求に応じて、端末装置1との間で通信接続を行う。そして通信制御装置5,6は、それぞれに接続されたサーバ7,8に、端末装置1からの処理要求を転送する。また通信制御装置5,6は、それぞれに接続されたサーバ7,8からの応答を、端末装置1に転送する。さらに通信制御装置5,6は、端末装置1との間の通信接続が、エラーなどにより切断された場合、互いに連携して、切断前に接続されていた通信制御装置と端末装置1との間で、通信の再接続を行う。
通信の再接続を実現するために、通信制御装置5は、生成手段5a、通知手段5b、抽出手段5c、指示手段5d、および再接続手段5eを有する。
通知手段5bは、端末装置1との間で通信接続を確立すると、接続識別子9を生成する。接続識別子9は、通信制御装置5内でその通信接続を示す装置内接続識別子9aと、通信制御装置5を示す装置識別子9bとを含む。この接続識別子9は、装置識別子9bを含むことにより、システム内で一意の識別子となっている。
通知手段5bは、生成手段5aが生成した接続識別子9を、通信接続を確立した端末装置1に通知する。例えば通知手段5bは、接続識別子9を含むパケットを、端末装置1に送信する。
抽出手段5cは、他の通信制御装置6との間の通信接続が切断された端末装置1から、接続識別子9を含む再接続要求10を受信すると、接続識別子9から装置識別子9bを抽出する。
指示手段5dは、抽出手段5cが抽出した装置識別子9bで示される他の通信制御装置6に、端末装置1との通信の再接続を指示する。例えば、指示手段5dは、端末装置1に再接続の待機指示を送信すると共に、他の通信制御装置6に端末装置1への再接続要求指示を送信する。なお再接続の待機指示を受信した端末装置1は、通信制御装置からの再接続要求の受信待ち状態となる。
再接続手段5eは、他の通信制御装置6から、端末装置1と通信の再接続指示を受けると、再接続指示に従って端末装置1との通信を再接続する。例えば再接続手段5eは、端末装置1への再接続要求指示を受信した場合、端末装置1に対して再接続要求を送信する。
通信制御装置6は、生成手段6a、通知手段6b、抽出手段6c、指示手段6d、および再接続手段6eを有する。通信制御装置6内の各要素は、通信制御装置5内の同名の要素と同じ機能を有する。
なお、図1に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
このようなシステムにおいて、端末装置1の通信制御装置5,6への接続、および再接続が行われる。例えば端末装置1がサーバ7,8で提供されているサービスを利用する場合、まず端末装置1からDHCPサーバ2に接続要求を送信する。すると、DHCPサーバ2から端末装置1にアドレスが割り振られる。次に、端末装置1は、割り振られたアドレスを送信元とし、ロードバランサ4のグローバルアドレスを宛先として、接続要求を出力する。出力された接続要求は、DHCPサーバ2で中継され、ネットワーク3を介してロードバランサ4に送られる。ロードバランサ4は、接続要求の送信先を、複数の通信制御装置5,6の中から選択し、選択した通信制御装置に接続要求を転送する。図1の例では、通信制御装置5に接続要求が転送されたものとする。
接続要求を受信した通信制御装置5では、生成手段5aが、装置内接続識別子9aと装置識別子9bとを含み、該通信接続を示す接続識別子9を生成する。装置内接続識別子9aは、例えば通信制御装置5内で一意のセションIDである。また装置識別子9bは、例えば通信制御装置5の通信のアドレスである。生成手段5aが生成した接続識別子9は、通知手段5bに渡される。
通知手段5bは、生成された接続識別子9を、端末装置1に通知する。例えば通知手段5bは、端末装置1のアドレスを宛先とするパケットに接続識別子9を含め、そのパケットを送信する。これにより端末装置1が接続識別子9を取得できる。
その後、端末装置1は、通信制御装置5を介してサーバ7と通信し、サーバ7からサービスの提供を受ける。例えば端末装置1は、サーバ7に処理要求を送信する。するとサーバ7が処理要求に応じた処理を実行し、処理結果を端末装置1に応答する。なお端末装置1からサーバ7に送信されるパケットには、例えば接続識別子9が付与される。ロードバランサ4は、端末装置1が付与する接続識別子9と通信制御装置5との対応関係を把握しており、パケットに付与された接続識別子9に基づいて転送先を判断し、そのパケットを通信制御装置5に転送する。
ここで、端末装置1とサーバ7との通信が終了する前に、端末装置1とDHCPサーバ2との間の通信が切断された場合を想定する。この場合、端末装置1は、DHCPサーバ2に改めて接続し、DHCPサーバ2からアドレスの割り当てを受ける。このとき割り当てられるアドレスは、通信の切断前と同じである保証はない。図1の例では、通信の切断前と異なるアドレスが割り当てられたものとする。端末装置1は、新たに割り当てられたアドレスを送信元として、通信の再接続要求10を送信する。送信される再接続要求10には、接続識別子9が含まれる。
再接続要求10は、DHCPサーバ2で中継され、ネットワーク3を介してロードバランサ4に送られる。ロードバランサ4は、再接続要求10を受信すると、再接続要求の送信先となる通信制御装置を選択する。なお再接続要求10には接続識別子9が含まれているものの、端末装置1のアドレスが変更されている。そのため、ロードバランサ4では、端末装置1と通信制御装置5との間の通信接続に関する再接続要求10であるとは認識できない。そこでロードバランサ4は、再接続要求10の転送先を、ラウンドロビンなどの所定のアルゴリズムに従って選択する。図1の例では、通信制御装置6が選択されたものとする。この場合、ロードバランサ4により、再接続要求10が通信制御装置6に転送される。
再接続要求10を受信した通信制御装置6では、抽出手段6cが、再接続要求10に含まれる接続識別子9から装置識別子9bを抽出する。抽出された装置識別子9bは、指示手段6dに渡される。すると指示手段6dは、装置識別子9bで示される通信制御装置5に、端末装置1との通信の再接続を指示する。例えば装置識別子9bが通信制御装置5のアドレスであれば、指示手段6dは、装置識別子9bを宛先とするパケットにより、通信制御装置5に再接続を指示する。なお指示手段6dは、再接続の指示を、端末装置1に対しても行うことができる。例えば指示手段6dは、端末装置1に対して、再接続要求の受信待ちを指示し、通信制御装置5に対して、端末装置1への再接続要求の送信を指示する。
再接続の指示を受け取った通信制御装置5では、再接続手段5eが、指示に従って端末装置1との間の通信の再接続を行う。例えば、端末装置1への再接続要求の送信が指示された場合、再接続手段5eが、端末装置1に再接続要求を送信する。その場合、再接続要求の受信待ちの状態の端末装置1が再接続要求を受信し、端末装置1と通信制御装置5との間で通信の再接続の処理が進められる。
再接続が完了すると、端末装置1とのサーバ7との間の中断していた通信が、通信の途中から再開される。このような通信の再開は、通信の切断と再接続が行われたことを、端末装置1の利用者に感じさせずに行うことができる。例えば、端末装置1と通信制御装置5との双方で、送信済みのパケットのコピーをバッファリングする。そして通信が再接続されたとき、端末装置1と通信制御装置5とは、相手が受信したことが確認できていない送信済みのパケットを再送する。なお端末装置1での再送処理は、例えば通信を制御するミドルウェアによって行う。これにより、エラー発生による一時的な通信の切断を、アプリケーションなどの上位層の機能から隠蔽することができる。すなわちアプリケーションには通信が継続しているように見せることができる。このような再接続を行えば、アプリケーション利用者は応答が遅いと感じるだけで、通信エラーによるデータのダウンロードし直しによる待ち時間の増加や、通信データ量の増加などを起こさずにすむ。
このように、第1の実施の形態では、接続識別子9に装置識別子9bが含まれている。そのため、再接続要求10に含まれる接続識別子9を参照するだけで、切断前に接続されていた元の通信制御装置を判断することができる。すなわち接続識別子9に装置識別子9bが含まれていることで、自己の管理する通信接続に関する再接続要求か否かの判断と、元の通信制御装置を検索する処理とを別々に行わずにすむ。その結果、元の通信制御装置を判断するための他の装置へのアクセスなどの処理が不要となり、再接続を効率的に行うことができる。
なお、上記の例では、通信制御装置から端末装置1への再接続要求のコールバックにより、再接続を行っているが、他の手順で再接続を行うこともできる。例えば、図1に示したように、通信制御装置5と端末装置1との通信が切断され、端末装置1からの再接続要求10が通信制御装置6に送信された場合を想定する。この場合、通信制御装置6の指示手段6dは、例えば、端末装置1から受信した再接続要求を、通信制御装置5に転送する。通信制御装置5の再接続手段5eは、転送された再接続要求に応答することで端末装置1との間の、通信制御装置6を経由する伝送経路での通信の再接続を行う。以後、通信制御装置6が、再接続された端末装置1と通信制御装置5との間の通信を中継する。この例では、指示手段6dは、端末装置1に対して再接続に関する指示を行わない。そのため、再接続のために端末装置1の処理が軽減される。
通信制御装置6が通信を中継する場合、中継処理では、データの圧縮・伸張、暗号化・復号などの複雑な処理はせずにすむ。そのため、通信を中継による通信制御装置6の負荷は、少なくてすむ。なお通信制御装置6において同時接続できる最大のコネクション数が決まっている場合がある。この最大のコネクション数は、通信制御装置6の負荷が過大になるのを抑止するために設定されている。再接続による通信の中継のためにも、コネクションが接続されるが、中継処理による通信制御装置6の負荷は少ないことが分かっている。そこで、再接続による中継処理が発生したら、同時接続できる最大のコネクション数を増加させてもよい。これにより、中継処理が発生したことにより、通信制御装置6の中継以外に用いるコネクションの接続が阻害されることを抑止できる。
また、指示手段5d,6dは、通信接続を指示する際に、再接続が可能か否かを、元の通信制御装置に事前に問い合わせてもよい。この場合、指示手段5d,6dは、元の通信制御装置による再接続が可能な場合に再接続の処理を続行し、再接続が不可能であれば、再接続の処理を終了する。これにより、再接続ができない場合に、迅速にエラーを出力することができる。その結果、元の通信制御装置や端末装置1に無駄な処理を行わせずにすむ。
また、生成手段5a,6a、通知手段5b,6b、抽出手段5c,6c、指示手段5d,6d、再接続手段5e,6eは、例えば通信制御装置5,6が有するプロセッサにより実現することができる。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、移動端末とサーバとの間のセションを、効率的に再接続するものである。
第2の実施の形態では、移動端末の再接続ネゴシエーション要求が別サーバに送信された場合、接続されたサーバが、切断前に移動端末と通信接続を行っていたサーバ(元サーバ)へ再接続の可否(タイムアウト)を確認する。そして、元サーバが復元可能であれば、元サーバから移動端末へコールバックによるコネクション復元を行う。
例えば、移動端末からの再接続時、移動端末は、対象サーバのローカルIPが分かっていても外部からの接続は代表IPアドレスでの接続しかできない。移動端末からの再接続要求はNATによりローカルIPアドレスに変換され、負荷分散により切断前に接続されていたサーバ以外に接続される場合がある。この場合は、再接続要求を受け付けたサーバが、セションID内のサーバIPアドレス情報から元サーバに接続し、移動端末からの再接続情報を、該当コネクションの再接続待ちをしている元サーバへ通知する。また再接続要求を受け付けたサーバは、クライアントへ、元サーバからの再接続待機指示を出す。移動端末はサーバからの当該コネクションの再接続を待機(accept待ち)し、着信した接続により再接続を行い、通信を再開する。
図2は、第2の実施の形態のシステム構成例を示す図である。移動端末100,100−1,・・・は、無線通信により通信キャリア内サーバ22に接続することができる。移動端末100は、車21に搭載された車載機である。移動端末100−1は、携帯電話機である。
通信キャリア内サーバ22は、ネットワーク23を介してサービスセンタSVのロードバランサ25に接続されている。ロードバランサ25は、NAT機能により、ネットワーク23上で使用するグローバルなIPアドレスと、サービスセンタSV内で使用するローカルなIPアドレスとを、相互に変換する。
サービスセンタSV内には、ロードバランサ25の他に、複数のモバイル接続サーバ200,300,・・・と複数のアプリケーションサーバ40,50,・・・とが設けられている。モバイル接続サーバ200,300,・・・は、図1に示した通信制御装置5,6の一例である。
ロードバランサ25は、移動端末からの要求を複数のモバイル接続サーバ200,300,・・・に分散させるコンピュータである。ロードバランサ25は、通信キャリア内サーバ22に接続されていると共に、LAN(Local Area Network)26を介して複数のモバイル接続サーバ200,300,・・・に接続されている。ロードバランサ25は、移動端末100からのメッセージを、いずれかのモバイル接続サーバに転送する。例えばロードバランサ25は、移動端末100から接続要求を受け取ると、ラウンドロビンによりモバイル接続サーバを選択し、選択したモバイル接続サーバに接続要求を転送する。なおロードバランサ25は、確立されているセションを用いたメッセージについては、そのセションで接続されているサーバに、そのメッセージを転送する。
モバイル接続サーバ200,300,・・・は、移動端末100との間でセションを確立し、通信を行うコンピュータである。モバイル接続サーバ200,300,・・・それぞれには、アプリケーションサーバ40,50,・・・が接続されている。モバイル接続サーバ200,300,・・・は、移動端末100から受信したメッセージを、例えばアプリケーションサーバ40,50,・・・に転送する。
アプリケーションサーバ40,50,・・・は、移動端末100からの要求に応じた処理を実行するコンピュータである。例えばアプリケーションサーバ40,50,・・・は、Webサーバ、メールサーバ、業務サーバなどである。なおアプリケーションサーバ40,50,・・・は、モバイル接続サーバ200,300,・・・と共通のコンピュータ内に設けることもできる。
なお移動端末100は、図1に示した第1の実施の形態の端末装置1の一例である。通信キャリア内サーバ22は、図1に示したDHCPサーバ2の一例である。そしてモバイル接続サーバ200,300は、図1に示した第1の実施の形態の通信制御装置5,6の一例である。
次に、移動端末100のハードウェア構成について説明する。
図3は、移動端末のハードウェアの一構成例を示す図である。移動端末100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101の機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、移動端末100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムが格納される。また、メモリ102には、プロセッサ101による処理に必要な各種データが格納される。
バス109に接続されている周辺機器としては、表示制御装置103、入力装置104、通信制御装置105、およびGPS(Global Positioning System)装置106がある。
表示制御装置103には、表示装置107が接続されている。表示制御装置103は、プロセッサ101からの命令に従って、画像を表示装置107の画面に表示させる。表示装置107は、例えば液晶表示装置である。
入力装置104は、移動端末100に入力を行う装置である。例えば入力装置104には、複数のキーが設けられている。入力装置104は、キーの押下を検知して、押下されたキーに対応する信号をプロセッサ101に送信する。
通信制御装置105は、無線通信を制御する。通信制御装置105には、携帯電話モデム108が接続されている。携帯電話モデム108は、携帯電話網を介した通信を行う装置である。通信制御装置105は、携帯電話モデム108を介して、通信キャリア内サーバ22と通信する。
GPS装置106は、GPS衛星から時刻情報を受信し、現在地の座標(緯度・経度)を算出する。GPS装置106が計算した現在地の座標は、プロセッサ101に送信され、例えばカーナビゲーションに利用される。
次に、モバイル接続サーバ200,300,・・・のハードウェア構成について説明する。
図4は、モバイル接続サーバのハードウェアの一構成例を示す図である。モバイル接続サーバ200は、プロセッサ201によって装置全体が制御されている。プロセッサ201には、バス209を介してRAM(Random Access Memory)202と複数の周辺機器が接続されている。プロセッサ201は、マルチプロセッサであってもよい。プロセッサ201は、例えばCPU、MPU、またはDSPである。プロセッサ201の機能の少なくとも一部を、ASIC、またはPLDなどの電子回路で実現してもよい。
RAM202は、モバイル接続サーバ200の主記憶装置として使用される。RAM202には、プロセッサ201に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM202には、プロセッサ201による処理に必要な各種データが格納される。
バス209に接続されている周辺機器としては、HDD(Hard Disk Drive)203、グラフィック処理装置204、入力インタフェース205、光学ドライブ装置206、機器接続インタフェース207およびネットワークインタフェース208,208aがある。
HDD203は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD203は、モバイル接続サーバ200の補助記憶装置として使用される。HDD203には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
グラフィック処理装置204には、モニタ11が接続されている。グラフィック処理装置204は、プロセッサ201からの命令に従って、画像をモニタ11の画面に表示させる。モニタ11としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース205には、キーボード12とマウス13とが接続されている。入力インタフェース205は、キーボード12やマウス13から送られてくる信号をプロセッサ201に送信する。なお、マウス13は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置206は、レーザ光などを利用して、光ディスク14に記録されたデータの読み取りを行う。光ディスク14は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク14には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース207は、モバイル接続サーバ200に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース207には、メモリ装置15やメモリリーダライタ16を接続することができる。メモリ装置15は、機器接続インタフェース207との通信機能を搭載した記録媒体である。メモリリーダライタ16は、メモリカード17へのデータの書き込み、またはメモリカード17からのデータの読み出しを行う装置である。メモリカード17は、カード型の記録媒体である。
ネットワークインタフェース208は、LAN26に接続されている。ネットワークインタフェース208は、LAN26を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
ネットワークインタフェース208aは、アプリケーションサーバ40に接続されている。ネットワークインタフェース208aは、アプリケーションサーバ40との間でデータの送受信を行う。
以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお図4にはモバイル接続サーバ200のハードウェア構成を示したが、他のモバイル接続サーバ300,・・・、およびアプリケーションサーバ40,50,・・・も同様のハードウェアで実現することができる。また、第1の実施の形態に示した通信制御装置5,6も、図4に示したモバイル接続サーバ200と同様のハードウェアにより実現することができる。
なお移動端末100やモバイル接続サーバ200は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。移動端末100やモバイル接続サーバ200に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、移動端末100やモバイル接続サーバ200に実行させるプログラムをメモリ102またはHDD203に格納しておくことができる。移動端末100のプロセッサ101は、メモリ102内のプログラムを実行する。モバイル接続サーバ200のプロセッサ201は、HDD203内のプログラムの少なくとも一部をRAM202にロードし、プログラムを実行する。またモバイル接続サーバ200に実行させるプログラムを、光ディスク14、メモリ装置15、メモリカード17などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ201からの制御により、HDD203にインストールされた後、実行可能となる。またプロセッサ201が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
次に、第2の実施の形態における移動端末の再接続処理の概要について説明する。
図5は、第2の実施の形態における移動端末の再接続手順を示す図である。図5の上段には、セション切断以前の通信状態を示している。移動端末100には、サービスセンタSV内のサーバに接続する際に、まず通信キャリア内サーバ22にPPP接続を行う。すると通信キャリア内サーバ22から移動端末100に、DHCPによりIPアドレスが割り当てられる。図5の例では、移動端末100にIPアドレス「add#1」が割り当てられている。
ロードバランサ25は、グローバルアドレスとしてIPアドレス「add#2」が設定されている。移動端末100は、IPアドレス「add#2」を宛先とした接続要求を送信する。その接続要求は、ロードバランサ25で受信される。ロードバランサ25は、所定のアルゴリズムによって複数のモバイル接続サーバのうちの1台を選択し、接続要求を転送する。例えば接続要求がモバイル接続サーバ200に転送されたものとする。すると接続要求を受信したモバイル接続サーバ200と移動端末100との間でセションが確立される。
確立されたセションには、サービスセンタSV内で一意のセションID31が付与される。セションID31には、セション管理テーブル番号とサーバアドレスが含まれる。モバイル接続サーバ200のIPアドレスが「add#3」であれば、セションID31にIPアドレス「add#3」が含まれる。移動端末100とモバイル接続サーバ200とは、セションID31を付与したメッセージを交換することで、確立したセションによる通信を行う。
移動端末100は、確立されたセションを介して、アプリケーションサーバ40への処理要求を送信する。その処理要求はモバイル接続サーバ200からアプリケーションサーバ40に転送される。アプリケーションサーバ40は、処理要求に応じた処理を実行し、処理結果を移動端末100に応答する。移動端末100とアプリケーションサーバ40との間で送受信されるメッセージは、例えばカプセル化され、例えば移動端末100とモバイル接続サーバ200との間のセションを介して送信される。
ここで、移動端末100とモバイル接続サーバ200との間のセションを正常終了する前に、移動端末100と通信キャリア内サーバ22との通信が途絶えたものとする。モバイル接続サーバ200では、移動端末100との通信が途絶えると、通信処理を中断し、所定の期間、セション管理テーブルを保留状態で保持する。移動端末100は、モバイル接続サーバ200がセション管理テーブルを保持している間に、モバイル接続サーバ200との間で再接続を行えば、中断した通信処理の続きから実行することができる。
そこで、移動端末100とモバイル接続サーバ200との間の再接続処理が行われる。図5の下段に、再接続処理の手順を示している。
移動端末100は、携帯電話網を介して通信キャリア内サーバ22に再度、PPP接続を行う。このとき、通信キャリア内サーバ22は、改めて移動端末100にDHCPによりアドレスを割り当てる。図5の例では、移動端末100に、切断前とは別のIPアドレス「add#5」が割り当てられている。
移動端末100は、IPアドレス「add#2」を宛先とした再接続要求を送信する。再接続要求には、中断したセションのセションID31が含まれる。その接続要求は、ロードバランサ25で受信される。ロードバランサ25は、所定のアルゴリズムによって複数のモバイル接続サーバのうちの1台を選択し、接続要求を転送する。例えば再接続要求が、モバイル接続サーバ300に転送されたものとする(ステップS11)。
再接続要求を受信したモバイル接続サーバ300は、付与されているセションID31からサーバアドレスを抽出する。そしてモバイル接続サーバ300は、抽出したアドレスにより、セションIDの対応するセションを保留しているモバイル接続サーバを判断する。例えばモバイル接続サーバ300のIPアドレスが「add#4」であるものとする。図5の例では、再接続要求に示されるセションID31から抽出したIPアドレスは「add#3」である。するとモバイル接続サーバ300は、正しい再接続先がモバイル接続サーバ200であると判断する。そしてモバイル接続サーバ300は、正しい再接続先であるモバイル接続サーバ200に、再接続確認要求を送信する(ステップS12)。再接続確認要求は、再接続が可能かどうかの確認を要求するメッセージである。再接続確認要求には、例えば、移動端末100のIPアドレスや、再接続要求のヘッダ情報などが含まれる。なお再接続確認要求に、クライアントID(移動端末固有の識別子)、セションID、コネクションIDなどを含めることができる。
モバイル接続サーバ200は、再接続確認要求に応じて、再接続が可能か否かを判断する。例えばモバイル接続サーバ200は、移動端末100に対応するセション管理テーブルが保持されていれば、再接続可能と判断する。再接続が可能であれば、モバイル接続サーバ200は、再接続OKの応答を、モバイル接続サーバ300に送信する(ステップS13)。
モバイル接続サーバ300は、再接続OKの応答を受信すると、移動端末100に対して再接続待機通知を送信する(ステップS14)。モバイル接続サーバ300は、再接続待機通知の送信後、移動端末100との間の通信を切断する。
移動端末100は、再接続待機通知を受信すると、再接続要求の待ち状態で待機する。他方、再接続OKの応答を送信したモバイル接続サーバ200は、移動端末100に対して再接続要求を送信する(ステップS15)。すると、移動端末100とモバイル接続サーバ200との間でコネクションが再接続される。そして、再接続されたコネクションを用いて、移動端末100とモバイル接続サーバ200との間のセションの通信が回復する。その後、移動端末100とアプリケーションサーバ40との間で通信が行われる(ステップS16)。
このようにして、移動端末100を、元のモバイル接続サーバ200に再接続することができる。以下に、図5に示した処理を実現するための各装置の機能について説明する。
図6は、移動端末の機能を示すブロック図である。移動端末100は、セション情報記憶部110、通信制御部120、クライアントアプリケーション141、およびAPI(Application Program Interface)ライブラリ142を有している。
セション情報記憶部110は、モバイル接続サーバとの間で確立したセションの情報を記憶する。例えば、メモリ102内の記憶領域の一部が、セション情報記憶部110として使用される。通信制御部120は、セション情報記憶部110に格納されたセション情報を用い、モバイル接続サーバとの通信を制御する。クライアントアプリケーション141は、サービスセンタSV内のアプリケーションサーバと連携して、ユーザの要求に応じた処理を実行する。クライアントアプリケーション141は、アプリケーションソフトウェアを移動端末100が実行することで実現される。APIライブラリ142は、クライアントアプリケーション141と通信制御部120との間の通信に使用する関数の集合である。
通信制御部120は、API部121、プロトコル生成部122、プロトコル解析部123、圧縮・伸張部124、暗号化・復号部125、サーバ通信部126、コネクション管理部127、通信状態監視部128、送信データ処理部129、受信データ処理部130、および再接続受信部131を含んでいる。なお通信制御部120は、例えば移動端末100のミドルウェアとして動作する。
API部121は、BSD(Berkeley Software Distribution)におけるソケットベースのインタフェースをクライアントアプリケーションに提供する。
プロトコル生成部122は、コネクション管理部127を参照し、モバイル接続サーバへ送信する通信プロトコルのヘッダを、送信バッファの先頭に生成する。なお、ユーザデータがない通信についてはプロトコル生成部122で作成されたパケットが、データなしで送信される。ユーザデータがない通信とは、接続ネゴシエーション・切断ネゴシエーション・再接続ネゴシエーションなどである。ユーザデータがある通信の場合は、プロトコル生成部122は、生成したヘッダに続けて、ユーザデータの圧縮の要否・暗号化の要否などの情報を設定する。
プロトコル解析部123は、モバイル接続サーバから受信した通信プロトコルのヘッダを解析する。プロトコル解析部123は、プロトコル種別によりサーバ・クライアント間の通信環境に関する処理情報であることが示されていた場合、その処理情報に従った処理を実行する。またプロトコル解析部123は、ユーザデータ受信の場合において、ヘッダに続けて設定されている情報に基づいて、ユーザデータの圧縮の有無や暗号化の有無を判断する。プロトコル解析部123は、判断した圧縮の有無や暗号化の有無を、受信データ処理部130に通知することで、ユーザデータの解凍や復号処理を実行させる。
圧縮・伸張部124は、ユーザデータの圧縮または解凍(伸張)を行う。
暗号化・復号部125は、ユーザデータの暗号化または復号を行う。
サーバ通信部126は、モバイル接続サーバへのデータ送信を行う。またサーバ通信部126は、モバイル接続サーバから送られた受信データを、受信バッファへ格納する。
コネクション管理部127は、モバイル接続サーバとの間の通信状態(未接続、接続、異常切断(再接続待ち)、切断)を管理する。コネクション管理部127は、再接続待ちがある場合は通信状態管理部からのPPP状態遷移による接続可能状態の通知を受け取り、再接続処理を行う。再接続処理とは、ネゴシエーション情報(暗号・圧縮の有無など)の交換処理や、送受信済パケットのシーケンス番号、受信済データ長などのサーバと同期処理などである。
通信状態監視部128は、PPPの状態を監視し、PPPの接続完了・切断中・切断完了・エラー切断などを検知する。そして通信状態監視部128は、検知した通信状態を、コネクション管理部127に通知する。
送信データ処理部129は、プロトコル生成部122の作成したヘッダに、送信バッファ内のユーザデータと送信データ長を設定し、データをサーバに送信する。なお送信データ処理部129は、ユーザデータを圧縮する場合、圧縮・伸張部124を呼び出して、ユーザデータを圧縮させる。また送信データ処理部129は、ユーザデータを暗号化する場合、暗号化・復号部125を呼び出して、ユーザデータを暗号化させる。
受信データ処理部130は、受信したデータをプロトコル解析部123に渡す。そして受信データ処理部130は、ヘッダの解析結果により得られたコネクションに関する情報を、コネクション管理部127に渡す。また受信データ処理部130は、ヘッダの解析結果により、ユーザデータが圧縮されていることが判明した場合、圧縮・伸張部124を呼び出して、ユーザデータを解凍させる。また受信データ処理部130は、ヘッダの解析結果により、ユーザデータが暗号化されていることが判明した場合、暗号化・復号部125を呼び出して、ユーザデータを復号させる。そして受信データ処理部130は、受信バッファ内のデータから得られた平文のデータを、クライアントアプリケーション141への返却バッファに展開する。
再接続受信部131は、通信切断後の再接続処理で、接続先となるモバイル接続サーバが切断前と異なった場合に、再接続ネゴシエーションを受け付ける。再接続受信部131は、例えば、accept()処理の再接続ネゴシエーション応答、既存の再接続時のデータ同期処理を行う。
次に、セション情報記憶部110に格納されるセション情報について詳細に説明する。
図7は、移動端末のセション情報記憶部のデータ構造の一例を示す図である。セション情報記憶部110には、セション管理テーブル111が格納されている。セション管理テーブル111には、クライアント側のセション情報が設定されている。セション管理テーブル111には、クライアントID、サーバIPアドレス、セションID、送信済パケット番号、受信確認済パケット番号、受信済パケット番号、受信済データ長、受信バッファアドレス、送信済データコピーバッファアドレス、およびソケットディスクリプタ番号が含まれている。
クライアントIDは、移動端末100のハードウェア固有の識別子である。サーバIPアドレスは、セションを接続した相手のモバイル接続サーバのIPアドレスである。セションIDは、接続したセションの識別子である。送信済パケット番号は、セション内で最後に送信したパケットの識別番号(パケット番号)である。受信確認済パケット番号は、セション内で送信したパケットのうち、モバイル接続サーバでの受信が確認できた最後のパケットの識別番号である。受信済パケット番号は、セション内で最後に受信したパケットの識別番号である。受信済データ長は、受信したデータの長さ(データ量)である。受信バッファアドレスは、受信したデータを格納するバッファのアドレスである。送信済データコピーバッファアドレスは、送信したデータのコピーを格納するバッファのアドレスである。ソケットディスクリプタ番号は、ソケットを介した通信内容を格納するファイルの管理番号である。
次に、サービスセンタSV内のサーバの機能について説明する。
図8は、サービスセンタ内のサーバの機能を示す図である。アプリケーションサーバ40は、サーバアプリケーション41とTCP(Transmission Control Protocol)/IP通信部42とを有している。サーバアプリケーション41は、移動端末100からの要求に応じて処理を実行する。TCP/IP通信部42は、モバイル接続サーバ200によって構築された移動端末100との間の通信環境を利用して、移動端末100と通信する。
モバイル接続サーバ200は、セション情報記憶部210と通信制御部220とを有している。
セション情報記憶部210は、移動端末100との間で確立したセションの情報を記憶する。例えば、RAM202内の記憶領域の一部が、セション情報記憶部210として使用される。通信制御部220は、アプリデータ送受信部221、プロトコル生成部222、プロトコル解析部223、圧縮・伸張部224、暗号化・復号部225、クライアント通信部226、コネクション管理部227、通信状態監視部228、送信データ処理部229、受信データ処理部230、サーバ連携部231、および再接続送信部232を有する。
アプリデータ送受信部221は、アプリケーションサーバ40へ、移動端末100から送信されたデータを送信する。またアプリデータ送受信部221は、アプリケーションサーバ40から、移動端末100に送信するデータを受信する。
プロトコル生成部222は、コネクション管理部227を参照し、移動端末100へ送信する通信プロトコルのヘッダを、送信バッファの先頭に生成する。なお、ユーザデータがない通信についてはプロトコル生成部222で作成されたパケットが、データなしで送信される。ユーザデータがある通信の場合は、プロトコル生成部222は、生成したヘッダに続けて、ユーザデータの圧縮の要否・暗号化の要否などの情報を設定する。
プロトコル解析部223は、移動端末100から受信した通信プロトコルのヘッダを解析する。プロトコル解析部223は、プロトコル種別によりサーバ・クライアント間の通信環境に関する処理情報であることが示されていた場合、その処理情報に従った処理を実行する。またプロトコル解析部223は、ユーザデータ受信の場合において、ヘッダに続けて設定されている情報に基づいて、ユーザデータの圧縮の有無や暗号化の有無を判断する。プロトコル解析部223は、判断した圧縮の有無や暗号化の有無を、受信データ処理部230に通知することで、ユーザデータの解凍や復号処理を実行させる。
圧縮・伸張部224は、ユーザデータの圧縮または解凍(伸張)を行う。
暗号化・復号部225は、ユーザデータの暗号化または復号を行う。
クライアント通信部226は、移動端末100へのデータ送信を行う。またクライアント通信部226は、移動端末100から送られた受信データを、受信バッファへ格納する。
コネクション管理部227は、移動端末100との間の通信状態(未接続、接続、異常切断(再接続待ち)、切断)を管理する。コネクション管理部227は、再接続待ちがある場合は通信状態管理部からのPPP状態遷移による接続可能状態の通知を受け取り、再接続処理を行う。
通信状態監視部228は、PPPの状態を監視し、PPPの接続完了・切断中・切断完了・エラー切断などを検知する。そして通信状態監視部228は、検知した通信状態を、コネクション管理部227に通知する。
送信データ処理部229は、プロトコル生成部222の作成したヘッダに、送信バッファ内のユーザデータと送信データ長を設定し、データをサーバに送信する。なお送信データ処理部229は、ユーザデータを圧縮する場合、圧縮・伸張部224を呼び出して、ユーザデータを圧縮させる。また送信データ処理部229は、ユーザデータを暗号化する場合、暗号化・復号部225を呼び出して、ユーザデータを暗号化させる。
受信データ処理部230は、受信したデータをプロトコル解析部223に渡す。そして受信データ処理部230は、ヘッダの解析結果により得られたコネクションに関する情報を、コネクション管理部227に渡す。また受信データ処理部230は、ヘッダの解析結果により、ユーザデータが圧縮されていることが判明した場合、圧縮・伸張部224を呼び出して、ユーザデータを解凍させる。また受信データ処理部230は、ヘッダの解析結果により、ユーザデータが暗号化されていることが判明した場合、暗号化・復号部225を呼び出して、ユーザデータを復号させる。そして受信データ処理部230は、受信バッファ内のデータから得られた平文のデータを、アプリケーションサーバ40への返却バッファに展開する。
サーバ連携部231は、再接続処理で接続された移動端末100から送られた、元のモバイル接続サーバを示すアドレスが、自分のアドレスではなかった場合、本来接続すべき元のモバイル接続サーバに再接続ネゴシエーション情報を転送する。再接続ネゴシエーション情報には、例えば移動端末100のIPアドレスが付加される。サーバ連携部231は、元のモバイル接続サーバが、移動端末100と再接続可能な場合は、移動端末100に再接続受付待機指示を送信する。他方サーバ連携部231は、元のモバイル接続サーバが、移動端末100と再接続不可能な場合は、移動端末100に、再接続エラー(タイムアウト)を送信する。なお、モバイル接続サーバ200と元のモバイル接続サーバとの電文のやり取りは、1往復で終了(close())する。
再接続送信部232は、他のモバイル接続サーバから再接続ネゴシエーション情報を受け取った場合、再接続ネゴシエーション情報に示される移動端末100へ再接続ネゴシエーション要求を行い、再接続後に通信状態の同期を取る。
なお、図8には、モバイル接続サーバ200の機能を示したが、他のモバイル接続サーバ300,・・・もモバイル接続サーバ200と同様の機能を有している。
次に、モバイル接続サーバ200のセション情報記憶部210に格納されるセション情報について、詳細に説明する。
図9は、モバイル接続サーバのセション情報記憶部のデータ構造の一例を示す図である。セション情報記憶部210には、セション管理テーブル211が格納されている。セション管理テーブル211は、サーバ側のセション情報が設定されている。セション情報には、セション管理テーブル番号、クライアントID、クライアントIPアドレス、セションID、送信済パケット番号、受信確認済パケット番号、受信済パケット番号、受信済データ長、受信バッファアドレス、送信済データコピーバッファアドレス、およびソケットディスクリプタ番号が含まれている。セション管理テーブル番号、クライアントID、サーバIPアドレス以外の情報は、図7に示した移動端末100内のセション情報における同名の情報と同種の情報である。
セション管理テーブル番号は、モバイル接続サーバが確立したセションそれぞれに対応付けて生成されたセション管理テーブルの識別番号である。
クライアントIDは、セションを接続した相手の移動端末のハードウェア固有の識別子である。クライアントIPアドレスは、セションを接続した相手の移動端末のIPアドレスである。
第2の実施の形態では、移動端末100とモバイル接続サーバとの間で受け渡されるパケットのセションIDのフィールドに、モバイル接続サーバのローカルのIPアドレスが設定される。
図10は、セションIDのフィールド内のデータ構造の一例を示す図である。セションIDフィールド60は、8バイトの領域である。セションIDフィールド60の前半に4バイトの記憶領域61には、セション管理テーブル番号が設定される。またセションIDフィールド60の後半の4バイトの記憶領域62には、セションを確立したモバイル接続サーバのローカルのIPアドレスが設定される。なおセション管理テーブルは、1つのセションに1つ生成されるため、セション管理テーブル番号は、モバイル接続サーバ内でセションを一意に示す番号である。セション管理テーブル番号と、モバイル接続サーバのIPアドレスとの組み合わせにより、セションIDフィールド60内の情報(セションID)によって、セションをシステム内で一意に識別可能となる。
このように、第2の実施の形態では、セションID内に、接続元のモバイル接続サーバを特定できる情報が含まれる。セションIDは、移動端末100の接続時のネゴシエーションで、モバイル接続サーバから、移動端末100に通知される。通知されるセションIDは、システム内で一意であると共に、モバイル接続サーバを一意に特定することができる。
なお、モバイル接続サーバを仮想マシン上に構築することで、モバイル接続サーバ数を動的に増減させることができる。このように、仮想環境でモバイル接続サーバが動的に増設される場合においても、同じ構成のモバイル接続サーバが複数起動されるだけであり、モバイル接続サーバ数の増減に応じて、セションIDなどの定義を変更することは不要である。
以上のような構成のシステムにより、移動端末100のモバイル接続サーバへの接続、および切断後の再接続が行われる。以下、移動端末100とモバイル接続サーバとの接続、および再接続処理について詳細に説明する。
図11は、移動端末の接続処理の手順の一例を示す第1のシーケンス図である。
[ステップS101]移動端末100のクライアントアプリケーション141は、通信制御部120との間で、通信の初期化(init())処理を行う。
[ステップS102]クライアントアプリケーション141は、サービスセンタSVを代表するグローバルのIPアドレスを取得するため、DNS参照によるIPアドレスの取得要求(gethostbyname())を、通信制御部120に送信する。
[ステップS103]通信制御部120は、通信状態を確認するため、移動端末100のOS150に対してPPP発呼を要求する。
[ステップS104]OS150は、通信キャリア内サーバ22に対してダイヤルアップで接続する。
[ステップS105]通信キャリア内サーバ22は、移動端末100を認証し、DHCPによるIPアドレスの割当を行う。通信キャリア内サーバ22からは、割り当てられたIPアドレスが応答される。通信キャリア内サーバ22からの応答は、移動端末100で受信され、OS150を介して通信制御部120に渡される。これにより、移動端末100から通信キャリア内サーバ22へのPPPのダイヤルアップ接続が完了する。
[ステップS106]移動端末100の通信制御部120は、PPP接続完了したことで、通信可能と判断する。そして通信制御部120は、DHCPで割り当てられたIPアドレスに加え、ゲートウェイ(GW)アドレス、DNSアドレスなどの情報を用いて、サービスセンタSVのグローバルアドレスを取得する。例えば、通信制御部120は、サービスセンタSVのドメイン名を指定したDNS参照要求を出力する。なお、ゲートウェイ(GW)アドレスとDNSアドレスは、予め移動端末100に設定しておくことができる。
[ステップS107]図11の例では、ロードバランサ25が、DNSサーバを兼ねている。そこで、ロードバランサ25が、移動端末100からのDNS参照に対して、サービスセンタSVのグローバルIPアドレスを応答する。
[ステップS108]ロードバランサ25から応答されたグローバルIPアドレスは、通信制御部120を介してクライアントアプリケーション141に転送される。これによりクライアントアプリケーション141は、サーバIPアドレスを取得できる。なお取得したサーバIPアドレスは、通信制御部120内で保持される。そのため、サーバIPアドレスの取得は、電源ON後の最初の通信の際にのみ行われる。
サーバIPアドレス(グローバルIPアドレス)を取得した後、移動端末100とモバイル接続サーバとの通信のネゴシエーションを行い、クライアントアプリケーション141とアプリケーションサーバ40との通信を可能とする。ネゴシエーションとは、通信速度、エラー訂正機能、データ圧縮手順などを通知して、通信環境を設定する処理である。
図12は、移動端末の接続処理の手順の一例を示す第2のシーケンス図である。
[ステップS111]移動端末100のクライアントアプリケーション141は、通信制御部120にソケットの生成を要求する(socket())。
[ステップS112]通信制御部120は、コネクション管理情報を作成して、仮想ソケットIDをクライアントアプリケーション141に応答する。
[ステップS113]クライアントアプリケーション141は、アプリケーションサーバ接続要求を送信する(connect())。
[ステップS114]通信制御部120は、接続ネゴシエーション要求を、サービスセンタSVのグローバルIPアドレス宛に送信する。接続ネゴシエーション要求には、例えばクライアントID(CLIENT001)が含まれる。
[ステップS115]接続ネゴシエーション要求は、サービスセンタSVのロードバランサ25に渡される。そしてロードバランサ25は、ラウンドロビンなどの所定のアルゴリズムに従って、接続ネゴシエーション要求を、複数のモバイル接続サーバのうちの1台に振り分ける。図12の例では、接続ネゴシエーション要求は、モバイル接続サーバ200に振り分けられている。接続ネゴシエーション要求は、振り分け先のモバイル接続サーバ200に転送される。
[ステップS116]モバイル接続サーバ200では、移動端末100との間の接続ネゴシエーション、プロトコル解析、およびアプリケーションサーバ接続処理が行われる。アプリケーションサーバ接続処理により、モバイル接続サーバ200から、データの受入待ち状態(accept()待ち)のアプリケーションサーバ40に、接続要求が送信される。
[ステップS117]アプリケーションサーバ40は、接続可能であれば、接続OKの応答をモバイル接続サーバ200に送信する。
[ステップS118]モバイル接続サーバ200は、接続ネゴシエーション応答を移動端末100に送信する。接続ネゴシエーション応答には、例えばセションID(“000020000A0A0A64)が含まれる。セションIDは、サービスセンタSV全体でセションを一意に識別可能な識別子である。またセションIDの前半4バイトは、セション管理テーブル番号であり、セションIDの後半4バイトは、モバイル接続サーバ200のローカルのIPアドレスである。
[ステップS119]移動端末100の通信制御部120は、接続完了と判断し、クライアントアプリケーション141に接続完了の応答を送信する。この際、通信制御部120は、クライアント側のセション管理テーブル111を生成し、セション情報記憶部110に格納する。
このようにして、移動端末100とモバイル接続サーバ200との間でセションが確立し、確立されたセションを介して、クライアントアプリケーション141とアプリケーションサーバ40とが通信可能となる。その後、クライアントアプリケーション141とアプリケーションサーバ40との間でデータの送受信が行われる。
図13は、データ送受信処理の手順の一例を示すシーケンス図である。図13には、アプリケーションサーバ40からクライアントアプリケーション141へのデータの送信中に、PPPのダイヤルアップ接続が切断された場合の例が示されている。
[ステップS121]クライアントアプリケーション141は、ソケットを用いて、データ送信のクライアントリクエストを出力する(send())。
[ステップS122]通信制御部120は、送信するユーザデータに通信ヘッダを付加して、パケットをモバイル接続サーバ200に送信する。この際、通信制御部120からクライアントアプリケーション141へは、送信したデータ長が復帰値として応答される。
[ステップS123]モバイル接続サーバ200は、パケットを受信するとプロトコルを解析し、ユーザデータの伸張や復号を行う。その後、モバイル接続サーバ200は、ユーザデータをアプリケーションサーバ40に送信する。
[ステップS124]アプリケーションサーバ40は、ユーザデータを受信する。
ステップS121〜S124と同様の処理が、クライアントアプリケーション141が送信するすべてのデータの送信が完了するまで繰り返される。
[ステップS125]クライアントアプリケーション141がデータ送信完了後、アプリケーションサーバ40から応答データを受け取る場合、クライアントアプリケーション141は、応答データ受信要求を出力する(recv())。
[ステップS126]通信制御部120は、応答データ受信要求に応じて、データ受信待ちの状態となる。
[ステップS127]アプリケーションサーバ40は、応答データを送信する。
[ステップS128]送信された応答データを受信したモバイル接続サーバ200は、通信制御部120との間の通信プロトコルに沿ったパケットを生成し、そのパケットにより応答データを移動端末100に送信する。
[ステップS129]移動端末100の通信制御部120は、クライアントアプリケーション141宛のパケットを受信し、そのパケットのプロトコルを解析する。なお、プロトコル解析中は、クライアントアプリケーション141宛のパケットを、通信制御部120が一時的に預かっている状態である。解析が終了すると、通信制御部120は、パケットに含まれている応答データを、パケットの宛先であるクライアントアプリケーション141に返却する。この際、復帰値として受信長(受信したデータのデータ長)が設定される。例えば通信制御部120は、クライアントアプリケーション141が読み出し可能な返却バッファに、受信したデータと受信長とを書き込む。
ステップS125〜S129と同様の処理が、アプリケーションサーバ40が送信するすべての応答データの送信が完了するまで繰り返される。そのとき移動端末100における携帯電話網の電波状況の悪化などにより、移動端末100と通信キャリア内サーバ22との間のPPP接続が切断されたものとする。その場合、以下のような処理が行われる。
[ステップS130]移動端末100のクライアントアプリケーション141は、応答データ受信要求を出力する。
[ステップS131]通信制御部120は、データ受信待ち状態となる。
[ステップS132]アプリケーションサーバ40は、応答データを送信する。
[ステップS133]モバイル接続サーバ200は、応答データを含むパケットを生成し、データを送信する。しかし、移動端末100と通信キャリア内サーバ22との間の通信が切断されているため、パケットは移動端末100に届かない。
[ステップS134]一方、通信制御部120は、PPP切断エラーを検出する。
このように、移動端末100は、携帯電話網における電波状況に応じて、通信が切断することがある。この場合、通信の再接続処理が実行される。
図14は、移動端末の再接続処理の手順の一例を示す図である。
[ステップS141]通信制御部120は、通信復旧待機状態となり、移動端末100のOS150に対してPPP発呼を要求する。
[ステップS142]OS150は、通信キャリア内サーバ22に対してダイヤルアップで接続する。
[ステップS143]通信キャリア内サーバ22は、移動端末100を認証し、DHCPによるIPアドレスの割当を行う。通信キャリア内サーバ22からは、割り当てられたIPアドレスが応答される。通信キャリア内サーバ22からの応答は、移動端末100で受信され、OS150を介して通信制御部120に渡される。これにより、移動端末100から通信キャリア内サーバ22へのPPPのダイヤルアップ接続が完了する。なお、このとき割り当てられるIPアドレスは、切断前に割り当てられていたIPアドレスと同じとは限らない。
[ステップS144]移動端末100の通信制御部120は、PPP接続完了したことで、通信可能と判断する。そして通信制御部120は、再接続ネゴシエーション要求を、サービスセンタSVのグローバルIPアドレス宛に送信する。なおサービスセンタSVのグローバルIPアドレスには、図11のステップS108で取得したアドレスが使用される。再接続ネゴシエーション要求には、例えばクライアントIDやセションIDが含まれる。セションIDは、ステップS119で取得した接続ネゴシエーション応答に示されたセションIDである。そのセションIDは、セション管理テーブル111から取得することができる。
また通信制御部120は、再接続ネゴシエーション要求に、受信済パケット番号や受信済データ長を含めることができる。受信済パケット番号や受信済データ長は、セション管理テーブル111から取得できる。受信済パケット番号や受信済データ長を再接続ネゴシエーション要求に含めることで、途中で途絶えた通信を、途中から再開することが可能となる。
[ステップS145]再接続ネゴシエーション要求は、サービスセンタSVのロードバランサ25に渡される。そしてロードバランサ25は、ラウンドロビンなどの所定のアルゴリズムに従って、再接続ネゴシエーション要求を、複数のモバイル接続サーバのうちの1台に振り分ける。図12の例では、再接続ネゴシエーション要求は、モバイル接続サーバ300に振り分けられている。再接続ネゴシエーション要求は、振り分け先のモバイル接続サーバ300に転送される。
[ステップS146]モバイル接続サーバ300は、再接続ネゴシエーション要求を受信すると、再接続先が正しいか否かを判断する。例えばモバイル接続サーバ300内のプロトコル解析部は、再接続ネゴシエーション要求に含まれるセションIDを参照し、そのセションIDに対応するセション管理テーブルを保持しているか否かを判断する。該当するセション管理テーブルを保持していなければ、モバイル接続サーバ300内のプロトコル解析部は、サーバ違いであることをサーバ連携部に通知する。すると、サーバ連携部が、セションIDに含まれるサーバのIPアドレスにより、元はモバイル接続サーバ200との間で確立したセションであることを認識する。そしてサーバ連携部は、モバイル接続サーバ200に再接続可能か否かの確認要求を送信する。確認要求には、クライアントIPアドレス、クライアントID、セションIDなどが含まれる。
[ステップS147]モバイル接続サーバ200は、再接続が可能かどうかを判断する。例えばモバイル接続サーバ200のサーバ連携部231は、確認要求に含まれるセションIDに対応するセション管理テーブルを保持しているか否かを判断する。該当するセション管理テーブルを保持していれば、再接続が可能であると判断する。なお通信切断から所定時間以上経過すると、切断された通信に対応するセション管理テーブルが削除される場合がある。確認要求を受け取ったときに既にセション管理テーブルが削除されている場合、サーバ連携部231は、再接続不可能と判断する。サーバ連携部231は、再接続可能かどうかの判断結果を、モバイル接続サーバ300に送信する。なお、図14の例では、再接続可能と判断したものとする。
[ステップS148]モバイル接続サーバ300は、モバイル接続サーバ200からの応答を受けて、移動端末100に再接続待機指示を送信する。例えばモバイル接続サーバ300のサーバ連携部が、移動端末100に再接続待機指示を送信する。なお、モバイル接続サーバ200から再接続不可能の応答があった場合、モバイル接続サーバ300のサーバ連携部は、再接続エラー(タイムアウト)のメッセージを、移動端末100に送信することとなる。
[ステップS149]移動端末100の通信制御部120内の再接続受信部131は、サーバ違いによる再接続待機指示を受け取ると、再接続ネゴシエーション要求の受信待ち状態となる(accept())。
[ステップS150]一方、モバイル接続サーバ200の再接続送信部232は、再接続ネゴシエーション要求を移動端末100に送信する。再接続ネゴシエーション要求には、移動端末100のクライアントIDや、移動端末100とモバイル接続サーバ200との間のセションのセションIDが含まれる。また再接続ネゴシエーション要求には、モバイル接続サーバ200が保持している、受信済パケット番号やデータ長が含まれる。
[ステップS151]移動端末100の通信制御部120内の再接続受信部131は、再接続ネゴシエーション要求を受信する。この際、通信制御部120は、モバイル接続サーバ200から送られた受信済パケット番号により、モバイル接続サーバ200で受信済みのパケットを認識する。そして通信制御部120は、モバイル接続サーバ200で受信済みのパケットのコピーを、送信済データコピーバッファから破棄する。その後、通信制御部120は、再接続ネゴシエーション応答をモバイル接続サーバ200に送信する。再接続ネゴシエーション応答には、例えば移動端末100が保持している受信済パケット番号やデータ長が含まれる。
[ステップS152]モバイル接続サーバ200は、移動端末100から再接続ネゴシエーション応答を受信する。モバイル接続サーバ200は、移動端末100から送られた受信済パケット番号により、移動端末100で受信済みのパケットを認識する。そしてモバイル接続サーバ200は、移動端末100で受信済みのパケットを、送信済データコピーバッファから破棄する。そしてモバイル接続サーバ200は、再接続ネゴシエーションを完了する。
これにより、移動端末100は、通信の切断前と同じモバイル接続サーバ200との間で通信を接続することができる。その後、切断した通信が続行される。
図15は、再接続後の通信手順の一例を示すシーケンス図である。
[ステップS161]移動端末100の通信制御部120は、データ状態を同期するための情報を、モバイル接続サーバ200に送信する。例えば移動端末100は、移動端末100内の送信済データバッファから、モバイル接続サーバ200が未受信のパケットを取り出し、モバイル接続サーバ200に送信する。
[ステップS162]モバイル接続サーバ200は、データ状態を同期するための情報を受信する。
[ステップS163]モバイル接続サーバ200は、データ状態を同期するためのモバイル接続サーバ200側の情報を、移動端末100に送信する。例えばモバイル接続サーバ200は、モバイル接続サーバ200内の送信済データバッファから、移動端末100が未受信のパケットを取り出し、移動端末100に送信する。
[ステップS164]移動端末100の通信制御部120は、データ状態を同期するためのパケット(データを含む)を受信する。そして通信制御部120は、モバイル接続サーバ200から受信したパケットのプロトコル解析を行い、そのパケットに含まれているデータを、パケットの宛先であるクライアントアプリケーション141に返却する。
その後、ステップS165〜S169の処理は、図13に示したステップS125〜S129の処理と同様である。
[ステップS170]クライアントアプリケーション141は、通信が終了したと判断すると、通信終了要求を出力する(close())。
[ステップS171]通信制御部120は、接続クローズ要求をモバイル接続サーバ200に通知する。例えば通信制御部120は、接続クローズを示すヘッダを有するパケットを生成し、そのパケットをモバイル接続サーバ200に送信する。
[ステップS172]モバイル接続サーバ200は、受信したパケットのプロトコル解析を行い、接続のクローズ要求であることを認識する。そしてモバイル接続サーバ200は、アプリケーションサーバ40に通信の終了を通知する。
[ステップS173]アプリケーションサーバ40は、モバイル接続サーバ200から通知に応じて、ソケットのクローズ要求を出力する。
[ステップS174]モバイル接続サーバ200は、ソケットをクローズする。そしてモバイル接続サーバ200は、接続終了の応答パケットを移動端末100に送信する。
[ステップS175]移動端末100の通信制御部120は、モバイル接続サーバ200からの応答パケットのプロトコル解析を行い、接続が終了したことを認識する。そして通信制御部120は、接続が終了したことを示すサーバ終了コードをクライアントアプリケーション141に送信する。
[ステップS176]クライアントアプリケーション141は、サーバ終了コードを受信すると、通信を終了する。
このように、第2の実施の形態によれば、移動端末100とモバイル接続サーバ200との通信が切断されても、通信切断前に接続していたモバイル接続サーバ200との間の通信を再開することができる。しかも、第2の実施の形態では、セションID内に元のモバイル接続サーバ200のIPアドレスが含まれているため、元のモバイル接続サーバを検索する処理が不要である。その結果、通信の再接続を効率的に行うことができる。
また再接続ネゴシーション要求を受け取ったモバイル接続サーバは、切断前に接続されていた元のモバイル接続サーバが接続可能であることを確認できたときに、再接続の指示を行う。これにより、再接続が不可能な場合に、余分な処理を行わせずにすむ。
さらに、無線ダイヤルアップ通信状態の切断/再接続を行う場合、移動端末100の通信制御部120とモバイル接続サーバ200,300との間で通信情報をバッファリングし、無線通信のエラー発生が、クライアントアプリケーション141から隠蔽されている。すなわち、通信中の状態(相手の受信が確認できていない送信データなど)がバッファに保持される。携帯電話の電波状況の悪化や基地局エリア外への移動などでダイヤルアップ通信の切断が発生した場合、通信状況の回復した時点で再度ダイヤルアップ接続が行われ、切断前の送受信状態に戻される。これにより、クライアントアプリケーション141には、通信が継続しているように見せかけることができる。クライアントアプリ利用者は応答が遅いと感じるだけで、通信エラーによるデータのダウンロードし直した場合のような長い待ち時間は発生しない。しかも、通信データ量の増加も抑止される。
〔第3の実施の形態〕
次に第3の実施の形態について説明する。第3の実施の形態は、移動端末側では意識せずに、通信切断前と同じモバイル接続サーバに再接続できるようにしたものである。
そのために第3の実施の形態では、サーバ間連携による通信の中継による再接続を実現する。
第2の実施の形態では、移動端末100において、移動端末100が送信した再接続ネゴシエーション要求が、通信切断前の通信相手とは異なるモバイル接続サーバ300に転送されたことを認識し、再接続の待機状態となる。そして移動端末100は、元のモバイル接続サーバ200からの再接続ネゴシエーション要求を受け付ける。このように、第2の実施の形態では、再接続ネゴシエーション要求の到達したモバイル接続サーバ300が、通信切断前に接続していたモバイル接続サーバ200と同一か否かによって、移動端末100の処理が異なる。第3の実施の形態では、移動端末は、常に同じ処理をすればよいようにする。これにより、移動端末の負荷を軽減できる。
移動端末からの再接続時、対象サーバのローカルIPが分かっていても外部からの接続は代表IPアドレスでの接続しかできない。そのため、ロードバランサ25によって切断前に接続されていたモバイル接続サーバとは別のサーバに接続される場合がある。この場合は、第2の実施の形態と同様に、接続を受け付けたモバイル接続サーバが、セションID内のサーバIPアドレス情報から、再接続待ちをしているモバイル接続サーバを特定する。そして第3の実施の形態では、移動端末からの再接続要求を受け取ったモバイル接続サーバが、移動端末と再接続待ちをしているモバイル接続サーバとの通信を中継することで、再接続による通信継続を実現する。
図16は、第3の実施の形態における移動端末の再接続手順を示す図である。図16の上段には、セション切断以前の通信状態を示している。この通信状態は、図5に示したセション切断前の通信状態と同じである。
ここで、移動端末100aとモバイル接続サーバ200aとの間のセションを正常終了する前に、移動端末100aと通信キャリア内サーバ22との通信が途絶えた場合を、移動端末100aとモバイル接続サーバ200aとの間の再接続処理が行われる。図5の下段に、再接続処理の手順を示している。
移動端末100aは、携帯電話網を介して通信キャリア内サーバ22に再度、PPP接続を行う。このとき、通信キャリア内サーバ22は、改めて移動端末100aにDHCPによりアドレスを割り当てる。図5の例では、移動端末100aに、切断前とは別のIPアドレス「add#5」が割り当てられている。
移動端末100aは、IPアドレス「add#2」を宛先とした再接続要求を送信する。再接続要求には、中断したセションのセションID31が含まれる。その接続要求は、ロードバランサ25で受信される。ロードバランサ25は、所定のアルゴリズムによって複数のモバイル接続サーバのうちの1台を選択し、接続要求を転送する。例えば再接続要求が、モバイル接続サーバ300aに転送されたものとする(ステップS21)。
再接続要求を受信したモバイル接続サーバ300aは、付与されているセションID31からサーバアドレスを抽出する。そしてモバイル接続サーバ300aは、抽出したアドレスにより、セションIDの対応するセションを保留しているモバイル接続サーバを判断する。図5の例では、再接続要求に示されるセションID31から抽出したIPアドレスは「add#3」であり、モバイル接続サーバ300aのIPアドレスが「add#4」である。するとモバイル接続サーバ300aは、正しい再接続先がモバイル接続サーバ200aであると判断する。そしてモバイル接続サーバ300aは、正しい再接続先であるモバイル接続サーバ200aに、再接続確認要求を送信する(ステップS22)。
モバイル接続サーバ200aは、再接続確認要求に応じて、再接続が可能か否かを判断する。再接続が可能であれば、モバイル接続サーバ200aは、再接続OKの応答を、モバイル接続サーバ300aに送信する(ステップS23)。
モバイル接続サーバ30は、移動端末100aに再接続OKの応答を送信する(ステップS24)。すると移動端末100aは、中断していた通信をアプリケーションサーバ40との間で再開する(ステップS25)。以降、モバイル接続サーバ300aは、移動端末100aとモバイル接続サーバ200aとの間の通信を中継し続ける。
なお通信を中継するモバイル接続サーバ300aは、中継処理が発生すると、本来の処理以外に中継処理を実行することになる。そのため負荷が一時的に増えることとなる。しかし、再接続に伴う中継処理は、データの暗号の復号化・圧縮の展開といったCPUリソース負荷の高い処理を行わずに中継するだけであり、中継するモバイル接続サーバ300aに過大な負荷とはならない。そのため、再接続に伴う中継処理を行っても、モバイル接続サーバ300aにおいてシステムリソースの圧迫は起こらず、安定した動作が維持される。
なお、モバイル接続サーバ200a,300a,・・・では、同時処理可能なコネクション数の最大値(最大同時コネクション数)と、ライセンス上使用が許容されるライセンス上限値が定義されている。移動端末100aからの要求に応じた処理を継続的に実行するためのコネクションの接続は、ライセンス上限値の制限を受ける。また、再接続ネゴシエーション要求のように、一時的な通信のためのコネクション接続は、最大同時コネクション数内であれば許容される。すなわち、接続制御用の一時的なコネクションであれば、同時接続されているコネクション数がライセンス上限値以上であっても、新たに接続可能である。
図17は、同時接続コネクション数の遷移例を示すグラフである。図17のグラフは、横軸に時刻、縦軸に同時接続されたコネクション数を取っている。
1サーバ辺りの同時接続コネクションの上限値は、例えばライセンス契約により規定される。このライセンス上限値は環境設定で定義され、超過した場合はシステムの管理者宛に警告メッセージが出力される。ただし、実際の接続動作は可能なコネクション数は一定のマージンを持って動作する。最大同時コネクション数を「L」(Lは、1以上の整数)とし、ライセンス上限値を「N」(Nは、1以上の整数)とすると、マージン「M」(Mは、0以上の整数)は、M=L−Nで表される。
マージンが設けられている理由は以下の通りである。
ライセンス上限値までコネクションがつながっている状態で、無線状態が悪化して切断される移動端末があった場合、異常切断され再接続待機状態のコネクションは維持される。そのため同時接続しているコネクション数は、ライセンス上限値のまま変化しない。そこへ再接続を行うとライセンス上限値Nの接続状態にさらにコネクションを接続することとなり、コネクション数はライセンス上限値L+1となる。ただし、再接続されたコネクションは、維持されていたコネクションと重複した接続となるため、再接続の手続きが完了後に解放される。コネクション数は、ライセンス上限値に戻ることとなる。このような一時的な接続を許容するために、マージンが設けられている。
また、使用するサービスによっては1台の移動端末から接続されるコネクション数が1ではなく、ブラウザその他で8コネクション使用しているときもある。このような移動端末を再接続すると、一気に8コネクションオーバーになる。
さらに、移動端末の稼働台数が固定でない場合、サービスの利用者が急に増加する可能性がある。サービスの利用者が急に増加すると、通常のコネクション数がライセンス上限値を超えることも考えられる。その場合、モバイル接続サーバを増設までの期間はライセンス上限値以上の数のコネクションの同時接続を許容し、マージンの範囲で対処することもできる。
このように、システムの柔軟な対応を可能とするために、同時接続可能なコネクション数のマージンが設けられている。その結果、図17に示すように、コネクション数がライセンス上限値を超えた期間(ライセンス上限値超過期間)であっても、正常にコネクションが接続される。
第3の実施の形態では、再接続の際に、モバイル接続サーバにおいて中継が発生する。中継用のコネクションもマージンの範囲内で許容される。ただし、中継処理によりマージン数のコネクションを使い切ってしまうと、その後の安定した運用が難しくなる。そこで、第3の実施の形態では、再接続のコネクション数に応じて、最大コネクション数を増加させることで、持続的な安定運用を可能とする。
ここで、再接続に関してはライセンス管理上のコネクション加算の対象でないため最大同時コネクション数超過による強制切断処理などは行わない。ただし、システム内のモバイル接続サーバの台数を用いて、マージンを以下の式で増加させる。
増加マージン数=(1+中継発生確率)×再接続コネクション
中継発生確率=(1−K)/K
Kは、モバイル接続サーバの台数である(Kは、1以上の整数)。なお、モバイル接続サーバは、仮想マシンの場合もある。この処理により、仮想化された環境を含め、再接続時に中継処理を行った場合でも、中継以外に利用できるコネクション数はあまり変化させずにすむ。
図18は、マージンの増加例を示す図である。図18に示すように、通常コネクション(移動端末との間のデータ送受信に利用するコネクション)は、ライセンス上限値以下の数だけ接続できる。モバイル接続サーバの性能に応じて設定された最大同時コネクション数と、ライセンス上限値との差がマージンとなる。
ここで、図16に示した様に、モバイル接続サーバ200aとの通信が切断された移動端末100aから再接続要求が出力され、その再接続要求がモバイル接続サーバ300aに送られる場合がある。この場合、モバイル接続サーバ300aは、移動端末100aとモバイル接続サーバ200aとの間の通信パケットを中継する。この中継処理のためには、新たなコネクション(転送コネクション)が接続される。転送コネクションは、同時接続コネクション数がライセンス上限値を超えていても、新たに接続可能である。
ここで、マージンを一定のままにしておくと、空きコネクションが枯渇し、他の移動端末の通信が切断され再接続要求を送信するためのコネクションが接続できなくなる可能性がある。そこで、第3の実施の形態では、最大同時コネクション数を増加させる。その結果、マージンも増加する。これにより、継続してシステムの安定運用が可能となる。なお、前述したように、中継処理では、データの圧縮・伸張や、暗号化・復号といった複雑な処理を行わない。そのため、転送コネクションの発生原因となる再接続コネクション数に応じて最大同時コネクション数を増加させても、パケットを中継するモバイル接続サーバ300aの負荷が過大にならずにすむ。
次に、第3の実施の形態を実現するために、移動端末100aとモバイル接続サーバ200a,300aとが有する機能について説明する。
図19は、第3の実施の形態における移動端末の機能の一例を示すブロック図である。図19に示した移動端末100aの構成要素のうち、図6に示した第2の実施の形態の移動端末100と同じ要素には同じ符号を付し、説明を省略する。第3の実施の形態の移動端末100は、通信制御部120aの機能が第2の実施の形態と異なる。通信制御部120aは、第2の実施の形態の通信制御部120(図6参照)と異なり、再接続受信部131を有していない。すなわち、第3の実施の形態では、モバイル接続サーバからの再接続ネゴシエーション要求の受信機能は不要となる。
図20は、第3の実施の形態におけるサービスセンタ内のサーバの機能の一例を示すブロック図である。図20に示した要素のうち、図8に示した第2の実施の形態の要素と同じものには同じ符号を付し、説明を省略する。
図20に示した要素のうち第2の実施の形態と異なるのは、モバイル接続サーバ200aの通信制御部220aである。通信制御部220aは、第2の実施の形態の通信制御部220(図8参照)に含まれている再接続送信部232を有しておらず、再接続送信部232の代わりにデータ中継部233を有している。
データ中継部233は、他のモバイル接続サーバとの通信が遮断された移動端末100aから再接続ネゴシエーション要求を受信した場合に、他のモバイル接続サーバと移動端末100aとの間のデータ通信を中継する。
なお、図20に示したモバイル接続サーバ200aの機能と同じ機能を、他のモバイル接続サーバ300aも有している。
次に、第3の実施の形態における処理について説明する。なお、第3の実施の形態における移動端末の接続処理とデータ送受信処理との手順は、図11〜図13に示した第2の実施の形態の処理手順と同じである。
図21は、第3の実施の形態における移動端末の再接続処理の手順の一例を示すシーケンス図である。なおステップS201〜S205の処理は、図14に示したステップS141〜S145の処理と同じである。
[ステップS206]モバイル接続サーバ300aは、再接続ネゴシエーション要求を受信すると、再接続先が正しいか否かを判断する。接続先のサーバがモバイル接続サーバ300aではない場合(サーバ違いの場合)、モバイル接続サーバ300aは、正しい接続先のモバイル接続サーバ200aに再接続ネゴシエーション要求を転送する。
[ステップS207]モバイル接続サーバ200aは、再接続が可能かどうかを判断する。再接続が可能であれば、モバイル接続サーバ200aは、再接続をするための再接続ネゴシエーション応答をモバイル接続サーバ300aとの間のコネクションを介して出力する。
[ステップS208]モバイル接続サーバ300aは、モバイル接続サーバ200aから出力された再接続ネゴシエーション応答を、移動端末100aに転送する。
[ステップS209]移動端末100aの通信制御部120aは、再接続ネゴシエーション応答を受信し、再接続ネゴシエーションを完了する。
このようにして、移動端末100aとモバイル接続サーバ200aとが、モバイル接続サーバ300aを経由した伝送路により再接続される。その後、移動端末100aとモバイル接続サーバ200aとは、再接続された伝送路で、通信を再開する。
図22は、第3の実施の形態における再接続後の通信手順の一例を示すシーケンス図である。
[ステップS211]移動端末100aの通信制御部120aは、データ状態を同期するための情報を送信する。
[ステップS212]モバイル接続サーバ300aは、移動端末100aから送信されたデータ状態を同期するための情報を中継し、モバイル接続サーバ200aに送信する。
[ステップS213]モバイル接続サーバ200aは、データ状態を同期するための情報を受信する。
[ステップS214]モバイル接続サーバ200aは、データ状態を同期するためのモバイル接続サーバ200側の情報を送信する。
[ステップS215]モバイル接続サーバ300aは、モバイル接続サーバ200aから送信された、データ状態を同期するための情報を中継し、移動端末100aに送信する。
[ステップS216]移動端末100aの通信制御部120aは、データ状態を同期するためのパケット(データを含む)を受信する。そして通信制御部120aは、モバイル接続サーバ200から受信したパケットのプロトコル解析を行い、そのパケットに含まれているデータを、パケットの宛先であるクライアントアプリケーション141に返却する。
[ステップS217]クライアントアプリケーション141がデータ送信完了後、アプリケーションサーバ40から応答データを受け取る場合、クライアントアプリケーション141は、応答データ受信要求を出力する(recv())。
[ステップS218]通信制御部120aは、応答データ受信要求に応じて、データ受信待ちの状態となる。
[ステップS219]アプリケーションサーバ40は、応答データを送信する。
[ステップS220]送信された応答データを受信したモバイル接続サーバ200aは、通信制御部120aとの間の通信プロトコルに沿ったパケットを生成し、そのパケットを送信する。
[ステップS221]モバイル接続サーバ300aは、モバイル接続サーバ200aから出力されたパケットを中継し、移動端末100aに送信する。
[ステップS222]移動端末100aの通信制御部120は、受信したパケットのプロトコルを解析する。そして通信制御部120は、パケットに含まれている応答データを、パケットの宛先であるクライアントアプリケーション141に返却する。
ステップS217〜S232と同様の処理が、アプリケーションサーバ40が送信するすべての応答データの送信が完了するまで繰り返される。
[ステップS223]クライアントアプリケーション141は、通信が終了したと判断すると、通信終了要求を出力する(close())。
[ステップS224]通信制御部120aは、接続クローズ要求のパケットを送信する。
[ステップS225]モバイル接続サーバ300aは、移動端末100aから出力されたクローズ要求のパケットを中継し、モバイル接続サーバ200aに送信する。
[ステップS226]モバイル接続サーバ200aは、受信したパケットのプロトコル解析を行い、接続のクローズ要求であることを認識する。そしてモバイル接続サーバ200aは、アプリケーションサーバ40に通信の終了を通知する。
[ステップS227]アプリケーションサーバ40は、モバイル接続サーバ200aから通知に応じて、ソケットのクローズ要求を出力する。
[ステップS228]モバイル接続サーバ200aは、ソケットをクローズする。そしてモバイル接続サーバ200aは、接続終了の応答パケットを送信する。
[ステップS229]モバイル接続サーバ300aは、モバイル接続サーバ200aから出力された接続終了の応答パケットを中継し、移動端末100aに送信する。
[ステップS230]移動端末100aの通信制御部120aは、モバイル接続サーバ200aからの応答パケットのプロトコル解析を行い、接続が終了したことを認識する。そして通信制御部120aは、接続が終了したことを示すサーバ終了コードをクライアントアプリケーション141に送信する。
[ステップS231]クライアントアプリケーション141は、サーバ終了コードを受信すると、通信を終了する。
このようにして、処理の途中で通信が切断された場合に、切断前に通信していたモバイル接続サーバの検索処理をせずに切断前と同じモバイル接続サーバに移動端末を接続することができる。その結果、通信切断後の再接続を効率的に行うことができる。
なお、仮想マシンなどによるモバイル接続サーバの動的増設/縮小においても、同じ構成のモバイル接続サーバが複数起動されるだけである。そのため、構成変更による定義の変更は不要である。
第3の実施の形態では、移動端末100には、新たな機能を追加せずにすむ。またIPV4におけるアドレスの枯渇により、移動端末100aのIPアドレスの参照が直接行えないネットワーク構成(キャリア側もNATによりローカルIPを隠蔽する構成)でも、効率的に再接続が行える。また、使用するポート、通信の方向に変更がないためファイアウォールのアウトバンド通信の定義変更等のサーバ構成の見直しも不要でシステム構成・セキュリティ等への影響もない。このように、再接続可能なシステムを、容易に実現可能である。さらに、再接続中に通信異常が発生して場合の再々接続も可能である。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。