(57)【要約】【課題】通信の状況にかかわらず、受信データに対する確認応答を適切に送信して通信性能の低下を低減することが可能な通信装置を提供する。【解決手段】通信装置は、他の装置からパケットを受信する受信手段と、受信手段により所定の数のパケットが受信された際に、他の装置へ確認応答を送信する送信手段と、受信手段によりパケットが連続して受信されているか否かを判定する判定手段と、パケットが連続して受信されていると判定された場合の方が、パケットが連続して受信されていると判定されなかった場合より所定の数が大きくなるよう所定の数を変更して、送信手段に、変更された所定の数のパケットが受信された際に他の装置へ確認応答を送信させるよう制御する制御手段と、を備える。【選択図】図２
2020031346.tif 000002
【特許請求の範囲】
【請求項１】
他の装置からパケットを受信する受信手段と、
前記受信手段により所定の数のパケットが受信された際に、前記他の装置へ確認応答を送信する送信手段と、
前記受信手段によりパケットが連続して受信されているか否かを判定する判定手段と、
パケットが連続して受信されていると判定された場合の方が、パケットが連続して受信されていると判定されなかった場合より前記所定の数が大きくなるよう前記所定の数を変更して、前記送信手段に、変更された前記所定の数のパケットが受信された際に前記他の装置へ前記確認応答を送信させるよう制御する制御手段と、
を備えることを特徴とする通信装置。
【請求項２】
前記制御手段は、パケットが連続して受信されていると判定された場合に、前記所定の数が大きくなるよう変更する、
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記制御手段は、パケットが連続して受信されていないと判定された場合に、前記所定の数が小さくなるよう変更する、
ことを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記判定手段は、所定の時間内に受信されるパケットの数をカウントし、カウントされたパケットの数が閾値以上である場合に、パケットが連続して受信されていると判定する、
ことを特徴とする請求項１から３のいずれか１項に記載の通信装置。
【請求項５】
前記判定手段は、受信されたパケットごとにシーケンス番号およびペイロード長を取得し、前回受信されたパケットのシーケンス番号にペイロード長を加算した値が今回受信されたパケットのシーケンス番号と一致する場合に、今回受信された当該パケットの数をカウントする、
ことを特徴とする請求項４に記載の通信装置。
【請求項６】
パケットを送信して当該パケットの往復遅延時間を計測する計測手段をさらに備え、
前記判定手段は、前記計測手段により計測された前記往復遅延時間が所定の閾値未満である間に受信されたパケットの数をカウントする、
ことを特徴とする請求項４に記載の通信装置。
【請求項７】
前記他の通信装置の輻輳ウインドウサイズを算出する算出手段をさらに備え、
前記判定手段は、前記算出手段により算出された前記他の通信装置の前記輻輳ウインドウサイズが所定の閾値以上である場合に、パケットが連続して受信されていると判定する、
ことを特徴とする請求項１から６のいずれか１項に記載の通信装置。
【請求項８】
前記算出手段は、前記他の通信装置から受信されるパケットを前記通信装置から送信されるパケットとした場合に適用すべき輻輳アルゴリズムに基づいて、前記他の通信の前記輻輳ウインドウサイズを算出する、
ことを特徴とする請求項７に記載の通信装置。
【請求項９】
前記判定手段によるパケットが連続して受信されているか否かの判定結果に基づいて、前記確認応答のタイムアウト時間を変更する変更手段をさらに備える、
ことを特徴とする請求項１から８のいずれか１項に記載の通信装置。
【請求項１０】
前記変更手段は、パケットが連続して受信されていると判定された場合に、前記タイムアウト時間を短くなるよう変更し、パケットが連続して受信されていないと判定された場合に、前記タイムアウト時間を長くなるよう変更する、
ことを特徴とする請求項９に記載の通信装置。
【請求項１１】
他の装置からパケットを受信するステップと、
所定の数のパケットが受信された際に、前記他の装置へ確認応答を送信するステップと、
パケットが連続して受信されているか否かを判定するステップと、
パケットが連続して受信されていると判定された場合の方が、パケットが連続して受信されていると判定されなかった場合より前記所定の数が大きくなるよう前記所定の数を変更して、変更された前記所定の数のパケットが受信された際に前記他の装置へ前記確認応答が送信されるよう制御するステップと、
を備えることを特徴とする通信装置の制御方法。
【請求項１２】
コンピュータを、請求項１から１０のいずれか１項に記載の通信装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、確認応答を送信可能な通信装置、通信装置の制御方法およびプログラムに関する。
【背景技術】
【０００２】
通信プロトコルにおいてデータ通信の信頼性を実現するため、送信側装置から送信されたデータが受信側装置により受信されたことを、受信側装置が送信側装置に通知する手法がある。
例えば、ＴＣＰ（Ｔｒａｎｓｐｏｒｔ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）では、送受信されるデータパケットにシーケンス番号を付与して管理する。受信側装置は、受信したデータパケットのシーケンス番号を参照し、受信済みの最終データを示すシーケンス番号を確認応答（Ａｃｋｎｏｗｌｅｄｇｅ、以下「ＡＣＫ」ともいう。）パケットとして送信側装置に通知する。
このＡＣＫパケットを送信側装置が受信することで、受信側装置によりデータパケットが受信されたことが保証され、データの送信が完了したと判断することができる。一方、所定時間内に送信したデータパケットに対する確認応答（ＡＣＫ）が受信できない場合、送信側装置は、データパケットを送信側装置へ再送するよう制御する。
【０００３】
ＴＣＰ通信における上記の確認応答の手法の１つとして、遅延確認応答（遅延ＡＣＫ）がある。この遅延ＡＣＫは、データパケットを１回受信するごとにＡＣＫパケットを都度送信するのに替えて、複数回のデータパケット受信に対応する複数のＡＣＫパケットを１つにまとめて送信する確認応答である。データパケットを受信する都度、ＡＣＫパケットを送信する必要がないので、ＡＣＫ送受信に係るトラフィックおよび処理負荷が低減され、通信性能を改善できる。
【０００４】
この遅延確認応答（遅延ＡＣＫ）において、受信側装置には最大５００ｍｓのＡＣＫ送信遅延時間（ＡＣＫタイムアウト値）をパラメータとして設定することができ、受信側装置は、設定されたＡＣＫ送信遅延時間の分だけＡＣＫパケットの送信を遅延させる。受信側装置はまた、遅延している間に受信したデータパケットに対するＡＣＫパケットを１つの遅延ＡＣＫパケットにまとめて、遅延時間がタイムアウトした際に送信側装置へ送信する。
ただし、上記のＡＣＫ送信遅延時間内であっても、ＡＣＫ送信頻度の設定により、遅延ＡＣＫパケットが送信側装置へ送信される場合がある。このＡＣＫ送信頻度は、ＭＳＳ（Ｍａｘｉｍｕｍ  Ｓｅｄｍｅｎｔ  Ｓｉｚｅ）以上のセグメント長のデータパケットをまとめて受信できる回数を設定する遅延ＡＣＫのパラメータである（ＴＣＰの場合、最低２パケット）。受信側装置は、ＡＣＫ送信遅延時間内であっても、ＡＣＫ送信頻度に設定された回数、データパケットを受信した際に、遅延ＡＣＫパケットを送信しなければならない。
このように、遅延ＡＣＫを使用するＴＣＰ通信では、設定されたＡＣＫ送信遅延時間およびＡＣＫ送信頻度に従って、遅延ＡＣＫパケットを送信すべきタイミングが規定される。
【０００５】
特許文献１は、送信側装置からデータパケットを再送するタイムアウト値である再送タイマ値（Ｒｅｔｒａｎｓｍｉｓｓｉｏｎ  Ｔｉｍｅ  Ｏｕｔ：ＲＴＯ）を、受信側装置から通知される遅延ＡＣＫ情報に基づいて決定する技術を開示する。
具体的には、特許文献１の受信側装置は、遅延ＡＣＫタイマ値を含む遅延ＡＣＫ情報を、ＴＣＰコネクション時に、または遅延ＡＣＫ送信時やアプリケーションにより、送信側装置へ通知する。送信側装置は、通知された遅延ＡＣＫタイマ値より小さくならないよう、再送タイマ値（ＲＴＯ）の最小値を決定する。
送信側装置のＲＴＯ最小値を、遅延ＡＣＫタイマ値を下回らない限り十分小さく設定可能とすることで、速やかに再送を実行することが可能となり、データ通信性能を向上させることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−１８３５３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の確認応答型の通信装置においては、送信側装置と受信側装置との間のデータ通信の状況に依存して、遅延ＡＣＫパケットのＡＣＫ送信頻度の設定如何で通信性能が低下するおそれがあった。
具体的には、遅延ＡＣＫパケットのＡＣＫ送信頻度を低く設定した場合、送信側装置への遅延ＡＣＫパケットの送信が遅延する。ＴＣＰのフロー制御の下、受信側装置は、データパケット受信により減少したウインドウサイズをＡＣＫパケットと共に送信側装置へ送信し、受信バッファからアプリケーションに受信データが転送された後に拡げたウインドウサイズを送信側装置へ送信する。送信側装置は、ＡＣＫパケットを受信することにより、ＡＣＫパケットと共に通知される受信側装置のウインドウサイズに従って、送信側装置のウインドウサイズを増減し、増減されたウインドウサイズの分のデータパケットをＡＣＫを待たずに連続送信する。
【０００８】
ここで、例えば、スロースタート時やデータパケット再送時等、受信側装置がデータパケットを受信する頻度が低い状況下において、ＡＣＫ送信頻度が低く遅延ＡＣＫの送信間隔が長いと、受信側装置からウインドウサイズを送信側装置へ通知するのが遅延する。このため、ＡＣＫ送信遅延時間がタイムアウトするまで遅延ＡＣＫが送信できずに、送信側装置がウインドウサイズを拡げて大量のデータパケットをまとめて送信できるようになるまでに時間が掛かってしまい、その結果、通信性能が低下しかねない。
【０００９】
一方、遅延ＡＣＫパケットのＡＣＫ送信頻度を高く設定した場合、送信側装置へ送信される遅延ＡＣＫの送信間隔が短くなり、遅延ＡＣＫパケットの数が増加する。特に、ＴＣＰのフロー制御の下、送信側装置のウインドウサイズが拡げられていて、受信側装置が大量のデータパケットを受信する頻度が高い状況下においては、ＡＣＫ送信遅延時間がタイムアウトする前にＡＣＫパケットが頻繁に送信側装置へ送信されてしまう。このため、受信側装置および送信側装置の双方において、遅延ＡＣＫパケットの送受信に係るリソースを多く割り当てなければならず、処理負荷およびトラフィックが増大した結果、通信性能が低下しかねない。
【００１０】
本発明は上記課題に鑑みてなされたものであり、その目的は、通信の状況にかかわらず、受信データに対する確認応答を適切に送信して通信性能の低下を低減することが可能な通信装置、通信装置の制御方法およびプログラムを提供することにある。  
【課題を解決するための手段】
【００１１】
上記課題を解決するため、本発明に係る通信装置のある態様によれば、他の装置からパケットを受信する受信手段と、前記受信手段により所定の数のパケットが受信された際に、前記他の装置へ確認応答を送信する送信手段と、前記受信手段によりパケットが連続して受信されているか否かを判定する判定手段と、パケットが連続して受信されていると判定された場合の方が、パケットが連続して受信されていると判定されなかった場合より前記所定の数が大きくなるよう前記所定の数を変更して、前記送信手段に、変更された前記所定の数のパケットが受信された際に前記他の装置へ前記確認応答を送信させるよう制御する制御手段とを備える通信装置が提供される。
【発明の効果】
【００１２】
本発明によれば、通信の状況にかかわらず、受信データに対する確認応答を適切に送信して通信性能の低下を低減することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の各実施形態に係る通信装置のハードウエア構成の一例を示す図。
【図２】実施形態１に係る通信装置の機能構成の一例を示すブロック図。
【図３】実施形態１に係る通信装置がパケットを受信した際の確認応答処理の概略処理手順の一例を示すフローチャート。
【図４】実施形態１における図３のＡＣＫ送信判断処理（Ｓ３）の詳細処理手順の一例を示すフローチャート。
【図５】実施形態１における図３のＡＣＫ送信頻度変更処理（Ｓ４）の詳細処理手順の一例を示すフローチャート。
【図６】実施形態１における図５の連続性判定処理（Ｓ４１）の詳細処理手順の一例を示すフローチャート。
【図７】実施形態２における図５の連続性判定処理（Ｓ４１）の詳細処理手順の一例を示すフローチャート。
【図８】実施形態３に係る通信装置の機能構成の一例を示すブロック図。
【図９】実施形態３における図５の連続性判定処理（Ｓ４１）の詳細処理手順の一例を示すフローチャート。
【図１０】実施形態４に係る通信装置の機能構成の一例を示すブロック図。
【図１１】実施形態４における図３のＡＣＫ送信判断処理（Ｓ３）の詳細処理手順の一例を示すフローチャート。
【図１２】実施形態１における図３のＡＣＫ送信頻度変更処理（Ｓ４）の詳細処理手順の一例を示すフローチャート。
【発明を実施するための形態】
【００１４】
以下、添付図面を参照して、本発明を実施するための実施形態について詳細に説明する。なお、以下に説明する実施形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正または変更されるべきものであり、本発明は以下の実施形態に限定されるものではない。また、本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１５】
（実施形態１）
本実施形態は、他の通信装置から予め設定された数のパケットを受信するごとに、他の装置へ確認応答を送信する。そして、本実施形態は、他の通信装置からパケットを連続して受信しているか否かを判定し、受信パケットの連続性の判定結果に基づいて、他の通信装置へ送信すべき確認応答の送信頻度を変更する。具体的には、本実施形態は、他の通信装置からパケットを連続して受信していると判定された場合に確認応答の送信頻度が低くなるよう、また他の通信装置からパケットを連続して受信していないと判定された場合に確認応答の送信頻度が高くなるよう変更する。
【００１６】
受信パケットの連続性がある場合には、確認応答の送信頻度がより低く変更されるため、他の通信装置へ送信される確認応答の送信間隔が長くなり、確認応答の送受信に係るリソースや負荷が低減される。
一方、受信パケットの連続性がない場合には、確認応答の送信頻度がより高く変更されれるため、他の通信装置へ確認応答が迅速に送信されることで、他の通信装置でのウインドウサイズの拡張およびデータ送信における遅延が低減される。
これにより、他の通信装置から受信されるパケットの連続性に応じて、確認応答の送信頻度を動的かつ可変に設定することができる。従って、他の通信装置との間の通信の状況にかかわらず、受信データに対する確認応答が適切に送信されて通信性能の低下が有効に低減される。
【００１７】
以下、本実施形態では、通信装置が、ＴＣＰ通信における遅延確認応答、すなわち他の通信装置から送信される複数のデータパケットに対応する複数の確認応答を１つにまとめた確認応答、を送信する場合を例として説明する。
また、以下、確認応答を「ＡＣＫ」と、送信側の通信装置から送信されるデータパケットを単に「パケット」と、受信側の通信装置からパケットの受信に応答して送信側の通信装置へ送信される確認応答（ＡＣＫ）パケットを単に「ＡＣＫ」という。
本実施形態では、パケットロスが発生することなく所定時間内に所定数のパケットが受信できた場合に、パケットが連続して受信されたものと判定する例を説明する。
【００１８】
＜本実施形態のハードウエア構成＞
図１は、本実施形態に係る通信装置のハードウエア構成の一例を示す図である。
図１の通信装置１は、ＲＡＭ１１、ＲＯＭ１２、ＣＰＵ１３、タイマ管理部１４、メディアアクセス制御モジュール（ＭＡＣ）１５、物理レイヤモジュール（ＰＨＹ）１６、およびアンテナ１８を備える。ＲＡＭ１１、ＲＯＭ１２、ＣＰＵ１３、タイマ管理部１４、およびＭＡＣ１５は、システムバス１７により、通信可能に接続される。
なお、通信装置１は、上記のモジュール全てを備えなくともよく、例えばタイマ管理部１４やアンテナ１８等は、必要に応じて省略されてもよいし、図１の構成に加えて入出力インタフェースや外部メモリ等を備えてもよい。
【００１９】
ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１は、ＣＰＵ１３の主メモリ、ワークエリア等として機能し、プログラムやデータを一時的に記憶する。
ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２は、ＣＰＵ１３が各種処理を実行するために必要となる、変更を必要としない制御プログラムやパラメータ等を記憶する不揮発性メモリである。なお、これら制御プログラム等は、外部メモリや着脱可能な記憶媒体（不図示）に記憶されていてもよい。
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１３は、通信装置１における動作を統括的に制御するものであり、システムバス１７を介して、各構成部（１１、１２、１４〜１６）を制御する。すなわち、ＣＰＵ１３は、各種処理の実行に際してＲＯＭ１２から必要なプログラム等をＲＡＭ１１にロードし、当該プログラム等を実行することで各種の機能動作を実現する。
【００２０】
タイマ管理部１４は、ＣＰＵ１３により実行されるプログラムの処理等の時間の経過を管理する。
ＭＡＣ１５は、ＰＨＹ１６およびアンテナ１８を介して無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワークでの通信を行うための通信部であり、ＩＥＥＥ８０２ＯＳＩ参照モデルのデータリンク層中のメディアアクセス制御機能を提供する。ＣＰＵ１３は、ネットワークドライバを実行し、ＭＡＣ１５を制御して、他の装置との間でのデータの送受信を実行する。
ＰＨＹ１６は、アンテナ１８を介して無線ＬＡＮ等のネットワークでの通信を行うための通信部であり、データリンク層の下層である物理層の制御機能を提供する。
【００２１】
通信装置１が他の通信装置とデータ送受信を実行するためのネットワークは、無線ネットワークで構成されてもよい。この無線ネットワークは、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＺｉｇＢｅｅ（登録商標）、ＵＷＢ（Ｕｌｔｒａ  Ｗｉｄｅ  Ｂａｎｄ）等の無線ＰＡＮ（Ｐｅｒｓｏｎａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を含む。また、Ｗｉ−Ｆｉ（Ｗｉｒｅｌｅｓｓ  Ｆｉｄｅｌｉｔｙ）（登録商標）等の無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）や、ＷｉＭＡＸ（登録商標）等の無線ＭＡＮ（Ｍｅｔｒｏｐｏｌｉｔａｎ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を含む。さらに、ＬＴＥ／３Ｇ等の無線ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を含む。
あるいは、ネットワークは、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）等の通信規格に準拠する有線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等の有線ネットワークであってよく、無線ＬＡＮ通信機能と有線ＬＡＮ通信機能を組み合わせてもよい。
なお、ネットワークは、各機器を相互に通信可能に接続できればよく、通信の規格、規模、構成は上記に限定されない。
【００２２】
また、図１の通信装置１の具体例は、各種センサデバイス、デジタルカメラ、デジタルビデオカメラ、携帯電話、スマートフォン、ＰＣ（Ｐｅｒｓｏｎａｌ Ｃｏｍｐｕｔｅｒ）、ノートＰＣ、サーバ等を含むがこれらに限定されない。
【００２３】
＜通信装置１の機能構成＞
図２は、本実施形態に係る通信装置１の機能構成の一例を示すブロック図である。
図２に示す各装置の各機能モジュールのうち、ソフトウエアにより実現される機能については、各機能モジュールの機能を提供するためのプログラムがＲＯＭ１２等のメモリに記憶され、ＲＡＭ１１に読み出してＣＰＵ１３が実行することにより実現される。ハードウエアにより実現される機能については、例えば、所定のコンパイラを用いることで、各機能モジュールの機能を実現するためのプログラムからＦＰＧＡ上に自動的に専用回路を生成すればよい。ＦＰＧＡとは、Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略である。また、ＦＰＧＡと同様にしてＧａｔｅ  Ａｒｒａｙ回路を形成し、ハードウエアとして実現するようにしてもよい。また、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）により実現するようにしてもよい。この場合、専用ハードウエアはＣＰＵ１１の制御に基づいて動作する。
なお、図２に示した機能ブロックの構成は一例であり、複数の機能ブロックが１つの機能ブロックを構成するようにしてもよいし、いずれかの機能ブロックが複数の機能を行うブロックに分かれてもよい。
【００２４】
通信装置１は、制御部２１、ＬＡＮ通信制御部２２、記憶制御部２３、ＴＣＰ／ＩＰ通信制御部２４、ＡＣＫ送信部２５、連続性判定部２６、およびＡＣＫ送信頻度変更部２７を備える。なお、通信装置１が図２のモジュール全てを備えることは必須でない。
制御部２１は、通信装置１が備える各機能モジュール（２２〜２７）を制御して、本実施形態におけるパケット送受信および確認応答処理を含む処理を実行する。
ＬＡＮ通信制御部２２は、ＭＡＣ１５を制御し、他の通信装置とのＬＡＮ通信の制御を実行する。通信装置１が外部の無線アクセスポイント（ＡＰ）を経由して他の通信装置と接続する場合、ＬＡＮ通信制御部２２は、ＭＡＣ１５を制御して無線ＡＰ（不図示）との無線ＬＡＮ通信の制御を行う。ＬＡＮ通信制御部２２はその他、有線ＬＡＮ通信機能等、ＴＣＰ／ＩＰ通信が可能な通信方式であれば他の通信方式を利用してもよい。
【００２５】
記憶制御部２３は、ＲＡＭ１１やＲＯＭ１２を制御し、処理データや画像コンテンツ、映像コンテンツなどの各種データを、これら記憶装置に記憶し、または削除する。なお、本実施形態ではその他、補助記憶装置等の他の記憶装置を利用してもよい。
ＴＣＰ／ＩＰ通信制御部２４は、ＬＡＮ通信制御部２２を利用して、他の通信装置との間でＴＣＰ／ＩＰ方式の通信プロトコル処理および各種通信制御を行う。なお、ＴＣＰ／ＩＰ通信制御部２４は、ＴＣＰ／ＩＰ方式に限らず、確認応答を使用可能な他のプロトコルを利用してもよい。
【００２６】
ＡＣＫ送信部２５は、他の通信装置から受信されるパケットに対して、確認応答であるＡＣＫを当該他の通信装置へ送信する。本実施形態において、ＡＣＫ送信部２５は、ＡＣＫ送信頻度として予め設定されたパケット数の分、他の通信装置からＭＳＳ（Ｍａｘｉｍｕｍ  Ｓｅｇｍｅｎｔ  Ｓｉｚｅ）以上のセグメント長のパケットを受信した際に、１つの遅延ＡＣＫを送信する。このＡＣＫ送信頻度として、ＴＣＰ／ＩＰの場合最低２パケットが設定可能であり、１パケットが設定された場合には、遅延ＡＣＫ送信機能はオフされる。
【００２７】
連続性判定部２６は、他の通信装置から受信されるパケットが、連続的に受信されているか否かを判定する。連続性判定部２６により受信パケットの連続性判定処理の結果は、ＡＣＫ送信頻度変更部２７へ供給される。なお、連続性判定部２６が実行する受信パケットの連続性判定処理の詳細は、図６を参照して後述する。
ＡＣＫ送信頻度変更部２７は、連続性判定部２６から供給される判定結果に従って、ＡＣＫ送信部２５が参照すべきＡＣＫ送信頻度を動的に変更する。ＡＣＫ送信頻度変更部２７によりＡＣＫ送信頻度が変更されると、ＡＣＫ送信部２５が変更されたＡＣＫ送信頻度を参照することにより、他の通信装置へ送信する遅延ＡＣＫの送信頻度が変更される。
【００２８】
＜通信装置１のパケット受信および確認応答処理の概略処理フロー＞
図３は、通信装置１が実行するパケット受信および確認応答処理の概略手順の一例を示すフローチャートである。図３に示す処理は、例えば、他の通信装置からパケットを受信したことを契機に開始されてよい。
通信装置１はＣＰＵ１３が必要なプログラムをＲＯＭ１２または外部メモリから読み出して実行することにより、図３に示す処理を実行することができる。ただし、図２に示す各要素のうち少なくとも一部が専用のハードウエアとして動作することで図３の処理が実現されるようにしてもよい。この場合、専用のハードウエアは、ＣＰＵ１３の制御に基づいて動作する。
【００２９】
Ｓ１で、通信装置１のＬＡＮ通信制御部２２は、他の通信装置からパケットを受信する。他の通信装置から受信されたパケットは、まず、ＬＡＮ通信制御部２２がアクセスおよび管理可能なバッファに保持される。
Ｓ２で、通信装置１のＴＣＰ／ＩＰ通信制御部２４は、ＬＡＮ通信制御部２２が管理するバッファ内に格納された受信パケットを、ＴＣＰ／ＩＰ通信制御部２４がアクセスおよび管理可能な受信バッファにコピーして保持する。
Ｓ３で、通信装置１のＡＣＫ送信部２５は、他の通信装置に対してＡＣＫを送信するか否かを判断する。このＡＣＫ送信判断処理の詳細は、図４を参照して後述する。
【００３０】
Ｓ４で、通信装置１のＡＣＫ送信頻度変更部２７は、連続性判定部２６から供給される受信パケットの連続性の判定結果に基づいて、ＡＣＫの送信頻度を変更するか否かを判定する。ＡＣＫの送信頻度を変更すべきと判定された場合には、ＡＣＫ送信頻度変更部２７は、ＡＣＫ送信頻度を変更する。このＡＣＫ送信頻度変更処理の詳細は、図５を参照して後述する。
なお、Ｓ１〜Ｓ４の処理の処理順序は、図３に示す順序に限定されない。例えば、Ｓ４のＡＣＫパケット送信頻度変更処理は、Ｓ１でパケットが受信された後であれば、Ｓ２の前に実行されてもよく、Ｓ２とＳ３の間に実行されてもよく、Ｓ２およびＳ３のタイミングに依存することなく同時並行で実行されてもよい。
【００３１】
＜ＡＣＫ送信判断処理の詳細処理フロー＞
図４は、図３のＳ３で、通信装置１が実行するＡＣＫパケット送信判断処理の詳細手順の一例を示すフローチャートである。
Ｓ３１で、通信装置１のＡＣＫ送信部２５は、ＴＣＰ／ＩＰ通信制御部２４が管理する受信バッファに、ＭＳＳ以上のセグメントサイズのパケットが、ＡＣＫ送信頻度に設定されたパケット数の分、受信されたか否かを判定する。
受信バッファに受信されたデータパケットの数が、ＡＣＫ送信頻度として設定されたパケット数以上である場合（Ｓ３１：Ｙ）、Ｓ３２に進む。一方、ＡＣＫ送信頻度として設定されたパケット数以上でない場合（Ｓ３１：Ｎ）、Ｓ３２をスキップしてＡＣＫを送信することなく、処理を終了する。
受信バッファに保持されたパケットの数がＡＣＫ送信頻度として設定されたパケット数以上である場合、Ｓ３２で、通信装置１のＡＣＫ送信部２５は、他の通信装置へＡＣＫ（遅延ＡＣＫ）を送信して、処理を終了する。
【００３２】
＜ＡＣＫ送信頻度変更処理の詳細処理フロー＞
図５は、図３のＳ４で、通信装置１が実行するＡＣＫパケット送信頻度変更処理の詳細処理手順の一例を示すフローチャートである。
Ｓ４１で、通信装置１の連続性判定部２６は、他の通信装置から受信されるパケットが、連続して受信されているか否かを判定する。この受信パケットの連続性判定処理の詳細は、図６を参照して後述する。
Ｓ４２で、通信装置１の連続性判定部２６は、Ｓ４１でパケットが連続して受信されていると判定された場合（Ｓ４２：Ｙ）、Ｓ４３に進み、一方、Ｓ４１でパケットが連続して受信されてないと判定された場合（Ｓ４２：Ｎ）、Ｓ４４に進む。
Ｓ４１でパケットが連続して受信されていると判定された場合、Ｓ４３で、通信装置１のＡＣＫ送信頻度変更部２７は、ＡＣＫ送信頻度をより低い頻度に変更する。すなわち、ＡＣＫ送信部２５に設定すべきＡＣＫ送信頻度の値をより大きくなるよう変更する。例えば、ＡＣＫ送信頻度のデフォルト値の２パケットから、５パケットに変更すれば、ＭＳＳ以上のセグメント長のパケットが５回受信された際に、１つの遅延ＡＣＫが他の通信装置へ送信される。
【００３３】
一方、Ｓ４１でパケットが連続して受信されていないと判定された場合、Ｓ４４で、通信装置１のＡＣＫ送信頻度変更部２７は、ＡＣＫ送信頻度をより高い頻度に変更する。すなわち、ＡＣＫ送信部２５に設定すべきＡＣＫ送信頻度の値をより小さくなるよう変更する。例えば、ＡＣＫ送信頻度が５パケットに設定されている場合に、２パケットに変更すれば、ＭＳＳ以上のセグメント長のパケットが２回受信された際に、１つの遅延ＡＣＫが他の通信装置へ送信される。
なお、ＡＣＫ送信頻度変更部２７は、受信パケットに連続性があると判定した場合に、受信パケットに連続性がないと判定した場合より相対的に高いＡＣＫ送信頻度を設定できればよく、このため図５のＳ４３およびＳ４４のいずれかを省略してもよい。
また、図５では、Ｓ４３およびＳ４４で、ＡＣＫ送信頻度を２通りに設定する例が示されているが、ＡＣＫ送信頻度の設定はこれに限定されず、３通り以上の異なるＡＣＫ送信頻度を設定してもよい。
【００３４】
＜受信パケット連続性判定処理の詳細処理フロー＞
図６は、図５のＳ４１で、通信装置１が実行する受信パケットの連続性判定処理の詳細処理手順の一例を示すフローチャートである。
Ｓ４１１で、通信装置１の連続性判定部２６は、タイマ管理部１４を介してタイマの設定時間が経過したか否かを判定する。タイマの設定時間が経過していた場合（Ｓ４１１：Ｙ）、Ｓ４１２に進んで、連続性判定部２６は、タイマを０に初期化すると共に、現在保持している連続受信パケット数のカウンタを０に初期化する。一方、タイマの設定時間が経過していない場合（Ｓ４１１：Ｎ）、Ｓ４１３に進む。
【００３５】
Ｓ４１３で、通信装置１の連続性判定部２６は、ＴＣＰ／ＩＰ通信制御部２４を介して、受信されたパケットのＴＣＰヘッダ中のシーケンス番号およびペイロード長（データ長）を取得して確認する。
Ｓ４１４で、連続性判定部２６は、ＴＣＰ／ＩＰ通信制御部２４を介して、前回のパケット受信処理で最後に受信されたパケットのシーケンス番号にペイロード長を加算した値が、今回受信されたパケットのシーケンス番号と一致するか否かを判定する。パケットのＴＣＰヘッダのシーケンス番号はペイロード中の各バイトのバイト位置を一意に識別する識別番号である。このため、このシーケンス番号にペイロード長を加算することにより、前回のパケットに連続して今回受信されたパケットの正しいシーケンス番号が得られる。一方、前回受信された受信パケットのシーケンス番号にペイロード長を加算した値が、今回受信されたパケットのシーケンス番号と一致しない場合、パケットロス等により受信パケットの連続性が失われたことになる。
【００３６】
前回受信されたパケットのシーケンス番号にペイロード長を加算した値が、今回受信されたパケットのシーケンス番号と一致しない場合（Ｓ４１４：Ｎ）、Ｓ４１５に進む。Ｓ４１５で、連続性判定部２６は、現在保持している連続受信パケット数のカウンタを０に初期化する。一方、前回受信されたパケットのシーケンス番号にペイロード長を加算した値が、今回受信されたパケットのシーケンス番号と一致する場合（Ｓ４１４：Ｙ）Ｓ４１６に進む。
Ｓ４１６で、通信装置１の連続性判定部２６は、現在保持している連続受信パケット数のカウンタに、今回受信したパケット数を加算（カウント）する。
【００３７】
Ｓ４１７で、通信装置１の連続性判定部２６は、現在保持している連続受信パケット数が所定の閾値以上に達したか否かを判定する。連続受信パケット数が所定の閾値未満であった場合（Ｓ４１７：Ｎ）、通信装置１の連続性判定部２６は、受信パケットを連続的に受信していないと判定して、ＡＣＫ送信頻度変更部２７へ当該判定結果を通知する。一方、連続受信パケット数が所定の閾値以上であった場合（Ｓ４１７：Ｙ）、通信装置１の連続性判定部２６は、受信パケットを連続的に受信していると判定し、ＡＣＫ送信頻度変更部２７へ当該判定結果を通知する。
なお、図６のＳ４１７で、連続受信パケット数と比較すべき閾値を複数設定し、データを連続的に受信している状態を複数段階に分けることで、３通り以上の異なるＡＣＫ送信頻度を設定してもよい。
【００３８】
以上説明したように、本実施形態によれば、他の通信装置からパケットを連続して受信しているか否かを判定し、受信パケットの連続性の判定結果に基づいて、他の通信装置へ送信すべき確認応答の送信頻度を変更する。具体的には、本実施形態は、他の通信装置からパケットを連続して受信していると判定された場合に確認応答の送信頻度が低くなるよう、また他の通信装置からパケットを連続して受信していないと判定された場合に確認応答の送信頻度が高くなるよう変更する。
【００３９】
受信パケットの連続性がある場合、例えばバースト的にデータ受信できている場合には、確認応答の送信頻度がより低く変更されるため、他の通信装置へ送信される確認応答の送信間隔が長くなり、確認応答の送受信に係るリソースや負荷が低減される。
一方、受信パケットの連続性がない場合、例えばスロースタート時や輻輳によるパケット再送時には、確認応答の送信頻度がより高く変更される。このため、他の通信装置へ確認応答が迅速に送信されることで、他の通信装置でのウインドウサイズの拡張およびデータ送信における遅延が低減される。
これにより、他の通信装置から受信されるパケットの連続性に応じて、確認応答の送信頻度を動的かつ可変に設定することができる。従って、他の通信装置との間の通信の状況にかかわらず、受信データに対する確認応答が適切に送信されて通信性能の低下が有効に低減される。
【００４０】
（実施形態２）
以下、実施形態２を、図７を参照して、上記の実施形態１と異なる点についてのみ詳細に説明する。実施形態１では、パケットロスが発生することなく所定時間内に所定数のパケットが受信できた場合に、パケットが連続して受信されたものと受信パケットの連続性を判定した。これに対して、本実施形態では、往復遅延時間が所定の閾値内にある間に所定数のパケットが受信できた場合に、パケットが連続して受信されたものと受信パケットの連続性を判定する。
これにより、他の通信装置から受信されるパケットの連続性に応じて、確認応答の送信頻度を動的かつ可変に設定することができる。従って、他の装置との間の通信の状況にかかわらず、受信データに対する確認応答が適切に送信されて通信性能の低下が有効に低減される。
【００４１】
実施形態２に係る通信装置１のハードウエア構成および機能構成は、図１および図２にそれぞれ示される実施形態１と同様である。
実施形態２に係る通信装置１が実行するパケット受信および確認応答処理、確認応答送信判断処理、およびＡＣＫ送信頻度変更処理は、図３ないし図５にそれぞれ示される実施形態１と同様である。
【００４２】
図７は、本実施形態において、図５のＳ４１で、通信装置１が実行する受信パケットの連続性判定処理の詳細処理手順の一例を示すフローチャートである。
Ｓ４１１およびＳ４１２の各処理は、図６に示す実施形態１のＳ４１１およびＳ４１２の処理と同様である。
Ｓ４１１で、通信装置１の連続性判定部２６がタイマの設定時間が経過していないと判定した場合、Ｓ５１で、通信装置１の連続性判定部２６は、通信装置１から送信される送信パケットの往復遅延時間（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ：ＲＴＴ）を計測する。具体的には、連続性判定部２６は、通信装置１から他の通信装置へ送信された送信パケットのＴＣＰヘッダのシーケンス番号と、当該送信パケットに応答して当該他の通信装置から受信されるＡＣＫ（受信パケット）のＡＣＫ番号とを使用する。送信パケットから対応するＡＣＫ受信までの所要時間を計測することで往復遅延時間（ＲＴＴ）を計測することができる。
【００４３】
Ｓ５２で、通信装置１の連続性判定部２６は、Ｓ５１で計測された往復遅延時間が、所定の閾値未満か否かを判定する。往復遅延時間が所定の閾値以上であると判定された場合（Ｓ５２：Ｎ）、連続性判定部２６は、実施形態１と同様、Ｓ４１５に進んで連続受信パケット数のカウンタを０に初期化し、Ｓ４１８でパケットを連続的に受信していないと判定する。
一方、往復遅延時間が所定の閾値未満であると判定された場合（Ｓ５２：Ｙ）、連続性判定部２６は、Ｓ４１６で連続受信パケット数のカウンタを更新する。以降の処理Ｓ４１７ないしＳ４１９は、図６に示す実施形態１のＳ４１７ないしＳ４１９と同様である。
なお、図７では、図６のＳ４１３およびＳ４１４に替えてＳ５１およびＳ５２が実行されるが、本実施形態において、Ｓ４１３およびＳ４１４に加えてＳ５１およびＳ５２を実行することで、パケットロスの判定と往復遅延時間の判定を併用してもよい。
【００４４】
以上説明したように、本実施形態によれば、本実施形態では、往復遅延時間が所定の閾値内にある間に所定数のパケットが受信できた場合に、パケットが連続して受信されたものと受信パケットの連続性を判定する。
通信装置と他の通信装置との間のパケットの往復遅延時間（ＲＴＴ）が所定の閾値未満である間に所定数のパケットを受信できていれば、通信装置が連続してパケットを受信している状況であると推定することができるため、ＡＣＫ送信頻度をより低く変更する。一方、通信装置と他の通信装置との間のパケットの往復遅延時間（ＲＴＴ）が所定の閾値以上であれば、パケットの送受信に遅延が生じ連続性が途切れている状況であると推定することができるため、ＡＣＫ送信頻度をより高く変更する。
これにより、他の通信装置から受信されるパケットの連続性に応じて、確認応答の送信頻度を動的かつ可変に設定することができる。従って、他の装置との間の通信の状況にかかわらず、受信データに対する確認応答が適切に送信されて通信性能の低下が有効に低減される。
【００４５】
（実施形態３）
以下、実施形態３を、図８および図９を参照して、上記の実施形態１と異なる点についてのみ詳細に説明する。実施形態１では、パケットロスが発生することなく所定時間内に所定数のパケットが受信できた場合に、パケットが連続して受信されたものと受信パケットの連続性を判定した。これに対して、本実施形態では、送信側の通信装置が通信状況に応じて送信可能なデータ量を調整するため保持している輻輳ウインドウサイズを受信側通信装置において模擬的に算出する。模擬的に算出された送信側の通信装置の輻輳ウインドウサイズが所定の閾値以上である場合に、パケットが連続して受信されたものと受信パケットの連続性を判定する。
これにより、他の通信装置から受信されるパケットの連続性に応じて、確認応答の送信頻度を動的かつ可変に設定することができる。従って、他の装置との間の通信の状況にかかわらず、受信データに対する確認応答が適切に送信されて通信性能の低下が有効に低減される。
【００４６】
実施形態３に係る通信装置１ａのハードウエア構成は、図１に示される実施形態１と同様である。
図８は、実施形態３に係る通信装置１ａの機能構成の一例を示すブロック図である。図２に示す実施形態１の機能構成に加えて、図８に示すように、実施形態３に係る通信装置１ａは、さらに輻輳ウインドウ推定部２８を備える。
輻輳ウインドウ推定部２８は、通信装置１ａに対向し、パケットを送信する他の通信装置における輻輳ウインドウサイズを推定する。具体的には、輻輳ウインドウ推定部２８は、ＴＣＰ／ＩＰ通信制御部２４を介して、通信装置１ａが受信する受信パケットを送信パケット、送信パケットを受信パケットと仮定する。そして輻輳ウインドウ推定部２８は、通信装置１ａが送信側となる際に適用する輻輳アルゴリズムを適用して、送信側の通信装置の輻輳ウインドウサイズを模擬的に算出する。輻輳ウインドウ推定部２８により推定された模擬的な輻輳ウインドウサイズは、連続性判定部２６へ供給される。
【００４７】
実施形態３に係る通信装置１ａが実行するパケット受信および確認応答処理、ＡＣＫ送信判断処理、およびＡＣＫ送信頻度変更処理は、図３ないし図５にそれぞれ示される実施形態１と同様である。
図９は、本実施形態において、図５のＳ４１で、通信装置１ａが実行する受信パケットの連続性判定処理の詳細処理手順の一例を示すフローチャートである。
Ｓ６１で、通信装置１ａの輻輳ウインドウ推定部２８は、送信側の通信装置における輻輳ウインドウサイズを上記のように模擬的に推定する。
【００４８】
Ｓ６２で、通信装置１ａの連続性判定部２６は、Ｓ６１で輻輳ウインドウ推定部２８により推定された送信側の通信装置の輻輳ウインドウサイズが、所定の閾値以上であるか否かを判定する。推定された送信側の通信装置の輻輳ウインドウサイズが所定の閾値未満である場合（Ｓ６２：Ｎ）、実施形態１と同様、Ｓ４１８で、連続性判定部２６は、パケットを連続的に受信していないと判定する。一方、推定された送信側の通信装置の輻輳ウインドウサイズが所定の閾値以上である場合（Ｓ６２：Ｙ）、実施形態１と同様、Ｓ４１９で、連続性判定部２６は、パケットを連続的に受信していると判定する。
【００４９】
以上説明したように、本実施形態によれば、送信側の通信装置が保持している輻輳ウインドウサイズを受信側通信装置において模擬的に算出する。模擬的に算出された送信側の通信装置の輻輳ウインドウサイズが所定の閾値以上である場合に、パケットが連続して受信されたものと受信パケットの連続性を判定する。
送信側の通信装置について推定される輻輳ウインドウサイズが所定の閾値以上であれば、通信装置が連続してパケットを受信可能な状況であると推定することができるため、ＡＣＫ送信頻度をより低く変更する。一方、送信側の通信装置について推定される輻輳ウインドウサイズが所定の閾値未満であれば、通信装置が速やかに確認応答を送信しなければパケットを連続して受信できない状況であると推定することができるため、ＡＣＫ送信頻度をより高く変更する。
これにより、他の通信装置から受信されるパケットの連続性に応じて、確認応答の送信頻度を動的かつ可変に設定することができる。従って、他の装置との間の通信の状況にかかわらず、受信データに対する確認応答が適切に送信されて通信性能の低下が有効に低減される。
【００５０】
（実施形態４）
以下、実施形態４を、図１０ないし図１２を参照して、上記の各実施形態と異なる点についてのみ詳細に説明する。本実施形態では、送信側の他の通信装置に送信される確認応答の送信頻度を変更するのに加えて、さらにタイマによる確認応答の送信で使用される確認応答送信遅延時間（タイムアウト時間）を変更する。
これにより、他の通信装置から受信されるパケットの連続性に応じて、確認応答の送信頻度とともにタイムアウト時間を動的かつ可変に設定することができる。従って、他の装置との間の通信の状況にかかわらず、受信データに対する確認応答が適切に送信されて通信性能の低下が有効に低減される。
【００５１】
実施形態４に係る通信装置１ｂのハードウエア構成は、図１に示される実施形態１と同様である。
図１０は、実施形態４に係る通信装置１ｂの機能構成の一例を示すブロック図である。図２に示す実施形態１の機能構成に加えて、図１０に示すように、実施形態４に係る通信装置１ｂは、さらに第２のＡＣＫ送信部２９およびタイムアウト時間変更部３０を備える。図１０の第１のＡＣＫ送信部２５は、図２のＡＣＫ送信部２５と同様である。
第２のＡＣＫ送信部２９は、タイマ管理部１４により管理されるタイマを使用して、予め設定されたＡＣＫ送信遅延時間がタイムアウトした際に、送信側の通信装置へＡＣＫ（遅延ＡＣＫ）を送信する。
【００５２】
第１のＡＣＫ送信部２５には、ＡＣＫ送信頻度が予め設定されており、ＭＳＳ以上のセグメント長のデータパケットをＡＣＫ送信頻度に設定された回数分だけ他の通信装置から受信すると、通信装置１ｂは他の通信装置へＡＣＫ（遅延ＡＣＫ）を送信する。これに対して、第２のＡＣＫ送信部２９は、設定されたＡＣＫ送信遅延時間内に、第１のＡＣＫ送信部２５に設定されたＡＣＫ送信頻度に設定された数のパケットを受信できなかった場合に、ＡＣＫ（遅延ＡＣＫ）を他の通信装置へ送信することになる。
タイムアウト時間変更部３０は、第２のＡＣＫ送信部２９に設定されるタイマのタイムアウト時間を変更する。具体的には、タイムアウト時間変更部３０は、連続性判定部２６により判定される受信パケットの連続性に基づいて、他の通信装置へ送信すべきＡＣＫ（遅延ＡＣＫ）のタイムアウト時間の設定を変更する。
【００５３】
実施形態４に係る通信装置１ｂが実行するパケット受信および確認応答処理は、図３に示される実施形態１と同様である。
図１１は、実施形態４に係る通信装置１ｂが実行するＡＣＫ送信判断処理の処理手順の一例を示すフローチャートである。
図１１のＳ３１は、図４に示す実施形態１のＳ３１と同様であり、通信装置１ｂの第１のＡＣＫ送信部２５は、受信したパケット数が、ＡＣＫ送信頻度として設定されたパケット数以上であるか否かを判定する。
【００５４】
Ｓ３１で受信したパケット数がＡＣＫ送信頻度として設定されたパケット数以上であると判定された場合（Ｓ３１：Ｙ）、図４に示す実施形態１のＳ３２と同様、Ｓ３４で、第１のＡＣＫ送信部２５は、送信側の通信装置へＡＣＫ（遅延ＡＣＫ）を送信する。そして、第２のＡＣＫ送信部２９は、Ｓ３５で第２のＡＣＫ送信部２９によるＡＣＫ送信の判定に使用するタイマを０にリセットする。
一方、本実施形態において、Ｓ３１で受信したパケット数がＡＣＫ送信頻度として設定されたパケット数以上でないと判定された場合（Ｓ３１：Ｎ）、Ｓ３３で、第２のＡＣＫ送信部２９は、設定されたタイムアウト時間が経過したか否かを判定する。
タイムアウト時間が経過したと判定された場合（Ｓ３３：Ｙ）、Ｓ３４へ進み、第２のＡＣＫ送信部２９は、ＡＣＫ（遅延ＡＣＫ）を送信し、Ｓ３５で第２のＡＣＫ送信部２９によるＡＣＫ送信の判定に使用するタイマを０にリセットする。一方、タイムアウト時間が未だ経過していない場合（Ｓ３３：N）、ＡＣＫ（遅延ＡＣＫ）を送信することなく、処理を終了する。
【００５５】
図１２は、実施形態４に係る通信装置１ｂが実行するＡＣＫ送信頻度変更処理の詳細処理手順の一例を示すフローチャートである。
図１２のＳ４１ないしＳ４４は、図５に示す実施形態１のＳ４１ないしＳ４４と同様である。
本実施形態において、Ｓ４２でパケットを連続的に受信していると判定された場合（Ｓ４２：Ｙ）、Ｓ４３で、ＡＣＫ送信頻度変更部２７は、より低いＡＣＫ送信頻度に設定する。その後、Ｓ４５で、タイムアウト時間変更部３０は、設定されているタイムアウト時間をより短く変更する。Ｓ４５で設定されるより短いタイムアウト時間は、予め決められた値を使用してもよく、例えば計測されたＲＴＴの値に基づいて動的に決定されてもよい。
【００５６】
一方、Ｓ４２でパケットを連続的に受信していないと判定された場合（Ｓ４２：N）、Ｓ４６で、タイムアウト時間変更部３０は、設定されているタイムアウト時間をより長く変更する。Ｓ４６で設定されるより長いタイムアウト時間は、予め決められた値を使用してもよく、例えば計測されたＲＴＴの値に基づいて動的に決定されてもよい。
なお、図１２のＳ４５およびＳ４６では、タイムアウト時間を２通りに設定する例を説明したが、第１のＡＣＫ送信部２５に設定されるＡＣＫ送信頻度の場合と同様、３通り以上の異なるタイムアウト時間を設定してもよい。
また、図１２では、受信パケットの連続性に応じて、ＡＣＫ送信頻度およびタイムアウト時間の双方を変更する例を説明したが、Ｓ４３およびＳ４４を省略してタイムアウト時間のみを変更してもよく、またＳ４５およびＳ４６のいずれか一方を省略してもよい。
【００５７】
以上説明したように、本実施形態によれば、送信側の通信装置に送信される確認応答の送信頻度を変更するのに加えて、さらにタイマによる確認応答の送信で使用される確認応答送信遅延時間（タイムアウト時間）を変更する。
受信パケットの連続性がある場合、例えばバースト的にデータ受信できている場合には、確認応答の送信頻度がより低く変更される。このため、例えばＭＳＳ未満の小さいセグメント長のパケットを連続して受信している状況であると確認応答の送信が遅延し、送信側の通信装置からのパケット送信も遅延してしまう。本実施形態では、受信パケットの連続性がある場合に、タイムアウト時間を短く変更するため、データを連続してバースト受信している際に速やかに確認応答を送信側の通信装置へ送信することで、データ送信の遅延が低減される。
【００５８】
一方、本実施形態では、受信パケットの連続性がない場合、例えばスロースタート時や輻輳によるパケット再送時には、タイムアウト時間を長く設定する。このため、確認応答送信遅延時間のタイムアウトによる確認応答を送信側の他の通信装置へ送信せず、高く変更された確認応答の送信頻度に従って頻繁に確認応答を他の装置へ送信することで、通信性能の低下を低減する。
これにより、他の通信装置から受信されるパケットの連続性に応じて、確認応答の送信頻度とともにタイムアウト時間を動的かつ可変に設定することができる。従って、他の装置との間の通信の状況にかかわらず、受信データに対する確認応答が適切に送信されて通信性能の低下が有効に低減される。
＜他の実施形態＞
なお、上述した各実施形態は、その複数を組み合わせて実現することが可能である。
また、本発明は、上述の実施形態の１以上の機能を実現するプログラムによっても実現可能である。すなわち、そのプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータ（またはＣＰＵやＭＰＵ等）における１つ以上のプロセッサーがプログラムを読出し実行する処理により実現可能である。また、そのプログラムをコンピュータ可読な記録媒体に記録して提供してもよい。
また、上述した各実施形態を、複数の機器、例えば、ホストコンピュータ、インタフェース機器、撮像装置、ウェブアプリケーション等から構成されるシステムに適用してもよく、１つの機器からなる装置に適用してもよい。
また、コンピュータが読みだしたプログラムを実行することにより、実施形態の機能が実現されるものに限定されない。例えば、プログラムの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって上記した実施形態の機能が実現されてもよい。
【符号の説明】
【００５９】
１…通信装置、１１…ＲＡＭ、１２…ＲＯＭ、１３…ＣＰＵ、１４…タイマ管理部、１５…ＭＡＣ、１６…ＰＨＹ、１７…バス、２１…制御部、２２…ＬＡＮ通信制御部、２３…記憶制御部、２４…ＴＣＰ／ＩＰ通信制御部、２５…ＡＣＫ送信部、２６…連続性判定部、２７…ＡＣＫ送信頻度変更部、２８…輻輳ウインドウ推定部、２９…第２のＡＣＫ送信部、３０…タイムアウト時間変更部
【図１】
2020031346.tif 000003
【図２】
2020031346.tif 000004
【図３】
2020031346.tif 000005
【図４】
2020031346.tif 000006
【図５】
2020031346.tif 000007
【図６】
2020031346.tif 000008
【図７】
2020031346.tif 000009
【図８】
2020031346.tif 000010
【図９】
2020031346.tif 000011
【図１０】
2020031346.tif 000012
【図１１】
2020031346.tif 000013
【図１２】
2020031346.tif 000014