(57)【要約】【課題】変更されたＴＣＰサブフローの情報をアプリケーションが認識でき、アプリケーションの実行における通信エラーを抑制できる通信装置を提供する。【解決手段】通信装置は、ＭＰＴＣＰに従って他の通信装置と通信する。通信装置は、アプリケーションを制御するアプリケーション制御部と、ＭＰＴＣＰの少なくとも２つのサブフローを制御する通信制御部と、ＩＰアドレスを用いてサブフローを介してデータを通信する少なくとも２つの通信部と、サブフローに用いられるＩＰアドレスを含むサブフローの情報を保持する情報保持部と、を備える。情報保持部は、サブフローが変更された場合、変更後のサブフローの情報を保持する。アプリケーション制御部は、変更後のサブフローの情報を参照する。【選択図】図３
2018041269.tif 000002
【特許請求の範囲】
【請求項１】
ＭＰＴＣＰに従って他の通信装置と通信する通信装置であって、
アプリケーションを制御するアプリケーション制御部と、
前記ＭＰＴＣＰの少なくとも２つのサブフローを制御する通信制御部と、
ＩＰアドレスを用いて前記サブフローを介してデータを通信する少なくとも２つの通信部と、
前記サブフローに用いられるＩＰアドレスを含む前記サブフローの情報を保持する情報保持部と、
を備え、
前記情報保持部は、前記サブフローが変更された場合、変更後のサブフローの情報を保持し、
前記アプリケーション制御部は、前記変更後のサブフローの情報を参照する、通信装置。
【請求項２】
請求項１に記載の通信装置であって、
前記アプリケーション制御部は、前記情報保持部が保持する変更後のサブフローの情報を参照し、前記アプリケーションが有する前記サブフローの情報を更新する、通信装置。
【請求項３】
請求項１または２に記載の通信装置であって、
前記通信部は、転送要求を受信し、
前記アプリケーション制御部は、前記転送要求の送信元のＩＰアドレスが前記アプリケーションが有する前記サブフローの情報に係るＩＰアドレスと異なる場合、前記転送要求の送信元のＩＰアドレスをセキュリティチェックの対象から除外する、通信装置。
【請求項４】
請求項２に記載の通信装置であって、
前記アプリケーション制御部は、前記他の通信装置へ第１のデータを送信し、前記他の通信装置から前記第１のデータに対する第２のデータを受信しなかった場合、前記アプリケーションに係る前記第１のデータの送信先を、前記情報保持部が保持するサブフローの情報に係るＩＰアドレスのうち、前記第２のデータを受信されなかったサブフローに係るＩＰアドレスを除くいずれかのＩＰアドレスに変更する、通信装置。
【請求項５】
請求項３に記載の通信装置であって、
前記アプリケーション制御部は、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）のアプリケーションを実行する、通信装置。
【請求項６】
請求項４に記載の通信装置であって、
前記アプリケーション制御部は、ＡＭＱＰ（Ａｄｖａｎｃｅｄ  Ｍｅｓｓａｇｅ  Ｑｕｅｕｉｎｇ  Ｐｒｏｔｏｃｏｌ）のアプリケーションを実行する、通信装置。
【請求項７】
請求項１〜６のいずれか１項に記載の通信装置であって、
前記情報保持部は、ＯＳＩ参照モデルの階層において前記アプリケーション制御部と前記通信制御部との間に位置するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）である、通信装置。
【請求項８】
ＭＰＴＣＰに従って通信する通信方法であって、
ＩＰアドレスを用いた前記ＭＰＴＣＰの少なくとも２つのサブフローを制御し、
前記サブフローに用いられるＩＰアドレスを含む前記サブフローの情報を情報保持部に保持し、
前記サブフローを介してデータを通信し、
前記サブフローが変更された場合、変更後の前記サブフローの情報を前記情報保持部に保持し、
アプリケーションを制御するアプリケーション制御部が、前記変更後のサブフローの情報を参照する、通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、通信装置及び通信方法に関する。
【背景技術】
【０００２】
従来、複数の経路を扱うＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）として、ＭＰＴＣＰ（Ｍｕｌｔｉｐａｓｓ  ＴＣＰ）が知られている。ＭＰＴＣＰに従って通信するスマートフォンとして、広域無線通信におけるＴＣＰコネクション、有線通信におけるＴＣＰコネクション、及び近距離無線通信におけるＴＣＰコネクションが、ＴＣＰサブフローとしてＭＰＴＣＰコアにより管理されるものが知られている。また、このＭＰＴＣＰコアが、３つのＴＣＰサブフローをまとめて単一のＭＰＴＣＰコネクションを設立し、ＭＰＴＣＰコネクションの情報をソケットＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）によりアプリケーションプログラムに提供することが知られている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１２７７９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載されたスマートフォンでは、例えばスマートフォンが移動することで一部のＴＣＰコネクションが非接続状態となった場合、ＭＰＴＣＰによりＴＣＰサブフローの情報が変更される。しかし、アプリケーションプログラムは、変更されたＴＣＰサブフローの情報を認識できないため、アプリケーションプログラムの実行中にエラーを生じる可能性がある。
【０００５】
本開示は、上記事情に鑑みてなされたものであり、変更されたＴＣＰサブフローの情報をアプリケーションが認識でき、アプリケーションの実行における通信エラーを抑制できる通信装置及び通信方法を提供する。
【課題を解決するための手段】
【０００６】
本開示の通信装置は、ＭＰＴＣＰに従って他の通信装置と通信する。通信装置は、アプリケーションを制御するアプリケーション制御部と、ＭＰＴＣＰの少なくとも２つのサブフローを制御する通信制御部と、ＩＰアドレスを用いてサブフローを介してデータを通信する少なくとも２つの通信部と、サブフローに用いられるＩＰアドレスを含むサブフローの情報を保持する情報保持部と、を備える。情報保持部は、サブフローが変更された場合、変更後のサブフローの情報を保持する。アプリケーション制御部は、変更後のサブフローの情報を参照する。
【０００７】
本開示の通信方法は、ＭＰＴＣＰに従って通信する通信方法であって、ＩＰアドレスを用いたＭＰＴＣＰの少なくとも２つのサブフローを生成し、サブフローに用いられるＩＰアドレスを含むサブフローの情報を情報保持部に保持し、サブフローを介してデータを通信し、サブフローが変更された場合、変更後のサブフローの情報を情報保持部に保持し、アプリケーションを制御するアプリケーション制御部が、変更後のサブフローの情報を参照する。
【発明の効果】
【０００８】
本開示によれば、変更されたＴＣＰサブフローの情報をアプリケーションが認識でき、アプリケーションの実行における通信エラーを抑制できる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態における通信システムの構成例を示す模式図
【図２】通信装置のハードウェア構成例を示すブロック図
【図３】通信装置の機能構成例を示すブロック図
【図４】ＡＰＩを備えない通信システムがＭＰＴＣＰに従ってＦＴＰを実行する際の動作を示すシーケンス図
【図５】ＡＰＩを備える通信システムがＭＰＴＣＰに従ってＦＴＰを実行する際の動作例を示すフローチャート
【図６】ＡＰＩを備えない通信システムがＭＰＴＣＰに従ってＡＭＱＰを実行する際の動作を示すシーケンス図
【図７】ＡＰＩを備える通信システムがＭＰＴＣＰに従ってＡＭＱＰを実行する際の動作例を示すフローチャート
【図８】通信装置の他の機能構成例を示すブロック図
【発明を実施するための形態】
【００１０】
以下、適宜図面を参照しながら、実施形態を詳細に説明する。但し、必要以上に詳細な説明は省略する場合がある。例えば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になることを避け、当業者の理解を容易にするためである。尚、添付図面及び以下の説明は、当業者が本開示を十分に理解するために提供されるものであり、これらにより特許請求の範囲に記載の主題を限定することは意図されていない。
【００１１】
（第１の実施形態）
［構成等］
図１は、第１の実施形態における通信システム１０の構成例を示す模式図である。通信システム１０は、複数の通信装置１００を備える。複数の通信装置１００は、ネットワークＮＴを介して接続される。通信装置１００は、例えば、携帯端末１００Ａ及びサーバ１００Ｂを含む。本実施形態では、一例として、携帯端末１００ＡとサーバＢとが、ネットワークＮＴを介して、ＭＰＴＣＰに従って通信することを想定する。
【００１２】
携帯端末１００Ａは、例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、スマートフォン、携帯電話、カメラ、ロボット、ドローン（無人航空機）を含む。ロボットは、例えば警備用のロボットである。携帯端末１００Ａは、クライアント端末として機能する。
【００１３】
サーバ１００Ｂは、中継装置や基地局装置であってもよい。中継装置は、例えば、ＡＰ（Ａｃｃｅｓｓ  Ｐｏｉｎｔ）、ゲートウェイ装置、を含む。
【００１４】
ネットワークＮＴは、無線ネットワークを含んでも有線ネットワークを含んでもよい。また、ネットワークＮＴは、専用ネットワークを含んでも公衆ネットワークを含んでもよい。ネットワークＮＴは、インターネット、イントラネット、セルラーネットワーク、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、などを含む。ネットワークＮＴは、近距離通信やＢｌｕｅｔｏｏｔｈ（登録商標）に係るネットワークを含んでもよい。
【００１５】
通信システム１０では、携帯端末１００Ａ及びサーバ１００Ｂは、ネットワークＮＴを介して、所定の通信方式で、ＭＰＴＣＰに従ってデータ通信する。携帯端末１００Ａ及びサーバ１００Ｂは、音声データ、画像データ、制御データ、等を通信する。携帯端末１００Ａ及びサーバ１００Ｂは、複数の通信方式で通信可能である。
【００１６】
通信方式は、例えば、有線ＬＡＮ通信、無線ＬＡＮ通信、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）通信、ＤＥＣＴ（Ｄｉｇｉｔａｌ  Ｅｎｈａｎｃｅｄ  Ｃｏｒｄｌｅｓｓ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎ）、ＬＴＥ（Ｌｏｎｇ  Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ）、ＬＴＥ−Ａｄｖａｎｃｅｄ、ミリ波通信、セルラー通信、近距離無線通信、Ｂｌｕｅｔｏｏｔｈ（登録商標）の方式を含む。
【００１７】
次に、通信装置１００の構成について説明する。
【００１８】
図２は、通信装置１００のハードウェア構成例を示すブロック図である。通信装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１、メモリ１０２、通信制御Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）１０３，１０５、及び通信Ｉ／Ｆ１０４，１０６を含む。携帯端末１００Ａとサーバ１００Ｂとは、通信装置１００の一例であり、同様の構成を有するので、ここではまとめて説明する。尚、ここでは、通信制御Ｉ／Ｆ及び通信Ｉ／Ｆの数が２つであることを例示したが、３つ以上であってもよい。
【００１９】
ＣＰＵ１０１は、メモリ１０２と協働して、各種処理や制御を行う。具体的には、ＣＰＵ１０１は、メモリ１０２に保持されたプログラムを実行することで、通信装置１００が有する各機能を実現する。このプログラムは、例えば、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、ミドルウェア、アプリケーション、を含む。
【００２０】
メモリ１０２は、例えば、各種データ、情報、プログラムを記憶する。メモリ１０２は、ＣＰＵ１０１に内蔵されてもよい。メモリ１０２は、一次記憶装置とともに、二次記憶装置や三次記憶装置を含んでもよい。一次記憶装置は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）を含む。二次記憶装置は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｍｅｍｏｒｙ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。三次記憶装置は、例えば、ＵＳＢフラッシュメモリやＳＤカードを含む。
【００２１】
通信制御Ｉ／Ｆ１０３，１０５は、通信Ｉ／Ｆ１０４，１０６による通信を制御する。通信Ｉ／Ｆ１０４，１０６は、各種通信方式に従って、通信する。通信Ｉ／Ｆ１０４と通信Ｉ／Ｆ１０６の通信方式は、例えば異なる。例えば、通信Ｉ／Ｆ１０４は、例えば無線ＬＡＮ通信の方式に従い、通信Ｉ／Ｆ１０６は、例えばＬＴＥ通信の方式に従う。
【００２２】
尚、携帯端末１００Ａが有するハードウェア構成とサーバ１００Ｂが有するハードウェア構成とは、同様である。図２の同じブロックにおいて携帯端末１００Ａ用とサーバ１００Ｂ用とを区別する場合には、携帯端末１００Ａが有する構成ブロックについては、符号の末尾に「Ａ」を付し、サーバ１００Ｂが有する構成ブロックについては、符号の末尾に「Ｂ」を付して説明する。
【００２３】
図３は、通信装置１００（携帯端末１００Ａ及びサーバ１００Ｂ）の機能構成例を示すブロック図である。
【００２４】
ＣＰＵ１０１や通信制御Ｉ／Ｆ１０３は、メモリ１０２に保持されたプログラムを実行することで、通信装置１００が有する各機能を実現する。この各機能は、後述するアプリケーション制御部１５１、ＡＰＩ１５２、ＭＰＴＣＰ制御部１５３、及びＴＣＰ通信部１５４，１５５の機能を含む。つまり、通信装置１００は、アプリケーション制御部１５１、ＡＰＩ１５２、ＭＰＴＣＰ制御部１５３、ＴＣＰ通信部１５４，１５５、を備える。
【００２５】
尚、図３では、携帯端末１００Ａが有する機能ブロックとサーバ１００Ｂが有する機能ブロックとは、同様である。図３の同じ機能ブロックにおいて携帯端末１００Ａ用とサーバ１００Ｂ用とを区別する場合には、携帯端末１００Ａが有する機能ブロックについては、符号の末尾に「Ａ」を付し、サーバ１００Ｂが有する機能ブロックについては、符号の末尾に「Ｂ」を付して説明する。
【００２６】
アプリケーション制御部１５１（１５１Ａ，１５１Ｂ）は、ＯＳＩ参照モデルの第７層（アプリケーション層）において、メモリ１０２に保持されたアプリケーション（アプリケーションプログラム）を実行する。そして、アプリケーション制御部１５１は、アプリケーションに係る制御を行う。
【００２７】
ＡＰＩ１５２（１５２Ａ，１５２Ｂ）は、ＯＳＩ参照モデルの第４層（トランスポート層）と第７層（アプリケーション層）との間において、アプリケーションとＭＰＴＣＰとの間のデータの受け渡しを行う。例えば、ＡＰＩ１５２は、ＭＰＴＣＰのサブフローｓｆの情報を保持し、サブフローｓｆの情報が更新されると、更新されたサブフローｓｆの情報を保持する。これにより、アプリケーションは、ＭＰＴＣＰが用いる各種データを参照できる。
【００２８】
尚、ＡＰＩ１５２は、ＡＰＩ１５２を構成するプログラムのパラメータ等に、アプリケーション又はＭＰＴＣＰに係るデータを含むことで、データを保持する。ＡＰＩ１５２に係るプログラムやパラメータは、メモリ１０２に保持される。
【００２９】
ＭＰＴＣＰ制御部１５３（１５３Ａ，１５３Ｂ）は、ＯＳＩ参照モデルの第４層（トランスポート層）においてＭＰＴＣＰに従って動作し、ＭＰＴＣＰに係る制御を行う。例えば、ＭＰＴＣＰ制御部１５３は、ＭＰＴＣＰのセッションのサブフローを設立や切断を行う。つまり、ＭＰＴＣＰ制御部１５３は、複数のサブフローを制御する。ＭＰＴＣＰ制御部１５３は、各サブフローを監視し、サブフローが継続して設立されているか否かを判別する。
【００３０】
ＴＣＰ通信部１５４は、ＭＰＴＣＰ制御部１５３の制御により、サブフローｓｆ１（ＴＣＰコネクション）を介してデータを通信する。サブフローｓｆ１は、通信Ｉ／Ｆ１０４Ａと通信Ｉ／Ｆ１０４Ｂとを介した経路である。
【００３１】
ＴＣＰ通信部１５５は、ＭＰＴＣＰ制御部１５３の制御により、サブフローｓｆ２（ＴＣＰコネクション）を介してデータを通信する。サブフローｓｆ２は、通信Ｉ／Ｆ１０６Ａと通信Ｉ／Ｆ１０６Ｂとを介した経路である。
【００３２】
アプリケーションの情報は、例えば、アプリケーションの識別子、アプリケーションを実行するために必要な通信元、通信先のＩＰアドレスの情報、を含む。サブフローの情報は、例えば、自装置の識別情報、サブフローの通信に用いる自装置側のＩＰアドレスの情報、他装置（通信相手）の識別情報、サブフローの通信に用いる他装置側のＩＰアドレスの情報、を含む。
【００３３】
ＡＰＩ１５２が不在である場合、特に工夫をしなければ、ＭＰＴＣＰ側からはアプリケーション側の情報が参照できないために不明であり、アプリケーション側からはＭＰＴＣＰ側の情報が参照できないために不明である。これに対し、ＡＰＩ１５２は、ＭＰＴＣＰとアプリケーションとの間に配置され、相互に参照可能であり、アプリケーションの情報及びサブフローの情報を共有化できる。
【００３４】
［ユースケース］
次に、通信システム１０のユースケースについて説明する。
【００３５】
［ユースケース１］
ユースケース１では、アプリケーションとしてＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）が実行される。つまり、サーバ１００Ｂは、ＦＴＰサーバである。尚、ＦＴＰの場合、サブフローに関して制御ポートとデータポートとが別々に設立される。ここでは、後述するサブフローｓｆ１１は、制御ポートのサブフローｓｆ１１とデータポートのサブフローｓｆ１１とを含むことを想定する。また、後述するサブフローｓｆ２１は、制御ポートのサブフローｓｆ２１とデータポートのサブフローｓｆ２１とを含むことを想定する。
【００３６】
図４は、ＡＰＩ１５２を備えない通信システム１０がＭＰＴＣＰに従ってＦＴＰを実行する際の動作例を示すシーケンス図である。
【００３７】
図４では、携帯端末１００Ａにおいて、通信Ｉ／Ｆ１０４Ａの通信方式が無線ＬＡＮ通信の方式であり、通信Ｉ／Ｆ１０６Ａの通信方式が無線ＷＡＮの通信の方式であることを想定する。通信Ｉ／Ｆ１０４Ａは、ＩＰアドレス「ＸＸ」を用い、通信Ｉ／Ｆ１０６Ａは、ＩＰアドレス「ＹＹ」を用いる。また、サーバ１００Ｂにおいて、通信Ｉ／Ｆ１０４Ｂの通信方式が無線ＬＡＮ通信の方式であり、通信Ｉ／Ｆ１０６Ｂの通信方式が無線ＷＡＮの通信の方式であることを想定する。通信Ｉ／Ｆ１０４Ｂは、ＩＰアドレス「Ｘ’Ｘ’」を用い、通信Ｉ／Ｆ１０６Ｂは、ＩＰアドレス「Ｙ’Ｙ’」を用いる。
【００３８】
まず、携帯端末１００Ａの入力デバイス（不図示）がアプリケーションを実行するためのユーザからの入力操作を受け付けると、アプリケーション制御部１５１Ａが、アプリケーションの実行を開始する。入力デバイスは、キーボード、マウス、タッチパッド、タッチパネル、各種キー、マイク、等の入力デバイスを広く含む。
【００３９】
アプリケーションの実行開始に伴い、ＭＰＴＣＰ制御部１５３Ａ，１５３Ｂは、ＦＴＰに係るセッションの設立を開始する（Ｓ１１）。この際、ＭＰＴＣＰ制御部１５３Ａ，１５３Ｂは、無線ＬＡＮを用いて、ＩＰアドレス「ＸＸ」，「Ｘ’Ｘ’」を用いて、制御ポートのサブフローｓｆ１１（サブフローｓｆ１の一例）を設立する。
【００４０】
続いて、ＭＰＴＣＰ制御部１５３Ａ，１５３Ｂは、ＭＰＴＣＰに従って、ＦＴＰに係るサブフローｓｆ２１を設立する（Ｓ１２）。この際、ＭＰＴＣＰ制御部１５３Ａ，１５３Ｂは、無線ＷＡＮを用いて、ＩＰアドレス「ＹＹ」，「Ｙ’Ｙ’」を用いて、制御ポートのサブフローｓｆ２１（サブフローｓｆ２の一例）を設立する。
【００４１】
制御ポートのサブフローｓｆ１１，ｓｆ２１が設立されると、ＴＣＰ通信部１５４Ａは、制御ポートのサブフローｓｆ１１を介して、ＦＴＰに係るデータ（ＦＴＰデータ）の転送要求を送信する（Ｓ１３）。
【００４２】
サーバ１００Ｂでは、ＴＣＰ通信部１５４Ｂが、携帯端末１００Ａからサブフローｓｆ１１を介してＦＴＰデータの転送要求を受信する。そして、ＴＣＰ通信部１５４Ａ，１５４Ｂは、データポートのサブフローｓｆ１１を介して、ＦＴＰデータを転送する（Ｓ１４）。また、ＴＣＰ通信部１５５Ａ，１５５Ｂは、ポートのサブフローｓｆ２１を介して、ＦＴＰデータを転送する（Ｓ１５）。つまり、通信システム１０は、複数の経路（マルチパス）でＦＴＰデータを転送でき、通信効率を向上できる。
【００４３】
ここで、Ｓ１４，Ｓ１５のＦＴＰデータの転送中に、携帯端末１００Ａが無線ＬＡＮの通信圏外に移動したことに起因して、制御ポート及びデータポートのサブフローｓｆ１１が切断され（Ｓ１６）、その後無線ＬＡＮ通信が不可であるとする。この場合でも、制御ポート及びデータポートのサブフローｓｆ２１が残存するので、ＭＰＴＣＰのセッションは無線ＬＡＮが通信圏外となった後においても継続している。
【００４４】
ＦＴＰデータの転送は、転送対象のデータがなくなるまで継続される。そのため、制御ポート及びデータポートのサブフローｓｆ１１の切断後においても、ＴＣＰ通信部１５５Ａ，１５５Ｂは、データポートのサブフローｓｆ２１を介して、ＦＴＰデータの転送を継続する（Ｓ１７）。このＦＴＰデータは、サーバ１００Ｂで正常に受信される（Ｔｒａｎｓｆｅｒ  Ｃｏｍｐｌｅｔｅ）。一方、データポートのサブフローｓｆ１１を介したＦＴＰデータの転送は行われない。
【００４５】
携帯端末１００Ａからサーバ１００Ｂへの転送対象のデータが不在となると、各サブフローの接続が切断される。一方、ＦＴＰのセッションは終了せずに、セッション接続が継続される。ここでは、データポートのサブフローｓｆ２１は、転送対象のデータが不在となることで転送終了によって閉じられるが、制御ポートのサブフローｓｆ２１の接続が継続される。
【００４６】
サブフローｓｆ１１が切断された際の一連のＦＴＰデータの転送が終了した後に、次のＦＴＰデータの転送要求が発生すると、ＴＣＰ通信部１５５Ａは、サーバ１００Ｂに対して、制御ポートのサブフローｓｆ２１を介して、ＦＴＰデータの転送要求を送信する（Ｓ１８）。
【００４７】
サーバ１００Ｂでは、ＴＣＰ通信部１５５Ｂは、Ｓ１８でのＦＴＰデータの転送要求を受信すると、データポートのサブフローｓｆ２１を介して、この転送要求に対応するＦＴＰ応答データを送信しようと試みる。しかし、前回（Ｓ１３）の転送要求と今回（Ｓ１８）の転送要求とでは、送信元が異なるため、アプリケーション制御部１５１Ｂは、ＦＴＰのエラーが発生したと判定する。
【００４８】
ＴＣＰ通信部１５５Ｂは、ＭＰＴＣＰ制御部１５３の制御により、制御ポートのサブフローｓｆ２１を介して、ＦＴＰ応答データとして、ＦＴＰのエラーメッセージを送信する（Ｓ１９）。このエラーメッセージは、「Ｂａｄ  ＩＰ  Ｃｏｎｎｅｃｔｉｎｇ」の情報を含む。「Ｂａｄ  ＩＰ  Ｃｏｎｎｅｃｔｉｎｇ」の情報は、別経路で転送要求されたために送信元が異なると判定され拒否されたことを示す。
【００４９】
つまり、図４では、第１の転送要求はサブフローｓｆ１１を介して行われ、第２の転送要求はサブフローｓｆ２１を介して行われる。そのため、サーバ１００Ｂは、ＡＰＩ１５２Ｂを備えない場合、ＦＴＰのセッション設立時（Ｓ１３の時点）と異なるＩＰアドレスから、ＦＴＰデータの転送要求を受けたと判断する。従って、サーバ１００Ｂは、セキュリティチェックによりＦＴＰのセッション接続を終了し、各サブフローの接続を終了する。
【００５０】
図５（Ａ）〜（Ｃ）は、ＡＰＩ１５２を備える通信システム１０がＭＰＴＣＰに従ってＦＴＰを実行する際の動作例を示すフローチャートである。図５（Ａ）は、ＭＰＴＣＰ側の動作例を示す。図５（Ｂ）は、アプリケーション側のＡＰＩ１５２のサブフロー監視に係る動作例を示す。図５（Ｃ）は、アプリケーション側のセキュリティチェックに係る動作例を示す。
【００５１】
図５（Ａ）〜（Ｃ）では、図４と同様に、携帯端末１００Ａにおいて、通信Ｉ／Ｆ１０４Ａの通信方式が無線ＬＡＮ通信の方式であり、通信Ｉ／Ｆ１０６Ａの通信方式が無線ＷＡＮの通信の方式であることを想定する。通信Ｉ／Ｆ１０４Ａは、ＩＰアドレス「ＸＸ」を用い、通信Ｉ／Ｆ１０６Ａは、ＩＰアドレス「ＹＹ」を用いる。また、サーバ１００Ｂにおいて、通信Ｉ／Ｆ１０４Ｂの通信方式が無線ＬＡＮ通信の方式であり、通信Ｉ／Ｆ１０６Ｂの通信方式が無線ＷＡＮの通信の方式であることを想定する。通信Ｉ／Ｆ１０４Ｂは、ＩＰアドレス「Ｘ’Ｘ’」を用い、通信Ｉ／Ｆ１０６Ｂは、ＩＰアドレス「Ｙ’Ｙ’」を用いる。
【００５２】
図５（Ａ）では、まず、携帯端末１００Ａの入力デバイス（不図示）がアプリケーションを実行するためのユーザからの入力操作を受け付けると、アプリケーション制御部１５１Ａが、アプリケーションの実行を開始する。
【００５３】
ＭＰＴＣＰ側では、アプリケーションの実行開始に伴い、ＭＰＴＣＰ制御部１５３Ａ，１５３Ｂは、ＦＴＰに係るセッションの設立を開始する。この際、ＭＰＴＣＰ制御部１５３Ａ，１５３Ｂは、無線ＬＡＮを用いて、ＩＰアドレス「ＸＸ」，「Ｘ’Ｘ’」を用いて、サブフローｓｆ１１を設立する（Ｓ２１）。
【００５４】
続いて、ＭＰＴＣＰ制御部１５３Ａ，１５３Ｂは、ＭＰＴＣＰに従って、ＦＴＰに係るサブフローｓｆ２１を設立する（Ｓ２２）。この際、通信Ｉ／Ｆ１０６Ａ及び通信Ｉ／Ｆ１０６Ｂは、無線ＷＡＮを用いて、ＩＰアドレス「ＹＹ」，「Ｙ’Ｙ’」を用いて、サブフローｓｆ２１を設立する。
【００５５】
ＭＰＴＣＰ制御部１５３Ａ，１５３Ｂは、ＡＰＩ１５２Ａ，１５２Ｂへ、サブフロー情報を登録する（Ｓ２３）。このサブフロー情報は、携帯端末１００Ａとサーバ１００Ｂとの間で設立されたＭＰＴＣＰセッションの各サブフローに係る情報（例えば、通信Ｉ／Ｆ部１０４Ａ，１０４Ｂ，１０６Ａ，１０６ＢのＩＰアドレスの情報）を含む。例えば、サブフロー情報は、サブフローｓｆ１１に用いるＩＰアドレス「ＸＸ」，「Ｘ’Ｘ’」と、サブフローｓｆ２１に用いるＩＰアドレス「ＹＹ」，「Ｙ’Ｙ’」と、を含む。各サブフローｓｆ２１に用いられる各ＩＰアドレス情報は、対応付けて保持される。
【００５６】
尚、ＭＰＴＣＰ制御部１５３Ａ，１５３Ｂは、他にサブフローが生成された場合、このサブフローに係るサブフロー情報を、同様に、ＡＰＩ１５２Ａ，１５２Ｂに登録する。また、いずれかのサブフローが削除された場合（例えば無線ＬＡＮが通信圏外となり、サブフローが切断された場合）、このサブフローに係るサブフロー情報を、ＡＰＩ１５２Ａ，１５２Ｂから削除する。
【００５７】
図５（Ｂ）では、アプリケーション制御部１５１Ａ，１５１Ｂは、ＡＰＩ１５２Ａ，１５２Ｂを参照し、サブフロー情報を監視する（Ｓ２４）。
【００５８】
そして、アプリケーション制御部１５１Ａ，１５１Ｂは、ＡＰＩ１５２Ａ，１５２Ｂのサブフロー情報が更新されているか否かを判定する（Ｓ２５）。
【００５９】
例えば、携帯端末１００Ａが無線ＬＡＮの通信圏外になると、ＭＰＴＣＰによりサブフローｓｆ１１が切断される。切断されたサブフローｓｆ１１に係るＩＰアドレスの情報は、ＡＰＩ１５２Ａ，１５２Ｂから削除される。また、例えば、携帯端末１００Ａが新たに無線ＬＡＮの通信圏内となると、ＭＰＴＣＰによりサブフローｓｆ３１（不図示）が追加される。追加されたサブフローｓｆ３１に係るＩＰアドレスの情報は、ＡＰＩ１５２Ａ，１５２Ｂに登録される。
【００６０】
アプリケーション制御部１５１Ａ，１５１Ｂは、ＡＰＩ１５２Ａ，１５２Ｂのサブフロー情報が更新されていた場合、アプリケーションが有するサブフロー情報（例えばアプリケーションが通信先として認識するＩＰアドレスの情報）を更新する（Ｓ２６）。アプリケーションが有するサブフロー情報は、例えば、アプリケーションプログラムのパラメータの情報として含まれ得る。
【００６１】
例えば、Ｓ２３において、サブフロー情報として、サブフローｓｆ２１に用いるＩＰアドレス「ＹＹ」，「Ｙ’Ｙ’」が、ＡＰＩ１５２Ａ，１５２Ｂとに保持されている。アプリケーション制御部１５１Ａ，１５１Ｂは、変更前にサブフローｓｆ１１に係るＩＰアドレス「ＸＸ」，「Ｘ’Ｘ’」を通信先として指定していた場合、ＡＰＩ１５２Ａ，１５２Ｂのサブフロー情報を参照することで、ＩＰアドレスとして「ＸＸ」，「Ｘ’Ｘ’」ではなく「ＹＹ」，「Ｙ’Ｙ’」が使用可能であることを認識する。そこで、アプリケーション制御部１５１Ａ，１５１Ｂは、変更後のサブフローｓｆ２１に係るＩＰアドレス「ＹＹ」，「Ｙ’Ｙ’」を通信先とするよう、アプリケーションを更新する。
【００６２】
Ｓ２６によりアプリケーションが有するサブフロー情報が更新されると、アプリケーション制御部１５１Ａ，１５１Ｂは、更新されたサブフロー情報を用いて、ＦＴＰデータを通信可能となる。この場合、例えば、図４のＳ１８のようにサーバ１００ＢがＦＴＰデータの転送要求を受信した場合、アプリケーション制御部１５１Ｂは、更新後のサブフロー情報のＩＰアドレス（例えばＩＰアドレス「ＹＹ」，「Ｙ’Ｙ’」）が通常の転送要求元のＩＰアドレスであるとして、ＦＴＰのセキュリティチェックを実施することとなる。これにより、サーバ１００Ｂは、アプリケーションが有するサブフローの更新後に新たな転送要求を受信しても、ＦＴＰのセキュリティチェックにおいて別経路であると判断されるエラーを回避でき、ＦＴＰ通信が停止することを抑制できる。
【００６３】
図５（Ｃ）では、アプリケーション制御部１５１Ｂは、ＦＴＰに係るセキュリティチェックを実施する（Ｓ２７）。尚、図５（Ｃ）の開始時には、ＡＰＩ１５２Ｂが保持するサブフロー情報には、更新後のサブフロー情報に係る「ＹＹ」，「Ｙ’Ｙ’」が登録されている。また、ＩＰアドレスアプリケーションが有するサブフロー情報には、通信先としてＩＰアドレス「ＸＸ」，「Ｘ’Ｘ’」が登録されている。
【００６４】
アプリケーション制御部１５１Ｂは、アプリケーションの実行中に、アプリケーションに係るセキュリティチェックが発生したか否かを判定する（Ｓ２８）。セキュリティチェックは、例えば、携帯端末１００Ａが無線ＬＡＮの通信圏外に移動することにより、転送要求が別経路（異なるサブフロー）から取得された際に発生する。例えば、サブフローｓｆ１１が無線ＬＡＮの通信圏外となって切断され、サブフローｓｆ２１が設立維持されていることが考えられる。
【００６５】
セキュリティチェックが発生した場合、アプリケーション制御部１５１Ｂは、ＡＰＩ１５２Ｂに保持されたサブフロー情報を参照する（Ｓ２９）。前述のように、ＡＰＩ１５２Ｂの更新後のサブフロー情報には、例えば、サブフローｓｆ２１に用いるＩＰアドレス「ＹＹ」，「Ｙ’Ｙ’」が含まれる。
【００６６】
アプリケーション制御部１５１Ｂは、アプリケーションが有するサブフローに係るＩＰアドレスを、ＡＰＩ１５２Ｂに保持されたサブフロー情報に含まれる他のＩＰアドレスで置換することで、セキュリティチェックのエラーが解決するか否かを判定する（Ｓ３０）。例えば、アプリケーション制御部１５１Ｂは、エラーとなったＩＰアドレス「ＹＹ」，「Ｙ’Ｙ’」（今回の転送要求のＩＰアドレス）を「ＸＸ」，「Ｘ’Ｘ’」（前回の転送要求のＩＰアドレス）に置換することで、セキュリティチェックのエラーが無くなるか判定する。
【００６７】
ＩＰアドレスの置換によりセキュリティチェックのエラーを解決できる場合、アプリケーション制御部１５１Ｂは、エラーとなったサブフロー（ここではサブフローｓｆ２２）のＩＰアドレス（ここではＩＰアドレス「ＹＹ」，「Ｙ’Ｙ’」）をセキュリティチェックの対象から除外する（Ｓ３０Ａ）。
【００６８】
セキュリティチェックの対象から除外するとは、アプリケーションが有するサブフローに係るＩＰアドレス（例えばＩＰアドレス「ＸＸ」，「Ｘ’Ｘ’」）を、ＡＰＩ１５２Ｂに保持されたサブフロー情報に含まれる他のＩＰアドレス（例えばＩＰアドレス「ＹＹ」，「Ｙ’Ｙ’」）で置換することを含んでもよい。
【００６９】
これにより、サーバ１００Ｂは、例えば、前回の転送要求の送信元となったＩＰアドレスを書き換えでき、前回の転送要求の送信元と今回の転送要求の送信元とが一致するので、セキュリティチェックに係る通信エラーを回避できる。
【００７０】
また、セキュリティチェックの対象から除外するとは、アプリケーションが有するサブフロー情報にエラーとなるＩＰアドレス（例えばＩＰアドレス「ＸＸ」，「Ｘ’Ｘ’」）を含めたまま、今回の転送要求の送信元のＩＰアドレス（例えばＩＰアドレス「ＹＹ」，「Ｙ’Ｙ’」）を「Ｂａｄ  ＩＰ  Ｃｏｎｎｅｃｔｉｎｇ」の対象から除外するための情報（例えばフラグ）を、アプリケーションが保持することを含んでもよい。
【００７１】
これにより、サーバ１００Ｂは、例えば、前回の転送要求の送信元と今回の転送要求の送信元とのサブフローに係るＩＰアドレスが不一致のままでも、セキュリティチェックに係る通信エラーを回避できる。また、サーバ１００Ｂは、今回の転送要求の送信元のＩＰアドレスを把握できるので、このＩＰアドレス（例えばＩＰアドレス「ＹＹ」，「Ｙ’Ｙ’」）を用いて、転送要求に応じたＦＴＰデータを転送でき、通信を継続できる。
【００７２】
このように、ＭＰＴＣＰに従ってＦＴＰを実行する場合、通信装置１００は、ＡＰＩ１５２を参照することで、アプリケーションが有するサブフローの情報を更新できる。通信装置１００は、更新後のサブフロー情報を用いて通信することで、又はアプリケーションに認識されていないがＡＰＩ１５２に登録されているサブフロー情報に係るＩＰアドレスをセキュリティチェックの対象から除外することで、アプリケーションにおいてエラーが発生することを抑制でき、通信効率を向上できる。また、通信装置１００は、ＭＰＴＣＰにより複数のサブフローを用いて通信できるので、各サブフローで通信可能な場合には、通信を高速化できる。
【００７３】
［ユースケース２］
ユースケース２では、アプリケーションとしてＡＭＱＰ（Ａｄｖａｎｃｅｄ  Ｍｅｓｓａｇｅ  Ｑｕｅｕｉｎｇ  Ｐｒｏｔｏｃｏｌ）が実行される。つまり、サーバ１００Ｂは、ＡＭＱＰサーバである。
【００７４】
図６は、ＡＰＩ１５２を備えない通信システム１０がＭＰＴＣＰに従ってＡＭＱＰを実行する際の動作例を示すシーケンス図である。
【００７５】
図６では、携帯端末１００Ａにおいて、通信Ｉ／Ｆ１０４Ａの通信方式が無線ＬＡＮ通信の方式であり、通信Ｉ／Ｆ１０６Ａの通信方式が無線ＷＡＮの通信の方式であることを想定する。通信Ｉ／Ｆ１０４Ａは、ＩＰアドレス「ＸＸ」を用い、通信Ｉ／Ｆ１０６Ａは、ＩＰアドレス「ＹＹ」を用いる。また、サーバ１００Ｂにおいて、通信Ｉ／Ｆ１０４Ｂの通信方式が無線ＬＡＮ通信の方式であり、通信Ｉ／Ｆ１０６Ｂの通信方式が無線ＷＡＮの通信の方式であることを想定する。通信Ｉ／Ｆ１０４Ｂは、ＩＰアドレス「Ｘ’Ｘ’」を用い、通信Ｉ／Ｆ１０６Ｂは、ＩＰアドレス「Ｙ’Ｙ’」を用いる。
【００７６】
まず、入力デバイス（不図示）がアプリケーションを実行するための入力操作を受け付けると、アプリケーション制御部１５１Ａ，１５１Ｂが、アプリケーションの実行を開始する。
【００７７】
アプリケーションの実行開始に伴い、携帯端末１００Ａでは、ＴＣＰ通信部１５４Ａは、ＭＰＴＣＰ制御部１５３Ａの制御により、ポートとしての通信Ｉ／Ｆ１０４Ａを開放（ｐｏｒｔ  ｏｐｅｎ）し、通信Ｉ／Ｆ１０４Ｂを開放する（ｐｏｒｔ  ｏｐｅｎ）よう要求する（Ｓ３１）。
【００７８】
サーバ１００Ｂでは、ＴＣＰ通信部１５４Ｂは、ｐｏｒｔ  ｏｐｅｎ要求を受信する。ＴＣＰ通信部１５４Ｂは、ＭＰＴＣＰ制御部１５３Ｂの制御により、ポートとしての通信Ｉ／Ｆ１０４Ｂを開放し、ｐｏｒｔ  ｏｐｅｎ要求に対するＡＣＫを返信する（Ｓ３２）。これにより、ＭＰＴＣＰ制御部１５３Ａ，１５３Ｂは、ＡＭＱＰのセッションを設立し、サブフローｓｆ１２（サブフローｓｆ１の一例）を設立する。
【００７９】
同様に、ＴＣＰ通信部１５５Ａは、ＭＰＴＣＰ制御部１５３Ａの制御により、ポートとしての通信Ｉ／Ｆ１０６Ａを開放（ｐｏｒｔ  ｏｐｅｎ）し、通信Ｉ／Ｆ１０６Ｂを開放するよう要求し、サブフローの追加（Ｓｕｂｆｌｏｗ  ＪＯＩＮ）をサーバ１００Ｂへ要求する（Ｓ３３）。
【００８０】
サーバ１００Ｂでは、ＴＣＰ通信部１５５Ｂは、ｐｏｒｔ  ｏｐｅｎ要求及びＳｕｂｆｌｏｗ  ＪＯＩＮ要求を受信する。ＴＣＰ通信部１５５Ｂは、ＭＰＴＣＰ制御部１５３Ｂの制御により、ポートとしての通信Ｉ／Ｆ１０６Ｂを開放し、新たなサブフローｓｆ２２（サブフローｓｆ２の一例）を設立し、Ｓｕｂｆｌｏｗ  ＪＯＩＮ要求に対するＡＣＫを返信する（Ｓ３４）。
【００８１】
Ｓ３１〜Ｓ３４により、ＭＰＴＣＰのセッションが設立され、サブフローｓｆ１２，ｓｆ２２が設立され、携帯端末１００Ａ及びサーバ１００Ｂの間においてマルチパスで通信可能となる。
【００８２】
ＴＣＰ通信部１５４Ａ，１５４Ｂは、設立されたサブフローｓｆ１２を介して、ＡＭＱＰに係るデータ（ＡＭＱＰデータ）を通信する（Ｓ３５）。ＴＣＰ通信部１５５Ａ，１５５Ｂは、設立されたサブフローｓｆ２２を介して、ＡＭＱＰデータを通信する（Ｓ３６）。
【００８３】
ＡＭＱＰデータには、例えば、サブスクリプション情報、コールバック情報が含まれる。サブスクリプション情報は、サブフローの情報（例えば自装置の識別情報、他装置の識別情報、サブフローに係る自装置側のＩＰアドレスの情報、サブフローに係る他装置側のＩＰアドレスの情報）やコールバック関数の条件の情報などが含まれる。コールバック情報は、コールバック関数に係る情報である。コールバック関数は、各種イベントの発生時（例えば、携帯端末１００Ａやサーバ２００に転送すべきデータが発生した時）に、サーバ１００Ｂが携帯端末１００Ａへデータを送るための関数である。サブスクリプション情報及びコールバック情報をサーバ１００Ｂのメモリ１０２へ登録しておくことで、イベント発生時にサーバ１００Ｂから携帯端末１００Ａへデータを送信可能である。
【００８４】
携帯端末１００Ａとサーバ１００Ｂとの間で送信すべきＡＭＱＰデータが無くなると、携帯端末１００Ａでは、ＴＣＰ通信部１５４Ａは、ＭＰＴＣＰ制御部１５３Ａの制御により、ポートとしての通信Ｉ／Ｆ１０４Ａを閉じ（ｐｏｒｔ  ｃｌｏｓｅ）、通信Ｉ／Ｆ１０４Ｂを開じる（ｐｏｒｔ  ｃｌｏｓｅ）よう要求する（Ｓ３７）。
【００８５】
サーバ１００Ｂでは、ＴＣＰ通信部１５４Ｂは、ｐｏｒｔ  ｃｌｏｓｅ要求を受信する。ＴＣＰ通信部１５４Ｂは、ＭＰＴＣＰ制御部１５３Ｂの制御により、ポートとしての通信Ｉ／Ｆ１０４Ｂを閉じ、ｐｏｒｔ  ｃｌｏｓｅ要求に対するＡＣＫを返信する（Ｓ３８）。これにより、ＭＰＴＣＰ制御部１５３Ａ，１５３Ｂは、ＡＭＱＰのサブフローｓｆ１２を切断する。
【００８６】
同様に、携帯端末１００Ａでは、ＴＣＰ通信部１５５Ａは、ＭＰＴＣＰ制御部１５３Ａの制御により、ポートとしての通信Ｉ／Ｆ１０６Ａを閉じ（ｐｏｒｔ  ｃｌｏｓｅ）、通信Ｉ／Ｆ１０６Ｂを閉じる（ｐｏｒｔ  ｃｌｏｓｅ）よう要求し、サブフローの切断を要求する（Ｓ３９）。
【００８７】
サーバ１００Ｂでは、ＴＣＰ通信部１５５Ｂは、ｐｏｒｔ  ｃｌｏｓｅ要求及びサブフローの切断要求を受信する。ＴＣＰ通信部１５５Ｂは、ＭＰＴＣＰ制御部１５３Ｂの制御により、ポートとしての通信Ｉ／Ｆ１０６Ｂを閉じ、ｐｏｒｔ  ｃｌｏｓｅ要求に対するＡＣＫを返信する（Ｓ４０）。これにより、ＭＰＴＣＰ制御部１５３Ａ，１５３Ｂは、ＡＭＱＰのサブフローｓｆ２２を切断する。
【００８８】
ここで、ＡＭＱＰデータの通信中又は通信後に、携帯端末１００Ａが無線ＬＡＮの通信圏外に移動したことに起因して、サブフローｓｆ２１が切断され、その後無線ＬＡＮ通信が不可であるとする（Ｓ４１）。
【００８９】
Ｓ４１の後、サーバ１００Ｂにおいて、キューにメッセージが蓄積された状態で、アプリケーションに係るイベントが発生したとする。この場合、アプリケーション制御部１５１Ｂは，メモリ１２０に保持されたサブスクリプション情報及びコールバック情報を基に、サブフローｓｆ２１を介して、蓄積されたメッセージを送信するべく、ｐｏｒｔ  ｏｐｅｎ要求をＩＰアドレス「ＸＸ」に対して送信する（Ｓ４２）。
【００９０】
携帯端末１００Ａでは、無線ＬＡＮ通信の通信圏外に所在するために、ＩＰアドレス「ＸＸ」に送信されたｐｏｒｔ  ｏｐｅｎ要求を受信することができない。従って、携帯端末１００Ａは、ｐｏｒｔ  ｏｐｅｎ要求に対して応答できない（Ｓ４３）。
【００９１】
つまり、サブフローに係るポートとしての通信Ｉ／Ｆが一旦閉じられた後に、携帯端末１００Ａが無線ＬＡＮ通信の圏外に移動すると、サーバ１００Ｂは、ＡＰＩ１５２Ｂを備えない場合、ＡＭＱＰデータを携帯端末１００Ａへ送信したい場合でも、携帯端末１００Ａ側の通信Ｉ／Ｆを開放（ｐｏｒｔ  ｏｐｅｎ）できない。従って、サーバ１００Ｂは、キューに積まれたデータを携帯端末１００Ａへ転送できない。
【００９２】
図７（Ａ）〜（Ｃ）は、ＡＰＩ１５２を備える通信システム１０がＭＰＴＣＰに従ってＡＭＱＰを実行する際の動作例を示すフローチャートである。図７（Ａ）は、ＭＰＴＣＰ側の動作例を示す。図７（Ｂ）は、アプリケーション側のＡＰＩ１５２のサブフロー監視に係る動作例を示す。図７（Ｃ）は、アプリケーション側の通信系に係る動作例を示す。
【００９３】
図７（Ａ）〜（Ｃ）では、図６と同様に、携帯端末１００Ａにおいて、通信Ｉ／Ｆ１０４Ａの通信方式が無線ＬＡＮ通信の方式であり、通信Ｉ／Ｆ１０６Ａの通信方式が無線ＷＡＮの通信の方式であることを想定する。通信Ｉ／Ｆ１０４Ａは、ＩＰアドレス「ＸＸ」を用い、通信Ｉ／Ｆ１０６Ａは、ＩＰアドレス「ＹＹ」を用いる。また、サーバ１００Ｂにおいて、通信Ｉ／Ｆ１０４Ｂの通信方式が無線ＬＡＮ通信の方式であり、通信Ｉ／Ｆ１０６Ｂの通信方式が無線ＷＡＮの通信の方式であることを想定する。通信Ｉ／Ｆ１０４Ｂは、ＩＰアドレス「Ｘ’Ｘ’」を用い、通信Ｉ／Ｆ１０６Ｂは、ＩＰアドレス「Ｙ’Ｙ’」を用いる。
【００９４】
図７（Ａ）では、まず、携帯端末１００Ａの入力デバイス（不図示）がアプリケーションを実行するためのユーザからの入力操作を受け付けると、アプリケーション制御部１５１Ａが、アプリケーションの実行を開始する。
【００９５】
ＭＰＴＣＰ側では、アプリケーションの実行開始に伴い、ＭＰＴＣＰ制御部１５３Ａ，１５３Ｂは、ＡＭＱＰに係るセッションの設立を開始する。この際、ＭＰＴＣＰ制御部１５３Ａ，１５３Ｂは、無線ＬＡＮを用いて、ＩＰアドレス「ＸＸ」，「Ｘ’Ｘ’」を用いて、サブフローｓｆ１２を設立する（Ｓ５１）。
【００９６】
続いて、ＭＰＴＣＰ制御部１５３Ａ，１５３Ｂは、ＭＰＴＣＰに従って、ＡＭＱＰに係るサブフローｓｆ２２を設立する（Ｓ５２）。この際、ＭＰＴＣＰ制御部１５３Ａ，１５３Ｂは、無線ＷＡＮを用いて、ＩＰアドレス「ＹＹ」，「Ｙ’Ｙ’」を用いて、サブフローｓｆ２２を設立する。
【００９７】
ＭＰＴＣＰ制御部１５３Ａ，１５３Ｂは、ＡＰＩ１５２Ａ，１５２Ｂへ、サブフロー情報を登録する（Ｓ５３）。このサブフロー情報は、携帯端末１００Ａとサーバ１００Ｂとの間で設立されたＭＰＴＣＰセッションの各サブフローに係る情報（例えば、通信Ｉ／Ｆ部１０４Ａ，１０４Ｂ，１０６Ａ，１０６ＢのＩＰアドレスの情報）を含む。例えば、サブフロー情報は、サブフローｓｆ１２に用いるＩＰアドレス「ＸＸ」，「Ｘ’Ｘ’」と、サブフローｓｆ２２に用いるＩＰアドレス「ＹＹ」，「Ｙ’Ｙ’」と、を含む。各サブフローに用いられる各ＩＰアドレス情報は、対応付けて保持される。
【００９８】
尚、ＭＰＴＣＰ制御部１５３Ａ，１５３Ｂは、他にサブフローが生成された場合、このサブフローに係るサブフロー情報を、同様に、ＡＰＩ１５２Ａ，１５２Ｂに登録する。また、いずれかのサブフローが削除された場合（例えば無線ＬＡＮが通信圏外となり、サブフローが切断された場合）、このサブフローに係るサブフロー情報を、ＡＰＩ１５２Ａ，１５２Ｂから削除する。
【００９９】
図７（Ｂ）では、アプリケーション制御部１５１Ａ，１５１Ｂは、ＡＰＩ１５２Ａ，１５２Ｂを参照し、サブフロー情報を監視する（Ｓ５４）。
【０１００】
そして、アプリケーション制御部１５１Ａ，１５１Ｂは、ＡＰＩ１５２Ａ，１５２Ｂのサブフロー情報が更新されているか否かを判定する（Ｓ５５）。
【０１０１】
例えば、携帯端末１００Ａが無線ＬＡＮの通信圏外になると、ＭＰＴＣＰによりサブフローｓｆ１２が切断される。切断されたサブフローｓｆ１２に係るＩＰアドレスの情報は、ＡＰＩ１５２Ａ，１５２Ｂから削除される。また、例えば、携帯端末１００Ａが新たに無線ＬＡＮの通信圏内となると、ＭＰＴＣＰによりサブフローｓｆ３２（不図示）が追加される。追加されたサブフローｓｆ３２に係るＩＰアドレスの情報は、ＡＰＩ１５２Ａ，１５２Ｂに登録される。
【０１０２】
アプリケーション制御部１５１Ａ，１５１Ｂは、ＡＰＩ１５２Ａ，１５２Ｂのサブフロー情報が更新されていた場合、アプリケーションが有するサブフロー情報（例えばアプリケーションが通信先として認識するＩＰアドレスの情報）を更新する（Ｓ５６）。アプリケーションが有するサブフロー情報は、例えば、アプリケーションプログラムのパラメータの情報として含まれ得る。
【０１０３】
例えば、Ｓ５３において、サブフロー情報として、サブフローｓｆ２２に用いるＩＰアドレス「ＹＹ」，「Ｙ’Ｙ’」が、ＡＰＩ１５２Ａ，１５２Ｂに保持されている。アプリケーション制御部１５１Ａ，１５１Ｂは、変更前にサブフローｓｆ１２に係るＩＰアドレス「ＸＸ」，「Ｘ’Ｘ’」を通信先として指定していた場合、ＡＰＩ１５２Ａ，１５２Ｂのサブフロー情報を参照することで、ＩＰアドレスとして「ＸＸ」，「Ｘ’Ｘ’」ではなく「ＹＹ」，「Ｙ’Ｙ’」が使用可能であることを認識する。そこで、アプリケーション制御部１５１Ａ，１５１Ｂは、変更後のサブフローｓｆ２２に係るＩＰアドレス「ＹＹ」，「Ｙ’Ｙ’」を通信先とするよう、アプリケーションを更新する。
【０１０４】
図７（Ｃ）では、アプリケーション制御部１５１Ａ，１５１Ｂは、ＡＭＱＰに係るデータ通信の可否チェックを実施する（Ｓ５７）。尚、図７（Ｃ）の開始時には、ＡＰＩ１５２Ｂが保持するサブフロー情報には、更新後のサブフロー情報に係る「ＹＹ」，「Ｙ’Ｙ’」が登録されている。また、アプリケーションが有するサブフロー情報には、通信先としてＩＰアドレス「ＸＸ」，「Ｘ’Ｘ’」が登録されている。
【０１０５】
アプリケーション制御部１５１Ｂは、アプリケーションの実行中に、通信先からの応答が無いか否かを判定する（Ｓ５８）。通信先の応答が無い要因としては、例えば無線ＬＡＮの通信圏外となったことが考えられる。
【０１０６】
通信先からの応答が無い場合、アプリケーション制御部１５１Ｂは、ＡＰＩ１５２に保持されたサブフロー情報を参照する（Ｓ５９）。前述のように、ＡＰＩ１５２Ｂの更新後のサブフロー情報には、例えば、サブフローｓｆ２２に用いるＩＰアドレス「ＹＹ」，「Ｙ’Ｙ’」が含まれる。
【０１０７】
アプリケーション制御部１５１Ｂは、アプリケーションが有するサブフローに係るＩＰアドレスを、ＡＰＩ１５２Ｂに保持されたサブフロー情報に含まれる他のＩＰアドレスで置換することで、通信先からの応答を取得可能か否かを判定する（Ｓ６０）。例えば、アプリケーション制御部１５１Ａ，１５１Ｂは、通信先のＩＰアドレス「ＸＸ」，「Ｘ’Ｘ’」を「ＹＹ」，「Ｙ’Ｙ’」に置換することで、通信先においてデータを取得可能か否かを判定する。
【０１０８】
ＩＰアドレスの置換により通信先において応答を取得可能な場合、アプリケーション制御部１５１Ｂは、アプリケーションに係るデータ（ＡＭＱＰデータ）の送信宛先を、ＡＰＩ１５２Ｂを参照して更新する。具体的には、アプリケーション制御部１５１Ｂは、アプリケーションに係るデータの送信宛先を、ＩＰアドレス「ＸＸ」，「Ｘ’Ｘ’」から「ＹＹ」，「Ｙ’Ｙ’」に書き換える（Ｓ６１）。アプリケーションに係るデータは、例えばｐｏｒｔ  ｏｐｅｎの指示を含む。
【０１０９】
Ｓ５６又はＳ６１によりアプリケーションが有するサブフロー情報（ここではアプリケーションに係る送信宛先の情報）が更新されると、アプリケーション制御部１５１Ｂは、更新されたサブフロー情報を用いて、ＡＭＱＰデータを通信する。つまり、図６のＳ４２のように、サーバ１００Ｂが、ＡＭＱＰデータ（例えばＰｏｒｔ  Ｏｐｅｎ要求）を送信する際、アプリケーション制御部１５１Ｂは、更新後のサブフロー情報のＩＰアドレス「ＹＹ」，「Ｙ’Ｙ’」のサブフローｓｆ２２を介して、携帯端末１００Ａへ送信することになる。これにより、サーバ１００Ｂは、携帯端末１００ＡにおいてＡＭＱＰデータを受信させることができる。よって、サーバ１００Ｂは、携帯端末１００ＡからＡＭＱＰデータに対するＡＣＫデータを受信でき、ＡＭＱＰデータの通信が停止することを抑制できる。
【０１１０】
このように、ＭＰＴＣＰに従ってＡＭＱＰを実行する場合、通信装置１００は、ＡＰＩ１５２を参照することで、アプリケーションが有するサブフローの情報を更新できる。通信装置１００は、更新されたサブフロー情報を用いて通信することで、送信先において受信不可となりエラーが発生することを抑制でき、通信効率を向上できる。また、通信装置１００は、ＭＰＴＣＰにより複数のサブフローを用いて通信できるので、各サブフローで通信可能な場合には、通信を高速化できる。
【０１１１】
［効果等］
このように、通信システム１０では、アプリケーションが、ＭＰＴＣＰの第１のサブフローが消失した場合、ＡＰＩを参照することで、アプリケーションが用いるべきアドレスが遷移したことを把握できる。そのため、例えばＦＴＰやＡＭＱＰで発生し得る制御ポートとアドレスポートとの不整合による異常検出によるいずれかのサブフローの切断を、アプリケーション側で異常と取り扱わないように除外できる。従って、通信システム１０は、ＭＰＴＣＰセッションの切断を抑制し、通信を継続できる。
【０１１２】
また、ＡＭＱＰ等のコールバック関数を使用するアプリケーションの場合、ＭＰＴＣＰの第１のサブフロー消失後に、ＭＰＴＣＰセッション及びサブフローの設立時に指定したコールバック関数の呼び出し宛先が消失し、不具合が生じることを抑制できる。具体的には、ＭＰＴＣＰが、第１のサブフロー消失時に、第１のサブフローの消失の旨をＡＰＩを介してアプリケーションに通知する。これにより、通信システム１０は、アプリケーションが、ＭＰＴＣＰセッション及びサブフローを再設立し、コールバック関数が呼び出される前に、制御ポートとアドレスポートとの整合を図り、不具合の発生を抑制できる。
【０１１３】
このように、本実施形態の通信装置１００は、ＭＰＴＣＰに従って他の通信装置１００と通信する。通信装置１００は、アプリケーションを制御するアプリケーション制御部１５１と、ＭＰＴＣＰの少なくとも２つのサブフローを制御するＭＰＴＣＰ制御部１５３と、ＩＰアドレスを用いてサブフローを介してデータを通信する少なくとも２つのＴＣＰ通信部１５４，１５５と、サブフローに用いられるＩＰアドレスを含むサブフローの情報を保持するＡＰＩ１５２と、を備える。ＡＰＩ１５２は、サブフローが変更された場合、変更後のサブフローの情報を保持する。アプリケーション制御部１５１は、変更後のサブフローの情報を参照する。
【０１１４】
通信装置１００は、例えば携帯端末１００Ａ又はサーバ１００Ｂである。他の通信装置１００は、サーバ１００Ｂ又は携帯端末１００Ａである。ＴＣＰ通信部１５４，１５５は、通信部の一例である。ＭＰＴＣＰ制御部１５３は、通信制御部の一例である。ＡＰＩ１５２は、情報保持部の一例である。
【０１１５】
これにより、通信装置１００は、アプリケーション制御部１５１が、ＡＰＩ１５２を介してＭＰＴＣＰのサブフローの情報を参照することで、変更（例えば追加又は削除）されたサブフローの情報を認識できる。よって、変更されたサブフローの情報を用いて通信元又は通信先のＩＰアドレスを認識でき、アプリケーションの実行における通信エラーを抑制できる。また、通信装置１００は、ＭＰＴＣＰに従った通信が可能であるので、通信を高速化できる。
【０１１６】
また、アプリケーション制御部１５１は、ＡＰＩ１５２が保持する変更後のサブフローの情報を参照し、アプリケーションが有するサブフローの情報を更新してもよい。
【０１１７】
これにより、通信装置１００は、ＭＰＴＣＰのサブフローの情報の変更に応じて、アプリケーションに係るサブフローの情報を変更できる。よって、通信装置１００は、通信装置１００が置かれた周囲の通信環境や電波状況に合わせて、アプリケーションがＭＰＴＣＰに従って通信できる。
【０１１８】
また、ＴＣＰ通信部１５４又は１５５は、転送要求を受信してもよい。アプリケーション制御部１５１は、転送要求の送信元のＩＰアドレスがアプリケーションが有するサブフローの情報に係るＩＰアドレスと異なる場合、転送要求の送信元のＩＰアドレスをセキュリティチェックの対象から除外してもよい。
【０１１９】
これにより、通信装置１００は、一部のＴＣＰ通信部による通信が切断された場合には、このＴＣＰ通信部に係るＩＰアドレスを、アプリケーションが有するセキュリティチェックの対象から除外できる。この場合、通信装置１００は、転送要求を受けたＩＰアドレスを用いたサブフローを介して、通信を継続できる。よって、受信側としての通信装置１００は、アプリケーションに係るエラーの発生を抑制でき、通信効率を向上できる。
【０１２０】
また、アプリケーション制御部１５１は、他の通信装置１００へ第１のデータを送信し、他の通信装置１００から第１のデータに対する第２のデータを受信しなかった場合、アプリケーションに係る第１のデータの送信先を、ＡＰＩ１５２が保持するサブフローの情報に係る複数のＩＰアドレスのうち、第２のデータを受信されなかったサブフローに係るＩＰアドレスを除くいずれかのＩＰアドレスに変更してもよい。第１のデータは、例えばｐｏｒｔ  ｏｐｅｎ要求である。第２のデータは、ｐｏｒｔ  ｏｐｅｎ要求に応じたＡＣＫである。
【０１２１】
これにより、通信装置１００は、ＡＰＩ１５２を参照して、設立した複数のサブフローのうち、データ通信に失敗したサブフロー以外のサブフローを用いて、アプリケーションに係るデータを送信できる。よって、アプリケーションに係るデータ通信が停止することを抑制でき、ＭＰＴＣＰの通信効率を向上できる。
【０１２２】
また、アプリケーション制御部１５１は、ＦＴＰのアプリケーションを実行してもよい。これにより、通信装置１００は、一部のサブフローが切断された場合でも、ＦＴＰに係るエラーメッセージ「Ｂａｄ  ＩＰ  Ｃｏｎｎｅｃｔｉｎｇ」が発生することを抑制でき、ＭＰＴＣＰに係る通信の継続性を向上でき、通信効率を向上できる。
【０１２３】
また、アプリケーション制御部１５１は、ＡＭＱＰのアプリケーションを実行してもよい。これにより、通信装置１００は、一部のサブフローが切断された場合でも、他のサブフローを用いて、キューに蓄積されたＡＭＱＰデータを他の通信装置１００へ送信できる。よって、通信装置１００は、ＭＰＴＣＰに係る通信の継続性を向上でき、通信効率を向上できる。
【０１２４】
また、ＡＰＩ１５２は、ＯＳＩ参照モデルの階層においてアプリケーション制御部１５１とＭＰＴＣＰ制御部１５３との間に位置してもよい。
【０１２５】
これにより、アプリケーション制御部１５１とＭＰＴＣＰ制御部１５３とは、直接に相互にデータを参照できないが、ＡＰＩ１５２を介してデータを参照できる。よって、アプリケーション制御部１５１及びＭＰＴＣＰ制御部１５３の一方は、アプリケーション制御部１５１及びＭＰＴＣＰ制御部１５３の他方のデータを加味して、アプリケーション制御や通信制御を実施できる。
【０１２６】
（他の実施形態）
以上のように、本開示における技術の例示として、第１の実施形態を説明した。しかし、本開示における技術は、これに限定されず、変更、置き換え、付加、省略などを行った実施形態にも適用できる。
【０１２７】
第１の実施形態では、通信装置１００が、ＡＰＩ１５２を備えることを例示したが、ＡＰＩ１５２の代わりに他の機能を備えるようにしてもよい。例えば、図８に示すように、通信装置１００では、アプリケーション制御部１５１α（１５１αＡ，１５１αＢ）が、ＭＰＴＣＰに係る情報を監視する機能（ＭＰＴＣＰ情報監視機能）を有するようにしてもよい。つまり、ＡＰＩ１５２が有するＭＰＴＣＰに係るサブフローの情報をアプリケーション側に実装し、アプリケーション制御部１５１が、ＭＰＴＣＰの状態管理に係る情報（サブフローの情報等）を参照可能にしてもよい。この場合、通信装置１００がＡＰＩ１５２を有する場合と比較すると、アプリケーション側に対する対応で済むので、処理負荷を軽減できる。
【０１２８】
第１の実施形態では、通信システム１０がＦＴＰを実施するデータ通信システムやＡＭＱＰを実施するロボット制御システム以外のシステムでもよい。例えば、通信システム１０は、コンテンツ配信システムでもよいし、監視システムでもよい。
【０１２９】
第１の実施形態では、通信装置１００が２つの通信方式に従って通信可能であることを例示したが、２つ以上の通信方式に従って通信可能でもよい。
【０１３０】
第１の実施形態では、ＣＰＵ１０１を一例として説明したが、ＣＰＵ１０１以外のプロセッサでもよい。プロセッサは、物理的にどのように構成されてもよい。また、プログラム可能なプロセッサを用いれば、プログラムの変更により処理内容を変更できるので、プロセッサの設計の自由度を高めることができる。プロセッサは、１つの半導体チップで構成してもよいし、物理的に複数の半導体チップで構成してもよい。複数の半導体チップで構成する場合、第１の実施形態の各制御をそれぞれ別の半導体チップで実現してもよい。この場合、それらの複数の半導体チップで１つのプロセッサを構成すると考えることができる。また、プロセッサは、半導体チップと別の機能を有する部材（コンデンサ等）で構成してもよい。また、プロセッサが有する機能とそれ以外の機能とを実現するように、１つの半導体チップを構成してもよい。
【産業上の利用可能性】
【０１３１】
本開示は、変更されたＴＣＰサブフローの情報をアプリケーションが認識でき、アプリケーションの実行における通信エラーを抑制できる通信装置及び通信方法等に有用である。
【符号の説明】
【０１３２】
１０  通信システム
１００  通信装置
１００Ａ  携帯端末
１００Ｂ  サーバ
１０１，１０１Ａ，１０１Ｂ  ＣＰＵ
１０２，１０２Ａ，１０２Ｂ  メモリ
１０３，１０３Ａ，１０３Ｂ  通信制御Ｉ／Ｆ
１０４，１０４Ａ，１０４Ｂ  通信Ｉ／Ｆ
１０５，１０５Ａ，１０５Ｂ  通信制御Ｉ／Ｆ
１０６，１０６Ａ，１０６Ｂ  通信Ｉ／Ｆ
１５１，１５１Ａ，１５１Ｂ，１５１α，１５１αＡ，１５１αＢ  アプリケーション制御部
１５２，１５２Ａ，１５２Ｂ  ＡＰＩ
１５３，１５３Ａ，１５３Ｂ  ＭＰＴＣＰ制御部
１５４，１５４Ａ，１５４Ｂ  ＴＣＰ通信部
１５５，１５５Ａ，１５５Ｂ  ＴＣＰ通信部
ＮＴ  ネットワーク
【図１】
2018041269.tif 000003
【図２】
2018041269.tif 000004
【図３】
2018041269.tif 000005
【図４】
2018041269.tif 000006
【図５】
2018041269.tif 000007
【図６】
2018041269.tif 000008
【図７】
2018041269.tif 000009
【図８】
2018041269.tif 000010