(57)【要約】【課題】データ通信において、欠落したセグメントを送信装置に再送信させる際に、受信装置が既に受信済みのセグメントを再送信させないようにする技術を提供すること。【解決手段】シーケンス抜けのセグメントを受信した受信装置に、そのセグメント以降に連続して受信すべきセグメントのうち、欠落している部分を特定させ、欠落しているセグメントの個数を広告ウインドウサイズとして内包した確認応答を送信させる。【選択図】        図４
2004343552.tif 000002
【特許請求の範囲】
【請求項１】
決められた数のセグメントを連続して送信する送信装置から送信されてくるセグメントを受信する受信手段と、
前記受信手段により受信されたセグメントに内包されているシーケンス番号を記憶する記憶手段と、
前記記憶手段の記憶内容に基づき、連続すべき複数のセグメントの中に欠落部分があるか否かを判定する判定手段と、
欠落部分があると前記判定手段により判定された場合に、当該欠落部分の先頭から最後までのセグメントの欠落数を算出する算出手段と、
前記欠落部分の先頭のセグメントに対応するシーケンス番号と、前記算出手段により算出された欠落数を前記送信装置へ通知し、欠落したセグメントの再送信を要求する要求手段と
を有する受信装置。
【請求項２】
本装置から送信されたセグメントを受信する受信装置から送信された確認応答を受信する受信手段と、
前記受信手段により受信された確認応答が、欠落したセグメントに対する確認応答である場合にその有効性を判定する判定手段と、
有効な確認応答であると前記判定手段により判定された場合にのみ、前記受信手段により受信された確認応答に内包されているシーケンス番号で特定されるセグメントを前記受信装置へ送信する送信手段と
を有する送信装置。
【請求項３】
コンピュータ装置に、
決められた数のセグメントを連続して送信する送信装置から送信されてくるセグメントを受信する受信機能と、
前記受信機能により受信されたセグメントに内包されているシーケンス番号を記憶する記憶機能と、
該コンピュータ装置の記憶内容に基づいて、連続すべき複数のセグメントの中に欠落部分があるか否かを判定する判定機能と、
欠落部分があると前記判定機能により判定された場合に、当該欠落部分の先頭から最後までのセグメントの欠落数を算出する算出機能と、
前記欠落部分の先頭のセグメントに対応するシーケンス番号と、前記算出機能により算出された欠落数を前記送信装置へ通知し、欠落したセグメントの再送信を要求する要求機能と
を実現させるプログラム。
【請求項４】
コンピュータ装置に、
該コンピュータ装置から送信されたセグメントを受信する受信装置から送信された確認応答を受信する受信機能と、
前記受信機能により受信された確認応答が、欠落したセグメントに対する確認応答である場合にその有効性を判定する判定機能と、
有効な確認応答であると前記判定機能により判定された場合にのみ、前記受信機能により受信された確認応答に内包されているシーケンス番号で特定されるセグメントを前記受信装置へ送信する送信機能と
を実現させるプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
データ通信において、セグメントの欠落が発生した場合に、欠落したセグメントを再送信する技術に関する。
【０００２】
【従来の技術】
近年、データ通信機能を備えた携帯電話機やパーソナルコンピュータ装置など、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）にしたがってデータの送受信を行う端末装置が一般に普及している。ＴＣＰとは、ＯＳＩ参照モデルにおけるトランスポート層の通信プロトコルの１つであり、信頼性の高い通信を実現するための通信プロトコルである。具体的には、ＴＣＰにしたがって行われる通信では、その信頼性を確保するために、送信装置から送信されたセグメントが受信装置へ到達しなかった場合に、そのセグメントを再送信させるようにしている。なお、セグメントとは、トランスポート層における通信単位のデータブロックであり、送信装置から送信された順番を示す一連の番号（以下、「シーケンス番号」という）が内包されている。また、以下では、送信装置から送信されたセグメントが受信装置へ到達しないことを「セグメントの欠落」と称する。
【０００３】
ＴＣＰにしたがってセグメントを送信する送信装置は、以下に述べる２種類の判断基準でセグメントの欠落を検出し、欠落したセグメントを再送信している。第１の判定基準は、セグメントを送信してから所定の時間（以下、「再送タイムアウト時間」という）内に、そのセグメントを受信したことを示す確認応答が受信装置から送信されてきたか否かである。この再送タイムアウト時間内に確認応答が送信されてこなかった場合には、送信装置はセグメントの欠落が発生したものとみなして、そのセグメントを再送信する。以下では、第１の判定基準によるセグメントの再送信を「タイムアウトによる再送信」という。第２の判定基準は、受信装置から重複確認応答が所定の回数（例えば、３回）送信されてきたか否かである。重複確認応答とは、受信したセグメントのシーケンス番号と、その１つ前に受信したセグメントのシーケンス番号とが連続していなかった場合に、次に受信を期待するセグメントのシーケンス番号を送信装置へ通知するために受信装置が送信する確認応答である。送信装置は、この重複確認応答を所定の回数受信した場合には、再送タイムアウト時間の経過前であっても、セグメントの欠落が発生したものとみなして、即座に、その重複確認応答で示されるセグメントを再送信する。このように、第２の判定基準によりセグメントを再送信する態様は、再送タイムアウト時間の経過を待たずに再送信を行うことができるため、「高速再送信」と呼ばれている。
【０００４】
ＴＣＰにしたがって行われる通信では、以上のようにして、セグメントの欠落を検知し、欠落したセグメントを再送信するようにしている。また、ＴＣＰにしたがって行われる通信では、セグメントの欠落を検知した場合に、以下に説明する輻輳制御を行って、多量のセグメントをネットワークへ送出しないようにするとともに、以下に説明するフロー制御を行って、受信装置のバッファ容量を超える数のセグメントを送信しないようにしている。以下、フロー制御と輻輳制御とについて詳細に説明する。
【０００５】
ＴＣＰにしたがってセグメントを送信する送信装置は、ｓｎｄ＿ｍａｘ、ｓｎｄ＿ｎｘｔ、ｓｎｄ＿ｕｎａ、ｓｎｄ＿ｗｎｄおよびｓｎｄ＿ｃｗｎｄの５種類のパラメータ変数を記憶しており、これら５種類のパラメータ変数に基づいて算出される数のセグメントを受信装置へ送信することにより、輻輳制御およびフロー制御を実現している。図８は、これら５種類のパラメータ変数の関係を説明するための図である。ｓｎｄ＿ｍａｘには、送信済みのセグメントに内包されているシーケンス番号のうちで最大のシーケンス番号（図８では、シーケンス番号“６”）が格納されている。ｓｎｄ＿ｎｘｔには、送信装置が次に送信するセグメントのシーケンス番号（図８では、シーケンス番号“７”）が格納されている。ｓｎｄ＿ｕｎａには、送信装置が送信したセグメントのうち、確認応答を受信していないセグメントに内包されているシーケンス番号のうちで最小のシーケンス番号（図８では、シーケンス番号“４”）が格納されている。ｓｎｄ＿ｃｗｎｄには、送信装置が先に送信したセグメントに対して確認応答を受信することなく、送信可能なセグメントの数を示す値がバイト単位で格納されている。ただし、送信装置が１往復時間内に実際に送信するセグメントは、図８において、ｓｎｄ＿ｕｎａからｓｎｄ＿ｕｎａ＋ｍｉｎ（ｓｎｄ＿ｗｎｄ，ｓｎｄ＿ｃｗｎｄ）で示される範囲にあるセグメントである。ここで、ｓｎｄ＿ｗｎｄには、受信装置から通知された広告ウィンドウサイズが格納されている。この広告ウィンドウサイズとは、受信装置の受信バッファの空き容量をバイト単位で示す値である。また、１往復時間とは、送信装置がセグメントを送信してから、そのセグメントに対する確認応答を受信するまでに要する時間である。以下では、送信装置が１往復時間内に送信するセグメントの数を「送信ウィンドウサイズ」という。このようにして算出される送信ウィンドウサイズはｓｎｄ＿ｗｎｄ（すなわち、広告ウィンドウサイズ）を超えることがないため、受信装置のバッファの空き容量を超える数のセグメントが１往復時間内に送信されることはない。このように、ＴＣＰにしたがってセグメントを送信する送信装置は、受信装置から通知された広告ウィンドウサイズを加味して送信するセグメントの数を調整することにより、フロー制御を実現している。
【０００６】
更に、上記送信装置は、上述したｓｎｄ＿ｃｗｎｄの値を適切に更新することによって輻輳制御を実現する。以下、上記送信装置が行う輻輳制御について説明する。上記ｓｎｄ＿ｃｗｎｄには、初期値として最大セグメントサイズが格納されている。この最大セグメントサイズ（Ｍａｘｉｍｕｍ  Ｓｅｇｍｅｎｔ  Ｓｉｚｅ：以下、「ＭＳＳ」という）とは、１つのセグメントに内包させるデータの大きさの最大値を示す値であり、デフォルトでは５１２バイト（すなわち、１ＭＳＳ＝５１２バイト）である。そして、送信装置はスロースタートと呼ばれるアルゴリズム（非特許文献１参照）にしたがってｓｎｄ＿ｃｗｎｄに格納されている値を更新してゆく。具体的には、送信装置は、ｓｎｄ＿ｃｗｎｄの値が所定の閾値（例えば、６５５３５バイト）に達するまで、送信したセグメントに対する確認応答を受信する度に、その値を１ＭＳＳ、２ＭＳＳ、４ＭＳＳ、８ＭＳＳと指数関数的に増加させる。そして、送信装置は、ｓｎｄ＿ｃｗｎｄの値が所定の閾値に達すると、以降、セグメントの欠落を検出するまで、１往復時間が経過する度にその値を１ＭＳＳずつ増加させる。
【０００７】
そして、送信装置は、再送タイムアウトの発生を検出すると、まず、上述した閾値を再送タイムアウトの発生を検出した時点の送信ウィンドウサイズの半分の値で更新するとともに、ｓｎｄ＿ｃｗｎｄに１ＭＳＳを格納する。その後、送信装置は、ｓｎｄ＿ｎｘｔをｓｎｄ＿ｕｎａで書き換えて、ｓｎｄ＿ｎｘｔで示されるセグメントから再送信を開始するとともに、再送信したセグメントに対して確認応答を受信する毎にｓｎｄ＿ｃｗｎｄに格納されている値を上述したスロースタートにしたがって増加させる。
【０００８】
以上に説明したセグメント再送、輻輳制御およびフロー制御などの動作は、ＴＣＰにしたがってセグメントを送信する送信装置が一般的に行う動作である。これに対して、ＴＣＰにしたがって行われる通信の効率を向上させるための様々な技術（例えば、特許文献１、非特許文献２および非特許文献３）が提案されている。
【０００９】
特許文献１に開示されている技術は、ＳＡＣＫオプションをサポートしたＲｅｎｏと呼ばれているバージョンのＴＣＰ（以下、「Ｒｅｎｏ−ＴＣＰ」という）にしたがって行われる通信において、効率的にデータ転送を行うことを実現する技術である。なお、ＳＡＣＫオプションとは、セグメントの欠落が発生した後に受信装置が受信したセグメントを送信装置へ通知するための情報である。この特許文献１に開示されている技術によれば、送信装置は、受信装置から受信した確認応答に内包されているＳＡＣＫ情報によりパケットの欠落を通知された場合、ｓｎｄ＿ｃｗｎｄに格納されている値が所定の閾値以下の場合にのみ、欠落したパケットを直ちに再送信する。これにより、Ｒｅｎｏ−ＴＣＰにしたがって行われる通信において、パケット順序の入れ替わりによる誤再送の影響を抑止しつつ、パケットの欠落が頻繁に発生する状況であっても、効率よくデータ転送を行うことが実現される。
【００１０】
非特許文献２には、ＮｅｗＲｅｎｏと呼ばれているバージョンのＴＣＰ（以下、「ＮｅｗＲｅｎｏ−ＴＣＰ」という）の仕様が開示されている。ＮｅｗＲｅｎｏ−ＴＣＰにしたがってセグメントを送信する送信装置は、前述した高速再送信を行った後に、高速回復と呼ばれるアルゴリズムにしたがって欠落したセグメントの再送信を行う。送信装置が高速回復にしたがって動作している場合には、１往復時間内に再送信されるセグメントの数は１に制限される。これは、受信装置によって既に受信済されているセグメントが再送信されないようにするためである。そして、送信装置は、以前に送信済みのセグメントのうち、最大のシーケンス番号を有するセグメントに対しての確認応答を受信するまで、高速回復にしたがってセグメントの再送信を行う。これは、複数のセグメントが欠落している場合に対処するためである。このように複数のセグメントが欠落している場合には、これら複数のセグメントを全て受信するまで、受信装置は最大のシーケンス番号を有するセグメントに対する確認応答を送信してこないからである。
【００１１】
非特許文献３には、モバイルＩＰにしたがって行われる通信において、受信装置がアクセスルータを切り替えること（以下、「ハンドオーバー」という）に起因して欠落したセグメントを、効率的に再送信するための技術が開示されている。具体的には、非特許文献３に開示されている技術によれば、ハンドオーバーによるセグメントの欠落が発生した場合に、受信装置は、前述した広告ウィンドウサイズに“０”を設定した確認応答を送信装置へ送信し、ハンドオーバーに起因するセグメントの欠落が発生したことを送信装置へ通知する。このような確認応答を受信すると、送信装置は、送信済みのセグメントに対して再送タイムアウト時間の計測を中止するとともに、送信済みのセグメントで未だ確認応答を受信していない全てのセグメントについて、受信装置の受信バッファの容量不足により欠落したものと判定する（以下、このような送信装置の状態を「Ｐｅｒｓｉｓｔｅｎｔ  Ｓｔａｔｅ」という）。そして、送信装置は、前述したｓｎｄ＿ｎｘｔ  をｓｎｄ＿ｕｎａで更新し、欠落したとみなしたセグメントを再送信する。そして、送信装置は、受信装置からＰｅｒｓｉｓｔｅｎｔ  Ｓｔａｔｅを解除する旨の確認応答（具体的には、広告ウィンドウサイズが“０”以外の値である確認応答）を受信すると、上述したＰｅｒｓｉｓｔｅｎｔ  Ｓｔａｔｅを終了し、ｓｎｄ＿ｎｘｔで示されるセグメントからセグメントの送信を再開する。
【００１２】
【特許文献１】
特開２０００−７８１９５号公報
【非特許文献１】
Ｒ．Ｗ．Ｓｔｅｖｅｎｓ．  ＴＣＰ  Ｓｌｏｗ  Ｓｔａｒｔ，  Ｃｏｎｇｅｓｔｉｏｎ  Ａｖｏｉｄａｎｃｅ，                                        Ｆａｓｔ  Ｒｅｃｏｖｅｒｙ  Ａｌｇｏｒｉｔｈｍｓ．  ＲＦＣ２００１，  Ｊａｎｕａｒｙ  １９９７．
【非特許文献２】
Ｓ．Ｆｌｏｙｄ  ａｎｄ  ｅｔ  ａｌ．
Ｔｈｅ  ＮｅｗＲｅｎｏ  Ｍｏｄｉｆｉｃａｔｉｏｎ  ｔｏ  ＴＣＰ’ｓ  Ｆａｓｔ  Ｒｅｃｏｖｅｒｙ  Ａｌｇｏｒｉｔｈｍ．
ＲＦＣ２５８２，  Ａｐｒｉｌ  １９９９．
【非特許文献３】
Ｋ．Ｉｇａｒａｓｈｉ  ｅｔ  ａｌ．  Ａｄｏｐｔｉｏｎ  ｏｆ  Ｄｅｌａｙｅｄ  ＡＣＫ  ｆｏｒ  ＴＣＰ  ｉｎ  Ｗｉｒｅｌｅｓｓ                                                          Ｅｎｖｉｒｏｎｍｅｎｔｓ．  信学技法  ＩＮ２００２−１１１，  ２００２
【００１３】
【発明が解決しようとする課題】
ところで、非特許文献２に開示されている技術では、再送タイムアウトによるセグメントの再送信に起因して通信システム全体のスループットの低下を招く虞があるといった問題点がある。例えば、図９に示されるように、送信装置から１２個のセグメントが送信され、そのうち４番目から８番目までのセグメントが欠落し、これらの欠落したセグメントについて再送タイムアウトにより再送信する場合を想定する。送信装置は、上述したスロースタートを行い、ｓｎｄ＿ｃｗｎｄに格納されている値を更新しつつ、４番目のセグメントから再送信を開始する。具体的には、送信装置は、まず、ｓｎｄ＿ｃｗｎｄに格納されている値を１ＭＳＳに更新し、４番目のセグメント１つのみを再送信する。そして、４番目のセグメントに対する確認応答を受信すると、ｓｎｄ＿ｃｗｎｄに格納されている値を２ＭＳＳに更新し、５番目および６番目のセグメントを送信する。そして、送信装置は、この６番目のセグメントに対する確認応答を受信すると、ｓｎｄ＿ｃｗｎｄに格納されている値を４ＭＳＳに更新し、７番目から１０番目までの４つのセグメントを送信する。ここで、これらの４つのセグメントのうち、９番目および１０番目のセグメントは、既に、受信装置が受信済みのセグメントであり、再送信する必要のないセグメントである。しかしながら、送信装置は、受信装置が既に受信済みのセグメントを検出することができないために、再送信する必要のないセグメントも送信してしまう。このように、受信装置が既に受信済みのセグメントまで再送信されてしまうと、受信装置は前述した重複確認応答（図９においては、１３番目のセグメントの送信を要求する重複確認応答）を送信してしまう。そして、送信装置は、７番目のセグメントに対する確認応答（８番目のセグメントの送信を要求する旨の確認応答）を受信した時点では、更に、１１番目〜１８番目のセグメントを送信する。その結果、受信装置は、９番目から１１番目までの３つのセグメントに対して、１３番目のセグメントを送信する旨の重複確認応答を送信してしまう。以降、送信装置は、１３番目のセグメントの送信を要求する旨の３つの重複確認応答を受信し、この１３番目のセグメントを誤って再送信してしまう。
【００１４】
また、非特許文献３に開示されている技術では、広告ウィンドウサイズに“０”が設定された確認応答を受信した場合に、送信済みのセグメントで未だ確認応答を受信していない全てのセグメントについて、欠落したものとみなして再送信している。しかしながら、これらのセグメントの全てが現実に欠落しているわけではない。このため、非特許文献３に開示されている技術についても、セグメントの再送信に起因して通信システム全体のスループットの低下を招く虞があるといった問題点がある。
【００１５】
以上に説明した問題点は、いずれも、非特許文献２や非特許文献３に開示されている技術では、セグメントの欠落が発生した後に受信装置により正常に受信されたセグメントを送信装置が検出できないことに起因している。これに対して、特許文献１に開示されている技術によれば、送信装置にＳＡＣＫオプションを参照させることにより受信装置により既に受信されているセグメントを検出させることができる。しかしながら、非特許文献２や非特許文献３に開示されている技術は、ＳＡＣＫオプションのサポートを前提とはしていないため、特許文献１に開示されている技術をそのまま適用することはできない。
【００１６】
本発明は、上記課題に鑑みて為されたものであり、欠落したセグメントを送信装置に再送信させる際に、受信装置が既に受信済みのセグメントを再送信させないようにする技術を提供することを目的としている。
【００１７】
【課題を解決するための手段】
上記課題を解決するために、本発明は、決められた数のセグメントを連続して送信する送信装置から送信されてくるセグメントを受信する受信手段と、前記受信手段により受信されたセグメントに内包されているシーケンス番号を記憶する記憶手段と、前記記憶手段の記憶内容に基づき、連続すべき複数のセグメントの中に欠落部分があるか否かを判定する判定手段と、欠落部分があると前記判定手段により判定された場合に、当該欠落部分の先頭から最後までのセグメントの欠落数を算出する算出手段と、前記欠落部分の先頭のセグメントに対応するシーケンス番号と、前記算出手段により算出された欠落数を前記送信装置へ通知し、欠落したセグメントの再送信を要求する要求手段とを有する受信装置を提供する。
【００１８】
また、上記課題を解決するために、本発明は、コンピュータ装置に、決められた数のセグメントを連続して送信する送信装置から送信されてくるセグメントを受信する受信機能と、前記受信機能により受信されたセグメントに内包されているシーケンス番号を記憶する記憶機能と、該コンピュータ装置の記憶内容に基づいて、連続すべき複数のセグメントの中に欠落部分があるか否かを判定する判定機能と、欠落部分があると前記判定機能により判定された場合に、当該欠落部分の先頭から最後までのセグメントの欠落数を算出する算出機能と、前記欠落部分の先頭のセグメントに対応するシーケンス番号と、前記算出機能により算出された欠落数を前記送信装置へ通知し、欠落したセグメントの再送信を要求する要求機能とを実現させるプログラムを提供する。
【００１９】
このような受信装置およびプログラムによると、欠落部分の先頭のセグメントに対応するシーケンス番号と、上記欠落数を広告ウィンドウサイズとして内包した確認応答が送信装置へ送信される。そして、この確認応答を受信した送信装置は、この確認応答に内包されているシーケンス番号から広告ウィンドウサイズで特定される範囲内のシーケンス番号を有するセグメントのみを送信する。
【００２０】
また、上記課題を解決するために、本発明は、本装置から送信されたセグメントを受信する受信装置から送信された確認応答を受信する受信手段と、前記受信手段により受信された確認応答が、欠落したセグメントに対する確認応答である場合にその有効性を判定する判定手段と、有効な確認応答であると前記判定手段により判定された場合にのみ、前記受信手段により受信された確認応答に内包されているシーケンス番号で特定されるセグメントを前記受信装置へ送信する送信手段とを有する送信装置を提供する。
【００２１】
また、上記課題を解決するために、本発明は、コンピュータ装置に、該コンピュータ装置から送信されたセグメントを受信する受信装置から送信された確認応答を受信する受信機能と、前記受信機能により受信された確認応答が、欠落したセグメントに対する確認応答である場合にその有効性を判定する判定機能と、有効な確認応答であると前記判定機能により判定された場合にのみ、前記受信機能により受信された確認応答に内包されているシーケンス番号で特定されるセグメントを前記受信装置へ送信する送信機能とを実現させるプログラムを提供する。
【００２２】
このような送信装置およびプログラムによると、受信装置から送信された部分確認応答が有効である場合にのみ、その部分確認応答で示されるセグメントが受信装置へ送信される。
【００２３】
【発明の実施の形態】
以下、図面を参照しつつ、本発明の実施形態について説明する。
【００２４】
［Ａ．第１実施形態］
（１：通信システムの構成）
図１は、本発明の実施形態に係る受信装置を有する通信システムの全体構成の一例を示す図である。図１に示されるように、この通信システムは、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などの通信網１０と、この通信網１０に接続されている送信装置２０と受信装置３０とを有している。
【００２５】
送信装置２０は、ＮｅｗＲｅｎｏ−ＴＣＰにしたがってセグメントを送信する一般的なコンピュータ装置である。すなわち、送信装置２０は、受信装置３０から受信した確認応答の内容に基づいて前述した５種類のパラメータ変数を更新し、欠落したセグメントを再送信する機能、輻輳制御を行う機能およびフロー制御を行う機能を備えている。
【００２６】
受信装置３０は、ＴＣＰにしたがってセグメントを受信するパーソナルコンピュータ装置である。そして、この受信装置３０は、セグメントの欠落を検出した場合に、本発明に係る受信装置に特有な確認応答を送信装置２０へ送信し、欠落したセグメントの再送信を要求するものである。より詳細に説明すると、受信装置３０は、セグメントの欠落を検出した場合に、欠落したセグメントの最小のシーケンス番号と、欠落したセグメントの数を示す値を広告ウィンドウサイズとして内包した確認応答を送信装置２０へ送信する。
【００２７】
このように、図１に示される通信システムにおいては、セグメントの欠落が発生した場合に、欠落したセグメントの数を広告ウィンドウサイズとして送信装置２０へ通知させることにより、既に受信装置３０が受信したセグメントの再送信が行われないようにしている。なお、本実施形態においては、本発明に係る受信装置の一例として、パーソナルコンピュータ装置を用いる場合について説明するが、係る受信装置はパーソナルコンピュータ装置に限定されるものではなく、ＴＣＰにしたがって送信装置２０と通信する携帯電話機であっても良いことは勿論である。要は、送信装置２０とＴＣＰにしたがって通信するコンピュータ装置であれば何れであっても良い。
【００２８】
（２：受信装置３０の構成）
次いで、図２を参照しつつ受信装置３０の機能構成について説明する。図２に示されるように、受信装置３０は、データリンク層処理部２１０と、ネットワーク層処理部２２０と、トランスポート層処理部２３０とを有している。
【００２９】
データリンク層処理部２１０は、通信網１０を介して受信したフレームをパケットへ変換してネットワーク層処理部２２０へ引渡すとともに、ネットワーク層処理部２２０から引渡されたパケットをフレームへ変換して通信網１０へ送出するものである。なお、パケットとは、ネットワーク層における通信単位のデータブロックであり、前述したセグメントとパケットヘッダとを内包している。また、フレームとは、データリンク層における通信単位のデータブロックであり、上述したパケットとフレームヘッダとを内包している。
【００３０】
ネットワーク層処理部２２０は、データリンク層処理部２１０から引渡されたパケットをセグメントへ変換してトランスポート層処理部２３０へ引渡すとともに、トランスポート層処理部２３０から引渡されたセグメントをパケットへ変換してデータリンク層処理部２１０へ引渡すものである。
【００３１】
トランスポート層処理部２３０は、図２に示されるように、受信セグメント管理部２３０ａと、受信セグメント処理部２３０ｂと、確認応答生成部２３０ｃと、広告ウィンドウサイズ計算部２３０ｄと、確認応答送信部２３０ｅとを有している。
【００３２】
受信セグメント管理部２３０ａは、欠落したセグメントを特定するシーケンス番号を格納するためのものである。なお、本実施形態においては、欠落したセグメントのシーケンス番号をセグメント管理部２３０ａに格納する場合について説明するが、受信したセグメントのシーケンス番号をセグメント管理部２３０ａに格納するとしても勿論良い。要は、欠落したセグメントを特定できる態様であれば何れであっても良い。
【００３３】
受信セグメント処理部２３０ｂは、ネットワーク層処理部２２０から引渡されたセグメントのヘッダを解析し、セグメントの欠落の有無を判定し、セグメントの欠落があると判定した場合に、欠落したセグメントのシーケンス番号を受信セグメント管理部２３０ａに格納する機能を備えている。加えて、受信セグメント処理部２３０ｂは、ネットワーク層処理部２２０から引渡されたセグメントに対する確認応答を生成することを確認応答生成部２３０ｃに要求する機能も備えている。
【００３４】
確認応答生成部２３０ｃは、受信セグメント処理部２３０ｂにより処理されたセグメントに対して確認応答を生成し、生成したセグメントを確認応答送信部２３０ｅへ引渡す機能を備えている。より詳細には、確認応答生成部２３０ｃは、確認応答に書き込む広告ウィンドウサイズの値を広告ウィンドウサイズ計算部２３０ｄへ問い合わせ、広告ウィンドウサイズ計算部２３０ｄより引渡された値を広告ウィンドウサイズとして書き込んだ確認応答を内包したセグメント（以下、「確認応答セグメント」という）生成する。
【００３５】
広告ウィンドウサイズ計算部２３０ｄは、詳細は後述するが、図４に示されるフローチャートにしたがって広告ウィンドウサイズを計算し、その計算結果を確認応答生成部２３０ｃへ引渡すためのものである。
【００３６】
確認応答送信部２３０ｅは、確認応答生成部２３０ｃから引渡された確認応答セグメントをネットワーク層処理部２２０へ引渡すものである。
【００３７】
（３：受信装置３０の動作）
次いで、シーケンス抜けのセグメントを受信した場合に、受信装置３０の広告ウィンドウサイズ計算部２３０ｄが行う動作について図４を参照しつつ説明する。なお、本動作例を説明する前提として、図３に示されるように、１から１３までのシーケンス番号を有する１３個のセグメントが送信装置２０から送信され、４番目から６番目までの３個のセグメントが欠落した場合について説明する。
【００３８】
図３に示されるように、送信装置２０から送信された１３個のセグメントのうち、４番目から６番目までの３個のセグメントが欠落し、受信装置３０に到達していない。このため、これらのセグメントに対して確認応答が送信されてくることはなく、再送タイムアウトになる可能性がある。そして、再送タイムアウトになると、送信装置２０は、まず、４番目のセグメントから再送信する。この４番目のセグメント、すなわち、シーケンス抜けのセグメントを受信すると、受信装置３０の広告ウィンドウサイズ計算部２３０ｄは、図４に示されるフローチャートにしたがって広告ウィンドウサイズを算出する。なお、本動作例においては、再送タイムアウトを契機として欠落したセグメントを送信装置２０に再送信させる場合について説明するが、受信装置３０がセグメントの欠落を検出し、その旨送信装置２０へ通知する態様（例えば、広告ウィンドウサイズの値を“０”にした確認応答を送信装置２０へ送信する態様）であっても勿論良い。
【００３９】
図４に示されるように、広告ウィンドウサイズ計算部２３０ｄは、まず、受信したセグメントがシーケンス抜けのセグメントであるか否かを判定する（ステップＳＡ１）。具体的には、広告ウィンドウサイズ計算部２３０ｄは、受信したセグメントに内包されているシーケンス番号がセグメント管理部２３０ａに格納されている場合にのみ、受信したセグメントはシーケンス抜けのセグメントであると判定する。
【００４０】
ステップＳＡ１の判定結果が“Ｎｏ”である場合には、広告ウィンドウサイズ計算部２３０ｄは、従来のアルゴリズムに基づいて（例えば、受信バッファの開き容量に基づいて）広告ウィンドウサイズを算出する（ステップＳＡ２）。逆に、ステップＳＡ１の判定結果が“Ｙｅｓ”である場合には、広告ウィンドウサイズ計算部２３０ｄは、後述するステップＳＡ３の処理を行う。本動作例においては、図３に示されるように、シーケンス番号が“４”であるセグメントは、シーケンス抜けのセグメントの１つであるから、ステップＳＡ１の判定結果は“Ｙｅｓ”になり、ステップＳＡ３の処理が行われる。
【００４１】
ステップＳＡ１に後続するステップＳＡ３では、広告ウィンドウサイズ計算部２３０ｄは、連続して受信すべきセグメントの範囲を特定する。具体的には、連続して受信すべきセグメントの先頭を示すシーケンス番号と、この範囲に包含されるセグメントの個数とを特定する。そして、広告ウィンドウサイズ計算部２３０ｄは、ステップＳＡ３にて特定したセグメントの個数を広告ウィンドウサイズとして確認応答生成部２３０ｃへ通知する（ステップＳＡ４）。本動作例においては、図３に示されるように、この範囲の先頭のセグメントのシーケンス番号として“５”が特定され、欠落しているセグメントの個数として“２”が特定される。その結果、広告ウィンドウサイズとして、“２”が広告ウィンドウサイズ計算部２３０ｄから確認応答生成部２３０ｃへ通知される。
【００４２】
確認応答生成部２３０ｃは、広告ウィンドウサイズ計算部２３０ｄから通知された広告ウィンドウサイズを内包した確認応答を生成し、この確認応答を内包したセグメントを確認応答送信部２３０ｅに送信させる。以降、受信装置３０は、シーケンス番号が“５”であるセグメントを受信した場合には、広告ウィンドウサイズとして“１”を内包した確認応答を送信装置２０へ送信する。そして、シーケンス番号が“６”であるセグメントを受信した場合には、最早、欠落しているセグメントはないため、受信バッファ容量に基づいて算出された広告ウィンドウサイズを内包した確認応答を送信装置２０へ送信する。
【００４３】
［Ｂ．第２実施形態］
次に、本発明の第２実施形態に係る通信システムについて図面を参照しつつ説明する。
【００４４】
（１：通信システムの構成）
図５は、本発明の第２実施形態に係る通信システムの全体構成の一例を示す図である。図５に示される通信システムが、図１に示す通信システムと異なっている点は、送信装置２０に替えて送信装置５２０を有する点と、受信装置３０に替えて受信装置５３０を有する点と、の２つの点のみである。
【００４５】
受信装置５３０は、セグメントの欠落が発生した場合に、広告ウィンドウサイズの値を“０”にした確認応答を送信することでその旨通知する一般的なコンピュータ装置である。
【００４６】
一方、送信装置５２０は、広告ウィンドウサイズの値が“０”である確認応答を受信した後には、前述した部分確認応答以外の確認応答を受信するまで、ｓｎｄ＿ｍａｘに格納されているシーケンス番号よりも大きなシーケンス番号を有するセグメントを新たに送信しないようにする機能を備えている。加えて、この送信装置５２０は、部分確認応答を受信した場合には、その有効性を判定し、有効な部分確認応答であると判定した場合にのみ、その部分確認応答で示されるセグメントを送信する機能を備えている。
【００４７】
このように、図５に示す通信システムでは、受信装置５３０から有効な部分確認応答が送信されてくるまで、新たなセグメントを送信装置５２０に送信させないようにすること、すなわち、再送信されたセグメントを受信することによって受信装置５３０から送信されてくる部分確認応答が受信されるまで、新たなセグメントを送信装置５２０に送信させないようにすることにより、受信装置５３０が既に受信済みのセグメントが再送信されることを回避している。
【００４８】
（２：送信装置５２０の構成）
次に、送信装置５２０の機能構成の一例を図６を参照しつつ説明する。図６に示されるように、送信装置５２０の機能構成が受信装置３０の機能構成と異なっている点は、トランスポート層処理部２３０に替えて、トランスポート層処理部６３０を有している点のみである。トランスポート層処理部６３０は、図６に示されるように、タイマ管理部６３０ａと、セグメント管理部６３０ｂと、確認応答受信部６３０ｃと、セグメント送信部６３０ｄと、部分確認応答処理部６３０ｅと、を備えている。
【００４９】
タイマ管理部６３０ａは、計時機能を備えており、セグメントを送信してからそのセグメントに対する確認応答を受信するまでに要した時間を計測する機能を備えている。
【００５０】
セグメント管理部６３０ｂは、受信装置５３０へ送信するセグメントを管理するためのものである。具体的には、セグメント管理部６３０ｂには、前述した５種類のパラメータ変数が記憶されている。
【００５１】
確認応答受信部６３０ｃは、ネットワーク層処理部２２０から引渡された確認応答セグメントに内包されている確認応答が部分確認応答であるか否かを判定する機能を備えている。具体的には、確認応答受信部６３０ｃは、ネットワーク層処理部２２０を介して受信したセグメントに内包されているシーケンス番号がｓｎｄ＿ｍａｘに格納されているシーケンス番号と一致しない場合には、部分確認応答であると判定する。そして、確認応答受信部６３０ｃは、部分確認応答以外の確認応答を受信したと判定した場合には、その確認応答で示されるセグメントの送信をセグメント送信部６３０ｄへ要求し、逆に、部分確認応答を受信したと判定した場合には、この部分確認応答に基づいた処理を行うことを部分確認応答処理部６３０ｅへ要求する。
【００５２】
セグメント送信部６３０ｄは、確認応答受信部６３０ｃからの要求に基づいてセグメントを、ネットワーク層処理部２２０へ引渡し、受信装置５３０へ送信する機能を備えている。そして、セグメント送信部６３０ｄは、欠落したセグメントを再送信する場合には、そのセグメントを受信装置５３０へ送信するとともに、上述したタイマ管理部６３０ａに対して、このセグメントに対する確認応答を受信するまでに要する時間を計測することを要求する。
【００５３】
部分確認応答処理部６３０ｅは、受信した部分確認応答の有効性を図７に示されるフローチャートにしたがって判定し、有効であると判定した場合にのみ、前述したＮｅｗＲｅｎｏ−ＴＣＰにしたがってセグメントを送信する機能を備えている。
【００５４】
（３：送信装置５２０の動作）
次いで、再送信したセグメントに対する部分確認応答を受信した場合に、送信装置５２０の部分確認応答処理部６３０ｅが行う動作について図７を参照しつつ説明する。図７に示されるように、部分確認応答処理部６３０ｅは、部分確認応答を受信すると、タイマ管理部６３０ａから部分確認応答を受信するまでに要した時間を示すデータ（以下、「応答時間データ」という）を取得する（ステップＳＢ１）。
【００５５】
部分確認応答処理部６３０ｅは、ステップＳＢ１にて取得した応答時間データで示される時間に基づいて、受信した部分確認応答が有効であるか否かを判定する（ステップＳＢ２）。具体的には、部分確認応答処理部６３０ｅは、ステップＳＢ１にて取得したデータで示される時間が所定の時間（例えば、１往復時間）よりも短い場合には、その部分確認応答を無効と判定し、逆に、このデータで示される時間が所定の時間以上である場合には、その部分確認応答を有効と判定する。そして、部分確認応答処理部６３０ｅは、ステップＳＢ２の判定結果が“Ｙｅｓ”である場合にのみ、前述したＮｅｗＲｅｎｏ−ＴＣＰにしたがって欠落しているセグメントを再送信する（ステップＳＢ３）。
【００５６】
［Ｃ．変形例］
以上、本発明の実施形態について説明したが、本発明は係る実施形態に限定されるものではなく、その技術思想の範囲内で様々な変形が可能である。なお、変形例としては、例えば、以下のようなものが考えられる。
【００５７】
（変形例１）上述した第１および第２実施形態では、受信装置と送信装置とが通信網１０に有線接続されている場合について説明した。しかしながら、受信装置が移動通信端末であり、通信網１０を介して送信装置とモバイルＩＰに従った通信を行う場合であっても勿論良い。そして、本発明は、このような場合に適用された場合に、より顕著な効果を奏する。その理由は、受信装置と送信装置とが通信網に有線接続されている場合に比較して、受信装置と送信装置とがモバイルＩＰにしたがって通信する場合には、例えば受信装置のハンドオーバーに起因して、セグメントの欠落が発生し易いからである。
【００５８】
（変形例２）上述した第１実施形態では、本発明に係る受信装置３０を用いることにより、欠落したセグメントを送信装置２０に再送信させる際に、受信装置３０が既に受信したセグメントが再送信されないようにする場合について説明した。しかしながら、本発明に係る受信装置に特有な機能を一般的なコンピュータ装置に実現させるためのソフトウェアを係るコンピュータ装置に記憶させ実行させることにより、係るコンピュータ装置に本発明に係る受信装置と同一の機能を付与するとしても良い。
【００５９】
また、上述した第２実施形態では、本発明に係る送信装置５２０を用いることにより、欠落したセグメントを再送信する際に、受信装置５３０が既に受信したセグメントを再送信しないようにする場合について説明した。しかしながら、本発明に係る送信装置に特有な機能を一般的なコンピュータ装置に実現させるためのソフトウェアを係るコンピュータ装置に記憶させ実行させることにより、係るコンピュータ装置に本発明に係る送信装置と同一の機能を付与することも可能である。
【００６０】
具体的には、例えば、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＦＤ（Ｆｌｏｐｐｙ  Ｄｉｓｃｋ）などのコンピュータ装置読み取り可能な記録媒体に上記ソフトウェアを記録させておく。この記録媒体に記録されているソフトウェアを上記コンピュータ装置に読み取らせ記憶させる。このようにして記憶させたソフトウェアを上記コンピュータ装置に実行させることにより、このコンピュータ装置に本発明に係る受信装置や送信装置と同一の機能を付与することができる。
【００６１】
【発明の効果】
本発明によれば、欠落したセグメントを送信装置に再送信させる際に、受信装置が既に受信したセグメントが再送信されることが回避される。このため、受信装置が、既に受信したセグメントを重複して受信しすることにより送信される重複確認応答の送信が回避され、スループットの低下が回避されるといった効果を奏する。
【００６２】
また、本発明によれば、通信システムに含まれている送信装置または受信装置の、いすれか一方のみを本発明に係る送信装置または受信装置に置き換えることにより、本発明に係るセグメント再送方法を実現させることができる。このため、既存の通信システムに、本発明に係るセグメント再送信を容易に実現させることができるといった効果を奏する。
【図面の簡単な説明】
【図１】本発明の第１実施形態に係る通信システムの構成例を示す図である。
【図２】同受信装置３０の構成例を示すブロック図である。
【図３】同通信システムにおけるセグメント再送シーケンスを示す図である。
【図４】同受信装置３０の広告ウィンドウサイズ計算部２３０ｄが行う動作の流れを示すフローチャートである。
【図５】本発明の第２実施形態に係る通信システムの構成例を示す図である。
【図６】同送信装置５２０の構成例を示すブロック図である。
【図７】同送信装置５２０の部分確認応答処理部６３０ｅが行う動作の流れを示すフローチャートである。
【図８】ＴＣＰにおける送信ウィンドウを説明するための図である。
【図９】ＴＣＰにおけるタイムアウト時の通信シーケンスの一例を示す図である。
【符号の説明】
１０…通信網、２０、５２０…送信装置、３０、５３０…受信装置、２１０…データリンク層処理部、２２０…ネットワーク層処理部、２３０、６３０…トランスポート層処理部、２３０ａ…受信セグメント管理部、２３０ｂ…受信セグメント処理部、２３０ｃ…確認応答生成部、２３０ｄ…広告ウィンドウサイズ計算部、２３０ｅ…確認応答送信部、６３０ａ…タイマ管理部、６３０ｂ…セグメント管理部、６３０ｃ…確認応答受信部、６３０ｄ…セグメント送信部、６３０ｅ…部分確認応答処理部。
【図１】
2004343552.tif 000003
【図２】
2004343552.tif 000004
【図３】
2004343552.tif 000005
【図４】
2004343552.tif 000006
【図５】
2004343552.tif 000007
【図６】
2004343552.tif 000008
【図７】
2004343552.tif 000009
【図８】
2004343552.tif 000010
【図９】
2004343552.tif 000011