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