(57)【要約】【課題】  送信装置と受信装置との間の通信を仲介する通信網の輻輳が軽微であると推測される場合に、再送タイムアウトの発生を適切に抑止し、データの送信効率を悪化させないようにする。【解決手段】  予め定められた数のデータブロックを連続して送信する送信装置に、送信済みのデータブロックの再送信を要求する旨の再送信要求を受信した場合に、その受信回数が所定の閾値に達した時点で、所定時間の計時を開始させるようにする。そして、上記送信装置は、上記所定時間が経過するまでに、上記データブロックを受信したことを表す通信メッセージを受信しなかった場合に、そのデータブロックを再送信する一方、連続して送信するデータブロックの数を削減する。【選択図】      図３
2005136637.tif 000002
【特許請求の範囲】
【請求項１】
予め定められた数のデータブロックを連続して送信する送信手段と、
前記送信手段によりデータブロックが送信されたことを契機として計時を開始する計時手段と、
前記送信手段により送信されたデータブロックを受信するべき受信装置から送信されてくる通信メッセージを受信する受信手段と、
前記送信手段により送信済みのデータブロックの再送信を要求する旨の通信メッセージが前記受信手段により受信された場合に、その受信回数を集計する集計手段と、
前記集計手段により集計された受信回数が所定の閾値よりも少ない間は、前記再送信を要求する旨の通信メッセージが前記受信手段により受信される度に、新たに計時を開始するように前記計時手段を制御する計時制御手段と、
前記計時手段により計時された時間が所定時間に達するまでに、前記送信手段により送信済みのデータブロックを受信したことを示す通信メッセージが前記受信手段により受信されなかった場合に、再度そのデータブロックを送信するように前記送信手段を制御する一方、前記予め定められた数を削減させる送信制御手段と
を有する送信装置。
【請求項２】
前記集計手段は、前記送信手段により送信済みのデータブロックを受信したことを表す通信メッセージが前記受信手段により受信された場合であっても、前記送信手段により送信済みのデータブロックのうち前記受信装置へ到達しなかったデータブロックがあることを表す付加データが該通信メッセージに含まれている場合には、前記受信回数を加算する
ことを特徴とする請求項１に記載の送信装置。
【請求項３】
前記付加データは、前記送信手段により送信済みのデータブロックのうち前記受信装置へ到達しなかったデータブロックの数を表しており、前記送信手段により送信済みのデータブロックの数と、該付加データで表される数とに基づいて前記閾値を決定する決定手段を有する
ことを特徴とする請求項２に記載の送信装置。
【請求項４】
前記決定手段は、前記受信装置から送信されると推測される通信メッセージの数を前記閾値として決定する
ことを特徴とする請求項３に記載の送信装置。
【請求項５】
予め定められた数のデータブロックを連続して送信する送信手段と、
前記送信手段により送信されたデータブロックを受信するべき受信装置から送信されてくる通信メッセージを受信する受信手段と、
前記送信手段により送信済みのデータブロックの再送信を要求する旨の通信メッセージが前記受信手段により受信された場合に、その受信回数を集計する集計手段と、
前記集計手段により集計された受信回数が所定の閾値に達した場合に、計時を開始する計時手段と、
前記計時手段により計時された時間が所定時間に達するまでに、前記再送信を要求されたデータブロックを受信したことを表す通信メッセージが前記受信手段により受信されなかった場合に、再度そのデータブロックを送信するように前記送信手段を制御する一方、前記予め定められた数を削減させる制御手段と
を有する送信装置。
【請求項６】
コンピュータ装置に、
予め定められた数のデータブロックを連続して送信する送信機能と、
前記送信機能によりデータブロックが送信されたことを契機として計時を開始する計時機能と、
前記送信機能により送信されたデータブロックを受信するべき受信装置から送信されてくる通信メッセージを受信する受信機能と、
前記送信手段により送信済みのデータブロックの再送信を要求する旨の通信メッセージが前記受信機能により受信された場合に、その受信回数を集計する集計機能と、
前記集計機能により集計された受信回数が所定の閾値よりも少ない間は、前記再送信を要求する旨の通信メッセージが前記受信機能により受信される度に、新たに計時を開始するように前記計時機能を制御する計時制御機能と、
前記計時機能により計時された時間が所定時間に達するまでに、前記送信機能により送信済みのデータブロックを受信したことを表す通信メッセージが前記受信機能により受信されなかった場合に、再度そのデータブロックを前記送信機能により送信する一方、前記予め定められた数を削減する送信制御機能と
を実現させるプログラム。
【請求項７】
コンピュータ装置に、
予め定められた数のデータブロックを連続して送信する送信機能と、
前記送信機能により送信されたデータブロックを受信するべき受信装置から送信されてくる通信メッセージを受信する受信機能と、
前記送信手段により送信済みのデータブロックの再送信を要求する通信メッセージが前記受信機能により受信された場合に、その受信回数を集計する集計機能と、
前記集計機能により集計された受信回数が所定の閾値に達した場合に、計時を開始する計時機能と、
前記計時機能により計時された時間が所定時間に達するまでに、前記再送信を要求されたデータブロックを受信したことを表す通信メッセージが前記受信機能により受信されなかった場合に、再度そのデータブロックを前記送信機能により送信する一方、前記予め定められた数を削減する制御機能と
を実現させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
データブロックを送信してから所定の時間が経過するまでに、該データブロックを受信したことを示す確認応答を該データブロックの宛先から受信しなかった場合に、該データブロックを再送信する技術に関する。
【背景技術】
【０００２】
ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）にしたがってデータ通信を行う送信装置や受信装置が普及している。この種の送信装置は、基本的に、図５に示すフローチャートにしたがってデータを送信する。図５に示されているように、送信装置は、まず、受信装置へ送信するべきデータを所定のデータサイズを有する部分データに分割し、各部分データ毎に固有のヘッダを付与したデータブロック（以下、「セグメント」）として送信する（ステップＳＡ１）。なお、上記ヘッダには、各セグメントに内包されている部分データを一意に特定するシーケンス番号が書き込まれている。そして、この送信装置は、セグメントを送信する際には、書き込まれているシーケンス番号が小さいものから順に送信するようになっている。一方、受信装置は、上記セグメントを受信すると、その旨を送信装置へ通知するため、確認応答と呼ばれる通信メッセージを送信装置へ返信するようになっている。この確認応答には、受信したセグメントの次に受信するべきセグメントのシーケンス番号が書き込まれている。
【０００３】
上述したように、ステップＳＡ１にて送信されたセグメントを受信すると受信装置は上記確認応答を返信する。このため、送信装置は、受信装置から送信されてくる確認応答に基づいて、ステップＳＡ１にて送信したセグメントがその宛先である受信装置に正しく受信されたか否かを判定することができる。具体的には、送信装置は、ステップＳＡ１にて送信したセグメントに対する確認応答を受信した場合（ステップＳＡ２：Ｙｅｓ）には、上記セグメントがその宛先の受信装置に正しく受信されたと判定し、例えば後続のセグメントを送信するなどしてセグメント送信処理を完了する。逆に、ステップＳＡ２の判定結果が“Ｎｏ”である場合には、送信装置は、ステップＳＡ１にてセグメントを送信してから所定の時間（以下、「再送タイムアウト時間」と呼ぶ）が経過したか否かを判定する（ステップＳＡ３）。
【０００４】
ステップＳＡ３の判定結果が“Ｎｏ”である場合には、送信装置は、ステップＳＡ２以降の処理を繰り返し実行し、確認応答の到達を待ち受ける。逆に、ステップＳＡ３の判定結果が“Ｙｅｓ”である場合には、送信装置は、ステップＳＡ１にて送信したセグメントは消失してしまったものと見なして、そのセグメントを再送信する（ステップＳＡ４）。なお、以下では、上記再送タイムアウト時間が経過するまでに対応する確認応答が送信されてこないことを「再送タイムアウト」と呼び、このようにしてセグメントを再送信することを「再送タイムアウトによる再送信」と呼ぶ。
【０００５】
以上に説明したように、ＴＣＰにしたがって行われる通信では、セグメントの送信元である送信装置に、そのセグメントがその宛先の受信装置に正しく受信されたか否かを確認させ、そのセグメントが受信装置へ到達していないと推測される場合（例えば、上記再送タイムアウトが発生した場合）には、そのセグメントを再送信させるようにしている。これにより、信頼性の高い通信を実現することができる。
【０００６】
ところで、ＴＣＰにしたがってセグメントを送信する送信装置は、データの送信効率を向上させるために、受信装置から送信されてくる確認応答の到達を待たずに、連続して複数のセグメントを送信し、送信済みのセグメントに対する確認応答を受信する度に、連続して送信するセグメントの数を順次増加させるようにすることもできる。以下では、このようにしてセグメントを送信することを「ウィンドウ制御」と呼び、連続して送信するセグメントの数を「輻輳ウィンドウサイズ」と呼ぶ。このようなウィンドウ制御を行ってセグメントを送信している状況下で、上記再送タイムアウトが発生した場合には、送信装置は、対応する確認応答を受信しなかったセグメントの再送信を行うことに加えて、上記輻輳ウィンドウサイズをその最小値（例えば、１つのセグメントを示す値）まで引き下げるようにしている。これは、送信装置と受信装置との通信を仲介する通信網の輻輳に起因して上記再送タイムアウトが発生していた場合に、そのような通信網へ大量のセグメントを流入させて輻輳を悪化させることを回避するためである。
【０００７】
このように、ウィンドウ制御を行ってセグメントを送信する場合には、再送タイムアウトが発生すると輻輳ウィンドウサイズが所定の値まで引き下げられてしまう。これは、１回の送信動作で送信装置が送信するセグメントの数を減少させることを意味している。このため、再送タイムアウト時間が短過ぎる場合には、再送タイムアウトが頻発し、データの送信効率が悪くなってしまう。逆に、再送タイムアウト時間が長過ぎる場合には、セグメントが消失した場合など、真にセグメントの再送信が必要な場合であっても、その再送タイムアウト時間が経過するまでそのセグメントの再送信が行われず、結局、データの送信効率を悪化させてしまう。つまり、効率良くデータ通信を行うためには、再送タイムアウト時間を適切に設定しておく必要がある。このようなことを実現するための技術としては、特許文献１や２に開示された技術が挙げられる。
【０００８】
特許文献１には、ＴＣＰにしたがってデータを送信する送信装置に、そのセグメントを受信するべき受信装置の処理速度、送信するデータ量およびセグメント数などに基づいて、最適なタイムアウト時間を設定させる技術が開示されている。具体的には、特許文献１に開示された送信装置は、受信装置へデータを送信することに先立って、そのデータと略同一のデータ量を有するデータのエコー要求を受信装置へ送信し、計時を開始する。そして、この送信装置は、受信装置から送信されくる確認応答の到達を監視し、その確認応答を受信するまでに要した時間に、所定のマージン時間を加算して得られる値を再送タイムアウト時間として設定するようになっている。
【０００９】
特許文献２には、送信データの消失とその到達遅延とを区別し、夫々の事象に応じて再送タイムアウト時間や輻輳ウィンドウサイズなどを適切に変更する技術が開示されている。具体的には、特許文献２に開示された送信装置は、セグメントの再送信を行った後に、受信装置から送信されてきた確認応答が、最初に送信したセグメントに対する確認応答であるか、再送したセグメントに対する確認応答であるを判定し、前者の場合には、到達遅延が発生していると判定して再送タイムアウト時間を長くするように変更することが記載されている。
【００１０】
【特許文献１】特開平１０−１２６４５９号公報
【特許文献２】特表２００２−５３４９０７号公報
【００１１】
ところで、ＴＣＰにしたがってセグメントを送信する送信装置は、上述した再送タイムアウトによるセグメントの再送信の他に、既に送信済みのセグメントの送信を要求する旨の通信メッセージ（以下、「再送信要求」）を所定回数（例えば、３回）受信した場合に、そのセグメントを再送信するようになっている。なお、このような態様でのセグメントの再送信は、再送タイムアウトの発生を待つことなくセグメントの再送信が行われるので、「高速再送信」と呼ばれている。なお、高速再送信を行う場合も、前述した再送タイムアウトによる再送信の場合と同様に通信網の輻輳を悪化させないようにするため、送信装置がウィンドウ制御を行ってセグメントを送信している場合には、輻輳ウィンドウサイズを所定の値（例えば、高速再送信を行う時点の輻輳ウィンドウサイズの半分の値）まで引き下げさせるようにしている。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
このように、ＴＣＰにしたがってセグメントを送信する送信装置は、以上に説明した２つの契機でセグメントの再送信を行うようになっている。これら２つの契機は互いに無関係に発生するため、特許文献１や２に開示されている技術を用いて適切に再送タイムアウト時間を設定したとしても、セグメントを送信してからそのセグメントに対応する確認応答を受信するまでに長い時間を要する通信網においては、以下に述べるような問題点が発生してしまう虞がある。すなわち、図６に示されているように、あるセグメント（シーケンス番号が“５００”のセグメント）に対して所定の数（図６においては、３）の再送信要求を受信し、そのセグメントを再送信したとしても、そのセグメントが受信装置へ到達するのは、既に送信済みのセグメントが到達した後になる。このため、再送信に係るセグメントについても確認応答が返信されてくるまでに余計な時間を要し、再送タイムアウトが発生してしまうことが起こり得る。このような場合には、輻輳ウィンドウサイズは、まず、高速再送が行われる時点で所定の値まで引き下げられ、次いで、再送タイムアウトによる再送信が行われる時点で、その最小値まで引き下げられることになり、データの送信効率を悪化させてしまうことになる。ここで注目すべき点は、図６に示されているように、高速再送を行った後も、そのセグメントに対する再送信要求が送信されてくることが起こり得る点である。送信装置と受信装置との通信を仲介する通信網が重度の輻輳状態であり、送信装置から送信されたセグメントが大量に欠落しているのならば、このようなことは起こり得ないはずである。つまり、これは、上記通信網が輻輳状態にあるものの、その度合いが比較的軽微であることを意味している。このように、通信網が重度の輻輳状態ではないと推測されるにも拘わらず、再送タイムアウトを検出して、セグメントの再送信を行ったり、輻輳ウィンドウサイズをその最小値まで引き下げたりすることは、データの送信効率を悪化させるだけである。
【００１３】
このような事態を回避するための方策としては、再送信要求が送信されてきた場合には、そのセグメントが受信装置へ到達したことを表す確認応答を受信した場合と同様に、再送タイムアウト時間の計時を停止することが考えられる。しかしながら、このようなことを無制限に行ってしまうと、再送タイムアウトが発生しなくなる虞があり、好ましくない。
【００１４】
本発明は、上記課題に鑑みてなされたものであり、送信装置と受信装置との通信を仲介する通信網の輻輳が軽微であると推測される場合に、再送タイムアウトの発生を適切に抑止し、データの送信効率を悪化させないようにする技術を提供することを目的としている。
【課題を解決するための手段】
【００１５】
上記課題を解決するために、本発明は、予め定められた数のデータブロックを連続して送信する送信手段と、前記送信手段によりデータブロックが送信されたことを契機として計時を開始する計時手段と、前記送信手段により送信されたデータブロックを受信するべき受信装置から送信されてくる通信メッセージを受信する受信手段と、前記送信手段により送信済みのデータブロックの再送信を要求する旨の通信メッセージが前記受信手段により受信された場合に、その受信回数を集計する集計手段と、前記集計手段により集計された受信回数が所定の閾値よりも少ない間は、前記再送信を要求する旨の通信メッセージが前記受信手段により受信される度に、新たに計時を開始するように前記計時手段を制御する計時制御手段と、前記計時手段により計時された時間が所定時間に達するまでに、前記送信手段により送信済みのデータブロックを受信したことを示す通信メッセージが前記受信手段により受信されなかった場合に、再度そのデータブロックを送信するように前記送信手段を制御する一方、前記予め定められた数を削減させる送信制御手段とを有する送信装置を提供する。
また、上記課題を解決するために、本発明は、予め定められた数のデータブロックを連続して送信する送信手段と、前記送信手段により送信されたデータブロックを受信するべき受信装置から送信されてくる通信メッセージを受信する受信手段と、前記送信手段により送信済みのデータブロックの再送信を要求する旨の通信メッセージが前記受信手段により受信された場合に、その受信回数を集計する集計手段と、前記集計手段により集計された受信回数が所定の閾値に達した場合に、計時を開始する計時手段と、前記計時手段により計時された時間が所定時間に達するまでに、前記再送信を要求されたデータブロックを受信したことを表す通信メッセージが前記受信手段により受信されなかった場合に、再度そのデータブロックを送信するように前記送信手段を制御する一方、前記予め定められた数を削減させる制御手段とを有する送信装置を提供する。
また、上記課題を解決するために、本発明は、コンピュータ装置に、予め定められた数のデータブロックを連続して送信する送信機能と、前記送信機能によりデータブロックが送信されたことを契機として計時を開始する計時機能と、前記送信機能により送信されたデータブロックを受信するべき受信装置から送信されてくる通信メッセージを受信する受信機能と、前記送信手段により送信済みのデータブロックの再送信を要求する旨の通信メッセージが前記受信機能により受信された場合に、その受信回数を集計する集計機能と、前記集計機能により集計された受信回数が所定の閾値よりも少ない間は、前記再送信を要求する旨の通信メッセージが前記受信機能により受信される度に、新たに計時を開始するように前記計時機能を制御する計時制御機能と、前記計時機能により計時された時間が所定時間に達するまでに、前記送信機能により送信済みのデータブロックを受信したことを表す通信メッセージが前記受信機能により受信されなかった場合に、再度そのデータブロックを前記送信機能により送信する一方、前記予め定められた数を削減する送信制御機能とを実現させるプログラムを提供する。
また、上記課題を解決するために、本発明は、コンピュータ装置に、予め定められた数のデータブロックを連続して送信する送信機能と、前記送信機能により送信されたデータブロックを受信するべき受信装置から送信されてくる通信メッセージを受信する受信機能と、前記送信手段により送信済みのデータブロックの再送信を要求する通信メッセージが前記受信機能により受信された場合に、その受信回数を集計する集計機能と、前記集計機能により集計された受信回数が所定の閾値に達した場合に、計時を開始する計時機能と、前記計時機能により計時された時間が所定時間に達するまでに、前記再送信を要求されたデータブロックを受信したことを表す通信メッセージが前記受信機能により受信されなかった場合に、再度そのデータブロックを前記送信機能により送信する一方、前記予め定められた数を削減する制御機能とを実現させるプログラムを提供する。
このような送信装置およびプログラムによれば、送信済みのデータブロックの再送信を要求する旨の通信メッセージの受信回数が所定の閾値に達した時点から上記所定時間の計時が開始される。
【発明の効果】
【００１６】
本発明によれば、送信装置と受信装置との通信を仲介する通信網の輻輳が軽微であると推測される場合に、再送タイムアウトの発生を適切に抑止し、データの送信効率を悪化させないようにすることが可能になるといった効果を奏する。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照しつつ本発明を実施するための最良の形態について説明する。
［Ａ：構成］
（Ａ−１：システム構成）
図１は、本発明に係る送信装置を有する通信システムの全体構成の一例を示す図である。図１に示されているように、この通信システムは、通信網１０に接続された送信装置２０と受信装置３０とを有している。この通信網１０は、例えば、インターネットであり、ルータやゲートウェイなどの中継装置を含んでいる。この通信網１０は、所定の通信プロトコル（本実施形態では、ＴＣＰ）にしたがって行われる通信を仲介することができる。なお、本実施形態では、通信網１０がインターネットである場合について説明するが、係る通信網はＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）であっても良く、また、移動パケット通信網や無線ＬＡＮのような無線通信網であっても良い。要は、送信装置２０と受信装置３０との間で所定の通信プロトコルにしたがって行われる通信を仲介する通信網であれば、いずれであっても良い。また、本実施形態では、通信網１０を介して送信装置２０と受信装置３０とが行う通信がＴＣＰに準拠している場合について説明するが、係る通信が準拠するべき通信プロトコルはＴＣＰに限定されるものではないことは言うまでもない。要は、送信したデータブロックがその宛先へ到達したことを、シーケンス番号を用いて確認するとともに、データブロックを送信してから所定の再送タイムアウト時間が経過するまでに、そのデータブロックを受信したことを示す確認応答が送信されてこなかった場合に、そのデータブロックを再送信するような通信プロトコルであれば良い。
【００１８】
送信装置２０と受信装置３０とは、いずれも、通信網１０に接続されたパーソナルコンピュータ（以下、「ＰＣ」）であり、通信網１０を介してＴＣＰにしたがった通信を行うことができる。なお、本実施形態では、送信装置２０と受信装置３０とが、ＴＣＰにしたがって通信するＰＣである場合について説明するが、ＴＣＰにしたがって通信するＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｃｅ）や携帯電話機であっても良いことは勿論である。要は、所定の通信プロトコルにしたがって通信する機能を有するコンピュータ装置であれば、何れであっても良い。
【００１９】
図１に示す通信システムが従来の通信システムと異なっている点は、送信装置２０が再送信要求を受信した場合に、その受信回数が所定の閾値（例えば、５）よりも少ない間は、再送信要求を受信する度毎に再送タイムアウト時間を改めて計時し直させるようにした点である。つまり、本実施形態によれば、上記受信回数が所定の閾値に達した時点から正味の再送タイムアウト時間の経過が計時されることになる。これにより、再送タイムアウトの発生を抑止し、データの送信効率を悪化させないようにすることができる。以下では、従来の通信システムとの相違点である送信装置２０を中心に説明する。
【００２０】
（Ａ−２：送信装置２０の構成）
まず、図２を参照しつつ送信装置２０の構成を説明する。図２に示されているように、送信装置２０は、制御部１００と、通信インターフェイス（以下、「ＩＦ」と表記する）部１１０と、記憶部１２０と、これら各構成要素間のデータ授受を仲介するバス１３０とを有している。
【００２１】
制御部１００は、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であり、記憶部１２０に格納されているソフトウェアを読み出し実行することにより、送信装置２０の各部を制御するためのものである。通信ＩＦ部１１０は、通信網１０に接続されており、通信網１０を介して送くられてくるセグメントを受信し制御部１００へ引渡すとともに、制御部１００から引渡されたセグメントを通信網１０へ送り出すためのものである。
【００２２】
記憶部１２０は、図２に示されているように、揮発性記憶部１２０ａと不揮発性記憶部１２０ｂとを有している。揮発性記憶部１２０ａは、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、ソフトウェアにしたがって作動している制御部１００によってワークエリアとして利用される。不揮発性記憶部１２０ｂは、例えば、ハードディスクであり、受信装置３０へ送信するべきデータや、輻輳ウィンドウサイズの初期値を表すデータ、再送タイムアウト時間を表すデータ、上述した閾値を表すデータなどが格納されている。なお、本実施形態では、受信装置３０へ送信するべきデータが不揮発性記憶部１２０ｂに格納されている場合について説明したが、図示せぬ操作部（キーボードやマウスなど）をユーザが操作することにより係るデータを入力するとしても良いことは勿論である。また、本実施形態では、再送タイムアウト時間を表すデータが不揮発性記憶部１２０ｂに格納されている場合について説明するが、例えば、セグメントを送信することに先立って、ｐｉｎｇ（Ｐａｃｋｅｔ  ＩＮｔｅｒｎｅｔ  Ｇｒｏｐｅｒ）などを実行し、再送タイムアウト時間を求めても良いことは勿論である。
【００２３】
上記不揮発性記憶部１２０ｂには、上記各種データの他に、オペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ：以下、「ＯＳ」）を制御部１００に実現させるためのＯＳソフトウェアや、上記データをＴＣＰにしたがって受信装置３０へ送信するためのデータ送信ソフトウェアが格納されている。以下、これらソフトウェアを実行することによって制御部１００に付与される機能について説明する。
【００２４】
送信装置２０の電源（図示省略）が投入されると、制御部１００は、まず、ＯＳソフトウェアを不揮発性記憶部１２０ｂから読み出し実行する。ＯＳソフトウェアにしたがって作動している制御部１００には、送信装置２０の各部を制御する機能、他のソフトウェアを不揮発性記憶部１２０ｂから読み出し実行する機能が付与される。そして、ＯＳソフトウェアの実行を完了し、ＯＳを実現している状態の制御部１００は、受信装置３０から上記データの送信を要求されると、上記データ送信ソフトウェアを不揮発性記憶部１２０ｂから読み出し実行する。図３は、上記データ送信ソフトウェアにしたがって作動している制御部１００が実行するデータ送信処理の流れを示すフローチャートである。図３に示されているように、上記データ送信ソフトウェアにしたがって作動している制御部１００には、以下に述べる６つの機能が付与される。なお、詳細な図示すは省略したが、上記受信回数が予め定められた数（例えば、３）に達した場合に、前述した高速再送信が行われることは言うまでもない。
【００２５】
第１に、受信装置３０へ送信するべきデータを所定のデータサイズを有する部分データに分割してセグメントを生成し、スロースタートアルゴリズムにしたがって送信する送信機能である。なお、本実施形態では、送信装置２０から受信装置３０へ送信されるデータブロックがセグメントである場合について説明したが、係るデータブロックはセグメントに限定されるものではない。例えばパケットであっても良く、フレームであっても良い。第２に、上記送信機能によりセグメントを送信したことを契機として計時を開始する計時機能である。第３に、上記送信機能により送信したセグメントの宛先である受信装置３０から送信されてくる通信メッセージを受信する受信機能である。第４に、上記受信機能により受信された通信メッセージが再送信要求である場合に、その受信回数を集計する集計機能である。第５に、上記受信回数が上記閾値よりも少ない間は、上記再送信要求を受信する度に、その時点から新たに計時を開始するように前記計時機能を制御する計時制御機能である。そして、第６に、上記計時機能により計時された時間が上記再送タイムアウト時間に達するまでに、送信済みのセグメントに対する確認応答が上記受信機能により受信されなかった場合に、再度そのセグメントを上記送信機能により送信する一方、輻輳ウィンドウサイズをその最小値まで引き下げる送信制御機能である。
【００２６】
以上に説明したように、送信装置２０のハードウェア構成は一般的なコンピュータ装置のハードウェア構成と同一であり、記憶部１２０に格納されている各種ソフトウェアを制御部１００に実行させることにより、本発明に係る送信装置に特有な６つの機能が制御部１００に付与される。このように、本実施形態では、本発明に係る送信装置に特有な機能をソフトウェアモジュールを用いて実現する場合について説明した。しかしながら、これらソフトウェアモジュールと同一の機能を担っているハードウェアモジュールを用いて送信装置２０を構成しても良いことは勿論である。
【００２７】
［Ｂ：動作］
次いで、本実施形態に係る送信装置２０が行う動作のうち、その特徴を顕著に示す動作についてのみ図面を参照しつつ説明する。なお、以下では、送信装置２０の制御部１００は、上記データ送信ソフトウェアにしたがって作動しており、不揮発性記憶部１２０ｂに格納されているデータを５００バイトづつの部分データに分割して受信装置３０へ送信するものとする。また、以下に説明する動作例では、輻輳ウィンドウサイズの初期値は“１０セグメント”であり、再送タイムアウト時間は“Ｔ秒”であり、上述した閾値は“５”であるとする。
【００２８】
図３に示されているように、送信装置２０の制御部１００が行う処理と、従来の送信装置が行う処理（図５参照）とで異なっている点は、ステップＳＢ１からステップＳＢ４までの４つの処理を新たに設けた点である。以下では、これら４つのステップを中心に説明する。
【００２９】
上述したように、本動作例では、輻輳ウィンドウサイズは１０であるから、送信装置２０の制御部１００は、図４に示されているように、シーケンス番号が“５００”から“５０００”までの１０個のセグメントを送信し（ステップＳＡ１）、これら１０個のセグメントに対する確認応答が送信されてくることを待ち受ける。本動作例では、図４に示されているように、これら１０個のセグメントのうち、シーケンス番号が“５００”であるセグメントのみが受信装置３０へ到達しなかったものとする。
【００３０】
一方、受信装置３０は、図４に示されているように、上記９個のセグメント（シーケンス番号が、“１０００”から“５０００”までのセグメント）を受信する度に、これら９個のセグメントに先立って受信するべきセグメントのシーケンス番号（すなわち、“５００”）を書き込んだ通信メッセージ（すなわち、シーケンス番号が“５００”であるセグメントの再送信要求）を返信する。本動作例では、このようにして受信装置３０から送信された９つの再送信要求は、その送信された順に送信装置２０へ到達するものとする。以下、図３に戻って、このような再送信要求を受信した場合に送信装置２０の制御部１００が行う動作を説明する。
【００３１】
上述したように受信装置３０から送信されてくる通信メッセージには、上述したステップＳＡ１にて既に送信したセグメントのシーケンス番号が内包されている。つまり、この通信メッセージは、シーケンス番号が“５００”であるセグメントが受信装置３０へ到達していないことを表している。このため、ステップＳＡ２の判定結果は“Ｎｏ”になり、ステップＳＢ１の処理が行われる。
【００３２】
ステップＳＢ１は、ステップＳＡ２にて受信した通信メッセージが、送信済みのセグメントに対する再送信要求であるか否か判定するステップである。そして、制御部１００は、ステップＳＢ１の判定結果が“Ｎｏ”である場合には、前述したステップＳＡ３の処理を行い、逆に、ステップＳＢ１の判定結果が“Ｙｅｓ”である場合には、後述するステップＳＢ２の処理を行う。本動作例では、ステップＳＡ２にて受信された通信メッセージは、既に送信済みであるセグメント（シーケンス番号が“５００”のセグメント）の再送信を要求する再送信要求であるから、上記ステップＳＢ１の判定結果は“Ｙｅｓ”になり、ステップＳＢ２の処理が行われる。
【００３３】
ステップＳＢ２は、上述したステップＳＡ２にて受信した再送信要求の受信回数を集計するステップである。そして、ステップＳＢ２に後続して実行されるステップＳＢ３では、制御部１００は、ステップＳＢ２にて算出した受信回数が上述した閾値以下であるか否かを判定する。そして、制御部１００は、ステップＳＢ３の判定結果が“Ｙｅｓ”である場合には、その時点から上記再送タイムアウト時間の計時を新たに開始し（ステップＳＢ４）、前述したステップＳＡ３以降の処理を実行する。逆に、ステップＳＢ３の判定結果が“Ｎｏ”である場合には、上記ステップＳＢ３の処理を行うことなく、前述したステップＳＡ３以降の処理を実行する。
【００３４】
本動作例では、図４に示されているように、ステップＳＡ１にて送信した１０個のセグメントに対して、９個の再送信要求が送信されてくる。図４に示されているように、この９個の再送信要求のうち最初の３個を受信すると、送信装置２０はその再送信要求に係るセグメント（すなわち、シーケンス番号が５００であるセグメント）を再送信する。そして、５番目に受信装置３０から送信された再送信要求が送信装置２０へ到達するのが上記再送信を行ってからＴ１秒後であるとすると、その時点から正味の再送タイムアウト時間の計時が開始されることになる。その理由は以下の通りである。受信装置３０から送信された９個の再送信要求のうち、その１番目から５番目までに送信された再送信要求を受信した場合には、上記ステップＳＢ３の判定結果は“Ｙｅｓ”になり、制御部１００は、その都度上記ステップＳＢ４の処理を行う。つまり、上記１番目から５番目まで送信された再送信要求を受信する度に、送信装置２０は、再送タイムアウト時間の計時をリセットし新たにその計時を開始する。このため、５番目の再送信要求を受信したことを契機として開始された再送タイムアウト時間の計時のみが有効になる。そして、６番目以降に送信された再送信要求を受信しても、上記ステップＳＢ３の判定結果は“Ｎｏ”になるため、送信装置２０は、上記ステップＳＢ４の処理を行わない。その結果、図４に示されているように、再送信要求に係るセグメントを送信装置２０が再送信した時点から、Ｔ１＋Ｔ秒が経過するまで再送タイムアウトが発生しないことになる。このように、本実施形態によれば、通信網が重度の輻輳状態ではないと推測される場合に、再送タイムアウトの発生を抑止して、データの送信効率を悪化を回避することが可能になるといった効果を奏する。なお、本実施形態では、再送信要求の受信回数についての閾値として“５”を設定しておく場合について説明した。しかしながら、係る閾値は“５”に限定されるものではない。要は、高速再送の契機となる受信回数よりも大きな値であれば、いずれであっても本実施形態と同一の効果を得ることができる。
【００３５】
［Ｃ：変形例］
以上、本発明を実施するための最良の形態について説明した。しかしながら、以下に述べるような変形を加えても良いことは勿論である。
【００３６】
（Ｃ−１：変形例１）
上述した実施形態では、セグメントの欠落が発生した場合に、そのセグメントのシーケンス番号を書き込んだ通信メッセージを、受信装置３０に送信させる場合について説明した。しかしながら、シーケンス抜けのセグメントがあった場合であっても、受信済みのセグメントの次に受信するべきセグメントのシーケンス番号と、シーケンス抜けのセグメントを表す付加データとを書き込んだ通信メッセージを受信装置３０に送信させるとしても良い。このような場合には、上記付加データの有無を検出させることにより、その通信メッセージが再送信要求であるか否かを送信装置２０に判定させることができるからである。なお、上記付加データとしては、周知のＳＡＣＫ（Ｓｅｌｅｃｔｉｖｅ  ＡＣＫｎｏｗｌｅｄｇｍｅｎｔ）データや、受信したセグメントのヘッダに書き込まれているタイムスタンプなどが挙げられる。なお、タイムスタンプとは、セグメントの送信時刻を表すデータであり、送信装置２０がセグメントを送信する際にそのセグメントのヘッダの所定領域に書き込むものである。
【００３７】
また、上記付加データを用いる場合には、シーケンス抜けのセグメントが複数ある場合に、これら複数のセグメントの再送信を一括して送信装置２０へ要求することができる。そして、このような態様においては、送信済みのセグメントの数と上記付加データで表されるシーケンス抜けのセグメントの数とに基づいて、上述した閾値を送信装置２０に決定させるとしても良い。具体的には、送信済みのセグメントの数から上記ＳＡＣＫデータで表される数を差し引いた値（すなわち、受信装置３０から送信されてくると推測される再送信要求の個数の最大値）やこの値の半分の値などを上記閾値として用いることが挙げられる。例えば、上記最大値を上記閾値として設定すると、受信装置３０から最後に送信されてくる再送信要求を受信したことを契機として再送タイムアウト時間の計時を新たに開始することになる。一般に、前述した高速再送信によって再送信されたセグメントは、既に送信済みのセグメントよりも後に受信装置３０へ到達することになるから、このようにすることにより、高速再送信したセグメントについての再送タイムアウトの監視を正確に行うことができるようになるといった効果を奏する。
【００３８】
（Ｃ−２：変形例２）
上述した実施形態では、再送信要求を受信した場合に、その受信回数が所定の閾値以下である場合には、その再送信要求を受信する度に、再送タイムアウト時間の計時を新たに開始する場合について説明した。しかしながら、あるセグメントについての再送信要求を最初に受信した時点で再送タイムアウト時間の計時を停止させ、さらに、その受信回数が上記閾値に等しくなったことを契機として、再送タイムアウト時間の計時を新たに開始させるとしても良い。また、上述した実施形態では、受信装置３０へセグメントを送信したことを契機として再送タイムアウト時間の計時を開始させる場合について説明したが、あるセグメントについての再送信要求の受信回数が上記閾値に等しくなったことを契機として再送タイムアウト時間の計時を開始させるとしても良い。その理由は、上記態様の何れであっても上述した実施形態と同一の効果が得られるからである。
【００３９】
（Ｃ−３：変形例３）
上述した実施形態では、本発明に係る送信装置に特有な機能を実現させるためのデータ送信ソフトウェアを不揮発性記憶部１２０ｂに予め格納させておく場合について説明した。しかしながら、例えば、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などのコンピュータ装置読み取り可能な記録媒体に、上記データ送信ソフトウェアを記録させておき、このような記録媒体を用いて一般的なコンピュータ装置に上記データ送信ソフトウェアをインストールするとしても良いことは勿論である。このようにすると、一般的なコンピュータ装置に本発明に係る送信装置と同一の機能を付与することができるといった効果を奏する。
【図面の簡単な説明】
【００４０】
【図１】本発明の一実施形態に係る通信システムの構成例を示す図である。
【図２】同送信装置２０のハードウェア構成の一例を示すブロック図である。
【図３】同送信装置２０の制御部１００が行うデータ送信処理の流れを示すフローチャートである。
【図４】同通信システムにおける通信シーケンスを説明するための図である。
【図５】従来の送信装置が行うデータ送信処理の流れを示すフローチャートである。
【図６】従来の送信装置と受信装置とを有する通信システムにおける通信シーケンスを説明するための図である。
【符号の説明】
【００４１】
１０…通信網、２０…送信装置、３０…受信装置、１００…制御部、１１０…通信ＩＦ部、１２０…計時部、１２０…記憶部、１２０ａ…揮発性記憶部、１２０ｂ…不揮発性記憶部、１３０…バス。
【図１】
2005136637.tif 000003
【図２】
2005136637.tif 000004
【図３】
2005136637.tif 000005
【図４】
2005136637.tif 000006
【図５】
2005136637.tif 000007
【図６】
2005136637.tif 000008