(57)【要約】  【課題】データ通信において、実際のスループットが、スループットの理論的な上限値と同程度の通信速度になっているデータフローのスループットを改善し得る携帯端末を提供すること。  【解決手段】  携帯端末は、複数のデータフローそれぞれに係る通信パケットを一時的に蓄えるバッファを有し、一のデータフローについて、送信先の機器からの受信確認なしに送信できる最大の送信可能データ量を示す情報と、該データフローにおけるＲＴＴ（Round Trip Time）とを用いて、単位時間当たりのデータ転送量の理論的な上限値を示す理論スループットを算出し、実際に送信した単位時間当たりのデータ転送量を示す実スループットを、算出した理論スループットと比較し、同程度のスループットに達していると判断した場合には、該データフローに係る通信パケットをバッファから優先的に送出する。【選択図】図８
2015154320.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して、少なくとも一以上の機器との間で、複数のデータフローを含むデータ通信を行う携帯端末であって、
前記複数のデータフローそれぞれに係る通信パケットを一時的に蓄えるバッファと、
複数のデータフローのうちの、一のデータフローにおけるＲＴＴ（Round Trip Time）を計測する計測部と、
前記ＲＴＴと、送信先の機器からの受信確認なしに送信できる最大の送信可能データ量を示す情報とを用いて、前記ネットワークを介してデータを送信する際の単位時間当たりのデータ転送量の理論的な上限値を示す理論スループットを算出する算出部と、
前記一のデータフローにおいて、実際に送信した単位時間当たりのデータ転送量を示す実スループットを測定する測定部と、
前記実スループットが、前記理論スループットと同程度のスループットに達していることを示す予め定められた基準を満たす場合に、前記一のデータフローの優先度が他のデータフローの優先度よりも高くなるように設定する優先度設定部と、
前記優先度が設定された通信パケットを生成して前記バッファに出力する出力部と、
前記バッファに蓄えられた通信パケットのうち、優先度の高い通信パケットを優先的に送出する送出部とを備える
ことを特徴とする携帯端末。
【請求項２】
前記優先度設定部は、前記理論スループットに対する前記実スループットの比が、予め定められた値以上の場合に、前記基準を満たす場合と判断する
ことを特徴とする請求項１記載の携帯端末。
【請求項３】
前記優先度設定部は、前記理論スループットと前記実スループットとの差の絶対値が、予め定められた値以下の場合に、前記基準を満たす場合と判断する
ことを特徴とする請求項１記載の携帯端末。
【請求項４】
前記優先度設定部は、前記複数のデータフローのうち、２以上のデータフローの実スループットが前記基準を満たす場合には、予め定められたデータフローごとの重要度に基づいて、前記基準を満たすデータフローのうちから最も重要度の高い１つのデータフローを選択し、選択されたデータフローにおける優先度が他のデータフローの優先度よりも高くなるように設定する
ことを特徴とする請求項１記載の携帯端末。
【請求項５】
前記優先度設定部は、前記複数のデータフローのうち、２以上のデータフローの実スループットが前記基準を満たす場合には、前記基準を満たすどのデータフローに対しても例外的に他のデータフローの優先度より高くなるように設定する処理を行わない
ことを特徴とする請求項１記載の携帯端末。
【請求項６】
更に、データフローに係る情報をユーザに提示する提示部と、
ユーザからの入力を受け付ける受付部とを備え、
前記提示部は、前記複数のデータフローのうち、２以上のデータフローの実スループットが前記基準を満たす場合には、
前記基準を満たすデータフローそれぞれを識別する情報をユーザに提示し、
前記受付部は、前記提示部が提示した前記情報に係るユーザ入力を受け付け、
前記優先度設定部は、前記ユーザ入力に基づいて、優先度を高くするデータフローを特定し、当該データフローにおける優先度を他のデータフローの優先度よりも高く設定する
ことを特徴とする請求項１記載の携帯端末。
【請求項７】
前記データ通信は、ＴＣＰ（Transmission Control Protocol）に基づくデータ通信であり、
前記送信可能データ量を示す情報は、前記一のデータフローに係るウィンドウサイズである
ことを特徴とする請求項１記載の携帯端末。
【請求項８】
前記複数のデータフローのそれぞれは、送信先の機器のＩＰアドレスで識別されるデータフローである
ことを特徴とする請求項７記載の携帯端末。
【請求項９】
前記複数のデータフローのそれぞれは、前記データ通信に係るポート番号で識別されるデータフローである
ことを特徴とする請求項７記載の携帯端末。
【請求項１０】
前記複数のデータフローのそれぞれは、当該データフローに含まれるデータを出力するアプリケーションで識別されるデータフローである
ことを特徴とする請求項７記載の携帯端末。
【請求項１１】
ネットワークを介して、少なくとも一以上の機器との間で、複数のデータフローを含むデータ通信を行う携帯端末の制御方法であって、
前記複数のデータフローそれぞれに係る通信パケットを一時的に蓄えるバッファと、
複数のデータフローのうちの、一のデータフローにおけるＲＴＴ（Round Trip Time）を計測するステップと、
前記ＲＴＴと、送信先の機器からの受信確認なしに送信できる最大の送信可能データ量を示す情報とを用いて、前記ネットワークを介してデータを送信する際の単位時間当たりのデータ転送量の理論的な上限値を示す理論スループットを算出するステップと、
前記一のデータフローにおいて、実際に送信した単位時間当たりのデータ転送量を示す実スループットを測定するステップと、
前記実スループットが、前記理論スループットと同程度のスループットに達していることを示す予め定められた基準を満たす場合に、前記一のデータフローの優先度が他のデータフローの優先度よりも高くなるように設定するステップと、
前記優先度が設定された通信パケットを生成して前記バッファに出力する出力ステップと、
前記バッファに蓄えられた通信パケットのうち、優先度の高い通信パケットを優先的に送出する送出ステップとを備える
ことを特徴とする制御方法。
【請求項１２】
ネットワークを介して、少なくとも一以上の機器との間で、複数のデータフローを含むデータ通信を行う携帯端末の制御プログラムであって、
前記複数のデータフローそれぞれに係る通信パケットを一時的に蓄えるバッファと、
複数のデータフローのうちの、一のデータフローにおけるＲＴＴ（Round Trip Time）を計測する計測ステップと、
前記ＲＴＴと、送信先の機器からの受信確認なしに送信できる最大の送信可能データ量を示す情報とを用いて、前記ネットワークを介してデータを送信する際の単位時間当たりのデータ転送量の理論的な上限値を示す理論スループットを算出する算出ステップと、
前記一のデータフローにおいて、実際に送信した単位時間当たりのデータ転送量を示す実スループットを測定する測定ステップと、
前記実スループットが、前記理論スループットと同程度のスループットに達していることを示す予め定められた基準を満たす場合に、前記一のデータフローの優先度が他のデータフローの優先度よりも高くなるように設定する優先度設定ステップと、
前記優先度が設定された通信パケットを生成して前記バッファに出力する出力ステップと、
前記バッファに蓄えられた通信パケットのうち、優先度の高い通信パケットを優先的に送出する送出ステップとを
前記携帯端末に実行させることを特徴とする制御プログラム。
【請求項１３】
ネットワークを介して、少なくとも一以上の機器との間で、複数のデータフローを含むデータ通信を行う携帯端末の制御プログラムを記録しているコンピュータ読取可能な記録媒体であって、
前記複数のデータフローそれぞれに係る通信パケットを一時的に蓄えるバッファと、
複数のデータフローのうちの、一のデータフローにおけるＲＴＴ（Round Trip Time）を計測する計測ステップと、
前記ＲＴＴと、送信先の機器からの受信確認なしに送信できる最大の送信可能データ量を示す情報とを用いて、前記ネットワークを介してデータを送信する際の単位時間当たりのデータ転送量の理論的な上限値を示す理論スループットを算出する算出ステップと、
前記一のデータフローにおいて、実際に送信した単位時間当たりのデータ転送量を示す実スループットを測定する測定ステップと、
前記実スループットが、前記理論スループットと同程度のスループットに達していることを示す予め定められた基準を満たす場合に、前記一のデータフローの優先度が他のデータフローの優先度よりも高くなるように設定する優先度設定ステップと、
前記優先度が設定された通信パケットを生成して前記バッファに出力する出力ステップと、
前記バッファに蓄えられた通信パケットのうち、優先度の高い通信パケットを優先的に送出する送出ステップとを
前記携帯端末に実行させるための制御プログラムを記録している記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、携帯端末におけるネットワーク通信技術に関し、特にデータ転送に係る技術に関する。
【背景技術】
【０００２】
近年、ＬＴＥ（Long Term Evolution）などの高速なデータ通信を行い得る無線通信ネットワークが構築されつつあることに伴い、スマートフォンやタブレットのような携帯端末を用いた無線データ通信が広く利用されるようになってきた。このような高速なデータ通信を用いてネットワークに接続し、携帯端末単体でインターネット等を利用するだけではなく、１以上のＰＣ（Personal Computer）等の機器を、携帯端末の持つテザリング機能を用いて携帯端末と接続し、これら機器から携帯端末を介してインターネット等を利用することも行われている。
【０００３】
ところで、一般的に、無線通信を介したデータ通信では、有線通信のみで行うデータ通信に比べてデータの転送遅延が大きい。このため、従来、単位時間当たりのデータ転送量（以下、「スループット」と呼ぶ。）を改善させるための様々な工夫がなされている。
例えば、特許文献１には、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）で通信する際のＴＣＰウィンドウサイズに対して、送信パケットサイズを最適化する技術が開示されている。特許文献１に開示の技術では、複数の送信パケットの累積パケットサイズが、ＴＣＰウィンドウサイズに余りなく収まるように送信パケットサイズを決定する。これにより、受信確認のＡＣＫ（Acknowledgement）を送信先の機器から受信するまでに送信できるデータ量を最大化することができ、データ送信のスループットを改善することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−２３７８８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、ＴＣＰ／ＩＰにおけるスループットの理論的な上限値（以下、「理論スループット」と呼ぶ。）は、ＴＣＰウィンドウサイズと、ＲＴＴ（Round Trip Time）とによって決まり、ＴＣＰウィンドウサイズに比例し、ＲＴＴに反比例する。
実際のスループット（以下、「実スループット」と呼ぶ。）は、機器の処理能力、ネットワークの帯域や利用状態等様々な要因によって変動するが、これら機器の処理能力やネットワークの帯域等が十分に確保されているにも関わらず、実スループットが速くならない場合がある。実スループットが、理論スループットと同程度のスループットに達している場合がこれに相当する（以下、このような状態を「頭打ちの状態」と呼ぶ。）。実スループットは、理論スループットよりも速くなり得ないので、このような場合に送信パケットサイズを最適化しても、実スループットを改善させることができないという問題がある。
【０００６】
本発明は、係る問題に鑑みてなされたものであり、頭打ちになっているデータ通信のスループットを改善し得る携帯端末を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明の一態様に係る携帯端末は、ネットワークを介して、少なくとも一以上の機器との間で、複数のデータフローを含むデータ通信を行う携帯端末であって、前記複数のデータフローそれぞれに係る通信パケットを一時的に蓄えるバッファと、複数のデータフローのうちの、一のデータフローにおけるＲＴＴを計測する計測部と、前記ＲＴＴと、送信先の機器からの受信確認なしに送信できる最大の送信可能データ量を示す情報とを用いて、前記ネットワークを介してデータを送信する際の単位時間当たりのデータ転送量の理論的な上限値を示す理論スループットを算出する算出部と、前記一のデータフローにおいて、実際に送信した単位時間当たりのデータ転送量を示す実スループットを測定する測定部と、前記実スループットが、前記理論スループットと同程度のスループットに達していることを示す予め定められた基準を満たす場合に、前記一のデータフローの優先度が他のデータフローの優先度よりも高くなるように設定する優先度設定部と、前記優先度が設定された通信パケットを生成して前記バッファに出力する出力部と、前記バッファに蓄えられた通信パケットのうち、優先度の高い通信パケットを優先的に送出する送出部とを備えることを特徴とする。
【発明の効果】
【０００８】
上述の構成の携帯端末によると、ＲＴＴを短くすることができるので、理論スループットを大きくすることができ、その結果、頭打ちになっているデータ通信のスループットを改善し得る。
【図面の簡単な説明】
【０００９】
【図１】本発明に係る携帯端末１０を用いた通信システム１の概念図。
【図２】携帯端末１０の外観の概略図。
【図３】携帯端末１０の主要部の機能ブロック図。
【図４】ＴＣＰパケットのデータ構造。
【図５】ＩＰパケットのデータ構造。
【図６】ＰＣ２０とサーバ装置５０とのデータの送受信の概略を示すシーケンス図。
【図７】ＰＣ２０とサーバ装置５０とのＴＣＰウィンドウサイズを用いたデータの送受信の概略を示すシーケンス図。
【図８】携帯端末１０における処理のフローチャート。
【図９】携帯端末１０におけるスループットの算出及び比較処理のフローチャート。
【図１０】実施の形態２の携帯端末１０における処理のフローチャート。
【図１１】変形例の携帯端末１０における処理のフローチャート。
【図１２】優先度設定ためのユーザ入力を求める際に提示するＵＩ（ユーザインタフェース）の一例。
【図１３】優先度設定ためのユーザ入力を求める際に提示するＵＩのその他の一例。
【発明を実施するための形態】
【００１０】
＜１．実施の形態１＞
＜１．１  概要＞
本発明に係る携帯端末１０の一実施形態について説明する。
図１は、携帯端末１０を含む通信システム１の概略図である。
通信システム１は、携帯端末１０、ＰＣ（Personal Computer）２０、基地局３０、ネットワーク４０、及び、サーバ装置５０を含む構成である。
【００１１】
ＰＣ２０は、携帯端末１０の持つテザリング機能を利用することで、携帯端末１０と接続し、携帯端末１０を介してサーバ装置５０とのデータ通信を行う。
携帯端末１０は、無線通信回線を介して基地局３０と接続し、ＰＣ２０から受け取ったデータを、ネットワーク４０を介してサーバ装置５０に送信する。また、サーバ装置５０からのデータは、ネットワーク４０、基地局３０、携帯端末１０を介してＰＣ２０に送信される。なお、データ通信は、ＴＣＰ／ＩＰによる通信プロトコルによって行われる。
【００１２】
携帯端末１０は、ＰＣ２０から受信した通信パケットを一旦バッファに蓄え、通信パケットごとに定められた優先順位に従って出力する。また、携帯端末１０は、基地局３０から受信した通信パケットをＰＣ２０に出力する。
ところで、ＴＣＰ／ＩＰにおけるデータ通信において、ＰＣ２０からサーバ装置５０へ通信パケットを送信してから、その受信確認を示す応答をサーバ装置５０から受信するまでの時間はＲＴＴ（Round Trip Time）と呼ばれ、ネットワークの応答速度の指標となる。
【００１３】
スループットの理論的な最大値Ｓｍａｘは、ＴＣＰウィンドウサイズをＷ、ＲＴＴをＲとすると、Ｓｍａｘ＝Ｗ／Ｒで算出することができる。実際の単位時間当たりのデータ転送量、すなわち、実スループットは、ＰＣ２０とサーバ装置５０とのネットワーク経路上の距離、経路上で中継・転送する装置などの数、サーバ装置５０の処理能力、ネットワークの帯域、及びネットワークの利用状況等様々な要因に左右され、一般的に、実スループットが理論スループットと同程度に達することはまれである。
【００１４】
逆に、ネットワークの帯域が十分確保されているにも関わらず、実スループットが理論スループットと同程度に達している場合には、実スループットは、理論スループット以上には速くなり得ないため、これ以上の通信速度の向上は望めず、頭打ちの状態となる。このような状態になるのは、ネットワーク経路上において、通信パケットの送出に時間を要しており、そのためにＲＴＴが長くなっていることが考えられる。上述の式からも分かるように、ＴＣＰウィンドウサイズが同じ場合、ＲＴＴを短くすることができれば、理論スループットは大きくなり、頭打ちの状態は解消され、実スループットが向上し得る。
【００１５】
上記のように携帯端末１０は、通信パケットをバッファに一旦蓄え、既定の優先順に従って出力するが、このような頭打ちの状態のデータ通信に係る通信パケットをバッファから優先的に出力する。この処理により、通信パケットが携帯端末１０のバッファに留まっている時間を短縮でき、その結果、ＲＴＴを短くできる。従って、理論スループットが大きくなり、頭打ちの状態が改善され、実スループットが向上する。
【００１６】
＜１．２  構成＞
図２は、携帯端末１０の外観の概略図である。
携帯端末１０は、いわゆるスマートフォン型携帯通信端末である。
同図に示すように、携帯端末１０は、その筐体の主表面に、レシーバ（不図示）から出力される音声を筐体外部に伝えるためのレシーバ孔１５１と、筐体外部の音声をマイク（不図示）に伝えるためのマイク孔１５２とが形成され、更に、タッチパネル１５０の主表面が配置されている。また、筐体の主表面には、ユーザが携帯端末１０の操作の際に、タッチパネル１５０に表示されているカーソルを移動したり、表示物を選択したりするための操作ボタン群１５３が配置されている。
【００１７】
図３は、携帯端末１０の主要部の機能ブロック図である。
同図に示すように、携帯端末１０は、制御部１０１、取得部１０２、ＲＴＴ計測部１０３、算出部１０４、測定部１０５、タイマー１０６、出力部１０７、バッファ１０８、送出部１０９、通信部１１０、アンテナ１１１、受信部１１２、比較部１１３、優先度設定部１１４、テザリング部１１５、テザリング用アンテナ１１６、音声処理部１１７、表示部１１８、操作部１１９、記憶部１２０、及び、電源部１２１を含む構成である。
【００１８】
以下、携帯端末１０を構成するこれら構成要素について説明する。
（制御部１０１、記憶部１２０）
制御部１０１は、取得部１０２、ＲＴＴ計測部１０３、算出部１０４、測定部１０５、タイマー１０６、比較部１１３、優先度設定部１１４、出力部１０７、送出部１０９、通信部１１０、受信部１１２、テザリング部１１５、音声処理部１１７、表示部１１８、操作部１１９、及び電源部１２１を制御して、携帯端末１０に、主として、携帯端末制御機能、テザリング機能、スループット算出機能、スループット比較機能、優先順位設定機能、及び、送信パケット送出機能を実現させる機能を有する。
【００１９】
携帯端末制御機能は、従来の携帯端末が有する一般的な機能と同等な機能、例えば、通話機能、インターネットサイト閲覧機能、メール送受信機能、待ち受け機能、ユーザインタフェース制御機能、アプリケーション実行機能等を実現させる機能である。
テザリング機能は、ＰＣ２０との間で無線によるデータ通信を行い、携帯端末１０の無線通信機能を利用して、ＰＣ２０からのデータをネットワーク上のサーバ装置５０に送信し、サーバ装置５０からのデータをＰＣ２０に送信する機能である。テザリング機能は、テザリング部１１５、送出部１０９、受信部１１２、通信部１１０を制御して、テザリング部１１５で受信したＰＣ２０からのデータを、送出部１０９に通信部１１０を介して基地局３０に送信させ、通信部１１０を介して受信部１１２で受け取ったサーバ装置５０からのデータをテザリング部１１５に出力し、ＰＣ２０に送信する機能である。
【００２０】
スループット算出機能は、理論スループット算出機能と実スループット測定機能を含む機能である。理論スループット算出機能は、取得部１０２、ＲＴＴ計測部１０３、算出部１０４及びタイマー１０６を制御して、算出部１０４に、取得部１０２で取得したＴＣＰウィンドウサイズと、ＲＴＴ計測部１０３で計測したＲＴＴとを用いて理論スループットを算出させる機能である。実スループット測定機能は、測定部１０５とタイマー１０６とを制御して、測定部１０５に、ＰＣ２０からサーバ装置５０へ送信するデータの実スループットを測定させる機能である。
【００２１】
スループット比較機能は、比較部１１３を制御し、比較部１１３に、算出部１０４で算出した理論スループットと測定部１０５で測定した実スループットとを比較させて、実スループットが頭打ちになっているか否かを判定させる機能である。
優先順位設定機能は、優先度設定部１１４を制御し、優先度設定部１１４に、比較部１１３での比較結果に基づいてＰＣ２０からサーバ装置５０へ送信される通信パケットの優先度を決定させ、出力部１０７に出力させる機能である。
【００２２】
送信パケット送出機能は、送出部１０９を制御し、送出部１０９に、バッファ１０８に記憶されている通信パケットをその通信パケットの持つ優先度の高い順に通信部１１０に出力させる機能である。
なお、制御部１０１の機能は、例えば、携帯端末１０のＣＰＵ（Central Processing Unit）が、記憶部１２０に記憶されているプログラムを実行することで実現される。
【００２３】
記憶部１２０は、例えば、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、フラッシュメモリ等で構成される。記憶部１２０は、制御部１０１の動作を規定するプログラムと、通信パケットの実スループットが頭打ちになっているか否かの判断に用いる閾値とを記憶する。
（テザリング部１１５、テザリング用アンテナ１１６）
テザリング部１１５は、ＰＣ２０との間で無線によるデータ通信を行い、携帯端末１０の無線通信機能を利用して、ＰＣ２０からのデータをネットワーク上のサーバ装置５０に送信し、サーバ装置５０からのデータをＰＣ２０に送信する機能を有する。
【００２４】
テザリング用アンテナ１１６は、例えば、金属製のモノポールアンテナであり、携帯端末１０が、ＰＣ２０との間でテザリング機能による無線通信を行うために用いられる。
なお、テザリング部１１５の機能は、例えば、携帯端末１０のＣＰＵ（Central Processing Unit）が、記憶部１２０に記憶されているプログラムを実行することで実現される。
（出力部１０７、バッファ１０８、送出部１０９）
出力部１０７は、ＰＣ２０から出力されたサーバ装置５０に送信する通信パケットに対して、優先度設定部１１４が設定した優先度を付与してバッファ１０８に出力する機能を有する。
【００２５】
バッファ１０８は、例えばＲＡＭ等のメモリであり、ＰＣ２０から携帯端末１０に送信された通信パケットを一時的に記憶する機能を有する。
送出部１０９は、バッファ１０８に記憶されている通信パケットを、通信パケットに設定されている優先度に従って、優先度の高いものから順に通信部１１０に出力する機能を有する。
【００２６】
なお、出力部１０７、送出部１０９の機能は、携帯端末１０が有するＣＰＵが記憶部１２０に記憶するプログラムを実行することによって実現される。
（通信部１１０、アンテナ１１１）
通信部１１０は、通信用ＬＳＩ（Large Scale Integration）を含み、制御部１０１によって制御される。なお、この通信用ＬＳＩは、例えば、ＴＣＰ／ＩＰプロトコルでインターネット網を用いて外部のサーバとデータの送受信を行う機能を備えている。
【００２７】
通信部１１０は、アンテナ１１１を介して基地局３０と接続して、送出部１０９から出力された通信パケットをサーバ装置５０へ送信する機能を有する。また、ＰＣ２０から送信された通信パケットに対して、サーバ装置５０から送信された受信確認を示す通信パケットを受信部１１２に出力する機能を有する。
なお、通信部１１０の機能は、携帯端末１０が有するＣＰＵが記憶部１２０に記憶するプログラムを実行することによって実現される。
【００２８】
アンテナ１１１は、例えば、金属製のモノポールアンテナであり、通信用ＬＳＩに接続され、通信用ＬＳＩが行う通信に利用される。
（受信部１１２）
受信部１１２は、サーバ装置５０から通信パケットを受け取る機能を有する。
受信部１１２は、具体的には、例えば、通信部１１０が送出した、ＰＣ２０からサーバ装置５０宛ての通信パケットに対する受信確認を含む応答としての通信パケットをサーバ装置５０から受け取り、取得部１０２とＲＴＴ計測部１０３とに出力する。
【００２９】
なお、受信部１１２の機能は、携帯端末１０が有するＣＰＵが記憶部１２０に記憶するプログラムを実行することによって実現される。
（取得部１０２、ＲＴＴ計測部１０３、算出部１０４、タイマー１０６）
取得部１０２は、受信部１１２が受信したサーバ装置５０からの通信パケットのヘッダ部の情報からＴＣＰウィンドウサイズを抽出して、制御部１０１と算出部１０４に出力する機能を有する。
【００３０】
ＲＴＴ計測部１０３は、タイマー１０６を制御し、ＰＣ２０がサーバ装置５０宛てに転送するデータに係る通信パケットを送信し、その通信パケットの受領確認の通信パケットを受信部１１２が受信するまでの時間を計測する機能を有する。そして、計測した時間から得たＲＴＴを算出部１０４に出力する機能を有する。
算出部１０４は、取得部１０２からのＴＣＰウィンドウサイズの値とＲＴＴ計測部からのＲＴＴの値とを用いて、理論スループットを算出する機能を有する。具体的には、ＴＣＰウィンドウサイズの値をＷ、ＲＴＴの値をＴRTTとすると、理論スループットＳｍａｘは、Ｓｍａｘ＝Ｗ／ＴRTTで算出することができる。
【００３１】
なお、取得部１０２、ＲＴＴ計測部１０３、算出部１０４の機能は、携帯端末１０が有するＣＰＵが記憶部１２０に記憶するプログラムを実行することによって実現される。
タイマー１０６は、ＲＴＴ計測部１０３の指示を受けて、ＰＣ２０が通信パケットをサーバ装置５０宛てに送信してから、その通信パケットに対する受領確認の通信パケットを、受信部１１２がサーバ装置５０から受信するまでの時間を計測する機能を有する。また、タイマー１０６は、測定部１０５の指示を受けて、出力部１０７がある一定量の通信パケットを出力するのにかかった時間を測定し、測定部１０５に出力する機能を有する。
（測定部１０５、比較部１１３、優先度設定部１１４）
測定部１０５は、タイマー１０６を制御して、時間を計測させるとともに、タイマー１０６が計測している時間内に、出力部１０７が、サーバ装置５０宛てに送信した通信パケットのデータ量を測定する機能を有する。また、測定部１０５は、タイマー１０６が出力した時間とその間に送信したデータ量とから実スループットを算出する機能を有する。具体的には、タイマー１０６から得られた時間をＴｄ、その時間Ｔｄ内に送信したデータ量をＤとすると、実スループットＳｔは、Ｓｔ＝Ｄ／Ｔｄで算出することができる。
【００３２】
比較部１１３は、算出部１０４で算出した理論スループットと測定部１０５で測定した実スループットとを比較し、実スループットが頭打ちになっているか否かを判定し、判定結果を優先度設定部１１４に出力する。具体的には、比較部１１３は、実スループットの理論スループットに対する比を求め、その比が予め定められた閾値（例えば、０．９５）を超えるか否かによって実スループットが頭打ちになっているか否かを判定する。比較部１１３は、比が閾値を超える場合には、実スループットが頭打ちになっていると判定する。
【００３３】
優先度設定部１１４は、比較部１１３が出力した比較結果に基づいて、ＰＣ２０から出力された通信パケットに設定する優先度を決定し、決定した優先度の情報を出力部１０７に出力する機能を有する。具体的には、優先度設定部１１４は、比較部１１３での比較結果が、実スループットが頭打ちであることを示す場合には、サーバ装置５０宛ての通信パケットの優先度を他の通信パケットの優先度より高くすることを示す情報を出力部１０７に出力する。そうでない場合には、通信パケットの優先度を変更しないことを示す情報を出力部１０７に出力する。
【００３４】
なお、測定部１０５、比較部１１３、優先度設定部１１４の機能は、携帯端末１０が有するＣＰＵが記憶部１２０に記憶するプログラムを実行することによって実現される。
（音声処理部１１７）
音声処理部１１７は、例えば、レシーバとマイクとによって構成される。音声処理部１１７は、制御部１０１によって制御され、携帯端末１０の行う通話における音声の入出力処理を行う機能を有する。
【００３５】
レシーバは、制御部１０１によって制御され、制御部１０１から送られる電気信号を音声に変換して出力する機能を有する。
マイクは、音声を電気信号に変換して、変換した電気信号を制御部１０１へ送る機能を有する。
（表示部１１８、操作部１１９）
表示部１１８は、例えば、タッチパネル１５０が有する液晶ディスプレイである。
【００３６】
表示部１１８は、制御部１０１によって制御され、携帯端末１０を利用するユーザに提示する画像を生成して表示する機能を有する。
操作部１１９は、例えば、タッチパネル１５０が有するタッチパッド及び操作ボタン群１５３である。
操作部１１９は、制御部１０１によって制御され、携帯端末１０を利用するユーザからの接触操作やボタンの押下操作を受け付ける機能を有する。
【００３７】
具体的には、操作部１１９のタッチパッドは、タッチパネルの液晶ディスプレイに表示されたアイコン等の表示物に対するユーザからの接触操作を電気信号に変換して出力する機能を有する。また、操作部１１９は、ユーザのボタンの押下操作を電気信号に変換して、液晶ディスプレイに表示されたカーソルを移動させたり、アイコン等の表示物を選択する機能を有する。
（電源部１２１）
電源部１２１は、例えば、繰り返し充電され得る二次電池パックである。
【００３８】
電源部１２１は、制御部１０１の指示により携帯端末１０の各機能部を駆動するための電力を供給する機能を有する。
＜１．３  データ構造＞
（ＴＣＰパケット）
図４は、ＴＣＰ／ＩＰによる通信に用いられるＴＣＰパケットのデータ構造を示す図である。図４では、ＴＣＰパケットのデータ構造を、３２ビットごとに複数行で図示しているが、実際にはシーケンシャルなビット列のデータである。
【００３９】
ＴＣＰパケットは、ヘッダ部とデータ部３１２とで構成される。
ヘッダ部は、送信元ポート番号３０１、宛先ポート番号３０２、シーケンス番号３０３、ＡＣＫ番号３０４、データオフセット３０５、予約領域３０６、制御ビット３０７、ウィンドウサイズ３０８、チェックサム３０９、緊急（Urgent）ポインタ３１０、及びオプション３１１から構成される。なお、オプション３１１がない（サイズが０）場合もあり得る。ＴＣＰパケットは、このヘッダ部の後に、データ部３１２が続く構造である。
【００４０】
送信元ポート番号３０１は、１６ビットのデータ長を持ち、ＴＣＰパケットの送信元が送信に用いるポート番号を識別するための番号である。
宛先ポート番号３０２は、１６ビットのデータ長を持ち、宛先となる機器において、通信パケットの受け取りに用いる待ち受けのポート番号を表す。
シーケンス番号３０３は、３２ビットのデータ長を持ち、送信するデータに対して、順序付けを行うためのシーケンス番号を指定するフィールドである。送信するデータ１バイトごとに、シーケンス番号を１つずつ昇順に割り当て、どこまでデータを送信したかを指定する。具体的には、シーケンス番号は、通信データの送信側で管理し、データを送信するたびに、送信したデータのバイト数分だけシーケンス番号が加算され、ＴＣＰパケットに含めて送信される。
【００４１】
ＡＣＫ番号３０４は、３２ビットのデータ長を持ち、受信したデータに対して、どこのバイト位置までを受信したかを表すフィールドである。ＡＣＫ番号３０４は、データを受信した側が、どこまで受信したかを示すために、応答のＴＣＰパケットにセットして送信する。受信が完了したデータ位置のシーケンス番号＋１の値がセットされる。なお、後述するＡＣＫフラグがオンの場合にのみ、このＡＣＫ番号フィールドが有効となる。
【００４２】
データオフセット３０５は、４ビットのデータ長を持ち、データ部３１２が始まる位置を表す。なお、ヘッダ部の直後にデータ部が続いているため、データオフセット３０５の値は、ヘッダのサイズを表していることになる。データオフセット３０５の値は、３２ビット（４バイト）を１単位として設定される。すなわち、オプション３１１がなければ、ヘッダ部は、２０バイトであるので、データオフセット３０５の値は「５（２進数で表すと「０１０１」）」が設定される。
【００４３】
データオフセット３０５に続く６ビットのデータ長は、予約領域３０６として確保されており、現在は、「０」が設定される。
制御ビット３０７は、６ビットのデータ長を持ち、それぞれ１ビットのＵＲＧ（urgent）フラグ、ＡＣＫフラグ、ＰＳＨ（push）フラグ、ＲＳＴ（reset）フラグ、ＳＹＮ（synchronize）フラグ、及びＦＩＮ（finish）フラグで構成される。
【００４４】
ＵＲＧフラグからＦＩＮフラグまでは、デフォルトでは、初期値が「０」である。それぞれに対応するフラグを有効にする場合に「１」に設定する。
なお、以降、ＡＣＫフラグを有効に設定されたＴＣＰパケットを送信、又は、受信することを、それぞれ「ＡＣＫを送信する」、「ＡＣＫを受信する」と表現する場合がある。他のフラグについても同様の表現を行う場合がある。
【００４５】
ＵＲＧフラグは、このＴＣＰパケット中に「緊急データ」が含まれていることを表す。
ＡＣＫフラグが「１」ならば、ＴＣＰヘッダ中に有効なＡＣＫ番号が含まれていることを表す。実際には、ＴＣＰ接続確立時の最初に送信されるＴＣＰパケットを除き、全てのＴＣＰパケットのＡＣＫフラグに「１」が設定される。一方、最初に送信されるＴＣＰパケットは、ＡＣＫ番号３０４の内容は意味を持たないので、ＡＣＫフラグに「０」が設定される。
【００４６】
ＰＳＨフラグは、受信したデータをすみやかに上位の機器に引き渡すように要求するためのフラグである。
ＲＳＴフラグは、ＴＣＰ接続を中断又は拒否したい場合に設定される。このＲＳＴフラグが設定されていると、受信した側では、接続要求が拒否されたとみなし、現在のＴＣＰ接続を破棄又は強制終了をしなければならない。
【００４７】
ＴＣＰ接続がエラーなどで長く中断して、シーケンス番号とＡＣＫ番号の整合性が取れなくなった場合、ＡＣＫを送信する代わりにこのＲＳＴを送信し、現在のＴＣＰ接続を強制終了させる。また、ＴＣＰ接続要求に対して、ＡＣＫではなく、ＲＳＴを送信すると、接続を拒否していることを表す。例えば、サーバ側のリソースが不足していてオープン要求に応えられない場合や、許可されていないＩＰアドレスからの接続要求に対して拒否したい場合に、ＲＳＴを送信する。
【００４８】
ＴＣＰ接続を要求する場合に、ＳＹＮフラグに、「１」を設定したＴＣＰパケットを送信する。これによって、ＴＣＰ接続のオープン処理が開始される。ＴＣＰ接続は、双方向通信路なので、双方から送信されるそれぞれの最初の接続要求パケットには、このＳＹＮフラグが有効に設定されるが、２番目以降のＴＣＰパケットのＳＹＮフラグは「０」が設定される。ＳＹＮを受信した場合、受信側は、自身のＡＣＫ番号を受信したシーケンス番号に同期させる。これにより、以後の通信ための準備が整う。
【００４９】
ＦＩＮフラグは、ＴＣＰ接続を終了させるために利用される。ＦＩＮフラグを有効に設定したＴＣＰパケットは、もうこれ以上データの受信が必要ないことを意味し、ＦＩＮを受信すると、終了処理を開始する。双方からＦＩＮが送られるとＴＣＰ接続が終了し、ＴＣＰ接続のために用意されていた内部バッファなどのリソースが解放される。
ウィンドウサイズ３０８は、１６ビットのデータ長を持ち、受信側のＴＣＰウィンドウサイズを送信側に伝えるために利用される。送信側では、受信側から通知されたＴＣＰウィンドウサイズに従って、受信側からＡＣＫ受信するまでに送信可能な最大のデータ量を判断する。ウィンドウサイズ３０８の値が「０」である場合は、データを受信することができないことを意味し、送信側に対してデータの送信を一時的に停止することを要求するために用いる。ウィンドウサイズ３０８は、１６ビット長なので、最大で６５，５３５バイトまでのＴＣＰウィンドウサイズを設定することができる。
【００５０】
本実施の形態の携帯端末１０の取得部１０２は、サーバ装置５０から送られる通信パケットに含まれるウィンドウサイズ３０８を読み出して、ＴＣＰウィンドウサイズを取得する。
チェックサム３０９は、１６ビットのデータ長を持ち、ＴＣＰパケットの整合性を検査するための検査用データを格納するフィールドである。チェックサムの値は、「１の補数演算」を利用して計算される。
【００５１】
緊急ポインタ３１０は、１６ビットのデータ長を持ち、緊急データがＴＣＰパケット中に存在する場合に、その緊急データの位置が設定される。このとき、設定される値は、シーケンス番号３０３からのオフセットで表した値である。なお、緊急データがＴＣＰパケットに存在する場合には、上述のＵＲＧフラグに「１」を設定する。
オプション３１１は、３２ビット単位の可変長のデータ長を持ち、ＴＣＰ接続における各種の特性を設定するために利用される。例えば、ＭＳＳやウィンドウサイズのスケーリングオプションなどを、個々のＴＣＰ接続ごとに設定するために利用される。
【００５２】
データ部３１２は、可変長のデータ長を持ち、ヘッダ部の直後に続く。緊急データが存在する場合には、緊急データが直後に続き、その後に、通常のデータが続く。なお、データ部にデータが存在しない単なるＴＣＰヘッダだけのパケットもある。例えば、単にＴＣＰウィンドウサイズを通知したり、キープアライブ（keep-alive）を通知したりするために送信されるＴＣＰパケットは、データ部を必要としない。キープアライブとは、データ通信が何も行われない場合でも、一定時間間隔で空のＴＣＰパケットを送受信することにより、ＴＣＰ接続がアクティブであることをお互いに通知、確認するための通信機能である。何も通信を行わないでいると、無通信と判断され、通信回線が切断されてしまったり、ＴＣＰ接続がタイムアウトして切断されてしまったりするので、これを防ぐ目的で利用される。
【００５３】
（ＩＰパケット）
次に、ＩＰパケットのデータ構造について説明する。
図５は、ＴＣＰ／ＩＰによる通信に用いられるＩＰパケットのデータ構造を示す図である。図５では、ＩＰパケットのデータ構造を、３２ビットごとに複数行で図示しているが、実際にはシーケンシャルなビット列のデータである。
【００５４】
ＩＰパケットは、ヘッダ部とデータ部４１４とで構成される。
ヘッダ部は、バージョン４０１、ヘッダ長（IHL：Internet Header Length）４０２、サービスタイプ（TOS:Type Of Service）４０３、データグラム長４０４、ＩＤ４０５、フラグ４０６、フラグメントオフセット４０７、ＴＴＬ（Time To Live）４０８、プロトコル番号４０９、ヘッダチェックサム４１０、送信元ＩＰアドレス４１１、宛先ＩＰアドレス４１２、及びオプション４１３から構成される、なお、オプション４１３がない（サイズが０）場合もあり得る。ＩＰパケットは、このヘッダ部の後に、データ部４１４が続く構造である。
【００５５】
バージョン４０１は、４ビットのデータ長を持ち、ＩＰプロトコルのバージョンを示す。
本実施の形態の通信システム１では、ＩＰｖ４（Internet Protocol version 4）による通信を用いるので、値は常に「４（２進数で表すと「０１００」）」である。
ヘッダ長４０２は、４ビットのデータ長を持ち、ヘッダ部のサイズを示す。
【００５６】
ヘッダ長４０２の値は、３２ビット（４バイト）を１単位として設定される。すなわち、オプション４１３がなければ、ヘッダ部は、２０バイトであるので、ヘッダ長４０２の値は「５（２進数で表すと「０１０１」）」が設定される。
サービスタイプ４０３は、８ビットのデータ長を持ち、ＩＰパケットの優先度などを指定するために使われる。
【００５７】
サービスタイプ４０３の８ビットのうちの先頭から３ビットは、ＩＰ Ｐｒｅｃｅｄｅｎｃｅと呼ばれ、優先順位を設定するために用いられる。すなわち、ＩＰ Ｐｒｅｃｅｄｅｎｃｅを用いてＩＰパケットに８段階の優先順位を設定することができ、値の大きい方が優先度が高い。例えば、ＰＣから送信されるＩＰパケットには、ＩＰ Ｐｒｅｃｅｄｅｎｃｅに「０」が設定され、ＩＰ電話など音声機器からのＩＰパケットには、「５」が設定されるのが一般的である。
【００５８】
本実施の形態の携帯端末１０は、ＰＣ２０からサーバ装置５０への送信の際の実スループットが頭打ちと判断した場合には、その送信に係る通信パケットにおけるＩＰ Ｐｒｅｃｅｄｅｎｃｅの値を「０」より大きい値に設定することで、優先度を高く設定する。
なお、ＩＰ Ｐｒｅｃｅｄｅｎｃｅの設定において、その値が「６」及び「７」は、ルーティングなどのネットワーク制御用に用いられ、ユーザが優先度を設定できる値の範囲は、「０」〜「５」である。
【００５９】
データグラム長４０４は、１６ビットのデータ長を持ち、ＩＰパケット全体のサイズをバイト単位で表した値を示す。データ長が１６ビットであるので、１つのＩＰパケットで送信可能な最大のデータ量は、６５，５３５バイト（＝６４Ｋバイト）である。また、ヘッダ部の最小サイズは、２０バイトであるのでデータグラム長４０４の最小値は、２０バイト＋データ部４１４のバイトサイズである。
【００６０】
なお、ＩＰパケットがフラグメント化されている場合は、データグラム長は、元のＩＰパケット全体のサイズではなく、個々のＩＰフラグメントのサイズを示す。
ＩＤ４０５は、１６ビット長のデータ長を持ち、フラグメント化されたＩＰパケットを識別するために用いられる。ＩＰパケットのフラグメント化（以下、「フラグメンテーション」と呼ぶ。）とは、ＩＰパケットをいくつかに分割して送信するという機能である。上述したように、ＩＰパケットの最大サイズは６４Ｋバイトであるが、このサイズのデータを１回で送信することのできるネットワーク媒体はまれである。そのため、送信可能なサイズにまでＩＰパケットを分割してから送信を行う。そして、送信先の機器で分割されて届いたＩＰパケットを合成し、元のサイズのＩＰパケットに再構成する。送信元の機器は、ＩＰパケットを送信するたびにランダムな１６ビットの数値をＩＤ４０５に設定する。１つのＩＰパケットから分割されてフラグメント化されたパケットは、全て同じＩＤが設定されているので、送信先の機器で１つのＩＰパケットに再構成する場合の識別子の役目を果たす。
【００６１】
フラグ４０６は、３ビットのデータ長を持ち、フラグメンテーションの際に利用される特別なフラグ情報である。３ビットのうち、先頭の１ビットは、リザーブであり、常に「０」が設定される。残りの２ビットは、それぞれ、ＭＦ（More Fragment）ビットとＤＦ（Don't Fragment）ビットとである。
ＭＦビットは、フラグメント化されたＩＰパケットが更に続くかどうかを示すフラグである。１つのＩＰパケットを複数に分割した場合、最後部のパケットではこのＭＦビットを「０」にし、そのほかのパケットではＭＦビットを「１」に設定する。ＭＦビットが「１」である間は、フラグメント化されたＩＰパケットが更に後ろに続くということを示す。
【００６２】
ＤＦビットは、ＩＰパケットのフラグメント化を禁止するか否かを示すフラグである。通信経路上にあるルータ等は、必要ならばＩＰパケットのフラグメント化を行うが、このＤＦビットが「１」に設定されていると、フラグメント化を行わない。
フラグメントオフセット４０７は、１３ビットのデータ長を持ち、フラグメント化されたＩＰパケットにおいて、元のＩＰパケット中のどの部分に相当するかを示すためのオフセットの値を示す。なお、フラグメントオフセット４０７は１３ビット長しかないが、フラグメントは、８バイト単位で行われるので、元のＩＰパケットの位置を８で割った値を、フラグメントオフセット４０７に設定することで、６４Ｋバイトの範囲を表すことができる。
【００６３】
ＴＴＬ４０８は、８ビットのデータ長を持ち、ＩＰパケットがネットワーク上で有効である時間を表す。ＴＴＬ４０８の値は、通信経路上のＩＰパケット中継する機器において、ヘッダ処理を行う際に更新される。ＴＴＬ４０８の値が「０」の場合、そのＩＰパケットは破棄される。ここで設定される値は、秒単位の値である。
プロトコル番号４０９は、８ビットのデータ長を持ち、ＩＰプロトコルより上位に当たるネットワーク・プロトコルの種類を表す。プロトコル番号４０９で設定される具体的なプロトコルとしては、例えば、ＩＣＭＰ、ＴＣＰ、ＵＤＰ、ＧＲＥ等がある。ＩＣＭＰ、ＴＣＰ、ＵＤＰ、ＧＲＥのそれぞれのプロトコルを示す場合には、プロトコル番号４０９には、それぞれ「１」、「６」、「１７」、「４７」が設定される。
【００６４】
ヘッダチェックサム４１０は、１６ビットのデータ長を持ち、ヘッダ部のチェックサムが設定される。なお、データ部４１４は、チェックサムの対象ではない。これは、ＩＰパケットが、フラグメント化されている場合には、データ部の全てのデータがないのでチェックサムが計算できないからである。チェックサムの値は「１の補数演算」を利用して計算される。
【００６５】
送信元ＩＰアドレス４１１は、３２ビットのデータ長を持ち、送信元の機器のＩＰアドレスを示す。送信先のＩＰアドレスがあれば、ＩＰパケットは、送信先に届けることができるが、送信先から送信元に応答のパケットを返信する場合に、この送信元ＩＰアドレス４１１で示されたＩＰアドレスを宛先ＩＰアドレス４１２に設定して、ＩＰパケットを送信する。
【００６６】
宛先ＩＰアドレスは、３２ビットのデータ長を持ち、送信先の機器のＩＰアドレスを示す。通信ネットワーク上におけるルーティング処理では、この宛先ＩＰアドレス４１２を元にしてルーティング処理が行われ、目的の機器へとＩＰパケットが届けられる。
本実施の形態では、ＰＣ２０がサーバ装置５０にデータを送信する場合には、自機のＩＰアドレスを送信元ＩＰアドレス４１１に設定し、サーバ装置５０のＩＰアドレスを宛先ＩＰアドレスに設定したＩＰパケットを生成して送信する。
【００６７】
オプション４１３は、３２ビット単位の可変長のデータ長を持ち、ＩＰパケットの送信に伴い、付加的な機能を実現するために利用される。なお、オプション４１３のデータ長は０でもよい。
オプション４１３は、通常は利用されないが、例えば、ＩＰパケットの通過のログ（時間の記録）やルーティング処理に利用することができる。具体的には、ルーティングの経路を強制的に指定したり、ＩＰパケットが通過したルート（ルータのＩＰアドレス等）を記録させたりするために用いることができる。
【００６８】
データ部４１４は、可変長のデータ長を持ち、ヘッダ部の直後に続く。通常はＴＣＰ、ＵＤＰ、ＩＣＭＰ等のパケットが含まれる。データ部４１４にＴＣＰパケットが含まれる場合、ＩＰパケットのデータ部４１４には、最小でも２０バイトのデータが含まれる。
このように、ＴＣＰパケットで得られる送信元と宛先とのポート番号、及びＩＰパケットから得られる送信元と宛先とのＩＰアドレスの４つの組によってデータフローを区別することができる。
【００６９】
＜１．４  動作＞
図６は、通信システム１での、ＰＣ２０とサーバ装置５０とのデータの送受信の概略を示すシーケンス図である。
なお、図６のシーケンス図では、ＰＣ２０とサーバ装置５０とのＴＣＰ／ＩＰによる通信は確立しているものとし、通信の確立のためのパケットの送受信の手順は省略している。
【００７０】
ＰＣ２０は、サーバ装置５０にデータを送信する場合、ＴＣＰ／ＩＰのプロトコルに従って送信するデータに係る通信パケットを生成し、通信パケットの送信を開始する（ステップＳ１０１）。
ＰＣ２０が出力したＴＣＰデータ＃１の通信パケットは、携帯端末１０を介して、基地局３０に送信され、ネットワーク４０に接続されているサーバ装置５０に届けられる（ステップＳ１０２）。
【００７１】
サーバ装置５０は、ＴＣＰデータ＃１の通信パケットを受信すると、受信確認の応答として、ＴＣＰ  ＡＣＫ＃１を生成して、ＰＣ２０宛てに送信する（ステップＳ１０４）。
サーバ装置５０が出力したＴＣＰ  ＡＣＫ＃１の通信パケットは、基地局３０を介して携帯端末１０に送られ、テザリングによって携帯端末１０に接続しているＰＣ２０に届けられる（ステップＳ１０５）。
【００７２】
ＰＣ２０は、ＴＣＰ  ＡＣＫ＃１を受信する（ステップＳ１０６）と、ＴＣＰデータ＃１が正常に送信できたと判断し、ＴＣＰデータ＃１の送信を完了する（ステップＳ１０７）。
ＰＣ２０は、引き続きデータを送信するために、ＴＣＰデータ＃２を生成して、通信パケットを送信する（ステップＳ１０８）。そして、ステップＳ１０２と同様にＴＣＰデータ＃２を送信する（ステップＳ１０９）。
【００７３】
サーバ装置５０は、ＴＣＰデータ＃２を受信し（ステップＳ１１０）、ＴＣＰデータ＃２の受信確認の応答としてＴＣＰ  ＡＣＫ＃２を返信する（ステップＳ１１１、ステップＳ１１２）。なお、ステップＳ１１０、ステップＳ１１１、ステップＳ１１２の処理は、それぞれ、ステップＳ１０３、ステップＳ１０４、ステップＳ１０５の処理と同様である。
【００７４】
ＰＣ２０はＴＣＰ  ＡＣＫ＃２を受信すると（ステップＳ１１３）、ＴＣＰ  ＡＣＫ＃２が正常に送信できたと判断し、ＴＣＰデータ＃２の送信が完了する（ステップＳ１１４）。
以降、ＰＣ２０は、所望のデータ全てを送信するまで、通信パケットを送信し、その受信確認を受け取る処理を繰り返す。同様にサーバ装置５０は、通信パケットを受信するごとにＡＣＫを送信する。このようにして、ＰＣ２０とサーバ装置５０との間で、携帯端末１０を介してデータ通信に係る通信パケットの送受信が行われる。
【００７５】
ところで、ＴＣＰパケットを１つ送るたびに、ＡＣＫの受信を待っているのは、データの送受信に係るオーバヘッドが大きく効率が悪い。そこで、実際には、ＴＣＰウィンドウサイズに基づいて、図７で示すようなデータの送受信が行われる。
なお、図７のシーケンス図では、図６と同様にＰＣ２０とサーバ装置５０とのＴＣＰ／ＩＰによる通信は確立しているものとし、通信の確立のためのパケットの送受信の手順は省略している。また、データ通信の確立時にサーバ装置５０から送られるデータフローに係る通信パケットによってＰＣ２０及び携帯端末１０は、ＴＣＰウィンドウサイズを取得しているものとする。
【００７６】
ＰＣ２０は、サーバ装置５０にデータを送信する場合、データをＴＣＰ／ＩＰのプロトコルに従ってＴＣＰウィンドウサイズで示されるデータ量を超えないサイズの通信パケットを生成し、通信パケットの送信を開始する（ステップＳ２０１）。図７の例では、ＴＣＰデータ＃１〜＃４までの４つの通信パケットを生成して送信している（ステップＳ２０２〜Ｓ２０５）。
【００７７】
サーバ装置５０は、ＴＣＰデータ＃１〜＃４を受信する（ステップＳ２０６〜Ｓ２０９）と、ＴＣＰデータ＃１〜＃４それぞれに対してＴＣＰ  ＡＣＫ＃１〜＃４を返信する（ステップＳ２０２ａ〜Ｓ２０５ａ）。同図のように、サーバ装置５０は、ＴＣＰ  ＡＣＫ＃１〜＃３の受信を確認する前にＴＣＰデータ＃２〜＃４を送信することができる。
なお、図７では、ＴＣＰデータ＃１〜＃４を番号順に受信するようになっているが、サーバ装置５０は、ＴＣＰデータ＃１〜＃４をどの順番で受信しても構わない。携帯端末１０からサーバ装置５０へ到達するまでに、これらの通信パケットがたどるネットワークの経路によって、到達順序が変わることがあり得るからである。また、ＰＣ２０が受信するＴＣＰ  ＡＣＫ＃１〜＃４の順番もどの順番でも構わない。
【００７８】
サーバ装置５０が出力したＴＣＰ  ＡＣＫ＃１〜＃４の通信パケットは、基地局３０を介して携帯端末１０に送られ、テザリングによって携帯端末１０に接続しているＰＣ２０に届けられる。
ＰＣ２０は、ＴＣＰ  ＡＣＫ＃１〜＃４を受信すると、ＴＣＰデータ＃１〜＃４が正常に送信できたと判断し、ＴＣＰデータ＃１〜＃４の送信を完了する（ステップＳ２１０）。
なお、ＴＣＰデータの送信から、ＴＣＰ  ＡＣＫの受信までの時間がＲＴＴである。例えば、ステップＳ２０２のＴＣＰデータ＃１の送信から、ステップＳ２０２ａのＴＣＰ  ＡＣＫ＃１の受信までの時間がＲＴＴ＃１である。同様にして、ＴＣＰデータ＃２〜＃４それぞれの送信に対するＴＣＰ  ＡＣＫ＃２〜＃４の受信までの時間が、それぞれＲＴＴ＃２〜＃４である。なお、本実施の形態では、ある一定期間内のＲＴＴの平均値を用いて、理論スループット算出を行う。
【００７９】
このように、ＴＣＰウィンドウサイズを利用して、ＴＣＰウィンドウサイズを超えない間は、通信パケットを連続して送信でき、サーバ装置５０から個々の通信パケットに対するＡＣＫの受信を待たずに、ＴＣＰウィンドウサイズを超えないデータ量までの通信パケットの送信を行うことができる。これにより、送信データの受領確認に係るオーバヘッドの時間を短縮できる。
【００８０】
次に、図７で示すシーケンスでデータ通信に係るデータフローの処理を行う場合における携帯端末１０での処理について説明する。
図８に、携帯端末１０におけるデータ通信に係るデータフローの処理のフローチャートを示す。
なお、携帯端末１０は、ＰＣ２０とサーバ装置５０とのデータ通信に係るデータフローを中継するだけでなく、ＰＣ２０と他のサーバ装置とのデータ通信、又は、ＰＣ２０以外の機器とネットワーク４０上の機器とのデータ通信に係るデータフローをも中継しているものとする。
【００８１】
制御部１０１は、タイマー１０６を制御し、実スループットの算出に用いるためのタイマーＴｄの値を０に初期化（Ｔｄ＝０）する（ステップＳ１１）。
次に、制御部１０１は、ＰＣ２０とサーバ装置５０との通信を確立するために、ＰＣ２０がサーバ装置５０に接続要求するために出力したＳＹＮを、テザリング部１１５を介して受け取り、出力部１０７に出力する。送出部１０９は、バッファ１０８からＳＹＮを示す通信パケットを取り出し、通信部１１０に出力する。通信部１１０は、アンテナ１１１を介して、基地局３０にＳＹＮを送信する（ステップＳ１２）。基地局３０が受け取ったＳＹＮは、ネットワーク４０を通じてサーバ装置５０に届けられる。ＳＹＮを受信したサーバ装置５０は、接続を許可するＡＣＫをＰＣ２０宛てに送信する。携帯端末１０の受信部１１２は、ＰＣ２０宛てのＡＣＫを受信し（ステップＳ１３）、テザリング部１１５を介してＰＣ２０にＡＣＫを出力する。ＰＣ２０からＳＹＮを送信し、その応答としてＡＣＫをサーバ装置５０から受信することによって、携帯端末１０を介したＰＣ２０とサーバ装置５０との通信が確立する。
【００８２】
また、制御部１０１は、測定部１０５を制御して、ＰＣ２０からサーバ装置５０宛ての通信パケットにおいて、タイマーＴｄを初期化してから、出力部１０７が出力した通信パケットの総データ量Ｄを測定させる。
携帯端末１０の取得部１０２は、受信部１１２で受信したサーバ装置５０からの通信パケットに含まれるＴＣＰパケット３００のウィンドウサイズ３０８からＴＣＰウィンドウサイズＷを取得する（ステップＳ１４）。
【００８３】
次に、制御部１０１は、タイマー１０６を制御し、経過時間を計測するためのタイマーＴの値と、変数ｉの値を初期化させる（Ｔ＝０、ｉ＝０）（ステップＳ１５）。
更に、制御部１０１は、タイマー１０６を制御し、ＲＴＴを計測するためのタイマーＴRTT（ｉ）の値を初期化（ＴRTT（ｉ）＝０）させる（ステップＳ１６）。
テザリング部１１５は、ＰＣ２０からサーバ装置５０へ送信する通信パケットＷｐ（ｉ）を受信し、制御部１０１に出力する（ステップＳ１７）。
【００８４】
制御部１０１は、出力部１０７を制御して、ＰＣ２０から受信した通信パケットＷｐ（ｉ）をバッファ１０８に出力する。
制御部１０１は、サーバ装置５０とのデータ送受信中に、サーバ装置５０から前回のウィンドウサイズＷまで通信パケットを送信した後にＡＣＫを受け取った時点から送信した通信パケットの累積パケット量に、次に送信しようとしている通信パケットＷｐ（ｉ）のパケット量を加算したパケット量（累積パケット量＋Ｗｐ（ｉ）、以下、「想定累積パケット量」と呼ぶ。）がＴＣＰウィンドウサイズＷを超えているか否かを判定する（ステップＳ１８）。
【００８５】
想定累積パケット量がＴＣＰウィンドウサイズＷを超えていない場合（ステップＳ１８：ＮＯ）には、制御部１０１は、送出部１０９に指示し、送出部１０９にバッファ１０８からサーバ装置５０への通信パケットＷｐ（ｉ）を取り出させ、通信部１１０に出力させる。通信部１１０は基地局３０へ通信パケットＷｐ（ｉ）を送信する（ステップＳ１９）。
【００８６】
次に、制御部１０１は、受信部１１２がサーバ装置５０から、これまでに送信した通信パケットＷｐ（ｘ）（ｘ＝０〜ｉ）のうちのどれかに対するＡＣＫを受信したか否かを判定する（ステップＳ２０）。
受信部１１２が、サーバ装置５０から、送信した通信パケットＷｐ（ｘ）に対するＡＣＫを受信した場合（ステップＳ２０：ＹＥＳ）、制御部１０１は、タイマー１０６を制御し、タイマーＴRTT（ｘ）を停止させ、その時点での値を保持する（ステップＳ２１）。次に、制御部１０１は、変数ｉを１増分する（ステップＳ２２）。そして、タイマーＴが予め定められた経過時間の閾値Ｔｔｈ（例えば、１秒）以上か否かを判定する（ステップＳ２３）。
【００８７】
一方、受信部１１２が、サーバ装置５０から、送信した通信パケットＷｐ（ｘ）に対するＡＣＫを受信していない場合（ステップＳ２０：ＮＯ）、タイマーＴRTT（ｘ）を停止することなく、ステップＳ２２の処理を行う。なお、制御部１０１は、送信した通信パケットＷｐ（ｘ）に対するＡＣＫを受信すると、タイマーＴRTT（ｘ）を停止し、その時点での値を保持する。
【００８８】
制御部１０１は、タイマーＴが閾値Ｔｔｈを超えていなければ、ステップＳ１６からの処理を繰返し、そうでなければ、送信した通信パケットＷｐ（ｘ）（ｘ＝０〜ｉ）のすべてについて、ＡＣＫを受信したか否かを判定し、ＡＣＫを受信した際に、受信したＡＣＫに対応するタイマーＴRTT（ｘ）を停止し、その時点での値を保持する（ステップＳ２４）。
送信した通信パケット全てについて、ＡＣＫを受信すると（ステップＳ２４：ＹＥＳ）、制御部１０１は、それまでに計測したＴRTT（ｉ）の平均を算出し、ＴRTTとする（ステップＳ２５）。なお、本実施の形態では、送信した通信パケットについてのＡＣＫを全て正常に受信するものとする。
【００８９】
次に、制御部１０１は、バッファに蓄積されているサーバ装置５０宛ての通信パケットの送信を再開し、実スループットと理論スループットとの算出及び比較処理を行う（ステップＳ２６）。なお、この処理の詳細は後述する。
一方、想定累積パケット量がＴＣＰウィンドウサイズを超える場合（ステップＳ１８：ＹＥＳ）には、制御部１０１は、送出部１０９に指示し、サーバ装置５０への通信パケットの送出を行わせず、繰返し処理を抜けてステップＳ２４の処理に進む（ステップＳ１８：ＹＥＳ）。
【００９０】
制御部１０１は、ステップＳ２５で算出した実スループットの値Ｓｔの理論スループットの値Ｓｍａｘに対する比（Ｓｔ／Ｓｍａｘ）が閾値Ｒｔｈ（例えば、Ｒｔｈ＝０．９５）より大きいか否かを判定する（ステップＳ２７）。Ｓｔ／Ｓｍａｘが、閾値Ｒｔｈより大きい場合、すなわち、実スループットが理論スループットと同程度の速度である場合（ステップＳ２７：ＹＥＳ）には、制御部１０１は、実スループットが頭打ちになっていると判断し、サーバ装置５０宛の通信パケットの優先度を高く設定する（ステップＳ２８）。具体的には、例えば、サーバ装置５０宛てのＩＰパケット４００のサービスタイプ４０３に含まれるＩＰ Ｐｒｅｃｅｄｅｎｃｅの値を「０」より大きい値（例えば、「５」）に設定する。なお、他のデータフローの通信パケットのＩＰ Ｐｒｅｃｅｄｅｎｃｅの値は「０」が設定されているものとする。更に、本実施の形態の携帯端末１０における通信パケットの生成処理には、このように、ＰＣ２０からの通信パケットのヘッダ部の一部を書き換える処理を含むものとする。
【００９１】
次に、制御部１０１は、タイマー１０６を制御して、実スループットの算出に用いるためのタイマーＴｄの値を初期化する（Ｔｄ＝０）（ステップＳ２９）。
制御部１０１は、ＰＣ２０からサーバ装置５０へのデータ送信が完了したかを判定する（ステップＳ３０）。具体的には、ＰＣ２０からＴＣＰパケットの制御ビット３０７のＦＩＮフラグが有効な通信パケット、すなわちＦＩＮフラグに「１」が設定されている通信パケットがサーバ装置５０に送信され、更に、サーバ装置５０から、その応答として、ＴＣＰパケットの制御ビット３０７のＦＩＮフラグが有効である通信パケットを受信した場合にデータ転送が完了したと判定する。
【００９２】
データ転送が完了していないと判定した場合（ステップＳ３０：ＮＯ）、ステップＳ１４に戻り、データ転送の処理を続ける。データ転送が完了した場合（ステップＳ３０：ＹＥＳ）は処理を終了する。
（実スループットと理論スループットとの算出及び比較処理）
次に、携帯端末１０における実スループットと理論スループットとの算出及び比較処理について説明する。この処理は、図８のステップＳ２６及び後述の図１０ステップＳ５６で行われる。
【００９３】
図９に、携帯端末１０での実スループットと理論スループットとの算出及び比較処理のフローチャートを示す。
算出部１０４は、取得部１０２で取得したＴＣＰパケットサイズＷとＴRTTとを用いて、理論スループットＳｍａｘを算出する（ステップＳ３１）。具体的には、算出部１０４は、理論スループットＳｍａｘを、Ｓｍａｘ＝Ｗ／ＴRTTで算出する。
【００９４】
次に、制御部１０１は、測定部１０５を制御し、ＰＣ２０から受信したサーバ装置５０宛ての通信パケットにおいて、タイマーＴｄの初期化から現在までの間に出力部１０７が出力した総データ量Ｄを取得する（ステップＳ３２）。
そして、制御部１０１は、測定部１０５を制御し、実スループットＳｔを算出させる（ステップＳ３３）。具体的には、測定部１０５は、実スループットＳｔを、総データ量Ｄと、総データ量Ｄを出力するのにかかった時間を示すタイマーＴｄの値を用いて、Ｓｔ＝Ｄ／Ｔｄで算出する。
【００９５】
更に、測定部１０５は、実スループットの理論スループットに対する比Ｒｔを算出する（ステップＳ３４）。具体的には、測定部１０５は、比Ｒｔを、Ｒｔ＝Ｓｔ／Ｓｍａｘで算出する。なお、Ｓｔは、Ｓｍａｘより大きな値にはならないので、Ｒｔは１以下の値である。
＜１．５  考察＞
本実施の形態の携帯端末１０では、自機が中継する機器間のデータ通信において、ＴＣＰウィンドウサイズとＲＴＴとから算出される理論スループットに基づいて、実スループットが理論スループットと同程度の通信速度で通信しているか否か、すなわち通信速度が頭打ちになっているか否かを判定する。そして、通信速度が頭打ちになっているデータフローの通信パケットの優先順位を高く設定することで、優先的に携帯端末１０から通信パケットを送出し、携帯端末１０に通信パケットが留まっている時間を短縮する。これにより、通信速度が頭打ちになっているデータフローのＲＴＴを短くすることができ、理論スループットが大きくなる。従って、実スループットが頭打ちになっている状態を解消でき、通信速度が頭打ちになっているデータフローの通信速度を改善することができる。
＜２．実施の形態２＞
＜２．１  概要＞
実施の形態１の携帯端末１０では、予め定められた特定の機器間のデータフローについて、実スループットが頭打ちになっているか否かに基づいて、そのデータフローに係る通信パケットの優先順位を高く設定することで、スループットを改善する例を示した。
【００９６】
実施の形態２では、携帯端末１０が中継するデータフローごとに、実スループットが頭打ちになっているか否かを判定し、頭打ちになっていると判定されたデータフローのうちの１つのデータフローについての実スループットの改善を行う携帯端末１０について説明する。
＜２．２  構成＞
本実施の形態の携帯端末１０のハードウエア構成は、実施の形態１の携帯端末１０と基本的に同じであるので、実施の形態１の携帯端末１０と同じ符号を用いる。
【００９７】
実施の形態１の携帯端末の制御部１０１が、ＰＣ２０とサーバ装置５０とのデータ通信に係る通信パケットについて、実スループットが頭打ちになっているか否かを判定して、この通信パケットの優先度を設定する処理を行っていたが、本実施の形態の携帯端末１０の制御部１０１は、中継するデータ通信全てについて、頭打ちになっているか否かを判定する点が異なる。そして、頭打ちになっているデータフローが１つの場合には、実施の形態１で説明したのと同様の処理で、そのデータフローについての優先度を高くする。また、頭打ちになっているデータフローが複数ある場合には、そのうちの１つのデータフローを選択して、優先度を高くする。
【００９８】
＜２．３  動作＞
図１０は、実施の形態２の携帯端末１０における処理のフローチャートである。
なお、本実施の形態の携帯端末１０も、実施の形態１と同様に、ＰＣ２０とサーバ装置５０とのデータ通信に係るデータフローを中継するだけでなく、ＰＣ２０と他のサーバ装置とのデータ通信、又は、ＰＣ２０以外の機器とネットワーク４０上の機器とのデータ通信に係るデータフローをも中継しているものとする。
【００９９】
まず、制御部１０１は、頭打ちになっているデータフローの数をカウントするためのカウンタｃｏｕｎｔを初期化する（ｃｏｕｎｔ＝０）（ステップＳ４１）。
次に、制御部１０１は、出力部１０７を制御し、バッファ１０８に出力される通信パケットを解析し、データフローを１つ選択する（ステップＳ４２）。なお、それぞれのデータフローは、データフローに係るＴＣＰパケット３００の送信元ポート番号３０１と宛先ポート番号３０２、及びＩＰパケット４００の送信元ＩＰアドレス４１１と宛先ＩＰアドレス４１２とのうち少なくとも１つの値が異なるものとする。
【０１００】
制御部１０１は、取得部１０２に指示し、取得部１０２に選択したデータフローについての通信パケットからＴＣＰウィンドウサイズＷを取得させる（ステップＳ４３）。
次に、制御部１０１は、タイマー１０６を制御し、実スループットの算出に用いるためのタイマーＴｄの値の初期化（Ｔｄ＝０）を行う（ステップＳ４４）。
制御部は、ステップＳ４５〜ステップＳ５５の処理を行い、通信パケットを送信しながらＴRTT算出のための処理を行う。ステップＳ４５〜ステップＳ５４の処理は、上述した図８のステップＳ１５〜ステップＳ２５と同じ処理である。
【０１０１】
次に、制御部１０１は、図９を用いて既に説明した実スループットと理論スループットとの算出及び比較処理を行う（ステップＳ５６）。
制御部１０１は、ステップＳ５６で算出した実スループットの値Ｓｔの理論スループットの値Ｓｍａｘに対する比（Ｓｔ／Ｓｍａｘ）が閾値Ｒｔｈ（例えば、Ｒｔｈ＝０．９５）より大きいか否かを判定する（ステップＳ５７）。Ｓｔ／Ｓｍａｘが、閾値Ｒｔｈより大きい場合、すなわち、実スループットが理論スループットと同程度の速度である場合（ステップＳ５６：ＹＥＳ）には、制御部１０１は、実スループットが頭打ちになっていると判断し、カウンタｃｏｕｎｔの値を１増分する（ステップＳ５８）。
【０１０２】
制御部１０１は、頭打ちとなっていない場合（ステップＳ５７：ＮＯ）、カウンタｃｏｕｎｔの値を１増分せず、異なる未処理のデータフローがあるか判定し（ステップＳ５９）、未処理のデータフローがある場合には、ステップＳ４２からステップＳ５９までの処理を未処理のデーフローがなくなるまで行う。なお、ステップＳ４２からステップＳ５９までの処理は、異なるデータフローについて並列に処理してもよい。
【０１０３】
全ての異なるデータフローについて、実スループットが頭打ちになっているか否かの判定が完了すると、制御部１０１は、カウンタｃｏｕｎｔの値が「０」の場合（ステップＳ６０：「０」）、処理を終了する。
制御部１０１は、カウンタｃｏｕｎｔの値が「１」の場合（ステップＳ６０：「１」）、実スループットが頭打ちになっているデータフローの優先度を高く設定する（ステップＳ６１）。具体的な設定方法は、図８のステップＳ２８と同様である。
【０１０４】
制御部１０１は、カウンタｃｏｕｎｔの値が「２」以上の場合（ステップＳ６０：「２」）、予め定められた優先順に従って、優先順位を高くするデータフローを選択する（ステップＳ６１）。具体的には、予め、送信先のＩＰアドレスによって、どのＩＰアドレスで指定される機器へのデータ転送を優先すべきかの順序を決めておき、その順位に従って、一番上位にあるＩＰアドレス宛てのデータフローを選択する。
【０１０５】
次に、制御部１０１は、選択したデータフローの優先度を高く設定する（ステップＳ６２）。
＜２．４  考察＞
本実施の形態の携帯端末１０では、自機が中継する機器間のデータ通信において、ＴＣＰウィンドウサイズとＲＴＴとから算出される理論スループットに基づいて、実スループットが理論スループットと同程度の通信速度で通信しているデータフローが複数ある場合には、該当するデータフローの中で、ユーザによって予め定められた最も優先順位を高くする１つのデータフローについての優先順位を高くすることができる。これにより、ユーザは最も通信速度を改善したいデータフローについての通信速度を向上させ得る。
【０１０６】
＜２．５  変形例＞
＜２．５．１  概要＞
実施の形態２では、頭打ちになっているデータフローが複数ある場合に、予め定められた優先順位に従って、１つのデータフローを選択し、そのデータフローに係る通信パケットの優先順位を高く設定した。しかし、頭打ちになっているデータフローのうちの１つを選択して、そのデータフローに係る通信パケットの優先順位を高く設定すると、他のデータフローに係る通信パケットの優先順位が相対的に低くなり、他の通信速度が低下するおそれがある。また、通信相手の機器やデータ通信の内容が、予め分かっている場合には、それぞれのデータ通信の優先順位を設定しやすいが、通信相手の機器やデータ通信の内容がさまざまであり、それぞれのデータ通信の優先順位を予め設定することが困難な場合もある。そこで、本変形例では、頭打ちになっているデータフローが複数ある場合、優先順位を高く設定するデータフローを、ユーザが、その都度選択できる携帯端末１０について説明する。
【０１０７】
本変形例の携帯端末１０のハードウエア構成は、実施の形態２の携帯端末１０と基本的に同じであるので、実施の形態２の携帯端末１０と同じ符号を用いる。
実施の形態２では、頭打ちになっているデータフローが複数ある場合には、予め定められた優先順位に従って制御部１０１が１つのデータフローを選択した。一方、本変形例では、頭打ちの状態のデータフローが複数ある場合において、データ通信ごとの優先順位の設定を必ずしも予め行う必要はなく、その都度、優先度を高くするデータフローの選択指示をユーザに求める点が異なる。このため、本変形例の携帯端末１０は、頭打ちになっているデータフローの一覧を表示部１１８に表示させ、ユーザによるデータフローの選択指示を受け付ける。
＜２．５．２  動作＞
以下、本変形例における携帯端末１０の処理の動作について説明する。
【０１０８】
図１１は、変形例の携帯端末１０における処理のフローチャートである。
同図のステップＳ６０以前の処理の動作は、図１０のステップＳ４１〜Ｓ５９の動作と同じである。
全ての異なるデータフローについて、実スループットが頭打ちになっているか否かの判定が完了すると、制御部１０１は、カウンタｃｏｕｎｔの値が「０」の場合（ステップＳ６０：「０」）、処理を終了する。
【０１０９】
また、制御部１０１は、カウンタｃｏｕｎｔの値が「１」の場合（ステップＳ６０：「１」）、実スループットが頭打ちになっているデータフローの優先度を高く設定する（ステップＳ７５）。具体的な設定方法は、図８のステップＳ２７と同様である。
制御部１０１は、カウンタｃｏｕｎｔの値が「２」以上の場合（ステップＳ６０：「２」）、表示部１１８に、該当するデータフローの一覧を表示させる（ステップＳ７１）。
【０１１０】
図１２は、表示部１１８に表示されたデータフローの選択メニューの例である。図１２のＵＩ５００は、表示部１１８の表示面に表示されるＵＩの一例である。ＵＩ５００の一覧表示領域５０１には、頭打ちになっているデータフローの一覧が表示されている。なお、同図の例では、通信相手のサーバごとのデータフローの一覧を表示している。ユーザは、表示部１１８に表示されたデータフローの一覧から優先順位を高く設定するデータフローを選択し、ＯＫボタン５０２をタッチすることによって、優先順位を高く設定するデータフローを選択することができる。ユーザがキャンセルボタン５０３をタッチする場合は、どのデータフローの優先順位も高く設定しないことを示す。また、「どのデータ通信も現状のまま」を選択し、ＯＫボタン５０２をタップした場合にもどのデータフローの優先順位も高く設定しないことを示す。
【０１１１】
このような、ユーザの操作により操作部１１９は、ユーザによる指示の操作を受け付ける（ステップＳ７２）。操作部１１９は、ユーザからの指示によってデータフローが１つ選択されたことを受け付けた場合（ステップＳ７３：ＹＥＳ）、制御部１０１は、選択されたデータフローを示す情報を取得し（ステップＳ７４）、当該データフローに係る通信パケットの優先順位を高く設定する（ステップＳ７５）。
【０１１２】
一方、データフローが選択されなかった場合（ステップＳ７４：ＮＯ）、データフローに係る通信パケットの優先度を高く設定する処理を行わず、処理を終了する。
＜２．５．３  まとめ＞
上記に説明したように、本変形例の携帯端末１０は、頭打ちの状態になっているデータフローが複数ある場合には、ユーザに対して、頭打ちの状態になっているデータフローの一覧を表示し、どのデータフローの優先度を高く設定するのかの指示を受け付ける。従って、ユーザは、その都度、優先順を高くするデータフローを、データ通信の状況に応じて、適切に選択することができる。
＜３．その他の変形例＞
以上、本発明に係る携帯端末について、実施の形態に基づいて説明したが、以下のように変形することも可能であり、本発明は上述した実施の形態で示した通りの携帯端末に限られないことは勿論である。
【０１１３】
（１）実施の形態１、２及び変形例において、理論スループットと実スループットとの比較をその比を用いて行う例を示したが、理論スループットと実スループットとの差によって比較してもよい。例えば、理論スループットに対して、実スループットが、予め定められた差以内である場合に、頭打ちになっていると判断しもよい。
（２）実施の形態１、２及び変形例においては、ＴＣＰウィンドウサイズ、ＲＴＴ及びデータ転送量を定期的に測定し、その測定結果に基づいて比較を行う例を示したが、比較の方法は、この例に限らない。データ転送の開始の一定期間において、ＴＣＰウィンドウサイズ、ＲＴＴ及びデータ転送量を測定した結果に基づいて行ってもよい。このように、データ転送開始の一定期間内の結果に基づいて比較することによって、処理を簡素化することができる。
【０１１４】
（３）実施の形態１、２及び変形例において、理論スループットを算出する際に用いるＲＴＴの値を、一定時間内の通信パケットにおけるＲＴＴの平均値としたが、理論スループットを算出する際に用いるＲＴＴの値はこれに限らない。データフローに係る通信パケットを用いて、どのような方法でＲＴＴを算出してもよい。例えば、通信パケットごとのＲＴＴの値を用いてもよいし、一定時間内の通信パケットにおけるＲＴＴではなく、一定の数の通信パケットにおけるＲＴＴの平均値を用いてもよい。
【０１１５】
（４）実施の形態１、２において、送信した通信パケットに対するＡＣＫは、全て正常に受信できるものとして説明した。しかし、実際の通信においては、ネットワーク経路上でＡＣＫがロストしたり、タイムオーバしたりして、ＡＣＫが正常に受信できない場合があり得る。このような場合には、ＴＣＰ／ＩＰの通信プロトコルに従い、通信パケットを再送する等のエラー処理を行うものとする。そして、ＡＣＫを正常に受信できなかった場合には、その通信パケットに係るＲＴＴを加味しないでＴRTTを求めればよい。
【０１１６】
（５）実施の形態２では、優先度を高くするデータフローを１つ選択する例を示したが、優先度を高くするデータフローは１つでなく、複数選択してもよい。通信路における全体のデータ転送量に余裕がある場合には、頭打ちになっているデータフローに係る通信パケットにおいて、複数のデータフローの優先度を高くしても、他のデータフローの通信速度には影響しない場合があり得る。従って、このような場合には、頭打ちになっているデータフローのうちの１つのデータフローではなく、複数のデータフローに係る通信パケットの優先度を高く設定してもよい。
【０１１７】
また、優先度を上げることによるスループット改善の効果が小さいと判断できる場合には、どのデータフローの優先度を高くする処理を行わなくともともよい。例えば、全てのデータフローについて、頭打ちになっているような場合には、もともとの通信路における全体のデータ転送量が少ない場合が考えられ、このような場合に、どれかのデータフローに係る通信パケットの優先度を高く設定すると、他のデータフローの通信速度が更に悪化するおそれがある。このような場合には、どのデータフローの優先度も変更しないようにしてもよい。
【０１１８】
一方、複数のデータフローのうち、一部のデータフローだけが頭打ちになっている場合には、機器の処理能力やネットワークの帯域等に余裕があると考えられる。このような場合には、優先度を上げることによるスループット改善の効果があると判断して、頭打ちになっているデータフローの優先度を高くする設定にしてもよい。
（６）実施の形態１、２及び変形例では、頭打ちになっているデータフローに係る通信パケットの優先度を他のデータフローより高く設定する例で説明したが、優先度の設定は、これに限らない。頭打ちになっているデータフローに係る通信パケットが、他のデータフローに係る通信パケットより、早く送出されるように設定できればよい。例えば、頭打ちになっているデータフロー以外のデータフローに係る通信パケットの優先度を、頭打ちになっているデータフローに係る通信パケットの優先度より低く設定するようにしてもよい。
【０１１９】
なお、本発明に係る携帯端末におけるデータフローに係る通信パケットの生成には、実施の形態で示したようなＰＣ２０から受信した通信パケットについてのヘッダ部の一部を書き換える処理も含む。
また、実施の形態１、２及び変形例では、頭打ちの状態のデータフローに係る通信パケットの優先度を、ユーザが設定できる最高の優先度である「５」に設定する例を示したが、優先度の設定は、最高の優先度に設定しなくてもよい。例えば、ユーザによる他のデータフローに係る通信パケットに設定されている優先度を調べ、それらの優先度よりも高い優先度を設定すればよい。もし、他のデータフローに係る通信パケットに設定されている優先度のうちで最も高い優先度が「１」とすると、頭打ちの状態になっているデータフローに係る通信パケットの優先度を「２」以上に設定すればよい。
【０１２０】
（７）実施の形態１、２では、ＩＰ Ｐｒｅｃｅｄｅｎｃｅの値を変更することによって優先度を設定する例を示したが、優先度の設定はこれに限られない。バッファから出力される通信パケットの優先度が設定できればどのように設定してもよい。例えば、ＬＴＥなどの無線プロトコルで規定されている優先度制御を用いてもよい。
（８）実施の形態１、２及び変形例では、通信パケットを一時的に蓄積するために用いるバッファが１つである場合を示したが、バッファは複数であってもよい。例えば、優先度ごとのバッファを用意し、優先度それぞれに対応したバッファに通信パケットを振り分けて蓄積してもよい。この場合、ＩＰ Ｐｒｅｃｅｄｅｎｃｅに値を必ずしも設定しなくともよい。このようにすることで送出部１０９は、通信パケットを通信部１１０に出力するたびに、バッファに蓄積されている通信パケットの優先度を確認することなく、優先度の高いバッファに蓄積されている通信パケットから優先的に通信部１１０に蓄積されている通信パケットを出力することができる。
【０１２１】
（９）実施の形態１、２及び変形例では、携帯端末１０にテザリング機能により接続されたＰＣ２０からのデータフローについての通信速度の改善を行う例を示したが、データフローは、テザリング機能により携帯端末１０に接続されたＰＣ２０からのデータフローに限らない。携帯端末１０が外部のネットワークに向けて出力するデータフローであればよい。例えば、携帯端末１０自身とサーバ装置５０との間でのデータ通信におけるデータフローであってもよい。
【０１２２】
（１０）複数のデータフローは、それぞれ通信先のＩＰアドレスで区別されるデータフローとしたが、ある基準で区別される一連のデータフローであればよい。例えば、それぞれのデータフローは、ポート番号ごと、アプリケーションごとに区別されるデータフローであってもよい。又は、送信するデータごとに異なるデータフローであってもよい。
図１３は、頭打ちになっているデータフローの一覧を、アプリケーションごとのデータフローの一覧としてユーザに提示するＵＩの例である。
【０１２３】
同図のＵＩ５１０、一覧表示領域５１１、ＯＫボタン５１２、キャンセルボタン５１３は、それぞれ図１２のＵＩ５００、一覧表示領域５０１、ＯＫボタン５１２、キャンセルボタン５１３に相当する。図１２の一覧表示領域５０１では、通信相手のサーバごとに頭打ちになっているデータフローの一覧を表示する例を示したが、図１３の例では、データ通信を行っているアプリケーションごとのデータフローの一覧を表示している。この一覧を提示されたユーザは、一覧の中から最も通信速度を改善したいアプリケーションを選択することができる。
【０１２４】
（１１）実施の形態２では、頭打ちの状態のデータフローが複数ある場合には、予め、データフロー種別ごと定められた優先順位に従って、優先度を高くするデータフローを決定したが、優先度の高くするデータフローの決定は、この方法に限られない。優先度を高くするデータフローを１つ決定できれば、どのような方法であってもよい。例えば、実スループットの理論スループットの比が最も大きいデータフロー、すなわち、実スループットが最も頭打ちになっているデータフローを選択してもよい。
【０１２５】
この方法を用いると、最もスループットの改善が見込めるデータフローを選択することができる。
（１２）実施の形態２及び変形例では、データフロー選択のためのＵＩの表示を、携帯端末１０の表示部１１８に表示する例で説明したが、このＵＩの表示は、携帯端末１０の表示部１１８に表示することに限らない。ユーザがデータフローの選択のための操作ができるように表示されればよい。例えば、携帯端末１０とテザリング機能で通信しているＰＣ２０のディスプレイに表示してもよい。この場合、ユーザは、ＰＣ２０に接続されているキーボードやマウス等を操作して、一覧表示されているデータフローの中から、優先度を高く設定するデータフローを選択することができる。
【０１２６】
（１３）実施の形態において説明した携帯端末１０の各構成要素のうち、全部又は一部をその機能を実行する回路として実現されてもよいし、１又は複数のプロセッサによりプログラムを実行することで実現されてもよい。また、ＩＣ、ＬＳＩその他の集積回路のパッケージとして構成されるものとしてもよい。このパッケージは各種装置に組み込まれて利用に供され、これにより各種装置は、実施の形態で示したような各機能を実現するようになる。
【０１２７】
（１４）実施の形態で示した携帯端末１０の処理（図８〜図１１等で示す処理）を、携帯端末１０のプロセッサ、及びそのプロセッサに接続された各種回路に実行させるための機械語或いは高級言語のプログラムコードからなる制御プログラムを、記録媒体に記録すること、又は各種通信路等を介して流通させ頒布することもできる。このような記録媒体には、ＩＣカード、ハードディスク、光ディスク、フレキシブルディスク、ＲＯＭ、フラッシュメモリ等がある。流通、頒布された制御プログラムはプロセッサに読み出され得るメモリ等に格納されることにより利用に供され、そのプロセッサがその制御プログラムを実行することにより各実施形態で示したような各機能が実現されるようになる。なお、プロセッサは、制御プログラムを直接実行する他、コンパイルして実行或いはインタプリタにより実行してもよい。
【０１２８】
（１５）本発明に係る通信制御方法（図８〜図１１等で示す処理）を、コンピュータプログラムを用いてコンピュータにより実現してもよいし、前記コンピュータプログラムからなるデジタル信号として伝送してもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ―ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
【０１２９】
また、本発明に係るコンピュータプログラム又はデジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
（１６）上記実施の形態及び上記変形例をそれぞれ適宜組み合わせるとしてもよい。
【産業上の利用可能性】
【０１３０】
本発明に係る携帯端末は、ネットワーク通信におけるデータ転送のスループット改善に有用である。
【符号の説明】
【０１３１】
１０  携帯端末
２０  ＰＣ
３０  基地局
４０  ネットワーク
５０  サーバ装置
１０１  制御部
１０２  取得部
１０３  ＲＴＴ計測部
１０４  算出部
１０５  測定部
１０６  タイマー
１０７  出力部
１０８  バッファ
１０９  送出部
１１０  通信部
１１１  アンテナ
１１２  受信部
１１３  比較部
１１４  優先度設定部
１１５  テザリング部
１１６  テザリング用アンテナ
１１８  表示部
１１９  操作部
１５０  タッチパネル
３０１  送信元ポート番号
３０２  宛先ポート番号
３０８  ウィンドウサイズ
４０３  サービスタイプ
４１１  送信元ＩＰアドレス
４１２  宛先ＩＰアドレス
【図１】
2015154320.tif 000003
【図２】
2015154320.tif 000004
【図３】
2015154320.tif 000005
【図４】
2015154320.tif 000006
【図５】
2015154320.tif 000007
【図６】
2015154320.tif 000008
【図７】
2015154320.tif 000009
【図８】
2015154320.tif 000010
【図９】
2015154320.tif 000011
【図１０】
2015154320.tif 000012
【図１１】
2015154320.tif 000013
【図１２】
2015154320.tif 000014
【図１３】
2015154320.tif 000015