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