(57)【要約】【課題】ＤＴＮを利用した通信においてデータの転送性能の低下を抑制する。【解決手段】本発明の一観点によれば、通信装置が、途絶耐性ネットワークのプロトコルに基づいて、送信対象のデータから、第１のサイズの第１のバンドルを生成し、第１のバンドルを送信先の装置に送信し、第１のバンドルの送信に基づいて、送信先の装置とのコネクションの回線状態を判定し、途絶耐性ネットワークのプロトコルに基づいて、送信対象のデータのうち未送信のデータから、コネクションの回線状態に応じた第２のサイズの第２のバンドルを生成し、第２のバンドルを送信先の装置に送信する。【選択図】図７
2019165317.tif 000002
【特許請求の範囲】
【請求項１】
途絶耐性ネットワークのプロトコルに基づいて、送信対象のデータから、第１のサイズの第１のバンドルを生成し、
前記第１のバンドルを送信先に送信し、
前記第１のバンドルの送信に基づいて、前記送信先とのコネクションの回線状態を判定し、
前記途絶耐性ネットワークのプロトコルに基づいて、前記送信対象のデータのうち未送信のデータから、前記コネクションの回線状態に応じた第２のサイズの第２のバンドルを生成し、
前記第２のバンドルを前記送信先に送信する、
処理を実行する制御部を有することを特徴とする通信装置。
【請求項２】
前記第１のバンドルを生成する処理は、前記送信対象のデータに基づいて、それぞれが前記第１のサイズの第１の複数のバンドルを生成する処理を含み、
前記第２のバンドルを生成する処理は、前記第１の複数のバンドルのうち未送信のバンドルに基づいて、それぞれが前記第２のサイズの第２の複数のバンドルを生成し、
前記第２のバンドルを送信する処理は、前記第２の複数のバンドルに含まれるバンドルを順に前記送信先に送信する処理である、
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記回線状態は、回線速度であって、
前記制御部は、前記第１のバンドルの前記第１のサイズと、前記第１のバンドルの送信から前記送信先からの返信を受信するまでの時間とに基づいて、前記回線速度を算出する、
ことを特徴とする請求項１に記載の通信装置。
【請求項４】
前記制御部は、算出した前記回線速度に基づいて、前記第１のサイズが適正か否かを判定する、
ことを特徴とする請求項３に記載の通信装置。
【請求項５】
前記制御部は、前記第２の複数のバンドルに含まれるバンドルを順に前記送信先に送信する際、前記通信先とのコネクションが切断したことを検知すると、前記第２の複数のバンドルのうち未送信のバンドルに基づいて、それぞれが前記第２のサイズより小さい第３のサイズの第３の複数のバンドルを生成し、新たなコネクションの確立を検知すると、前記第３の複数のバンドルに含まれるバンドルを順に前記送信先の装置に送信する、
ことを特徴とする請求項２に記載の通信装置。
【請求項６】
前記第２の複数のバンドルはバッファに格納されており、
前記第３の複数のバンドルを生成する処理は、前記送信先に送信するために前記第２の複数のバンドルのうち前記バッファより抽出した第３のバンドルであって、前記切断により送信が完了していない前記第３のバンドルを、前記第３の複数のバンドルを生成する前に前記バッファに戻す処理を含む、
ことを特徴とする請求項５に記載の通信装置。
【請求項７】
前記制御部は、前記第３の複数のバンドルに含まれるバンドルを順に前記送信先に送信する際、前記第３の複数のバンドルのうち送信が完了した第３のバンドルに基づいて、前記新たなコネクションの回線状態を判定し、前記第３の複数のバンドルのうち未送信のバンドルに基づいて、それぞれが前記新たなコネクションの回線状態に応じた第４のサイズの第４の複数のバンドルを生成し、
前記第４の複数のバンドルに含まれるバンドルを順に前記送信先の装置に送信する、
ことを特徴とする請求項５に記載の通信装置。
【請求項８】
途絶耐性ネットワークのプロトコルに基づいて、送信対象のデータから、第１のサイズの第１のバンドルを生成し、
前記第１のバンドルを送信先に送信し、
前記第１のバンドルの送信に基づいて、前記送信先とのコネクションの回線状態を判定し、
前記途絶耐性ネットワークのプロトコルに基づいて、前記送信対象のデータのうち未送信のデータから、前記コネクションの回線状態に応じた第２のサイズの第２のバンドルを生成し、
前記第２のバンドルを前記送信先に送信する、
処理をコンピュータが実行することを特徴とする通信方法。
【請求項９】
途絶耐性ネットワークのプロトコルに基づいて、送信対象のデータから、第１のサイズの第１のバンドルを生成し、
前記第１のバンドルを送信先に送信し、
前記第１のバンドルの送信に基づいて、前記送信先とのコネクションの回線状態を判定し、
前記途絶耐性ネットワークのプロトコルに基づいて、前記送信対象のデータのうち未送信のデータから、前記コネクションの回線状態に応じた第２のサイズの第２のバンドルを生成し、
前記第２のバンドルを前記送信先に送信する、
処理をコンピュータに実行させることを特徴とする通信プログラム。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信技術に関する。
【背景技術】
【０００２】
近年、無線アクセスポイントが普及に伴い、スマートフォンなどの端末は、無線アクセスポイントと通信キャリアの広域無線接続を切り替えながら通信を行う手段を取り得る。この様な場合、通信は、端末の接続数や周囲の電波状況に影響され、通信品質が場所や時間によりばらつきが生じ、断続的になる可能性がある。
【０００３】
通信が断続的な環境下において、データ通信を可能とする技術として、途絶耐性ネットワーク（以下、ＤＴＮ（Ｄｉｓｒｕｐｔｉｏｎ  Ｔｏｌｅｒａｎｔ  Ｎｅｔｗｏｒｋｉｎｇ）と表記する。）が知られている。ＤＴＮは、一般的に、遅延耐性ネットワークと呼ばれる場合もある。ＤＴＮは、ＩＥＴＦ（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）により標準化が進められ、例えばＲＦＣ（Ｒｅｑｕｅｓｔ  Ｆｏｒ  Ｃｏｍｍｅｎｔｓ）５０５０に、ＤＴＮに適用するプロトコルが規定されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１７９７４９号公報
【特許文献２】特許第３１７７５２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来技術において、ＤＴＮを利用した通信では、転送するデータを所定のサイズに分割したバンドル単位で宛先に送信処理が行われることもあるが、この所定のサイズは予め定められた固定値であることが一般的である。そのため、データの送信処理が開始される前にサイズは決定されており、例えば通信のコネクションが一度切断され、新たにコネクションが確立された場合であっても、バンドルのサイズが調整されることはなく、データの転送性能が損なわれる場合がある。
【０００６】
一の側面では、本発明は、ＤＴＮを利用した通信においてデータの転送性能の低下を抑制することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一観点によれば、通信装置が、途絶耐性ネットワークのプロトコルに基づいて、送信対象のデータから、第１のサイズの第１のバンドルを生成し、第１のバンドルを送信先に送信し、第１のバンドルの送信に基づいて、送信先とのコネクションの回線状態を判定し、途絶耐性ネットワークのプロトコルに基づいて、送信対象のデータのうち未送信のデータから、コネクションの回線状態に応じた第２のサイズの第２のバンドルを生成し、第２のバンドルを送信先に送信する。
【発明の効果】
【０００８】
一の側面において、本発明は、ＤＴＮを利用した通信においてデータの転送性能の低下を抑制できる。
【図面の簡単な説明】
【０００９】
【図１】図１は、通信システムの構成例を示す図である。
【図２】図２は、バンドルのフォーマットを示す図である。
【図３】図３は、端末のハードウェア構成例を示す図である。
【図４】図４は、端末の機能構成の一例を示す図である。
【図５】図５は、サーバ装置のハードウェア構成例を示す図である。
【図６】図６は、サーバ装置の機能構成の一例を示す図である。
【図７】図７は、端末の通信処理手順の一例を示すフローチャートである。
【図８】図８は、サーバ装置の通信処理手順の一例を示すフローチャートである。
【図９】図９は、端末の通信処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、図面を参照して実施形態について詳細に説明する。実施形態における各処理は適宜変更することが可能である。なお、実施形態を説明するための全図において、同一部分には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１１】
以下、実施形態について説明する。図１は、実施形態の通信システムの構成例を示す図である。実施形態の通信システムは、端末１０、サーバ装置１１を含み、それぞれはネットワーク１２を介して接続されている。
【００１２】
本実施形態では、端末１０とサーバ装置１１との間の通信を例に挙げて説明するが、これに限られるものではなく、通信機能を有する装置であれば適用可能である。
【００１３】
端末１０は、例えば、スマートフォンやパーソナルコンピュータであって、通信機能を有する通信装置である。端末１０は、例えば、ＤＴＮのバンドルプロトコルに基づく通信を行う機能を有する。端末１０は、更に、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のドライバによって提供されるＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）の通信機能を有しても良い。この場合、端末１０は、通信先とのコネクションの状態に応じて、ＤＴＮのバンドルプロトコルに基づく通信とＴＣＰ／ＩＰに基づく通信とを切り替え制御しても良い。端末１０は、例えば、通信先とのコネクションの保持時間が短い場合は、ＤＴＮのバンドルプロトコルに基づく通信を優先しても良い。
【００１４】
サーバ装置１１は、例えば、インターネットに接続され、端末１０と通信することにより所定のサービスを提供する通信装置である。サーバ装置１１は、例えば、ＤＴＮのバンドルプロトコルに基づく通信を行う機能を有する。サーバ装置１１は、更に、ＯＳのドライバによって提供されるＴＣＰ／ＩＰの通信機能を有しても良い。この場合、サーバ装置１１は、通信先とのコネクションの状態に応じて、ＤＴＮのバンドルプロトコルに基づく通信とＴＣＰ／ＩＰに基づく通信とを切り替え制御しても良い。サーバ装置１１は、例えば、通信先とのコネクションの保持時間が短い場合は、ＤＴＮのバンドルプロトコルに基づく通信を優先しても良い。
【００１５】
なお、上述したＲＦＣ５０５０において、ＤＴＮのバンドルプロトコルはトランスポート層のプロトコル（例えば、ＴＣＰに相当）およびネットワーク層のプロトコル（例えば、ＩＰに相当）の上位層のプロトコルとして規定されている。そのため、ＤＴＮのバンドルプロトコルに基づく通信は、ＴＣＰ／ＩＰを下位層として利用するものであり、通信プロトコルとして単独で機能するものではない。
【００１６】
ＤＴＮのバンドルプロトコルに基づく通信では、送信対象のデータを所定のサイズに分割することができ、分割したデータ片にヘッダを付加してバンドルを生成し、バンドル単位で送信が行われる。図２には、バンドルのフォーマットが示されている。バンドルはプライマリバンドルブロック２０及びバンドルペイロードブロック２１を含む。プライマリバンドルブロック２０には、送信元や宛先に関する情報、及び、バンドルの削除までの時間を示すライフタイムなどが含まれる。バンドルペイロードブロック２１には、データを収容するペイロードが含まれる。なお、バンドル内の各項目についてはＲＦＣ５０５０に規定されている。
【００１７】
送信対象のデータが複数のバンドルに分割された場合、送信側において、複数のバンドルに対して同一のＣｒｅａｔｉｏｎ  Ｔｉｍｅｓｔａｍｐ及びＣｒｅａｔｉｏｎ  Ｔｉｍｅｓｔａｍｐ  ｓｅｑｕｅｎｃｅ  ｎｕｍｂｅｒを設定する。また送信側において、送信対象のデータの全体のサイズをＴｏｔａｌ  ａｐｐｌｉｃａｔｉｏｎ  ｄａｔａ  ｕｎｉｔ  ｌｅｎｇｔｈに設定し、複数のバンドルのそれぞれにおいてデータ位置（順序）を示すＦｒａｇｍｅｎｔ  ｏｆｆｓｅｔを設定する。これにより、複数のバンドルを受信した受信側が、元の送信対象のデータを正しく組み立てることが可能となる。
【００１８】
なお、端末１０において動作する一般的なクライアントアプリケーションやサーバ装置１１において動作する一般的なサーバアプリケーションの通信に、ＤＴＮのバンドルプロトコルを適用するために、端末１０やサーバ装置１１にプロキシ機能を持たせても良い。プロキシ機能は、クライアントアプリケーションやサーバアプリケーションの通信を、ＴＣＰのソケット通信からＤＴＮのバンドルプロトコルの通信にプロトコル変換する処理を実行可能にする。
【００１９】
より具体的には、プロキシ機能は、クライアントアプリケーションやサーバアプリケーションから通信先に送信されるパケットの宛先を変更し、端末１０やサーバ装置１１内のローカルなループバックコネクションを確立する。ループバックにより受信されるパケットに基づいて、ＤＴＮのバンドルプロトコルの通信にて送信されるバンドルが生成される。
【００２０】
上述したように、ＤＴＮのバンドルプロトコルにおいては、転送するデータを所定のサイズに分割したバンドル単位で宛先に送信処理が行われることもあるが、この所定のサイズは予め定められた固定値であるのが一般的である。データの送信処理が開始される前にサイズは決定されており、例えば、通信のコネクションが一度切断され、新たにコネクションが確立された場合であっても、バンドルのサイズが調整されることはなく、データの転送性能が損なわれる場合がある。
【００２１】
そもそもＤＴＮは、惑星間インターネットのように大きな通信遅延や通信途絶が常に発生し得る環境を想定して開発されたプロトコルである。そのような過酷な環境においては、いくら遅延が発生してもデータが送信先に転送されることが重要であるため、バンドルのサイズを予め小さく設定しておけば良く、固定値であっても問題ないという側面がある。
【００２２】
一方、近年ではＤＴＮを地球上の無線ネットワーク（例えば、山間部や離島等）へ適用することも検討されている。このような環境においては、日常生活における比較的緊急のデータも送信され得ると考えられることから、惑星間インターネットとは異なり、データ通信の効率もある程度確保されることが望ましい。
【００２３】
しかしながら、仮にバンドルのサイズを比較的小さい固定値とすると、無線回線の品質が比較的良好なために１回の送受信で転送可能なデータが、多数回の送受信によって転送されるため、通信効率が損なわれる可能性がある。他方、仮にバンドルのサイズを比較的大きい固定値とすると、データが細分化されず送受信の失敗が繰り返されることになり、通信効率が損なわれる可能性がある。さらに、バンドルのサイズが固定値であると、無線回線の品質が変化した場合に追従することができない。
【００２４】
上記の問題は、発明者による鋭意の検討の結果、新たに見出されたものである。以下ではこの問題を解決する実施形態を説明する。
【００２５】
図３は、実施形態に係る端末１０のハードウェア構成例を示す図である。端末１０は、制御装置３１、記憶装置３２、ネットワーク接続装置３３を有し、これらは互いに信号の入出力が可能な様にシステムバス３４を介して接続されている。
【００２６】
制御装置３１は、端末１０を制御する装置である。制御装置３１は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の電子回路が用いられても良い。制御装置３１は、記憶装置３２に格納されているＯＳ、各種プログラムに基づいて、各種演算や各ハードウェア構成部とのデータ入出力等、端末１０の動作を制御して、各種処理を実行する。プログラムの実行中に必要となる各種情報等は、例えば記憶装置３２から取得することができる。なお、制御装置３１が行う処理の一部を専用のハードウェアを用いて実現しても良い。制御装置３１は、実施形態に係る通信プログラムに基づき、実施形態に係る通信処理を実行する。
【００２７】
記憶装置３２は、例えば、実施形態に係る通信プログラムを記憶する。記憶装置３２は、主記憶装置及び補助記憶装置を含んでも良い。主記憶装置は、例えば、制御装置３１に実行させるＯＳやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、主記憶装置は、制御装置３１による処理に必要な各種データを記憶する。なお、主記憶装置としては、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、フラッシュメモリ等を用いても良い。
【００２８】
補助記憶装置は、制御装置３１からの指示に基づいて、記憶された各種情報の読み出しや、情報の書き込みを行うことができる。補助記憶装置としては、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等のストレージ等を用いても良い。補助記憶装置は、実施形態に係る通信処理において使用する情報や処理の結果を記憶しても良い。また、主記憶装置と補助記憶装置は、互いの機能を担い合っても良い。
【００２９】
ネットワーク接続装置３３は、例えば、無線ＬＡＮモジュールであって、ネットワーク上のアクセスポイントとリンクアップする機能を有する。
【００３０】
図４は、実施形態に係る端末１０の機能構成の一例を示す図である。端末１０は、制御部４１、記憶部４２、ネットワーク接続部４３を機能として有する。制御装置３１が、記憶装置３２に記憶されたプログラムを読み込み、端末１０に含まれるハードウェアを利用して各種処理を実行することにより、制御部４１、記憶部４２、ネットワーク接続部４３の機能が実現される。
【００３１】
以下、端末１０の具体的な動作を例示する。端末１０の制御部４１は、ＤＴＮのバンドルプロトコルに基づいて、送信対象のデータを所定のフラグメントサイズに応じて分割して生成したバンドルを通信先に送信する。制御部４１は、通信先とコネクションが確立している場合、データの送信からＡＣＫ（ｐｏｓｉｔｉｖｅ  ＡＣＫｎｏｗｌｅｄｇｅｍｅｎｔ）の受信までのＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）と送信したデータのサイズとに基づいて、回線速度を算出する。制御部４１は、算出した回線速度に応じてバンドル生成のフラグメントサイズを決定する。制御部４１は、記憶部４２が保有するバンドルバッファにあるバンドルから、決定したフラグメントサイズに応じたフラグメントにより新たなバンドルを生成し、生成した新たなバンドルを、ネットワーク接続部４３を用いて送信する。
【００３２】
端末１０の制御部４１は、例えば、送信したバンドルのバンドルサイズが１００ＫＢｙｔｅで、バンドルの送信からＡＣＫの受信までのＲＴＴが２０ｍ秒である場合、回線速度が４０Ｍｂｐｓ（ｂｉｔｓ  ｐｅｒ  ｓｅｃｏｎｄ）であると算出する。
【００３３】
端末１０の制御部４１は、例えば、回線速度が４０Ｍｂｐｓの場合、基準時間（１秒間）に送信できるデータ量である５Ｍｂｙｔｅをフラグメントサイズと決定し、バンドルサイズが５Ｍｂｙｔｅのバンドルを生成しても良い。より具体的には、端末１０の制御部４１は、バンドルサイズが１０Ｍｂｙｔｅのバンドルを送信している際に通信先とのコネクションが断絶し、新たに確立されたコネクションの回線速度が４０Ｍｂｐｓと算出された場合、フラグメントサイズを５Ｍｂｙｔｅに変更し、バンドルサイズが５Ｍｂｙｔｅのバンドルを生成し、生成したバンドルを送信する。
【００３４】
なお、基準時間は、１秒と例示したがこれに限定されるものではなく、例えば、分割によるオーバヘッドを抑制したい場合は基準時間を長く設定しても良く、コネクションの断絶が原因となって再送されるデータ量を少なくしたい場合は基準時間を短く設定しても良い。
【００３５】
更に、基準時間は幅を有しても良く、例えば基準時間が０．５秒間〜１秒間の場合、回線速度が４０Ｍｂｐｓであれば、フラグメントサイズは２．５Ｍｂｙｔｅ〜５Ｍｂｙｔｅと決定されても良い。この場合、端末１０の制御部４１は、元々のフラグメントサイズが３Ｍｂｙｔｅの場合フラグメントサイズを変更しなくても良く、元々のフラグメントサイズが１Ｍｂｙｔｅの場合フラグメントサイズを２．５Ｍｂｙｔｅに変更しても良く、元々のフラグメントサイズが１０Ｍｂｙｔｅの場合フラグメントサイズを５Ｍｂｙｔｅに変更しても良い。
【００３６】
図５は、実施形態に係るサーバ装置１１のハードウェア構成例を示す図である。サーバ装置１１は、制御装置５１、記憶装置５２、ネットワーク接続装置５３を有し、これらは互いに信号の入出力が可能な様にシステムバス５４を介して接続されている。
【００３７】
制御装置５１は、サーバ装置１１を制御する装置である。制御装置５１は、例えば、ＣＰＵ、ＭＰＵ等の電子回路が用いられても良い。制御装置５１は、記憶装置５２に格納されているＯＳ、各種プログラムに基づいて、各種演算や各ハードウェア構成部とのデータ入出力等、サーバ装置１１の動作を制御して、各種処理を実行する。プログラムの実行中に必要となる各種情報等は、例えば記憶装置５２から取得することができる。なお、制御装置５１が行う処理の一部を専用のハードウェアを用いて実現しても良い。制御装置５１は、実施形態に係る通信プログラムに基づき、実施形態に係る通信処理を実行する。
【００３８】
記憶装置５２は、例えば、実施形態に係る通信プログラムを記憶する。記憶装置５２は、主記憶装置及び補助記憶装置を含んでも良い。主記憶装置は、例えば、制御装置５１に実行させるＯＳやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、主記憶装置は、制御装置５１による処理に必要な各種データを記憶する。なお、主記憶装置としては、例えば、ＲＯＭやＲＡＭ等を用いても良い。
【００３９】
補助記憶装置は、制御装置５１からの指示に基づいて、記憶された各種情報の読み出しや、情報の書き込みを行うことができる。補助記憶装置としては、例えば、ＨＤＤ、ＳＳＤ等のストレージ等を用いても良い。補助記憶装置は、実施形態に係る通信処理において使用する情報や処理の結果を記憶しても良い。また、主記憶装置と補助記憶装置は、互いの機能を担い合っても良い。
【００４０】
ネットワーク接続装置５３は、例えば、通信ポートである。
【００４１】
図６は、実施形態に係るサーバ装置１１の機能構成の一例を示す図である。サーバ装置１１は、制御部６１、記憶部６２、ネットワーク接続部６３を機能として有する。制御装置５１が、記憶装置５２に記憶されたプログラムを読み込み、サーバ装置１１に含まれるハードウェアを利用して各種処理を実行することにより、制御部６１、記憶部６２、ネットワーク接続部６３の機能が実現される。
【００４２】
ここで、サーバ装置１１の具体的な動作を例示する。サーバ装置１１の制御部６１は、ＤＴＮのバンドルプロトコルに基づいて、ネットワーク接続部６３を介して受信したバンドルを記憶部６２が保有するバンドルバッファに格納し、全てのバンドルを受信すると、全てのバンドルを結合することにより、元の送信対象のデータを再構成する。
【００４３】
上述では、端末１０は送信時の処理を、サーバ装置１１は受信時の処理を例示したが、これに限られるものではなく、端末１０及びサーバ装置１１のそれぞれが、同様に送信時の処理と受信時の処理の両方を実行可能であっても良い。
【００４４】
次に、実施形態に係る端末１０の通信処理手順の一例について説明する。図７は、端末１０の通信処理手順の一例を示すフローチャートである。
【００４５】
例えば、端末１０の制御部４１は、自装置内で動作しているクライアントアプリケーションから送信対象のデータを取得する（Ｓ１０１）。制御部４１は、取得した送信対象のデータを、所定のフラグメントサイズで分割しバンドルを生成する（Ｓ１０２）。制御部４１は、生成したバンドルを記憶部４２のバンドルバッファに格納する（Ｓ１０３）。制御部４１は、通信先とのコネクションが確立されているか状態を判定する（Ｓ１０４）。
【００４６】
通信先とのコネクションが確立していない場合（Ｓ１０４Ｎｏ）、制御部４１は、バンドルの送信を待機する。待機中、制御部４１は、定期的にＳ１０４の処理を実行しても良い。
【００４７】
通信先とのコネクションが確立している場合（Ｓ１０４Ｙｅｓ）、バンドルバッファよりバンドルを抽出し、ネットワーク接続部４３を介してバンドルを送信する（Ｓ１０５）。
【００４８】
制御部４１は、バンドルの送信とＡＣＫの受信とに応じて、コネクションの回線速度を算出する（Ｓ１０６）。制御部４１は、算出した回線速度と現在のバンドルのサイズとを比較し、バンドルのサイズが適正か判定する（Ｓ１０７）。
【００４９】
バンドルのサイズが適正である場合（Ｓ１０７Ｙｅｓ）、制御部４１は、バンドルバッファに残存するバンドルの送信処理を続行する（Ｓ１０８）。
【００５０】
バンドルのサイズが適正でない場合（Ｓ１０７Ｎｏ）、制御部４１は、バンドルバッファに残存するバンドルから、算出した回線速度の応じたフラグメントサイズにより分割された新たなバンドルを生成し、新たなバンドルをバンドルバッファに格納する（Ｓ１０９）。制御部４１は、生成した新たなバンドルを、ネットワーク接続部４３を介して送信する（Ｓ１１０）。制御部４１は、バンドルバッファに残存する送信対象の全てのバンドルの送信が完了したか判定する（Ｓ１１１）。制御部４１は、Ｓ１０８又はＳ１１０の処理を実行中に、所定の時間が経過するとＳ１１１の処理に進むようにしても良い。
【００５１】
送信対象の全てのバンドルの送信が完了していない場合（Ｓ１１１Ｎｏ）、制御部４１は、Ｓ１０７の処理に戻る。送信対象の全てのバンドルの送信が完了した場合（Ｓ１１１Ｙｅｓ）、制御部４１は、通信処理を終了する。
【００５２】
なお、Ｓ１１１がＮｏの場合はＳ１０７の処理に戻るフローを説明したが、これに限られるものではなく、例えば、制御部４１は、Ｓ１１１がＮｏの場合に、Ｓ１０８又はＳ１１０のそれぞれの処理に戻るようにしても良い。更に、制御部４１は、Ｓ１０８又はＳ１１０の処理の実行中に、定期的にＳ１０７の処理に戻るようにしても良い。
【００５３】
次に、実施形態に係るサーバ装置１１の通信処理手順の一例について説明する。図８は、サーバ装置１１の通信処理手順の一例を示すフローチャートである。
【００５４】
例えば、サーバ装置１１の制御部６１は、ネットワーク接続部６３を介してバンドルを受信する（Ｓ２０１）。制御部６１は、受信したバンドルに対するＡＣＫを返信する（Ｓ２０２）。制御部６１は、受信したバンドルを記憶部６２のバンドルバッファに格納する（Ｓ２０３）。制御部６１は、受信対象のデータを構成する全てのバンドルを受信完了したか判定する（Ｓ２０４）。
【００５５】
全てのバンドルを受信し終えていない場合（Ｓ２０４Ｎｏ）、制御部６１は、Ｓ２０１の処理に戻る。
【００５６】
全てのバンドルを受信し終えた場合（Ｓ２０４Ｙｅｓ）、制御部６１は、バンドルバッファに格納されたバンドルに基づいて、受信対象のデータを再構成し、再構成したデータを記憶部６２に記憶する（Ｓ２０５）。制御部６１は、通信処理を終了する。再構成されたデータは、サーバ装置１１内で動作するサーバアプリケーションに利用されても良い。
【００５７】
本実施形態によれば、端末１０は、通信先とのコネクションの回線速度に応じてバンドルのサイズを調整して、バンドルを送信するため、転送性能を損なうことを抑制することができる。従って、端末１０は、現在のバンドルのサイズでバンドルが送信可能な状態であっても、回線速度に応じて、バンドルのサイズが適正であるかを判定し、適正でない場合は、バンドルのサイズを調整する。
【００５８】
端末１０は、例えば、現在のバンドルのサイズが通信回線に対して大きい場合は、フラグメントサイズを変更し、現在のバンドルよりサイズの小さいバンドルを新たに生成し、送信する。端末１０は、例えば、現在のバンドルのサイズが通信回線に対して小さい場合は、フラグメントサイズを変更し、現在のバンドルよりサイズの大きいバンドルを新たに生成し、送信する。
【００５９】
本実施形態では、端末１０は、１回の回線速度の算出に基づいて、バンドルのサイズの適正を判定したが、これに限られるものではなく、端末１０は、所定の時間間隔で複数回回線速度を算出し、算出した複数の回線速度の平均値に基づいて、バンドルのサイズが適正か判定しても良い。
【００６０】
また、本実施形態では、バッファには、予め送信対象のデータを所定のフラグメントサイズに基づいて分割生成したバンドルを格納する例を挙げたがこれに限られるものではなく、端末１０は、送信対象のデータを分割することなくバッファに格納し、送信のタイミングで回線速度に応じたフラグメントサイズでデータを切り出し、バンドルを生成して送信しても良い。この場合、端末１０は、例えば、バンドルを送信する度に回線速度を算出し、バンドルのサイズを調整しても良い。
【００６１】
また、端末１０は、送信対象のデータを送信完了した後、クライアントアプリケーションから新たな送信対象のデータを受け付けた場合、送信が完了した送信対象のデータの送信時に使用していたフラグメントサイズをそのまま維持して、新たな送信対象のデータのフラグメントを行っても良い。この場合、端末１０は、送信が完了した送信対象のデータの最後のバンドルのサイズと、新たな送信対象のデータの最初のバンドルとを同じサイズにしても良い。
【００６２】
更に、端末１０は、上記フラグメントサイズを維持する処理を、送信対象のデータの送信完了から新たな送信対象のデータを受け付けるまでの時間が閾値以下である場合や、新たな送信対象のデータを受け付けるまで通信先とのコネクションが維持されていた場合に実行しても良い。
【００６３】
（変形例）
次に上記実施形態の変形例について説明する。変形例の説明において、実施形態と同一の部分に関しては同一の符号を付し、説明を省略する。変形例では、ＤＴＮのバンドルプロトコルに基づく通信の実行中に、コネクションが切断された場合を一例としてあげる。
【００６４】
端末１０の制御部４１は、例えば、通信先とのコネクションの切断により、バンドルバッファから抽出したバンドルを送信できなかった場合、取り出したバンドルをバンドルバッファに戻す場合もある。この場合、制御装置３１は、戻したバンドルを含むバンドルバッファに残存するバンドルを再結合し、次に通信先とのコネクションが確立された際に、回線速度に応じたフラグメントサイズのバンドルに再度分割しても良い。
【００６５】
端末１０の制御部４１は、例えば通信先とのコネクションが切断し、新たにコネクションが確立された場合、前回のフラグメントサイズより小さいフラグメントサイズを採用して、バンドルを生成し、通信先に送信しても良い。制御部４１は、送信に成功すると、回線速度を算出し、算出した回線速度に応じたフラグメントサイズを決定し、バンドルのサイズを調整しても良い。
【００６６】
これは、新たにコネクションが確立されたタイミングでは、端末１０は回線速度を判定できないため、フラグメントサイズを小さく設定することにより、確立されたコネクションに対してバンドルのサイズが大きすぎることによる送信失敗を防ぐ目的である。端末１０は、回線速度が算出できた段階で、フラグメントサイズを調整すれば、転送効率も損なうことを抑制できる。
【００６７】
変形例に係る端末１０の通信処理手順の一例について説明する。図９は、端末１０の通信処理手順の一例を示すフローチャートである。なお、Ｓ１０５までは上述の実施形態と同様のため、説明を省略する。
【００６８】
例えば、端末１０の制御部４１は、バンドルの送信（Ｓ１０５）中に、バンドルバッファからバンドルを抽出した後、送信を実行する際に通信先とのコネクションの切断を検知する（Ｓ３０１）。制御部４１は、メモリに保持された送信不可のバンドルをバンドルバッファに戻す（Ｓ３０２）。制御部４１は、バンドルバッファに残存するバンドルを再結合し、再結合したデータをコネクションが切断される前よりも小さいフラグメントサイズにより分割し、新たなバンドルを生成し、バンドルバッファに格納する（Ｓ３０３）。制御部４１は、通信先との新たなコネクションが確立されているか状態を判定する（Ｓ３０４）。
【００６９】
通信先との新たなコネクションが確立していない場合（Ｓ３０４Ｎｏ）、制御部４１は、バンドルの送信を待機する。待機中、制御部４１は、定期的にＳ３０４の処理を実行しても良い。
【００７０】
通信先との新たなコネクションが確立している場合（Ｓ３０４Ｙｅｓ）、バンドルバッファよりバンドルを抽出し、ネットワーク接続部４３を介してバンドルを送信する（Ｓ３０５）。
【００７１】
制御部４１は、バンドルの送信に応じて、コネクションの回線速度を算出する（Ｓ３０６）。制御部４１は、算出した回線速度と現在のバンドルのサイズとを比較し、バンドルのサイズが適正か判定する（Ｓ３０７）。
【００７２】
バンドルのサイズが適正である場合（Ｓ３０７Ｙｅｓ）、制御部４１は、バンドルバッファに残存するバンドルの送信処理を続行する（Ｓ３０８）。
【００７３】
バンドルのサイズが適正でない場合（Ｓ３０７Ｎｏ）、制御部４１は、バンドルバッファに残存するバンドルから、算出した回線速度の応じたフラグメントサイズにより分割された新たなバンドルを生成し、新たなバンドルをバンドルバッファの格納する（Ｓ３０９）。制御部４１は、生成した新たなバンドルを、ネットワーク接続部４３を介して送信する（Ｓ３１０）。制御部４１は、バンドルバッファに残存する送信対象の全てのバンドルの送信が完了したか判定する（Ｓ３１１）。制御部４１は、Ｓ３０８又はＳ３１０の処理を実行中に、所定の時間が経過するとＳ３１１の処理に進むようにしても良い。
【００７４】
送信対象の全てのバンドルの送信が完了していない場合（Ｓ３１１Ｎｏ）、制御部４１は、Ｓ３０７の処理に戻る。送信対象の全てのバンドルの送信が完了した場合（Ｓ３１１Ｙｅｓ）、制御部４１は、通信処理を終了する。以上では、コネクションの切断が１回起こることを前提として説明したが、これに限られるものではなく、制御部４１は、どこのステップを実行中であっても、コネクションの切断を検知する度に、Ｓ３０１の処理に戻って、通信処理を実行しても良い。
【００７５】
変形例において、Ｓ３１１がＮｏの場合はＳ３０７の処理に戻るフローを説明したが、これに限られるものではなく、例えば、制御部４１は、Ｓ３１１がＮｏの場合に、Ｓ３０８又はＳ３１０のそれぞれの処理に戻るようにしても良い。更に、制御部４１は、Ｓ３０８又はＳ３１０の処理の実行中に、定期的にＳ３０７の処理に戻るようにしても良い。
【００７６】
以上、変形例によれば、例えば、コネクションの切断が発生し新たなコネクションが確立された場合であっても、新たなコネクションの回線速度に応じてフラグメントのサイズの調整が行われるため、データの転送性能を損なうことを抑制できる。
【００７７】
また、制御部４１は、コネクションの切断が起こった際に、送信不可となったバンドルをバンドルバッファに戻すため、送信不可となったバンドルを含めたデータから、フラグメントサイズを調整し、新たなバンドルを生成することができる。
【００７８】
制御部４１は、例えば、バンドルバッファから送信するバンドルを抽出した際、抽出したバンドルをバンドルバッファに保持し続け、当該バンドルの送信に対する通信先からのＡＣＫを受信したタイミングで、バンドルバッファから当該バンドルを削除しても良い。この場合、制御部４１は、コネクションの切断が起こった際に、送信不可となったバンドルをバンドルバッファに戻す必要はなく、バンドルバッファに残存するバンドルを再結合し、フラグメントサイズを調整し、新たなバンドルを生成しても良い。
【００７９】
本発明は、上述した実施形態や変形例の構成及び手順に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜処理方法の変更、組み換え等が可能である。
【符号の説明】
【００８０】
１０：端末
１１：サーバ装置
１２：ネットワーク
２０：プライマリバンドルブロック
２１：バンドルペイロードブロック
３１：制御装置
３２：記憶装置
３３：ネットワーク接続装置
３４：システムバス
４１：制御部
４２：記憶部
４３：ネットワーク接続部
５１：制御装置
５２：記憶装置
５３：ネットワーク接続装置
５４：システムバス
６１：制御部
６２：記憶部
６３：ネットワーク接続部
【図１】
2019165317.tif 000003
【図２】
2019165317.tif 000004
【図３】
2019165317.tif 000005
【図４】
2019165317.tif 000006
【図５】
2019165317.tif 000007
【図６】
2019165317.tif 000008
【図７】
2019165317.tif 000009
【図８】
2019165317.tif 000010
【図９】
2019165317.tif 000011