(57)【要約】［課題］  送信したデータパケットが連続して多数消失してしまう状況になっても、そのような状況が解消した場合に即座に通信性能を改善できるようにする。［解決手段］  受信端末は、受信したデータパケットの確認応答（ＡＣＫ）パケットを送信後、次のデータパケットが到着しないと判断する未着判定時間を設定する。未着判定時間内に次のデータパケットが到着しない場合、受信端末は、次のデータパケットの送信を促す再送要求（ＲＡＣＫ）パケットを未着判定時間間隔で繰返し送信する。送信端末は、受信したＡＣＫパケットおよびＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、受信端末に未到達のデータパケットを特定して再送する。ここで、時刻情報は、受信端末がＡＣＫパケットおよびＲＡＣＫパケットの送信時にそれぞれ付すタイムスタンプ、または送信端末がＡＣＫパケットおよびＲＡＣＫパケットの受信時にそれぞれ付すタイムスタンプである。
2018155406.tif 000002
【特許請求の範囲】
【請求項１】
受信したデータパケットの確認応答（ＡＣＫ、acknowledgement）パケットを送信後、次のデータパケットが到着しないと判断する未着判定時間を設定し、前記未着判定時間内に次のデータパケットが到着しない場合は、当該次のデータパケットの送信を促す再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを前記未着判定時間間隔で繰返し送信する受信端末と、
前記ＡＣＫパケットを受信した以降に前記ＲＡＣＫパケットを前記受信端末から受信すると、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの時刻情報と今回受信した前記ＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、前記受信端末に未到達のデータパケットを特定して再送する送信端末と、を含み、
前記時刻情報は、前記受信端末が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの送信時にそれぞれ付すタイムスタンプ、または前記送信端末が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする通信システム。
【請求項２】
送信したデータパケットに対して受信側が返信する確認応答（ＡＣＫ、acknowledgement）パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを受信すると、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの時刻情報と今回受信した前記ＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送する再送制御手段を含み、
前記時刻情報は、前記受信側が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの送信時にそれぞれ付すタイムスタンプ、または前記再送制御手段が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする通信装置。
【請求項３】
前記再送制御手段は、
今回受信した前記ＲＡＣＫパケットの前記時刻情報と、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの前記時刻情報との時間差を示す再送ＡＣＫ間隔時間に基づいて、前記受信側に未到達のデータパケットを特定するＡＣＫ再送判定手段と、
前記特定した前記受信側に未到達のデータパケットに対し、ネットワークの状況を考慮して決定した量の再送データを決定する再送レート判定手段と、
を含むことを特徴とする請求項２に記載の通信装置。
【請求項４】
前記ＡＣＫ再送判定手段は、前記ＡＣＫパケットで確認応答を受けてから送信したデータパケットを含め、当該データパケットの送信時刻から前記再送ＡＣＫ間隔時間の間に送信したデータパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする請求項３に記載の通信装置。
【請求項５】
前記ＡＣＫ再送判定手段は、前記再送ＡＣＫ間隔時間がＲＴＴ（Round Trip Time）に占める割合に、輻輳ウィンドウサイズを乗じたデータ量のパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする請求項３に記載の通信装置。
【請求項６】
前記再送レート判定手段は、前記特定した前記受信側に未到達のデータパケットに対し、輻輳ウィンドウサイズとの関係で送信可能なデータ量を判定することを特徴とする請求項３乃至請求項５のいずれかに記載の通信装置。
【請求項７】
前記送信端末は、請求項２乃至請求項６のいずれかに記載の通信装置であることを特徴とする請求項１に記載の通信システム。
【請求項８】
送信したデータパケットに対して受信側が返信する確認応答（ＡＣＫ、acknowledgement）パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを受信し、
直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの時刻情報と、今回受信した前記ＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送し、
前記時刻情報は、前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの送信時にそれぞれ付されるタイムスタンプ、または前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの受信時にそれぞれ付されるタイムスタンプである
ことを特徴とする再送制御方法。
【請求項９】
前記受信側に未到達のデータパケットは、今回受信した前記ＲＡＣＫパケットの前記時刻情報と、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの前記時刻情報との時間差を示す再送ＡＣＫ間隔時間に基づいて特定し、当該特定した前記受信側に未到達のデータパケットに対し、ネットワークの状況を考慮して決定した量の再送データを決定することを特徴とする請求項８に記載の再送制御方法。
【請求項１０】
前記ＡＣＫパケットで確認応答を受けてから送信したデータパケットを含め、当該データパケットの送信時刻から前記再送ＡＣＫ間隔時間の間に送信したデータパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする請求項９に記載の再送制御方法。
【請求項１１】
前記再送ＡＣＫ間隔時間がＲＴＴ（Round Trip Time）に占める割合に、輻輳ウィンドウサイズを乗じたデータ量のパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする請求項９に記載の再送制御方法。
【請求項１２】
前記特定した前記受信側に未到達のデータパケットに対し、輻輳ウィンドウサイズとの関係で送信可能なデータ量を判定することを特徴とする請求項９乃至１１のいずれかに記載の再送制御方法。
【請求項１３】
コンピュータを、
送信したデータパケットに対して受信側が返信する確認応答（ＡＣＫ、acknowledgement）パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを受信すると、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの時刻情報と、今回受信した前記ＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送する再送制御機能手段として機能させ、
前記時刻情報は、前記受信側が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの送信時にそれぞれ付すタイムスタンプ、または前記再送制御機能手段が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする再送制御プログラムの記録媒体。
【請求項１４】
前記再送制御機能手段は、今回受信した前記ＲＡＣＫパケットの前記時刻情報と、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの前記時刻情報との時間差を示す再送ＡＣＫ間隔時間に基づいて、前記受信側に未到達のデータパケットを特定するＡＣＫ再送判定機能手段と、前記特定した前記受信側に未到達のデータパケットに対し、ネットワークの状況を考慮して決定した量の再送データを決定する再送レート判定機能手段と、を含むことを特徴とする請求項１３に記載の再送制御プログラムの記録媒体。
【請求項１５】
前記ＡＣＫ再送判定機能手段は、前記ＡＣＫパケットで確認応答を受けてから送信したデータパケットを含め、当該データパケットの送信時刻から前記再送ＡＣＫ間隔時間の間に送信したデータパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする請求項１４に記載の再送制御プログラムの記録媒体。
【請求項１６】
前記ＡＣＫ再送判定機能手段は、前記再送ＡＣＫ間隔時間がＲＴＴ（Round Trip Time）に占める割合に、輻輳ウィンドウサイズを乗じたデータ量のパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする請求項１４に記載の再送制御プログラムの記録媒体。
【請求項１７】
再送レート判定機能手段は、前記特定した前記受信側に未到達のデータパケットに対し、輻輳ウィンドウサイズとの関係で送信可能なデータ量を判定することを特徴とする請求項１４乃至請求項１６のいずれかに記載の再送制御プログラムの記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、通信装置、方法およびプログラムに関し、特に、ＴＣＰ（Transmission Control Protocol）による再送制御を用いる通信システム、通信装置、方法およびプログラムに関する。
【背景技術】
【０００２】
ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）は、インターネット等の通信ネットワークにおいて通信の信頼性を確保できる通信プロトコルとして広く用いられている。そして、ＴＣＰは、信頼性の高い通信を行うために、確認応答、再送制御、輻輳回避のための輻輳制御の機能を有している。【０００３】
ＴＣＰが具備する確認応答、再送制御、輻輳制御を以下に概観する。【０００４】
確認応答は、送信端末が送信したデータパケットに対して、受信端末がその受信を確認したことを示す確認応答（ＡＣＫ、Acknowledgement）パケットを送信端末に返信する。この確認応答パケットを、以降、ＡＣＫパケットとも称する。【０００５】
送信端末が送信するデータパケットにはシーケンス番号が付与されており、受信端末は、そのデータパケットに対して返信するＡＣＫパケットのＡＣＫ番号を、そのデータパケットに付与されたシーケンス番号と受信したデータサイズで更新する。また、送信端末は、受信したＡＣＫパケットが示すＡＣＫ番号を次に送信するデータパケットのシーケンス番号とする。これにより、受信端末は、次に受信を期待するデータパケットのシーケンス番号をＡＣＫ番号として送信端末に通知する。そして、送信端末はそのＡＣＫパケットを受信することにより、受信端末がどこまでのシーケンス番号のデータパケットを受信したかを把握する。【０００６】
また、ＡＣＫパケットには、フロー制御を行うためのウィンドウサイズが受信端末の受信バッファ容量に応じて設定され、広告ウィンドウとして示される。つまり、データ受信により受信バッファ容量が減少した場合にはウィンドウサイズを小さく設定し、上位アプリケーションによりデータが読み出されて受信バッファ容量が増加した場合にはウィンドウサイズを大きく設定する。【０００７】
再送制御は、送信したデータパケットが通信ネットワークにおいて消失したことを検出した場合に、送信端末がその送信したデータパケットを再送信する制御である。【０００８】
送信端末は、ＡＣＫパケットの受信状況に応じて、タイムアウト再送と高速再転送の２種類の再送制御を行う。【０００９】
タイムアウト再送は、送信したデータパケットの受信確認のＡＣＫパケットを、送信端末が所定時間待っても受信できなかった場合に、その受信確認がされないデータパケットを再送信するものである。【００１０】
例えば、送信したデータパケットが通信ネットワークの中で消失した場合、受信端末はＡＣＫ番号を更新したＡＣＫパケットを送信できない。そのため、送信端末は対応するＡＣＫパケットを所定時間の間待っても受信できないときは、そのデータが受信端末に到達していないと判断し、最後に受け取ったＡＣＫ番号で示されるシーケンス番号のデータパケットを再送する。【００１１】
送信端末は、タイムアウト再送の準備のために、データパケットを送信すると、それに対応するＡＣＫパケットの返信を待受けるための再送タイマ（ＲＴＯ、Retransmission Time Out）を初期時間に設定してタイマスタートする。【００１２】
再送タイマの設定時間は、短く設定するとデータ転送に遅延が生じた場合に、通信ネットワークでパケットが消失しない場合でも誤再送が行われ、通信効率を悪化させてしまう懸念がある。そのため、再送タイマの設定時間は、通信ネットワークにおけるパケット往復時間ＲＴＴ（Round Trip Time）に対して十分なマージンを取って設定される。ＲＦＣ（Request for Comments）による規定では、ＲＴＴの変動履歴に４を乗じた値を初期時間としている。【００１３】
確認応答のＡＣＫパケットが受信端末から返ってこないまま再送タイマがタイムアウトすると、確認応答が得られなかったデータパケットを１つだけ受信端末へ再送する。そして、再送タイマが作動するたびに、次の再送タイマの設定時間は２倍ずつ長くなるように規定されている。【００１４】
高速再転送は、受信端末からの再送要求に応じて再送を行う再送制御である。【００１５】
送信端末は、受信端末から通知されたウィンドウサイズで許容される数のデータパケットを、ＡＣＫパケットを待たずに連続して送信することができる。この場合、受信端末も、まとめて受信したデータパケットに対して、正常に連続受信したシーケンス番号を示した１つのＡＣＫパケットを返す。送信端末はこのように遅れて到着するＡＣＫパケットを見て正常に受信されたかどうかを判断する。【００１６】
受信端末は、受信したデータパケットのシーケンス番号に基づいて、シーケンス番号が欠落して受信していないデータパケットがあることを識別すると、欠落したシーケンス番号を送信端末に通知して、対応するデータパケットの再送を要求する。【００１７】
欠落したシーケンス番号は、直近に正常受信したデータパケットに対して返信したＡＣＫパケットと同じＡＣＫ番号を持つ重複ＡＣＫパケットを送信することにより通知する。つまり、重複ＡＣＫパケットのＡＣＫ番号は、直近に受信確認したデータパケットの次に受信を期待しているデータパケットのシーケンス番号であり、それは欠落したシーケンス番号である。【００１８】
そして、受信端末は、再送を要求したシーケンス番号のデータパケットを受信するまで重複ＡＣＫパケットを送信する。つまり、後続して別のシーケンス番号のデータパケットを正常に受信した場合であっても、欠落したシーケンス番号を通知する重複ＡＣＫパケットを送信する。【００１９】
送信側は重複ＡＣＫパケットを３回受け取った時点で未着のデータパケットがあることを知る。１回目、２回目の重複ＡＣＫパケットで再送しないのは、受信側でデータパケットの到着順序が入れ替わっただけである可能性を考慮している。【００２０】
再送を要求したシーケンス番号のデータパケットを受信すると、受信装置は、それまで正常受信できているデータパケットの最新のシーケンス番号をＡＣＫパケットで送信装置に通知して、以後のデータパケットの送受信が続行される。【００２１】
また、途中のデータパケットが抜けている場合、受信端末が抜けたデータパケットをＳＡＣＫ（Selective ACK、選択的確認応答）により送信端末に通知する再送制御のオプションもある。送信端末はＳＡＣＫの内容を見て、抜けている部分のデータパケットだけを送りなおす。【００２２】
ＴＣＰは上記の確認応答と再送制御を行いつつ輻輳回避のための輻輳制御を実施している。輻輳制御は、送信端末において、通信状況によって送信可能なデータ量を増減させるための値であるｃｗｎｄ（Congestion Window、輻輳ウィンドウ）を用いて行う。ｃｗｎｄは、一回に連続送信を許容するパケット数（ウィンドウサイズ）を示し、当初は小さく設定され、受信端末からＡＣＫパケットを受信する毎に少しずつ大きく設定される。【００２３】
ＴＣＰでは、パケットロスが発生した場合にそのまま送信を続けるとさらにエラーや輻輳が発生する可能性があることから、ｃｗｎｄを小さく設定することで輻輳回避を図っている。ｃｗｎｄは、タイムアウト再送時に設定されるものと高速再転送時に設定されるものとの２種類がある。【００２４】
タイムアウト再送が起きるのは、通常、通信ネットワークが非常に輻輳している場合や、重大な故障が発生していると場合と考えられる。そのため、タイムアウト再送が発生した時にはｃｗｎｄを初期状態にリセットして、送信するパケット数を大きく絞り込む。初期状態は通常は１である。【００２５】
高速再転送による再送が起きるのは、通信ネットワークが軽度に輻輳しており、受信端末に到着したデータパケットに抜けがあった程度で、複数個のデータパケットが消失するような大きな障害は発生していないと考えられている。そのため、高速再転送による再送があった場合は、ｃｗｎｄを１／２に設定して送信するパケット数を半分に絞り込む。【００２６】
なお、ウィンドウには、受信端末が持つバッファの空き容量を示し、ＡＣＫパケットに書き込んで送信端末に知らせるａｗｎｄ（Advertised Window、広告ウィンドウ）がある。また、直近のＡＣＫパケットで通知されたａｗｎｄをｒｗｎｄ（Receive Window、受信ウィンドウ）と称する。送信端末は、ｃｗｎｄとｒｗｎｄの小さい方の値を用いてデータ転送の輻輳制御を行う。【００２７】
上記に概観したＴＣＰの機能に関連して、通信ネットワークでデータを送受信する際にパケットの消失を検出し、消失したパケットデータの再送を送信側の通信装置に要求する技術が特許文献１乃至特許文献５に開示されている。【００２８】
特許文献１は、オーディオデータおよびビデオデータを符号化したデータストリームをリアルタイムに配送するためのＲＴＰ（Real-time Transport Protocol）、ＲＴＣＰ（Real-time Transport Control Protocol）を扱う通信装置に関する。特許文献１は、高速再転送において、欠落したパケットデータが検出できるのは欠落したシーケンス番号の後ろのシーケンス番号を持つパケットデータを受信したタイミングなのでリアルタイム性に欠けるという課題を解決する。【００２９】
特許文献１は、受信側において所定の時間間隔を計時してパケットデータの再送を要求する技術を開示する。当該技術によれば、パケットデータを前回受信してから所定の時間内に前回受信したパケットデータに続いて受信すべきパケットデータを受信していない場合に、送信元に再送要求ＮＡＣＫ（Negative ACK）を送信してパケットデータの再送を要求する。また、再送要求ＮＡＣＫとして、最新に受信したパケットデータのシーケンス番号に「１」を加算した再送要求シーケンス番号を使うとしている。【００３０】
特許文献２は、高速再転送で受信側から再送要求されてデータパケットを再送信した後、当該再送データパケットに対する確認応答を受信する前にタイムアウトとなった場合に、タイムアウト再送で重複した再送信をしてしまうという課題を解決する。【００３１】
特許文献２は、このような重複再送を防止するために、送信側で、再送要求に対して実際に行われた再送との関連において、受信確認応答がされていない既送信データパケットについてのタイムアウト時間を増加させる制御を行っている。【００３２】
特許文献３は、物理伝送媒体が中断し、再び利用可能になった後のＴＣＰコネクションの再開時間を少なくしてＴＣＰデータ伝送プロセスを改善する技術を開示する。特許文献３が開示する技術は、サーバ（送信側）からのデータフローが中断されたことをクライアント（受信側）が検知すると、クライアントは同じＡＣＫメッセージを繰り返してサーバに送ることでデータパケットの再送を促すように構成している。当該技術によれば、クライアントはサーバから受信したデータパケットに対するＡＣＫを送信した後に、事前設定された時間Ｔ１を有するタイマをスタートする。タイマはサーバからデータパケットを受信するとストップする。クライアントは時間Ｔ１のタイムアウトにより、サーバからの次のデータパケットが届かないことを検出し、その場合は同じＡＣＫメッセージを再送する。このように構成することで、中断していた物理伝送媒体が再び利用可能になった後で、データ転送が中断されたままの時間を短くすることができる。【００３３】
特許文献４は、送信端末が送信したデータが受信端末に到達し、その確認応答のＡＣＫパケットがネットワーク中で消失して送信端末に到達しない場合の対処方法に関する技術を開示する。このような状況になった場合、送信端末でのタイムアウト再送により、本来は必要のないデータまで再送してしまい、ネットワークのスループットを低下させてしまう。また、ＡＣＫパケットを受信しないことにより、送信端末は輻輳ウィンドウを縮小してしまい、送信するデータの量を不必要に減少させてしまう。【００３４】
特許文献４が開示する技術では、受信端末がＡＣＫパケットを送信してから所定の時間内に送信端末から新たなデータを受信したか否かに基づいて、ＡＣＫパケットの再送の要否を判定する。受信端末は、所定の時間内に送信端末から新たなデータを受信しない場合に、ＡＣＫパケットの再送を行う。そのため、受信端末が送信したＡＣＫパケットがネットワークで消失しても、送信端末は再送されるＡＣＫパケットを再送タイマのタイムアウト時間前に受け取ることができる。【００３５】
特許文献４が開示する技術では、上記の所定の時間を送信端末の再送タイマのタイムアウト時間よりも短く設定することで、送信端末での再送タイムアウト前にＡＣＫを再送することができる。これにより、不要なデータの再送を回避し、送信データ量を維持することができる。【００３６】
なお、再送するＡＣＫパケットには、高速再転送で使用される３つの重複ＡＣＫパケットと区別できるように、再送ＡＣＫパケットであることを示す所定の情報が付加されている。【００３７】
さらに、特許文献５は、パケットのロスが検知されたとき、未着パケットの再送を要求するパケットを送信装置に送信する技術を開示する。
【先行技術文献】
【特許文献】
【００３８】
【特許文献１】特開２００５−０２０５９０号公報
【特許文献２】特開２００８−２８３５２３号公報
【特許文献３】特許第５１８５９５５号公報
【特許文献４】国際公開第２０１３／１２５１７５号
【特許文献５】特開２００５−１９８０５５号公報
【発明の概要】
【発明が解決しようとする課題】
【００３９】
インターネットや無線通信システムにおいては、しばしば通信方向毎の可用性が非対称であり、送信データは消失するものの、逆方向の確認応答（ＡＣＫ）は到達できる場合がある。つまり、送信端末から受信端末への回線品質が悪くなり、送信したデータパケットが連続して多数消失してしまうが、受信端末から送信端末への回線品質は正常に保たれている環境を想定する。【００４０】
特許文献１は、受信端末側で未受信のデータパケットがあることを検出して、送信端末にその再送を要求する技術である。【００４１】
送信端末から受信端末に送信されたデータパケットのうち、最初のデータパケットは受信端末に届くが、それ以降のデータパケットが連続して多数消失してしまう場合を考えてみる。受信端末は最初に受信したデータパケットに対するＡＣＫパケットを送信端末に返送する。しかし、最初に受信したデータパケット以降のデータパケットは未受信となる。そのため、受信端末は最初のデータパケットを受信してから許容パケット時間間隔経過後に再送を要求する再送要求ＮＡＣＫを送信端末に返送する。送信端末は再送要求ＮＡＣＫを受信できるので、要求されたデータパケットを再送するが、その再送データパケットも消失してしまう。同じ再送要求ＮＡＣＫを所定の時間間隔で繰り返して送信できるように構成したとしても、再送要求ＮＡＣＫを受信する度に要求された同じデータパケットを再送するだけである。【００４２】
その後、送信端末から受信端末への回線品質が改善され、送信端末からのデータパケットが受信端末に到達するようになった状況を想定する。送信端末は再送要求ＮＡＣＫで指定されたデータパケットを再送するだけで、受信端末からの再送要求を受けるまで、次のデータパケットを再送できない。特許文献１の技術では、データパケットが連続して多数消失してしまったような場合、どれだけの量のデータが消失したのかということを把握することができない。そのため、回線が回復しても、受信端末からの再送要求を逐次受けてから再送が行われるので、消失したデータパケットを受信端末が受信するまでに時間がかかり、すぐには通信性能を改善することができない。【００４３】
特許文献２は、送信側で、高速再転送による再送との関連において、受信確認応答がされていない既送信データパケットについてのタイムアウト再送を極力減らす技術である。【００４４】
送信端末から受信端末に送信された最初のデータパケットは受信端末に届くが、それ以降のデータパケットが連続して多数消失してしまうような場合、受信端末は重複ＡＣＫパケットを送信することができない。そのため、特許文献２が開示する技術では、送信端末においてタイムアウト再送が繰り返し行われることになる。そして、回線が回復してもデータ転送のスループットを大きく低下させる。【００４５】
特許文献３は、物理伝送媒体が中断し、送信側からのデータパケットが届かなくなった場合に、受信側が所定のタイムアウトにより同じＡＣＫメッセージを繰り返して送信側に送ることでデータパケットの再送を促すようにした技術である。【００４６】
受信端末から送信端末への回線品質は正常に保たれていることから、受信端末がタイムアウト毎に送信するＡＣＫメッセージは繰返し送信側に送られる。そして、送信端末は再送を促されたデータパケットを繰返し再送する。その後、送信端末から受信端末への回線品質が改善され、送信端末からのデータパケットが受信端末に到達するようになった場合、特許文献１に開示の技術と同様の課題がある。つまり、データパケットが連続して多数消失してしまったような状況下では、回線が回復しても、送信端末は再送を促されたデータパケットを再送するだけである。そのため、消失したデータパケットを受信端末が受信するまでに時間がかかり、すぐには通信性能を改善することができない。【００４７】
特許文献４は、受信端末がＡＣＫパケットを送信してから所定の時間内に送信端末から新たなデータを受信しない場合に、送信端末での再送タイマのタイムアップ前に再送を促す再送ＡＣＫパケットを導入した技術である。【００４８】
この再送ＡＣＫパケットは、高速再転送で使用する３つの重複ＡＣＫと区別されるようになっている。そのため、受信端末から送信端末への回線品質は正常に保たれている場合には、受信側で送信した再送ＡＣＫパケットは送信端末に届き、送信側はそれに伴う再送を繰り返すことになる。その後、送信端末から受信端末への回線品質が改善され、送信端末からのデータパケットが受信端末に到達するようになった場合は、特許文献１や特許文献３に開示の技術と同様の課題がある。つまり、データパケットが連続して多数消失してしまったような状況下では、再送を要求されたデータパケットは再送するものの、どれだけのデータパケットが欠落したのかを知ることができない。そのため、回線が回復しても、送信端末のデータスループットが低下し、すぐには通信性能を改善することができない。【００４９】
上記を鑑み、本発明は、送信したデータパケットが連続して多数消失してしまう状況になっても、そのような状況が解消した場合に即座に通信性能を改善することができる通信システム、通信装置、再送制御方法およびプログラムを提供する。
【課題を解決するための手段】
【００５０】
上記の目的を実現するために、本発明の一形態である通信システムは、受信したデータパケットの確認応答（ＡＣＫ、acknowledgement）パケットを送信後、次のデータパケットが到着しないと判断する未着判定時間を設定し、前記未着判定時間内に次のデータパケットが到着しない場合は、当該次のデータパケットの送信を促す再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを前記未着判定時間間隔で繰返し送信する受信端末と、前記ＡＣＫパケットを受信した以降に前記ＲＡＣＫパケットを前記受信端末から受信すると、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの時刻情報と今回受信した前記ＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、前記受信端末に未到達のデータパケットを特定して再送する送信端末と、を含み、前記時刻情報は、前記受信端末が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの送信時にそれぞれ付すタイムスタンプ、または前記送信端末が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする。【００５１】
また、本発明の別の形態である通信装置は、送信したデータパケットに対して受信側が返信する確認応答（ＡＣＫ、acknowledgement）パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを受信すると、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの時刻情報と今回受信した前記ＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送する再送制御手段を含み、前記時刻情報は、前記受信側が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの送信時にそれぞれ付すタイムスタンプ、または前記再送制御手段が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする。【００５２】
更に、本発明の別の形態である再送制御方法は、送信したデータパケットに対して受信側が返信する確認応答（ＡＣＫ、acknowledgement）パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを受信し、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの時刻情報と、今回受信した前記ＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送し、前記時刻情報は、前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの送信時にそれぞれ付されるタイムスタンプ、または前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの受信時にそれぞれ付されるタイムスタンプであることを特徴とする。【００５３】
また、本発明の別の形態である再送制御プログラムは、コンピュータを、送信したデータパケットに対して受信側が返信する確認応答（ＡＣＫ、acknowledgement）パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを受信すると、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの時刻情報と、今回受信した前記ＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送する再送制御機能手段として機能させ、前記時刻情報は、前記受信側が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの送信時にそれぞれ付すタイムスタンプ、または前記再送制御機能手段が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする。
【発明の効果】
【００５４】
本発明は、送信したデータパケットが連続して多数消失してしまう状況になっても、そのような状況が解消した場合に即座に通信性能を改善することができる。
【図面の簡単な説明】
【００５５】
【図１】本発明の第１の実施形態による通信システムの構成例を示すブロック図である。
【図２】本発明の第１の実施形態による通信装置の構成例を示すブロック図である。
【図３】本発明の第１の実施形態による再送制御方法の動作例を示すフロー図である。
【図４】本発明の第１の実施形態による通信装置のハードウェアの構成例を示すブロック図である。
【図５】本発明の第１の実施形態による再送制御プログラムが実現する機能手段の構成例を示すブロック図である。
【図６】本発明の第２の実施形態による通信システムの構成例を示すブロック図である。
【図７】本発明の第２の実施形態による受信端末としての通信装置の構成例を示すブロック図である。
【図８】本発明の第２の実施形態による送信端末としての通信装置の構成例を示すブロック図である。
【図９】ＴＣＰのタイムアウト再送が行われる例を説明するデータトランザクションを示すシーケンス図である。
【図１０】特許文献４が開示する技術により再送が行われる例を説明するデータトランザクションを示すシーケンス図である。
【図１１】本発明の第２の実施形態により再送が行われる例を説明するデータトランザクションを示すシーケンス図である。
【図１２】本発明の第２の実施形態による受信側の再送要求制御の動作を説明するフロー図である。
【図１３】本発明の第２の実施形態による送信側の再送制御の動作を説明するフロー図である。
【発明を実施するための形態】
【００５６】
本発明を実施するための形態の概要を説明する。
【００５７】
なお、実施の形態は例示であり、開示のシステム、装置及び方法は、以下の実施の形態の構成には限定されない。また、図に付した参照符号は理解を助けるための一例として便宜上付記したものであり、なんらの限定を意図するものではない。さらに、図面中の矢印の向きは、一例を示すものであり、ブロック間の信号の向きを限定するものではない。
【００５８】
（第１の実施形態）
第１の実施形態を、図１乃至図５を参照して説明する。
【００５９】
図１は、本発明の第１の実施形態による通信システムの構成例を示すブロック図である。
【００６０】
第１の実施形態の通信システム１０は、受信端末１１と送信端末１２を含む構成となっている。
【００６１】
受信端末１１と送信端末１２は、ＴＣＰの通信規格に準拠したデータ伝送が可能な通信網であるネットワーク１３上に、ＴＣＰコネクションを確立して接続される。ネットワーク１３の代表的なネットワークとしてはインターネットが挙げられるが、ＴＣＰによるパケットの送受信が可能な通信回線を有する任意のネットワークであってよい。ネットワーク１３は、例えば、ＩＰ（Internet Protocol）電話網、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）、衛星通信網、専用線網等であってもよい。
【００６２】
ネットワーク１３上には、受信端末１１から送信端末１２に向かう上りリンクと送信端末１２から受信端末１１に向かう下りリンクが設定される。送信端末１２が送信したデータパケットは下りリンクを通過し、受信端末１１が送信した確認応答（ＡＣＫパケット）は上りリンクを通過して転送される。
【００６３】
本実施形態では、送信端末１２から受信端末１１への下りリンクにおいて、例えば外的要因により伝送媒体の回線品質が悪化する等により、転送中のデータパケットが連続して多数消失してしまう状況になり得るケースを考える。
【００６４】
受信端末１１は、送信端末１２から受信したデータパケットに対するＡＣＫパケットを送信する。そして、受信端末１１は、ＡＣＫパケットを送信すると、次に待受けるデータパケットが到着しないと判断する未着判定時間を設定する。設定した未着判定時間内に次のデータパケットが到着しない場合、受信端末１１は当該次のデータパケットの送信を促す再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを送信する。ＲＡＣＫパケットの送信後も次に待受けるデータパケットが到着しないと判断する未着判定時間を設定し、次のデータパケットが到着するまで当該未着判定時間毎にＲＡＣＫパケットを繰返し送信する。
【００６５】
送信端末１２は、ＡＣＫパケットを受信した以降にＲＡＣＫパケットを受信すると再送を行う。送信端末１２は、直前に受信したＡＣＫパケットまたはＲＡＣＫパケットの時刻情報と、今回受信した前記ＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、受信端末１１に未到達のデータパケットを特定して再送する。ここで、前記の時刻情報は、受信端末がＡＣＫパケットおよびＲＡＣＫパケットの送信時にそれぞれ付すタイムスタンプ、または送信端末がＡＣＫパケットおよびＲＡＣＫパケットの受信時にそれぞれ付すタイムスタンプである。
【００６６】
ＲＡＣＫパケットは、受信端末１１が待ち受ける次のデータパケットが到着するまで、受信端末１１から繰返し送信される。そのため、ＡＣＫパケットを受信した次にＲＡＣＫパケットを受信した場合、送信端末１２は、ＡＣＫパケットと受信したＲＡＣＫパケットの時間差情報を用いて受信端末１１に未到達のデータパケットを特定する。また、送信端末１２は、ＲＡＣＫパケットを繰返し受信するようになった場合には、今回受信したＲＡＣＫパケットと直前に受信したＲＡＣＫパケットの時間差情報を用いて受信端末１１に未到達のデータパケットを特定する。
【００６７】
図２は、本発明の第１の実施形態による通信装置の構成例を示すブロック図である。
【００６８】
通信装置１４は、前述した通信システム１０における送信端末１２に適用する通信装置である。
【００６９】
通信装置１４は再送制御部１４０を含む構成となっている。
【００７０】
再送制御部１４０は、送信したデータパケットに対して受信側が返信する確認応答（ＡＣＫ、acknowledgement）パケットを受信した以降に、受信側から再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを受信する。
【００７１】
ＲＡＣＫパケットは、次のデータパケットが到着しないと判断する未着判定時間間隔で受信側が繰返し送信するパケットで、受信側に到着しない次のデータパケットの送信を促すパケットである。
【００７２】
再送制御部１４０は、ＲＡＣＫパケットを受信する直前に受信したＡＣＫパケットまたはＲＡＣＫパケットの時刻情報と今回受信したＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて受信側に未到達のデータパケットを特定して再送する。ここで、前記の時刻情報は、受信端末がＡＣＫパケットおよびＲＡＣＫパケットの送信時にそれぞれ付すタイムスタンプ、または再送制御部１４０がＡＣＫパケットおよびＲＡＣＫパケットの受信時にそれぞれ付すタイムスタンプである。
【００７３】
ＲＡＣＫパケットは、受信側が待ち受ける次のデータパケットが到着するまで、受信側から繰返し送信される。そのため、ＡＣＫパケットを受信した次にＲＡＣＫパケットを受信した場合、再送制御部１４０は、ＡＣＫパケットと受信したＲＡＣＫパケットの時間差情報を用いて受信側に未到達のデータパケットを特定する。
【００７４】
再送制御部１４０は、ＲＡＣＫパケットを繰返し受信するようになった場合には、今回受信したＲＡＣＫパケットと直前に受信したＲＡＣＫパケットの時間差情報を用いて受信端末１１に未到達のデータパケットを特定する。
【００７５】
図３は、本発明の第１の実施形態による再送制御方法の動作例を示すフロー図である。
【００７６】
第１の実施形態による再送制御方法は、通信装置１４が図３に示すフローのように動作することで実現される。
【００７７】
送信したデータパケットに対して受信側が返信する確認応答（ＡＣＫ、acknowledgement）パケットを受信した以降に、受信側から再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを受信する（Ｓ１１）。
【００７８】
ＲＡＣＫパケットは、次のデータパケットが到着しないと判断する未着判定時間間隔で受信側が繰返し送信するパケットで、受信側に到着しない次のデータパケットの送信を促すパケットである。
【００７９】
ＲＡＣＫパケットを受信する直前に受信したＡＣＫパケットまたはＲＡＣＫパケットの時刻情報と今回受信したＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、受信側に未到達のデータパケットを特定して再送する（Ｓ１２）。ここで、前記の時刻情報は、ＡＣＫパケットおよびＲＡＣＫパケットの送信時にそれぞれ付されるタイムスタンプ、またはＡＣＫパケットおよびＲＡＣＫパケットの受信時にそれぞれ付されるタイムスタンプである。
【００８０】
ＲＡＣＫパケットは、受信側が待ち受ける次のデータパケットが到着するまで、受信側から繰返し送信される。そのため、ＡＣＫパケットを受信した次にＲＡＣＫパケットを受信した場合は、ＡＣＫパケットと受信したＲＡＣＫパケットの時間差情報を用いて受信側に未到達のデータパケットを特定する。また、ＲＡＣＫパケットを繰返し受信するようになった場合には、今回受信したＲＡＣＫパケットと直前に受信したＲＡＣＫパケットの時間差情報を用いて受信側に未到達のデータパケットを特定する。
【００８１】
図４は、本発明の第１の実施形態による通信装置のハードウェアの構成例を示すブロック図である。
【００８２】
図４を参照すると、通信装置１４は、一般的なコンピュータ装置と同様のハードウェア構成によって実現することができ、次の構成を備える。
【００８３】
ハードウェア構成として、制御部であるＣＰＵ（Central Processing Unit）１４１、主記憶部１４２、補助記憶部１４３を含む。主記憶部１４２は、ＲＡＭ（Random Access Memory）等で構成され、補助記憶部１４３は、磁気ディスク、半導体メモリ等の不揮発メモリから構成されるハードディスク装置を含む。
【００８４】
また、ハードウェア構成として、通信回線を介して外部との通信を行う通信部１４４、マン・マシン・インタフェースとしての入出力部１４５、上記各構成要素を相互に接続するシステムバス１４６等を含む。
【００８５】
本実施形態の通信装置１４は、ＴＣＰコネクションにおけるデータパケットの再送制御に関わる各機能を提供するプログラムを、コンピュータ処理装置上のＣＰＵ１４１で実行することにより、ソフトウェア的に実現することができる。
【００８６】
すなわち、ＣＰＵ１４１は、補助記憶部１４３に格納されているプログラムを、主記憶部１４２にロードして実行し、あるいは補助記憶部１４３上で直接実行し、通信装置１４の動作を制御することにより、各機能をソフトウェア的に実現する。
【００８７】
前述したように、通信装置１４は、図１で説明した通信システム１０における送信端末１２として機能する装置である。
【００８８】
本発明の第１の実施形態の再送制御プログラムが実現する機能手段の構成を図５に示す。
【００８９】
本発明の第１の実施形態による再送制御プログラムは、コンピュータを再送制御機能部１５０として機能させる。
【００９０】
再送制御機能部１５０は、送信したデータパケットに対して受信側が返信する確認応答（ＡＣＫ、acknowledgement）パケットを受信した以降に、受信側から再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを受信する。
【００９１】
ＲＡＣＫパケットは、次のデータパケットが到着しないと判断する未着判定時間間隔で受信側が繰返し送信するパケットで、受信側に到着しない次のデータパケットの送信を促すパケットである。
【００９２】
再送制御機能部１５０は、ＲＡＣＫパケットを受信する直前に受信したＡＣＫパケットまたはＲＡＣＫパケットの時刻情報と今回受信したＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、受信側に未到達のデータパケットを特定して再送する。ここで、前記の時刻情報は、受信側がＡＣＫパケットおよびＲＡＣＫパケットの送信時にそれぞれ付すタイムスタンプ、または再送制御機能部１５０がＡＣＫパケットおよびＲＡＣＫパケットの受信時にそれぞれ付すタイムスタンプである。
【００９３】
ＲＡＣＫパケットは、受信側が待ち受ける次のデータパケットが到着するまで、受信側から繰返し送信される。そのため、ＡＣＫパケットを受信した次にＲＡＣＫパケットを受信した場合、再送制御機能部１５０は、ＡＣＫパケットと受信したＲＡＣＫパケットの時間差情報を用いて受信側に未到達のデータパケットを特定する。また、再送制御機能部１５０は、ＲＡＣＫパケットを繰返し受信するようになった場合には、今回受信したＲＡＣＫパケットと直前に受信したＲＡＣＫパケットの時間差情報を用いて受信側に未到達のデータパケットを特定する。
【００９４】
以上のように、本実施形態では、送信したデータパケットに対するＡＣＫパケットの返信を受けた以降に受信側からＲＡＣＫパケットを受信すると、送信側は受信側に到着しない次のデータパケットの送信を促されていると認識する。ＲＡＣＫパケットは、受信側が待ち受ける次のデータパケットが到着するまで、受信側から繰返し送信される。そして、送信側は、直前に受信したＡＣＫパケットまたはＲＡＣＫパケットの時刻情報と今回受信したＲＡＣＫパケットの時刻情報の時間差情報を用いて、その間に送信したデータパケットを特定する。この時間差は、ＡＣＫパケットおよびＲＡＣＫパケットの送信時間差と把握しても良いし、受信時間差と把握しても良い。この時間差を用いることでＲＡＣＫパケットが要求する次のデータパケットのみならず、連続して消失した複数のデータパケットを特定して、それらを再送することができる。
【００９５】
従って、本実施形態によれば、送信したデータパケットが連続して多数消失してしまう状況になっても、そのような状況が解消した場合に即座に通信性能を改善することができる。
【００９６】
（第２の実施形態）
次に、第２の実施形態を説明する。
【００９７】
図６は、本発明の第２の実施形態による通信システムの構成例を示すブロック図である。
【００９８】
第２の実施形態による通信システム２０は、受信端末２１と送信端末２２を含む構成となっており、ＴＣＰの通信規格に準拠したデータ伝送が可能な通信網であるネットワーク２３上に、ＴＣＰコネクションを確立して接続される。ネットワーク例、上りリンクおよび下りリンクの方向については第１の実施形態で説明しているのでその説明を省略する。
【００９９】
受信端末２１はＴＣＰ受信部２１１を備え、送信端末２２はＴＣＰ送信部２２１を備える。ＴＣＰ送信部２２１から送信したデータパケットは、ＴＣＰコネクションの下りリンクを介してＴＣＰ受信部２１１で受信される。ＴＣＰ受信部２１１は、受信したデータパケットの確認応答のＡＣＫパケットをＴＣＰコネクションの上りリンクを介して送信する。
【０１００】
受信端末２１が備えるＴＣＰ受信部２１１はＡＣＫ再送制御部２１１１とＡＣＫ再送タイマ２１１２を含む構成となっている。
【０１０１】
ＡＣＫ再送制御部２１１１はＡＣＫパケットの再送を制御する回路である。ＡＣＫ再送制御部２１１１は、受信したデータパケットに対するＡＣＫパケットを送出した後に、次に受信するデータパケットの到着を時限監視するためにＡＣＫ再送タイマ２１１２をスタートさせる。ＡＣＫ再送タイマ２１１２がタイムアウトするまでに次のデータパケットを受信できなかった場合、ＡＣＫ再送制御部２１１１はＡＣＫパケットを再送する。つまり、ＡＣＫ再送タイマ２１１２は、次に待受けるデータパケットが到着しないと判断する未着判定時間の時限監視を行う。再送したＡＣＫパケットを再送ＡＣＫまたはＲＡＣＫ（Retransmission ACK）パケットと称し、送信端末２２に対して次のデータパケットの送信を促す。
【０１０２】
ＲＡＣＫパケットは、ＡＣＫパケットで確認応答した次のデータパケットが未着であることを送信端末２２に知らせ、その再送を促すものである。そして、通常の確認応答のＡＣＫや高速再転送の際に使用する重複ＡＣＫと区別するために、再送のＡＣＫであることを示すフラグをＴＣＰ規格のオプションフィールドに格納する。このＲＡＣＫの適用は、ＴＣＰコネクション確立時に行われる３Ｗａｙハンドシェークにて送受信間で合意しておくと良い。
【０１０３】
ＡＣＫ再送制御部２１１１は、ＲＡＣＫパケットの送信に際してもＡＣＫ再送タイマ２１１２をスタートさせて、再送を要求したデータパケットの到着を待つ。ＡＣＫ再送制御部２１１１は、この時限監視でもデータパケットが受信できなかった場合には、ＲＡＣＫパケットを再度送信してＡＣＫ再送タイマ２１１２によるデータパケットの到着時限監視を繰り返す。このように、再送を要求したデータパケットが到着しない場合には未着判定時間を経過する度にＲＡＣＫパケットを繰返し送信する。
【０１０４】
また、ＡＣＫ再送制御部２１１１は、ＡＣＫパケットやＲＡＣＫパケットの時刻情報として、送信時刻を示すタイムスタンプを付加しても良い。これは、ＴＣＰ規格のタイムスタンプオプションを使用すれば良い。
【０１０５】
上述したように、ＡＣＫ再送タイマ２１１２には、次に待受けるデータパケットが到着しないと判断する未着判定時間が設定される。例えば、送信端末２２と受信端末２１との間のパケット往復時間であるＲＴＴ（Round Trip Time）に基づいてデータパケットの到着間隔を推定し、その推定値に基づいて未着判定時間を設定すれば良い。ＲＴＴは、通常のＴＣＰパケットの転送中に計測した過去の履歴を用いて計算すれば良い。また、ＡＣＫ再送タイマ２１１２の未着判定時間の設定値として、ＴＣＰ規格で実装されるタイマ機構の「Fast Timer（遅延ＡＣＫの送信等で使用される。）」で使用される５０ミリ秒を固定値として使用しても良い。
【０１０６】
送信端末２２が備えるＴＣＰ送信部２２１は、ＡＣＫ再送判定部２２１１と再送レート判定部２２１２を含む構成となっている。
【０１０７】
ＡＣＫ再送判定部２２１１は、受信したＡＣＫパケットが、通常の確認応答のＡＣＫ、高速再転送による再送を要求する重複ＡＣＫ、上述したＡＣＫ再送タイマに基づいて再送されたＡＣＫであるＲＡＣＫのいずれであるかを識別する。受信したＡＣＫパケットがＲＡＣＫであることを識別すると、ＡＣＫ再送判定部２２１１は、その直前に受信したＡＣＫまたはＲＡＣＫの時刻情報と、今回受信したＲＡＣＫの時刻情報に基づいて、それらの時間差を算出する。そして、この算出した時間差が示す時間の間は受信側にはデータパケットが届いていないものと推定される。
【０１０８】
なお、時刻情報として、ＡＣＫ再送制御部２１１１が送信時刻を示すタイムスタンプを付加して送信する場合には、受信端末２１からの送信時刻情報が使用される。また、ＡＣＫ再送判定部２２１１がＡＣＫパケットおよびＲＡＣＫパケットを受信した際に、受信時刻をそれぞれ付加するように構成しても良い。この場合は、時刻情報として、送信端末２２での受信時刻情報が使用される。以降では、時刻情報として、ＡＣＫ再送制御部２１１１が送信時刻を示すタイムスタンプを付加して送信するものとして説明する。
【０１０９】
ＡＣＫ再送判定部２２１１は、受信側にデータパケットが届いていないと推定される時間とデータパケットの送信履歴または輻輳ウィンドウ（ｃｗｎｄ）のサイズに基づいて、受信側で受信できていないデータ量を推定する。
【０１１０】
再送レート判定部２２１２は、ＴＣＰの送信アルゴリズムにより、ｃｗｎｄサイズとの関係でデータパケットの送信可能なデータ量を判定し、ネットワークの状況を考慮した適切なデータ再送量を決定する。そして、再送が決定された量のデータを、ＲＡＣＫパケットで要求されたデータパケットおよびこれに続く後続データパケットとして再送信する。
【０１１１】
次に、図７および図８を参照して、上述した受信端末２１や送信端末２２として使用する通信装置について説明する。
【０１１２】
図７は、本発明の第２の実施形態による受信端末としての通信装置の構成例を示すブロック図である。
【０１１３】
通信装置３１は、受信端末として機能する通信装置であって、アプリケーション処理部３１２、ＴＣＰ受信部３１１、ＩＰ処理部３１３および入出力処理部３１４を含む構成になっている。
【０１１４】
アプリケーション処理部３１２はデータを受信もしくは転送をする上位アプリケーションである。ＴＣＰ受信部３１１はデータを受信しその受信状況を送信側に確認応答するトランスポート処理部である。ＩＰ処理部３１３はデータのネットワーク転送を制御するネットワーク処理部である。入出力処理部３１４は物理的なリンクを介してデータを送受信するデータリンク処理部である。
【０１１５】
各処理部は次のように機能する。
【０１１６】
入出力処理部３１４はネットワークから受け取ったフレームデータからＩＰパケットを取り出してＩＰ処理部３１３に渡す。ＩＰ処理部３１３は入出力処理部３１４から受け取ったＩＰパケットからＴＣＰパケットを取り出してＴＣＰ受信部３１１へと渡す。ＴＣＰ受信部３１１はＩＰ処理部３１３から受け取ったＴＣＰパケットに対してＡＣＫを返信し、そのＴＣＰパケットをデータ化してアプリケーション処理部３１２に渡す。そして、アプリケーション処理部３１２はＴＣＰ受信部３１１からデータを受け取る。
【０１１７】
ＴＣＰ受信部３１１は、ＴＣＰパケットを受信するデータ受信部３１１３、セグメントを記憶するセグメント記憶部３１１４、ＡＣＫ再送制御部３１１１およびＡＣＫ再送タイマ３１１２を含む構成になっている。なお、以降の説明でデータパケットは、特に断りのない限りはＴＣＰパケットを意味している。
【０１１８】
データ受信部３１１３は、受信したデータパケットのパケットデータ（セグメント）をセグメント記憶部３１１４に格納する。また、データ受信部３１１３は、受信したデータパケットに対してＡＣＫを返信する。受信したセグメントはセグメント記憶部３１１４に所定の時間保持された後にアプリケーション処理部３１２に出力される。
【０１１９】
ＡＣＫ再送制御部３１１１およびＡＣＫ再送タイマ３１１２は、受信したデータパケットに対するＡＣＫパケットの再送を制御する。
【０１２０】
ＡＣＫ再送制御部３１１１およびＡＣＫ再送タイマ３１１２は、図６を参照して説明したＡＣＫ再送制御部２１１１およびＡＣＫ再送タイマ２１１２と同様の機能を有する。
【０１２１】
ＡＣＫ再送タイマ３１１２には、ＡＣＫパケットを送出した後の次に待受けるデータパケットが到着しないと判断する未着判定時間が監視時間として設定される。
【０１２２】
つまり、ＡＣＫ再送制御部３１１１は、受信したデータパケットに対するＡＣＫパケットを送出した後に、次に受信するデータパケットの到着を未着判定時間で時限監視するためにＡＣＫ再送タイマ３１１２をスタートさせる。
【０１２３】
ＡＣＫ再送制御部３１１１は、ＡＣＫ再送タイマ３１１２がタイムアウトするまでに次のデータパケットを受信できなかった場合、再送ＡＣＫとしてＲＡＣＫパケットを送信する。ＲＡＣＫパケットの送信の際にもＡＣＫ再送タイマ３１１２をスタートさせ、再送を要求したデータパケットが到着しない場合には未着判定時間を経過する度にＲＡＣＫパケットを繰返し送信する。ＡＣＫパケットおよびＲＡＣＫパケットには、送信時刻を示すタイムスタンプが付される。
【０１２４】
ＡＣＫ再送タイマ３１１２に設定する未着判定時間は、送信端末と受信端末との間のパケット往復時間であるＲＴＴに基づいてデータパケットの到着間隔を推定し、その推定値に基づいて決定すれば良い。例えば、受信可能として送信端末に通知している広告ウィンドウの最新値である受信ウィンドウ（ｒｗｎｄ）サイズ、最大パケットサイズおよびＲＴＴに基づいてデータパケットの到着間隔を推定できる。そして、その推定値に基づいて（１）式で算出した時間（タイマ値）を未着判定時間とすれば良い。
【０１２５】
タイマ値＝１／｛α×（ｒｗｎｄ／ＲＴＴ）／最大パケットサイズ｝  （１）式
（１）式において、最大パケットサイズは送信端末が送信するパケットの最大のデータ量である。αはパケットの到着時間の揺らぎを吸収するための係数であり、α＞１である。例えば、α＝１０００とする。
【０１２６】
（１）式において、ｒｗｎｄ／ＲＴＴは想定される最大のデータ転送速度である。これを最大パケットサイズで割ることで、単位時間当たりのパケット転送個数を求めている。そして、単位時間当たりのパケット転送個数の逆数を取ることによって、想定される最大スループットでデータ転送をしている際のパケットの到着間隔を求めている。
【０１２７】
ＡＣＫ再送制御部３１１１は、計測された最大パケットサイズやＲＴＴを取得し、（１）式を用いてパケットの到着間隔を推定する。そして、ＡＣＫ再送制御部３１１１は、ＡＣＫパケットを送信してからの経過時間が上記計算して設定した未着判定時間に達した場合に、ＡＣＫパケットの再送（ＲＡＣＫパケット送信）を行う。ＡＣＫ再送制御部３１１１は、送信端末と受信端末との間で過去に受信されたデータやＡＣＫの履歴を用いて、ＲＴＴを計算しても良い。また、ＭＳＳ（Maximum Segment Size）オプションで通知された最大セグメントサイズを用いて最大パケットサイズを求めても良い。
【０１２８】
また、ＡＣＫ再送タイマ３１１２が一度タイムアウトになると、次に設定する監視時間をβ（β＞１）倍に設定しても良い。
【０１２９】
ＲＡＣＫパケットは、再送のＡＣＫであることを示すフラグをＴＣＰ規格のオプションフィールドに格納する。また、ＲＡＣＫパケットは、再送のＡＣＫであることを示す帯域外（ＯＯＢ、Out Of Band）データを格納しても良い。帯域外データは、所定のフラグを有するデータであり、通常のデータストリームと区別することができるデータである。そして、帯域外データは通常のデータとは無関係に配信することができる。
【０１３０】
図８は、本発明の第２の実施形態による送信端末としての通信装置の構成例を示すブロック図である。
【０１３１】
通信装置３２は、送信端末として機能する通信装置であって、アプリケーション処理部３２２、ＴＣＰ送信部３２１、ＩＰ処理部３２３および入出力処理部３２４を含む構成になっている。
【０１３２】
アプリケーション処理部３２２はデータを生成もしくは転送をする上位アプリケーションである。ＴＣＰ送信部３２１はデータの送信と再送信をするトランスポート処理部である。ＩＰ処理部３２３はデータのネットワーク転送を制御するネットワーク処理部である。入出力処理部３２４は物理的なリンクを介してデータを送受信するデータリンク処理部である。
【０１３３】
各処理部は次のように機能する。
【０１３４】
アプリケーション処理部３２２は送信するデータを生成してＴＣＰ送信部３２１に渡す。ＴＣＰ送信部３２１は、送信するデータをアプリケーション処理部３２２から受け取り、レートコントロールしつつ信頼性のある通信を行うために、送信するデータをＴＣＰパケットとしてセグメント化する。ＩＰ処理部３２３はＴＣＰ送信部３２１から受け取ったＴＣＰパケットのデータをＩＰパケット化して入出力処理部３２４に渡す。入出力処理部３２４はＩＰ処理部３２３から渡されたＩＰパケットをフレーム化してネットワークに出力する。
【０１３５】
ＴＣＰ送信部３２１は、アプリケーション処理部３２２から受信したデータをＴＣＰパケットとして送信するデータ送信部３２１３、データを記憶するデータ記憶部３２１４、ＡＣＫ再送判定部３２１１および再送レート判定部３２１２を含む構成になっている。
【０１３６】
ＡＣＫ再送判定部３２１１は、受信端末から送られてきたＡＣＫパケットが、通常の確認応答のＡＣＫ、高速再転送による再送を要求する重複ＡＣＫ、再送されたＡＣＫであるＲＡＣＫのいずれであるかを識別する。ＡＣＫ再送判定部２２１１は、受信したＡＣＫパケットがＲＡＣＫであることを識別すると、その直前に受信したＡＣＫまたはＲＡＣＫのタイムスタンプを参照して今回受信したＲＡＣＫと直前に受信したＡＣＫまたはＲＡＣＫとの時間差を算出する。つまり、直前に受信したＡＣＫまたはＲＡＣＫの送信時刻と今回受信したＲＡＣＫの送信時刻の時間差が示す時間の間は受信側にはデータパケットが届いていないものと推定する。
【０１３７】
より詳細には、ＡＣＫ再送判定部３２１１は、受信したＡＣＫパケットに格納されたタイムスタンプ（ｔ_ａｃｋ）を記憶する。送信済みであるが確認応答を受けていないデータパケットがある場合には、ＲＡＣＫパケットを受信すると、ＲＡＣＫパケットに格納されたタイムスタンプ（ｔ_ｒａｃｋ）を参照する。そして、（２）式に示す、ＡＣＫパケットとＲＡＣＫパケットの間の時間（ＡＣＫ_ＩＮＴ）を受信側がデータパケットを受信しなかった時間として推定する。（ＡＣＫ_ＩＮＴ）を再送ＡＣＫ間隔時間とも称する。
【０１３８】
ＡＣＫ_ＩＮＴ＝ｔ_ｒａｃｋ−ｔ_ａｃｋ    （２）式
つづいて、ＡＣＫ再送判定部３２１１は、受信側にデータパケットが届いていないと推定される時間と、データパケットの送信履歴または輻輳ウィンドウ（ｃｗｎｄ）のサイズに基づいて、受信側で受信できていないデータ量を推定し、特定する。
【０１３９】
データパケットの送信履歴を使う場合は、送信したデータパケットの送信時刻を送信履歴としてそれぞれ記録しておく。そして、確認応答を受けてから送信したデータパケットの送信時刻から上記（２）式で算出した時間（ＡＣＫ_ＩＮＴ）内に送出したデータパケットを特定することで、受信側で受信できていないデータ量とすれば良い。つまり、受信側から直近のＡＣＫパケットで確認応答を受けてから送信したデータパケットを先頭に、再送ＡＣＫ間隔時間内に送信した後続するデータパケットが消失したものと推定する。
【０１４０】
また、輻輳ウィンドウサイズを使う場合は、（３）式に示すように、受信側にデータパケットが届いていないと推定される時間（ＡＣＫ_ＩＮＴ）がＲＴＴに占める割合に、輻輳ウィンドウサイズを乗じた値を再送データ量とすれば良い。再送データ量をＲＤ（Retransmission Data）で示す。
【０１４１】
ＲＤ＝ｃｗｎｄ×ＡＣＫ_ＩＮＴ／ＲＴＴ    （３）式
ここで、高いスループットが必要な場合にはこの限りではないが、ＡＣＫ_ＩＮＴ≦ＲＴＴとする。
【０１４２】
また、輻輳ウィンドウサイズは、ＲＴＴ毎に送信可能なデータ量として位置づけられる。
【０１４３】
上記に基づいて、ＡＣＫ再送判定部３２１１は、直近のＡＣＫパケットで確認応答を受けてから送信したデータを先頭にして、算出したＲＤの量のデータを再送する必要があると判断する。これは、直近のＡＣＫパケットで確認応答を受けてから送信したデータを含め、その送信時刻から上記の再送ＡＣＫ間隔時間内に送信側が送信したデータ量でもある。
【０１４４】
受信側で受信できていないデータ量を輻輳ウィンドウサイズに基づいて推定する例を以下の説明では使用するが、データパケットの送信履歴に基づいて受信側で受信できていないデータ量を推定する場合も同様に機能することは言うまでもない。
【０１４５】
前述したように、受信側はＲＡＣＫパケットで送信を促したデータパケットを受信するまで、ＡＣＫ再送タイマに設定した未着判定時間がタイムアウトする毎にＲＡＣＫパケットを繰返して送信してくる。そこで、ＡＣＫ再送判定部３２１１は、ＲＡＣＫパケットを受信する毎に上述した再送データ量を計算する。
【０１４６】
ＲＡＣＫパケットに格納されたタイムスタンプが（ｔ_ｒａｃｋ_ｉ）であった場合、その前回に受信したＲＡＣＫパケットに格納されたタイムスタンプ（ｔ_ｒａｃｋ_ｉ−１）との時間差（ＡＣＫ_ＩＮＴ_ｉ）を、（４）式のようにして求める。
【０１４７】
ＡＣＫ_ＩＮＴ_ｉ＝（ｔ_ｒａｃｋ_ｉ）−（ｔ_ｒａｃｋ_ｉ−１）    （４）式
この場合の再送データ量（ＲＤ_ｉ）は（５）式で示される。
【０１４８】
ＲＤ_ｉ＝ｃｗｎｄ×ＡＣＫ_ＩＮＴ_ｉ／ＲＴＴ    （５）式
再送レート判定部３２１２は、ＴＣＰの送信アルゴリズムにより、輻輳ウィンドウサイズとの関係でデータパケットの送信可能なデータ量を判定し、ネットワークの状況を考慮した適切なデータ再送量を決定する。つまり、算出した再送データ量の合計（ΣＲＤ）が輻輳ウィンドウサイズに達した場合は、ＡＣＫパケットで指定されたデータの先頭のパケットの再送を繰り返すように制御する。再送を繰り返す場合には、輻輳を防止するために再送を一時停止しても良い。また、逆に、高いスループットが必要な場合には、輻輳ウィンドウサイズを超えるデータを送信するようにしても良い。
【０１４９】
輻輳ウィンドウサイズとの関係で決定された量の再送データは、ＲＡＣＫパケットで要求されたデータパケットおよびこれに続く後続データパケットとして再送される。
【０１５０】
上述したＲＡＣＫパケットを導入した再送によるデータトランザクションの例を、通常のＴＣＰのタイムアウト再送や特許文献４が開示する技術による再送を参照して説明する。
【０１５１】
図９はＴＣＰのタイムアウト再送が行われる例を説明するデータトランザクションを示すシーケンス図である。図１０は特許文献４が開示する技術により再送が行われる例を説明するデータトランザクションを示すシーケンス図である。
【０１５２】
そして、図１１は、本発明の第２の実施形態により再送が行われる例を説明するデータトランザクションを示すシーケンス図である。
【０１５３】
なお、図９乃至図１１において影付き直方体の箇所は下りリンクが劣化している期間を示す。この期間は下りリンクを流れるデータパケットが消失するものとする。
【０１５４】
図９に示す通常のＴＣＰのタイムアウト再送を説明する。
【０１５５】
ウィンドウサイズの範囲で５つのデータパケット（データ１００乃至データ１０４）がＡＣＫを受けることなく連続して送信されるものとする。そのうちの、最初のデータパケットであるデータ１００は受信端末まで到達するが他のデータ１０１乃至データ１０４は下りリンクを伝送中に消失するものとする。
【０１５６】
受信端末に到達したデータ１００の確認応答であるＡＣＫ１０１が受信端末から返信され、送信端末で受信される。しかし、他のデータ１０１乃至データ１０４は下りリンクを伝送中に消失するので、確認応答が返らない。そのため、送信端末では、データ１０１を送信した際に設定した再送タイマがタイムアウトし、データ１０１が再送される。
【０１５７】
しかし、この再送されたデータ１０１も下りリンクを伝送中に消失する。
【０１５８】
そのため、再送のデータ１０１を送信した際に、より長く設定した再送タイマがタイムアウトし、２度目の再送データ１０１が送信端末から送信される。この時点では下りリンクの通信品質が改善しており、２度目の再送のデータ１０１が受信端末に到達する。
【０１５９】
データ１０１を受信した受信端末は、データ１０１の確認応答であるＡＣＫ１０２を返信する。ＡＣＫ１０２を受信した送信端末は、要求されたデータ１０２を送信する。
【０１６０】
このように、通常のＴＣＰのタイムアウト再送を適用した例では、データパケットが連続して多数消失してしまう状況が解消した後において、送信端末のデータスループットが低下する。
【０１６１】
次に、図１０に示す特許文献４が開示する技術により再送が行われる例を説明する。特許文献４が開示する技術では、確認応答のＡＣＫパケットを返信後に所定の時間内に次のデータパケットを受信できない場合に、再送を促す再送ＡＣＫパケットを送信する。再送ＡＣＫパケットには、再送ＡＣＫパケットであることを示す所定の情報が付加されている。
【０１６２】
ウィンドウサイズの範囲で５つのデータパケット（データ１００乃至データ１０４）がＡＣＫを受けることなく連続して送信されるものとする。そのうちの、最初のデータパケットであるデータ１００は受信端末まで到達するが他のデータ１０１乃至データ１０４は下りリンクを伝送中に消失するものとする。
【０１６３】
受信端末に到達したデータ１００の確認応答であるＡＣＫ１０１が受信端末から返信され、送信端末で受信される。しかし、他のデータ１０１乃至データ１０４は下りリンクを伝送中に消失して、受信端末に届かない。そのため、受信端末では、ＡＣＫ１０１を返信した際に設定したＡＣＫ再送タイマがタイムアウトし、ＡＣＫ１０１が再送される。
【０１６４】
再送ＡＣＫパケットであるＡＣＫ１０１を受信した送信端末は、データ１０１を再送する。しかし、この再送されたデータ１０１も下りリンクを伝送中に消失する。
【０１６５】
下りリンクが劣化している期間はデータパケットが受信端末に届かないので、ＡＣＫ再送タイマが繰返し設定され、再送ＡＣＫパケットであるＡＣＫ１０１が繰返し送信される。そして、送信端末は、再送ＡＣＫパケットであるＡＣＫ１０１を受信する度にデータ１０１を再送する。
【０１６６】
下りリンクの通信品質が改善してから再送されたデータ１０１は受信端末に到達する。
【０１６７】
データ１０１を受信した受信端末は、データ１０１の確認応答である通常のＡＣＫ１０２を返信する。ＡＣＫ１０２を受信した送信端末は、要求されたデータ１０２を送信する。
【０１６８】
このように、特許文献４が開示する技術により再送が行われる例でも、データパケットが連続して多数消失してしまう状況が解消した後において、送信端末のデータスループットが低下する。
【０１６９】
次に、図１１に示す本実施形態により再送が行われる例を説明する。
【０１７０】
ウィンドウサイズの範囲で５つのデータパケット（データ１００乃至データ１０４）がＡＣＫを受けることなく連続して送信されるものとする。そのうちの、最初のデータパケットであるデータ１００は受信端末まで到達するが他のデータ１０１乃至データ１０４は下りリンクを伝送中に消失するものとする。
【０１７１】
受信端末に到達したデータ１００の確認応答であるＡＣＫ１０１が受信端末から返信され、送信端末で受信される。しかし、他のデータ１０１乃至データ１０４は下りリンクを伝送中に消失して、受信端末に届かない。そのため、受信端末では、ＡＣＫ１０１を返信した際に設定したＡＣＫ再送タイマがタイムアウトし、ＲＡＣＫ１０１が再送される。
【０１７２】
ここで、タイムスタンプ値（ＴＳｖａｌ）として、ＡＣＫ１０１には「１０００」、ＲＡＣＫ１０１には「１０２０」が格納されているものとする。
【０１７３】
ＲＡＣＫ１０１を受信した送信端末は、再送ＡＣＫであることを認識し、再送すべきデータ量を推定する。
【０１７４】
上述した（２）式によりＡＣＫ１０１とＲＡＣＫ１０１の時間差を求める。
【０１７５】
ＡＣＫ_ＩＮＴ＝ｔ_ｒａｃｋ−ｔ_ａｃｋ＝１０２０−１０００＝２０
そして、ＡＣＫ１０１とＲＡＣＫ１０１の時間差が示す時間に送信端末が送信したデータ量を（３）式により求める。なお、ＲＴＴ＝３０、ｃｗｎｄ＝３と想定する。
【０１７６】
ＲＤ＝ｃｗｎｄ×ＡＣＫ_ＩＮＴ／ＲＴＴ＝３×２０／３０＝２
つまり、送信端末は２つのデータパケットであるデータ１０１とデータ１０２を再送するデータ量として算出する。そして、ＲＡＣＫ１０１（ＴＳｖａｌ００１０２０）に対する再送データとして、データ１０１に加えてデータ１０２（太線表示）を再送する。しかし、この再送されたデータ１０１とデータ１０２も下りリンクを伝送中に消失する。
【０１７７】
下りリンクが劣化している期間はデータパケットが受信端末に届かないので、ＡＣＫ再送タイマが繰返し設定され、再送ＡＣＫパケットであるＲＡＣＫ１０１が繰返し送信される。
【０１７８】
しかし、本実施形態では、各ＲＡＣＫにはタイムスタンプが格納されている。
【０１７９】
そのため、送信端末は、受信したＲＡＣＫ１０１（ＴＳｖａｌ００１０４０）と直前に受信したＲＡＣＫ１０１（ＴＳｖａｌ００１０２０）のタイムスタンプ値から、（４）式、（５）式に基づいて、送信データ量を算出する。
【０１８０】
ＡＣＫ_ＩＮＴ_２＝（ｔ_ｒａｃｋ_２）−（ｔ_ｒａｃｋ_１）＝２０
ＲＤ_２＝ｃｗｎｄ×ＡＣＫ_ＩＮＴ_２／ＲＴＴ＝３×２０／３０＝２
上記により、送信端末はＲＡＣＫ１０１（ＴＳｖａｌ００１０４０）に対して再送すべきデータパケットは２個であることを決定する。更に、前回受信したＲＡＣＫ１０１（ＴＳｖａｌ００１０２０）に対して再送したデータがデータ１０１とデータ１０２であることを記憶しており、今回はデータ１０３から送信することを決定する。
【０１８１】
ここで、ΣＲＤ＝ＲＤ＋ＲＤ_２＝４となり、ｃｗｎｄ＝３を超えてしまう。そのため、送信端末は、データ１０３（太線表示）の後は、再送しているデータの先頭であるデータ１０１を送信する。しかし、この再送されたデータ１０３とデータ１０１も下りリンクを伝送中に消失する。
【０１８２】
その後、送信端末は、下りリンクの劣化により、再送したデータパケットが受信端末に届かないことから、ＲＡＣＫ１０１（ＴＳｖａｌ００１０６０）、ＲＡＣＫ１０１（ＴＳｖａｌ００１０８０）を受信する。これらのＲＡＣＫパケットを受信した際も、上述したようにタイムスタンプ、ＲＴＴ、輻輳ウィンドウサイズに基づいて再送データ量を算出し、輻輳ウィンドウサイズとの関係で決定した適切なデータ量を再送する。
【０１８３】
下りリンクの通信品質が改善して受信端末にデータが到着するようになると、受信端末は、部分的な受信を示すＳＡＣＫ（Selective ACK：選択的確認応答）信号を含むＡＣＫ（ｓａｃｋ：ｘｘｘ）パケットを送信して、受信したデータパケットを揃える。
【０１８４】
例えば、図１１では、ＲＡＣＫ１０１（ＴＳｖａｌ００１０６０）に対して再送されたデータ１０２（太線表示）とデータ１０３（太線表示）が受信端末に到達する。データ１０２に対する確認応答として、受信端末はＡＣＫ１０１（ｓａｃｋ：１０２）パケットを送信し、データ１０１は受信していないがデータ１０２を受信した旨の確認応答を行う。また、データ１０３に対する確認応答として、受信端末はＡＣＫ１０１（ｓａｃｋ：１０２、１０３）パケットを送信し、データ１０１はまだ受信していないがデータ１０２とデータ１０３を受信した旨の確認応答を行う。
【０１８５】
一方、ＲＡＣＫ１０１（ＴＳｖａｌ００１０８０）に対して送信端末は２つのパケットを再送することを決定する。また、その直後にＳＡＣＫ信号を含むＡＣＫ１０１を受けてウィンドウがスライドしたので、データ１０１とデータ１０４（太線表示）を再送する。
【０１８６】
受信端末ではＲＡＣＫ１０１（ＴＳｖａｌ００１０８０）に対して再送されたデータ１０１を受信したことで、データ１０１、１０２、１０３まで揃ったことを示す通常の確認応答のＡＣＫ１０４を送信する。また、ＲＡＣＫ１０１（ＴＳｖａｌ００１０８０）に対して再送されたデータ１０４も受信端末に到達するので、受信端末は通常の確認応答のＡＣＫ１０５を送信する。
【０１８７】
上述したように、本実施形態ではＲＡＣＫパケットを受信した送信端末は、再送を要求されたデータだけではなく、受信端末に届いてないと推定されるデータも含めて再送する。そのため、データパケットが連続して多数消失してしまう状況が解消した後においても、送信端末のデータスループットが低下することはなく、即座に通信性能を改善することができる。
【０１８８】
本実施形態の通信装置の動作を図１２および図１３を参照して説明する。
【０１８９】
図１２は通信装置が受信端末として機能する際の動作であり、図１３は通信装置が送信端末として機能する際の動作である。
【０１９０】
図１２は、本発明の第２の実施形態による受信側の再送要求制御の動作を説明するフロー図である。
【０１９１】
受信端末は、コネクションの開始を要求する送信端末との間で３ｗａｙハンドシェークの手順でコネクションを確立して受信処理を開始する。
【０１９２】
受信端末は、送信端末から送られるパケットの受信を待ち、受信したパケットの内容に基づいてデータ転送の終了か否かを判定する（Ｓ１０１）。受信したパケットがコネクション切断を示すＦＩＮ（Finish）パケットである場合（Ｓ１０１、ＹＥＳ）、コネクション切断の応答（ＦＩＮ／ＡＣＫ）を返信して処理を終了する。また、受信したパケットがデータを含むパケットである場合（Ｓ１０１、ＮＯ）、ステップＳ１０２に処理を進める。
【０１９３】
ステップＳ１０２では、受信したデータをアプリケーションに渡し、データ受信の確認応答のＡＣＫパケットを返信する。また、そのとき、次のデータパケットの到着を待ち合わせるタイミングとして、ＡＣＫ再送タイマに未着判定時間をセットする。これらの処理が終了したら、ステップＳ１０３に処理を進める。
【０１９４】
ステップＳ１０３では、送信端末からの新たなデータパケットの受信の有無を判定する。新たなデータパケットを受信した場合（Ｓ１０３、ＹＥＳ）、ＡＣＫ再送タイマを解除してステップＳ１０１に戻る。新たなデータパケットを受信していない場合（Ｓ１０３、ＮＯ）、ステップＳ１０４に処理を進めてＡＣＫ再送タイマの判定を待つ。
【０１９５】
ステップＳ１０４では、ＡＣＫ再送タイマがタイムアウトになったか否かを判定する。ＡＣＫ再送タイマの未着判定時間がまだタイムアウトにならない場合（Ｓ１０４、ＮＯ）、ステップＳ１０３に戻り、送信端末からの新たなデータパケットの受信を待ち、その受信の有無を判定する。ＡＣＫ再送タイマの未着判定時間がタイムアウトになった場合（Ｓ１０４、ＹＥＳ）、ステップＳ１０５に処理を進める。
【０１９６】
ステップＳ１０４では、ＡＣＫ再送タイマがタイムアウトになったことにより、ＲＡＣＫ（再送ＡＣＫ）パケットを送信し、ＡＣＫ再送タイマに未着判定時間を再セットする。そして、ステップＳ１０３に戻り、送信端末からの新たなデータパケットの受信を待ち、その受信の有無を判定する。ＲＡＣＫパケットには、再送するＡＣＫであることを示すフラグを立てる。また、前述したように、帯域外（ＯＯＢ）データを格納しても良い。
【０１９７】
つづいて、通信装置が送信端末として機能する際の動作を説明する。
【０１９８】
図１３は、本発明の第２の実施形態による送信側の再送制御の動作を説明するフロー図である。
【０１９９】
送信端末は、送信すべきデータが発生した場合に、受信端末との間で３ｗａｙハンドシェークの手順でコネクションを確立して送信処理を開始する。
【０２００】
送信すべきデータの有無を確認する（Ｓ２０１）。受信端末へのデータの転送が完了し、送信すべきデータがない場合（Ｓ２０１、ＹＥＳ）は、処理を終了してコネクションを切断する。送信すべきデータがある場合（Ｓ２０１、ＮＯ）は、ステップＳ２０２に処理を進める。
【０２０１】
ステップＳ２０２では、ＴＣＰの送信アルゴリズムに基づいて、データの送信が可能か否かを判定する。この場合、送信済みのデータパケットに対する確認応答が返ってきたことでデータ番号を減じ、ウィンドウサイズとの関連で送信の可否を判定する。そして、データ送信が可能と判定した場合（Ｓ２０２、ＹＥＳ）は、ステップＳ２０３に処理を進める。
【０２０２】
ステップＳ２０３では、データを送信し、送信済みデータ番号を記憶し、ステップＳ２０１の処理に戻る。
【０２０３】
ステップＳ２０２で、送信済みのデータパケットに対する確認応答がまだ帰っておらず、ウィンドウサイズとの関連でデータ送信がまだできない場合（Ｓ２０２、ＮＯ）には、ステップＳ２０４に進み、ＡＣＫパケットの受信を待つ。
【０２０４】
ステップＳ２０４でＡＣＫパケットを受信すると、ステップＳ２０５に処理を進める。
【０２０５】
ステップＳ２０５では、受信したＡＣＫパケットが再送されたＡＣＫパケット（ＲＡＣＫパケット）か否かを判定する。
【０２０６】
受信したＡＣＫパケットがＲＡＣＫパケットではない場合（Ｓ２０５、ＮＯ）、その受信したＡＣＫパケットに対応する送信済みのデータパケットには確認応答が返ってきたものとして、そのデータ番号を記憶する。そして、ステップＳ２０２の処理に戻る。
【０２０７】
一方、受信したＡＣＫパケットがＲＡＣＫパケットであった場合（Ｓ２０５、ＹＥＳ）、受信端末からデータパケットの再送を促されていると認識し、ステップＳ２０６およびステップＳ２０７に処理を進める。
【０２０８】
ステップＳ２０６では、上述した（２）式または（４）式でＡＣＫ送信間隔を計算し、（３）式または（５）式で再送データ量を決定する。ステップＳ２０７では、輻輳ウィンドウサイズとの関係でデータパケットの送信可能なデータ量を判定し、ネットワークの状況を考慮した適切な再送データを決定する。そして、ステップＳ２０２の処理に戻り、決定した再送データを送信する。
【０２０９】
以上の動作により、送信端末は、ＡＣＫパケットで確認応答を受けた次のデータを送信するのみならず、そのデータを先頭にして、ステップＳ２０６で決定した量のデータを再送することができる。
【０２１０】
以上に説明したように、本実施形態では、送信端末はＡＣＫパケットやＲＡＣＫパケットの時刻情報を用いて、繰返し再送されるＲＡＣＫパケットに関して前後のＡＣＫパケットまたはＲＡＣＫパケットの時刻情報との時間差を計算する。この時間差が示す時間を以て受信側にデータパケットが届いていない時間と推定し、データパケットの送信履歴または輻輳ウィンドウ（ｃｗｎｄ）のサイズに基づいてその時間に受信側で受信できていないデータ量を推定する。そして、送信端末は、ＡＣＫパケットで確認応答を受けた次のデータを送信するのみならず、そのデータを先頭にして、受信側で受信できていないと推定した量のデータを再送する。そのため、データパケットが連続して多数消失してしまう状況が解消した後においても、送信端末のデータスループットが低下することはなく、即座に通信性能を改善することができる。
【０２１１】
なお、上述した本実施形態の通信装置は、ＴＣＰの通信規格によるパケット送受信、再送制御および輻輳回避アルゴリズム等の処理動作を規定した制御プログラムがインストールされたコンピュータによって構成されていても良い。そして、この制御プログラムの実行に必要な演算装置、記憶装置、制御装置および通信インタフェース等を備え、ネットワークに接続される。例えば、第１の実施形態で説明した、図４に示すハードウェア構成が適用されても良い。
【０２１２】
なお、上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）  受信したデータパケットの確認応答（ＡＣＫ、acknowledgement）パケットを送信後、次のデータパケットが到着しないと判断する未着判定時間を設定し、前記未着判定時間内に次のデータパケットが到着しない場合は、当該次のデータパケットの送信を促す再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを前記未着判定時間間隔で繰返し送信する受信端末と、前記ＡＣＫパケットを受信した以降に前記ＲＡＣＫパケットを前記受信端末から受信すると、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの時刻情報と今回受信した前記ＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、前記受信端末に未到達のデータパケットを特定して再送する送信端末と、を含み、前記時刻情報は、前記受信端末が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの送信時にそれぞれ付すタイムスタンプ、または前記送信端末が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする通信システム。
（付記２）  送信したデータパケットに対して受信側が返信する確認応答（ＡＣＫ、acknowledgement）パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを受信すると、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの時刻情報と今回受信した前記ＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送する再送制御手段を含み、前記時刻情報は、前記受信側が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの送信時にそれぞれ付すタイムスタンプ、または前記再送制御手段が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする通信装置。
（付記３）  前記再送制御手段は、今回受信した前記ＲＡＣＫパケットの前記時刻情報と、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの前記時刻情報との時間差を示す再送ＡＣＫ間隔時間に基づいて、前記受信側に未到達のデータパケットを特定するＡＣＫ再送判定部と、前記特定した前記受信側に未到達のデータパケットに対し、ネットワークの状況を考慮して決定した量の再送データを決定する再送レート判定部と、を含むことを特徴とする付記２に記載の通信装置。
（付記４）  前記ＡＣＫ再送判定部は、前記ＡＣＫパケットで確認応答を受けてから送信したデータパケットを含め、当該データパケットの送信時刻から前記再送ＡＣＫ間隔時間の間に送信したデータパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする付記３に記載の通信装置。
（付記５）  前記ＡＣＫ再送判定部は、前記再送ＡＣＫ間隔時間がＲＴＴ（Round Trip Time）に占める割合に、輻輳ウィンドウサイズを乗じたデータ量のパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする付記３に記載の通信装置。
（付記６）  前記再送レート判定部は、前記特定した前記受信側に未到達のデータパケットに対し、輻輳ウィンドウサイズとの関係で送信可能なデータ量を判定することを特徴とする付記３乃至付記５のいずれかの付記に記載の通信装置。
（付記７）  前記送信端末は、付記２乃至付記６のいずれかの付記に記載の通信装置であることを特徴とする付記１に記載の通信システム。
（付記８）  送信したデータパケットに対して受信側が返信する確認応答（ＡＣＫ、acknowledgement）パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを受信し、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの時刻情報と、今回受信した前記ＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送し、前記時刻情報は、前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの送信時にそれぞれ付されるタイムスタンプ、または前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの受信時にそれぞれ付されるタイムスタンプであることを特徴とする再送制御方法。
（付記９）  前記受信側に未到達のデータパケットは、今回受信した前記ＲＡＣＫパケットの前記時刻情報と、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの前記時刻情報との時間差を示す再送ＡＣＫ間隔時間に基づいて特定し、当該特定した前記受信側に未到達のデータパケットに対し、ネットワークの状況を考慮して決定した量の再送データを決定することを特徴とする付記８に記載の再送制御方法。
（付記１０）  前記ＡＣＫパケットで確認応答を受けてから送信したデータパケットを含め、当該データパケットの送信時刻から前記再送ＡＣＫ間隔時間の間に送信したデータパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする付記９に記載の再送制御方法。
（付記１１）  前記再送ＡＣＫ間隔時間がＲＴＴ（Round Trip Time）に占める割合に、輻輳ウィンドウサイズを乗じたデータ量のパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする付記９に記載の再送制御方法。
（付記１２）  前記特定した前記受信側に未到達のデータパケットに対し、輻輳ウィンドウサイズとの関係で送信可能なデータ量を判定することを特徴とする付記９乃至付記１１のいずれかの付記に記載の再送制御方法。
（付記１３）  コンピュータを、送信したデータパケットに対して受信側が返信する確認応答（ＡＣＫ、acknowledgement）パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを受信すると、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの時刻情報と、今回受信した前記ＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送する再送制御機能手段として機能させ、前記時刻情報は、前記受信側が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの送信時にそれぞれ付すタイムスタンプ、または前記再送制御機能手段が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする再送制御プログラム。
（付記１４）  前記再送制御機能手段は、今回受信した前記ＲＡＣＫパケットの前記時刻情報と、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの前記時刻情報との時間差を示す再送ＡＣＫ間隔時間に基づいて、前記受信側に未到達のデータパケットを特定するＡＣＫ再送判定機能部と、前記特定した前記受信側に未到達のデータパケットに対し、ネットワークの状況を考慮して決定した量の再送データを決定する再送レート判定機能部と、を含むことを特徴とする付記１３に記載の再送制御プログラム。
（付記１５）  前記ＡＣＫ再送判定機能部は、前記ＡＣＫパケットで確認応答を受けてから送信したデータパケットを含め、当該データパケットの送信時刻から前記再送ＡＣＫ間隔時間の間に送信したデータパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする付記１４に記載の再送制御プログラム。
（付記１６）  前記ＡＣＫ再送判定機能部は、前記再送ＡＣＫ間隔時間がＲＴＴ（Round Trip Time）に占める割合に、輻輳ウィンドウサイズを乗じたデータ量のパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする付記１４に記載の再送制御プログラム。
（付記１７）  再送レート判定機能部は、前記特定した前記受信側に未到達のデータパケットに対し、輻輳ウィンドウサイズとの関係で送信可能なデータ量を判定することを特徴とする付記１４乃至付記１６のいずれかの付記に記載の再送制御プログラム。
【０２１３】
この出願は、２０１７年２月２７日に出願された日本出願特願２０１７−０３４４１３を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０２１４】
１０、２０    通信システム
１１、２１    受信端末
１２、２２    送信端末
１３、２３    ネットワーク
１４、３１、３２    通信装置
１４０    再送制御部
１４１    ＣＰＵ
１４２    主記憶部
１４３    補助記憶部
１４４    通信部
１４５    入出力部
１４６    システムバス
１５０    再送制御機能部
２１１、３１１    ＴＣＰ受信部
２２１、３２１    ＴＣＰ送信部
３１２、３２２    アプリケーション処理部
３１３、３２３    ＩＰ処理部
３１４、３２４    入出力処理部
２１１１、３１１１    ＡＣＫ再送制御部
２１１２、３１１２    ＡＣＫ再送タイマ
２２１１、３２１１    ＡＣＫ再送判定部
２２１２、３２１２    再送レート判定部
３１１３    データ受信部
３１１４    セグメント記憶部
３２１３    データ送信部
３２１４    データ記憶部
【図１】
2018155406.tif 000003
【図２】
2018155406.tif 000004
【図３】
2018155406.tif 000005
【図４】
2018155406.tif 000006
【図５】
2018155406.tif 000007
【図６】
2018155406.tif 000008
【図７】
2018155406.tif 000009
【図８】
2018155406.tif 000010
【図９】
2018155406.tif 000011
【図１０】
2018155406.tif 000012
【図１１】
2018155406.tif 000013
【図１２】
2018155406.tif 000014
【図１３】
2018155406.tif 000015
【手続補正書】
【提出日】令和1年8月1日(2019.8.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
受信したデータパケットの確認応答（ＡＣＫ、acknowledgement）パケットを送信後、次のデータパケットが到着しないと判断する未着判定時間を設定し、前記未着判定時間内に次のデータパケットが到着しない場合は、当該次のデータパケットの送信を促す再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを前記未着判定時間間隔で繰返し送信する受信端末と、
前記ＡＣＫパケットを受信した以降に前記ＲＡＣＫパケットを前記受信端末から受信すると、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの時刻情報と今回受信した前記ＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、前記受信端末に未到達のデータパケットを特定して再送する送信端末と、を含み、
前記時刻情報は、前記受信端末が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの送信時にそれぞれ付すタイムスタンプ、または前記送信端末が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする通信システム。
【請求項２】
送信したデータパケットに対して受信側が返信する確認応答（ＡＣＫ、acknowledgement）パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを受信すると、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの時刻情報と今回受信した前記ＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送する再送制御手段を含み、
前記時刻情報は、前記受信側が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの送信時にそれぞれ付すタイムスタンプ、または前記再送制御手段が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする通信装置。
【請求項３】
前記再送制御手段は、
今回受信した前記ＲＡＣＫパケットの前記時刻情報と、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの前記時刻情報との時間差を示す再送ＡＣＫ間隔時間に基づいて、前記受信側に未到達のデータパケットを特定するＡＣＫ再送判定手段と、
前記特定した前記受信側に未到達のデータパケットに対し、ネットワークの状況を考慮して決定した量の再送データを決定する再送レート判定手段と、
を含むことを特徴とする請求項２に記載の通信装置。
【請求項４】
前記ＡＣＫ再送判定手段は、前記ＡＣＫパケットで確認応答を受けてから送信したデータパケットを含め、当該データパケットの送信時刻から前記再送ＡＣＫ間隔時間の間に送信したデータパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする請求項３に記載の通信装置。
【請求項５】
前記ＡＣＫ再送判定手段は、前記再送ＡＣＫ間隔時間がＲＴＴ（Round Trip Time）に占める割合に、輻輳ウィンドウサイズを乗じたデータ量のパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする請求項３に記載の通信装置。
【請求項６】
前記再送レート判定手段は、前記特定した前記受信側に未到達のデータパケットに対し、輻輳ウィンドウサイズとの関係で送信可能なデータ量を判定することを特徴とする請求項３乃至請求項５のいずれかに記載の通信装置。
【請求項７】
前記送信端末は、請求項２乃至請求項６のいずれかに記載の通信装置であることを特徴とする請求項１に記載の通信システム。
【請求項８】
送信したデータパケットに対して受信側が返信する確認応答（ＡＣＫ、acknowledgement）パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを受信し、
直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの時刻情報と、今回受信した前記ＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送し、
前記時刻情報は、前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの送信時にそれぞれ付されるタイムスタンプ、または前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの受信時にそれぞれ付されるタイムスタンプである
ことを特徴とする再送制御方法。
【請求項９】
前記受信側に未到達のデータパケットは、今回受信した前記ＲＡＣＫパケットの前記時刻情報と、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの前記時刻情報との時間差を示す再送ＡＣＫ間隔時間に基づいて特定し、当該特定した前記受信側に未到達のデータパケットに対し、ネットワークの状況を考慮して決定した量の再送データを決定することを特徴とする請求項８に記載の再送制御方法。
【請求項１０】
コンピュータを、
送信したデータパケットに対して受信側が返信する確認応答（ＡＣＫ、acknowledgement）パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求（ＲＡＣＫ、retransmission acknowledgement）パケットを受信すると、直前に受信した前記ＡＣＫパケットまたは直前に受信した前記ＲＡＣＫパケットの時刻情報と、今回受信した前記ＲＡＣＫパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送する再送制御機能手段として機能させ、
前記時刻情報は、前記受信側が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの送信時にそれぞれ付すタイムスタンプ、または前記再送制御機能手段が前記ＡＣＫパケットおよび前記ＲＡＣＫパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする再送制御プログラム。
【国際調査報告】
2018155406.tif 000016
2018155406.tif 000017