(57)【要約】【目的】  本発明は、パケットを再送するまでの時間をいたずらに増加させることなく、スプリアス再送が起こる可能性を増加させないようにすることを目的とする。【解決手段】  本発明の通信装置は、所定数未満の送信パケットを受信すると当該送信パケットの受信から所定時間後に応答パケットを送信する第１のモードと、前記所定数の送信パケットを受信すると前記所定時間を待つことなく応答パケットを送信する第２のモードとを有する相手装置に対して、送信パケットを送信してから当該送信パケットに対する応答パケットを前記相手装置から受信するまでの往復時間を複数回測定し、複数回測定された往復時間のうち、前記相手装置が前記第１のモードで応答パケットを送信した場合の往復時間を選択し、選択された往復時間に基づいて、送信パケットを再送するまでの再送時間の設定処理を行う。【選択図】  図３
2015015534.tif 000002
【特許請求の範囲】
【請求項１】
通信装置であって、
所定数未満の送信パケットを受信すると当該送信パケットの受信から所定時間後に応答パケットを送信する第１のモードと、前記所定数の送信パケットを受信すると前記所定時間を待つことなく前記応答パケットを送信する第２のモードとを有する相手装置に対して、送信パケットを送信する送信手段と、
前記送信手段により送信された送信パケットを前記相手装置に再送する再送手段と、
前記送信手段が前記相手装置に送信パケットを送信してから、前記応答パケットを前記相手装置から受信するまでの往復時間を複数回測定する測定手段と、
前記測定手段により複数回測定された前記往復時間のうち、前記相手装置が前記第１のモードで前記応答パケットを送信した場合の前記往復時間を選択する選択手段と、
前記選択手段により選択された前記往復時間に基づいて、前記送信手段により送信されたパケットを前記再送手段が再送するまでの再送時間の設定処理を行う設定手段と、
を有することを特徴とする通信装置。
【請求項２】
前記設定手段は、複数回測定された前記往復時間と、複数回測定された前記往復時間の偏差とに基づいて、前記再送時間の設定処理を行うことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記選択手段は、前記測定手段により複数回測定された前記往復時間のうち、最大の前記往復時間を選択することで、前記相手装置が前記第１のモードで前記応答パケットを送信した場合の前記往復時間を選択することを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記設定手段は、前記再送時間の下限値を設定することを特徴とする請求項１乃至３のいずれか１項に記載の通信装置。
【請求項５】
前記設定手段は、前記再送時間の下限値として、前記往復時間の偏差に所定の係数を掛けた値と、前記選択手段により選択された前記往復時間と、所定値と、の合計値を設定することを特徴とする請求項１乃至４のいずれか１項に記載の通信装置。
【請求項６】
前記往復時間は、ＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）であることを特徴とする請求項１乃至５のいずれか１項に記載の通信装置。
【請求項７】
前記設定手段は、前記再送時間の設定処理を周期的に行うことを特徴とする請求項１乃至６のいずれか１項に記載の通信装置。
【請求項８】
前記設定手段が前記再送時間の設定処理を行ってから、前記送信手段が所定の数の送信パケットを送信すると、前記設定手段は前記再送時間の設定処理を再度行うことを特徴とする請求項１乃至７のいずれか１項に記載の通信装置。
【請求項９】
前記設定手段が前記再送時間の設定処理を行ってから、前記送信手段が所定のデータ量の送信パケットを送信すると、前記設定手段は前記再送時間の設定処理を再度行うことを特徴とする請求項１乃至７のいずれか１項に記載の通信装置。
【請求項１０】
前記設定手段が前記再送時間の設定処理を行ってから、前記送信手段が送信した送信パケットに対する応答パケットを所定の数、受信すると、前記設定手段は前記再送時間の設定処理を再度行うことを特徴とする請求項１乃至７のいずれか１項に記載の通信装置。
【請求項１１】
前記測定手段は、前記送信手段がＮコのパケットを送信してから、前記応答パケットを前記相手装置から受信するまでの往復時間と、前記送信手段がＮ＋１コのパケットを送信してから、前記応答パケットを前記相手装置から受信するまでの往復時間と、を測定することを特徴とする請求項１乃至１０のいずれか１項に記載の通信装置。
【請求項１２】
前記設定手段は、所定の条件に応じて、前記選択手段により選択された前記往復時間に基づいて、前記送信手段により送信されたパケットを前記再送手段が再送するまでの再送時間の設定処理を行うことを特徴とする請求項１乃至１１のいずれか１項に記載の通信装置。
【請求項１３】
通信装置の制御方法であって、
所定数未満の送信パケットを受信すると当該送信パケットの受信から所定時間後に応答パケットを送信する第１のモードと、前記所定数の送信パケットを受信すると前記所定時間を待つことなく前記応答パケットを送信する第２のモードとを有する相手装置に対して、送信パケットを送信する送信工程と、
前記送信工程において送信された送信パケットを前記相手装置に再送する再送工程と、
前記送信工程において前記相手装置に送信パケットが送信されてから、前記応答パケットを前記相手装置から受信するまでの往復時間を複数回測定する測定工程と、
前記測定工程において複数回測定された前記往復時間のうち、前記相手装置が前記第１のモードで前記応答パケットを送信した場合の前記往復時間を選択する選択工程と、
前記選択工程において選択された前記往復時間に基づいて、前記送信工程において送信されたパケットを前記再送工程において再送されるまでの再送時間の設定処理を行う設定工程と、
を有することを特徴とする制御方法。
【請求項１４】
コンピュータを、請求項１乃至１２のいずれか１項に記載の通信装置として動作させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、再送時間を設定する処理に関する。
【背景技術】
【０００２】
ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）には、データパケット（以下、パケット）の受信側が確認応答（ＡＣＫ）を返送することで、送信側が受信側にパケットが到達したことを確認できる仕組みがある。
【０００３】
ＴＣＰでは、所定数（例えば、２つ）のパケットを受信すると、所定数分のパケットに対して１つのＡＣＫを送信する遅延ＡＣＫが規定されている。ＴＣＰでは、所定数のパケットに満たない数のパケットを受信し、その後にパケットを受信しない場合であっても、最後にパケットを受信してから第１の時間が経過すると、ＡＣＫを送信することも規定されている。この第１の時間のことを遅延ＡＣＫタイマ値と呼ぶ。
【０００４】
一方、ＴＣＰでは、パケットを送信してから第２の時間が経過しても当該パケットに対するＡＣＫを受信しなかった場合に、当該パケットを再送するデータ再送が規定されている。この第２の時間を再送タイマ値（ＲＴＯ、Ｒｅｔｒａｎｓｍｉｓｓｉｏｎ  Ｔｉｍｅ  Ｏｕｔ）と呼ぶ。再送タイマ値は、パケットを送信してから当該パケットに対するＡＣＫを受信するまでの往復時間（ＲＴＴ、Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）に基づいて設定される（特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２１９４０８
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、相手装置は、所定数未満のパケットを受信して遅延ＡＣＫタイマ値の時間が経過してから遅延ＡＣＫを送信する場合と、所定数のパケットを受信して遅延ＡＣＫタイマ値の時間が経過する前に遅延ＡＣＫを送信する場合がある。
【０００７】
従来、遅延ＡＣＫタイマ値の時間が経過してから遅延ＡＣＫが送信された場合に測定されるＲＴＴと、遅延ＡＣＫタイマ値の時間が経過する前に遅延ＡＣＫが送信された場合に測定されるＲＴＴとを区別することなく用いて、ＲＴＯの設定処理を行っていた。
【０００８】
その結果、遅延ＡＣＫタイマ値の時間が経過する前に遅延ＡＣＫが送信された場合に測定されるＲＴＴに基づいてＲＴＯが設定されてしまい、ＲＴＯが遅延ＡＣＫタイマ値を下回ってしまう場合があった。ＲＴＯが遅延ＡＣＫタイマ値を下回ると、パケットの送信に成功しているにも拘わらず、パケットを再送するスプリアス再送が発生する可能性があった。
【０００９】
上記の課題を鑑み、本発明は、パケットを再送するまでの時間をいたずらに増加させることなく、スプリアス再送が起こる可能性を増加させないようにすることを目的とする。
【課題を解決するための手段】
【００１０】
上述の目的を達成するために、本発明の通信装置は、所定数未満の送信パケットを受信すると当該送信パケットの受信から所定時間後に応答パケットを送信する第１のモードと、前記所定数の送信パケットを受信すると前記所定時間を待つことなく前記応答パケットを送信する第２のモードとを有する相手装置に対して、送信パケットを送信する送信手段と、前記送信手段により送信された送信パケットを前記相手装置に再送する再送手段と、前記送信手段が前記相手装置に送信パケットを送信してから、前記応答パケットを前記相手装置から受信するまでの往復時間を複数回測定する測定手段と、前記測定手段により複数回測定された前記往復時間のうち、前記相手装置が前記第１のモードで前記応答パケットを送信した場合の前記往復時間を選択する選択手段と、前記選択手段により選択された前記往復時間に基づいて、前記送信手段により送信されたパケットを前記再送手段が再送するまでの再送時間の設定処理を行う設定手段と、を有する。
【発明の効果】
【００１１】
本発明によれば、相手装置がパケットを受信してから所定時間後に応答パケットを送信した場合の往復時間を選択的に用いて再送時間の設定処理を行うので、再送時間をいたずらに増加させることなく、スプリアス再送が起こる可能性を増加させないようにできる。
【図面の簡単な説明】
【００１２】
【図１】システム構成図。
【図２】通信装置１の処理ブロック図。
【図３】通信装置１が実現するフローチャート。
【図４】通信装置１と相手装置２との間のシーケンスチャート。
【発明を実施するための形態】
【００１３】
本実施形態では、通信装置がＥｔｈｅｒｎｅｔ（登録商標）（イーサネット（登録商標））を使ってＴＣＰに準拠した通信を行う場合について説明する。ＴＣＰとは、Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌの略である。
【００１４】
図１に本実施形態のシステム構成を示す。通信装置１は、相手装置２とローカルネットワーク３を介して接続されている。通信装置１と相手装置２とはＴＣＰ／ＩＰ通信を行う。ＩＰとは、Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌの略である。
【００１５】
なお、本実施形態では、通信装置１と相手装置２とはローカルネットワーク３を介して有線接続されているが、これに限らず、無線接続される構成であってもよい。また、通信装置１および相手装置２の具体例として、ＰＣ、プリンタ、スキャナ、ストレージ、データ入力装置、データ出力装置等がある。
【００１６】
図２に、通信装置１の処理ブロック図を示す。図２に示した一部または全ての構成はハードウェアである。
【００１７】
ＴＣＰ処理部１００はＴＣＰのプロトコル処理を行う。ＩＰ処理部１０１はＩＰのプロトコル処理を行う。ネットワークインタフェイス１０２はネットワーク上の他の装置へパケットを送信し、また、ネットワーク上の他の装置からパケットを受信する。
【００１８】
具体的には、ネットワークインタフェイス１０２は、送信データをＥｔｈｅｒｎｅｔ（登録商標）に準拠した送信パケット（Ｅｔｈｅｒｎｅｔ（登録商標）パケット）に変換して、Ｅｔｈｅｒｎｅｔ（登録商標）へ送出する。また、ネットワークインタフェイス１０２は、Ｅｔｈｅｒｎｅｔ（登録商標）からＥｔｈｅｒｎｅｔ（登録商標）パケットを受信して当該パケットからデータを取り出す。
【００１９】
アプリケーション処理部１０３はＴＣＰ／ＩＰ通信を行うアプリケーションを制御する。ここで、アプリケーションとは例えば、ストレージ等に画像を転送する画像転送アプリケーションや、プリンタ等に印刷データを送信する印刷データ送信アプリケーションである。
【００２０】
メモリ１０４はアプリケーション処理部１０３が処理するデータ（例えば、画像データや印刷データ等）を記憶する。制御部１０５は通信装置１の全体を制御する。なお、一部をハードウェアとして構成した場合、残りの構成は、制御部１０５がメモリ１０４からプログラムを読み出して実行することにより実現されるソフトウェアである。この場合、メモリ１０４は各構成を実現するためのプログラムも記憶する。
【００２１】
また、ＴＣＰ処理部１００は次の処理ブロックで構成されている。
【００２２】
コネクション処理部１０６は、相手装置２とのＴＣＰコネクションの確立および切断処理を行う。再送タイマ制御部１０７はＴＣＰ再送タイマの動作を制御する。ＴＣＰ再送タイマで計時される再送時間（以下、再送タイマ時間ＲＴＯ）の設定、タイマの起動、停止を行う。なお、ＲＴＯは、Ｒｅｔｒａｎｓｍｉｓｓｉｏｎ  Ｔｉｍｅ  Ｏｕｔの略である。再送タイマ制御部１０７は、更に、ＲＴＯの下限値を示すＲＴＯ最小値の設定処理も行う。
【００２３】
再送処理制御部１０８は再送タイマ制御部１０７において再送タイマがタイムアウトした場合にＴＣＰ再送処理を行う。
【００２４】
第１のデータ送信処理部１０９は相手装置２の遅延ＡＣＫタイマ時間を推定するために、相手装置２において輻輳が生じない範囲において、Ｎコのパケット（ここではＮ＝２とする）をまとめて連続送信する。但し、Ｎは２以上である。ここで、連続送信とは、相手装置２からのＡＣＫパケットを受信するより前にパケットを送信することを指す。なお、ＡＣＫパケットとは、送信したデータパケットに対する確認応答パケット（以下、単にＡＣＫと称する）である。
【００２５】
第１のＲＴＴ測定処理部１１０は第１のデータ送信処理部１０９によって送信されたパケットのパケット往復時間ＲＴＴを測定する。具体的には、通信装置１がパケットを送信してから当該パケットに対するＡＣＫを受信するまでの時間を測定することでＲＴＴが得られる。測定して得られた複数のＲＴＴを記憶する。ここで、ＲＴＴとはＲｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅの略である。
【００２６】
第２のデータ送信処理部１１１は相手装置２の遅延ＡＣＫタイマ時間を推定するために、相手装置２において輻輳が生じない範囲において、Ｍコのパケット（ここではＭ＝３とする）をまとめて連続送信する。なお、ＭはＮより大きい値であり、ＭはＮの整数倍ではないものとする。
【００２７】
これは、ＭがＮの整数倍である場合、相手装置２においてＮコのパケットを受信するとＡＣＫを送信するように設定されている場合、Ｎコのパケットを連続送信してもＭコのパケットを連続送信しても、相手装置２において遅延ＡＣＫタイマが作動しない。
【００２８】
ＭをＮの整数倍にしないようにすることで、Ｎコのパケットの連続送信、もしくは、Ｍコのパケットの連続送信の少なくともいずれかで、相手装置２において遅延ＡＣＫタイマを作動させることができる。
【００２９】
第２のＲＴＴ測定処理部１１２は第２のデータ送信処理部１１１によって送信されたパケットのＲＴＴを測定する。そして、第２のＲＴＴ測定処理部１１２は、測定して得られた複数のＲＴＴを記憶する。
【００３０】
遅延ＡＣＫ＋ＲＴＴ選択部１１３は第１のＲＴＴ測定処理部１１０と第２のＲＴＴ測定処理部１１２で記憶している複数のＲＴＴ測定結果の中から最大値を特定し、それをＲＴＴ＿ｄｅｌａｙＡＣＫとして記憶する。
【００３１】
ＲＴＴ偏差測定処理部１１４は、第１のＲＴＴ測定処理部１１０と第２のＲＴＴ測定処理部１１２で記憶している複数のＲＴＴ測定結果から平滑化されたＲＴＴ値を計算して保持する。更に、ＲＴＴ偏差測定処理部１１４は、平滑化されたＲＴＴ値との偏差の統計値（例えば分散値や標準偏差値）を計算してＲＴＴ＿ｄｅｖｉａｔｉｏｎとして保持する。
【００３２】
ＲＴＯ最小値決定部１１５は遅延ＡＣＫ＋ＲＴＴ選択部１１３で得られたＲＴＴ＿ｄｅｌａｙＡＣＫとＲＴＴ偏差測定処理部１１４で得られたＲＴＴ＿ｄｅｖｉａｔｉｏｎを用いて再送タイムアウト時間ＲＴＯの最小値を決定する。再送タイマ制御部１０７はＲＴＯ最小値を制御の下限値として動作する。具体的には、ＲＴＯ最小値の決定は以下の式（１）を用いて計算する。
ＲＴＯ最小値＝ＲＴＴ＿ｄｅｌａｙＡＣＫ＋ＲＴＴ＿ｄｅｖｉａｔｉｏｎ×Ｋ＋α…式（１）
（Ｋは係数、αは定数）
即ち、ＲＴＯ最小値として、ＲＴＴの偏差値に所定の係数を掛けた値と、複数のＲＴＴ測定結果の中から選択されたＲＴＴ値と、所定値であるαと、の合計値を設定する。
【００３３】
なお、αを定数ではなく、「ＲＴＴ＿ｄｅｌａｙＡＣＫ＋ＲＴＴ＿ｄｅｖｉａｔｉｏｎ×Ｋ」部分の大きさに応じた値としてもよい。決定されたＲＴＯ最小値は再送タイマ制御部１０７に通知して、再送タイマ制御部１０７にて記憶される。
【００３４】
ＲＴＯ最小値再決定判定部１１６は所定条件に基づいてＲＴＯ最小値の再決定を行うか否かを判定する。ここでは、前回、ＲＴＯ最小値を決定してから所定時間が経過した場合に、ＲＴＯ最小値の設定処理を再度行うと判定する。
【００３５】
しかしこれに限らず、前回、ＲＴＯ最小値を決定してから所定のパケット数を送信した場合に、ＲＴＯ最小値の設定処理を再度行うと判定するようにしてもよい。また、前回、ＲＴＯ最小値を決定してから所定のデータ量を送信した場合に、ＲＴＯ最小値の設定処理を再度行うと判定するようにしてもよい。また、前回、ＲＴＯ最小値を決定してから所定数のＡＣＫパケットを受信した場合に、ＲＴＯ最小値の設定処理を再度行うと判定するようにしてもよい。このようにして、ＲＴＯ最小値の設定処理が周期的に行われる。
【００３６】
送信処理部１１７はＴＣＰデータ送信処理を行う。更に、送信処理部１１７は、ＴＣＰデータパケットの送信および受信したＡＣＫに対する処理およびＲＴＴ測定を行う。受信処理部１１８はＴＣＰデータ受信処理を行う。ＴＣＰデータパケットの受信およびそれに応じたＡＣＫの送信処理を行う。
【００３７】
図３に、通信装置１の通信機能が起動された際に、通信装置１の制御部１０５がメモリ１０４に記憶されているプログラムを読み出すことで実現されるフローチャートを示す。また、図４に通信装置１と相手装置２とのシーケンスチャートを示す。
【００３８】
通信装置１と相手装置２は予めローカルネットワーク３に接続されているとする。また、通信装置１はデジタルカメラであり、相手装置２は画像保存用のＰＣであるとする。通信装置１では不図示の撮像部によって撮像され生成された複数の画像データをメモリ１０４に記憶している。この複数の画像データを相手装置２へ転送する処理について以下に説明する。
【００３９】
ユーザ指示により通信装置１の通信機能が起動すると、再送タイマ制御部１０７はＲＴＯ最小値の初期値を設定する（Ｓ３０１）。ここでは、ＲＴＯ最小値としてデフォルト値として定められた「１秒」が設定される。
【００４０】
次に、アプリケーション処理部１０３からの要求に従い、コネクション処理部１０６は相手装置２とのＴＣＰコネクション確立処理を行う（Ｓ３０２）。ＴＣＰコネクション確立処理は、ＴＣＰで定められたコネクション確立手順である３ウェイハンドシェイクにより行われる。
【００４１】
ＴＣＰコネクションが確立すると、第１のデータ送信処理部１０９は、Ｎコのパケット（ここではＮ＝２とする）をまとめて送信し（図４におけるＤＡＴＡ  ＃１とＤＡＴＡ  ＃２）、相手装置２からのＡＣＫを待つ（Ｓ３０３）。
【００４２】
更に、ＡＣＫを受信すると第１のＲＴＴ測定処理部１１０は、このＡＣＫに対応するパケットの送信時間からＡＣＫ受信時間までの間隔をＲＴＴ値として計算し、ＲＴＴ値を記憶する（Ｓ３０３）。複数のＡＣＫが受信される場合は、第１のＲＴＴ測定処理部１１０は複数のＲＴＴ値を計算し、記憶する。
【００４３】
ここでは、２パケット分のデータ送信に対して、１つのＡＣＫを受信したとする（図４におけるＤＡＴＡ＃２に対するＡＣＫ＃２）。ここで、相手装置２からＡＣＫが１つしか送信されなかったのは、相手装置２が所定数である２コのパケットに対して１コのＡＣＫを返すという遅延ＡＣＫの仕組みを採用しているためである。
【００４４】
所定数（２コ）のパケットを受信した相手装置２は、遅延ＡＣＫタイマのタイムアウトを待つことなく速やかにＡＣＫを送信する（第２のモード）。つまり、ここで測定されたＲＴＴ値は遅延ＡＣＫタイマ時間を含まないものである。なお、第１のモードについては後述する。
【００４５】
次に、第２のデータ送信処理部１１１は、３パケット分のデータ（ここではＭ＝３とした）をまとめて送信し（図４におけるＤＡＴＡ＃３とＤＡＴＡ＃４とＤＡＴＡ＃５）、ＡＣＫを待つ（Ｓ３０４）。
【００４６】
更に、ＡＣＫを受信すると第２のＲＴＴ測定処理部１１２では、このＡＣＫに対応するパケットの送信時間からＡＣＫ受信時間までの間隔をＲＴＴ値として計算し、ＲＴＴ値を記憶する（Ｓ３０４）。複数のＡＣＫが受信される場合は複数のＲＴＴ値を計算し、記憶する。
【００４７】
ここでは、３パケット分のデータ送信に対して、２つのＡＣＫを受信したとする（図４ではＤＡＴＡ＃４に対するＡＣＫ＃４とＤＡＴＡ＃５に対するＡＣＫ＃５）。
【００４８】
ここで、２つのＡＣＫとは、相手装置２が２個のデータパケットを受信して速やかに送信したＡＣＫ（ＡＣＫ＃４）と、遅延ＡＣＫタイマのタイムアウトによって送信されたＡＣＫ（ＡＣＫ＃５）である。
【００４９】
相手装置２は、ＡＣＫ＃４を送信した後に、所定数未満（２未満）のパケット（ＤＡＴＡ＃５）を受信した。従って、相手装置２は、ＤＡＴＡ＃５の受信から所定時間後、即ち、遅延ＡＣＫタイマ時間後に、ＤＡＴＡ＃５に対する応答パケットであるＡＣＫ＃５を送信する（第１のモード）。つまり、ここで測定された２つのＲＴＴ値のうち１つは遅延ＡＣＫタイマ時間を含むものである。このように、ＲＴＴは複数回測定される。
【００５０】
なお、アプリケーション処理部１０３から要求された送信データのサイズが少なく、送信パケット数が所定数（ここでは、５）に満たない場合、ＲＴＯ最小値は初期値のまま変更されることなくその後のデータ送信およびコネクション切断まで保持される。
【００５１】
ここでは、５パケット以上が送信されたものとして説明する。
【００５２】
次に、遅延ＡＣＫ＋ＲＴＴ選択部１１３は、第１のＲＴＴ測定処理部１１０および第２のＲＴＴ測定処理部１１２で記憶している複数のＲＴＴ測定結果の中からＲＴＴ最大値を選択する（Ｓ３０５）。そして、それをＲＴＴ＿ｄｅｌａｙＡＣＫとして遅延ＡＣＫ＋ＲＴＴ選択部で記憶する。ここでは、ＤＡＴＡ＃５に対するＡＣＫ＃５のＲＴＴ値が最大であったとする。第１のＲＴＴ測定処理部１１０および第２のＲＴＴ測定処理部１１２で記憶している複数のＲＴＴ測定結果の中から選択されたＲＴＴ最大値は、ＤＡＴＡ＃５に対するＲＴＴ値のように、遅延ＡＣＫタイムアウト時間を含んでいる可能性が極めて高い。従って、ＲＴＴ最大値を選択することで、相手装置２が上述の第１のモードでＡＣＫを送信した場合のＲＴＴを選択できる。
【００５３】
次に、ＲＴＴ偏差測定処理部１１４は、送信処理部１１７で測定されたＲＴＴ値のばらつきを示す偏差値を計算する（Ｓ３０６）。ＲＴＴ偏差測定処理部１１４は、これまでの複数回のＲＴＴ測定結果から平滑化されたＲＴＴ値を計算して保持し、更に、平滑化されたＲＴＴ値との偏差の統計値（例えば分散値や標準偏差値）を計算してＲＴＴ＿ｄｅｖｉａｔｉｏｎとして保持する。
【００５４】
ＲＴＯ最小値決定部１１５は遅延ＡＣＫ＋ＲＴＴ選択部１１３で得られたＲＴＴ＿ｄｅｌａｙＡＣＫとＲＴＴ偏差測定処理部１１４で得られたＲＴＴ＿ｄｅｖｉａｔｉｏｎを用いてＲＴＯ最小値を決定する（Ｓ３０７）。
【００５５】
具体的には、ＲＴＯ最小値の決定は上述の式（１）を用いて計算する。ここでは計算の結果、ＲＴＯ最小値が２５０ミリ秒となったとする。このようにして決定されたＲＴＯ最小値は再送タイマ制御部１０７に通知される。そして、再送タイマ制御部１０７において記憶、設定される。
【００５６】
次に、送信処理部１１７はアプリケーション処理部１０３から要求されたデータの送信を行い、そのデータ送信に対するＲＴＴ測定も行う（Ｓ３０８）。
【００５７】
そして、送信処理部１１７は、アプリケーション処理部１０３から要求されたすべてのデータ送信が完了したかどうかを判定する（Ｓ３０９）。すべてのデータ送信が完了されたと判定された場合（Ｓ３０９のＹｅｓ）、コネクション処理部１０６はＴＣＰコネクション切断処理を行い、処理フローを終了する（Ｓ３１０）。
【００５８】
一方、データ送信が完了していないと判定された場合（Ｓ３０９のＮｏ）、ＲＴＯ最小値再決定判定部１１６は、前回、ＲＴＯ最小値を決定してから所定時間が経過したかどうかを確認する（Ｓ３１１）。所定時間を経過していた場合には（Ｓ３１１のＹｅｓ）、Ｓ３０３に戻り、ＲＴＯの最小値は再決定される。一方、所定時間を経過していない場合には（Ｓ１１３のＮｏ）、Ｓ３０８に戻り、データ送信が継続される。
【００５９】
また、ステップＳ３１１において、所定時間の経過に代えて、前回、ＲＴＯ最小値を決定してから所定のパケット数を送信した場合に、ＲＴＯ最小値の設定処理を再度行うと判定するようにしてもよい。また、前回、ＲＴＯ最小値を決定してから所定のデータ量を送信した場合に、ＲＴＯ最小値の設定処理を再度行うと判定するようにしてもよい。また、前回、ＲＴＯ最小値を決定してから所定数のＡＣＫパケットを受信した場合に、ＲＴＯ最小値の設定処理を再度行うと判定するようにしてもよい。このようにして、ＲＴＯ最小値の設定処理が周期的に行われる。
【００６０】
以上のようにして、第１のデータ送信処理部１０９と第２のデータ送信処理部１１１とが異なる数のパケットを連続送信することで、相手装置２が第１のモードでＡＣＫを送信する状況を発生させる。そして、第１のモードでＡＣＫが発生した場合のＲＴＴ測定値を選択的に用いて、再送時間であるＲＴＯの最小値の設定処理を行う。
【００６１】
これにより、ＲＴＯ最小値を不必要に大きくすることなく、データ送信中に再送すべき状況が発生した場合に、速やかに再送を実施することが可能となり、再送が発生するような通信環境においてデータ通信性能が向上する。
【００６２】
なお、本実施形態では、ＲＴＯの最小値の設定処理を行う例を示したが、ＲＴＯの最小値ではなく、ＲＴＯ自体を、上記の方法で設定するようにしてもよい。
【００６３】
また、本実施形態では、第１のデータ送信処理部１０９と第２のデータ送信処理部１１１とが異なる数のパケットを連続送信することで、相手装置２が第１のモードでＡＣＫを送信する状況を発生させた。しかしこれに限らず、Ｘを１から所定値（例えば、４）まで連続送信するパケット数を１ずつ増加させながら送信するスイープデータ送信を行うようにしてもよい。
【００６４】
また、上述の実施形態では、相手装置２が、２コのパケットに対して１コのＡＣＫを返すという遅延ＡＣＫの仕組みを採用している例を説明した。しかしこれに限らず、任意の数のパケットに対して１コのＡＣＫを返すという遅延ＡＣＫの仕組みを採用している場合であっても、本発明を適用できる。
【００６５】
例えば、相手装置２が、３コのパケットに対して１コのＡＣＫを返すという遅延ＡＣＫの仕組みを採用している場合について説明する。
【００６６】
この場合、第１のデータ送信処理部１０９が２コのパケットを連続送信した場合も、第２のデータ送信処理部１１１が３コのパケットを連続送信した場合も、相手装置２は遅延ＡＣＫタイマのタイムアウトによって送信されたＡＣＫを送信する。従って、いずれの場合のＲＴＴ値を採用した場合であっても、その値は、相手装置２が上述の第１のモードでＡＣＫを送信した場合のＲＴＴ値となる。
【００６７】
その結果、相手装置２が、３コのパケットに対して１コのＡＣＫを返すという遅延ＡＣＫの仕組みを採用している場合であっても、本発明の効果を得ることができる。
【００６８】
本発明は前述の機能を実現するソフトウェアのプログラムコードを記録した記録媒体をシステムあるいは装置に供給し、システムあるいは装置のコンピュータ（ＣＰＵ、ＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行するようにしてもよい。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００６９】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤなどを用いることができる。
【００７０】
また、コンピュータが読み出したプログラムコードを実行することにより、前述の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳが実際の処理の一部または全部を行い、前述の機能を実現してもよい。ＯＳとは、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍの略である。
【００７１】
さらに、記憶媒体から読み出されたプログラムコードを、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込む。そして、そのプログラムコードの指示に基づき、機能拡張ボードや機能拡張ユニットに備わるＣＰＵが実際の処理の一部または全部を行い、前述の機能を実現してもよい。
【００７２】
上記の実施形態は、本発明を実施するための一例を示すものであり、本発明の趣旨を逸脱しない限り種々の変更が可能である。
【符号の説明】
【００７３】
１  通信装置
２  相手装置
３  Ｅｔｈｅｒｎｅｔ（登録商標）
【図１】
2015015534.tif 000003
【図２】
2015015534.tif 000004
【図３】
2015015534.tif 000005
【図４】
2015015534.tif 000006