(57)【要約】【課題】ＦＥＣによるデータ通信において、送信成功確立を高め、データ通信の信頼性の向上を図る。【解決手段】データを送信する際に送信しようとする元データのデータファイルをｋ個のデータからなるクラスタに分割する。そして、このクラスタの元データ４１１に他のクラスタから取得したデータによる畳み込みデータ４１２を加え、エンコードしてパリティ・データ４２０を生成する。このパリティ・データ４２０の一部を送信用パリティ・データ４２１として元データに付加し、送信データとしてネットワーク上の他の端末へ送信する。【選択図】        図４
2004180074.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上の端末装置間でデータの送受信を行うためのデータ処理方法であって、
所定の記憶装置から送信しようとする元データのデータファイルを読み出し、当該データファイルをｋ個のデータからなるクラスタに分割するステップと、
前記クラスタのｋ個の元データにｓ個の畳み込みデータを加え、エンコードしてｔ＋ｓ個のパリティ・データを生成するステップと、
前記パリティ・データのうちのｔ個のデータを前記元データに付加してｋ＋ｔ個のデータからなる送信データを作成するステップと、
所定のネットワークインターフェイスを介して、前記送信データを前記ネットワーク上の他の端末へ送信するステップと
を含むことを特徴とするデータ処理方法。
【請求項２】
前記畳み込みデータを、他のクラスタにおけるデータに依存して決定することを特徴とする請求項１に記載のデータ処理方法。
【請求項３】
前記送信データを作成するステップでは、所定の前記クラスタに関して、生成されたｔ＋ｓ個のパリティ・データのうちｔ’＞ｔなるｔ’個のデータを前記元データに付加して送信データを作成することを特徴とする請求項１に記載のデータ処理方法。
【請求項４】
ネットワーク上の端末装置間でデータの送受信を行うためのデータ処理方法であって、
所定の記憶装置から送信しようとする元データのデータファイルを読み出し、当該データファイルをクラスタに分割するステップと、
前記クラスタの元データをエンコードし、他のクラスタのデータに関する情報を含むパリティ・データを生成するステップと、
前記パリティ・データを前記元データに付加して送信データを作成するステップと、
所定のネットワークインターフェイスを介して、前記送信データを前記ネットワーク上の他の端末へ送信するステップと
を含むことを特徴とするデータ処理方法。
【請求項５】
前記パリティ・データを生成するステップでは、前記元データに他のクラスタにおけるパリティ・データの一部を付加してエンコードすることにより、当該他のクラスタのパリティ・データに関する情報を含むパリティ・データを生成することを特徴とする請求項４に記載のデータ処理方法。
【請求項６】
前記パリティ・データの少なくとも一部は、他のクラスタにおける元データをエンコードする際に当該元データに付加するデータと同一であることを特徴とする請求項４に記載のデータ処理方法。
【請求項７】
ネットワーク上の端末装置間でデータの送受信を行うためのデータ処理方法であって、
クラスタに分割され、各クラスタの元データとパリティ・データとを含むデータ列を受信するステップと、
通信中に所定のクラスタに関してデータの喪失があった場合に、当該所定のクラスタにおける喪失しなかったデータをデコードして、元データと、前記パリティ・データを生成するために当該元データに追加された畳み込みデータとを復元するステップと、
通信中のデータの喪失により前記所定のクラスタのデータ数が前記元データ及び前記畳み込みデータを復元するために必要な必要数に満たない場合に、他のクラスタの復元データに基づいて当該所定のクラスタのデータを補完してデコードし、前記元データ及び前記畳み込みデータを復元するステップと、
受信または復元された各クラスタの元データを連結してデータファイルを作成し、所定の記憶装置に格納するステップと
を含むことを特徴とするデータ処理方法。
【請求項８】
前記所定のクラスタのデータ数が前記必要数に満たない場合、前記元データをエンコードした際のエンコード順において当該所定のクラスタの直前のクラスタにおける復元された前記元データ及び前記畳み込みデータをエンコードして得られたデータ、または当該エンコード順において当該所定のクラスタの直後のクラスタにおける復元された前記畳み込みデータ、またはその両方を用いて当該クラスタのデータを補完することを特徴とする請求項７に記載のデータ処理方法。
【請求項９】
ネットワークを介して端末装置間でデータ交換を行う通信システムにおいて、
送信側の端末装置は、送信しようとする元データのデータファイルをクラスタに分割し、各クラスタの元データに他のクラスタにおける所定のデータを付加してエンコードすることによりパリティ・データを生成し、当該元データに当該パリティ・データを付加して生成された送信データを受信側の端末装置に送信し、
受信側の端末装置は、前記送信データを受信し、当該送信データの一部が通信中に喪失した場合、前記クラスタごとに前記元データを復元することを特徴とする通信システム。
【請求項１０】
前記受信側の端末装置は、受信した前記送信データのうち所定のクラスタにおけるデータ数が通信中のデータの喪失により前記元データを復元するために必要な必要数に満たない場合に、他のクラスタの復元データに基づいて当該所定のクラスタのデータを補完して前記元データを復元することを特徴とする請求項９に記載の通信システム。
【請求項１１】
ネットワークを介してデータ送信を行うデータ送信装置において、
元データのデータファイルを格納したファイル格納部と、
前記ファイル格納部から送信する元データのデータファイルを読み出してクラスタに分割し、当該クラスタごとに元データに他のクラスタにおける所定のデータを付加してエンコードすることによりパリティ・データを生成し、当該パリティ・データと当該元データとを含む送信データを作成する送信データ作成部と、
前記送信データ作成部にて作成された前記送信データを送信する送信制御部とを備えることを特徴とするデータ送信装置。
【請求項１２】
前記送信データ作成部は、所定のクラスタに関して、前記元データをエンコードした際のエンコード順において当該所定のクラスタの直前のクラスタにおけるパリティ・データを前記元データに付加してエンコードすることを特徴とする請求項１１に記載のデータ送信装置。
【請求項１３】
ネットワークを介して送信されたデータを受信するデータ受信装置において、
クラスタに分割され、各クラスタの元データとパリティ・データとを含むデータ列を受信する受信制御部と、
通信中に所定のクラスタに関してデータの喪失があった場合に、当該所定のクラスタにおける喪失しなかったデータをデコードして、元データと、前記パリティ・データを生成するために当該元データに追加された畳み込みデータとを復元し、当該データの喪失により前記所定のクラスタのデータ数が前記元データ及び前記畳み込みデータを復元するために必要な必要数に満たない場合に、他のクラスタの復元データに基づいて当該所定のクラスタのデータを補完してデコードし、前記元データ及び前記畳み込みデータを復元するデータ復元部と、
受信または復元された前記元データを連結して得られたデータファイルを格納するファイル格納部と
を備えることを特徴とするデータ受信装置。
【請求項１４】
前記データ復元部は、前記所定のクラスタのデータ数が前記必要数に満たない場合、前記元データをエンコードした際のエンコード順において当該所定のクラスタの直前のクラスタにおける復元された前記元データ及び前記畳み込みデータをエンコードして得られたデータ、または当該エンコード順において当該所定のクラスタの直後のクラスタにおける復元された前記畳み込みデータ、またはその両方を用いて当該クラスタのデータを補完することを特徴とする請求項１３に記載のデータ受信装置。
【請求項１５】
ネットワークに接続されたコンピュータを制御して、データの送信処理を行うプログラムであって、
所定の記憶装置から送信しようとする元データのデータファイルを読み出し、当該データファイルをｋ個のデータからなるクラスタに分割する第１の処理と、
前記クラスタのｋ個の元データにｓ個の畳み込みデータを加え、エンコードしてｔ＋ｓ個のパリティ・データを生成する第２の処理と、
前記パリティ・データのうちのｔ個のデータを前記元データに付加してｋ＋ｔ個のデータからなる送信データを作成する第３の処理と、
所定のネットワークインターフェイスを介して、前記送信データを送信する第４の処理と
を前記コンピュータに実行させることを特徴とするプログラム。
【請求項１６】
前記プログラムによる前記第２の処理では、所定のクラスタにおける前記畳み込みデータとして、直前のクラスタに関して生成された前記パリティ・データにおける所定のｓ個のデータを用いることを特徴とする請求項１５に記載のプログラム。
【請求項１７】
所定のクラスタに関して、前記第２の処理により生成されたｔ＋ｓ個のパリティ・データのうち、前記第３の処理で抽出したｔ個のデータ以外のデータを送信する処理を前記コンピュータにさらに実行させることを特徴とする請求項１５に記載のプログラム。
【請求項１８】
ネットワークに接続されたコンピュータを制御して、当該ネットワークを介して送信されたデータの受信処理を行うプログラムであって、
クラスタに分割され、各クラスタの元データとパリティ・データとを含むデータ列を受信する第１の処理と、
通信中に所定のクラスタに関してデータの喪失があった場合に、当該所定のクラスタにおける喪失しなかったデータをデコードして、元データと、前記パリティ・データを生成するために当該元データに追加された畳み込みデータとを復元する第２の処理と、
通信中のデータの喪失により前記所定のクラスタのデータ数が前記元データ及び前記畳み込みデータを復元するために必要な必要数に満たない場合に、他のクラスタの復元データに基づいて当該所定のクラスタのデータを補完してデコードし、前記元データ及び前記畳み込みデータを復元する第３の処理と、
受信または復元された各クラスタの元データを連結してデータファイルを作成し、所定の記憶装置に格納する第４の処理と
を前記コンピュータに実行させることを特徴とするプログラム。
【請求項１９】
前記プログラムによる前記第３の処理では、前記元データをエンコードした際のエンコード順において当該所定のクラスタの直前のクラスタにおける復元された前記元データ及び前記畳み込みデータをエンコードして得られたデータ、または当該エンコード順において当該所定のクラスタの直後のクラスタにおける復元された前記畳み込みデータ、またはその両方を用いて当該クラスタのデータを補完することを特徴とする請求項１８に記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワークにおけるデータ通信に関し、特にＦＥＣによりデータ通信における信頼性を向上させる技術に関する。
【０００２】
【従来の技術】
インターネットに代表されるコンピュータネットワークの普及により、ネットワークを介して行われるデータ通信の信頼性を向上させることが重要な課題となっている。
従来、データ通信の信頼性を高める手段としては、データ通信が失敗した場合（データが壊れたり喪失したりした場合、以下、喪失と総称する）に受信側端末から送信側端末へ自動的にデータの再送を要求するＡＲＱ（Ａｕｔｏｍａｔｉｃ  Ｒｅｐｅａｔ  ｒｅＱｕｅｓｔ：再送要求）や、データ喪失の可能性を予め想定して送信データを冗長に構成するＦＥＣ（Ｆｏｒｗａｒｄ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ）、これらの組合せなどがある。ＡＲＱが、受信側端末から送信側端末へ要求を行うために双方向通信であることを前提としているのに対し、ＦＥＣは冗長な送信データから元データを復元するので１方向通信にて利用することが可能である。
【０００３】
ＦＥＣにより信頼性の向上を図る手法として、受信者において、正しく受信されたデータから消失データを復元することが可能なイレーシャ・コード（Ｅｒａｓｕｒｅ  Ｃｏｄｅ）を用いるものがある（例えば、非特許文献１参照。また、イレーシャ・コードの理論的な根拠については、例えば、非特許文献２参照。）。この手法では、送信者は、送信しようとする元データにパリティ・データを付加して送信データを作成し、送信する。受信者は、受信した送信データから元データを抽出するが、この際、元データとパリティ・データの合計のデータ量が一定以上あれば、送信データの一部が喪失されていても元データを復元することができる。
【０００４】
このイレーシャ・コードを用いたＦＥＣによるデータ通信方法として、例えば、特許文献１に開示された従来技術がある。
図１１は、特許文献１に開示された従来技術によるデータ通信方法を説明する図である。
同文献に開示された技術によれば、図１１に示すように、次の手順でデータ通信を行う。
（１）データファイル（元データ）をｋ個のデータ（図示の例では６個）からなるクラスタに分割する（図示の例では、データファイルは８個のクラスタに分割されている。なお、クラスタの文言は、送信しようとする元データの分割単位を表す。したがって、以下の説明でクラスタと言った場合、その内容は、対応する元データである場合、元データとパリティ・データとの組合せである場合などがある。また、データ数の単位は、例えば１Ｋｂｙｔｅ、８Ｋｂｙｔｅ等とすることができる。
（２）送信者１１０１は、個々のクラスタに対して、ｋ個の元データからｔ個のパリティ・データ（図示の例では４個）を生成（エンコード）し、元データと共に（すなわちｋ＋ｔ個のデータからなるデータ列を）送信する。
（３）受信者１１０２は、かかるデータ列を受信するが、通信中にデータ列の一部が喪失していた場合、このデータ列中の任意のｋ個から該当クラスタの元データを復元（デコード）する。
図１１に示す例では、元データとパリディ・データを合わせて６個のデータがあれば、言い換えれば４個までは喪失しても、元データを復元できる。
【０００５】
図１２は、特許文献１に開示された従来技術によるパリティ・データの生成方法を示す図である。
同文献に開示された技術では、図１２に示すように、各クラスタの元データからそれぞれ独立にパリティ・データが生成される。したがって、個々のクラスタにおいて元データを復元する場合、当該クラスタにおけるパリティ・データを含むデータ列からのみ復元される。
すなわち、この技術では、データの受信成功には各クラスタについてｋ個以上のデータを受信することが必要となる。また、データの配信成功には全ての受信者による受信成功が必要である。
【０００６】
【特許文献１】
米国特許明細書第６０１２１５９号明細書
【非特許文献１】
Ｌ．  Ｒｉｚｚｏ、“Ｅｆｆｅｃｔｉｖｅ  ｅｒａｓｕｒｅ  ｃｏｄｅｓ  ｆｏｒ  ｒｅｌｉａｂｌｅ  ｃｏｍｐｕｔｅｒ  ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｐｒｏｔｏｃｏｌｓ”、［ｏｎｌｉｎｅ］、Ａｐｒｉｌ  １９９７、ＡＣＭ  Ｃｏｍｐｕｔｅｒ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｒｅｖｉｅｗ、［平成１４年８月３０日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｃｉｔｅｓｅｅｒ．ｎｊ．ｎｅｃ．ｃｏｍ／ｒｉｚｚｏ９７ｅｆｆｅｃｔｉｖｅ．ｈｔｍｌ＞
【非特許文献２】
Ｊｏｈａｎｎｅｓ  Ｂｌｏｍｅｒ、Ｍａｌｉｋ  Ｋａｌｆａｎｅ、Ｒｉｃｈａｒｄ  Ｋａｒｐ、Ｍａｒｅｋ  Ｋａｒｐｉｎｓｋｉ、Ｍｉｃｈａｅｌ  Ｌｕｂｙ、Ｄａｖｉｄ  Ｚｕｃｋｅｒｍａｎ、“Ａｎ  ＸＯＲ−Ｂａｓｅｄ  Ｅｒａｓｕｒｅ−Ｒｅｓｉｌｉｅｎｔ  ＣｏｄｉｎｇＳｃｈｅｍｅ”、［ｏｎｌｉｎｅ］、１９９５、［平成１４年８月３０日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｃｉｔｅｓｅｅｒ．ｎｊ．ｎｅｃ．ｃｏｍ／８４１６２．ｈｔｍｌ＞
【０００７】
【発明が解決しようとする課題】
しかし、上記従来のイレーシャ・コードを用いたデータ通信方式は、クラスタ内の元データの数がｋ個である場合、ｋ＋ｔ個（元データ＋パリティ・データ）のデータのうちｔ個以上のデータが喪失した場合（すなわち受信できたデータがｋ個に満たない場合）には元データを復元することができなかった。
また、上述したように、データ通信では、データの配信成功には全ての受信者による受信成功が必要であることから、配信成功確率は受信者数およびクラスタ数が増加するのに伴って減少する。
【０００８】
ここで、データの送信が失敗した場合に、受信者から送信者へマニュアル操作にて当該データの再送要求がなされ、再送信する場合の処理コストを考える。この場合、各受信者へ個別にデータ送信が行われるユニキャスト配信であれば、再送信の処理コストは再送信を行う受信者数に比例するため、一般に初期配信の処理コストよりも小さい。一方、同報配信（ブロードキャストやマルチキャスト）の場合、再送信の処理コストは受信者数によらないため、初期配信の処理コストと同等である。このため、同報配信において特に高い配信成功確率が要求されることとなる。
【０００９】
特許文献１に開示された従来のデータ通信方法では、配信成功確率を高めるためには、クラスタにおけるパリティ・データのデータ数ｔまたは元データのデータ数ｋの片方または双方の値を大きくする。しかしながら、パリティ・データの割合（冗長度）を増やすと、送信するデータ量及び送信時間が増加してしまう。また、元データのデータ数ｋを大きくすると、エンコード及びデコードに要する計算量の大きな増加を招く。
したがって、ＦＥＣによるデータ通信では、これらの点に改善の余地を見出すことができる。
【００１０】
そこで本発明は、ＦＥＣによるデータ通信において、配信成功確率を高め、データ通信の信頼性の向上を図ることを目的とする。
また、本発明は、ＦＥＣによるデータ通信における冗長度（パリティ・データの割合）を低く抑えることを他の目的とする。
【００１１】
【課題を解決するための手段】
上記の目的を達成する本発明は、次のようなデータ処理方法として実現することができる。すなわち、このデータ処理方法は、所定の記憶装置から送信しようとする元データのデータファイルを読み出し、このデータファイルを同じ大きさのｋ個のデータからなるクラスタに分割するステップと、このクラスタのｋ個の元データにｓ個の畳み込みデータを加え、エンコードしてｔ＋ｓ個のパリティ・データを生成するステップと、このパリティ・データのうちのｔ個のデータを元データに付加してｋ＋ｔ個のデータからなる送信データを作成するステップと、所定のネットワークインターフェイスを介して、この送信データをネットワーク上の他の端末へ送信するステップとを含むことを特徴とする。
【００１２】
ここでこの畳み込みデータを、他のクラスタにおけるデータに依存して決定する。より詳細には、所定のクラスタにおける畳み込みデータとして、パリティ・データ生成の際のエンコード順における直前のクラスタに関して生成されたパリティ・データにおける所定のｓ個のデータを用いる。また、パリティ・データ生成の際のエンコード順における最後のクラスタにおける受信成功確率の低下を防ぐため、かかる最後のクラスタに関しては、特に生成したｔ＋ｓ個のパリティ・データの全てを送信するようにしても良い。あるいはｔ＋ｓ個のパリティ・データのうち、ｔ’＞ｔなるｔ’個のデータを前記元データに付加して送信データを作成するようにしても良い。
【００１３】
また本発明は、次のようなデータ処理方法としても実現される。すなわち、このデータ処理方法は、所定の記憶装置から送信しようとする元データのデータファイルを読み出し、このデータファイルをクラスタに分割するステップと、このクラスタの元データと他のクラスタのデータの一部で構成される畳み込みデータとをエンコードすることにより、他のクラスタのデータに関する情報を含むパリティ・データを生成するステップと、このパリティ・データを元データに付加して送信データを作成するステップと、所定のネットワークインターフェイスを介して、この送信データをネットワーク上の他の端末へ送信するステップとを含むことを特徴とする。
【００１４】
ここで、パリティ・データを生成する際には、元データに他のクラスタにおけるパリティ・データの一部を付加してエンコードする。これにより、生成されたパリティ・データには、この他のクラスタのパリティ・データに関する情報が含まれることとなる。また、このパリティ・データの一部もさらに他のクラスタの元データをエンコードする際に付加されることとなるので、生成されたパリティ・データには、かかるさらに他のクラスタのデータに関する情報も含まれることとなる。
【００１５】
さらに本発明は、以上のようにして生成された送信データを受信する場合の、次のようなデータ処理方法としても実現される。すなわち、このデータ処理方法は、クラスタに分割され、各クラスタの元データとパリティ・データとを含むデータ列を受信するステップと、通信中に所定のクラスタに関してデータの喪失があった場合に、所定のクラスタにおける喪失しなかったデータをデコードして、元データと、パリティ・データを生成するためにこの元データに追加された畳み込みデータとを復元するステップと、通信中のデータの喪失によりこの所定のクラスタのデータ数が元データ及び畳み込みデータを復元するために必要な必要数に満たない場合に、他のクラスタの復元データに基づき、この所定のクラスタのデータを補完してデコードし、元データ及び畳み込みデータを復元するステップと、受信または復元された各クラスタの元データを連結してデータファイルを作成し、所定の記憶装置に格納するステップとを含むことを特徴とする。
このクラスタのデータの補完には、元データをエンコードした際のエンコード順において処理対象であるクラスタの直前のクラスタにおける復元された元データ及び畳み込みデータをエンコードして得られたデータ、またはこのエンコード順において直後のクラスタにおける復元された前記畳み込みデータ、あるいはその両方を用いることができる。
【００１６】
また、上記の目的を達成するさらに他の本発明は、次のように構成されたことを特徴とする通信システムとしても実現することができる。この通信システムにおいて、送信側の端末装置は、送信しようとする元データのデータファイルをクラスタに分割し、各クラスタの元データに他のクラスタにおける所定のデータを付加してエンコードすることによりパリティ・データを生成し、このパリティ・データを元データに付加して生成された送信データを受信側の端末装置に送信する。また、受信側の端末装置は、この送信データを受信し、この送信データの一部が通信中に喪失した場合、クラスタごとに元データを復元する。ここで、受信した所定のクラスタにおける送信データのデータ数が通信中のデータの喪失により元データを復元するために必要な必要数に満たない場合に、他のクラスタの復元データに基づいてこのクラスタのデータを補完して元データを復元する。
【００１７】
さらに詳細には、この送信側の端末装置であるデータ送信装置は、元データのデータファイルを格納したファイル格納部と、このファイル格納部から送信する元データのデータファイルを読み出してクラスタに分割し、このクラスタごとに元データに他のクラスタ（エンコード順における直前のクラスタ）における所定のデータを付加してエンコードすることによりパリティ・データを生成し、このパリティ・データと元データとを含む送信データを作成する送信データ作成部と、この送信データ作成部にて作成された送信データを送信する送信制御部とを備えることを特徴とする。
【００１８】
また、この受信側の端末装置であるデータ受信装置は、クラスタに分割され、各クラスタの元データとパリティ・データとを含むデータ列を受信する受信制御部と、通信中に所定のクラスタに関してデータの喪失があった場合に、この所定のクラスタにおける喪失しなかったデータをデコードして、元データと、パリティ・データを生成するためにこの元データに追加された畳み込みデータとを復元し、通信中のデータの喪失によりこの所定のクラスタのデータ数が元データ及び畳み込みデータを復元するために必要な必要数に満たない場合に、他のクラスタの復元データに基づいてこの所定のクラスタのデータを補完してデコードし、元データ及び畳み込みデータを復元するデータ復元部と、受信または復元された各クラスタの元データを連結して得られたデータファイルを格納するファイル格納部とを備えることを特徴とする。
【００１９】
さらに本発明は、コンピュータを制御して上述したデータ処理方法の各ステップに対応する処理を実行させるプログラムや、上記のデータ送信装置またはデータ受信装置としてコンピュータを機能させるプログラムとして実現される。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供することができる。
【００２０】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて、この発明を詳細に説明する。
図１は、本実施の形態によるデータ通信が行われるネットワークシステムの概略構成を示す図である。
図１に示すネットワークシステムは、インターネットなどのネットワーク３０に、送信側端末１０と受信側端末２０とが接続されて構成されている。送信側端末１０及び受信側端末２０は、ネットワーク３０を介してパケット通信によるデータ交換を行う機能を備えたコンピュータ、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、携帯電話、その他の情報通信機器（端末装置）にて実現される。なお、送信側端末１０及び受信側端末２０は、所定のデータを送信しようとするユーザ（送信者）が使用する端末と、当該データを受信する端末とを意味する。したがって、ネットワーク３０に接続された各端末装置が、通信ごとに送信側端末１０にも受信側端末２０にもなり得る。また図示のように、受信側端末２０は複数存在し、個別に送信する他、同報配信にて一斉に送信することが可能である。
【００２１】
図２は、図１に示した送信側端末１０及び受信側端末２０を実現するのに好適なコンピュータ装置のハードウェア構成の例を模式的に示した図である。
図２に示すコンピュータ装置は、演算手段であるＣＰＵ（Ｃｅｎｔｒａｌ  ＰｒｏｃｅｓｓｉｎｇＵｎｉｔ：中央処理装置）１０１と、Ｍ／Ｂ（マザーボード）チップセット１０２及びＣＰＵバスを介してＣＰＵ１０１に接続されたメインメモリ１０３と、同じくＭ／Ｂチップセット１０２及びＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）を介してＣＰＵ１０１に接続されたビデオカード１０４と、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを介してＭ／Ｂチップセット１０２に接続されたハードディスク１０５、ネットワークインターフェイス１０６及びＵＳＢポート１０７と、さらにこのＰＣＩバスからブリッジ回路１０８及びＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バスなどの低速なバスを介してＭ／Ｂチップセット１０２に接続されたフロッピーディスクドライブ１０９及びキーボード／マウス１１０とを備える。そして、ネットワークインターフェイス１０６を介してネットワーク３０に接続され、送信側端末１０または受信側端末２０として他のコンピュータ装置とでデータ交換を行う。
なお、図２は本実施の形態を実現するコンピュータ装置のハードウェア構成を例示するに過ぎず、本実施の形態を適用可能であれば、他の種々の構成を取ることができる。例えば、ビデオカード１０４を設ける代わりに、ビデオメモリのみを搭載し、ＣＰＵ１０１にてイメージデータを処理する構成としても良いし、ＡＴＡ（ＡＴ  Ａｔｔａｃｈｍｅｎｔ）などのインターフェイスを介してＣＤ−ＲＯＭ（ＣｏｍｐａｃｔＤｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＤＶＤ−ＲＯＭ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）のドライブを設けても良い。
【００２２】
図３は、送信側端末１０の機能構成を示す図である。
図３を参照すると、送信側端末１０は、送信しようとする元データのデータファイルを格納したファイル格納部１１と、ファイル格納部１１に格納されているデータファイルから送信データを作成する送信データ作成部１２と、送信データ作成部１２にて作成された送信データを受信側端末２０へ送信する送信制御部１３とを備える。かかる構成において、ファイル格納部１１は、例えば図２に示したコンピュータ装置におけるメインメモリ１０３やハードディスク１０５にて実現される。また、送信データ作成部１２及び送信制御部１３は、プログラム制御されたＣＰＵ１０１にて実現される。
ＣＰＵ１０１を制御してこれらの機能を実現するプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワーク３０を介して配信したりすることにより提供される。図２に示したコンピュータ装置では、このプログラムがハードディスク１０５に保存（インストール）された後、メインメモリ１０３に読み込まれ展開されて、ＣＰＵ１０１を制御し、送信データ作成部１２及び送信制御部１３として機能させる。
【００２３】
次に、送信データ作成部１２について、さらに詳細に説明する。
送信データ作成部１２は、第１に、ファイル格納部１１から送信しようとする元データのデータファイルを読み出し、ｋ個のデータから構成されるクラスタに分割する。データの大きさは全て同じである。クラスタを構成する上でデータに不足が生じた場合は、全て０で埋める等、送信側端末１０及び受信側端末２０の間で予め定められた方式で補う。なお、クラスタやクラスタ内のｋ個のデータはファイル内での位置の順である必要はない。第２に、各クラスタの元データをエンコードしてクラスタごとのパリティ・データを生成し、この元データとパリティ・データとに基づいて送信データを作成する。
ここで、本実施の形態の送信データ作成部１２は、元データのエンコードにおいて畳み込みデータを用いたエンコードを行うと共に、所定のクラスタにおける元データのエンコードを他のクラスタに依存して行う。
【００２４】
図４は、本実施の形態におけるパリティ・データの生成方法を説明する図である。
図４に示すように、本実施の形態では、まず元データ４１１に対してｓ個の畳み込みデータ４１２を追加する。元データ４１１のデータ数をｋとすれば、ｋ＋ｓ個のデータからなるデータ列４１０が生成される。
次に、元データ４１１に畳み込みデータ４１２を加えたｋ＋ｓ個のデータをエンコードしてパリティ・データ４２０を生成する。生成されたパリティ・データ４２０の内、ｓ個のデータ４２２を除いた残りのデータを、元データに付加するパリティ・データ、すなわち元データと共に送信するパリティ・データ（以下、送信用パリティ・データ４２１と称す）とする。
ここで、送信用パリティ・データ４２１のデータ数をｔとすれば、
ｓ≦ｔ
という関係を満たす。
【００２５】
また、図４に示すように、生成されたパリティ・データ４２０の内、送信用パリティ・データ４２１以外のｓ個のデータ４２２は、各クラスタをエンコードする際のエンコード順にしたがって、次のクラスタをエンコードするための畳み込みデータ４１２となる。すなわち、所定のクラスタに着目すれば、１つ前のクラスタのパリティ・データ４２０からｓ個のデータ４２２を取得して、畳み込みデータ４１２として元データ４１１に加える。これにより、クラスタのエンコードは、１つ前のクラスタに依存して行われることとなる。なお、エンコード順における最初のクラスタには、１つ前のクラスタが存在しないので、予め定められた任意のｓ個のデータが初期値として与えられる。
【００２６】
以上のようにして送信データ作成部１２により作成される送信データは、各クラスタに対して元データ４１１及び送信用パリティ・データ４２１のｋ＋ｔ個のデータとなる。
送信制御部１３は、例えば図２に示したコンピュータ装置におけるネットワークインターフェイス１０６を制御して、上記のようにして作成された送信データを送信する。送信データの送信は、宛先の受信側端末２０を指定して行っても良いし（ユニキャストの場合）、宛先を指定しないで行っても良い（ブロードキャストの場合）。また、送信はクラスタ毎に行う必要はなく、各クラスタから一個ずつデータを送る作業を（クラスタのデータの数だけ）繰り返したり（Ｉｎｔｅｒｌｅａｖｉｎｇ）、全てのクラスタの元データを送信した後でパリティ・データを送信したりすることができる。
【００２７】
図５は、送信側端末１０によるデータ送信時の動作を説明するフローチャートである。なお、図示の手順は、送信側端末１０の動作の一例に過ぎず、必ずしもこの手順には限定されない。
図５に示すように、送信側端末１０では、まず、送信データ作成部１２により、ファイル格納部１１から読み出された元データのデータファイルが、各々ｋ個のデータからなるクラスタに分割される（ステップ５０１）。ここで、パリティ・データを生成するためのエンコードを行う順にしたがって、０から順に番号を振るものとする。
次に、送信データ作成部１２により、クラスタ０（１番目のクラスタ）の元データ４１１に、予め設定された所定の初期値からなるｓ個の畳み込みデータ４１２が追加される（ステップ５０２）。そして、このｋ＋ｓ個のデータ列４１０がエンコードされてｔ＋ｓ個のパリティ・データ４２０が生成される（ステップ５０３）。そして、パリティ・データ４２０の内のｔ個の送信用パリティ・データ４２１とｋ個の元データ４１１とで送信データが作成される（ステップ５０４）。
この時点で、送信制御部１３により、ｋ個の元データ４１１とｔ個の送信用パリティ・データ４２１とからなる送信データが送信される（ステップ５０５）。送信データがエンコード順における最後のクラスタであるならば、データ送信の処理を終了する（ステップ５０６）。
一方、未処理のクラスタがあるならば、次に、送信データ作成部１２により、パリティ・データ４２０中のｓ個のデータ４２２が、次のクラスタにおける畳み込みデータ４１２として、当該クラスタの元データ４１１に追加され（ステップ５０６、５０７）、ステップ５０３に戻って順次処理が繰り返される。
【００２８】
図６は、受信側端末２０の機能構成を示す図である。
図６を参照すると、受信側端末２０は、送信側端末１０から送信された送信データを受信する受信制御部２１と、受信制御部２１にて受信された受信データから元データを復元するデータ復元部２２と、受信制御部２１にて受信されたまたはデータ復元部２２にて復元された元データのデータファイルを保存するファイル格納部２３とを備える。かかる構成において、ファイル格納部２３は、例えば図２に示したコンピュータ装置におけるメインメモリ１０３やハードディスク１０５にて実現される。また、受信制御部２１及びデータ復元部２２は、プログラム制御されたＣＰＵ１０１にて実現される。
ＣＰＵ１０１を制御してこれらの機能を実現するプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワーク３０を介して配信したりすることにより提供される。図２に示したコンピュータ装置では、このプログラムがハードディスク１０５に保存（インストール）された後、メインメモリ１０３に読み込まれ展開されて、ＣＰＵ１０１を制御し、受信制御部２１及びデータ復元部２２として機能させる。
【００２９】
次に、データ復元部２２について、さらに詳細に説明する。
本来、送信側端末１０から送信されたデータが通信中に喪失することなく受信側端末２０に受信されれば、受信データ中に元データが完全な形で含まれる。しかし、送信データの一部が喪失した場合であっても、一定の範囲内であれば、データ復元部２２により元データを復元することが可能である。
データ復元部２２は、受信制御部２１にて受信された受信データのうち、所定のクラスタにおいて元データの一部が喪失している場合、当該クラスタにおける喪失していない元データとパリティ・データとをデコードし、元データを得ることができる。このデコードはクラスタごとに行われる。なお、パリティ・データのみが失われた場合、元データは無事なのでデコードの必要はない。
ここで、本実施の形態のデータ復元部２２は、所定のクラスタの受信データをデコードするために、必用に応じて他のクラスタにおける畳み込みデータを利用する。したがって、本実施の形態による他のクラスタのデータを利用した復元を行うためには、復元可能なクラスタについては、元データの喪失の有無に関わらず復元することが必要となる場合がある。
【００３０】
図７は、本実施の形態におけるデコード方法を説明する図である。
本実施の形態では、上述したように元データに畳み込みデータを加えたｋ＋ｓ個のデータをエンコードしてｔ＋ｓ個のデータからなるパリティ・データ（送信用パリティ・データ＋ｓ個のデータ）を生成している。したがって、これらｋ＋ｓ＋ｔ＋ｓ個のデータのうち、任意のｋ＋ｓ個のデータをデコードすれば、元データ及び畳み込みデータを復元することができる。そこでデータ復元部２２は、まずデコードしようとするクラスタから、元データのデータ数ｋに畳み込みデータのデータ数ｓを加算したｋ＋ｓ個のデータを抽出する。送信側端末１０から送信される各クラスタのデータ数は、上記のようにｋ＋ｔ個のデータからなるデータ列であり、ｓ≦ｔであるので、通信の際にｔ−ｓ（＝（ｋ＋ｔ）−（ｋ＋ｓ））個以上のデータを喪失していなければ、ｋ＋ｓ個のデータを抽出できる。
そして、このｋ＋ｓ個のデータをデコードし、図７に示すように、ｋ個の元データ７１１とｓ個の畳み込みデータ７１２とを復元する。
【００３１】
ここで、所定のクラスタの受信データに関して、ｔ−ｓ個よりも多くのデータが喪失し、データ数がｋ＋ｓ個に満たない場合を考える。この場合、当該クラスタの直前または直後のクラスタの元データ及び畳み込みデータが復元可能であるならば、これらのクラスタからデータを付与することで、当該所定のクラスタ（以下、着目クラスタ）についても元データ及び畳み込みデータを復元することができる。すなわち、所定のクラスタにおける畳み込みデータと、直前のクラスタにおけるパリティ・データのうちの送信用パリティ・データ以外のｓ個のデータとが同一であることを利用する（図４参照）。
【００３２】
まず、図７（Ａ）を参照して、着目クラスタの直前のクラスタに関して元データ及び畳み込みデータが復元できた場合について説明する。
この場合、直前のクラスタの復元データ（データ数はｋ＋ｓ個）を送信側端末１０の送信データ作成部１２と同様の手法でエンコードすれば、送信データ作成部１２が生成したパリティ・データ４２０と同一のパリティ・データ７２０を生成することができる。すなわち、このパリティ・データ７２０のうち、送信用パリティ・データ４２１に相当する部分以外のｓ個のデータ７２２は、着目クラスタにおける畳み込みデータ７１２と同一である。
そこで、当該直前のクラスタの復元データをエンコードしてパリティ・データ７２０を生成し、ｓ個のデータ７２２の部分から必要個数のデータ（補充データ）を着目クラスタに追加して、着目クラスタにおけるｋ＋ｓ個のデータを補完する。これにより、当該着目クラスタについても元データ７１１及び畳み込みデータ７１２が復元される。
【００３３】
次に、図７（Ｂ）を参照して、着目クラスタの直後のクラスタに関して元データ及び畳み込みデータが復元できた場合について説明する。
この場合、直後のクラスタの畳み込みデータ７１２と着目クラスタのデータ７２２とは同一である。そこで、当該直後のクラスタにおける復元された畳み込みデータ７１２から必要個数のデータ（補充データ）を着目クラスタに追加して、着目クラスタにおけるｋ＋ｓ個のデータを補完する。これにより、当該着目クラスタについても元データ７１１及び畳み込みデータ７１２が復元される。
【００３４】
図８は、以上の手法によるデコード済みのクラスタを利用したデータ補完の様子を説明する図である。
図８において、クラスタにおける元データ及び畳み込みデータを復元するのに必要な受信データの数（ｋ＋ｓ個）を必要数とする（受信データの最大数はｋ＋ｔ個である）。図８に示す例では、クラスタ０とクラスタ６とは、必要数以上のデータを受信しており、単独で元データ及び畳み込みデータを復元できる。
クラスタ１、２は、受信データが元データの個数分であり、必要数に満たない。しかし、クラスタ０の復元データから順次補充データを取得して補完することにより、元データ及び畳み込みデータを復元することができる。同様に、クラスタ４、５、７、８も受信データが元データの個数分であり必要数に満たないが、クラスタ６の復元データから順次補充データを取得して補完することにより、元データ及び畳み込みデータを復元することができる。
次にクラスタ３は、受信データが元データの個数よりもさらにｓ個、すなわち必要数よりも２ｓ個少ない。この場合でも、上記のようにしてクラスタ２及びクラスタ４の元データ及び畳み込みデータが復元されるので、これらの復元データからｓ個ずつ補充データを取得して補完することにより、クラスタ３の元データ及び畳み込みデータを復元することができる。
【００３５】
このように、本実施の形態では、１つのクラスタ単独で元データを復元するためには元データの個数と畳み込みデータの個数とを加算した数のデータ数が必要となるが、そのようなクラスタ（通信状況の比較的良好であったクラスタ）が１つでも存在すれば、その復元データを利用することで、他のクラスタにおいては元データの個数分のデータを受信できれば元データを復元できることとなる。そして、部分的には、元データの個数よりもさらに少ない数の受信データからも元データを復元できることとなる。
【００３６】
図９及び図１０は、受信側端末２０のデータ復元部２２による元データの復元処理の動作を説明するフローチャートである。なお、図示の手順は、受信側端末２０の動作の一例に過ぎず、必ずしもこの手順には限定されない。
図９、１０に示すデータの復元処理に先立って、受信制御部２１により送信側端末１０から送信されたデータが受信されている。そして、データ復元部２２はまず図９に示すように、エンコードされた順にクラスタをデコードして元データを復元する。そして、この手順で復元できなかったクラスタに対し、図１０に示す手順で復元を試みる。
【００３７】
図９を参照すると、データ復元部２２は、受信制御部２１にて受信された最初のクラスタであるクラスタ０を着目クラスタとし、その受信データに対して、予め設定された所定の初期値からなるｓ個の畳み込みデータ７１２を追加する（ステップ９０１）。この初期値は、送信側端末１０の送信データ作成部１２においてクラスタ０のパリティ・データを生成する際に元データ４１１に付加する畳み込みデータ４１２の初期値と同一である。この畳み込みデータ４１２、７１２の初期値は、予めネットワーク３０に接続された全ての送信側端末１０及び受信側端末２０において共有することができるので、通信により喪失することなく追加できる。なお、最初にクラスタ０の受信データが元データを復元するための必要数（ｋ＋ｓ個）だけあるかどうかを調べ、必要数に満たない場合にのみ畳み込みデータ７１２の初期値を追加するようにしても良い。
【００３８】
次に、畳み込みデータ７１２の初期値を付加されたクラスタ０のデータ数が必要数のｋ＋ｓ個以上あるかどうかを調べ、ｋ＋ｓ個以上あれば、クラスタ０をデコードして元データ７１１を得る（ステップ９０２、９０３）。
畳み込みデータ７１２の初期値を付加されたクラスタ０のデータ数がｋ＋ｓ個に満たない場合、データ復元部２２は、次に直前のクラスタがデコード済みかどうかを調べる。クラスタ０の場合はその前に他のクラスタが存在しないので、デコード済みではないと判断し、当該クラスタ０を所定の記憶装置（例えば図２のメインメモリ１０３）に一時的に保持する（ステップ９０４、９０８）。
ステップ９０３でクラスタ０をデコードできたか、もしくはステップ９０８でクラスタ０を保持した後、当該着目クラスタが最後のクラスタかどうかを調べ、次のクラスタがあれば、これを新たな着目クラスタとしてステップ９０２に戻る（ステップ９０９、９１０）。
【００３９】
同様にして、新たな着目クラスタの受信データ数がｋ＋ｓ個以上あるかどうかを調べ、ｋ＋ｓ個以上あれば、着目クラスタをデコードして元データ７１１及び畳み込みデータ７１２を得る（ステップ９０２、９０３）。
着目クラスタの受信データ数がｋ＋ｓ個に満たない場合、データ復元部２２は、次に直前のクラスタがデコード済みかどうかを調べる（ステップ９０４）。そして、直前のクラスタがデコード済みであるならば、当該直前のクラスタにおける復元データをエンコードしたパリティ・データ７２０からｓ個までのデータ７２２を補充データとして取得し、補充する（ステップ９０５）。その上で、データを補充された着目クラスタのデータ数がｋ＋ｓ個以上あるかどうかを改めて調べ、ｋ＋ｓ個以上あれば、データが補完されたので着目クラスタをデコードして元データ７１１及び畳み込みデータ７１２を得る（ステップ９０６、９０７）。
ステップ９０４で直前のクラスタがデコード済みでないと判断された場合、及び直前のクラスタから補充データを補充しても着目クラスタのデータ数がｋ＋ｓ個に満たなかった場合は、当該着目クラスタを所定の記憶装置（例えば図２のメインメモリ１０３）に一時的に保持する（ステップ９０８）。
【００４０】
ステップ９０３またはステップ９０７で着目クラスタをデコードできたか、もしくはステップ９０８で着目クラスタを保持した後、当該着目クラスタが最後のクラスタかどうかを調べ、次のクラスタがあれば、これを新たな着目クラスタとしてステップ９０２に戻る（ステップ９０９、９１０）。
着目クラスタが最後のクラスタであったならば、次にデータ復元部２２は、ステップ９０８で保持した（デコードされていない）クラスタについて、図１０による処理を行う。
【００４１】
図１０を参照すると、データ復元部２２は、記憶装置に保持されているクラスタの１つに着目し（ステップ１００１）、着目クラスタの直後のクラスタがデコード済みかどうかを調べる（ステップ１００２）。直後のクラスタがデコード済みであるならば、そのデコードされた畳み込みデータ７１２を補充データとして取得し、補充する（ステップ１００３）。そして、データを補充された着目クラスタのデータ数がｋ＋ｓ個以上あるかどうかを改めて調べ、ｋ＋ｓ個以上あれば、データが補完されたので着目クラスタをデコードして元データ７１１及び畳み込みデータ７１２を得る（ステップ１００４、１００５）。
以上の処理を、記憶装置に未処理のクラスタが無くなるまで繰り返す（ステップ１００６）。また、直後のクラスタからデータを補充しても着目クラスタのｋ＋ｓ個に満たない場合は、着目クラスタに対するこれ以上のデータの補充はできないので、エラー処理（エラーメッセージの出力等）を行って処理を終了する（ステップ１００７）。
【００４２】
上記の動作において、ステップ１００２で直後のクラスタがデコードされていないと判断した場合、このサイクルで当該着目クラスタはデコードされない。しかし、上記の処理を未処理のクラスタに対して逐次行っていき、当該クラスタの後方のクラスタがデコードされることで、当該クラスタが次に着目クラスタとなった際にデコードされることとなる。この他、図１０に示した、直後のクラスタからデータを補充する操作を、クラスタを受信した順番の逆順に行っていくこととすれば、直後のクラスタが未だデコードされていないためにデータを補充できないということは無くなる（この場合、直後のクラスタがデコードされていないと判断されると、着目クラスタにデータの補充はできないので、エラー処理を行って処理を終了することとなる）。
【００４３】
また、上記の手順は例示に過ぎず、他の手順によってデータを復元しても構わない。例えばｋ＋ｓ個のデータがあるクラスタについて先に元データ７１１及び畳み込みデータ７１２を復元してしまい、その後にｋ＋ｓ個の必要数に満たないクラスタについて前後のクラスタからデータを補充して復元するといった手順とすることもできる。
あるいは、受信した各クラスタにおける元データやパリティの数を調べ、必要数以上有するクラスタと必要数に満たないクラスタとの位置関係及び補充すべきデータの数に基づいて、どのクラスタが前、あるいは後ろのクラスタにいくつデータを供給するか、及びデコード・エンコードの順番を決定する。そして、決定された順番にしたがってエンコード・デコードを行い、必要数に満たないクラスタに補充が必要な数だけのデータを得て、かかるクラスタの元データを復元するといった手順とすることもできる。
さらに、デコード・エンコードの順番を決定する際、エンコード・デコードの計算量やＤｉｓｋＩ／Ｏの手間も考慮することができる。例えば、所定のクラスタ及びその前後のクラスタの受信データ数がいずれも必要数を満たしているならば、当該所定のクラスタにおいて畳み込みデータ７１２は復元する必要が無く、元データ７１１のみを復元する。前のクラスタで受信データが必要数よりも１個不足しているなら、当該所定のクラスタにおいて畳み込みデータ７１２を１個だけ復元する。所定のクラスタの受信データ数が必要数に不足し、その前後のクラスタの受信データが必要数を満たすならば、パリティ・データ７２０におけるデータ７２２を得るよりも畳み込みデータ７１２を得る方が処理に要する手間が少ないので、後のクラスタの畳み込みデータ７１２からデータを補充する。
【００４４】
以上のようにしてデータ復元部２２により復元された元データ（及び受信制御部２１にて受信された元データ）７１１は、送信側端末１０において元のデータファイルをクラスタに分割したものである。したがって、かかる元データは、クラスタへの分割処理の逆変換により連結され、最終的に、送信側端末１０においてファイル格納部１１から読み出されたデータファイルに等しいデータファイルが復元されて、ファイル格納部２３に格納される。
【００４５】
上記のように、本実施の形態は、データ送信の際の処理として、各クラスタに対し、元データに他のクラスタのデータ（パリティ・データ）を付加してエンコードすることにより、パリティ・データを生成し、元データと共に送信する。したがって、受信データが喪失して元データを復元するための必要数に満たない場合でも、当該他のクラスタからデータを補充することによって、元データを復元することが可能となる。
この手法では、図８を参照して説明したように、通信におけるデータの喪失により、部分的に受信データの数が元データの数よりもさらに少ない場合であっても元データの復元を可能とし、ＦＥＣ（Ｆｏｒｗａｒｄ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ）によるデータ通信において、受信成功確率を高め、データ通信の信頼性の向上を図ることができる。
これは逆に、受信成功確率を一定とするならば、パリティ・データ（本実施の形態における送信用パリティ・データ）のデータ数を少なくできることを意味する。すなわち、所定の受信成功確率を満足するデータ通信における冗長度（パリティ・データの割合）を低く抑えることが可能となる。
【００４６】
上述した実施の形態では、送信データを作成する際、所定のクラスタにおけるパリティ・データ４２０のうち、送信用パリティ・データ４２１以外のｓ個のデータ４２２を次のクラスタの元データに付加している（図４参照）。したがって、受信側端末２０では、最後のクラスタについては、その後方のクラスタからデータを補充することができない。すなわち、最後のクラスタのみ受信成功確率が低下することとなる。
そこで、最後のクラスタのみ、元データ４１１と送信用パリティ・データ４２１とからなるｋ＋ｔ個のデータを含む送信データに加えて、パリティ・データ４２０における送信用パリティ・データ４２１以外のｓ個のデータ４２２も送信する。このようにすれば、最後のクラスタについても他のクラスタと同様の補充用のデータが供給されることとなる。なお、最後のクラスタにおけるｓ個のデータ４２２の送信は、当該クラスタのみ、元データ４１１にパリティ・データ４２０の全てを付加したｋ＋ｔ＋ｓ個のデータからなるデータ列を送信データとして送信するようにしても良いし、送信用パリティ・データ４２１を除くｓ個のデータ４２２を別途送信しても良い。さらに、必ずしもｓ個のデータを全て送信しなくても良く、ｔ’＞ｔなるｔ’個のデータを前記元データに付加して送信データを作成して送信することも可能である。
なお、各クラスタの元のデータファイルに対応する並び順や最初のクラスタ、最後のクラスタ等を識別するための情報は、各クラスタを送信する際のパケットのヘッダ等に記述しておき、受信側端末２０においてこのパケットヘッダの記述に基づいて判断できるようにすることができる。
【００４７】
【発明の効果】
以上説明したように、本発明によれば、ＦＥＣによるデータ通信において、配信成功確率を高め、データ通信の信頼性の向上を図ることができる。
また、本発明によれば、ＦＥＣによるデータ通信における冗長度を低く抑えることができる。
【図面の簡単な説明】
【図１】本実施の形態によるデータ通信が行われるネットワークシステムの概略構成を示す図である。
【図２】図１に示した送信側端末及び受信側端末を実現するのに好適なコンピュータ装置のハードウェア構成の例を模式的に示した図である。
【図３】本実施の形態における送信側端末の機能構成を示す図である。
【図４】本実施の形態におけるパリティ・データの生成方法を説明する図である。
【図５】本実施の形態の送信側端末によるデータ送信時の動作を説明するフローチャートである。
【図６】本実施の形態における受信側端末の機能構成を示す図である。
【図７】本実施の形態におけるデコード方法を説明する図である。
【図８】本実施の形態におけるデコード済みのクラスタを利用したデータ補完の様子を説明する図である。
【図９】本実施の形態の受信側端末によるデータ受信時の動作を説明するフローチャートである。
【図１０】本実施の形態の受信側端末によるデータ受信時の動作を説明するフローチャートである。
【図１１】従来技術によるデータ通信方法を説明する図である。
【図１２】従来技術によるパリティ・データの生成方法を示す図である。
【符号の説明】
１０…送信側端末、１１…ファイル格納部、１２…送信データ作成部、１３…送信制御部、２０…受信側端末、２１…受信制御部、２２…データ復元部、２３…ファイル格納部、３０…ネットワーク、１０１…ＣＰＵ、１０２…Ｍ／Ｂチップセット、１０３…メインメモリ、１０５…ハードディスク、１０６…ネットワークインターフェイス
【図１】
2004180074.tif 000003
【図２】
2004180074.tif 000004
【図３】
2004180074.tif 000005
【図４】
2004180074.tif 000006
【図５】
2004180074.tif 000007
【図６】
2004180074.tif 000008
【図７】
2004180074.tif 000009
【図８】
2004180074.tif 000010
【図９】
2004180074.tif 000011
【図１０】
2004180074.tif 000012
【図１１】
2004180074.tif 000013
【図１２】
2004180074.tif 000014