(57)【要約】  通信システムは、第１アプリケーションが動作するサーバ装置と、第２アプリケーションが動作する端末装置とを含む通信システムにおいて、前記サーバ装置は、前記第１アプリケーションから前記第２アプリケーションへの通信を前記端末装置に中継する第１プロキシ部を有し、前記端末装置は、前記第１プロキシ部から中継された通信を前記第２アプリケーションに転送する第２プロキシ部を有し、前記第１プロキシ部及び前記第２プロキシ部は、前記第１アプリケーションと前記第２アプリケーションの間の通信により確立されたセッションに対応して通信経路を生成し、前記端末装置が接続されるネットワークの切り替えに応じ前記通信経路を用いて前記セッションを維持する。
2018061209.tif 000002
【特許請求の範囲】
【請求項１】
第１アプリケーションが動作するサーバ装置と、第２アプリケーションが動作する端末装置とを含む通信システムにおいて、
前記サーバ装置は、前記第１アプリケーションから前記第２アプリケーションへの通信を前記端末装置に中継する第１プロキシ部を有し、
前記端末装置は、前記第１プロキシ部から中継された通信を前記第２アプリケーションに転送する第２プロキシ部を有し、
前記第１プロキシ部及び前記第２プロキシ部は、前記第１アプリケーションと前記第２アプリケーションの間の通信により確立されたセッションに対応して通信経路を生成し、前記端末装置が接続されるネットワークの切り替えに応じ前記通信経路を用いて前記セッションを維持することを特徴とする通信システム。
【請求項２】
前記第１プロキシ部及び前記第２プロキシ部は、前記通信経路を用いて、前記ネットワークの切り替えによって中断された前記第１アプリケーションから前記第２アプリケーションへの通信を継続することを特徴とする請求項１に記載の通信システム。
【請求項３】
前記第１プロキシ部は、前記第１アプリケーションから前記第２アプリケーションに対する通信を依頼されたとき、前記第１アプリケーションにセッションの確立を通知し、
前記第２プロキシ部は、前記ネットワークの切り替え後、前記第１プロキシ部からの通知に応じて前記第２アプリケーションとのセッションを確立することを特徴とする請求項１または２に記載の通信システム。
【請求項４】
前記第２プロキシ部は、前記切り替え後のネットワークにおける前記端末装置の識別情報を前記第１プロキシ部に通知し、
前記第１プロキシ部は、前記識別情報に基づき前記通信経路を生成することを特徴とする請求項１乃至３の何れかに記載の通信システム。
【請求項５】
サーバ装置で動作する第１アプリケーションと通信する第２アプリケーションが動作する端末装置において、
前記サーバ装置から中継された前記第１アプリケーションから前記第２アプリケーションへの通信を前記第２アプリケーションに転送するプロキシ部を有し、
前記プロキシ部は、前記第１アプリケーションと前記第２アプリケーションの間の通信により確立されたセッションに対応する通信経路を生成し、接続されるネットワークの切り替えに応じ前記通信経路を用いて前記セッションを維持することを特徴とする端末装置。
【請求項６】
前記プロキシ部は、前記通信経路を用いて、前記ネットワークの切り替えによって中断された前記第１アプリケーションから前記第２アプリケーションへの通信を継続することを特徴とする請求項５に記載の端末装置。
【請求項７】
前記プロキシ部は、前記切り替え後のネットワークにおける前記端末装置の識別情報を前記サーバ装置に通知することを特徴とする請求項５または６の何れかに記載の端末装置。
【請求項８】
第１アプリケーションが動作するサーバ装置において、
前記サーバ装置は、前記第１アプリケーションから、端末装置で動作する第２アプリケーションへの通信を前記端末装置に中継するプロキシ部を有し、
前記プロキシ部は、前記第１アプリケーションと前記第２アプリケーションの間の通信により確立されたセッションに対応する通信経路を生成し、前記端末装置が接続されるネットワークの切り替えに応じ前記通信経路を用いて前記セッションを維持することを特徴とするサーバ装置。
【請求項９】
前記プロキシ部は、前記通信経路を用いて、前記ネットワークの切り替えによって中断された前記第１アプリケーションから前記第２アプリケーションへの通信を継続することを特徴とする請求項８に記載のサーバ装置。
【請求項１０】
サーバ装置で動作する第１アプリケーションと、端末装置で動作する第２アプリケーションとの間の通信を処理する通信プログラムにおいて、
前記サーバ装置から前記端末装置に中継された前記第１アプリケーションから前記第２アプリケーションへの通信を前記第２アプリケーションに転送し、
前記第１アプリケーションと前記第２アプリケーションの間の通信により確立されたセッションに対応する通信経路を生成し、前記端末装置が接続されるネットワークの切り替えに応じ前記通信経路を用いて前記セッションを維持する、処理をコンピュータに実行させることを特徴とする通信プログラム。
【請求項１１】
前記通信経路を用いて、前記ネットワークの切り替えによって中断された前記第１アプリケーションから前記第２アプリケーションへの通信を継続する処理を前記コンピュータに実行させることを特徴とする請求項１０に記載の通信プログラム。
【請求項１２】
前記切り替え後のネットワークにおける前記端末装置の識別情報を前記サーバ装置に通知する処理を前記コンピュータに実行させることを特徴とする請求項１０または１１の何れかに記載の通信プログラム。
【請求項１３】
サーバ装置で動作する第１アプリケーションと、端末装置で動作する第２アプリケーションとの間の通信を処理する通信プログラムにおいて、
前記第１アプリケーションから前記第２アプリケーションへの通信を前記サーバ装置から前記端末装置に中継し、
前記第１アプリケーションと前記第２アプリケーションの間の通信により確立されたセッションに対応する通信経路を生成し、前記端末装置が接続されるネットワークの切り替えに応じ前記通信経路を用いて前記セッションを維持する、処理をコンピュータに実行させることを特徴とする通信プログラム。
【請求項１４】
前記通信経路を用いて、前記ネットワークの切り替えによって中断された前記第１アプリケーションから前記第２アプリケーションへの通信を継続する処理を前記コンピュータに実行させることを特徴とする請求項１３に記載の通信プログラム。
【請求項１５】
サーバ装置で動作する第１アプリケーションと、端末装置で動作する第２アプリケーションとの間の通信を処理する通信方法において、
前記サーバ装置から前記端末装置に中継された前記第１アプリケーションから前記第２アプリケーションへの通信を前記第２アプリケーションに転送する工程と、
前記第１アプリケーションと前記第２アプリケーションの間の通信により確立されたセッションに対応する通信経路を生成し、前記端末装置が接続されるネットワークの切り替えに応じ前記通信経路を用いて前記セッションを維持する工程とを、コンピュータが実行することを特徴とする通信方法。
【請求項１６】
前記通信経路を用いて、前記ネットワークの切り替えによって中断された前記第１アプリケーションから前記第２アプリケーションへの通信を継続する処理を前記コンピュータが実行することを特徴とする請求項１５に記載の通信方法。
【請求項１７】
前記切り替え後のネットワークにおける前記端末装置の識別情報を前記サーバ装置に通知する処理を前記コンピュータが実行することを特徴とする請求項１５または１６に記載の通信方法。
【請求項１８】
サーバ装置で動作する第１アプリケーションと、端末装置で動作する第２アプリケーションとの間の通信を処理する通信方法において、
前記第１アプリケーションから前記第２アプリケーションへの通信を前記サーバ装置から前記端末装置に中継する工程と、
前記第１アプリケーションと前記第２アプリケーションの間の通信により確立されたセッションに対応する通信経路を生成し、前記端末装置が接続されるネットワークの切り替えに応じ前記通信経路を用いて前記セッションを維持する工程とを、コンピュータが実行することを特徴とする通信方法。
【請求項１９】
前記通信経路を用いて、前記ネットワークの切り替えによって中断された前記第１アプリケーションから前記第２アプリケーションへの通信を継続する処理を前記コンピュータが実行することを特徴とする請求項１８に記載の通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、通信システム、端末装置、サーバ装置、通信プログラム、及び通信方法に関する。
【背景技術】
【０００２】
スマートフォンなどの端末装置は、例えばＷｉ−Ｆｉ（Wireless Fidelity、登録商標、以下同様）やＬＴＥ（Long Term Evolution、登録商標、以下同様）などの無線ネットワークに接続されるが、移動に伴い接続先の無線ネットワークが切り替わる。このため、端末装置は、無線ネットワークの切り替えのたびに、ＤＨＣＰ（Dynamic Host Configuration Protocol）などにより新たなＩＰ（Internet Protocol）アドレスが割り当てられる。【０００３】
通信を利用するアプリケーションのセッションは、ＴＣＰ（Transmission Control Protocol）／ＩＰなどの通信プロトコルのセッションとは別に管理されており、プッシュ型通信のようなサーバ装置から端末装置への一方的な通信は、端末装置のＩＰアドレスが変更されると途絶する。【０００４】
セッションに関し、例えば特許文献１には、無線端末において、サーバとの無線リンクが切断状態であるとき、バッファからアプリケーションレイヤへのデータパケットの出力を遅延させることにより、アプリケーションレイヤがセッションの接続状態を認識する時間を延ばす点が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−２１７１９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に開示された技術では、上記のようなネットワーク接続環境の変化に対応して通信を継続することはできない。【０００７】
そこで本件は、ネットワーク接続環境の変化に対応して通信を継続することができる通信システム、端末装置、サーバ装置、通信プログラム、及び通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、通信システムは、第１アプリケーションが動作するサーバ装置と、第２アプリケーションが動作する端末装置とを含む通信システムにおいて、前記サーバ装置は、前記第１アプリケーションから前記第２アプリケーションへの通信を前記端末装置に中継する第１プロキシ部を有し、前記端末装置は、前記第１プロキシ部から中継された通信を前記第２アプリケーションに転送する第２プロキシ部を有し、前記第１プロキシ部及び前記第２プロキシ部は、前記第１アプリケーションと前記第２アプリケーションの間の通信により確立されたセッションに対応して通信経路を生成し、前記端末装置が接続されるネットワークの切り替えに応じ前記通信経路を用いて前記セッションを維持する。
【発明の効果】
【０００９】
１つの側面として、ネットワーク接続環境の変化に対応して通信を継続することができる。
【図面の簡単な説明】
【００１０】
【図１】通信システムの一例を示す構成図である。
【図２】端末のネットワーク接続環境の変化の一例を示す図である。
【図３】端末の一例を示す構成図である。
【図４】サーバの一例を示す構成図である。
【図５】端末及びサーバの各機能構成の一例を示す構成図である。
【図６】バンドルのフォーマットを示す図である。
【図７】ＤＴＮ（Delay, Disruption Tolerant Networking）経路テーブルの一例を示す図である。
【図８】コネクションリスト、フィルタテーブル、及びバンドルバッファの一例を示す図である。
【図９】初期設定ファイルの一例を示す図である。
【図１０】プロトコル変換の一例を示す図である。
【図１１】アプリケーションのデータ送信処理の一例を示すフローチャートである。
【図１２】バンドルの送信処理の一例を示すフローチャートである。
【図１３】バンドルの受信処理の一例を示すフローチャートである。
【図１４】端末の経路制御部の処理の一例を示すフローチャートである。
【図１５】サーバの経路制御部の処理の一例を示すフローチャートである。
【図１６】バンドルプロトコルの適用の切り替え処理の一例を示すフローチャートである。
【図１７】ＥＩＤ（End Point ID）の割り当ての一例を示す図である。
【図１８】制御アプリケーションから自動運転アプリケーションへの通信の一例を示すシーケンス図である。
【図１９】端末及びサーバの内部の動作を示す図（その１）である。
【図２０】端末及びサーバの内部の動作を示す図（その２）である。
【図２１】端末及びサーバの内部の動作を示す図（その３）である。
【図２２】端末及びサーバの内部の動作を示す図（その４）である。
【図２３】端末及びサーバの内部の動作を示す図（その５）である。
【図２４】アドレス通知の一例を示す図である。
【図２５】制御アプリケーションから自動運転アプリケーションへの通信の他例を示すシーケンス図（その１）である。
【図２６】制御アプリケーションから自動運転アプリケーションへの通信の他例を示すシーケンス図（その２）である。
【図２７】センサアプリケーションから計測アプリケーションに通信する時の端末及びサーバの内部の動作を示す図である。
【発明を実施するための形態】
【００１１】
図１は、通信システムの一例を示す構成図である。本実施例では、サーバ２と複数の端末１ａ〜１ｃを含む通信システムの適用例として、交通情報のモビリティＩｏＴ（Internet Of Things）サービスのシステムを挙げる。
【００１２】
サーバ２は、サーバ装置の一例であり、インターネットＮＷに接続されている。サーバ装置２では、各自動車＃１〜＃３の速度を計測するための計測アプリケーション（計測ＡＰＬ）２０１ｂと、その速度に基づき各自動車＃１〜＃３の速度を制御するための制御アプリケーション（制御ＡＰＬ）２０１ａが動作している。制御ＡＰＬ２０１ａは、サーバ２で動作する第１アプリケーションの一例である。
【００１３】
端末１ａ〜１ｃは、端末装置の一例であり、自動車＃１〜＃３にそれぞれ搭載されている。端末１ａ〜１ｃは、インターネットＮＷに接続された無線アクセスポイントＡＰとリンクすることによりインターネットＮＷを介しサーバ２と通信する。なお、端末１ａ〜１ｃとしては、スマートフォンなどの無線通信用の端末装置が挙げられるが、これに限定されない。また、無線アクセスポイントＡＰは、Ｗｉ−Ｆｉに通信回線に対応するものであってもよいし、ＬＴＥや３Ｇの通信回線に対応するものであってもよい。
【００１４】
端末１ａ〜１ｃでは、自動車＃１〜＃３に搭載されたセンサ装置９１により自動車＃１〜＃３の速度を検出するためのセンサアプリケーション（センサＡＰＬ）１０１ｂと、自動車＃１〜＃３に搭載された駆動装置９０をサーバ２からの指示により制御するための自動運転アプリケーション（自動運転ＡＰＬ）１０１ａが動作する。センサ装置９１は、例えば自動車＃１〜＃３の車軸の回転数を検出するセンサであり、駆動装置９０は、例えばアクセルやブレーキにより自動車＃１〜＃３の速度などを自動制御する装置である。なお、自動運転ＡＰＬ１０１ａは、端末１で動作する第２アプリケーションの一例である。
【００１５】
センサＡＰＬ１０１ｂは、センサ装置９１により自動車＃１〜＃３の速度を検出して、インターネットＮＷを介しサーバ２に通知する。計測ＡＰＬ２０１ｂは、センサＡＰＬ１０１ｂからの通知により各自動車＃１〜＃３の速度を計測する。
【００１６】
制御ＡＰＬ２０１ａは、計測ＡＰＬ２０１ｂから各自動車＃１〜＃３の速度を取得して、自動車＃１〜＃３の走行する道路の状況を分析する。制御ＡＰＬ２０１ａは、その分析結果に基づき各自動車＃１〜＃３の端末１ａ〜１ｃに速度を指示する。自動運転ＡＰＬ１０１ａは、制御ＡＰＬ２０１ａからの指示に応じた速度となるように駆動装置９０を制御する。
【００１７】
このため、計測ＡＰＬ２０１ｂはセンサＡＰＬ１０１ｂとセッションを確立し、制御ＡＰＬ２０１ａは自動運転ＡＰＬ１０１ａとセッションを確立する。以下に速度制御の例を挙げて説明する。
【００１８】
各自動車＃１〜＃３は同じ道路を図１の紙面左方向（「進行方向」参照）に向かい走行していると仮定する。自動車＃１の端末１ａのセンサＡＰＬ１０１ｂは、自動車＃１の速度２０（km/h）を検出してサーバ２に通知する。また、自動車＃２の端末１ｂのセンサＡＰＬ１０１ｂは、自動車＃２の速度６０（km/h）を検出してサーバ２に通知する。
【００１９】
サーバ２の計測ＡＰＬ２０１ｂは、自動車＃１の速度と自動車＃２の速度を端末１ａ，１ｂから受信すると、制御ＡＰＬ２０１ａに出力する。制御ＡＰＬ２０１ａは、自動車＃１の速度と自動車＃２の速度などを分析し、その分析結果から自動車＃３の端末１ｃに対し速度４０（km/h）に減速するように指示する。
【００２０】
自動車＃３の端末１ｃの自動運転ＡＰＬ１０１ａは、制御ＡＰＬ２０１ａの指示に従い、自動車＃３の速度が４０（km/h）となるように駆動装置９０を制御する。これにより、自動車＃３に対し道路状況に応じた最適な自動運転が行われる。
【００２１】
しかし、各端末１ａ〜１ｃは、自動車＃１〜＃３の走行のため、常に無線アクセスポイントにリンクすることがでるわけではない。すなわち、各端末１ａ〜１ｃは、自動車＃１〜＃３が無線アクセスポイントの無線ＬＡＮ（Local Area Network）の圏外に入ると、無線アクセスポイントＡＰとのリンクが切断される。このため、サーバ２と端末１ａ〜１ｃの通信は断続的となる。
【００２２】
また、各端末１ａ〜１ｃは、自動車＃１〜＃３が他の無線アクセスポイントの無線ＬＡＮの圏内に入ると、再び無線アクセスポイントＡＰとリンクすることができるが、ＤＨＣＰにより新たなＩＰアドレスが割り当てられる。このため、サーバ２は、端末１ａ〜１ｃからの通信を受けるまで端末１ａ〜１ｃのＩＰアドレスを知ることができないので、例えば、プッシュ型通信により端末１ａ〜１ｃに対し一方的に速度を指示することができない。以下に端末１ｃを例に挙げて説明する。
【００２３】
図２は、端末１ｃのネットワーク接続環境の変化の一例を示す図である。図２において、図１と共通する構成には同一の符号を付し、その説明を省略する。
【００２４】
時刻ｔ０において、自動車＃３は無線アクセスポイントＡＰ＃１の無線ＬＡＮ＃１の圏内を走行している。このとき、端末１ｃは、無線アクセスポイントＡＰ＃１とリンクして無線ＬＡＮ＃１に接続され、無線アクセスポイントＡＰ＃１とのＤＨＣＰの通信によりＩＰアドレス「10.10.10.105」が割り当てられる。
【００２５】
端末１ｃは、無線アクセスポイントＡＰ＃１を介し自動車＃３の速度をサーバ２に通知する。サーバ２は、端末１ｃから速度の通知を受信することにより、送信元のＩＰアドレス「10.10.10.105」を検出する。このため、サーバ２は、ＩＰアドレス「10.10.10.105」を宛先として、端末１ｃに速度を指示することができる。
【００２６】
次に、時刻ｔ１において自動車＃３は無線ＬＡＮ＃１の圏外に出る。このとき、端末１ｃは、何れの無線アクセスポイントＡＰにもリンクしていないため、サーバ２は端末１ｃに速度を指示することができない。なお、端末１ｃは、リンク断の状態であるため、ＩＰアドレスを有していない。
【００２７】
次に、時刻ｔ２において自動車＃３は無線アクセスポイントＡＰ＃２の無線ＬＡＮ＃２の圏内に入る。このとき、端末１ｃは、無線アクセスポイントＡＰ＃２とリンクして無線ＬＡＮ＃２に接続され、無線アクセスポイントＡＰ＃２とのＤＨＣＰの通信によりＩＰアドレス「20.20.20.210」が割り当てられる。これにより、端末１ｃのＩＰアドレスが変更される。なお、無線ＬＡＮ＃１，＃２は、端末１ｃが接続されるネットワークの一例である。
【００２８】
サーバ２は、端末１ｃの新しいＩＰアドレス「20.20.20.210」を知らないため、端末１ｃに速度を指示することができない。もっとも、端末１ｃがサーバ２に再び速度を通知すれば、サーバ２は端末１ｃのＩＰアドレス「20.20.20.210」を知ることができる。しかし、サーバ２は、端末１ｃからの通知を受信した後に速度の指示を行うのでは、図１を参照して述べたような制御を実現することができず、有効にシステムを機能させることができない。
【００２９】
そこで、サーバ２及び端末１ａ〜１ｃは、各アプリケーション１０１ａ，１０１ｂ，２０１ａ，２０１ｂが途絶耐性ネットワークの技術に基づき通信するための構成を備える。また、端末１ａ〜１ｃは、ＩＰアドレスの割り当てのたびにサーバ２にＩＰアドレスを通知する。これにより、サーバ２と端末１ａ〜１ｃは、端末１ａ〜１ｃのネットワーク接続環境の変化により通信が断続的となる環境でも円滑な通信を行うことができる。以下に端末１ａ〜１ｃとサーバ２の構成を述べる。
【００３０】
図３は端末１ａ〜１ｃの一例を示す構成図である。なお、以下の説明では、端末１ａ〜１ｃを代表して「端末１」と表記する。
【００３１】
端末１は、ＣＰＵ（Central Processing Unit）１０、ＲＯＭ（Read Only Memory）１１、ＲＡＭ（Random Access Memory）１２、ＨＤＤ（Hard Disk Drive）やメモリなどの記憶部１３、無線ＬＡＮモジュール１４、入力部１５、及び表示部１６を有する。ＣＰＵ１０は、互いに信号の入出力ができるように、ＲＯＭ１１、ＲＡＭ１２、記憶部１３、無線ＬＡＮモジュール１４、入力部１５、及び表示部１６と、バス１７を介して接続されている。
【００３２】
ＲＯＭ１１は、ＣＰＵ１０を駆動するプログラムが格納されている。ＲＯＭ１１内のプログラムには、ＯＳ（Operating System）や実施例の通信方法を実行する通信プログラムが含まれる。この通信方法は、後述するように、サーバ２で動作するアプリケーション２０１ａ，２０１ｂと、端末１で動作するアプリケーション１０１ａ，１０１ｂとの間の通信を処理するものである。
【００３３】
ＲＡＭ１２は、ＣＰＵ１０のワーキングメモリとして機能する。記憶部１３には、プログラムの実行に用いられる各種の情報が記憶されている。無線ＬＡＮモジュール１４は、無線アクセスポイントＡＰとリンクすることによりインターネットＮＷ上のサーバ２と通信する。
【００３４】
入力部１５は、端末１に情報を入力する手段である。入力部１５としては、例えばキーボード、マウス、及びタッチパネルなどが挙げられる。入力部１５は、入力された情報を、バス１７を介しＣＰＵ１０に出力する。
【００３５】
表示部１６は、端末１の情報を出力する手段である。表示部１６としては、例えばディスプレイ、タッチパネル、及びプリンタなどが挙げられる。表示部１６は、ＣＰＵ１０からバス１７を介して情報を取得して表示する。表示部１６には、例えば端末１のアプリケーション１０１ａ，１０１ｂの通信の状況及び結果が表示される。
【００３６】
ＣＰＵ１０は、ＲＯＭ１１からプログラムを読み込むと、通信方法を実行するための各種の機能が形成される。ＣＰＵ１０は、プログラムを実行するコンピュータの一例である。なお、端末１の機能構成については後述する。
【００３７】
図４は、サーバ２の一例を示す構成図である。サーバ２は、ＣＰＵ２０、ＲＯＭ２１、ＲＡＭ２２、ＨＤＤ２３、及び通信ポート２４を有する。ＣＰＵ２０は、互いに信号の入出力ができるように、ＲＯＭ２１、ＲＡＭ２２、ＨＤＤ２３、及び通信ポート２４と、バス２７を介して接続されている。
【００３８】
ＲＯＭ２１は、ＣＰＵ２０を駆動するプログラムが格納されている。ＲＯＭ２１内のプログラムには、ＯＳや実施例の通信方法を実行する通信プログラムが含まれる。この通信方法は、後述するように、サーバ２で動作するアプリケーション２０１ａ，２０１ｂと、端末１で動作するアプリケーション１０１ａ，１０１ｂとの間の通信を処理するものである。ＲＡＭ２２は、ＣＰＵ２０のワーキングメモリとして機能する。通信ポート２４は、例えばＮＩＣ（Network Interface Card）であり、インターネットＮＷを介し端末１と通信する。
【００３９】
ＣＰＵ２０は、ＲＯＭ２１からプログラムを読み込むと、通信方法を実行するための各種の機能が形成される。ＣＰＵ２０は、プログラムを実行するコンピュータの一例である。
【００４０】
図５は、端末１及びサーバ２の各機能構成の一例を示す構成図である。端末１及びサーバ２は、一例としてインターネットＮＷを介して接続されている。
【００４１】
端末１は、アプリケーション機能部１００と、ＤＴＮプロキシ部１９と、ＯＳ機能部１３０と、ＩＰ経路テーブル（ＩＰ経路ＴＢＬ）１３１とを有する。ＤＴＮプロキシ部１９は、プロキシプロトコル機能部１１０と、バンドル制御部１２０と、状態通知部１２１と、バンドルバッファ１２２と、ＤＴＮ経路テーブル（ＤＴＮ経路ＴＢＬ）１２３と、経路制御部１２４とを有する。なお、ＤＴＮプロキシ部１９は第１プロキシ部の一例である。
【００４２】
アプリケーション機能部１００は、アプリケーション（ＡＰＬｃ）１０１と、ＴＣＰ処理部１０２とを有する。アプリケーション１０１は、端末１ａ〜１ｃのセンサＡＰＬ１０１ｂと自動運転ＡＰＬ１０１ａに該当する。
【００４３】
プロキシプロトコル機能部１１０は、プロキシ制御部１１１と、コネクション監視部１１２と、アドレス変換部１１３と、送受信制御部１１４と、応答制御部１１５と、コネクションリスト１１６と、初期設定ファイル１１７と、フィルタテーブル（フィルタＴＢＬ）１１８とを有する。プロキシプロトコル機能部１１０は、アプリケーション１０１が機能するアプリケーションレイヤと、バンドル制御部１２０が機能するバンドルレイヤとの間を仲介することにより、バンドル制御部１２０に対してレイヤ間のトランスポートプロトコルの違いを隠蔽する。プロキシプロトコル機能部１１０は、自動運転ＡＰＬ１０１ａとセンサＡＰＬ１０１ｂのそれぞれに対して個別に生成される。
【００４４】
アプリケーション１０１、ＴＣＰ処理部１０２、プロキシ制御部１１１、コネクション監視部１１２、アドレス変換部１１３、送受信制御部１１４、応答制御部１１５、バンドル制御部１２０、状態通知部１２１、経路制御部１２４、及びＯＳ機能部１３０は、端末１のＣＰＵ１０に形成される機能である。また、コネクションリスト１１６、初期設定ファイル１１７と、フィルタＴＢＬ１１８、バンドルバッファ１２２、ＤＴＮ経路ＴＢＬ１２３、及びＩＰ経路ＴＢＬ１３１は、記憶部１３に記憶されている。
【００４５】
一方、サーバ２は、アプリケーション機能部２００と、ＤＴＮプロキシ部２９と、ＯＳ機能部２３０と、ＩＰ経路ＴＢＬ２３１とを有する。ＤＴＮプロキシ部２９は、プロキシプロトコル機能部２１０と、バンドル制御部２２０と、状態通知部２２１と、バンドルバッファ２２２と、ＤＴＮ経路ＴＢＬ２２３と、経路制御部２２４とを有する。なお、ＤＴＮプロキシ部２９は第２プロキシ部の一例である。
【００４６】
アプリケーション機能部２００は、アプリケーション（ＡＰＬｓ）２０１と、ＴＣＰ処理部２０２とを有する。アプリケーション２０１は、制御ＡＰＬ２０１ａと計測ＡＰＬ２０１ｂに該当する。
【００４７】
プロキシプロトコル機能部２１０は、プロキシ制御部２１１と、コネクション監視部２１２と、アドレス変換部２１３と、送受信制御部２１４と、応答制御部２１５と、コネクションリスト２１６と、初期設定ファイル２１７と、フィルタＴＢＬ２１８とを有する。プロキシプロトコル機能部２１０は、アプリケーション２０１が機能するアプリケーションレイヤと、バンドル制御部２２０が機能するバンドルレイヤとの間を仲介することにより、バンドル制御部２２０に対してレイヤ間のトランスポートプロトコルの違いを隠蔽する。プロキシプロトコル機能部２１０は、制御ＡＰＬ２０１ａの通信先の各端末１ａ〜１ｃ及び計測ＡＰＬ２０１ｂに対して個別に生成される。
【００４８】
アプリケーション２０１、ＴＣＰ処理部２０２、プロキシ制御部２１１、コネクション監視部２１２、アドレス変換部２１３、送受信制御部２１４、応答制御部２１５、バンドル制御部２２０、状態通知部２２１、経路制御部２２４、及びＯＳ機能部２３０は、サーバ２のＣＰＵ２０に形成される機能である。また、コネクションリスト２１６と、初期設定ファイル２１７と、フィルタＴＢＬ２１８、バンドルバッファ２２２、ＤＴＮ経路ＴＢＬ２２３、及びＩＰ経路ＴＢＬ２３１は、ＨＤＤ２３に記憶されている。
【００４９】
アプリケーション２０１とアプリケーション１０１は、ＴＣＰ処理部１０２，２０２により通信することにより連携して所定の機能を提供する。アプリケーション２０１とアプリケーション１０１の機能としては、例えば図１を参照して述べた機能などが挙げられるが限定はない。
【００５０】
ＴＣＰ処理部１０２，２０２は、例えばＯＳのドライバなどにより提供されるＴＣＰ／ＩＰの通信機能を備える。端末１のＴＣＰ処理部１０２は、無線ＬＡＮモジュール１４を制御してパケットの送受信を行い、サーバ２のＴＣＰ処理部２０２は、通信ポート２４を制御してパケットの送受信を行う。
【００５１】
アプリケーション２０１とアプリケーション１０１は、インターネットＮＷを介し、直接的にＴＣＰ／ＩＰに基づく通信を行う。しかし、通信が断続的となる環境においては、バンドル制御部１２０，２２０が、ＴＣＰ／ＩＰに基づく通信に代えて、ＤＴＮのバンドルプロトコルに基づく通信を行う。バンドル制御部１２０，２２０は、通信が途絶した場合、アプリケーション１０１，２０１が送信するデータをバンドルして一時的にバンドルバッファ１２２，２２２に格納しておき、通信が可能なるとバンドルバッファ１２２，２２２からバンドルデータを読み出して通信先（サーバ２または端末１）に送信する。
【００５２】
バンドル制御部１２０は、アプリケーション１０１から通信先への通信を、その通信先とのコネクションの状態に応じて、ＴＣＰ／ＩＰに基づく通信からＤＴＮのバンドルプロトコルに基づく通信に切り替えて行う。このとき、コネクション監視部１１２は、通信先とのコネクションの状態を監視し、コネクションの状態に応じてアドレス変換部１１３を制御する。
【００５３】
これにより、コネクション監視部１１２は、アプリケーション１０１の通信先との通信をＴＣＰ／ＩＰによる通信からＤＴＮのバンドルプロトコルによる通信に切り替える。したがって、アプリケーション１０１の通信が、ＴＣＰ処理部１０２によるＴＣＰ／ＩＰに基づく通信からバンドル制御部１２０によるバンドルプロトコルに基づく通信に切り替えられる。
【００５４】
また、バンドル制御部２２０は、アプリケーション２０１から通信先への通信を、その通信先とのコネクションの状態に応じて、ＴＣＰ／ＩＰに基づく通信からＤＴＮのバンドルプロトコルに基づく通信に切り替えて行う。このとき、コネクション監視部２１２は、通信先とのコネクションの状態を監視し、コネクションの状態に応じて、アドレス変換部２１３を制御する。
【００５５】
これにより、コネクション監視部２１２は、アプリケーション２０１の通信先との通信をＴＣＰ／ＩＰによる通信からＤＴＮのバンドルプロトコルによる通信に切り替える。したがって、アプリケーション２０１の通信が、ＴＣＰ処理部２０２によるＴＣＰ／ＩＰに基づく通信からバンドル制御部２２０によるバンドルプロトコルに基づく通信に切り替えられる。
【００５６】
バンドル制御部１２０，２２０は、例えば、ＲＦＣ（Request For Comments）５０５０の規定に従い、バンドルプロトコルに基づく通信を行う。バンドル制御部１２０，２２０は、アプリケーション１０１，２０１の送信対象データを、バンドルと呼ばれるデータメッセージのペイロード部分に収容して送信する。
【００５７】
図６には、バンドルのフォーマットが示されている。バンドルは、プライマリバンドルブロック及びバンドルペイロードブロックを含む。プライマリバンドルブロックには、送信元や宛先に関する情報、及び、バンドルの削除までの時間を示すライフタイム（「Life time」）などが含まれる。バンドルペイロードブロックには、データを収容するペイロード（「Bundle Payload」）が含まれる。なお、バンドル内の各項目についてはＲＦＣ５０５０に規定されている。
【００５８】
再び図５を参照すると、バンドル制御部１２０，２２０は、バンドルを送信するとき、ＤＴＮ経路ＴＢＬ１２３，２２３を参照して、バンドルプロトコルにおける宛先を示すＥＩＤに対応するＴＣＰ／ＩＰ上の宛先ＩＰアドレス及びＴＣＰポート番号（以下、「ポート番号」と表記）を取得する。
【００５９】
図７は、ＤＴＮ経路ＴＢＬ１２３，２２３の一例を示す図である。ＤＴＮ経路ＴＢＬ１２３，２２３には、宛先ＥＩＤ、宛先のＩＰアドレスの種別である次ホップ種別、宛先のＩＰアドレスである次ホップアドレス、及び宛先のポート番号が登録されている。
【００６０】
端末１のＤＴＮ経路ＴＢＬ１２３において、宛先ＥＩＤには、サーバ２のＥＩＤである「dtn://server」が登録されている。また、サーバ２のＩＰアドレスは固定であるため、次ホップ種別には「固定」が登録されている。また、初期設定ファイル１１７に基づき、次ホップアドレスにはサーバ２のＩＰアドレス「10.10.10.100」が登録され、ポート番号には「４５５６」が登録されている。
【００６１】
一方、サーバ２のＤＴＮ経路ＴＢＬ２２３において、宛先ＥＩＤには、各端末１（つまり端末１ａ〜１ｃ）のＥＩＤである「dtn://mobile1」、「dtn://mobile2」、及び「dtn://mobile3」が登録されている。また、各端末１のＩＰアドレスは、端末１の接続先の無線ＬＡＮに応じて可変であるため、次ホップ種別には「可変」が登録され、次ホップアドレスは未登録状態（「−」）となっている。次ホップアドレスは、後述するように、端末１から受信されたアドレス通知に基づき登録される。また、初期設定ファイル２１７に基づき、ポート番号には「４５５６」が登録されている。
【００６２】
再び図５を参照すると、バンドル制御部１２０，２２０は、その宛先とのコネクション、つまり端末１とサーバ２の間のコネクションが切断されているとき、バンドルバッファ１２２，２２２にバンドルを格納しておき、コネクションが再接続されたとき、バンドルバッファ１２２，２２２からバンドルを読み出して送信する。これにより、ＤＴＮに基づく通信が行われる。
【００６３】
図８には、バンドルバッファ１２２，２２２の一例が示されている。バンドルバッファ１２２，２２２はバンドルの格納領域である。バンドルは、バンドルを識別するバンドルＩＤとともにバンドルバッファ１２２，２２２に格納される。なお、バンドル制御部１２０，２２０は、バンドルの送信時だけでなく、バンドルの受信時もバンドルをバンドルバッファ１２２，２２２に格納する。
【００６４】
再び図５を参照すると、バンドル制御部１２０，２２０は、ＯＳに含まれるＯＳ機能部１３０，２３０によりバンドルを送受信する。端末１のＯＳ機能部１３０は、無線ＬＡＮモジュール１４による通信処理機能を有し、無線アクセスポイントＡＰとのリンク及び通信を処理する。また、サーバ２のＯＳ機能部２３０は、通信ポート２４による通信処理機能を有し、通信ポート２４の接続先のデバイスとのリンク及び通信を処理する。ＯＳ機能部１３０，２３０は、ＩＰ経路ＴＢＬ１３１，２３１から通信先のＩＰアドレスに応じたゲートウェイアドレスを検索し、そのゲートウェイにアクセスすることで通信を行う。
【００６５】
端末１の経路制御部１２４は、アプリケーション１０１とアプリケーション２０１の間の通信により確立されたセッションに対応する通信経路を生成する。より具体的には、経路制御部１２４は、ＯＳ機能部１３０を監視し、監視の結果、ＤＨＣＰによる新たなＩＰアドレスの割り当てを検出した場合、ＩＰアドレスに応じたゲートウェイアドレスをＩＰ経路ＴＢＬ１３１に設定する。また、経路制御部１２４は、そのＩＰアドレスを含むアドレス通知を生成してバンドル制御部１２０経由でサーバ２の経路制御部２２４に送信する。このとき、経路制御部１２４は、送信に先立って、バンドル制御部１２０からサーバ２のバンドル制御部２２０に通信するためのソケットをオープンする。
【００６６】
サーバ２の経路制御部２２４は、アプリケーション１０１とアプリケーション２０１の間の通信により確立されたセッションに対応する通信経路を生成する。より具体的には、経路制御部２２４は、端末１の経路制御部１２４からアドレス通知を受信すると、アドレス通知から端末１のＩＰアドレスを取得してＤＴＮ経路ＴＢＬ２２３の次ホップアドレスに登録する。また、経路制御部２２４は、バンドル制御部２２０から端末１のバンドル制御部１２０に通信するためのソケットをオープンし、経路制御部１２４に対する応答として、サーバ２のＩＰアドレスを含むアドレス通知を生成して送信する。
【００６７】
これにより、端末１の接続先の無線ＬＡＮが切り替わった場合でも、アプリケーション１０１とアプリケーション２０１の間の通信が可能となり、アプリケーション１０１とアプリケーション２０１の間のセッションが維持される。
【００６８】
プロキシプロトコル機能部１１０，２１０は、アプリケーション１０１とアプリケーション２０１の間の通信を、ＴＣＰのソケット通信からバンドルプロトコルの通信に変換する。このとき、プロキシプロトコル機能部１１０，２１０は、バンドル制御部１２０，２２０に対しバンドルＡＰＩ（Application Programing Interface）により設定及び制御を行うことにより、一般的なアプリケーションでもＤＴＮを利用可能とする。以下にプロキシプロトコル機能部１１０，２１０の詳細を説明する。
【００６９】
アドレス変換部１１３，２１３は、アプリケーション１０１，２０１の通信の宛先を送受信制御部１１４，２１４の宛先に変換する。例えば端末１において、アドレス変換部１１３は、サーバ２を宛先とするパケットの宛先ＩＰアドレス及びポート番号を、送受信制御部１１４に設定されたＴＣＰソケット（以下、「ソケット」と表記）の宛先ＩＰアドレス及びポート番号に変換する。
【００７０】
このため、プロキシプロトコル機能部１１０，２１０は、アプリケーション１０１，２０１から通信先に送信されるパケットのデータを受信することができる。なお、アドレス変換部１１３，２１３は、例えば、ＯＳとしてWindows（登録商標、以下同様）が使用される場合、ＷＦＰ（Windows Filtering Platform）により実現され、ＯＳとしてLinux（登録商標）が使用される場合、「iptables」により実現される。
【００７１】
送受信制御部１１４，２１４は、アプリケーション１０１，２０１のＴＣＰのソケット通信を終端する。送受信制御部１１４，２１４は、装置内のローカルなループバックコネクションを確立する。
【００７２】
端末１の送受信制御部１１４は、アプリケーション１０１からのソケットの接続（つまりソケットのオープン）を監視し、プロキシ制御部１１１からの指示に従い、サーバ２のアプリケーション２０１に対するセッションの確立と、指示されたソケットへのデータの送信を行う。また、サーバ２の送受信制御部２１４は、アプリケーション２０１からのソケットの接続を監視し、プロキシ制御部２１１からの指示に従い、端末１のアプリケーション１０１に対するセッションの確立と、指示されたソケットへのデータの送信を行う。送受信制御部１１４は、通信先とのセッションが確立をアプリケーション１０１，２０１に通知する。
【００７３】
プロキシ制御部１１１，２１１は、送受信制御部１１４，２１４で受信したパケットのデータを、プロキシメッセージのペイロードに収容して、バンドルＡＰＩによりバンドル制御部１２０，２２０に出力する。これにより、プロキシ制御部１１１，２１１からバンドル制御部１２０，２２０に対してバンドルの送信が要求される。
【００７４】
プロキシ制御部１１１，２１１は、プロキシメッセージを、宛先に応じたコネクション番号により管理する。プロキシ制御部１１１，２１１は、送受信制御部１１４，２１４によりソケットがオープンされるたびに新規のコネクション番号をコネクションリスト１１６，２１６に登録する。
【００７５】
図８には、コネクションリスト１１６，２１６の一例が示されている。コネクションリスト１１６，２１６には、コネクション番号、ソケットチャネルＩＤ、及び宛先ＥＩＤが対応付けられて登録されている。ソケットチャネルＩＤは、送受信制御部１１４，２１４のソケットの識別子である。
【００７６】
プロキシ制御部１１１，２１１は、パケットの受信元のソケットのソケットチャネルＩＤに応じたコネクション番号をプロキシメッセージに付与してバンドル制御部１２０，２２０に出力する。また、プロキシ制御部１１１，２１１は、該当する宛先ＥＩＤへのバンドルの送信をバンドル制御部１２０，２２０に要求する。
【００７７】
したがって、端末１のコネクションリスト１１６の宛先ＥＩＤには、サーバ２のＥＩＤが登録され、サーバ２のコネクションリスト２１６の宛先ＥＩＤには、端末１のＥＩＤが登録されている。また、プロキシ制御部１１１，２１１は、初期設定ファイル１１７，２１７を読み出すことにより、自装置のＥＩＤや通信先のＥＩＤなどの通信に必要な情報を取得する。
【００７８】
図９は、初期設定ファイル１１７，２１７の一例を示す図である。本例では、自動運転ＡＰＬ１０１ａに対応するプロキシ制御部１１１の初期設定ファイル１１７と、端末１ａを通信先とする制御ＡＰＬ２０１ａの初期設定ファイル２１７とが示されている。初期設定ファイル１１７，２１７には、ノードＥＩＤ、アプリケーションＥＩＤ、出力ポインタ、各種のポート番号、及び宛先ＥＩＤが登録されている。
【００７９】
ノードＥＩＤは、通信のノードを識別するＥＩＤであり、ＩＰアドレスに対応付けられる。端末１ａ〜１ｃのノードＥＩＤは、一例として、それぞれ、「dtn://mobile1」、「dtn://mobile2」、及び「dtn://mobile3」とする。また、サーバ２のノードＥＩＤは、一例として、「dtn://server」とする。
【００８０】
アプリケーションＥＩＤは、アプリケーション１０１，２０１を識別するＥＩＤであり、プロキシ制御部１１１，２１１に対応付けられる。例えば、端末１の自動運転ＡＰＬ１０１ａのアプリケーションＥＩＤは「dtn://mobile1/navi」であり、サーバ２の端末１ａに対する制御ＡＰＬ２０１ａのアプリケーションＥＩＤは「dtn://server/navi/mobile1」である。
【００８１】
出力ポインタは、バンドル制御部１２０，２２０が受信したバンドルの出力先のディレクトリを示す。端末１のポート番号は、バンドル制御部１２０がバンドルを送受信するためのソケットのポート番号であり、サーバ２のポート番号は、バンドル制御部２２０がバンドルを送受信するためのソケットに対応するポート番号である。また、プロキシのポート番号は、プロキシ制御部１１１，２１１がアプリケーション１０１，２０１とデータを送受信するためのソケットに対応するポート番号である。
【００８２】
再び図５を参照すると、プロキシ制御部１１１，２１１は、バンドル制御部１２０，２２０からプロキシメッセージを受信する。プロキシ制御部１１１，２１１は、受信したプロキシメッセージのコネクション番号がコネクションリスト１１６，２１６に未登録である場合、送受信制御部１１４，２１４に新規のソケットのオープンを指示し、そのソケットによるセッションを開始する。
【００８３】
また、プロキシ制御部１１１，２１１は、受信したプロキシメッセージにデータが収容されていない場合、そのコネクション番号に対応するソケットチャネルＩＤをコネクションリスト１１６から検索する。プロキシ制御部１１１，２１１は、通信が終了したと判定し、検索したソケットチャネルＩＤのソケットの削除を送受信制御部１１４，２１４に指示する。
【００８４】
このように、ソケットとＥＩＤは、コネクションリスト１１６により対応付けられて管理される。このため、ソケットを用いるＴＣＰ／ＩＰの通信をバンドルプロトコルに基づき行うことが可能となる。
【００８５】
また、バンドル制御部１２０，２２０は、プロキシ制御部１１１，２１１からのバンドルの送信要求に応じてバンドルを送信する。したがって、バンドル制御部１２０，２２０は、アプリケーション１０１，２０１から通信先への通信を途絶耐性ネットワークのプロトコルに基づいて行うことができる。
【００８６】
応答制御部１１５，２１５は、アプリケーション１０１，２０１からの通信が応答を要する場合、その応答を生成してアプリケーション１０１，２０１に出力する。このため、コネクションの切断により通信先との通信が途絶した場合でも、アプリケーション１０１，２０１は、通信の途絶を知ることなく動作を行う。したがって、コネクションの再接続後に通信のやり直しを必要としない。
【００８７】
例えば、端末１において、プロキシ制御部１１１がアプリケーション１０１の通信を行った場合、応答制御部１１５はその通信に対する応答をアプリケーション１０１に出力する。アプリケーション１０１からアプリケーション２０１に対してファイルを分割して転送の場合、端末１の応答制御部１１５は、アプリケーション２０１に代わり、応答として、アプリケーション１０１に対し次のファイルデータの送信を促す。
【００８８】
つまり、応答制御部１１５，２１５は、アプリケーション１０１，２０１に通信の完了を通知する。このため、アプリケーション１０１，２０１は、バンドル制御部１２０，２２０のバンドルプロトコルに基づく通信の結果を知らず、通信が成功したと認識する。
【００８９】
このため、状態通知部１２１，２２１は、通信の状態及び結果に関する通信情報を、例えば画面へのポップアップ表示やログによりユーザに通知する。より具体的には、端末１の状態通知部１２１は表示部１６に通信情報を出力し、または通信情報が記録されたログファイルを記憶部１３に書き込む。また、サーバ２の状態通知部２２１は、通信情報が記録されたログファイルをＨＤＤ２３に書き込む。
【００９０】
プロキシ制御部１１１，２１１は、通信の状態に応じた通知を状態通知部１２１，２２１に指示する。これにより、状態通知部１２１，２２１は、プロキシ制御部１１１，２１１が通信を失敗と判定した場合、ユーザに通信の失敗を通知する。
【００９１】
コネクション監視部１１２，２１２は、バンドル制御部１２０，２２０のコネクションの状態を監視する。コネクション監視部１１２，２１２は、コネクションが切断された状態ではコネクションの接続を行い、接続に成功した場合、コネクション監視部１１２，２１２にバンドルバッファ１２２，２２２内の送信対象のバンドルの送信を指示する。
【００９２】
また、コネクション監視部１１２，２１２は、コネクションの状態に応じて、アドレス変換部１１３，２１３に対し変換情報の設定及び削除を行う。コネクション監視部１１２，２１２は、フィルタＴＢＬ１１８，２１８に基づき変換情報を設定する。
【００９３】
図８には、フィルタＴＢＬ１１８，２１８の一例が示されている。フィルタＴＢＬ１１８，２１８には、パケットのフィルタ条件、変換情報、及び設定状態が対応付けられて登録されている。フィルタ条件には、アドレス変換の対象のパケットの送信元及び宛先のＩＰアドレスやポート番号などが指定されている。変換情報には、フィルタ条件に合致するパケットの書き換え対象の部分及び書き換え後の値を示す。設定状態は、フィルタ条件及び変換情報の設定の有効または無効を示す。
【００９４】
再び図５を参照すると、コネクション監視部１１２，２１２は、コネクションの状態に応じて、アドレス変換部１１３，２１３の変換情報の設定または削除を行う。このため、アプリケーション１０１，２０１の通信に自動的にバンドルプロトコルが適用される。
【００９５】
このように、コネクション監視部１１２，２１２は、通信先とのコネクションの状態を検出し、コネクションの状態に応じて、アプリケーション１０１，２０１の通信に対するバンドルプロトコルの適用の可否を決定する。このため、バンドルプロトコルは、コネクションの状態に応じてアプリケーション１０１，２０１の通信に使用される。
【００９６】
アプリケーション１０１，２０１は、通信が断続的となる場合、上記の構成によりＴＣＰ／ＩＰをプロトコル変換することにより通信を行う。
【００９７】
図１０にはプロトコル変換の一例が示されている。図１０には、図５に示された構成のうち、端末１のアプリケーション１０１、プロキシ制御部１１１、及びバンドル制御部１２０と、サーバ２のアプリケーション２０１、プロキシ制御部２１１、及びバンドル制御部２２０が示されている。
【００９８】
アプリケーション１０１及びアプリケーション２０１の間では、ＩＰアドレス及びポート番号によるＴＣＰ／ＩＰの通信が行われる。端末１のアプリケーション１０１にはソケットＳＣ１がオープンされ、サーバ２のアプリケーション２０１にはソケットＳＣ６がオープンされる。このように、アプリケーション１０１及びアプリケーション２０１は、互いに通信してセッションを確立する。
【００９９】
プロキシ制御部１１１，２１１の間では、コネクション番号によるプロキシ間プロトコルによる通信が行われる。プロキシ制御部１１１には、送受信制御部１１４によりアプリケーション２０１のソケットＳＣ６に１対１で対応するソケットＳＣ２がオープンされる。これにより、プロキシ制御部１１１はアプリケーション１０１とのセッションを確立する。
【０１００】
また、プロキシ制御部２１１には、送受信制御部２１４によりアプリケーション１０１のソケットＳＣ１に１対１で対応するソケットＳＣ５がオープンされる。これにより、プロキシ制御部２１１はアプリケーション２０１とのセッションを確立する。
【０１０１】
アプリケーション１０１とプロキシ制御部１１１の間ではソケットＳＣ１，ＳＣ２による通信が行われ、アプリケーション２０１とプロキシ制御部２１１の間ではソケットＳＣ５，ＳＣ６による通信が行われる。このため、送受信制御部１１４，２１４は、アプリケーション１０１及びアプリケーション２０１の各ソケットＳＣ１，ＳＣ６に合わせてソケットＳＣ２，ＳＣ５のオープン及びクローズを行い、そのソケットＳＣ２，ＳＣ５によるデータ送受信を行う。なお、各ソケットＳＣ１，ＳＣ２，ＳＣ５，ＳＣ６はセッションの終了によりクローズされる。
【０１０２】
バンドル制御部１２０，２２０の間では、ＥＩＤによるバンドルプロトコルの通信が行われる。バンドル制御部１２０，２２０には、経路制御部１２４，２２４によりソケットＳＣ３，ＳＣ４がそれぞれオープンされる。経路制御部１２４は、端末１に新たなＩＰアドレスが割り当てられた場合、バンドル制御部１２０にソケットＳＣ３をオープンする。これにより、経路制御部１２４は、ＩＰアドレスのアドレス通知をサーバ２の経路制御部２２４に送信する。
【０１０３】
また、経路制御部２２４は、アドレス通知を受信した場合、バンドル制御部２２０にソケットＳＣ４をオープンする。これにより、経路制御部２２４は、ＩＰアドレスのアドレス通知を端末１の経路制御部１２４に送信する。
【０１０４】
端末１のアプリケーション１０１からサーバ２のアプリケーション２０１への通信が行われる場合、符号Ｄ１で示されるように、端末１において、プロキシ制御部１１１は、初期設定ファイル１１７に基づきパケットのポート番号を宛先ＥＩＤに変換する。また、バンドル制御部１２０は、ＤＴＮ経路ＴＢＬ１２３に基づき宛先ＥＩＤを宛先ＩＰアドレス及びポート番号に変換する。
【０１０５】
また、サーバ２において、バンドル制御部２２０は、宛先ＥＩＤを出力ポインタに変換し、プロキシ制御部２１１は、出力ポインタを宛先ＩＰアドレス及びポート番号に変換する。このようにして、端末１のアプリケーション１０１からサーバ２のアプリケーション２０１への通信は行われる。
【０１０６】
一方、サーバ２のアプリケーション２０１から端末１のアプリケーション１０１への通信が行われる場合、符号Ｄ２で示されるように、サーバ２において、プロキシ制御部２１１は、初期設定ファイル２１７に基づきパケットのポート番号を宛先ＥＩＤに変換する。また、バンドル制御部２２０は、ＤＴＮ経路ＴＢＬ２２３に基づき宛先ＥＩＤを宛先ＩＰアドレス及びポート番号に変換する。
【０１０７】
また、端末１において、バンドル制御部１２０は、宛先ＥＩＤを出力ポインタに変換し、プロキシ制御部１１１は、出力ポインタを宛先ＩＰアドレス及びポート番号に変換する。このようにして、サーバ２のアプリケーション２０１から端末１のアプリケーション１０１への通信は行われる。以下にアプリケーション１０１，２０１の間の通信において実行される処理について述べる。
【０１０８】
図１１は、アプリケーション１０１，２０１のデータ送信処理の一例を示すフローチャートである。プロキシ制御部１１１，２１１は、初期設定ファイル１１７，２１７を読み出す（ステップＳｔ１）。
【０１０９】
次に、プロキシ制御部１１１，２１１は、アプリケーション１０１，２０１から通信先のアプリケーション２０１，１０１宛のパケットを受信するためのソケットを送受信制御部１１４，２１４にオープンする（ステップＳｔ２）。ソケットには、初期設定ファイル１１７，２１７のプロキシのポート番号、またはループバックＩＰアドレス「127.0.0.1」が設定される。
【０１１０】
このため、端末１のアプリケーション１０１は、サーバ２のアプリケーション２０１のソケットに代えて、送受信制御部１１４が生成したソケットにパケットを送信する。また、サーバ２のアプリケーション２０１は、端末１のアプリケーション１０１のソケットに代えて、送受信制御部２１４が生成したソケットにパケットを送信する。このとき、パケットの宛先ＩＰアドレス及びポート番号は、所定の設定またはアドレス変換部１１３，２１３により変換される。
【０１１１】
次に、送受信制御部１１４，２１４は、ソケットでのパケットの受信の有無を判定する（ステップＳｔ３）。送受信制御部１１４．２１４は、パケットが受信されていない場合（ステップＳｔ３のＮｏ）、再度、ステップＳｔ３の判定処理を実行する。
【０１１２】
プロキシ制御部１１１，２１１は、パケットが受信された場合（ステップＳｔ３のＹｅｓ）、パケットの送信元ポート番号が新規であるか否かを判定する（ステップＳｔ４）。つまり、プロキシ制御部１１１，２１１は、アプリケーション１０１，２０１のポート番号が変更され、新たなチャネルが確立されたか否かを判定する。なお、送受信制御部１１４，２１４は、ソケットでパケットが受信されると、アプリケーション１０１，２０１からの通信の完了を検出し、受信したパケットのデータを、メモリなどを介してプロキシ制御部１１１，２１１に出力する。このとき、送受信制御部１１４，２１４は、アプリケーション１０１，２０１にセッションの確立を通知する。
【０１１３】
プロキシ制御部１１１，２１１は、送信元ポート番号が新規である場合（ステップＳｔ４のＹｅｓ）、コネクションリスト１１６，２１６に新たなコネクション番号と、そのコネクション番号に対応するソケットチャネルＩＤ及び宛先ＥＩＤを登録する（ステップＳｔ９）。また、プロキシ制御部１１１，２１１は、送信元ポート番号が新規ではない場合（ステップＳｔ４のＮｏ）、ステップＳｔ９の処理を実行しない。
【０１１４】
次に、プロキシ制御部１１１，２１１は、符号Ｇ１で示されるようなプロキシメッセージを生成する（ステップＳｔ５）。プロキシメッセージには、コネクション番号及びペイロードが含まれる。プロキシ制御部１１１，２１１は、ペイロードにパケットのデータを収容し、コネクションリスト１１６，２１６から検索したコネクション番号を付与することにより、プロキシメッセージを生成する。プロキシメッセージは、バンドルＡＰＩによりバンドル制御部１２０，２２０に出力される。
【０１１５】
次に、応答制御部１１５，２１５は、送信対象のパケットに対する応答の要否を判定する（ステップＳｔ６）。応答制御部１１５，２１５は、ＴＣＰのＡＣＫではなく、アプリケーションレベルでの通信の継続に必要な応答の有無を判定する。
【０１１６】
応答制御部１１５，２１５は、応答が必要である場合（ステップＳｔ６のＹｅｓ）、所定のアルゴリズムに基づき、通信先のアプリケーション２０１，１０１の代わりに応答データを生成してアプリケーション１０１，２０１に送信する（ステップＳｔ７）。つまり、応答制御部１１５，２１５は、アプリケーション１０１及びアプリケーション２０１に通信の完了を通知する。このため、上述したように、アプリケーション１０１，２０１は、バンドルプロトコルの通信が失敗しても、通信が成功したと認識する。また、応答制御部１１５，２１５は、応答が不要である場合（ステップＳｔ６のＮｏ）、応答データを生成しない。
【０１１７】
次に、プロキシ制御部１１１，２１１は、バンドルＡＰＩによりバンドル制御部１２０，２２０にバンドルの送信を要求する（ステップＳｔ８）。バンドル制御部１２０，２２０は、プロキシメッセージからバンドルを生成して送信する。これにより、バンドル制御部１２０，２２０は、アプリケーション１０１，２０１から通信先のアプリケーション２０１，１０１への通信を途絶耐性ネットワークのプロトコルに基づいて行う。このようにして、アプリケーション１０１，２０１のデータ送信処理は実行される。
【０１１８】
図１２は、バンドルの送信処理の一例を示すフローチャートである。バンドル制御部１２０，２２０は、プロキシ制御部１１１，２１１からバンドルの送信を要求されると、ＤＴＮ経路ＴＢＬ１２３，２２３を読み出す（ステップＳｔ１１）。次に、バンドル制御部１２０，２２０は、ＤＴＮ経路ＴＢＬ１２３，２２３に基づき、宛先ＥＩＤに応じた宛先ＩＰアドレス及びポート番号のバンドルを生成する（ステップＳｔ１２）。
【０１１９】
次に、バンドル制御部１２０，２２０は、宛先ＥＩＤに応じた通信先とのコネクションが確立状態であるか否かを判定する（ステップＳｔ１４）。バンドル制御部１２０，２２０は、コネクションが確立状態でない場合（ステップＳｔ１４のＮｏ）、バンドルをバンドルバッファ１２２，２２２に格納し（ステップＳｔ１３）、再びステップＳｔ１４の処理を実行する。
【０１２０】
バンドル制御部１２０，２２０は、コネクションが確立状態である場合（ステップＳｔ１４のＹｅｓ）、ＤＴＮ経路ＴＢＬ１２３，２２３の次ホップ種別に基づきＩＰアドレスが可変であるか否かを判定する（ステップＳｔ１５）。バンドル制御部１２０，２２０は、ＩＰアドレスが固定である場合（ステップＳｔ１５のＮｏ）、バンドルを送信する（ステップＳｔ１７）。
【０１２１】
また、バンドル制御部１２０，２２０は、ＩＰアドレスが可変である場合（ステップＳｔ１５のＹｅｓ）、ＤＴＮ経路ＴＢＬ１２３，２２３の次ホップアドレスに基づきＩＰアドレスが設定済みであるか否かを判定する（ステップＳｔ１６）。バンドル制御部１２０，２２０は、ＩＰアドレスが未設定である場合（ステップＳｔ１６のＮｏ）、バンドルをバンドルバッファ１２２，２２２に格納し（ステップＳｔ１３）、再びステップＳｔ１４の処理を実行する。なお、ＩＰアドレスが未設定である場合、例えば、バンドルは仮のＩＰアドレスで生成され、ＩＰアドレスの設定後にＩＰアドレスの修正が行われる。
【０１２２】
また、バンドル制御部１２０，２２０は、ＩＰアドレスが設定済みである場合（ステップＳｔ１６のＹｅｓ）、バンドルを送信する（ステップＳｔ１７）。このようにして、バンドルの送信処理は実行される。
【０１２３】
図１３は、バンドルの受信処理の一例を示すフローチャートである。プロキシ制御部１１１，２１１は、初期設定ファイル１１７，２１７を読み出す（ステップＳｔ２１）。次に、プロキシ制御部１１１，２１１は、バンドル制御部１２０，２２０に対して通信相手のアプリケーション２０１，１０１からバンドルを受信できるように、初期設定ファイル１１７，２１７に従ってバンドルＡＰＩによりノードＥＩＤ及び出力ポインタを登録する（ステップＳｔ２２）。これにより、バンドル制御部１２０，２２０は、バンドルを受信したとき、出力ポインタ「data/receive」の指定ディレクトリにバンドルを出力する。
【０１２４】
次に、バンドル制御部１２０，２２０は、バンドルの受信の有無を判定する（ステップＳｔ２３）。バンドル制御部１２０，２２０は、バンドルを受信していない場合（ステップＳｔ２３のＮｏ）、再びステップＳｔ２３の処理を実行する。また、バンドル制御部１２０，２２０は、バンドルを受信した場合（ステップＳｔ２３のＹｅｓ）、ステップＳｔ２２で登録済みのＥＩＤとバンドルの宛先ＥＩＤが一致するか否かを判定する（ステップＳｔ２４）。
【０１２５】
バンドル制御部１２０，２２０は、登録済みのＥＩＤとバンドルの宛先ＥＩＤが不一致である場合（ステップＳｔ２４のＮｏ）、自装置宛てのバンドルではないため、バンドルを廃棄して処理を終了する。バンドル制御部１２０，２２０は、登録済みのＥＩＤとバンドルの宛先ＥＩＤが一致する場合（ステップＳｔ２４のＹｅｓ）、バンドルのペイロードからパケットのデータを取得してプロキシメッセージを生成して、出力ポインタの指定ディレクトリに出力する（ステップＳｔ２５）。
【０１２６】
次に、プロキシ制御部１１１，２１１は、出力ポインタの指定ディレクトリを参照して、プロキシメッセージを取得する（ステップＳｔ２６）。次に、プロキシ制御部１１１，２１１は、プロキシメッセージのコネクション番号がコネクションリスト１１６，２１６に登録済みであるか否かを判定する（ステップＳｔ２７）。
【０１２７】
プロキシ制御部１１１，２１１は、コネクション番号が未登録である場合（ステップＳｔ２７のＮｏ）、送受信制御部１１４，２１４に対し、初期設定ファイル１１７，２１７で指定されたプロキシのポート番号のソケットのオープンを指示する（ステップＳｔ２８）。また、プロキシ制御部１１１，２１１は、コネクション番号が登録済みである場合（ステップＳｔ２７のＹｅｓ）、プロキシメッセージのペイロードにパケットのデータが収容されているか否かを判定する（ステップＳｔ３０）。
【０１２８】
プロキシ制御部１１１，２１１は、パケットのデータが収容されている場合（ステップＳｔ３０のＹｅｓ）、該当するソケットにデータを送信する（ステップＳｔ２９）。また、プロキシ制御部１１１，２１１は、パケットのデータが収容されていない場合（ステップＳｔ３０のＮｏ）、送受信制御部１１４，２１４に対し、該当するソケットのクローズを指示する（ステップＳｔ３１）。このようにして、バンドルの受信処理は実行される。
【０１２９】
このように、端末１のアプリケーション１０１及びサーバ２のアプリケーション２０１の間では、端末１とサーバ２の間のコネクションの有無とは無関係に、アプリケーションの動作に基づきプロキシプロトコル機能部１１０，２１０によりソケットのオープン及びクローズが再現される。このため、アプリケーション１０１及びアプリケーション２０１の間では、コネクションが切断されている場合でも通信の継続が可能となる。
【０１３０】
図１４は、端末１の経路制御部１２４の処理の一例を示すフローチャートである。経路制御部１２４は、ＯＳ機能部１３０に対してＩＰアドレスの割り当ての有無を監視する（ステップＳｔ５１）。ＯＳ機能部１３０は、端末１のリンク先の無線アクセスポイントＡＰとのＤＨＣＰによる通信によりＩＰアドレスが割り当てられる。このため、経路制御部１２４は、ＯＳ機能部１３０を監視することにより、端末１が無線ＬＡＮに接続されたことを検出することができる。
【０１３１】
次に、経路制御部１２４は、監視結果からＩＰアドレスの割り当ての有無を判定する（ステップＳｔ５２）。経路制御部１２４は、ＩＰアドレスが未割り当てである場合（ステップＳｔ５２のＮｏ）、再びステップＳｔ５１の処理を実行する。
【０１３２】
また、経路制御部１２４は、ＩＰアドレスが割り当てられた場合（ステップＳｔ５２のＹｅｓ）、ＯＳ機能部１３０からそのＩＰアドレスを取得する（ステップＳｔ５３）。次に、経路制御部１２４は、取得したＩＰアドレスに対応するゲートウェイアドレスをＩＰ経路ＴＢＬ１３１に設定する（ステップＳｔ５４）。ゲートウェイアドレスは、ＤＨＣＰにより決定される。バンドルは、ＩＰ経路ＴＢＬ１３１に従いルーティングされるため、ゲートウェイアドレスがＩＰ経路ＴＢＬ１３１に設定されると、端末１からサーバ２までの通信経路が生成される。
【０１３３】
次に、経路制御部１２４は、サーバ２に対する通信のソケットをバンドル制御部１２０にオープンする（ステップＳｔ５５）。次に、経路制御部１２４は、ＩＰアドレス及びノードＥＩＤを含むアドレス通知を生成する（ステップＳｔ５６）。なお、ノードＥＩＤは、初期設定ファイル１１７から取得される。
【０１３４】
次に、経路制御部１２４は、バンドル制御部１２０によりアドレス通知をサーバ２に送信する（ステップＳｔ５７）。このため、サーバ２は、端末１の接続先の無線ＬＡＮが切り替わった場合でも、端末１の新しいＩＰアドレスを知ることができる。
【０１３５】
次に、経路制御部１２４は、ＯＳ機能部１３０を監視することにより無線アクセスポイントＡＰに対するリンク断の検出の有無を判定する（ステップＳｔ５８）。経路制御部１２４は、リンク断がない場合（ステップＳｔ５８のＮｏ）、再びステップＳｔ５８の処理を実行する。また、経路制御部１２４は、リンク断が発生した場合（ステップＳｔ５８のＹｅｓ）、バンドル制御部１２０のソケットをクローズする（ステップＳｔ５９）。
【０１３６】
次に、経路制御部１２４は、ＩＰ経路ＴＢＬ１３１からゲートウェイアドレスを削除し（ステップＳｔ６０）、再びステップＳｔ５１の処理を実行する。このようにして、経路制御部１２４の処理は実行される。
【０１３７】
図１５は、サーバ２の経路制御部２２４の処理の一例を示すフローチャートである。経路制御部２２４は、端末１の経路制御部１２４からのアドレス通知の受信の有無を判定する（ステップＳｔ７１）。経路制御部２２４は、アドレス通知を受信していない場合（ステップＳｔ７１のＮｏ）、再びステップＳｔ７１の処理を実行する。
【０１３８】
また、経路制御部２２４は、アドレス通知を受信した場合（ステップＳｔ７１のＹｅｓ）、アドレス通知からその送信元ＩＰアドレスである端末１のＩＰアドレスを取得する（ステップＳｔ７２）。次に、経路制御部２２４は、取得したＩＰアドレスをＤＴＮ経路ＴＢＬ２２３に設定する（ステップＳｔ７３）。このとき、ＩＰアドレスは、アドレス通知に含まれる端末１のノードＥＩＤに対応する次ホップアドレスに登録される。
【０１３９】
次に、経路制御部２２４は、端末１に対する通信のソケットをバンドル制御部２２０にオープンする（ステップＳｔ７４）。次に、経路制御部２２４は、ＩＰアドレス及びノードＥＩＤを含むアドレス通知を生成する（ステップＳｔ７５）。なお、ノードＥＩＤは、初期設定ファイル２１７から取得される。
【０１４０】
次に、経路制御部２２４は、バンドル制御部２２０によりアドレス通知を端末１に送信する（ステップＳｔ７６）。このため、端末１は、サーバ２に送信したアドレス通知の応答を確認することができる。
【０１４１】
次に、経路制御部２２４は、ＯＳ機能部２３０を監視することにより端末１に対する通信断の検出の有無を判定する（ステップＳｔ７７）。経路制御部２２４は、通信断がない場合（ステップＳｔ７７のＮｏ）、再びステップＳｔ７７の処理を実行する。また、経路制御部２２４は、通信断が発生した場合（ステップＳｔ７７のＹｅｓ）、バンドル制御部２２０のソケットをクローズする（ステップＳｔ７８）。
【０１４２】
次に、経路制御部２２４は、ＤＴＮ経路ＴＢＬ２２３から端末１のアドレスを削除し（ステップＳｔ７９）、再びステップＳｔ７１の処理を実行する。このようにして、経路制御部２２４の処理は実行される。
【０１４３】
図１６は、バンドルプロトコルの適用の切り替え処理の一例を示すフローチャートである。コネクション監視部１１２，２１２は、通信先とのコネクションの接続の有無を検出する（ステップＳｔ４１）。
【０１４４】
バンドル制御部１２０，２２０は、ＤＴＮ経路ＴＢＬ１２３，２２３に設定されたＩＰアドレス及びポート番号に基づき、該当する通信先との接続状態や、キープアライブ（keep alive）機能により通信の状態を検出する。コネクション監視部１１２，２１２は、バンドル制御部１２０，２２０の検出結果を取得し、またはバンドルＡＰＩによる制御などによりコネクションの状態を検出する。
【０１４５】
コネクション監視部１１２，２１２は、コネクションが接続されている場合（ステップＳｔ４１のＹｅｓ）、バンドルバッファ１２２，２２２に送信待ちのバンドルが格納されているか否かを判定する（ステップＳｔ４２）。コネクション監視部１１２，２１２は、格納済みのバンドルがない場合（ステップＳｔ４２のＮｏ）、再びステップＳｔ４１の処理を実行する。
【０１４６】
また、コネクション監視部１１２，２１２は、格納済みのバンドルがある場合（ステップＳｔ４２のＹｅｓ）、フィルタＴＢＬ１１８，２１８の設定状態を参照することによりアドレス変換部１１３，２１３に対する変換情報の設定の有無を判定する（ステップＳｔ４３）。コネクション監視部１１２，２１２は、変換情報の設定がない場合（ステップＳｔ４３のＮｏ）、処理を終了する。また、コネクション監視部１１２，２１２は、変換情報の設定が有る場合（ステップＳｔ４３のＹｅｓ）、変換情報を削除する（ステップＳｔ４４）。
【０１４７】
これにより、ＴＣＰ処理部１０２，２０２から送受信制御部１１４，２１４のソケットに対するパケットの転送が停止する。したがって、アプリケーション１０１，２０１の間の通信に対してバンドルプロトコルの適用が停止されるため、プロキシプロトコル機能部１１０，２１０を介さない直接的なＴＣＰ／ＩＰの通信が行われる。
【０１４８】
一方、コネクション監視部１１２，２１２は、コネクションが切断されている場合（ステップＳｔ４１のＮｏ）、フィルタＴＢＬ１１８，２１８の設定状態を参照することによりアドレス変換部１１３，２１３に対する変換情報の設定の有無を判定する（ステップＳｔ４５）。コネクション監視部１１２，２１２は、変換情報の設定が有る場合（ステップＳｔ４５のＹｅｓ）、処理を終了する。また、コネクション監視部１１２，２１２は、変換情報の設定がない場合（ステップＳｔ４５のＮｏ）、変換情報を設定する（ステップＳｔ４６）。
【０１４９】
これにより、ＴＣＰ処理部１０２，２０２から送受信制御部１１４，２１４のソケットに対するパケットの転送が開始される。したがって、アプリケーション１０１，２０１の間の通信に対してバンドルプロトコルの適用が開始されるため、プロキシプロトコル機能部１１０，２１０を介した通信が行われる。
【０１５０】
このように、コネクション監視部１１２，２１２は、通信先とのコネクションの状態を検出し、そのコネクションの状態に応じて、アプリケーション１０１，２０１の間の通信に対するバンドルプロトコルの適用の可否を決定する。このため、バンドルプロトコルの適用が自動的に行われる。
【０１５１】
次に、図１の通信システムにおけるＥＩＤの割り当てについて述べる。
【０１５２】
図１７は、ＥＩＤの割り当ての一例を示す図である。図１７において、白丸は、データを送受信するためのソケットを示す。ＥＩＤ及びポート番号は初期設定ファイル１１７，２１７により割り当てられる。
【０１５３】
各端末１ａ〜１ｃにおいて、プロキシプロトコル機能部１１０は自動運転ＡＰＬ１０１ａ及びセンサＡＰＬ１０１ｂに対してそれぞれ形成されている。端末１ａには、自動運転ＡＰＬ１０１ａに対応するプロキシプロトコル機能部１１０ａであるプロキシ＃１１と、センサＡＰＬ１０１ｂに対応するプロキシプロトコル機能部１１０ｂであるプロキシ＃１２が設けられている。
【０１５４】
プロキシ＃１１にはアプリケーションＥＩＤ「dtn://mobile1/navi」が割り当てられ、プロキシ＃１２にはアプリケーションＥＩＤ「dtn://mobile1/sensor」が割り当てられている。プロキシ＃１１は、自動運転ＡＰＬ１０１ａのポート番号「９０００」のソケットへデータを送信し、プロキシ＃１２は、ポート番号「８００１」のソケットでセンサＡＰＬ１０１ｂからデータを受信する。
【０１５５】
また、バンドル制御部１２０にはノードＥＩＤ「dtn://mobile1」が割り当てられている。バンドル制御部１２０は、ポート番号「４５５６」のソケットでサーバ２のバンドル制御部２２０からデータを受信する。
【０１５６】
端末１ｂには、自動運転ＡＰＬ１０１ａに対応するプロキシプロトコル機能部１１０ａであるプロキシ＃２１と、センサＡＰＬ１０１ｂに対応するプロキシプロトコル機能部１１０ｂであるプロキシ＃２２が設けられている。
【０１５７】
プロキシ＃２１にはアプリケーションＥＩＤ「dtn://mobile2/navi」が割り当てられ、プロキシ＃２２にはアプリケーションＥＩＤ「dtn://mobile2/sensor」が割り当てられている。プロキシ＃２１は、自動運転ＡＰＬ１０１ａのポート番号「９０００」のソケットへデータを送信し、プロキシ＃２２は、ポート番号「８００１」のソケットでセンサＡＰＬ１０１ｂからデータを受信する。
【０１５８】
また、バンドル制御部１２０にはノードＥＩＤ「dtn://mobile2」が割り当てられている。バンドル制御部１２０は、ポート番号「４５５６」のソケットでサーバ２のバンドル制御部２２０からデータを受信する。
【０１５９】
端末１ｃには、自動運転ＡＰＬ１０１ａに対応するプロキシプロトコル機能部１１０ａであるプロキシ＃３１と、センサＡＰＬ１０１ｂに対応するプロキシプロトコル機能部１１０ｂであるプロキシ＃３２が設けられている。
【０１６０】
プロキシ＃３１にはアプリケーションＥＩＤ「dtn://mobile3/navi」が割り当てられ、プロキシ＃３２にはアプリケーションＥＩＤ「dtn://mobile3/sensor」が割り当てられている。プロキシ＃３１は、自動運転ＡＰＬ１０１ａのポート番号「９０００」のソケットへデータを送信し、プロキシ＃３２は、ポート番号「８００１」のソケットでセンサＡＰＬ１０１ｂからデータを受信する。
【０１６１】
また、バンドル制御部１２０にはノードＥＩＤ「dtn://mobile3」が割り当てられている。バンドル制御部１２０は、ポート番号「４５５６」のソケットでサーバ２のバンドル制御部２２０からデータを受信する。
【０１６２】
各端末１ａ〜１ｃのバンドル制御部１２０は、インターフェースＩＦを介しデータを送受信する。インターフェースＩＦは、例えば無線ＬＡＮモジュール１４であり、そのＩＰアドレスは可変である。
【０１６３】
一方、サーバ２において、プロキシプロトコル機能部２１０は、制御ＡＰＬ２０１ａの通信先と計測ＡＰＬ２０１ｂについてそれぞれ形成されている。プロキシ＃０１は、端末１ａの自動運転ＡＰＬ１０１ａに対応するプロキシプロトコル機能部２１０ａであり、アプリケーションＥＩＤ「dtn://server/navi/mobile1」が割り当てられている。
【０１６４】
プロキシ＃０２は、端末１ｂの自動運転ＡＰＬ１０１ａに対応するプロキシプロトコル機能部２１０ｂであり、アプリケーションＥＩＤ「dtn://server/navi/mobile2」が割り当てられている。プロキシ＃０３は、端末１ｃの自動運転ＡＰＬ１０１ａに対応するプロキシプロトコル機能部２１０ｃであり、アプリケーションＥＩＤ「dtn://server/navi/mobile3」が割り当てられている。
【０１６５】
プロキシ＃０１は、ポート番号「９００１」のソケットで制御ＡＰＬ２０１ａからデータを受信し、プロキシ＃０２は、ポート番号「９００２」のソケットで制御ＡＰＬ２０１ａからデータを受信する。また、プロキシ＃０３は、ポート番号「９００３」のソケットで制御ＡＰＬ２０１ａからデータを受信する。
【０１６６】
制御ＡＰＬ２０１ａから自動運転ＡＰＬ１０１ａへの通信では端末１ａ〜１ｃがサーバ機能を持つため、各端末１ａ〜１ｃには自動運転ＡＰＬ１０１ａに対応するプロキシ＃１１，＃２１，＃３１が必要となり、サーバ２にはプロキシ＃１１，＃２１，＃３１に対応するプロキシ＃０１〜＃０３が必要となる。バンドルプロトコルの通信では、アプリケーションＥＩＤにより通信先が指定されるため、端末１ａ〜１ｃのＩＰアドレスが未決定である場合でも通信先の指定は可能である。
【０１６７】
しかし、制御ＡＰＬ２０１ａは、通信先をＩＰアドレス及びポート番号で指定するため、ＩＰアドレスが未決定の端末１ａ〜１ｃを通信先として指定できない。このため、プロキシ＃０１〜＃０３に個別のポート番号「９００１」〜「９００３」を割り当てることにより、制御ＡＰＬ２０１ａは仮想的に端末１ａ〜１ｃを通信先として指定することができる。
【０１６８】
また、プロキシ＃０４は、計測ＡＰＬ２０１ｂに対応するプロキシプロトコル機能部２１０ｄであり、アプリケーションＥＩＤ「dtn://server/sensor」が割り当てられている。プロキシ＃０４は、計測ＡＰＬ２０１ｂのポート番号「８０００」のソケットへデータを送信する。
【０１６９】
また、バンドル制御部２２０にはノードＥＩＤ「dtn://server」が割り当てられている。バンドル制御部１２０は、ポート番号「４５５６」のソケットで端末１ａ〜１ｃのバンドル制御部１２０からデータを受信する。
【０１７０】
バンドル制御部１２０は、インターフェースＩＦを介しデータを送受信する。インターフェースＩＦは、例えば通信ポート２４であり、そのＩＰアドレスは「10.10.10.100」である。上述したＥＩＤ及びポート番号の割り当てを前提として、以下に制御ＡＰＬ２０１ａから端末１ｃの自動運転ＡＰＬ１０１ａへの通信を例に挙げて述べる。
【０１７１】
図１８は、制御ＡＰＬ２０１ａから自動運転ＡＰＬ１０１ａへの通信の一例を示すシーケンス図である。図１８には、端末１ｃの自動運転ＡＰＬ１０１ａ、プロキシ＃３１を含むＤＴＮプロキシ部１９、及びＯＳ機能部１３０と、サーバ２の制御ＡＰＬ２０１ａ、プロキシ＃０３を含むＤＴＮプロキシ部２９、及びＯＳ機能部２３０との間の通信の動作が示されている。本例では、端末１ｃが無線アクセスポイントＡＰ＃１とリンクしたときの通信を示す。
【０１７２】
また、図１９〜図２３には、本例のシーケンスに沿った端末１ｃ及びサーバ２の内部の動作が示されている。なお、図１９〜図２３においてカッコ内の番号はポート番号を示す。
【０１７３】
図１９は、シーケンス開始前の端末１ｃ及びサーバ２の状態を示す。サーバ２の経路制御部２２４は、バンドル制御部１２０に、端末１ｃのＤＴＮプロキシ部１９からデータを受信するための受信スレッド２２０ｂを生成する。受信スレッド２２０ｂは、ポート番号「４５５６」のソケットに該当する。
【０１７４】
また、端末１ｃの経路制御部１２４は、バンドル制御部２２０に、サーバ２のＤＴＮプロキシ部２９からデータを受信するための受信スレッド１２０ｂを生成する。受信スレッド１２０ｂは、ポート番号「４５５６」のソケットに該当する。
【０１７５】
サーバ２のＤＴＮ経路ＴＢＬ２２３には、宛先ＥＩＤとして端末１ｃのノードＥＩＤ「dtn://mobile3」が設定され、次ホップ種別として「可変」が設定されている。また、端末１ｃのＩＰアドレスは未決定であるため、次ホップアドレスは未設定状態である。なお、ＤＴＮ経路ＴＢＬ２２３のポート番号は省略されている。また、ＩＰ経路ＴＢＬ２３１には、送信先ゲートウェイ（ＧＷ）として、ゲートウェイアドレス「10.10.10.256」が設定されている。
【０１７６】
端末１ｃのＤＴＮ経路ＴＢＬ１２３には、宛先ＥＩＤとしてサーバ２のノードＥＩＤ「dtn://server」が設定され、次ホップ種別として「固定」が設定されている。また、次ホップアドレスとしてはサーバ２のＩＰアドレス「10.10.10.100」が設定されている。
【０１７７】
また、サーバ２は、端末１ｃの自動運転ＡＰＬ１０１ａを通信先とする制御ＡＰＬ２０１ａに対応してプロキシ＃０３を起動する。プロキシ＃０３は、ポート番号「９００３」のソケットをオープンして、制御ＡＰＬ２０１ａからの通信を待ち受ける。なお、制御ＡＰＬ２０１ａは、ポート番号「９０００」のソケットをオープンしてデータを送信する。また、端末１ｃは、自動運転ＡＰＬ１０１ａに対応してプロキシ＃３１を起動する。
【０１７８】
図１８を参照すると、端末１ｃのＤＴＮプロキシ部１９は、ＩＰアドレスの割り当てを検出するためにＯＳ機能部１３０を監視する（符号Ｓ１）。また、サーバ２の制御ＡＰＬ２０１ａは、自動運転ＡＰＬ１０１ａとのセッションを開始すると、ＤＴＮプロキシ部２９に対しソケットをオープンする（符号Ｒ１）。このソケットは図１０のソケットＳＣ６に該当し、その通信先はプロキシ＃０３のＩＰアドレス「10.10.10.100」及びポート番号「９００３」である。
【０１７９】
制御ＡＰＬ２０１ａは、ソケットからＤＴＮプロキシ部２９にデータを送信する（符号Ｒ２）。このとき、宛先となる端末１ｃのＩＰアドレスがＤＴＮ経路ＴＢＬ２２３に未設定であるため、送信されたデータはバンドルバッファ１２２に格納される（符号Ｒ３）。次に、制御ＡＰＬ２０１ａはソケットをクローズする（符号Ｒ４）。
【０１８０】
また、ＤＴＮプロキシ部２９は、セッションの確立を制御ＡＰＬ２０１ａに通知する（符号Ｒ５）。すなわち、ＤＴＮプロキシ部２９は、制御ＡＰＬ２０１ａから自動運転ＡＰＬ１０１ａに対する通信を依頼されたとき、セッションの確立を制御ＡＰＬ２０１ａに通知する。
【０１８１】
図２０には、図１８の符号Ｓ１，Ｒ１，Ｒ２の動作が示されている。サーバ２において、制御ＡＰＬ２０１ａはプロキシ＃０３にデータ（つまり速度の指示）を送信し、プロキシ＃０３は、データをプロキシメッセージに変換してバンドル制御部２２０に送信する。バンドル制御部２２０は、宛先のアプリケーションＥＩＤ「dtn://mobile3/navi」からノードＥＩＤ「dtn://mobile3」を得て、ノードＥＩＤ「dtn://mobile3」に基づきＤＴＮ経路ＴＢＬ１２３を検索する。
【０１８２】
しかし、ＤＴＮ経路ＴＢＬ１２３の次ホップアドレスには、通信先の端末１ｃに対応するＩＰアドレスが設定されていない。このため、バンドル制御部２２０は、プロキシメッセージからバンドルを生成するが、その宛先が不明であるため、バンドルをバンドルバッファ２２２に格納する（符号Ｙ１）。また、端末１ｃにおいて、経路制御部１２４はＯＳ機能部１３０を監視する（符号Ｙ２）。
【０１８３】
図１８を参照すると、ＯＳ機能部１３０は、端末１ｃが無線ＬＡＮ＃１の圏内に入ると、無線アクセスポイントＡＰ＃１とリンクを確立する（符号Ｓ２）。ＯＳ機能部１３０は、無線アクセスポイントＡＰ＃１とＤＨＣＰによる通信を行い（符号Ｓ３）、端末１ｃにＩＰアドレス「10.10.10.105」が割り当てられる（符号Ｓ４）。ＤＴＮプロキシ部１９は、ＯＳ機能部１３０からＩＰアドレスを取得する（符号Ｓ５）。
【０１８４】
次に、ＤＴＮプロキシ部１９は、通信先のＤＴＮプロキシ部２９に対しソケットをオープンする（符号Ｓ６）。このソケットは図１０のソケットＳＣ３に該当し、その通信先はバンドル制御部２２０のＩＰアドレス「10.10.10.100」及びポート番号「４５５６」とする。次に、ＤＴＮプロキシ部１９は、ＩＰアドレス「10.10.10.105」及びノードＥＩＤ「dtn://mobile3」を含むアドレス通知を生成してサーバ２のＤＴＮプロキシ部２９に送信する（符号Ｓ７）。すなわち、ＤＴＮプロキシ部１９は、切り替え後の無線ＬＡＮ＃１における端末１ｃのＩＰアドレスをサーバ２のＤＴＮプロキシ部２９に通知する。なお、ＩＰアドレスは無線ＬＡＮ＃１における識別情報の一例である。
【０１８５】
図２４は、アドレス通知の一例を示す図である。アドレス通知は、ＩＰヘッダ、ＴＣＰヘッダ、バンドルデータ、及びペイロードを有する。ＩＰヘッダには、送信元ＩＰアドレス「10.10.10.105」と宛先ＩＰアドレス「10.10.10.100」が含まれる。ＴＣＰヘッダには、任意の送信元ポート番号と、宛先ポート番号「４５５６」とが含まれる。
【０１８６】
また、バンドルデータには、送信元ＥＩＤとして端末１ｃのノードＥＩＤ「dtn://mobile3」が含まれ、宛先ＥＩＤとしてサーバ２の経路制御部２２４のＥＩＤ「dtn://server/routeManager」が指定されている。経路制御部２２４のＥＩＤは、例えば初期設定ファイル２１７に設定されている。また、ペイロードには、メッセージ種別として、例えば「registration」または「remove」が含まれている。
【０１８７】
再び図１８を参照すると、ＤＴＮプロキシ部２９は、アドレス通知を受信すると、アドレス通知からＩＰアドレスを取得して、アドレス通知内のノードＥＩＤに対応するようにＤＴＮ経路ＴＢＬ２２３に設定する（符号Ｒ６）。より具体的には、経路制御部２２４は、アドレス通知の送信元ＩＰアドレスを、アドレス通知の宛先ＥＩＤに対応するようにＤＴＮ経路ＴＢＬ２２３に設定する。
【０１８８】
図２１には、図１８の符号Ｓ５〜Ｓ７，Ｒ６の動作が示されている。端末１ｃの経路制御部１２４は、ＩＰアドレスを取得すると、ＩＰアドレスに応じたゲートウェイアドレス「10.10.10.128」をサーバ２のＩＰアドレス「10.10.10.100」に対応するようにＩＰ経路ＴＢＬ１３１に設定する（符号Ｙ３）。
【０１８９】
次に、経路制御部１２４は、バンドル制御部１２０に対し、サーバ２を通信先とする送信スレッド１２０ａを生成し（符号Ｙ４）、サーバ２の受信スレッドにデータを送信するためのソケットをオープンする（符号Ｙ５）。これにより、自動運転ＡＰＬ１０１ａと制御ＡＰＬ２０１ａの間で確立されたセッションに対応するように、自動運転ＡＰＬ１０１ａから制御ＡＰＬ２０１ａまでの通信経路が生成される。
【０１９０】
次に、経路制御部１２４は、アドレス通知を生成して、送信スレッド１２０ａからサーバ２の経路制御部２２４に送信する（符号Ｙ６）。サーバ２において、アドレス通知は受信スレッド２２０ｂから経路制御部２２４に出力される。
【０１９１】
サーバ２の経路制御部２２４は、端末１ｃのＩＰアドレスをＤＴＮ経路ＴＢＬ２２３に設定する（符号Ｙ７）。経路制御部２２４は、バンドル制御部２２０に対し、端末１ｃを通信先とする送信スレッド２２０ａを生成する（符号Ｙ８）。
【０１９２】
図１８を参照すると、ＤＴＮプロキシ部２９は、通信先のＤＴＮプロキシ部１９に対しソケットをオープンする（符号Ｒ７）。このソケットは図１０のソケットＳＣ４に該当し、その通信先はバンドル制御部１２０のＩＰアドレス「10.10.10.105」及びポート番号「４５５６」である。
【０１９３】
これにより、制御ＡＰＬ２０１ａから自動運転ＡＰＬ１０１ａへの通信経路が生成される。すなわち、経路制御部２２４は、自動運転ＡＰＬ１０１ａと制御ＡＰＬ２０１ａの間で確立されたセッションに対応するように、端末１ｃのＤＴＮプロキシ部１９から通知されたＩＰアドレスに基づき通信経路を生成する。このため、制御ＡＰＬ２０１ａは、ＩＰアドレスにより端末１ｃを通信先として特定することができる。
【０１９４】
次に、ＤＴＮプロキシ部２９は、ＩＰアドレス「10.10.10.100」及びノードＥＩＤ「dtn://server」を含むアドレス通知を生成して端末１ｃのＤＴＮプロキシ部１９に送信する（符号Ｒ８）。
【０１９５】
次に、ＤＴＮプロキシ部２９は、バンドルバッファ２２２からバンドルのデータを読み出して端末１ｃのＤＴＮプロキシ部１９に送信する（符号Ｒ９）。端末１ｃのＤＴＮプロキシ部１９は、通信先の自動運転ＡＰＬ１０１ａに対しソケットをオープンする（符号Ｓ８）。このソケットは図１０のソケットＳＣ２に該当する。ＤＴＮプロキシ部１９は、ソケットからデータを自動運転ＡＰＬ１０１ａに送信し（符号Ｓ９）、ソケットをクローズする（符号Ｓ１０）。
【０１９６】
このように、端末１ｃのＤＴＮプロキシ部１９は、端末１ｃの接続先の無線ＬＡＮの切り替え後、サーバ２のＤＴＮプロキシ部２９からのアドレス通知に応じて自動運転ＡＰＬ１０１ａとのセッションを確立する。また、サーバ２のＤＴＮプロキシ部２９は、制御ＡＰＬ２０１ａから自動運転ＡＰＬ１０１ａに対する通信を依頼されたとき、セッションの確立を制御ＡＰＬ２０１ａに通知する。このため、端末１ｃのＤＴＮプロキシ部１９は、無線ＬＡＮの切り替えに応じて、制御ＡＰＬ２０１ａから自動運転ＡＰＬ１０１ａへの通信をサーバ２のＤＴＮプロキシ部２９に中継することができる。
【０１９７】
図２２には、図１８の符号Ｓ８〜Ｓ１０，Ｒ７〜Ｒ９の動作が示されている。サーバ２の経路制御部２２４は、端末１ｃの受信スレッド１２０ｂを通信先とするソケットをオープンする（符号Ｙ９）。経路制御部２２４は、アドレス通知を生成し、送信スレッド２２０ａから端末１ｃの経路制御部１２４に送信する（符号Ｙ１０）。次に、バンドル制御部２２０は、バンドルバッファ２２２からバンドルを読み出し、送信スレッド２２０ａから端末１ｃに送信する（符号Ｙ１１）。
【０１９８】
端末１ｃのバンドル制御部１２０は、バンドルをプロキシメッセージに変換してプロキシ＃３１に出力する。プロキシ＃３１は、自動運転ＡＰＬ１０１ａに対しソケットをオープンして、ソケットからプロキシメッセージのデータを自動運転ＡＰＬ１０１ａに送信する。
【０１９９】
図１８を参照すると、端末１ｃが無線ＬＡＮ＃１の圏外に移動したとき、端末１ｃと無線アクセスポイントＡＰ＃１のリンクが断状態となる。ＤＴＮプロキシ部１９は、ＯＳ機能部１３０によりリンク断を検出する（符号Ｓ１１）。次に、ＤＴＮプロキシ部１９は、他の無線アクセスポイントＡＰとのリンクに備えて、再びＯＳ機能部１３０を監視する（符号Ｓ１２）。その後、本例のシーケンスが繰り返される。
【０２００】
また、サーバ２のＤＴＮプロキシ部２９は、ＯＳ機能部２３０により端末１ｃとの通信の断状態を検出する（符号Ｒ１０）。次に、ＤＴＮプロキシ部２９は、ＤＴＮ経路ＴＢＬ２２３から端末１ｃのアドレス通知に基づく設定を削除する（符号Ｒ１１）。
【０２０１】
図２３には、図１８の符号Ｓ１１，Ｒ１１の動作が示されている。端末１ｃにおいて、経路制御部１２４は、ＩＰ経路ＴＢＬ１３１からゲートウェイアドレスの設定を削除する（符号Ｙ１２）。さらに、経路制御部１２４は、バンドル制御部１２０の送信スレッド１２０ａを削除する（符号Ｙ１３）。
【０２０２】
また、サーバ２において、経路制御部２２４は、ＤＴＮ経路ＴＢＬ２２３から、端末１ｃのＩＰアドレスを削除する（符号Ｙ１４）。さらに、経路制御部２２４は、バンドル制御部２２０の送信スレッド２２０ａを削除する（符号Ｙ１４）。これにより、端末１ｃ及びサーバ２は、図１９に示される初期状態に戻る。
【０２０３】
本例のシーケンスにおいて、サーバ２のＤＴＮプロキシ部２９は、制御ＡＰＬ２０１ａから自動運転ＡＰＬ１０１ａへの通信を中継し、端末１ｃのＤＴＮプロキシ部１９は、サーバ２のＤＴＮプロキシ部２９から中継された通信を自動運転ＡＰＬ１０１ａに転送する。各ＤＴＮプロキシ部１９，２９は、制御ＡＰＬ２０１ａと自動運転ＡＰＬ１０１ａの間の通信により確立されたセッションに対応する通信経路を生成する。
【０２０４】
より具体的には、ＤＴＮプロキシ部１９は、ＩＰアドレスの割り当てを検出したとき、ＩＰ経路ＴＢＬ１３１を設定してサーバ２のＤＴＮプロキシ部２９に対しソケットをオープンし、アドレス通知によりＩＰアドレスをＤＴＮプロキシ部２９に通知する。一方、ＤＴＮプロキシ部２９は、アドレス通知で通知されたＩＰアドレスをＤＴＮ経路ＴＢＬ２２３に設定し、端末１ｃのＤＴＮプロキシ部２９に対しソケットをオープンする。
【０２０５】
これにより、各ＤＴＮプロキシ部１９，２９は、端末１ｃが接続される無線ＬＡＮの切り替えに応じ、生成した通信経路を用いて制御ＡＰＬ２０１ａと自動運転ＡＰＬ１０１ａの間のセッションを維持する。より具体的には、各ＤＴＮプロキシ部１９，２９は、端末１ｃの接続先の無線ＬＡＮアクセスポイントＡＰが切り替わっても、切り替え後の無線ＬＡＮにおけるＩＰアドレス通知により新たに通信経路を生成するため、制御ＡＰＬ２０１ａと自動運転ＡＰＬ１０１ａの間のセッションを継続できる。したがって、制御ＡＰＬ２０１ａと自動運転ＡＰＬ１０１ａの間の通信を、端末１ｃのネットワーク接続環境の変化に対応して継続することが可能である。
【０２０６】
このため、例えば図３の通信システムの場合、サーバ２は、端末１ｃからアドレス通知を受信することでそのＩＰアドレスを知ることができるので、例えば、プッシュ型通信により端末１ｃに対し一方的に速度を指示することができる。
【０２０７】
次に、バンドルのデータの送信中に無線ＬＡＮが切り替わることにより通信が中断した場合のシーケンスを説明する。
【０２０８】
図２５及び図２６は、制御ＡＰＬ２０１ａから自動運転ＡＰＬ１０１ａへの通信の他例を示すシーケンス図である。本例において、端末１ｃは、無線アクセスポイントＡＰ＃１とリンクし、その後、他の無線アクセスポイントＡＰ＃２とリンクする。これにより、端末１ｃの接続先の無線ＬＡＮは、無線ＬＡＮ＃１から無線ＬＡＮ＃２に切り替わる。
【０２０９】
図２５には、端末１ｃが無線アクセスポイントＡＰ＃１とリンクしたときから、そのリンクが断状態となるまでのシーケンスが示されている。図２５において、図１８と共通する動作には同一の符号を付し、その説明を省略する。
【０２１０】
サーバ２のＤＴＮプロキシ部２９は、端末１ｃと無線アクセスポイントＡＰ＃１の間のリンク断によりバンドルのデータの転送が完了せず、中断する（符号Ｒ９，Ｒ９’）。また、端末１ｃのＤＴＮプロキシ部１９は、データの受信が完了していないため、自動運転ＡＰＬ１０１ａに対するソケットをオープンしたままにする。
【０２１１】
図２６には、端末１ｃが他の無線アクセスポイントＡＰ＃２にリンクしたときから、そのリンクが断状態となるまでのシーケンスが示されている。図２６において、符号Ｓ２１〜Ｓ２７，Ｓ２９〜Ｓ３２，Ｒ２６〜Ｒ３１の動作は、図１８の符号Ｓ１〜Ｓ７，Ｓ９〜Ｓ１２，Ｒ６〜Ｒ１１の動作と同様であるため、その詳細な説明は適宜に省略する。
【０２１２】
端末１ｃのＤＴＮプロキシ部１９は、ＯＳ機能部１３０を監視することにより（符号Ｓ２１）、端末１ｃに新しいＩＰアドレス「20.20.20.210」が割り当てられたことを検出する（符号Ｓ２４、Ｓ２５）。ＤＴＮプロキシ部１９は、ＩＰアドレスをＩＰ経路ＴＢＬ１３１に設定して、サーバ２のＤＴＮプロキシ部２９にソケットをオープンし（符号Ｓ２６）、アドレス通知を送信する（符号Ｓ２７）。
【０２１３】
サーバ２のＤＴＮプロキシ部２９は、アドレス通知を受信すると、端末１ｃの新しいＩＰアドレス「20.20.20.210」をＤＴＮ経路ＴＢＬ２２３に設定する（符号Ｒ２６）。ＤＴＮプロキシ部２９は、端末１ｃのＤＴＮプロキシ部１９にソケットをオープンし（符号Ｒ２７）、アドレス通知を送信する（符号Ｒ２８）。これにより、ＤＴＮプロキシ部１９，２９は、制御ＡＰＬ２０１ａと自動運転ＡＰＬ１０１ａの間のセッションに対応する新たな通信経路を生成する。
【０２１４】
次に、ＤＴＮプロキシ部２９は、通信の中断により送信に失敗したバンドルのデータを端末１ｃのＤＴＮプロキシ部１９に再送する（符号Ｒ２９）。ＤＴＮプロキシ部１９は、データをオープン済みのソケットから自動運転ＡＰＬ１０１ａに送信し（符号Ｓ２９）、ソケットをクローズする（符号Ｓ３０）。これにより、バンドルプロトコルでは、送信に失敗したバンドルごとに再送が行われるため、無線ＬＡＮの切り替えにより中断した通信が完了する。
【０２１５】
このように、各ＤＴＮプロキシ部１９，２９は、制御ＡＰＬ２０１ａと自動運転ＡＰＬ１０１ａの間のセッションに対応する通信経路を用いて、無線ＬＡＮの切り替えによって中断された制御ＡＰＬ２０１ａから自動運転ＡＰＬ１０１ａへの通信を継続する。したがって、制御ＡＰＬ２０１ａから自動運転ＡＰＬ１０１ａへの通信を完了することができる。
【０２１６】
次に、端末１ｃのセンサＡＰＬ１０１ｂからサーバ２の計測ＡＰＬ２０１ｂへの通信のシーケンスについて述べる。
【０２１７】
図２７には、端末１ｃのセンサＡＰＬ１０１ｂ、プロキシ＃１２を含むＤＴＮプロキシ部１９、及びＯＳ機能部１３０と、サーバ２の計測ＡＰＬ２０１ｂ、プロキシ＃０４を含むＤＴＮプロキシ部２９、及びＯＳ機能部２３０との間の通信の動作が示されている。本例では、端末１ｃが無線アクセスポイントＡＰ＃１とリンクしたときの通信を示す。
【０２１８】
端末１ｃのＤＴＮプロキシ部１９は、ＩＰアドレスの割り当てを検出するためにＯＳ機能部１３０を監視する（符号Ｓ４１）。ＯＳ機能部１３０は、端末１ｃが無線ＬＡＮ＃１の圏内に入ると、無線アクセスポイントＡＰ＃１とリンクを確立する（符号Ｓ４２）。ＯＳ機能部１３０は、無線アクセスポイントＡＰ＃１とＤＨＣＰによる通信を行い（符号Ｓ４３）、端末１ｃにＩＰアドレス「10.10.10.105」が割り当てられる（符号Ｓ４４）。ＤＴＮプロキシ部１９は、ＯＳ機能部１３０からＩＰアドレスを取得する（符号Ｓ４５）。
【０２１９】
次に、ＤＴＮプロキシ部１９は、通信先のＤＴＮプロキシ部２９に対しソケットをオープンする（符号Ｓ４６）。このソケットは図１０のソケットＳＣ３に該当し、その通信先はバンドル制御部２２０のＩＰアドレス「10.10.10.100」及びポート番号「４５５６」とする。次に、ＤＴＮプロキシ部１９は、ＩＰアドレス「10.10.10.105」及びノードＥＩＤ「dtn://mobile3」を含むアドレス通知を生成してサーバ２のＤＴＮプロキシ部２９に送信する（符号Ｓ４７）。
【０２２０】
ＤＴＮプロキシ部２９は、アドレス通知を受信すると、アドレス通知からＩＰアドレスを取得して、アドレス通知内のノードＥＩＤに対応するようにＤＴＮ経路ＴＢＬ２２３に設定する（符号Ｒ４１）。より具体的には、経路制御部２２４は、アドレス通知の送信元ＩＰアドレスを、アドレス通知の宛先ＥＩＤに対応するようにＤＴＮ経路ＴＢＬ２２３に設定する。なお、設定内容については、図２１を参照して述べたとおりである。
【０２２１】
ＤＴＮプロキシ部２９は、通信先のＤＴＮプロキシ部１９に対しソケットをオープンする（符号Ｒ４２）。このソケットは図１０のソケットＳＣ４に該当し、その通信先はバンドル制御部１２０のＩＰアドレス「10.10.10.105」及びポート番号「４５５６」である。次に、ＤＴＮプロキシ部２９は、ＩＰアドレス「10.10.10.100」及びノードＥＩＤ「dtn://server」を含むアドレス通知を生成して端末１ｃのＤＴＮプロキシ部１９に送信する（符号Ｒ４３）。
【０２２２】
端末１ｃのセンサＡＰＬ１０１ｂは、ＤＴＮプロキシ部１９に対しソケットをオープンする（符号Ｓ４８）。このソケットは図１０のソケットＳＣ１に該当し、その通信先はプロキシ＃１２のＩＰアドレス「10.10.10.105」及びポート番号「８００１」である。センサＡＰＬ１０１ｂは、ソケットからＤＴＮプロキシ部１９にデータを送信する（符号Ｓ４９）。ＤＴＮプロキシ部１９は、バンドルのデータをサーバ２のＤＴＮプロキシ部２９に送信する（符号Ｒ４４）。
【０２２３】
センサＡＰＬ１０１ｂは、データの送信を完了すると、ソケットをクローズする（符号Ｓ５０）。また、ＤＴＮプロキシ部１９は、センサＡＰＬ１０１ｂにセッションの確立を通知する（符号Ｓ５１）。
【０２２４】
サーバ２のＤＴＮプロキシ部２９は、通信先の計測ＡＰＬ２０１ｂに対しソケットをオープンする（符号Ｒ４５）。このソケットは図１０のソケットＳＣ５に該当する。ＤＴＮプロキシ部２９は、ソケットからデータを計測ＡＰＬ２０１ｂに送信し（符号Ｒ４６）、ソケットをクローズする（符号Ｒ４７）。
【０２２５】
端末１ｃが無線ＬＡＮ＃１の圏外に移動したとき、端末１ｃと無線アクセスポイントＡＰ＃１のリンクが断状態となる。ＤＴＮプロキシ部１９は、ＯＳ機能部１３０によりリンク断を検出する（符号Ｓ５２）。次に、ＤＴＮプロキシ部１９は、他の無線アクセスポイントＡＰとのリンクに備えて、再びＯＳ機能部１３０を監視する（符号Ｓ５３）。その後、本例のシーケンスが繰り返される。このようにして、センサＡＰＬ１０１ｂから計測ＡＰＬ２０１ｂへの通信は行われる。なお、上述した各シーケンスは、他の端末１ａ，１ｂについても同様に実行される。
【０２２６】
また、上記の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体（ただし、搬送波は除く）に記録しておくことができる。
【０２２７】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ（Digital Versatile Disc）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）などの可搬型記録媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０２２８】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０２２９】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【符号の説明】
【０２３０】
１，１ａ〜１ｃ     端末
２       サーバ
１０，２０      ＣＰＵ
１９，２９      ＤＴＮプロキシ部
１２０，２２０     バンドル制御部
１２４，２２４     経路制御部
１０１ａ      自動運転アプリケーション
２０１ａ      制御アプリケーション
【図１】
2018061209.tif 000003
【図２】
2018061209.tif 000004
【図３】
2018061209.tif 000005
【図４】
2018061209.tif 000006
【図５】
2018061209.tif 000007
【図６】
2018061209.tif 000008
【図７】
2018061209.tif 000009
【図８】
2018061209.tif 000010
【図９】
2018061209.tif 000011
【図１０】
2018061209.tif 000012
【図１１】
2018061209.tif 000013
【図１２】
2018061209.tif 000014
【図１３】
2018061209.tif 000015
【図１４】
2018061209.tif 000016
【図１５】
2018061209.tif 000017
【図１６】
2018061209.tif 000018
【図１７】
2018061209.tif 000019
【図１８】
2018061209.tif 000020
【図１９】
2018061209.tif 000021
【図２０】
2018061209.tif 000022
【図２１】
2018061209.tif 000023
【図２２】
2018061209.tif 000024
【図２３】
2018061209.tif 000025
【図２４】
2018061209.tif 000026
【図２５】
2018061209.tif 000027
【図２６】
2018061209.tif 000028
【図２７】
2018061209.tif 000029
【手続補正書】
【提出日】平成30年12月12日(2018.12.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１アプリケーションが動作するサーバ装置と、第２アプリケーションが動作する端末装置とを含む通信システムにおいて、
前記サーバ装置は、前記第１アプリケーションから前記第２アプリケーションへの通信を前記端末装置に中継する第１プロキシ部を有し、
前記端末装置は、前記第１プロキシ部から中継された通信を前記第２アプリケーションに転送する第２プロキシ部を有し、
前記第１プロキシ部及び前記第２プロキシ部は、前記第１アプリケーションと前記第２アプリケーションの間の通信により確立されたセッションに対応して通信経路を生成し、前記端末装置が接続されるネットワークの切り替えに応じ前記通信経路を用いて前記セッションを維持することを特徴とする通信システム。
【請求項２】
前記第１プロキシ部及び前記第２プロキシ部は、前記通信経路を用いて、前記ネットワークの切り替えによって中断された前記第１アプリケーションから前記第２アプリケーションへの通信を継続することを特徴とする請求項１に記載の通信システム。
【請求項３】
前記第１プロキシ部は、前記第１アプリケーションから前記第２アプリケーションに対する通信を依頼されたとき、前記第１アプリケーションにセッションの確立を通知し、
前記第２プロキシ部は、前記ネットワークの切り替え後、前記第１プロキシ部からの通知に応じて前記第２アプリケーションとのセッションを確立することを特徴とする請求項１または２に記載の通信システム。
【請求項４】
前記第２プロキシ部は、前記切り替え後のネットワークにおける前記端末装置の識別情報を前記第１プロキシ部に通知し、
前記第１プロキシ部は、前記識別情報に基づき前記通信経路を生成することを特徴とする請求項１乃至３の何れかに記載の通信システム。
【請求項５】
サーバ装置で動作する第１アプリケーションと通信する第２アプリケーションが動作する端末装置において、
前記サーバ装置から中継された前記第１アプリケーションから前記第２アプリケーションへの通信を前記第２アプリケーションに転送するプロキシ部を有し、
前記プロキシ部は、前記第１アプリケーションと前記第２アプリケーションの間の通信により確立されたセッションに対応する通信経路を生成し、接続されるネットワークの切り替えに応じ前記通信経路を用いて前記セッションを維持することを特徴とする端末装置。
【請求項６】
第１アプリケーションが動作するサーバ装置において、
前記サーバ装置は、前記第１アプリケーションから、端末装置で動作する第２アプリケーションへの通信を前記端末装置に中継するプロキシ部を有し、
前記プロキシ部は、前記第１アプリケーションと前記第２アプリケーションの間の通信により確立されたセッションに対応する通信経路を生成し、前記端末装置が接続されるネットワークの切り替えに応じ前記通信経路を用いて前記セッションを維持することを特徴とするサーバ装置。
【請求項７】
サーバ装置で動作する第１アプリケーションと、端末装置で動作する第２アプリケーションとの間の通信を処理する通信プログラムにおいて、
前記サーバ装置から前記端末装置に中継された前記第１アプリケーションから前記第２アプリケーションへの通信を前記第２アプリケーションに転送し、
前記第１アプリケーションと前記第２アプリケーションの間の通信により確立されたセッションに対応する通信経路を生成し、前記端末装置が接続されるネットワークの切り替えに応じ前記通信経路を用いて前記セッションを維持する、処理をコンピュータに実行させることを特徴とする通信プログラム。
【請求項８】
サーバ装置で動作する第１アプリケーションと、端末装置で動作する第２アプリケーションとの間の通信を処理する通信プログラムにおいて、
前記第１アプリケーションから前記第２アプリケーションへの通信を前記サーバ装置から前記端末装置に中継し、
前記第１アプリケーションと前記第２アプリケーションの間の通信により確立されたセッションに対応する通信経路を生成し、前記端末装置が接続されるネットワークの切り替えに応じ前記通信経路を用いて前記セッションを維持する、処理をコンピュータに実行させることを特徴とする通信プログラム。
【請求項９】
サーバ装置で動作する第１アプリケーションと、端末装置で動作する第２アプリケーションとの間の通信を処理する通信方法において、
前記サーバ装置から前記端末装置に中継された前記第１アプリケーションから前記第２アプリケーションへの通信を前記第２アプリケーションに転送する工程と、
前記第１アプリケーションと前記第２アプリケーションの間の通信により確立されたセッションに対応する通信経路を生成し、前記端末装置が接続されるネットワークの切り替えに応じ前記通信経路を用いて前記セッションを維持する工程とを、コンピュータが実行することを特徴とする通信方法。
【請求項１０】
サーバ装置で動作する第１アプリケーションと、端末装置で動作する第２アプリケーションとの間の通信を処理する通信方法において、
前記第１アプリケーションから前記第２アプリケーションへの通信を前記サーバ装置から前記端末装置に中継する工程と、
前記第１アプリケーションと前記第２アプリケーションの間の通信により確立されたセッションに対応する通信経路を生成し、前記端末装置が接続されるネットワークの切り替えに応じ前記通信経路を用いて前記セッションを維持する工程とを、コンピュータが実行することを特徴とする通信方法。
【国際調査報告】
2018061209.tif 000030
2018061209.tif 000031