【新規性喪失の例外の表示】特許法第30条第2項適用 「発行者名」 社団法人電子情報通信学会 「刊行物名」 電子情報通信学会技術研究報告 信学技報 vol.111 No.467 「発行年月日」 平成24年3月1日 、「発行者名」 社団法人電子情報通信学会 「刊行物名」 電子情報通信学会2012年総合大会講演論文集 「発行年月日」 平成24年3月6日 、「発行者名」 社団法人電子情報通信学会 「刊行物名」 電子情報通信学会技術研究報告 信学技報 vol.112 No.118 「発行年月日」 平成24年7月5日
(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
従来、TVの生中継、緊急報道等の映像伝送で用いられている無線伝送システムとして、FPU(Field Pick-up Unit)が知られており、VTR及びカメラの映像はファイルベース化が進められている。FPUシステムによってファイルベース化された映像ファイルを伝送するためには、映像ファイルを映像の伝送信号に変換する必要があり(例えば、非特許文献1を参照)、映像伝送に実時間がかかってしまうという問題があった。また、FPUシステムは、地上での伝送だけでなくヘリコプター等からの伝送にも利用されることから、より強固な誤り制御システムが必要であるという問題もあった。
【0003】
これらの問題を解決するために、映像ファイルを映像の伝送信号に変換することなく、映像ファイルの状態でそのまま伝送する新たな無線伝送システムとして、マイクロ波帯FPUシステムの開発が進められている(例えば、非特許文献2を参照)。
【0004】
この新たなFPUシステムは、FDD(Frequency Division Duplex:周波数分割複信)のような方式ではなく、システムの周波数帯の変更を伴わずに送受信を行うTDD(Time Division Duplex:時分割複信)方式を基本とした半二重伝送を採用している。
【0005】
図18は、従来のFPUシステムによるネットワークの全体構成を示す概略図である。この従来のFPUシステムによるネットワークは、撮像装置100、送信装置101、受信装置102及びデータ蓄積装置103を備えて構成される。このFPUシステムによる映像ファイルの無線伝送は、TDD方式を想定しており、映像ファイルの伝送誤りに対して再送制御を実現する。具体的には、カメラ等の撮像装置100により撮影された映像がファイル化され、映像ファイルとして送信装置101及び受信装置102を介してデータ蓄積装置103へ伝送される。伝送した映像ファイルに伝送誤りが発生したときには、再送要求が返信され、再送処理が行われる。
【0006】
撮像装置100は、撮影した映像をファイル化し、映像ファイルのデータを送信装置101へ伝送する。また、撮像装置100は、送信装置101から再送要求を受信した場合、再送要求の対象となる映像ファイルのデータを送信装置101へ伝送する。
【0007】
送信装置101は、FPUを備えており、撮像装置100から映像ファイルのデータを受信し、受信した映像ファイルのデータを無線媒体として受信装置102へ伝送すると共に、受信装置102から再送要求を受信した場合、再送要求の対象となる映像ファイルのデータを受信装置102へ伝送する。また、送信装置101は、撮像装置100から映像ファイルのデータを受信できなかった場合、再送要求を撮像装置100へ送信し、再送要求の対象となる映像ファイルのデータを撮像装置100から受信する。
【0008】
受信装置102は、FPUを備えており、送信装置101から映像ファイルのデータを受信し、受信した映像ファイルのデータをデータ蓄積装置103へ伝送すると共に、データ蓄積装置103から再送要求を受信した場合、再送要求の対象となる映像ファイルのデータをデータ蓄積装置103へ伝送する。また、受信装置102は、送信装置101から映像ファイルのデータを受信できなかった場合、再送要求を送信装置101へ送信し、再送要求の対象となる映像ファイルのデータを送信装置101から受信する。
【0009】
データ蓄積装置103は、受信装置102から映像ファイルのデータを受信し、受信した映像ファイルのデータを記憶装置に格納すると共に、受信装置102から映像ファイルのデータを受信できなかった場合、再送要求を受信装置102へ送信し、再送要求の対象となる映像ファイルのデータを受信装置102から受信する。
【0010】
図19は、従来のFPUシステムにおけるSR(Selective-Repeat)方式による再送制御を説明するタイムチャートである。一般に、代表的な再送制御方式としてSR方式が知られている(例えば、非特許文献3を参照)。このSR方式では、
図19に示すように、送信側から受信側へ、連続した映像ファイルのデータパケットを伝送する。受信側は、送信側から最終パケットを受信したときに、または、最終パケットの受信完了がない場合は一定期間待機してタイムアウトになったときに、受信したデータパケットのシーケンス番号を付加したNACK(Negative Acknowledgment)を送信側へ通知する。このようにして、受信側から送信側へ再送要求が行われる。例えば、
図19の例では、受信側は、最終パケットの受信完了がなくタイムアウトになったときに、シーケンス番号#1,#4,・・・,#n−3のデータパケットを受信したことを判定し、当該シーケンス番号を付加したNACKを送信側へ通知する。
【0011】
送信側は、受信側からNACKを受信すると、NACKに付加されたシーケンス番号から再送要求の対象となるデータパケットを特定し、特定したデータパケットのみを受信側へ再送する。前述の例では、送信側は、受信したNACKに従って、再送要求の対象となるデータパケットがシーケンス番号#1,#4,・・・,#n−3以外のシーケンス番号#2,#3,#n−2,#n−1,#nのデータパケットであると特定し、これらのデータパケットのみを受信側へ再送する。
【0012】
受信側は、NACKを送信側へ通知した後に一定期間待機しても、再送要求の対象となるデータパケットの受信が確認されない場合、再度NACKを通知する。送信側は、受信したNACKに付加されたシーケンス番号に基づいて、受信側が全てのシーケンス番号のデータパケットを受信したことを判定すると、当該映像ファイルについてデータパケットの再送を行わない。また、送信側は、最終パケットを送信した後にNACKを受信しない場合には、データパケットの再送を行わない。以下、送信側を送信装置101とし、受信側を受信装置102として説明する。
【0013】
図20は、従来の送信装置101の処理を示すフローチャートである。まず、送信装置101は、映像ファイルから複数の送信用のデータを生成し(ステップS1)、各データにシーケンス番号をインクリメントして付与し(n=n+1,初期値n=0)、シーケンス番号を付与したデータをキュー(Queue)に格納する(ステップS2)。そして、送信装置101は、キューからデータを、小さいシーケンス番号から順番にコピーして読み出し(ステップS3)、読み出したデータをデータパケット化して無線媒体として受信装置102へ送信する(ステップS4)。
【0014】
送信装置101は、最終シーケンス番号のデータ(最終パケット)を送信したか否かを判定し(ステップS5)、最終シーケンス番号のデータを送信するまで、前記ステップS3及びステップS4の処理を繰り返し、最終シーケンス番号のデータを送信した後、NACKの受信を待つ(ステップS6)。
【0015】
送信装置101は、NACKを受信した後、再送データがあるか否かを判定する(ステップS7)。送信装置101は、NACKに付加された情報(受信装置102にて受信したデータのシーケンス番号)に基づいて、受信装置102が全てのデータの受信を完了しておらず、再送データがあると判定した場合、NACKに付加された情報が示すシーケンス番号以外のシーケンス番号のデータ(再送対象のデータ)をキューからコピーして読み出し(ステップS8)、読み出したデータをデータパケット化して受信装置102へ再送する(ステップS9)。そして、ステップS6へ移行してNACKの受信を待つ。
【0016】
送信装置101は、ステップS6において、NACKに付加された情報が示すシーケンス番号に基づいて、受信装置102が全てのデータの受信を完了しており、再送データがないと判定した場合、キューに格納されたデータを削除し(ステップS10)、処理を終了する。
【0017】
図21は、従来の受信装置102の処理を示すフローチャートである。まず、受信装置102は、送信装置101から送信されたデータ(データパケット)の受信を開始し(ステップS11)、連続でデータを受信しているか否かを判定する(ステップS12)。受信装置102は、ステップS12において、連続してデータを受信していると判定した場合、受信したデータに付与されたシーケンス番号を記憶手段に格納し(ステップS13)、受信したデータに付与されたシーケンス番号が最終シーケンス番号であるか否か、または、再送データを受信したときに再送データの受信が完了したか否かを判定する(ステップS14)。
【0018】
受信装置102は、ステップS14において、最終シーケンス番号でないと判定した場合、または、再送データを受信したときに再送データの受信が完了していないと判定した場合、ステップS12へ移行する。一方、受信装置102は、ステップS14において、最終シーケンス番号であると判定した場合、または、再送データを受信したときに再送データの受信が完了したと判定した場合、ステップS19へ移行する。
【0019】
受信装置102は、ステップS12において、連続してデータを受信していないと判定した場合(受信誤りが生じた場合)、任意の一定期間のNACKタイマを起動し(ステップS15)、後続のデータを受信したか否かを判定する(ステップS16)。受信装置102は、ステップS16において、後続のデータを受信したと判定した場合、NACKタイマを停止し(ステップS17)、ステップS13へ移行する。一方、受信装置102は、ステップS16において、後続のデータを受信していないと判定した場合、NACKタイマがタイムアウトするか否かを判定し(ステップS18)、タイムアウトしていないと判定した場合、ステップS16へ移行する。受信装置102は、NACKタイマがタイムアウトするまで待ち、タイムアウトした場合にはステップS19へ移行する。
【0020】
受信装置102は、ステップS14から移行して(受信したデータに付与されたシーケンス番号が最終シーケンス番号であると判定した場合、または、再送データを受信したときに再送データの受信が完了したと判定した場合)、または、ステップS18においてタイムアウトしたと判定した場合、NACKを送信装置101へ送信し(ステップS19)、処理を終了する。具体的には、受信装置102は、ステップS13にて記憶手段に格納したシーケンス番号(受信したデータに付与されていたシーケンス番号)をNACKに付加し、NACKを送信装置101へ送信する。
【発明を実施するための形態】
【0038】
以下、本発明を実施するための形態について図面を用いて詳細に説明する。本発明による第1の実施形態(実施例1)は、送信装置が、映像ファイルのデータパケットの順序を逆にし、最終パケットから先頭パケットの順番にデータパケットを送信し、受信装置が、最初のデータパケットを受信した際に、最後のデータパケットを受信する受信終了時間を予測し、受信終了時間に再送要求(I(Instantaneous)−NACK)を通知することを特徴とする。また、第2の実施形態(実施例2)は、実施例1において、送信装置が、データパケットを送信する際に、シーケンス番号に加えて送信回数も送信し、再送の際に、新規の映像ファイルのデータパケットを送信した後に再送対象のデータパケットを送信し、受信装置が、最初のデータパケットを受信した際に、再送対象のデータパケットも含めた受信終了時間を予測する。また、第3の実施形態(実施例3)は、実施例2における送信回数の代わりに、映像ファイルに対応するブロック番号を送信する。尚、ブロックとは、映像ファイルのデータをデータパケット化して送信する際に、映像ファイルに対する1回のバースト送信の単位をいう。
【0039】
〔実施例1〕
まず、実施例1について説明する。
図1は、実施例1の再送制御を説明するタイムチャートである。送信装置1−1は、映像ファイルを構成する各データにシーケンス番号#1〜#nを付与し、最終のシーケンス番号#nのデータパケット(最終パケット)から最初のシーケンス番号#1のデータパケット(先頭パケット)までを順番に、受信装置2−1へ連続してバースト送信する。
【0040】
受信装置2−1は、送信装置1−1から最初のデータパケットを受信した際に、そのデータパケットのデータに付与されたシーケンス番号#nから、送信装置1−1から送信される全てのデータパケットの数を検知し、最終のデータパケットを受信する受信終了時間を予測する。そして、受信装置2−1は、I−NACKタイマを起動して受信終了時間になったときに、受信した全てのデータパケットのシーケンス番号を付加したI−NACKを送信装置1−1へ送信する。受信装置2−1は、再送対象のデータパケットの数を記憶する。
【0041】
送信装置1−1は、受信装置2−1からI−NACKを受信すると、I−NACKに付加されたシーケンス番号から再送対象のデータパケットを特定し、特定したデータパケットを再送する。
【0042】
受信装置2−1は、送信装置1−1から再送対象のデータパケットを受信すると、記憶していた再送対象のデータパケットの数から、最終のデータパケットを受信する受信終了時間を予測し、前述と同様に、受信終了時間になったときに、I−NACKを送信装置1−1へ送信する。
【0043】
図1に示した例では、送信装置1−1から合計n個のデータパケットが送信され、シーケンス番号#n−1,#n−2,#3,#2,#1のデータパケットに受信誤りが生じた場合を示している。受信装置2−1は、送信装置1−1から最初のシーケンス番号#nを受信した際に、シーケンス番号#nから全てのデータパケットの数nを検知し、受信終了時間を予測する。そして、受信装置2−1は、受信終了時間になったときに、受信済みのデータパケットのシーケンス番号#n,#n−3,・・・,#4を付加したI−NACKを送信装置1−1へ送信する。送信装置1−1は、I−NACKを受信すると、I−NACKに付加されていないシーケンス番号#n−1,#n−2,#3,#2,#1のデータパケットに受信誤りが生じたと判定し、これらのデータパケットを再送する。再送するデータパケットの順番は、同様に、シーケンス番号の大きい順である。受信装置2−1は、送信装置1−1から最初のデータパケットを受信した際に、記憶していた再送対象のデータパケットの数から受信終了時間を予測する。そして、受信装置2−1は、受信終了時間になったときに、受信済みのデータパケットのシーケンス番号#n−1,#n−2,#3,#2,#1を付加したI−NACKを送信装置1−1へ送信する。このように、受信装置2−1が全てのデータパケットを受信するまで、これらの処理が繰り返される。
【0044】
このように、実施例1の再送制御によれば、送信装置1−1は、データにシーケンス番号を付与し、シーケンス番号の大きい順にデータパケットを送信するようにした。これにより、受信装置2−1は、I−NACKを送信するタイミングを、最初に受信したデータパケットのシーケンス番号に基づいて設定することができる。したがって、受信装置2−1において、I−NACKを送信するための待機時間の短縮を図ることができ、I−NACKを送信するまでの時間が延びることなく、データ伝送時間を低減し、無線帯域の利用効率を向上させることが可能となる。
【0045】
また、受信装置2−1は、送信装置1−1から送信された最終のパケットに受信誤りが生じた場合であっても、既に受信している最初のデータパケットから受信終了時間を予測しているから、I−NACKを送信するタイミングが遅れることはなく、無線帯域の利用効率が低下することがない。
【0046】
また、受信装置2−1は、送信装置1−1から再送対象のデータパケットを受信すると、I−NACKを送信するタイミングを、記憶していた再送対象のデータパケットの数から設定するようにした。これにより、前述と同様に、I−NACKを送信するための待機時間の短縮を図ることができ、I−NACKを送信するまでの時間が延びることなく、データ伝送時間を低減し、無線帯域の利用効率を向上させることが可能となる。
【0047】
(送信装置の構成/実施例1)
次に、実施例1による送信装置1−1の構成について説明する。
図2は、送信装置1−1の構成を示すブロック図である。この送信装置1−1は、送信用データ生成・シーケンス番号付与部10、データ記憶部11、データ読出部12、送信部13、受信部14及び再送制御部15を備えている。
【0048】
送信用データ生成・シーケンス番号付与部10は、送信対象の映像ファイルを入力し、映像ファイルを複数のデータに分割して送信用のデータを生成し、生成した各データにシーケンス番号を付与する。送信用データ生成・シーケンス番号付与部10は、シーケンス番号を付与した各データをデータ記憶部11に格納する。
【0049】
データ記憶部11には、シーケンス番号が付与された各データが記憶される。
図2の例では、映像ファイルがn個のデータに分割され、シーケンス番号#1〜#nが付与されたデータが順番にデータ記憶部11のキューに格納されている。
【0050】
データ読出部12は、データ記憶部11から、シーケンス番号の大きい順に全てのデータを読み出す。
図2の例では、シーケンス番号#n〜#1の順にデータが読み出される。また、データ読出部12は、再送制御部15から再送シーケンス番号を入力した場合には、データ記憶部11から、再送シーケンス番号の大きい順に再送シーケンス番号の示す全てのデータを読み出す。
【0051】
送信部13は、データ読出部12からデータを入力し、データパケットを生成し、シーケンス番号の大きい順にデータパケットを受信装置2−1へ送信する。
図2の例では、シーケンス番号#n〜#1の順にデータパケットが送信される。
【0052】
受信部14は、受信装置2−1からI−NACKを受信し、I−NACKに付加されているシーケンス番号(受信済みシーケンス番号)を抽出する。この受信済みシーケンス番号は、受信装置2−1が受信した全てのデータパケットのシーケンス番号を示している。
【0053】
再送制御部15は、受信部14から受信済みシーケンス番号を入力し、受信済みシーケンス番号から、映像ファイルの各データに付与されたシーケンス番号のうち受信済みでないシーケンス番号を再送シーケンス番号として特定する。この場合、再送制御部15は、映像ファイルから生成された各データの全てのシーケンス番号及び受信済みシーケンス番号を管理している。再送制御部15は、再送シーケンス番号を特定できない場合、受信装置2−1が全てのデータパケットを受信したと判定し、データ記憶部11に格納された全てのデータを削除する。一方、再送制御部15は、再送シーケンス番号を特定した場合、受信装置2−1が受信していないデータパケットがあると判定し、再送シーケンス番号をデータ読出部12に出力する。これにより、再送シーケンス番号のデータパケットが再送される。
【0054】
(送信装置の処理/実施例1)
次に、実施例1による送信装置1−1の処理について説明する。
図3は、送信装置1−1の処理を示すフローチャートである。送信装置1−1による映像ファイルの送信処理が開始すると、送信用データ生成・シーケンス番号付与部10は、映像ファイルから複数の送信用のデータを生成し(ステップS301)、各データにシーケンス番号をインクリメントして付与し(n=n+1,初期値n=0)、シーケンス番号を付与したデータをデータ記憶部11のキューに格納する(ステップS302)。そして、データ読出部12は、キューから、大きいシーケンス番号順にデータをコピーして読み出し(ステップS303)、送信部13は、データ読出部12により読み出されたデータをデータパケット化し、無線媒体として受信装置2−1へ送信する(ステップS304)。
【0055】
送信部13は、最も小さいシーケンス番号#1のデータを送信したか否を判定し(ステップS305)、最も小さいシーケンス番号#1のデータを送信したと判定した場合(ステップS305:YES)、ステップS306へ移行し、最も小さいシーケンス番号#1のデータを送信していないと判定した場合(ステップS305:NO)、ステップS303へ移行する。このように、送信装置1−1は、最も小さいシーケンス番号#1のデータを送信するまで、データ読出部12によるステップS303の処理及び送信部13によるステップS304の処理を繰り返す。
【0056】
受信部14は、ステップS305から移行して(送信部13により最も小さいシーケンス番号#1のデータが送信された後)、受信装置2−1からI−NACKを受信したか否かを判定する(ステップS306)。受信部14は、I−NACKを受信していないと判定した場合(ステップS306:NO)、I−NACKを受信するまで待つ。
【0057】
受信部14は、ステップS306において、I−NACKを受信したと判定した場合(ステップS306:YES)、再送制御部15は、I−NACKに付加された受信済みシーケンス番号から受信済みでないシーケンス番号を特定し、再送データがあるかないかを判定する(ステップS307)。
【0058】
再送制御部15は、ステップS307において、受信装置2−1が全てのデータの受信を完了しておらず、再送データがあると判定した場合(ステップS307:YES)、データ読出部12は、キューから、受信済みでないシーケンス番号が示す全てのデータを、大きいシーケンス番号順にコピーして読み出し(ステップS308)、送信部13は、データ読出部12により読み出されたデータをデータパケット化し、無線媒体として受信装置2−1へ再送する(ステップS309)。そして、ステップS306へ移行し、I−NACKの受信を待つ。このように、再送データがなくなるまで、ステップS308、ステップS309、ステップS306及びステップS307の処理を繰り返す。
【0059】
再送制御部15は、ステップS307において、受信装置2−1が全てのデータの受信を完了しており、再送データがないと判定した場合(ステップS307:NO)、キューのデータを削除する(ステップS310)。これにより、送信装置1−1による映像ファイルの送信処理は終了し、開始から繰り返される。
【0060】
(受信装置の構成/実施例1)
次に、実施例1による受信装置2−1の構成について説明する。
図4は、受信装置2−1の構成を示すブロック図である。この受信装置2−1は、受信部20、データ記憶部21、データ読出部22、I−NACKタイマ処理部23、シーケンス番号記憶部24、シーケンス番号読出部25及び送信部26を備えている。
【0061】
受信部20は、送信装置1−1からデータパケットを受信すると、データパケットからデータを抽出し、データに付与されたシーケンス番号を抽出する。受信部20は、送信装置1−1によるデータパケットの連続したバースト送信の中で、最初に受信したデータパケットのシーケンス番号をI−NACKタイマ処理部23に出力する。また、受信部20は、抽出したデータ(シーケンス番号が付与されたデータ)をデータ記憶部21に格納すると共に、抽出したシーケンス番号をシーケンス番号記憶部24に格納する。
【0062】
データ記憶部21には、受信したデータパケットの各データが記憶される。
図4の例では、受信したデータパケットについてのシーケンス番号#n,#n−3,・・・,#4の各データが順番にデータ記憶部21のキューに格納されている。この例は、
図1に示したように、送信装置1−1から合計n個のデータパケットが送信され、シーケンス番号#n−1,#n−2,#3,#2,#1のデータパケットに受信誤りが生じ、シーケンス番号#n,#n−3,・・・,#4のデータパケットを正しく受信した場合を示している。
【0063】
データ読出部22は、データ記憶部21に映像ファイルを構成する全てのデータが格納された場合、データ記憶部21から、シーケンス番号の小さい順に全てのデータを読み出し、これらのデータを合成して元の映像ファイルを生成し、生成した映像ファイルを出力する。
【0064】
I−NACKタイマ処理部23は、受信部20から最初に受信したデータパケットのシーケンス番号を入力し、シーケンス番号読出部25から再送データ数を入力し、入力した再送データ数が0であり、受信データが再送データでないと判定した場合、入力したシーケンス番号に基づいて受信終了時間を予測し、予測した受信終了時間をI−NACKタイマの設定値に設定してI−NACKタイマを起動する。一方、I−NACKタイマ処理部23は、入力した再送データ数が0でなく、受信データが再送データであると判定した場合、再送データ数に基づいて受信終了時間を予測し、予測した受信終了時間をI−NACKタイマの設定値に設定してI−NACKタイマを起動する。I−NACKタイマ処理部23は、I−NACKタイマがタイムアウトしたときに、タイムアウトをシーケンス番号読出部25に出力する。
【0065】
シーケンス番号記憶部24には、受信したデータパケットについてのシーケンス番号が記憶される。
図4の例では、受信したデータパケットについてのシーケンス番号#n,#n−3,・・・,#4が順番にデータ記憶部24のキューに格納されている。この例は、データ記憶部21に格納されたデータに対応している。
【0066】
シーケンス番号読出部25は、I−NACKタイマ処理部23からタイムアウトを入力したとき、シーケンス番号記憶部24に格納されたシーケンス番号を読み出して受信済みシーケンス番号に設定し、受信済みシーケンス番号を送信部26に出力する。また、シーケンス番号読出部25は、シーケンス番号記憶部24からシーケンス番号を読み出した後、シーケンス番号記憶部24のシーケンス番号を削除する。シーケンス番号読出部25は、受信済みシーケンス番号に基づいて、送信装置1−1から送信された全てのデータの受信が完了していないと判定した場合、受信が完了していないデータ数を再送データ数としてI−NACKタイマ処理部23に出力する。一方、シーケンス番号読出部25は、送信装置1−1から送信された全てのデータの受信が完了していると判定した場合、再送データ数0をI−NACKタイマ処理部23に出力する。この場合、シーケンス番号読出部25は、送信装置1−1から送信された全てのデータのシーケンス番号及び受信済みシーケンス番号を管理している。
【0067】
送信部26は、シーケンス番号読出部25から受信済みシーケンス番号を入力し、入力した受信済みシーケンス番号を付加したI−NACKを送信装置1−1へ送信する。この受信済みシーケンス番号は、受信装置2−1が受信した全てのデータパケットのシーケンス番号を示している。
図4の例では、シーケンス番号#n,#n−3,・・・,#4が付加されたI−NACKが送信される。
【0068】
(受信装置の処理/実施例1)
次に、実施例1による受信装置2−1の処理について説明する。
図5は、その処理を示すフローチャートである。受信装置2−1による映像ファイルの受信処理が開始すると、受信部20は、送信装置1−1からのデータパケットの送信に伴って、データパケットの受信を開始する(ステップS501)。I−NACKタイマ処理部23は、再送データ数に基づいて、受信データが再送データであるか否かを判定する(ステップS502)。
【0069】
I−NACKタイマ処理部23は、ステップS502において、受信データが再送データでないと判定した場合(ステップS502:NO)、最初に受信したデータパケットのシーケンス番号を取得し(ステップS503)、取得したシーケンス番号及び予め設定された1データの伝送時間から、受信終了時間を予測し、予測した受信終了時間をI−NACKタイマの設定値に設定し、I−NACKタイマを起動する(ステップS504)。一方、I−NACKタイマ処理部23は、ステップS502において、受信データが再送データであると判定した場合(ステップS502:YES)、再送データ数及び予め設定された1データの伝送時間から、受信終了時間を予測し、予測した受信終了時間をI−NACKタイマの設定値に設定し、I−NACKタイマを起動する(ステップS505)。受信終了時間は、シーケンス番号または再送データ数に1データの伝送時間を乗算することにより算出される。
【0070】
受信部20は、ステップS504またはステップS505から移行して、受信したデータパケットのシーケンス番号をシーケンス番号記憶部24に格納する(ステップS506)。これにより、データパケットを受信する毎に、シーケンス番号がシーケンス番号記憶部24に格納される。
【0071】
I−NACKタイマ処理部23は、I−NACKタイマがタイムアウトしたか否かを判定し(ステップS507)、タイムアウトしていないと判定した場合(ステップS507:NO)、ステップS506へ移行し、タイムアウトするまで待つ。一方、I−NACKタイマ処理部23は、ステップS507において、タイムアウトしていると判定した場合(ステップS507:YES)、シーケンス番号読出部25は、シーケンス番号記憶部24からシーケンス番号を読み出して受信済みシーケンス番号に設定し、送信部26は、受信済みシーケンス番号を付加したI−NACKを送信装置1−1へ送信する(ステップS508)。これにより、受信装置2−1による映像ファイルの受信処理は終了し、開始から繰り返される。
【0072】
〔実施例2〕
次に、実施例2について説明する。
図6は、実施例2の再送制御を説明するタイムチャートである。送信装置1−2は、映像ファイルを構成する各データにシーケンス番号#1〜#nを付与すると共に、送信回数1を付与し、最終のシーケンス番号#nのデータパケット(最終パケット)から最初のシーケンス番号#1のデータパケット(先頭パケット)までを順番に、受信装置2−2へ連続してバースト送信する。尚、送信装置1−2は、データパケットを再送する際にも、再送するデータパケットに送信回数(2,3,・・・)を付与する。受信装置2−2は、受信したデータパケットの送信回数に基づいて、新規の映像ファイルのデータパケットであるか再送のデータパケットであるかを判定することができる。
【0073】
受信装置2−2は、送信装置1−2から新規の映像ファイルのデータパケットのみを受信した場合(送信回数1のデータパケットを受信した場合)、最初に受信したデータパケットのデータに付与されたシーケンス番号#nから、送信装置1−2から送信される全てのデータパケットの数を検知し、最終のデータパケットを受信する受信終了時間を予測する。そして、受信装置2−2は、I−NACKタイマを起動して受信終了時間になったときに、受信した全てのデータパケットについての送信回数及びシーケンス番号を付加したI−NACKを送信装置1−2へ送信する。受信装置2−2は、再送対象のデータパケットの数を記憶する。
【0074】
送信装置1−2は、受信装置2−2からI−NACKを受信すると、I−NACKに付加された送信回数及びシーケンス番号から再送対象のデータパケットを特定し、再送対象のデータパケットに対して送信回数を付与し(例えば、2回目の送信のときは送信回数2を付与し)、新規の映像ファイルのデータパケットをシーケンス番号の大きい順に送信し、続いて再送対象のデータパケットをシーケンス番号の大きい順に送信する。
【0075】
受信装置2−2は、新規のデータパケットに加え再送のデータパケットを受信すると、最初に受信した新規のデータパケットのデータに付与されたシーケンス番号#n及び再送データ数から、送信装置1−2から送信される全てのデータパケットの数を検知し、最終のデータパケットを受信する受信終了時間を予測する。そして、受信装置2−2は、I−NACKタイマを起動して受信終了時間になったときに、受信した全てのデータパケットについての送信回数及びシーケンス番号を付加したI−NACKを送信装置1−2へ送信する。この場合、受信装置2−2は、再送対象のデータパケットの数を記憶する。
【0076】
図6に示した例では、送信装置1−2から第1ブロックとして送信回数1を付与した合計n個のデータパケットが送信され、シーケンス番号#n−1,#1のデータパケットに受信誤りが生じた場合を示している。受信装置2−2は、受信終了時間になったときに、受信済みのデータパケットの送信回数1及びシーケンス番号#n,#n−2,・・・,#2を付加したI−NACKを送信装置1−2へ送信する。送信装置1−2は、I−NACKを受信すると、I−NACKに付加されていない送信回数1のシーケンス番号#n−1,#1のデータパケットに受信誤りが生じたと判定し、これらのデータパケットに送信回数2を付与する。そして、送信装置1−2は、第2ブロックとして送信回数1を付与した合計m個のデータパケットを送信した後に、送信回数2を付与したデータパケット(第1ブロックのシーケンス番号#n−1,#1のデータパケット)を再送する。再送するデータパケットの順番は、同様に、シーケンス番号の大きい順であり、受信装置2−2が全てのデータパケットを受信するまで、これらの処理が繰り返される。
【0077】
このように、実施例2の再送制御によれば、送信装置1−2は、データに送信回数及びシーケンス番号を付与し、新規のデータパケットをシーケンス番号の大きい順に送信し、その後に、再送対象のデータパケットをシーケンス番号の大きい順に送信するようにした。これにより、受信装置2−2は、I−NACKを送信するタイミングを、新規に受信したデータパケットのシーケンス番号及び再送されたデータパケットの再送データ数に基づいて設定することができる。したがって、受信装置2−2において、実施例1と同様に、I−NACKを送信するための待機時間の短縮を図ることができ、I−NACKを送信するまでの時間が延びることなく、データ伝送時間を低減し、無線帯域の利用効率を向上させることが可能となる。
【0078】
また、受信装置2−2は、実施例1と同様に、送信装置1−2から送信された最終のパケットに受信誤りが生じた場合であっても、最初のデータパケットを受信したときに既に受信終了時間を予測しているから、I−NACKを送信するタイミングが遅れることはなく、無線帯域の利用効率が低下することがない。
【0079】
また、受信装置2−2は、再送データの受信を待つことなく、次の映像ファイルのデータを受信することができるから、無線帯域の利用効率を一層向上させることが可能となる。また、データに送信回数を付与したデータパケット、及び送信回数を付加したI−NACKを送受信するようにしたから、再送回数を簡易に管理することができる。例えば、異なるアプリケーションまたはコンテンツをキュー毎に格納することで、複数のアプリケーションまたはコンテンツの送受信処理を容易に実現することが可能となる。
【0080】
(送信装置の構成/実施例2)
次に、実施例2による送信装置1−2の構成について説明する。
図7は、送信装置1−2の構成を示すブロック図である。この送信装置1−2は、送信用データ生成・シーケンス番号付与部16、データ記憶部17、データ読出部12、送信部13、受信部18及び再送制御部19を備えている。送信用データ生成・シーケンス番号付与部16は送信回数付与部160を備え、再送制御部19は送信回数付与部190を備えている。
【0081】
送信用データ生成・シーケンス番号付与部16は、送信対象の映像ファイルを入力し、映像ファイルを複数のデータに分割して送信用のデータを生成し、生成した各データにシーケンス番号を付与する。また、送信用データ生成・シーケンス番号付与部16の送信回数付与部160は、生成した各データに送信回数1を付与する。送信回数は、当該送信装置1−2が分割したデータをデータパケットに格納して送信する回数を示す、再送する場合は、再送の送信回数に応じて送信回数2,3,・・・が付与される。受信装置2−2は、データに付与された送信回数に基づいて、新規のデータであるか再送対象のデータであるかを判定することができる。送信用データ生成・シーケンス番号付与部16は、送信回数及びシーケンス番号を付与した各データをデータ記憶部17に格納する。
【0082】
データ記憶部17には、送信回数及びシーケンス番号が付与された各データが記憶される。
図7の例では、第1ブロックのキューに、映像ファイルがn個のデータに分割され、送信回数1及びシーケンス番号#1〜#nが付与されたデータが順番に格納されている。また、第2ブロックのキューに、映像ファイルがm個のデータに分割され、送信回数1及びシーケンス番号#1〜#mが付与されたデータが順番に格納されている。データ記憶部17に格納されたデータの送信回数は、データが再送される際に再送制御部19の送信回数付与部190により更新される。
【0083】
データ読出部12は、
図2に示した実施例1の送信装置1−1と同様に、データ記憶部17から、所定ブロックについて、シーケンス番号の大きい順に全てのデータを読み出す。
図7の例では、第1ブロックにおいてシーケンス番号#n〜#1の順にデータが読み出され、第2ブロックにおいてシーケンス番号#m〜#1の順にデータが読み出される。また、データ読出部12は、再送制御部19から送信回数及び再送シーケンス番号を入力した場合には、データ記憶部17から、当該送信回数及び再送シーケンス番号が付与された全てのデータを再送シーケンス番号の大きい順に読み出す。
【0084】
送信部13は、
図2に示した実施例1の送信装置1−1と同様に、データ読出部12からデータを入力し、データパケットを生成し、シーケンス番号の大きい順にデータパケットを受信装置2−2へ送信する。
図6の例では、第1ブロックのバースト送信において、シーケンス番号#n〜#1の順にデータパケットが送信され、第2ブロックのバースト送信において、新規のデータについてシーケンス番号#m〜#1の順にデータパケットが送信され、その後に、第1ブロックの再送対象のデータパケットが送信される。
【0085】
受信部18は、受信装置2−2からI−NACKを受信し、I−NACKに付加されている送信回数及びシーケンス番号(受信済みシーケンス番号)を抽出する。この受信済みシーケンス番号は、当該送信回数のブロックにおいて、受信装置2−2が受信した全てのデータパケットのシーケンス番号を示している。送信回数及び受信済みシーケンス番号によって、再送対象のデータが特定される。
【0086】
再送制御部19は、受信部18から送信回数及び受信済みシーケンス番号を入力し、送信回数からブロックを特定し、受信済みシーケンス番号から、そのブロックの各データに付与されたシーケンス番号のうち受信済みでないシーケンス番号を再送シーケンス番号として特定する。再送制御部19は、そのブロックの受信済みシーケンス番号のデータをデータ記憶部17から削除する。再送制御部19は、再送シーケンス番号を特定できない場合、受信装置2−2がそのブロックにおける全てのデータパケットを受信したと判定し、データ記憶部17に格納されたそのブロックのデータを削除する。一方、再送制御部19は、再送シーケンス番号を特定した場合、受信装置2−2が受信していないデータパケットがあると判定し、送信回数付与部190が、再送対象のデータに新たな送信回数を付与する。具体的には、送信回数付与部190は、データ記憶部17に格納された当該ブロックの再送対象のデータに付与された送信回数をインクリメントして更新する。そして、再送制御部19は、更新した送信回数及び再送シーケンス番号をデータ読出部12に出力する。これにより、当該ブロックの再送シーケンス番号のデータパケットが再送される。再送されるデータに対し、例えば2回目の送信の場合は送信回数2に更新され、3回目の送信の場合は送信回数3に更新される。
【0087】
図8は、
図7に示したデータ記憶部17に格納されたデータの送信回数及びシーケンス番号の遷移を説明する図である。この遷移は、
図6に示した再送制御の例に対応している。まず、データ記憶部17には、第1ブロックのデータとして、送信回数1及びシーケンス番号#1〜#nの新規データが格納されており、送信部13は、シーケンス番号の大きい順に、送信回数及びシーケンス番号が付与されたデータをデータパケット化し、受信装置2−2へ送信する。
【0088】
そして、送信したデータパケットのうち送信回数1及びシーケンス番号#n−1,#1のデータパケットに受信誤りが生じ、受信装置2−2から(送信回数,受信済みシーケンス番号)=(1,#n)(1,#n−2)・・・(1,#3)(1,#2)が付加されたI−NACKが送信されたとする。
【0089】
再送制御部19は、I−NACKから抽出された送信回数1から第1ブロックを特定し、受信済みシーケンス番号#n,#n−2,・・・,#3,#2から、第1ブロックのシーケンス番号#n〜#1のうち受信済みでないデータのシーケンス番号#n−1,#1を再送シーケンス番号として特定する。再送制御部19は、受信装置2−2がシーケンス番号#n−1,#1のデータパケットを受信しておらず、第1ブロックについて再送データがあると判定し、送信回数付与部190が、データ記憶部17に格納された第1ブロックのデータについて、シーケンス番号#n−1,#1における送信回数1を送信回数2に更新する。また、再送制御部19は、データ記憶部17に格納された第1ブロックのデータについて、受信済みのシーケンス番号#n,#n−2,・・・,#3,#2のデータを削除する。
【0090】
一方、データ記憶部17には、第2ブロックのデータとして、送信回数1及びシーケンス番号#1〜#mの新規データが格納されている。送信部13は、第2ブロックの新規データについて、シーケンス番号の大きい順に、送信回数1及びシーケンス番号#m〜#1が付与されたデータをデータパケット化し、受信装置2−2へ送信し、さらに、第1ブロックの再送対象のデータについて、シーケンス番号の大きい順に、送信回数2及びシーケンス番号#n−1,#1が付与されたデータをデータパケット化し、受信装置2−2へ送信する。
【0091】
そして、送信したデータパケットのうち送信回数1及びシーケンス番号#m−1のデータパケットに受信誤りが生じ、受信装置2−2から(送信回数,受信済みシーケンス番号)=(1,#m)(1,#m−2)・・・(1,#1)(2,#n−1)(2,#1)が付加されたI−NACKが送信されたとする。
【0092】
再送制御部19は、I−NACKから抽出された送信回数1から第2ブロックを特定すると共に、送信回数2から第1ブロックを特定し、送信回数1の受信済みシーケンス番号#m,#m−2,・・・,#1及び送信回数2の受信済みシーケンス番号#n−1,#1のうち受信済みでない第1ブロックのデータのシーケンス番号#m−1を再送シーケンス番号として特定する。再送制御部19は、受信装置2−2が第2ブロックにおけるシーケンス番号#m−1のデータパケットを受信しておらず、第2ブロックについて再送データがあると判定し、送信回数付与部190が、データ記憶部17に格納された第2ブロックのデータについて、シーケンス番号#m−1における送信回数1を送信回数2に更新する。また、再送制御部19は、データ記憶部17に格納された第2ブロックのデータについて、受信済みシーケンス番号#m,#m−2,・・・,#1のデータを削除する。また、再送制御部19は、第1ブロックについて、受信済みのシーケンス番号#n−1,#1のデータを削除する。
【0093】
一方、データ記憶部17には、第3ブロックのデータとして、送信回数1及びシーケンス番号#1〜#iの新規データが格納されている。送信部13は、第3ブロックの新規データについて、シーケンス番号の大きい順に、送信回数1及びシーケンス番号#i〜#1が付与されたデータをデータパケット化し、受信装置2−2へ送信し、さらに、第2ブロックの再送対象のデータについて、シーケンス番号の大きい順に、送信回数2及びシーケンス番号#m−1が付与されたデータをデータパケット化し、受信装置2−2へ送信する。
【0094】
(送信装置の処理/実施例2)
次に、実施例2による送信装置1−2の処理について説明する。
図9A及び
図9Bは、送信装置1−2の処理を示すフローチャートである。送信装置1−2による映像ファイルの送信処理が開始すると、送信用データ生成・シーケンス番号付与部16は、映像ファイルから複数の送信用のデータを生成し(ステップS901)、各データにシーケンス番号をインクリメントして付与すると共に(n=n+1,初期値n=0)、送信回数1を付与し、送信回数1及びシーケンス番号を付与したデータをデータ記憶部17のキューに格納する(ステップS902)。そして、データ読出部12は、キューから、大きいシーケンス番号順にデータをコピーして読み出し(ステップS903)、送信部13は、データ読出部12により読み出されたデータをデータパケット化し、無線媒体として受信装置2−2へ送信する(ステップS904)。
【0095】
送信部13は、最も小さいシーケンス番号#1のデータを送信したか否かを判定し(ステップS905)、最も小さいシーケンス番号#1のデータを送信したと判定した場合(ステップS905:YES)、ステップS906へ移行し、最も小さいシーケンス番号#1のデータを送信していないと判定した場合(ステップS905:NO)、ステップS903へ移行する。このように、送信装置1−2は、最も小さいシーケンス番号#1のデータを送信するまで、データ読出部12によるステップS903の処理及び送信部13によるステップS904の処理を繰り返す。
【0096】
受信部18は、ステップS905から移行して(送信部13により最も小さいシーケンス番号#1のデータが送信された後)、受信装置2−2からI−NACKを受信したか否かを判定する(ステップS906)。受信部18は、I−NACKを受信していないと判定した場合(ステップS906:NO)、I−NACKを受信するまで待つ。
【0097】
受信部18は、ステップS906において、I−NACKを受信したと判定した場合(ステップS906:YES)、再送制御部19は、I−NACKに付加された送信回数及び受信済みシーケンス番号から、送信回数に対応したブロックについて、受信済みでないシーケンス番号を特定し、再送データがあるかないかを判定する(ステップS907)。
【0098】
再送制御部19は、ステップS907において、受信装置2−2が当該ブロックの全てのデータの受信を完了しておらず、再送データがあると判定した場合(ステップS907:YES)、キューから受信済みシーケンス番号のデータを削除する(ステップS908)。また、再送制御部19は、再送データに対する新たな送信回数を付与し、キューに格納する(ステップS909)。
【0099】
送信用データ生成・シーケンス番号付与部16は、新たな映像ファイルから生成した新規の送信用のデータがあるか否かを判定し(ステップS910)、新規データがあると判定した場合(ステップS910:YES)、送信用データ生成・シーケンス番号付与部16、データ読出部12及び送信部13は、ステップS902〜ステップS905と同様の処理を行う(ステップS911〜ステップS914)。このように、送信部13は、新たな映像ファイル(新たなブロック)について、最も大きいシーケンス番号から順に、送信回数及びシーケンス番号を付与したデータパケットを送信する。また、送信用データ生成・シーケンス番号付与部16は、ステップS910において、新規データがないと判定した場合(ステップS910:NO)、ステップS915へ移行する。
【0100】
データ読出部12は、キューから、ステップS907にて特定した当該ブロックについての再送データ(受信済みでないシーケンス番号が示す全てのデータ)を、大きいシーケンス番号順にコピーして読み出し(ステップS915)、送信部13は、ステップS913における新たな映像ファイルの送信に続いて、ステップS915にてデータ読出部12により読み出された再送データをデータパケット化し、無線媒体として受信装置2−2へ再送する(ステップS916)。そして、ステップS906へ移行する。
【0101】
再送制御部19は、ステップS907において、受信装置2−2が当該ブロックの全てのデータの受信を完了しており、再送データがないと判定した場合(ステップS907:NO)、当該ブロックについて、キューのデータを削除する(ステップS917)。これにより、送信装置1−2による映像ファイルの送信処理は終了し、開始から繰り返される。
【0102】
(受信装置の構成/実施例2)
次に、実施例2による受信装置2−2の構成について説明する。
図10は、受信装置2−2の構成を示すブロック図である。この受信装置2−2は、受信部30、データ記憶部31、データ読出部32、I−NACKタイマ処理部33、送信回数・シーケンス番号記憶部34、送信回数・シーケンス番号読出部35及び送信部36を備えている。
【0103】
受信部30は、送信装置1−2からデータパケットを受信すると、データパケットからデータを抽出し、データに付与された送信回数及びシーケンス番号を抽出する。受信部30は、送信装置1−2によるデータパケットの連続したバースト送信の中で、最初に受信したデータパケットの送信回数及びシーケンス番号をI−NACKタイマ処理部33に出力する。また、受信部30は、抽出したデータ(送信回数及びシーケンス番号が付与されたデータ)をデータ記憶部31に格納すると共に、抽出した送信回数及びシーケンス番号を送信回数・シーケンス番号記憶部34に格納する。
【0104】
データ記憶部31には、受信したデータパケットの各データが記憶される。
図10の例では、所定ブロックにおいて、受信したデータパケットについての送信回数1及びシーケンス番号#n,#n−2,・・・,#2の各データが順番にデータ記憶部31のキューに格納されている。この例は、
図6に示したように、送信装置1−2から合計n個のデータパケットが送信され、シーケンス番号#n−1,#1のデータパケットに受信誤りが生じ、シーケンス番号#n,#n−2,・・・,#2のデータパケットを正しく受信した場合を示している。
【0105】
データ読出部32は、データ記憶部31に、所定ブロックの全てのシーケンス番号のデータが格納されたときに、データ記憶部31から、所定ブロックの全てのデータを、シーケンス番号の小さい順に読み出し、これらのデータを合成して元の映像ファイルを生成し、生成した映像ファイルを出力する。
【0106】
I−NACKタイマ処理部33は、受信部30から最初に受信したデータパケットの送信回数及びシーケンス番号を入力し、送信回数・シーケンス番号読出部35から再送データ数を入力し、入力した再送データ数が0であり、受信データに再送データが含まれていないと判定した場合、入力したシーケンス番号に基づいて受信終了時間を予測し、予測した受信終了時間をI−NACKタイマの設定値に設定してI−NACKタイマを起動する。一方、I−NACKタイマ処理部33は、入力した再送データ数が0でなく、受信データに再送データが含まれていると判定した場合、入力したシーケンス番号及び再送データ数に基づいて受信終了時間を予測し、予測した受信終了時間をI−NACKタイマの設定値に設定してI−NACKタイマを起動する。I−NACKタイマ処理部33は、I−NACKタイマがタイムアウトしたときに、タイムアウトを送信回数・シーケンス番号読出部35に出力する。
【0107】
送信回数・シーケンス番号記憶部34には、受信したデータパケットについての送信回数及びシーケンス番号が記憶される。
図10の例では、受信したデータパケットについて、所定ブロックにおける送信回数1及びシーケンス番号#n,#n−2,・・・,#2が順番にデータ記憶部34のキューに格納されている。この例は、データ記憶部31に格納されたデータに対応している。
【0108】
送信回数・シーケンス番号読出部35は、I−NACKタイマ処理部33からタイムアウトを入力したとき、送信回数・シーケンス番号記憶部34から送信回数及びシーケンス番号を読み出し、読み出したシーケンス番号を受信済みシーケンス番号に設定し、送信回数及び受信済みシーケンス番号を送信部36に出力する。また、送信回数・シーケンス番号読出部35は、送信回数・シーケンス番号記憶部34から送信回数等を読み出した後、送信回数・シーケンス番号記憶部34の送信回数等を削除する。送信回数・シーケンス番号読出部35は、送信回数からブロックを特定し、そのブロックの受信済みシーケンス番号に基づいて、送信装置1−2から送信された全てのデータの受信が完了していないと判定した場合、受信が完了していないデータ数(特定した全てのブロックにおいて受信が完了していないデータ数の合計)を再送データ数としてI−NACKタイマ処理部33に出力する。一方、送信回数・シーケンス番号読出部35は、送信装置1−2から送信された全てのデータの受信が完了していると判定した場合、再送データ数0をI−NACKタイマ処理部33に出力する。この場合、送信回数・シーケンス番号読出部35は、送信装置1−2から送信された各ブロックにおける全てのデータのシーケンス番号及び受信済みシーケンス番号を管理している。
【0109】
送信部36は、送信回数・シーケンス番号読出部35から送信回数及び受信済みシーケンス番号を入力し、入力した送信回数及び受信済みシーケンス番号を付加したI−NACKを送信装置1−2へ送信する。
図10の例では、送信回数1及びシーケンス番号#n,#n−2,・・・,#2が付加されたI−NACKが送信される。
【0110】
図11は、
図10に示した送信回数・シーケンス番号記憶部34に格納された送信回数及びシーケンス番号の遷移を説明する図である。この遷移は、
図6に示した再送制御の例及び
図8に示したデータ記憶部17の遷移に対応している。送信装置1−2から第1ブロックにおける送信回数1及びシーケンス番号#n〜#1のデータパケットが送信され、送信回数1及びシーケンス番号#n−1,#1のデータパケットに受信誤りが生じ、受信装置2−2は、送信回数1及びシーケンス番号#n,#n−2,・・・#2のデータパケットを受信したとする。そうすると、送信回数・シーケンス番号記憶部34には、送信回数1及びシーケンス番号#n,#n−2,・・・#2が格納される。そして、送信部36は、(送信回数,受信済みシーケンス番号)=(1,#n)(1,#n−2)・・・(1,#2)を付加したI−NACKを送信装置1−2へ送信する。
【0111】
そして、送信装置1−2から第2ブロックにおける送信回数1及びシーケンス番号#m〜#1のデータパケット及び再送データである第1ブロックにおける送信回数2及びシーケンス番号#n−1,#1のデータパケットが送信され、送信回数1及びシーケンス番号#m−1のデータパケットに受信誤りが生じ、受信装置2−2は、第2ブロックにおける送信回数1及びシーケンス番号#m,#m−2,・・・#1のデータパケット及び第1ブロックにおける送信回数2及びシーケンス番号#n−1,#1のデータパケットを受信したとする。そうすると、送信回数・シーケンス番号記憶部34には、送信回数2及びシーケンス番号#n−1,#1、並びに送信回数1及びシーケンス番号#m,#m−2,・・・#1が格納される。そして、送信部36は、(送信回数,受信済みシーケンス番号)=(1,#m)(1,#m−2)・・・(1,#1)(2,#n−1)(2,#1)を付加したI−NACKを送信装置1−2へ送信する。
【0112】
そして、送信装置1−2から第3ブロックにおける送信回数1及びシーケンス番号#i〜#1のデータパケット及び再送データである第2ブロックにおける送信回数2及びシーケンス番号#m−1のデータパケットが送信され、受信装置2−2は、第3ブロックにおける送信回数1及びシーケンス番号#i,・・・#1のデータパケット及び第2ブロックにおける送信回数2及びシーケンス番号#m−1のデータパケットを受信したとする。そうすると、送信回数・シーケンス番号記憶部34には、送信回数2及びシーケンス番号#m−1、並びに送信回数1及びシーケンス番号#i,・・・#1が格納される。そして、送信部36は、(送信回数,受信済みシーケンス番号)=(1,#i)・・・(1,#1)(2,#m−1)を付加したI−NACKを送信装置1−2へ送信する。
【0113】
(受信装置の処理/実施例2)
次に、実施例2による受信装置2−2の処理について説明する。
図12は、その処理を示すフローチャートである。受信装置2−2による映像ファイルの受信処理が開始すると、受信部30は、送信装置1−2からのデータパケットの送信に伴って、データパケットの受信を開始する(ステップS1201)。I−NACKタイマ処理部33は、受信データに再送データが含まれているか否かを判定する(ステップS1202)。受信データに再送データが含まれているか否かは、送信回数・シーケンス番号読出部35から入力した再送データ数が0であるか否か(0の場合は再送データが含まれておらず、0以外の場合は再送データが含まれている。)により判定される。
【0114】
I−NACKタイマ処理部33は、ステップS1202において、受信データに再送データが含まれていないと判定した場合(ステップS1202:NO)、最初に受信したデータパケットのシーケンス番号を取得し(ステップS1203)、取得したシーケンス番号及び予め設定された1データの伝送時間から、受信終了時間を予測し、予測した受信終了時間をI−NACKタイマの設定値に設定し、I−NACKタイマを起動する(ステップS1204)。一方、I−NACKタイマ処理部33は、ステップS1202において、受信データに再送データが含まれると判定した場合(ステップS1202:YES)、最初に受信したデータパケットのシーケンス番号、再送データ数及び予め設定された1データの伝送時間から、受信終了時間を予測し、予測した受信終了時間をI−NACKタイマの設定値に設定し、I−NACKタイマを起動する(ステップS1205)。受信終了時間は、ステップS1204において、シーケンス番号から得られるデータ数に1データの伝送時間を乗算することにより算出され、ステップS1205において、シーケンス番号から得られるデータ数に再送データ数を加算し、この加算結果に1データの伝送時間を乗算することにより算出される。
【0115】
受信部30は、ステップS1204またはステップS1205から移行して、受信したデータパケットの送信回数及びシーケンス番号を送信回数・シーケンス番号記憶部34に格納する(ステップS1206)。これにより、データパケットを受信する毎に、送信回数及びシーケンス番号が送信回数・シーケンス番号記憶部34に格納される。
【0116】
I−NACKタイマ処理部33は、I−NACKタイマがタイムアウトしたか否かを判定し(ステップS1207)、タイムアウトしていないと判定した場合(ステップS1207:NO)、ステップS1206へ移行し、タイムアウトするまで待つ。一方、I−NACKタイマ処理部33は、ステップS1207において、タイムアウトしていると判定した場合(ステップS1207:YES)、送信回数・シーケンス番号読出部35は、送信回数・シーケンス番号記憶部34から送信回数及びシーケンス番号を読み出し、シーケンス番号を受信済みシーケンス番号に設定し、送信部36は、送信回数及び受信済みシーケンス番号を付加したI−NACKを送信装置1−2へ送信する(ステップS1208)。これにより、受信装置2−2による映像ファイルの受信処理は終了し、開始から繰り返される。
【0117】
〔実施例3〕
次に、実施例3について説明する。
図13は、実施例3の再送制御を説明するタイムチャートである。送信装置1−3は、映像ファイルを構成する各データにシーケンス番号#1〜#nを付与すると共に、映像ファイルのID番号であるブロック番号を付与し、最終のシーケンス番号#nのデータパケット(最終パケット)から最初のシーケンス番号#1のデータパケット(先頭パケット)までを順番に、受信装置2−3へ連続してバースト送信する。尚、送信装置1−3は、データパケットを再送する際にも同様に、再送するデータパケットに映像ファイルのブロック番号を付与する。受信装置2−3は、受信したデータパケットのブロック番号に基づいて、新規のデータパケットであるか再送のデータパケットであるかを判定することができる。
【0118】
受信装置2−3は、送信装置1−3から新規の映像ファイルについて新規のブロックのデータパケットのみを受信した場合、そのデータパケットのデータに付与されたシーケンス番号#nから、送信装置1−3から送信される全てのデータパケットの数を検知し、最終のデータパケットを受信する受信終了時間を予測する。そして、受信装置2−3は、I−NACKタイマを起動して受信終了時間になったときに、受信した全てのデータパケットについてのブロック番号及びシーケンス番号を付加したI−NACKを送信装置1−3へ送信する。受信装置2−3は、再送対象のデータパケットの数を記憶する。
【0119】
送信装置1−3は、受信装置2−3からI−NACKを受信すると、I−NACKに付加されたブロック番号及びシーケンス番号から再送対象のデータパケットを特定し、新規の映像ファイルについて新規のブロックのデータパケットをシーケンス番号の大きい順に送信し、続いて再送対象のデータパケットをシーケンス番号の大きい順に送信する。
【0120】
受信装置2−3は、新規のデータパケットに加え再送のデータパケットを受信すると、最初に受信したデータパケットのデータに付与されたシーケンス番号#n及び再送データ数から、送信装置1−3から送信される全てのデータパケットの数を検知し、最終のデータパケットを受信する受信終了時間を予測する。そして、受信装置2−3は、I−NACKタイマを起動して受信終了時間になったときに、受信した全てのデータパケットについてのブロック番号及びシーケンス番号を付加したI−NACKを送信装置1−3へ送信する。この場合、受信装置2−3は、再送対象のデータパケットの数を記憶する。
【0121】
図13に示した例では、それぞれの映像ファイルが、ブロックA,B,Cの3つのキューに、n,m,i個のデータとしてそれぞれ格納されている。各データには、1〜n,1〜m,1〜iのシーケンス番号が付与され、ブロックに対応したID情報であるブロック番号A,B,Cも付与されている。例えば、データには、ブロック番号及びシーケンス番号を示すA1,A2・・・Anが付与される。送信装置1−3からブロック番号Aを付与した合計n個のデータパケットがバースト送信され、シーケンス番号#n−1,#1のデータパケットに受信誤りが生じたとする。受信装置2−3は、受信終了時間になったときに、受信済みのデータパケットのブロック番号A及びシーケンス番号#n,#n−2,・・・,#2を付加したI−NACKを送信装置1−3へ送信する。送信装置1−3は、I−NACKを受信すると、I−NACKに付加されていないブロック番号Aのシーケンス番号#n−1,#1のデータパケットに受信誤りが生じたと判定する。そして、送信装置1−3は、ブロックBのキューからブロック番号Bを付与した合計m個のデータを読み出してバースト送信した後に、ブロックAのキューから再送データであるブロック番号Aのシーケンス番号#n−1,#1のデータを読み出して再送する。再送するデータパケットの順番は、同様に、シーケンス番号の大きい順である。ブロック番号Bのシーケンス番号#m−1のデータパケットに受信誤りが生じたとする。受信装置2−3は、受信終了時間になったときに、受信済みのデータパケットのブロック番号B及びシーケンス番号#m,#m−2,・・・,#1並びにブロック番号A及びシーケンス番号#n−1,#1を付加したI−NACKを送信装置1−3へ送信する。送信装置1−3は、I−NACKを受信すると、I−NACKに付加されていないブロック番号Bのシーケンス番号#m−1のデータパケットに受信誤りが生じたと判定する。そして、送信装置1−3は、ブロックCのキューからブロック番号Cを付与した合計i個のデータを読み出してバースト送信する。このように、受信装置2−3が全てのデータパケットを受信するまで、これらの処理が繰り返される。
【0122】
このように、実施例3の再送制御によれば、送信装置1−3は、データにブロック番号及びシーケンス番号を付与し、新規のデータパケットをシーケンス番号の大きい順に送信し、その後に、再送対象のデータパケットをシーケンス番号の大きい順に送信するようにした。これにより、受信装置2−3は、I−NACKを送信するタイミングを、新規に受信したデータパケットのシーケンス番号及び再送されたデータパケットの再送データ数に基づいて設定することができる。これにより、受信装置2−3において、実施例1,2と同様に、I−NACKを送信するための待機時間の短縮を図ることができ、I−NACKを送信するまでの時間が延びることなく、データ伝送時間を低減し、無線帯域の利用効率を向上させることが可能となる。
【0123】
また、受信装置2−3は、実施例1,2と同様に、送信装置1−3から送信された最終のパケットに受信誤りが生じた場合であっても、最初のデータパケットを受信したときに既に受信終了時間を予測しているから、I−NACKを送信するタイミングが遅れることはなく、無線帯域の利用効率が低下することがない。
【0124】
また、受信装置2−3は、再送データの受信を待つことなく、次の映像ファイルのデータを受信することができるから、無線帯域の利用効率を一層向上させることが可能となる。また、ブロック毎にデータパケットの送受信を行うようにしたから、再送データのブロックを直接特定することができ、簡易な処理を実現することができる。例えば、異なるアプリケーションまたはコンテンツをキュー毎に格納することで、複数のアプリケーションまたはコンテンツの送受信処理を一層容易に実現することが可能となる。
【0125】
(送信装置の構成/実施例3)
次に、実施例3による送信装置1−3の構成について説明する。
図14は、送信装置1−3の構成を示すブロック図である。この送信装置1−3は、送信用データ生成・シーケンス番号付与部40、データ記憶部41、データ読出部12、送信部13、受信部42及び再送制御部43を備えている。送信用データ生成・シーケンス番号付与部40はブロック番号付与部140を備えている。
【0126】
送信用データ生成・シーケンス番号付与部40は、送信対象の映像ファイルを入力し、映像ファイルを複数のデータに分割して送信用のデータを生成し、生成した各データにシーケンス番号を付与する。また、送信用データ生成・シーケンス番号付与部40のブロック番号付与部140は、生成した各データにブロック番号を付与する。ブロック番号は、映像ファイルのアプリケーションまたはコンテンツに対応した番号であり、映像ファイルのアプリケーションまたはコンテンツ毎に異なる番号が付与される。送信用データ生成・シーケンス番号付与部40は、ブロック番号及びシーケンス番号を付与した各データをデータ記憶部41に格納する。
【0127】
データ記憶部41には、ブロック番号及びシーケンス番号が付与された各データが記憶される。
図14の例では、ブロックAのキューに、映像ファイルがn個のデータに分割され、ブロック番号A及びシーケンス番号#1〜#nが付与されたデータが順番に格納されている。また、ブロックBのキューに、映像ファイルがm個のデータに分割され、ブロック番号B及びシーケンス番号#1〜#mが付与されたデータが順番に格納されている。
【0128】
データ読出部12は、
図2に示した実施例1の送信装置1−1及び
図7に示した実施例2の送信装置1−2と同様に、データ記憶部41から、所定ブロックについて、シーケンス番号の大きい順に全てのデータを読み出す。
図14の例では、ブロックAのキューから、シーケンス番号#n〜#1の順にデータが読み出され、ブロックBのキューから、シーケンス番号#m〜#1の順にデータが読み出される。また、データ読出部12は、再送制御部43からブロック番号及び再送シーケンス番号を入力した場合には、データ記憶部41から、当該ブロック番号及び再送シーケンス番号が付与された全てのデータを再送シーケンス番号の大きい順に読み出す。
【0129】
送信部13は、
図2に示した実施例1の送信装置1−1及び
図7に示した実施例2の送信装置1−2と同様に、データ読出部12からデータを入力し、データパケットを生成し、シーケンス番号の大きい順にデータパケットを受信装置2−3へ送信する。
図14の例では、ブロックAのバースト送信において、シーケンス番号#n〜#1の順にデータパケットが送信され、ブロックBのバースト送信において、シーケンス番号#m〜#1の順にデータパケットが送信され、その後に、ブロックAの再送対象のデータパケットが送信される。
【0130】
受信部42は、受信装置2−3からI−NACKを受信し、I−NACKに付加されているブロック番号及びシーケンス番号(受信済みシーケンス番号)を抽出する。この受信済みシーケンス番号は、当該ブロック番号において、受信装置2−3が受信した全てのデータパケットのシーケンス番号を示している。ブロック番号及び受信済みシーケンス番号によって、再送対象のデータが特定される。
【0131】
再送制御部43は、受信部42からブロック番号及び受信済みシーケンス番号を入力し、ブロック番号からブロックを特定し、受信済みシーケンス番号から、そのブロックの各データに付与されたシーケンス番号のうち受信済みでないシーケンス番号を再送シーケンス番号として特定する。再送制御部43は、当該ブロック番号の受信済みシーケンス番号のデータをデータ記憶部41から削除する。再送制御部43は、再送シーケンス番号を特定できない場合、受信装置2−3がそのブロックにおける全てのデータパケットを受信したと判定し、データ記憶部41に格納されたそのブロックのデータを削除する。一方、再送制御部43は、再送シーケンス番号を特定した場合、受信装置2−3が受信していないデータパケットがあると判定し、再送対象のデータを特定するためのブロック番号及び再送シーケンス番号をデータ読出部12に出力する。これにより、当該ブロックの再送シーケンス番号のデータパケットが再送される。
【0132】
(送信装置の処理/実施例3)
次に、実施例3による送信装置1−3の処理について説明する。
図15A及び
図15Bは、送信装置1−3の処理を示すフローチャートである。送信装置1−3による映像ファイルの送信処理が開始すると、送信用データ生成・シーケンス番号付与部40は、映像ファイルから複数の送信用のデータを生成し(ステップS1501)、各データにシーケンス番号をインクリメントして付与すると共に(n=n+1,初期値n=0)、ブロック番号を付与し、ブロック番号及びシーケンス番号を付与したデータをデータ記憶部41のキューに格納する(ステップS1502)。そして、データ読出部12は、キューから、大きいシーケンス番号順にデータをコピーして読み出し(ステップS1503)、送信部13は、データ読出部12により読み出されたデータをデータパケット化し、無線媒体として受信装置2−3へ送信する(ステップS1504)。
【0133】
送信部13は、最も小さいシーケンス番号#1のデータを送信したか否を判定し(ステップS1505)、最も小さいシーケンス番号#1のデータを送信したと判定した場合(ステップS1505:YES)、ステップS1506へ移行し、最も小さいシーケンス番号#1のデータを送信していないと判定した場合(ステップS1505:NO)、ステップS1503へ移行する。このように、送信装置1−3は、最も小さいシーケンス番号#1のデータを送信するまで、データ読出部12によるステップS1503の処理及び送信部13によるステップS1504の処理を繰り返す。
【0134】
受信部42は、ステップS1505から移行して(送信部13により最も小さいシーケンス番号#1のデータが送信された後)、受信装置2−3からI−NACKを受信したか否かを判定する(ステップS1506)。受信部42は、I−NACKを受信していないと判定した場合(ステップS1506:NO)、I−NACKを受信するまで待つ。
【0135】
受信部42は、ステップS1506において、I−NACKを受信したと判定した場合(ステップS1506:YES)、再送制御部43は、I−NACKに付加されたブロック番号及び受信済みシーケンス番号から、ブロック番号が示すブロックについて、受信済みでないシーケンス番号を特定し、再送データがあるかないかを判定する(ステップS1507)。
【0136】
再送制御部43は、ステップS1507において、受信装置2−3が当該ブロックの全てのデータの受信を完了しておらず、再送データがあると判定した場合(ステップS1507:YES)、当該ブロックのキューから受信済みシーケンス番号のデータを削除する(ステップS1508)。
【0137】
送信用データ生成・シーケンス番号付与部40は、新たなブロックの映像ファイルから生成した新規の送信用のデータがあるか否かを判定し(ステップS1509)、新規データがあると判定した場合(ステップS1509:YES)、送信用データ生成・シーケンス番号付与部40、データ読出部12及び送信部13は、ステップS1502〜ステップS1505と同様の処理を行う(ステップS1510〜ステップS1513)。このように、送信部13は、新たなブロックの映像ファイルについて、最も大きいシーケンス番号から順に、ブロック番号及びシーケンス番号を付与したデータパケットを送信する。また、送信用データ生成・シーケンス番号付与部40は、新規データがないと判定した場合(ステップS1509:NO)、ステップS1514へ移行する。
【0138】
データ読出部12は、キューから、ステップS1507にて特定した当該ブロックについての再送データ(受信済みでないシーケンス番号が示す全てのデータ)を、大きいシーケンス番号順にコピーして読み出し(ステップS1514)、送信部13は、ステップS1512における新たな映像ファイルの送信に続いて、ステップS1514にてデータ読出部12により読み出された再送データをデータパケット化し、無線媒体として受信装置2−3へ再送する(ステップS1515)。そして、ステップS1506へ移行する。
【0139】
再送制御部43は、ステップS1507において、受信装置2−3が当該ブロックの全てのデータの受信を完了しており、再送データがないと判定した場合(ステップS1507:NO)、当該ブロックについて、キューのデータを削除する(ステップS1516)。これにより、送信装置1−3による映像ファイルの送信処理は終了し、開始から繰り返される。
【0140】
(受信装置の構成/実施例3)
次に、実施例3による受信装置2−3の構成について説明する。
図16は、受信装置2−3の構成を示すブロック図である。この受信装置2−3は、受信部50、データ記憶部51、データ読出部52、I−NACKタイマ処理部53、ブロック番号・シーケンス番号記憶部54、ブロック番号・シーケンス番号読出部55及び送信部56を備えている。
【0141】
受信部50は、送信装置1−3からデータパケットを受信すると、データパケットからデータを抽出し、データに付与されたブロック番号及びシーケンス番号を抽出する。受信部50は、最初に受信したデータパケットのブロック番号及びシーケンス番号をI−NACKタイマ処理部53に出力する。また、受信部50は、ブロック番号及びシーケンス番号を付与したデータをデータ記憶部51に格納すると共に、抽出したブロック番号及びシーケンス番号をブロック番号・シーケンス番号記憶部54に格納する。
【0142】
データ記憶部51には、受信したデータパケットの各データが記憶される。
図16の例では、ブロックAにおいて、受信したデータパケットについてのブロック番号A及びシーケンス番号#n,#n−2,・・・,#2の各データが順番にデータ記憶部51のキューに格納されている。この例は、
図14に示したように、送信装置1−3から、ブロック番号Aにおける合計n個のデータパケットが送信され、シーケンス番号#n−1,#1のデータパケットに受信誤りが生じ、シーケンス番号#n,#n−2,・・・,#2のデータパケットを正しく受信した場合を示している。
【0143】
データ読出部52は、データ記憶部51に、所定ブロックの全てのシーケンス番号のデータが格納されたときに、データ記憶部51から、所定ブロックの全てのデータを、シーケンス番号の小さい順に読み出し、これらのデータを合成して元の映像ファイルを生成し、生成した映像ファイルを出力する。
【0144】
I−NACKタイマ処理部53は、受信部50から最初に受信したデータパケットのブロック番号及びシーケンス番号を入力し、ブロック番号・シーケンス番号読出部55から再送データ数を入力し、入力した再送データ数が0であり、受信データに再送データが含まれていないと判定した場合、入力したシーケンス番号に基づいて受信終了時間を予測し、予測した受信終了時間をI−NACKタイマの設定値に設定してI−NACKタイマを起動する。一方、I−NACKタイマ処理部53は、入力した再送データ数が0でなく、受信データに再送データが含まれていると判定した場合、入力したシーケンス番号及び再送データ数に基づいて受信終了時間を予測し、予測した受信終了時間をI−NACKタイマの設定値に設定してI−NACKタイマを起動する。I−NACKタイマ処理部53は、I−NACKタイマがタイムアウトしたときに、タイムアウトをブロック番号・シーケンス番号読出部55に出力する。
【0145】
ブロック番号・シーケンス番号記憶部54には、受信したデータパケットについてのブロック番号及びシーケンス番号が記憶される。
図16の例では、受信したデータパケットについて、ブロック番号Aのシーケンス番号#n,#n−2,・・・,#2が順番にブロック番号・シーケンス番号記憶部54のキューに格納されている。この例は、データ記憶部51に格納されたデータに対応している。
【0146】
ブロック番号・シーケンス番号読出部55は、I−NACKタイマ処理部53からタイムアウトを入力したとき、ブロック番号・シーケンス番号記憶部54からブロック番号及びシーケンス番号を読み出し、読み出したシーケンス番号を受信済みシーケンス番号に設定し、ブロック番号及び受信済みシーケンス番号を送信部56に出力する。また、ブロック番号・シーケンス番号読出部55は、ブロック番号・シーケンス番号記憶部54からブロック番号等を読み出した後、ブロック番号・シーケンス番号記憶部54のブロック番号等を削除する。ブロック番号・シーケンス番号読出部55は、ブロック番号からブロックを特定し、そのブロックの受信済みシーケンス番号に基づいて、送信装置1−3から送信された全てのデータの受信が完了していないと判定した場合、受信が完了していないデータ数(特定した全てのブロックにおいて受信が完了していないデータ数)を再送データ数としてI−NACKタイマ処理部53に出力する。一方、ブロック番号・シーケンス番号読出部55は、送信装置1−3から送信された全てのデータの受信が完了していると判定した場合、再送データ数0をI−NACKタイマ処理部53に出力する。この場合、ブロック番号・シーケンス番号読出部55は、送信装置1−3から送信された各ブロックにおける全てのデータのシーケンス番号及び受信済みシーケンス番号を管理している。
【0147】
送信部56は、ブロック番号・シーケンス番号読出部55からブロック番号及び受信済みシーケンス番号を入力し、入力したブロック番号及び受信済みシーケンス番号を付加したI−NACKを送信装置1−3へ送信する。
図16の例では、ブロック番号A及びシーケンス番号#n,#n−2,・・・,#2が付加されたI−NACKが送信される。
【0148】
(受信装置の処理/実施例3)
次に、実施例3による受信装置2−3の処理について説明する。
図17は、その処理を示すフローチャートである。受信装置2−3による映像ファイルの受信処理が開始すると、受信部50は、送信装置1−3からのデータパケットの送信に伴って、データパケットの受信を開始する(ステップS1701)。I−NACKタイマ処理部53は、受信データに再送データが含まれているか否かを判定する(ステップS1702)。受信データに再送データが含まれているか否かは、ブロック番号・シーケンス番号読出部55から入力した再送データ数が0であるか否か(0の場合は再送データが含まれておらず、0以外の場合は再送データが含まれている。)により判定される。
【0149】
I−NACKタイマ処理部53は、ステップS1702において、受信データに再送データが含まれていないと判定した場合(ステップS1702:NO)、最初に受信したデータパケットのシーケンス番号を取得し(ステップS1703)、
図12に示したステップS1204と同様に、取得したシーケンス番号及び予め設定された1データの伝送時間から、受信終了時間を予測し、予測した受信終了時間をI−NACKタイマの設定値に設定し、I−NACKタイマを起動する(ステップS1704)。一方、I−NACKタイマ処理部53は、ステップS1702において、受信データに再送データが含まれると判定した場合(ステップS1702:YES)、
図12に示したステップS1205と同様に、最初に受信したデータパケットのシーケンス番号、再送データ数及び予め設定された1データの伝送時間から、受信終了時間を予測し、予測した受信終了時間をI−NACKタイマの設定値に設定し、I−NACKタイマを起動する(ステップS1705)。
【0150】
受信部50は、ステップS1704またはステップS1705から移行して、受信したデータパケットのブロック番号及びシーケンス番号をブロック番号・シーケンス番号記憶部54に格納する(ステップS1706)。これにより、データパケットを受信する毎に、ブロック番号及びシーケンス番号がブロック番号・シーケンス番号記憶部54に格納される。
【0151】
I−NACKタイマ処理部53は、I−NACKタイマがタイムアウトしたか否かを判定し(ステップS1707)、タイムアウトしていないと判定した場合(ステップS1707:NO)、ステップS1706へ移行し、タイムアウトするまで待つ。一方、I−NACKタイマ処理部53は、ステップS1707において、タイムアウトしていると判定した場合(ステップS1707:YES)、ブロック番号・シーケンス番号読出部55は、ブロック番号・シーケンス番号記憶部54からブロック番号及びシーケンス番号を読み出し、シーケンス番号を受信済みシーケンス番号に設定し、送信部56は、ブロック番号及び受信済みシーケンス番号を付加したI−NACKを送信装置1−3へ送信する(ステップS1708)。これにより、受信装置2−3による映像ファイルの受信処理は終了し、開始から繰り返される。
【0152】
以上、実施例を挙げて本発明を説明したが、本発明は前記実施例に限定されるものではなく、その技術思想を逸脱しない範囲で種々変形可能である。前記実施例では、映像ファイルを例にして説明したが、映像ファイルの他、音声ファイル、テキストデータファイル等であってもよい。
【0153】
尚、本発明の実施形態による送信装置1−1〜1−3及び受信装置2−1〜2−3のハードウェア構成としては、通常のコンピュータを使用することができる。送信装置1−1〜1−3及び受信装置2−1〜2−3は、CPU、RAM等の揮発性の記憶媒体、ROM等の不揮発性の記憶媒体、及びインターフェース等を備えたコンピュータによって構成される。送信装置1−1に備えた送信用データ生成・シーケンス番号付与部10、データ記憶部11、データ読出部12、送信部13、受信部14及び再送制御部15の各機能は、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。送信装置1−2に備えた送信用データ生成・シーケンス番号付与部16、データ記憶部17、データ読出部12、送信部13、受信部18及び再送制御部19も同様であり、送信装置1−3に備えた送信用データ生成・シーケンス番号付与部40、データ記憶部41、データ読出部12、送信部13、受信部42及び再送制御部43も同様である。また、受信装置2−1に備えた受信部20、データ記憶部21、データ読出部22、I−NACKタイマ処理部23、シーケンス番号記憶部24、シーケンス番号読出部25及び送信部26の各機能は、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。受信装置2−2に備えた受信部30、データ記憶部31、データ読出部32、I−NACKタイマ処理部33、送信回数・シーケンス番号記憶部34、送信回数・シーケンス番号読出部35及び送信部36も同様であり、受信装置2−3に備えた受信部50、データ記憶部51、データ読出部52、I−NACKタイマ処理部53、ブロック番号・シーケンス番号記憶部54、ブロック番号・シーケンス番号読出部55及び送信部56も同様である。また、これらのプログラムは、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリ等の記憶媒体に格納して頒布することもでき、ネットワークを介して送受信することもできる。