(57)【特許請求の範囲】
【請求項１】
第１の通信装置が、データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを、第２の通信装置に対して送信し、
第２の通信装置が前記データパケットを受信すると、前記データパケットの送信通番と、受信済みデータ通番の最大値よりも小さいデータ通番に係るデータの受信状況を示す情報とを含む確認応答パケットを第１の通信装置へ送信し、
第１の通信装置は、前記確認応答パケットに基づいて、再送が必要なデータ通番を特定し、再送を行うデータの再送制御方法。
【請求項２】
送信装置と受信装置とを備えた通信システムであって、
前記送信装置は、
データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを送信する手段と、
前記データパケットを受信した受信装置が送信した、前記データパケットの送信通番と、受信済みデータ通番の最大値よりも小さいデータ通番に係るデータの受信状況を示す情報とを含む確認応答パケットを受信する手段と、
前記送信手段が送信したデータパケットの送信履歴を記憶する記憶手段と、
前記記憶手段を参照して、前記受信した確認応答パケットに基づいて再送が必要なデータ通番を特定し、前記送信手段へ前記特定されたデータ通番に係るデータの再送指示をする手段と、を備え、
前記受信装置は、
前記送信装置から送信された前記データパケットを受信する手段と、
前記受信したデータパケットの送信通番と、受信済みデータ通番の最大値よりも小さいデータ通番に係るデータの受信状況を示す情報とを含む確認応答パケットを、前記送信装置へ送信する手段と、を備えた通信システム。
【請求項３】
前記再送を指示する手段は、
前記確認応答パケットに含まれている前記受信状況を示す情報に基づいて、前記送信装置が送信したが、前記受信装置が受信していないデータ通番を抽出し、
前記抽出したデータ通番に係るデータを送信したデータパケットの送信通番を前記記憶手段から取得し、
前記取得した送信通番と、前記確認応答パケットに含まれている送信通番とに基づいて、再送が必要なデータ通番を特定する請求項２記載の通信システム。
【請求項４】
前記受信状況を示す情報は、連続して受信が完了しているデータ通番の最大値と、受信済みデータ通番の最大値との間のデータ通番に係るデータの受信状況を、ビット列で示したものを含む請求項２または３記載の通信システム。
【請求項５】
前記受信装置は、
前記データパケットの受信手段が受信したデータパケットに含まれているデータ通番を一時的に格納するバッファと、
前記バッファを参照して、前記確認応答パケットを生成する手段とを、さらに備える請求項２記載の通信システム。
【請求項６】
データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを送信する手段と、
前記データパケットを受信した通信装置が返送した、前記データパケットの送信通番と、受信済みデータ通番の最大値よりも小さいデータ通番に係るデータの受信状況を示す情報とを含む確認応答パケットを受信する手段と、
前記送信手段が送信したデータパケットの送信履歴を記憶する記憶手段と、
前記記憶手段を参照して、前記受信した確認応答パケットに基づいて再送が必要なデータ通番を特定し、前記送信手段へ前記特定されたデータ通番に係るデータの再送指示をする手段と、を備えた通信装置。
【請求項７】
データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを受信する手段と、
前記受信したデータパケットの送信通番と、受信済みデータ通番の最大値よりも小さいデータ通番に係るデータの受信状況を示す情報とを含む確認応答パケットを、前記データパケットの送信元へ送信する手段と、を備えた通信装置。
【請求項８】
データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを送信し、
前記送信したデータパケットの送信履歴を記憶手段に記憶し、
前記データパケットを受信した通信装置が返送した、前記データパケットの送信通番と、受信済みデータ通番の最大値よりも小さいデータ通番に係るデータの受信状況を示す情報とを含む確認応答パケットを受信し、
前記記憶手段を参照して、前記受信した確認応答パケットに基づいて再送が必要なデータ通番を特定し、前記特定されたデータ通番に係るデータを再送する再送制御方法。
【請求項９】
コンピュータに実行されると、
データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを送信し、
前記送信したデータパケットの送信履歴を記憶手段に記憶し、
前記データパケットを受信した通信装置が返送した、前記データパケットの送信通番と、受信済みデータ通番の最大値よりも小さいデータ通番に係るデータの受信状況を示す情報とを含む確認応答パケットを受信し、
前記記憶手段を参照して、前記受信した確認応答パケットに基づいて再送が必要なデータ通番を特定し、前記特定されたデータ通番に係るデータを再送する、再送制御のためのコンピュータプログラム。
【請求項１０】
データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを受信し、
前記受信したデータパケットの送信通番と、受信済みデータ通番の最大値よりも小さいデータ通番に係るデータの受信状況を示す情報とを含む確認応答パケットを、前記データパケットの送信元へ送信する、データの受信応答方法。
【請求項１１】
コンピュータに実行されると、
データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを受信し、
前記受信したデータパケットの送信通番と、受信済みデータ通番の最大値よりも小さいデータ通番に係るデータの受信状況を示す情報とを含む確認応答パケットを、前記データパケットの送信元へ送信する、データの受信応答のためのコンピュータプログラム。
【請求項１２】
前記送信手段は、全データ分のデータパケットの送信後に、前記データ通番と前記送信通番とを含み、データを含まないダミーパケットを送信することを特徴とする請求項２に記載の通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、パケットロスが生じたときにデータの再送をするための技術に関し、特に、パケットロス率が高い伝送路でも伝送速度を低下させないようにデータ再送を行うための技術に関する。
【背景技術】
【０００２】  ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）通信技術として最も普及しているＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）では、再送制御を行うための機能として以下の二つを備えている。それらは、パケットロスに対して受信側から３回再送要求を受けると、送信側が再送を行う即時再送する機能（Ｆａｓｔ  Ｒｅｔｒａｎｓｍｉｔ）、およびパケット受信情報を確認応答情報（ＡＣＫ）に含めるＳＡＣＫ（Ｓｅｌｅｃｔｉｖｅ  ＡＣＫ）オプション機能である。【０００３】
【非特許文献１】ＴＣＰ：ＲＦＣ７９３（ｈｔｔｐ：／／ｗｗｗ．ｆａｑｓ．ｏｒｇ／ｒｆｃｓ／ｒｆｃ２００１．ｈｔｍｌ）
【非特許文献２】Ｆａｓｔ  Ｒｅｔｒａｎｓｍｉｔ：ＲＦＣ２００１（ｈｔｔｐ：／／ｗｗｗ．ｆａｑｓ．ｏｒｇ／ｒｆｃｓ／ｒｆｃ２００１．ｈｔｍｌ）
【非特許文献３】ＳＡＣＫ：ＲＦＣ２０１８（ｈｔｔｐ：／／ｗｗｗ．ｆａｑｓ．ｏｒｇ／ｒｆｃｓ／ｒｆｃ２０１８．ｈｔｍｌ）
【発明の開示】
【発明が解決しようとする課題】
【０００４】  しかしながら、即時再送機能では、再送したデータが到達しなかった場合であっても、さらなる再送（再々送）は行わないので、この場合はタイムアウトによる再送まで待たなければならない。これは、再送したパケットが到達したかどうかを送信側で確認することができないからである。再送パケットが到達したかを確認しないうちに再々送をすれば、本来必要のないはずのパケットが伝送路を流れることもあり、さらに伝送効率が悪化し、輻輳を招くおそれがある。【０００５】  また、ＳＡＣＫオプション機能を利用すると、受信側から返送される確認応答情報のサイズが大きい。通常、パケットロスが生じるときは、伝送路が込んでいる場合であるから、サイズの大きなデータが流れると、さらに伝送効率が悪化し、輻輳を招きやすい。また、ロスするバケット数が増えると、ＳＡＣＫオプションではすべての受信情報を、送信側へ伝えることができなくなる。【０００６】  そこで、本発明の目的は、パケットロス率が比較的高い伝送路でも伝送速度を低下させないようにデータ転送を行うための技術を提供することである。【０００７】  本発明の他の目的は、パケットロスが判明したとき直ちに、かつ、必要最低限の再送データを再送するための技術を提供することである。【０００８】  本発明のさらに別の目的は、重複再送による輻輳を防止することである。
【課題を解決するための手段】
【０００９】  本発明の一つの実施態様に従う通信システムは、送信装置と受信装置とを備える。前記送信装置は、データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを送信する手段と、前記データパケットを受信した受信装置が送信した、前記データパケットの送信通番と、前記データパケットのデータ通番より順序が前のデータの受信状況を示す情報とを含む確認応答パケットを受信する手段と、前記送信手段が送信したデータパケットの送信履歴を記憶する記憶手段と、前記記憶手段を参照して、前記受信した確認応答パケットに基づいて再送が必要なデータ通番を特定し、前記送信手段へ前記特定されたデータ通番に係るデータの再送指示をする手段と、を備える。前記受信装置は、前記送信装置から送信された前記データパケットを受信する手段と、前記受信したデータパケットの送信通番と、前記受信したデータパケットのデータ通番より順序が前のデータの受信状況を示す情報とを含む確認応答パケットを、前記送信装置へ送信する手段と、を備える。【００１０】  好適な実施形態では、前記再送を指示する手段は、前記確認応答パケットに含まれている前記受信状況を示す情報に基づいて、前記送信装置が送信したが、前記受信装置が受信していないデータ通番を抽出し、前記抽出したデータ通番に係るデータを送信したデータパケットの送信通番を前記記憶手段から取得し、前記取得した送信通番と、前記確認応答パケットに含まれている送信通番とに基づいて、再送が必要なデータ通番を特定するようにしてもよい。【００１１】  好適な実施形態では、前記受信状況を示す情報は、連続して受信が完了しているデータ通番の最大値と、受信済みデータ通番の最大値との間のデータ通番に係るデータの受信状況を、ビット列で示したものを含んでもよい。【００１２】  好適な実施形態では、前記受信装置は、前記データパケットの受信手段が受信したデータパケットに含まれているデータ通番を一時的に格納するバッファと、前記バッファを参照して、前記確認応答パケットを生成する手段とを、さらに備えるようにしてもよい。【００１３】  本発明の一つの実施態様に従う通信装置は、データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを送信する手段と、前記データパケットを受信した通信装置が返送した、前記データパケットの送信通番と、前記データパケットのデータ通番より順序が前のデータの受信状況を示す情報とを含む確認応答パケットを受信する手段と、前記送信手段が送信したデータパケットの送信履歴を記憶する記憶手段と、前記記憶手段を参照して、前記受信した確認応答パケットに基づいて再送が必要なデータ通番を特定し、前記送信手段へ前記特定されたデータ通番に係るデータの再送指示をする手段と、を備える。【００１４】  本発明の一つの実施態様に従う通信装置は、データと、前記データの順序を示すデータ通番と、送信順序を示す送信通番とを含むデータパケットを受信する手段と、前記受信したデータパケットの送信通番と、前記受信したデータパケットのデータ通番より順序が前のデータの受信状況を示す情報とを含む確認応答パケットを、前記データパケットの送信元へ送信する手段と、を備える。【００１５】  本発明の一つの実施態様に従う通信システムは、送信装置と受信装置とを備える。そして、前記送信装置は、送信データを分割した分割データごとに送信する送信手段と、前記送信手段が送信した分割データの送信履歴を記憶する記憶手段と、一の分割データの受信確認である確認応答であって、前記一の分割データ以前の前記受信装置における受信状況を示す情報を含む確認応答を受信する手段と、前記記憶手段を参照して、前記受信した確認応答に基づいて再送が必要なデータを特定し、前記送信手段へ前記特定された分割データの再送指示をする手段と、を備える。また、前記受信装置は、前記送信装置から送信された分割データを受信する受信手段と、前記受信手段が分割データを受信すると、当該受信した分割データ以前の受信状況を示す情報を含む確認応答を生成し、前記送信装置へ送信する確認応答送信手段と、を備える。【００１６】  本発明の一つの実施態様に従う通信システムは、データパケットを送信する送信装置と、前記データパケットを受信すると確認応答パケットを前記送信装置へ返送する受信装置とを備える。そして、前記送信装置は、確認応答パケットを受信していない送信済みのデータパケット数が所定数以下になるようにデータパケットの送信を制御する送信手段を備える。また、前記受信装置は、第１のデータパケットを受信してから次に到達する第２のデータパケットを受信するまでの間、前記第１のデータパケットを受信してからの経過時間を計測するタイマと、前記タイマが計測した時間が所定時間以上になった場合、前記所定時間以上データパケットを受信していないことを示す情報を前記送信装置へ送信する手段と、を備える。【００１７】  好適な実施形態では、前記送信装置が、前記所定時間以上データパケットを受信していないことを示す情報を受信すると、前記送信手段は、確認応答パケットを受信していない送信済みのデータパケット数が所定数以上であっても、次のデータパケットを送信するようにしてもよい。【００１８】  好適な実施形態では、前記送信装置が送信するデータパケットには、送信データを分割した分割データが格納されている。また、前記受信装置が送信する確認応答パケットには、前記分割データの受信状況を示す情報が含まれている。そして、前記送信装置は、前記送信手段が送信した、前記分割データを含むデータパケットの送信履歴を記憶する記憶手段と、前記記憶手段に記憶された送信履歴と前記確認応答パケットに含まれている分割データの受信状況とに基づいて、再送が必要な分割データを特定し、前記送信手段へ前記特定された分割データの再送指示をする手段と、をさらに備えるようにしてもよい。【００１９】  好適な実施形態では、前記送信手段は、全データ分のデータパケットの送信後に、前記データ通番と前記送信通番とを含み、データを含まないダミーパケットを送信するようにしてもよい。【００２０】  本発明の一つの実施態様に従う通信装置は、データパケットを受信し、前記受信したデータパケットの送信元の通信装置へ確認応答パケットを送信する受信手段と、前記受信手段が第１のデータパケットを受信してから次に到達する第２のデータパケットを受信するまでの間、前記第１のデータパケットを受信してからの経過時間を計測するタイマと、前記タイマが計測した時間が所定時間以上になった場合、前記所定時間以上データパケットが到達していないことを示す情報を、前記データパケットの送信元へ送信する送信手段と、を備える。【００２１】  本発明の一つの実施態様に従う通信装置は、確認応答パケットを受信していない送信済みのデータパケット数を計数するカウンタと、前記カウンタの値が所定数以下になるようにデータパケットの送信を制御する送信手段とを備える。そして、送信先の通信装置から、所定時間以上データパケットを受信していないことを示す情報を受信すると、前記送信手段は、前記カウンタの値が所定数以上であっても、次のデータパケットを送信する。
【図面の簡単な説明】
【００２２】
【図１】本発明の第１の実施形態に係る通信システムの構成を示す図である。
【図２】データ送信パケット５０のフォーマットの一例を示す図である。
【図３】確認応答パケット６０のフォーマットの一例を示す図である。
【図４】送信装置１と受信装置２との間で行うデータ送受信のシーケンスチャートである。
【図５】データ送信パケットと確認応答パケットとの対応関係を示す図である。
【図６】再送制御部の処理手順を示すフローチャートである。
【図７】最終データでパケットロスが起きたときのデータ送受信のシーケンスチャートである。
【図８】本発明の第２の実施形態に係る通信システムの構成を示す図である。
【図９】送信装置１と受信装置２との間で行うデータ送受信のシーケンスチャートである。
【符号の説明】
【００２３】１…送信装置、２…受信装置、９…ネットワーク、１１…データ送信部、１２…再送制御部、１３…データ記憶部、１４…送信履歴記憶部、２１…データ受信部、２２…データ記憶部、２３…バッファ、５０…データ送信パケット、６０…確認応答パケット。
【発明を実施するための最良の形態】
【００２４】  以下、本発明の第１の実施形態に係るデータ通信システムついて、図面を用いて説明する。【００２５】  図１は、本システムを構成する装置を示す。本システムは、データの送信を行う通信装置である送信装置１と、データを受信する通信装置である受信装置２とを備える。送信装置１は、受信装置２に対してデータ送信パケット５０（図２参照）を送信する。受信装置２は、データ送信パケット５０を受信すると、確認応答パケット６０を返信する。送信装置１と受信装置２とは、有線または無線のネットワーク９を介して通信する。本実施形態では、例えば、送信装置１と受信装置２とはＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）／ＩＰを用いて通信を行う。【００２６】  送信装置１および受信装置２は、いずれも例えば通信機能を有するコンピュータシステムにより構成することもできる。この場合、以下に説明する送信装置１および受信装置２内の個々の構成要素または機能は、例えば、コンピュータプログラムを実行することにより実現される。特に、受信装置２は、例えば、携帯電話機、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄａｔａ  Ａｓｓｉｓｔａｎｔ）、無線通信機能を備えたパーソナルコンピュータなどでもよい。【００２７】  送信装置１は、同図に示すように、データ送信部１１と、再送制御部１２と、データ記憶部１３と、送信履歴記憶部１４とを備える。【００２８】  データ送信部１１は、データ記憶部１３から送信対象のデータを取得し、データ送信パケット５０を生成して、ネットワーク９に対して出力する。【００２９】  データ送信パケット５０のフォーマットを、図２に示す。データ送信パケット５０は、同図に示すように、ヘッダ部５１と、データ部５５とを含み、ヘッダ部５１には送信通番５２と、データ通番５３とをさらに含む。【００３０】  送信通番５２は、送信装置１が受信装置２に対して送り出すパケットに割り当てられた番号である。送信通番５２は、例えば、０から連続する通し番号（通番）であり、各パケットに固有な番号である。送信通番５２は、データ通番５３およびデータ部５５に格納されるデータの内容に関係なく、パケットを送信するたびにインクリメントされていく。後述するように、送信したデータが受信装置２に到達しないパケットロスが生じると、このデータを再送する。このとき、この再送パケットには、到達しなかったパケットとは異なる、再送パケットに固有の送信通番５２が付される。【００３１】  データ通番５３とは、データ部５５に格納されているデータに割り当てられた番号である。データ通番５３は、例えば０からの通番である。送信対象のデータは、通常、データ部５５のサイズよりも大きいので、データ部５５のサイズに分割して送信する。そこで、分割されたデータの並び順を示すために、データ通番５３が用いられる。従って、データ通番５３は、データ部５５に格納されるデータに基づいて定まる。パケットロスが生じたときに、再送対象となるデータはデータ通番５３で特定される。【００３２】  また、データ送信部１１は、データ送信パケット５０に対する確認応答パケット６０を受信する。確認応答パケット６０のフォーマットを、図３に示す。確認応答パケット６０は、同図に示すよう���、次データ通番６１と、受信状況ビット列６２と、受信済み送信通番６３とを含む。【００３３】  次データ通番６１は、受信装置２が次に受信すべきデータ通番を示す。つまり、受信が完了しているデータ通番のうち、連続しているデータ通番の最大値に１を加えた値となる。例えば、受信装置２があるデータ通番（Ｎ）までの全データをすでに受信しているときは、次データ通番６１は（Ｎ＋１）となる。【００３４】  受信状況ビット列６２は、次データ通番６１以降のデータ通番の受信状況を示すビット列である。ここでは、各ビットが一つのデータ通番に対応する。そして、受信済みのデータ通番に対応するビットは「１」、未受信のデータ通番に対応するビットは「０」である。【００３５】  例えば、受信状況ビット列６２の最下位ビット（右端）から順に、次データ通番６１から受信済みのデータ通番の最大値までのデータ通番を対応させる。従って、最下位ビットは常に「０」（受信済み）であり、最上位ビットは常に「１」（未受信）である。例えば、次データ通番６１が「２」であり、データ通番「３」が未受信、データ通番「４」が受信済みで、かつ、受信済みのデータ通番の最大値が「４」であるとき、受信状況ビット列６２は「１００」（上位ビットからデータ通番「４」「３」「２」に対応する）となる。ただし、パケットロスが起きていないときは、次データ通番６１が受信済みのデータ通番の最大値よりも大きいので、このときは、受信状況ビット列６２は「０」（１ビット）で表される。【００３６】  受信済み送信通番６３は、確認応答パケット６０を出力する直前に受信した送信通番を示す。【００３７】  再送制御部１２は、確認応答パケット６０に基づいて再送が必要なデータを特定し、データ送信部１１へ再送を指示する。再送データの特定の仕方の詳細については、後述する。【００３８】  送信履歴記憶部１４は、送信ログを記憶する。例えば、データ送信部１１がデータ送信パケット５０をネットワーク９に対して出力したとき、このパケットのヘッダ部５１を送信履歴記憶部１４に格納するようにしてもよい。【００３９】  再び図１を参照すると、受信装置２は、データ受信部２１と、受信したデータを記憶するデータ記憶部２２とを備える。データ受信部２１は、受信したデータを一時的に記憶するバッファをさらに備える。【００４０】  データ受信部２１は、送信装置１から送られてくるデータ送信パケット５０を受信する。データ受信部２１は、受信したデータ送信パケット５０のデータ通番５３およびデータ部５５に格納されたデータを、バッファ２３に一時格納し、データ通番５３の順に並べて組立て、一定のデータ量ごとにデータ記憶部２２へ格納する。また、データ受信部２１は、データ送信パケット５０を受信すると、これに対する確認応答パケット６０を生成し、ネットワーク９に対して出力する。この確認応答パケット６０の次データ通番６１および受信状況ビット列６２は、バッファ２３を参照して定める。受信済み送信通番６３は、直前に受信したデータ送信パケット５０の送信通番５２である。【００４１】  次に、図４および図５に示す例を用いて、受信装置２で生成される確認応答パケット６０、および送信装置１が行う再送制御について説���する。【００４２】  図４は、送信装置１と受信装置２との間で行うデータ送受信についてのシーケンスチャートである。同図では、送信装置１が受信装置２へ、データ送信パケット５０を送信している。送信装置１側には、各パケットの送信通番およびデータ通番が示してある。そして、受信装置２が各データ送信パケット５０を受信したかどうかを、受信装置２側の受信状況の○×で示している。そして、受信装置２が受信できたデータ送信パケット５０に対しては、確認応答パケット６０が送信装置１へ返信される。【００４３】  図５は、図４の場合に生成されるデータ送信パケット５０のヘッダ部５１および確認応答パケット６０について示す図である。この図では、ヘッダ部５１に示す内容のデータ送信パケット５０に対して、受信装置２から出力される確認応答パケット６０の内容を対応付けている。【００４４】  まず、送信通番「０」、データ通番「０」のデータ送信パケット５０ａが送信され、受信装置２がこのパケットの受信に成功する（受信状況「○」）。このとき、確認応答パケット６０ａは以下のようになる。すなわち、受信済みのデータ通番は「０」であるから、次に受信すべきデータ通番である次データ通番６１は「１」となる。パケットロスは生じていないので、受信状況ビット列６２は「０」である。データ送信パケット５０ａの送信通番は「０」であるから、受信済み送信通番６３は「０」である。【００４５】  次に、送信通番「１」、データ通番「１」のデータ送信パケット５０ｂが送信され、受信装置２がこのパケットの受信に成功する（受信状況「○」）。このときも、上述と同様に確認応答パケット６０ｂ（次データ通番６１「２」、受信状況ビット列６２「０」、受信済み送信通番６３「１」）が生成される。【００４６】  この後、送信通番「２」、データ通番「２」のデータ送信パケット５０ｃ、および送信通番「３」、データ通番「３」のデータ送信パケット５０ｄは、受信装置２が受信に失敗しているので、これに対する確認応答パケット６０は出力されない。【００４７】  そして、送信通番「４」、データ通番「４」のデータ送信パケット５０ｅが受信装置２に受信されると、確認応答パケット６０ｃが生成される。すなわち、ここで受信したデータ通番は「４」であるが、データ通番「２」「３」は未受信である。一方、すでにデータ通番「０」「１」は受信済みであるから、次データ通番６１は「２」となる。そして、データ通番「２」「３」が未受信（「０」）、かつデータ通番「４」が受信済み（「１」）であるから、受信状況ビット列６２は「１００」となる。また、直前で受信したパケットの受信済み送信通番は「４」であるから、受信済み送信通番６３は「４」となる。【００４８】  ここで、図４を参照すると、確認応答パケット６０ａ、６０ｂ、６０ｃは、それぞれ、データ通番「３」、「４」、「７」のデータ送信パケットが送信された後に送信装置１へ到達する。【００４９】  以下についても同様に確認応答パケット６０が生成され、送信装置１へ返信される。【００５０】  送信装置１が、確認応答パケット６０を受信したときの再送制御部１２の処理について説明する。【００５１】  再送制御部１２は、受信した確認応答パケット６０の内容に基づいて、再送制御を行う。例えば、確認応答パケット６０の内容に基づいて、再送すべきデータ通番を特定し、データ送信部１１に対して再送を指示する。再送指示を受けたデータ送信部１１は、その指示に従って再送パケットを生成し、再送する。再送すべきデータ通番を特定するための手順を、図６のフローチャートに示す。以下、同図を用いて説明する。【００５２】  再送制御部１２は、受信した確認応答パケット６０の次データ通番６１と受信状況ビット列６２とに基づいて、パケットロスが生じた可能性があるデータ通番５３を抽出する（Ｓ１１）。パケットロスの可能性がないとき（受信状況ビット列６２が「０」の場合）は、処理を終了する。【００５３】  パケットロスの可能性があるときは、再送制御部１２が送信履歴記憶部１４を参照し、パケットロスが生じている可能性のあるデータ通番を送信した直近（最も新しい）の送信通番５２を特定する。つまり、このデータ通番について既に再送されている場合には、先に送ったパケットではなく、後で送った（再送した）パケットの送信通番５２を取得する。そして、この直近の送信通番５２と受信済み送信通番６３とを比較する（Ｓ１２）。【００５４】  そして、直近の送信通番５２が受信済み送信通番６３より大きくないときは、そのデータ通番５３のパケットロスが確定するので、パケットロスが確定したパケットの再送を指示する（Ｓ１３）。一方、直近の送信通番５２の方が受信済み送信通番６３より大きいときは、そのデータ通番５３のロスは確定しないので、再送指示を行わない（Ｓ１４）。【００５５】  例えば、図５に示す確認応答パケット６０ａ、６０ｂの場合は、受信状況ビット列が「０」であるから、この時点ではパケットロスが生じた可能性はないので、ステップＳ１１のみで終了する。【００５６】  一方、確認応答パケット６０ｃでは、ステップＳ１１の処理を行うと、受信状況ビット列６２が「１００」であり、次データ通番６１が「２」であるから、データ通番「２」および「３」についてパケットロスが生じている可能性があることが分かる。【００５７】  そして、ステップＳ１２の処理を行うと、パケットロスの可能性があるデータ通番「２」および「３」を送信した直近の送信通番５２は、送信履歴記憶部１４を参照すると、それぞれ「２」および「３」であることがわかる。そして、確認応答パケット６０ｃの受信済み送信通番６３は「４」であるから、直近の送信通番５２はいずれも「４」より大きくない。従って、データ通番「２」および「３」は、いずれも再送が必要であると判定される。そして、ステップＳ１３でデータ送信部１１がデータ通番「２」および「３」を再送する。【００５８】  この確認応答パケット６０ｃに対する上述の処理は、図４のＡのタイミングで行われる。従って、このＡの時点でデータ通番「２」および「３」について再送を行うことが決定されたので、データ送信部１１がこの直後にデータ送信パケット５０ｆ、５０ｇで再送する。【００５９】  これにより、本実施形態では、パケットロスの発生を迅速に検出し、直ちにこれに対応して再送を行うことができる。【００６０】  次に、確認応答パケット６０ｄを受信したときの処理について説明する。この場合でも、図６に示すフローチャートに従って処理が行われる。【００６１】  つまり、確認応答パケット６０ｄを受信すると、再送制御部１２は、パケットロスが生じた可能性のあるデータ通番を特定する。確認応答パケット６０ｄを受信するのは、図４中Ｂのタイミングであり、この場合、次データ通番６１が「２」、送信状況ビット列６２が「１０１００」（図５参照）だから、データ通番「２」「３」「５」がパケットロスの可能性がある。【００６２】  次に、データ通番「２」「３」「５」について、送信履歴記憶部１４を参照して直近に送った送信通番を特定すると、それぞれの直近の送信通番は「８」「９」「５」となる。これらと確認応答パケット６０ｄの受信済み送信通番６３「６」とを比較すると、再送対象は送信通番「５」のデータ通番「５」だけとなる。そこで、再送制御部１２は、データ通番「５」についてデータ送信部１１に再送指示をする。【００６３】  これは、つまり、データ通番「２」および「３」について再送したデータ送信パケット５０ｆ、５０ｇが伝送路中にあり、今後受信装置２へ到達する可能性があることを示している。このような場合には再々送のためのパケットを送らず、パケットロスが確定するのを待つ。これにより、パケットロスが発生したかどうかが未確定の間は、再送が行われない。従って、伝送路中のパケットが不必要に増加することを防止できる。【００６４】  次に、確認応答パケット６０ｅを受信したときの処理について説明する。この場合でも、上述の場合と同様に図６に示すフローチャートに従って処理が行われる。【００６５】  まず、確認応答パケット６０ｅは、次データ通番６１が「３」、受信状況ビット列６２が「１１０１１０」（図５参照）であるから、パケットロスの可能性のあるデータ通番は「２」「５」であることが分かる。ここで、再送制御部１２が送信履歴記憶部１４を参照して、データ通番「２」および「５」の直近の送信通番をそれぞれ「８」および「５」と特定する。これらと、確認応答パケット６０ｅの受信済み送信通番６３「９」（図５参照）とを比較し、データ通番「２」および「５」のいずれも再送を行うよう、データ送信部１１へ指示をする。【００６６】  これは、確認応答パケット６０ｄのときと異なり、再送したデータ通番「２」のパケットについてもロスが確定している。従って、データ通番「５」について再送する共に、データ通番「２」について再々送が行われる。【００６７】  次に、最終データの受信確認及び再送制御について、図７を用いて説明する。図４〜図６に示す再送制御では、受信装置２から送られる確認応答パケット６０を用いて、データ送信パケットの受信状況を確認している。従って、例えば最終データのデータ送信パケット（最終データパケット）においてパケットロスが生じると、これ以降、確認応答パケットが送信されない。従って、送信装置１は最終データパケットのパケットロスを検出できない。そこで、送信装置１は、最終データパケット送信後に、さらにダミーパケットを送信する。【００６８】  例えば、図７の例では、最終データパケット５０ｍの送信通番が「６８」、データ通番が「３６」である。ここで、受信装置２は、この最終データパケット５０ｍのデータ通番「３��」よりも前のデータをすべて受信済みである。【００６９】  送信装置１は、最終データパケット５０ｍを送信した後、ダミーパケット５０ｎ、５０ｐを送信する。ここで送信するダミーパケットの数は、１または２以上である。なお、ダミーパケットは、データ部５５にデータが何も入っていない（データ部５５のデータ容量が０）のパケットであり、ヘッダ部５１には少なくとも送信通番５２がセットされている。データ通番５３もセットされていてもよい。この場合、ダミーパケットのデータ通番５３は、最終データパケット５０ｍから連続する数字としてもよい。これにより、受信装置２では、ダミーパケットであっても通常のデータ部５５にデータがセットされているパケットと同様に受信処理を実行できる。【００７０】  ここで、受信装置２が最終データパケット５０ｍを受信できず、パケットロスになったとき、これに対する確認応答パケットが出力されない。しかし、受信装置２が最終データパケット５０ｍの後に送信されたダミーパケット５０ｎを受信すると、これに対する確認応答パケット６０ｎを送信装置１に対して送信する。この確認応答パケット６０ｎには、次データ通番６１に「３６」、受信データビット列６２に「１０」、受信済み送信通番６３に「６９」がセットされている。
送信装置１が確認応答パケット６０ｎを受信すると、再送制御部１２が図６に示す手順に従って、最終データパケット５０ｍがロスされていることを検出する。そして、データ送信部１１が、データ通番３６の再送パケット５０ｑを生成して再送する。データ送信１１は、この再送パケット５０ｑでさらにパケットロスが生じたときのために、さらにダミーパケット５０ｒを送信する。そして、送信装置１が、再送した最終データパケット５０ｑに対する確認応答パケット６０ｑを受信すると、データ転送が完了する。【００７１】  次に、本発明の第２の実施形態に係るデータ通信システムについて、図８及び図９を用いて説明する。以下の説明では、第１の実施形態と相違する点を中心に説明する。従って、第１の実施形態と共通する構成については同一の符号を付して、説明を省略することがある。【００７２】  本実施形態にかかるデータ通信システムでも、第１の実施形態と同様に、送信装置１及び受信装置２を備える。送信装置１は、データ送信部１１Ａと、再送制御部１２と、データ記憶部１３と、送信履歴記憶部１４とを備える。受信装置２は、データ受信部２１Ａと、データ記憶部２２と、バッファ２３と、無通信タイマ２４とを備える。【００７３】  無通信タイマ２４は、受信装置２で受信が途絶えている時間（以下、無通信時間という）を計測するタイマである。つまり、無通信タイマ２４は、データ受信部２１がデータ送信パケット５０を受信してからの経過時間を計測する。そして、データ受信部２１が次のデータ送信パケット５０を受信すると、それまで計測した時間をクリアして、再び時間計測を開始する。従って、データ送信パケット５０の受信が途絶えると、無通信タイマ２４が計測する時間、つまり無通信時間がそのまま増え続ける。そこで、無通信タイマ２４は、無通信時間が予め定められた所定の時間（以下、再送判定時間という）になると、データ受信部２１Ａへ通知する。【００７４】  データ受信部２１Ａは、無通信タイマ２４Ａから無通信時間が再送判定時間に達したことの通知を受けると、再送判定時間の間無通信であることを示す情報を送信装置１に対して送信する。ここでは、無通信状態を通知するために、最後に送信した確認応答パケット６０（図９の例では、データ送信パケット５０ｓに対する確認応答パケット）を再送する。【００７５】  ところで、本実施形態においても、データ送信部１１Ａはデータ送信パケット５０を受信装置２に対して送信し、受信装置２から確認応答パケット６０を受信する。データ送信パケット５０及び確認応答パケット６０は、第１の実施形態と同一のフォーマットで構成されている。従って、送信装置１は確認応答パケット６０により、受信装置２での受信状況を把握できる。【００７６】  ここで、データ送信部１１Ａでは、ウィンドウサイズと呼ばれる、先送りするパケットの個数（確認応答パケット６０が返ってきていない、送信済みのデータ送信パケット５０の数）が決められている。そして、データ送信部１１Ａは、この先送りするパケットの個数をカウントするカウンタ１１Ｂを備える。つまり、データ送信部１１Ａは、送信したデータ送信パケット５０の数と受信した確認応答パケット６０の数との差を、カウンタ１１Ｂを用いて計数する。そして、カウンタ１１Ｂの値がウィンドウサイズ以下になるようにパケットの送信を制御する。従って、例えばウィンドウサイズが３であれば、データ送信部１１Ａは、まず３つのデータ送信パケット５０を無条件に送信できる。このとき、カウンタ値は「３」である。カウンタ値が「３」のときは、データ送信部１１Ａは原則として次のパケットを送信できない。そして、データ送信部１１Ａは、確認応答パケット６０を一つ受信すると、カウンタの値を１減らし、次のデータ送信パケット５０を一つ送信すると再び１加算する。この結果、データ送信部１１Ａが、データ転送パケット５０を送信したが、確認応答パケット６０が返ってきていないパケット数が３以下になるようになっている。【００７７】  ここで、図９を用いて本実施形態に係るデータ通信システムの通信手順を説明する。本実施形態では、ウィンドウサイズは３である。上述の通り、ウィンドウサイズにより、送信装置１が確認応答パケットを待たずに送り出せるパケット数に制限がある。従って、同図に示すように、ウィンドウサイズ以上の数のパケット（５０ｔ〜５０ｖ）について、連続してパケットロスが生じると、送信装置１からのパケットの送信が停止する。この結果、受信装置２では、データ送信パケット５０を受信しない無通信の状態が続く。【００７８】  このとき、受信装置２では無通信タイマ２４が無通信時間を計測している。そして、無通信時間が予め定められた再送判定時間以上になると、無通信タイマ２４がデータ受信部２１へその旨を通知する。データ受信部２１は、この通知を受けると、無通信状態が再送判定時間以上継続していることを通知するために、直前に送信した確認応答パケット６０ｓを送信装置１へ再送する。なお、再送が行われたときに無通信タイマ２４はクリアされる。そして、無通信タイマ２４は、直ちに無通信時間の計測を再開してもよいし、所定時間のインターバルをおいてから無通信時間の計測を再開してもよい。【００７９】  ここで再送された確認応答パケット６０ｓが送信装置１に到達する。ここで、データ送信部１１Ａが、このパケットが直前に受信した確認応答パケット６０ｓと同一であることを検出すると、受信装置２は無通信状態となっていると判定される。そこで、データ送信部１１Ａは、ウィンドウサイズを一時的に一つ繰り上げて（ここではウィンドウサイズを４にする）、後続のデータ通番のデータ送信パケット５０ｗを送信する。後続のデータ通番のデータがない場合は、ダミーパケットを送信する。つまり、既にウィンドウサイズ以上のデータ送信パケット５０について確認応答パケット６０を未受信であっても、送信装置１は後続のパケットを送信する。【００８０】  ここで、受信装置２が後続のデータ送信パケット５０ｗを受信すると、第１の実施形態で説明した手順に従って、これに対する確認応答パケット６０ｗが生成されて、送信装置１へ返信される。【００８１】  送信装置１が、確認応答パケット６０ｗを受信すると、再送制御部１２が第１の実施形態と同様にして、この確認応答パケット６０ｗに基づいて再送すべきデータ通番を特定する。そして、データ送信部１１も、第１の実施形態と同様に、再送制御部１２からの指示によ��、再送を行う。つまり、同図に示すように、データ通番「２」「３」「４」が、それぞれ再送される。【００８２】  本実施形態では、無通信の状態が所定時間以上継続したときに、これを解消するために、受信装置２が確認応答パケット６０を再送している。これは、データ送信パケット５０に比べ、確認応答パケット６０のサイズが非常に小さく、伝送路にかける負荷が小さくて済むからである。さらに、確認応答パケット６０の再送による伝送路への負荷が小さいので、再送判定時間を短くしても、伝送路への負担はそれほど増大しない。【００８３】  上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。【００８４】  例えば、上記の実施形態で説明したデータ通信機能は、コンピュータに着脱可能な拡張カードなどに実装し、コンピュータに機能追加するように実現することもできる。
【図１】
0004495085.tif 000002
【図２】
0004495085.tif 000003
【図３】
0004495085.tif 000004
【図４】
0004495085.tif 000005
【図５】
0004495085.tif 000006
【図６】
0004495085.tif 000007
【図７】
0004495085.tif 000008
【図８】
0004495085.tif 000009
【図９】
0004495085.tif 000010