説明

データ送信装置及び方法

【課題】データ送信装置及び方法を提供すること。
【解決手段】データ送信装置は、ディスクリーダと通信部を備える。ディスクリーダは、ファイルブロックを一つ又は複数のマイクロブロックに区分し、一つ又は複数のマイクロブロックの各々のサイズに対応するデータを複数のファイルから読み出して、複数のマイクロブロックに順次に記録し、通信部は、一つ又は複数のマイクロブロックにデータが記録されると、ファイルブロックをデータ受信装置に送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ送信装置及び方法に関し、さらに詳細には、ファイルのパッケージ送信及びレジュームダウンロード送信が可能なデータ送信装置及び方法に関する。
【背景技術】
【0002】
従来、多数のファイルを送信する場合、送信しようとする一つのファイルに対するコントロールメッセージを送信し、その一つのファイルの送信が完了したというコントロールメッセージを受信した後、次のファイルを順次に送信する。このような送信方式は、サーバとクライアントとの間で一つのTCP(Transport Control Protocol)接続を確立して該当チャネルを介してデータを送受信する動作を行う場合でも多数のTCPストリームをオープンしてデータを並列に送信する場合でもすべて同様である。
【0003】
しかしながら、従来の方式によってファイルを送信する場合に、コントロールメッセージの送信時には、実際のデータを送信することができず、これによってパケットロスが多く発生したり、RTT(Round Trip Time)が長いネットワーク上では送信効率が急激に落ちるという結果がもたらされる。また、ネットワークBDP(Bandwidth Delay Product)より小さなサイズのファイル一つを送信する場合、ネットワークを効率的に使用することができないので、非効率的な送信がなされるという問題がある。このような問題を解決するために、多数のファイルを圧縮しパック(pack)して一つのファイルで送信する方法がある。しかし、このような場合に圧縮及び圧縮の解除に時間が長くかかるという不便が発生し、その結果、圧縮によりデータのサイズを減らして短くした送信時間より、圧縮・復元にかかる時間の方が長くなり、送信がより遅くなる現象が発生する。
【0004】
また、並列TCPストリーム送信方式を使用する場合に、単一TCPストリーム送信では発生しない送信の逆転現象が発生する。これは、単一TCPストリーム送信の場合では、先に送信されたデータが必ず先に到着することが保証されることに対し、並列TCPストリーム送信方式の場合では、第1番目のストリームを介して送信されるデータが第2番目のストリームを介して送信されるデータより先に送信されても、第2番目のストリームのデータより先に到着することが保証されないためである。
【0005】
また、従来の並列TCPストリーム送信の場合、上述したようにデータの順次的な送信が保証されないので、ファイルのレジュームダウンロードを適用することが困難である。また、多量のファイルを並列TCPストリーム送信方式で送信する場合に、レジュームダウンロードが不可能であるか、既に送信されたデータに対しても再送信が起きるので、送信効率が低下する。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明の例示的な実施形態によれば、多数のファイルをリアルタイムでパッケージ送信することによって、ファイルを個別に送信する時に発生するコントロールメッセージの回数を最小化し、TCP効率性を改善できるデータ送信装置及び方法を提供することである。
【0007】
また、本発明の例示的な実施形態によれば、多数のファイルをパッケージ送信する際に一部のデータの送信が欠落されるか、又は送信が停止される場合に、レジュームダウンロード機能を保証できるデータ送信装置及び方法を提供することにある。
【課題を解決するための手段】
【0008】
本発明の例示的な一実施形態におけるデータ送信装置は、複数のファイルを送信するデータ送信装置であって、ファイルブロックを一つ又は複数のマイクロブロックに区分し、前記一つ又は複数のマイクロブロックの各々のサイズに対応するデータを前記複数のファイルから読み出して、前記一つ又は複数のマイクロブロックに順次に記録するディスクリーダと、前記ファイルブロックに含まれる一つ又は複数のマイクロブロックにデータが記録されると、前記ファイルブロックをデータ受信装置に送信する通信部と、を備える。
【0009】
一方、本発明の他の例示的な実施形態におけるデータ受信装置は、データ送信装置から送信されるファイルブロック(データ送信単位)を受信する通信部と、前記受信されたファイルブロックが一つ又は複数のマイクロブロック(少なくとも一つ以上のファイルのデータが記録される単位)を含む場合に、マイクロブロック単位でデータを読み出して格納媒体に記録するディスクライターと、を備える。
【0010】
一方、本発明の他の例示的な実施形態におけるデータ送信方法は、複数のファイルを送信するデータ送信方法であって、ファイルブロックを一つ又は複数のマイクロブロックに区分し、前記一つ又は複数のマイクロブロックの各々のサイズに対応するデータを前記複数のファイルから読み出して、前記一つ又は複数のマイクロブロックに順次に記録するステップと、前記ファイルブロックに含まれる一つ又は複数のマイクロブロックにデータが記録されると、前記ファイルブロックをデータ受信装置に送信するステップと、を含む。
【0011】
一方、本発明の他の例示的な実施形態におけるデータ受信方法は、データ送信装置から送信されるファイルブロック(データ送信単位)を受信するステップと、前記受信されたファイルブロックが一つ又は複数のマイクロブロック(少なくとも一つ以上のファイルのデータが記録される単位)を含む場合に、マイクロブロック単位でデータを読み出して格納媒体に記録するステップと、を含む。
【発明の効果】
【0012】
本発明の例示的な実施形態におけるデータ送受信装置及び方法の少なくとも1つは、WAN(Wide Area Networks)環境で使用される場合に通信効率が高い。WAN環境の場合に、パケットロス(Packet Loss)やRTT(Round Trip Time)が大きいので、TCPプロトコルの特性上、ネットワークの帯域幅の少なくとも一部を使用できない場合が発生する。すなわち、パケットロスが発生するため、ウィンドウサイズを減らすことにより、送信できるパケットの量が減るか、又はアクナリッジメントを受信することができなくてウィンドウを空けることができないことにより、送信速度が顕著に落ちる状況が発生することがある。これを解決するために、本実施形態では、多数のファイルをリアルタイムでパック(pack)して送信することによって、ファイルを順次に送信する際に送信開始と終了において発生するコントロールメッセージを減らすことができる。コントロールメッセージが送信される間にファイルのデータは送信されないので、コントロールメッセージを減らすことによって、TCPのデータの送信効率を大きく改善できる。また、アプリケーション層でファイルをパックしてTCP層にフォワードすることによって、TCPウィンドウより小さなデータを送信する場合を最小とし、TCPウィンドウより大きさが小さいデータを送信する際に発生するTCPプロトコルの非効率的な動作を改善し、その結果、ファイルの送信時間を大きく減少させることができる。また、並列TCPストリームを使用することによって、TCPストリームが有するウィンドウを足し合せた分だけのデータを一度に送ることができ、その結果、データの送信時に衝突状況が発生しても、単一TCPストリームを利用した送信より、より多くのデータを送信することができる。
【0013】
また、本発明の例示的な実施形態におけるデータ送受信装置及び方法の少なくとも1つは、オフセットとファイルの全体サイズに対する情報を利用することによって、並列TCPストリーム送信においてファイルの逆転現象無しにレジュームダウンロードを実現することができる。また、送信されたファイルのオフセットを利用してレジュームダウンロードを行うことによって、既に送信されたデータの重複送信を防止し、その結果、重複送信時に発生する送信の無駄を減らすことができる。また、多数のファイルをグループに分けてリストをまず送信して、レジュームダウンロードするファイルを比較決定する動作と、レジュームダウンロードするファイルのデータを送信する動作とを同時に行うことによって、データの送信効率を上げることができる。
【図面の簡単な説明】
【0014】
【図1】本発明の例示的な実施形態に係るデータの並列送信のための送受信システムを示す図である。
【図2】本発明の例示的な第1の実施形態に係るデータの並列送信のための第1データ送信装置及び第1データ受信装置を示すブロック図である。
【図3】本発明の例示的な実施形態に係るファイルブロックの構造を示す図である。
【図4A】本発明の例示的な実施形態に係る一つのマイクロブロックを含むファイルブロックの構造を示す図である。
【図4B】本発明の例示的な実施形態に係る一つのマイクロブロックを含むファイルブロックの構造を示す図である。
【図5】本発明の例示的な第2の実施形態に係るデータの並列送信のための第2データ送信装置及び第2データ受信装置を示すブロック図である。
【図6】本発明の例示的な実施形態に係る送信ファイルリストの構造を示す図である。
【図7】本発明の例示的な実施形態に係るメタファイルの構造を示す図である。
【図8】本発明の例示的な実施形態に係るレジュームダウンロードリストの構造を示す図である。
【図9】本発明の例示的な第1の実施形態に係るデータの並列送信方法を説明するためのフローチャートである。
【図10】図9に示すデータの並列送信方法をさらに詳細に説明するためのフローチャートである。
【図11】本発明の例示的な実施形態に係るデータの並列受信方法を説明するためのフローチャートである。
【図12】本発明の例示的な他の実施形態に係るデータの並列送受信方法を説明するためのフローチャートである。
【図13】図12のステップS1230をさらに詳細に示すフローチャートである。
【発明を実施するための形態】
【0015】
以上の本発明の目的、他の目的、特徴及び利点は、添付された図面と関連した以下の好ましい実施形態により容易に理解されるはずである。しかしながら、本発明は、ここで説明される実施形態に限定されず、他の形態で具体化されてもよい。むしろ、ここで紹介される実施形態は、開示された内容が徹底かつ完全になるように、そして当業者に、本発明の思想を十分に理解してもらうために提供されるものである。
【0016】
本明細書において、ある構成要素が他の構成要素上にあると言及される場合には、それは、他の構成要素上に直接形成される場合もあり、それらの間に第3の構成要素が介在される場合もあることを意味する。
【0017】
本明細書において第1、第2などの用語が構成要素を述べるために使用された場合、これらの構成要素がこのような用語により限定されてはならない。これらの用語は、単にある構成要素を他の構成要素と区別させるために使用されたものに過ぎない。ここで説明され例示される実施形態は、それの相補的な実施形態も含む。
【0018】
また、あるエレメント(または構成要素)が他のエレメント(または構成要素)上で動作または実行されると言及されるとき、そのエレメント(または構成要素)は、他のエレメント(または構成要素)が動作または実行される環境で動作または実行されるか、または他のエレメント(または構成要素)と直接または間接的に相互作用により動作または実行されると理解されなければならない。
【0019】
あるエレメント、構成要素、装置、またはシステムが、プログラム若しくはソフトウェアからなる構成要素を含むと言及される場合には、明示的な言及がなくても、そのエレメント、構成要素、装置、またはシステムは、そのプログラム若しくはソフトウェアが実行または動作するのに必要なハードウェア(例えば、メモリ、CPU(Central Processing Unit)等)や他のプログラムまたはソフトウェア(例えば、オペレーティングシステム(OS)やハードウェアを駆動するのに必要なドライバ等)を含むと理解されなければならない。
【0020】
また、あるエレメント(または構成要素)が具現化されるに当たって、特別な言及がない限り、そのエレメント(または構成要素)は、ソフトウェア、ハードウェア、またはソフトウェア及びハードウェアのうち、如何なる形態によっても具現化可能であると理解されなければならない。
【0021】
本明細書で使用された用語は、実施形態を説明するためのものであって、本発明を限定するものではない。本明細書において、単数形は、特に言及しない限り、複数形も含む。明細書で使用される「含む」と言及された構成要素は、一つ以上の他の構成要素の存在又は追加を排除しない。
【0022】
以下、図面を参照して本発明を詳細に説明する。以下の特定の実施形態を述べるにおいて、様々に特定された内容は、発明をさらに具体的に説明し、理解を助けるために作成された。しかしながら、本発明を理解することができる程度のこの分野における知識を有した読者は、このような様々に特定された内容がなくても、本発明が実施可能であることを認知できる。ある場合には、周知で発明と大きく関連のない技術的内容は、本発明を説明するにあたって、特別な理由がなくでも、読者の混乱を引き起こさないようにあえて述べないこともあることを予め言及しておく。
【0023】
図1は、本発明の例示的な実施形態に係るデータの並列送信のための送受信システムを示す図である。
【0024】
図1に示すように、データの並列送信のための送受信システムは、データ送信装置10とデータ受信装置20とを備えることができる。データ送信装置10は、後述する第1データ送信装置100又は第2データ送信装置500である。また、データ受信装置20は、第1データ受信装置200又は第2データ受信装置600である。
【0025】
データ送信装置10は、ファイルの送信リクエストを受信すると、i)ファイルの属性情報を含む基本制御情報とii)ファイルを送信するソケット(socket)を一つ以上生成できる。
【0026】
ソケットは、ファイルの送信のためにデータ送信装置10とデータ受信装置20とを接続するソフトウェアであって、一つのソケットは、一つのストリームを構成できる。データ送信装置10とデータ受信装置20との間には、データの並列送信のための複数のストリーム(S1、S2、...、SN、Nは、整数)が提供される。複数のストリーム(S1、S2、...、SN)は、少なくとも一つの通信ポートに割り当てられてもよく、各ストリームは、互いに異なる帯域幅を有するマルチチャネルにより具現化されてもよい。一例として、データ送信装置10とデータ受信装置20とは、TCP(Transmission Control Protocol)チャネルを介して、ファイルを並列ストリーミング送信方式で送受信できるが、これに限定されない。
【0027】
基本制御情報は、ファイルの送信のために最初に第1データ送信装置10と第1データ受信装置20との間で共有される情報である。基本制御情報は、送信するファイルのファイル名、ファイルサイズ、ストリームの個数、ディスクバッファサイズ、全体ブロック個数、ソケットバッファサイズ、IPアドレス、ポート情報及びセッションID(Session identification)などの情報を含むことができる。ストリームの個数は、ファイル送信に使用することができるストリームの最大接続個数で、ディスクバッファサイズは、ディスク(例えば、第2格納媒体250(図2参照))にデータを書き込むためにバッファに割り当てられたブロックのサイズであり、ソケットバッファサイズは、送信プロトコルのカーネル(Kernel)端で使用するバッファのサイズであり、IPアドレスは、データ送信に用いられるIPのアドレスであり、ポート情報は、データ送信に用いられるポートの情報であり、セッションIDは、各ストリームのIDである。
【0028】
図2は、本発明の例示的な第1の実施形態に係るデータの並列送信のための第1データ送信装置100、及び第1データ受信装置200を示す機能ブロック図である。
【0029】
図2に示すように、第1データ送信装置100は、第1格納媒体110、第1インアクティブブロックプール120、第1ディスクリーダ(Disk Reader)130、第1アクティブブロックプール140、第1通信部150及び第1制御部160を備えることができる。
【0030】
第1格納媒体110には、第1データ受信装置200に送信する複数のファイルが格納されるとよい。第1格納媒体110は、ハードディスクドライブのような大容量格納装置であってもよい。
【0031】
第1インアクティブブロックプール(inactive block pool)120は、データが記録されていない複数のファイルブロックをメモリの効率的な使用のために格納(又は保管)する。ファイルブロックは、第1ディスクリーダ130が第1格納媒体110に格納された複数のファイルのうち、送信するファイルを記録する時に使用されるとよい。第1インアクティブブロックプール120は、例えばメモリのような格納装置から構成されてもよく、後述する第1アクティブブロックプール140、第2インアクティブブロックプール220、第2アクティブブロックプール230、第3インアクティブブロックプール530、第3アクティブブロックプール550、第4インアクティブブロックプール630、及び第4アクティブブロックプール550もやはり、メモリのような格納装置から構成されてもよい。一方、第1インアクティブブロックプール120と第1アクティブブロックプール140とが図2で各々別途の機能ブロックとして示されている。しかし、これらは、それぞれ物理的に別途のメモリとして具現化されることと制限的に解釈されてはならず、第1インアクティブブロックプール120と第1アクティブブロックプール140は、1つ又は3つ以上のメモリによっても具現化されてもよい。そして、i)第2インアクティブブロックプール220と第2アクティブブロックプール230、ii)第3インアクティブブロックプール530と第3アクティブブロックプール550、及びiii)第4インアクティブブロックプール630と第4アクティブブロックプール550も、やはり、物理的なメモリの個数に限定されて具現化されるものではない。
【0032】
以下、複数のファイルのうち、第1データ受信装置200にパッケージ送信するファイルを「送信対象ファイル」とし、送信対象ファイルの一例として第1ファイルと第2ファイルとを例に挙げて説明する。
【0033】
「パッケージ送信」は、一つのファイルブロックに第1ファイルを記録した後にもファイルブロックに他のファイルを記録できる空き空間がある場合に、第2ファイルの全体又は一部を空き空間に記録することによって、第1ファイルと第2ファイルとを一つのファイルブロックに送信することを意味する。パッケージ送信時に、一つのファイルブロックには、第1ファイルの全体と第2ファイルの全体が記録されたり、第1ファイルの全体と第2ファイルの一部が記録されたり、第1ファイルの一部と第2ファイルの一部が記録されたり、第1ファイルの一部と第2ファイルの全体が記録されたりしてもよい。
【0034】
図3は、本発明の例示的な実施形態に係るファイルブロックの構造を示す図である。
【0035】
図3に示すように、ファイルブロック(FB:File Block)は、ファイルブロックヘッダ(FH:Fileblock Header)とファイルブロックペイロード(FP:Fileblock Payload)とに区分される。FHには、ファイルブロックがデータを記録していることを表すタグ情報、FPのサイズ、ファイルブロックの圧縮有無を表すフラグが記録されるとよい。FPには、FPのサイズに相当するデータと、記録されたデータの属性情報が記録されるとよい。図3に示すように、データが記録されていない空きファイルブロックは、第1インアクティブブロックプール120に格納されるとよい。
【0036】
第1ディスクリーダ130は、第1インアクティブブロックプール120から空きファイルブロックを読み出してファイルブロックを一つ又は複数のマイクロブロックに区分できる。
【0037】
ここで、マイクロブロックは、マイクロブロックヘッダ(MH:Microblock Header)とマイクロブロックペイロード(MP:Microblock Payload)とを備えるとよい。そして、第1ディスクリーダ130は、各々のマイクロブロックのサイズに対応するデータを送信対象ファイルから読み出して、該当するマイクロブロックに順次に記録することができる。すなわち、第1ディスクリーダ130は、FPのサイズと第1ファイルのサイズとを比較して、一個のマイクロブロック又は複数のマイクロブロックを生成することによってファイルブロックを分割することができる。マイクロブロックは、少なくとも一つ以上のファイルのデータが記録される単位であって、データが記録されるサイズは自在に変化する。
【0038】
詳細に説明すれば、第1ディスクリーダ130は、FPのサイズと第1ファイルのサイズとに応じて、FPに一つ以上の論理的なマイクロブロックを生成できる。例えば、一つのファイルブロックに記録できるデータのサイズが第1ファイルより小さいか、又は同じであると、第1ディスクリーダ130は、ファイルブロックに図4Aのように、一つのマイクロブロックをファイルブロックに生成できる。また、一つのファイルブロックに記録できるデータのサイズが第1ファイルより大きいと、第1ディスクリーダ130は、ファイルブロックに図4Bのように少なくとも2つのマイクロブロックを生成してファイルブロックに記録するとよい。
【0039】
図4Aは、本発明の例示的な実施形態に係る一つのマイクロブロックを備えるファイルブロックの構造を示す図である。
【0040】
図4Aに示すように、ファイルブロックは、FHとFPとに区分され、FPは、一つのMHと一つのMPとに区分される。MHには、MH size、offset、length、File size及びfilepathが記録されてもよい。MH sizeは、MHのサイズであり、offsetは、第1格納媒体110から読み出してMPに記録されたデータが第1ファイルのどの位置に属するかを表すデータアドレスであり、lengthは、MPのサイズ(すなわち、MPに記録されたデータの実際のサイズ)であり、File sizeは、データが属する第1ファイルの全体のサイズであり、filepathは第1ファイルが第1格納媒体110に格納されたディレクトリとファイル名を含むとよい。MPには、MPのサイズ以下のサイズのデータが記録されるとよい。
【0041】
図4Bは、本発明の例示的な実施形態に係る一つのマイクロブロックを含むファイルブロックの構造を示す図である。
【0042】
図4Bに示すように、ファイルブロックは、FHとFPとに区分され、FPは、複数のマイクロブロックヘッダMH1、MH2、MH3と複数のマイクロブロックペイロードMP1、MP2、MP3とに区分される。図4Bには、3個のマイクロブロックMB1、MB2、MB3が示されているが、これは、一例に過ぎず、2個もしくは4個以上のマイクロブロックにより、ファイルブロックが形成されてもよい。
【0043】
各MH1、MH2、MH3には、図4Aを参照して説明されたMH size、offset、length、File size及びfilepathが記録される。例えば、MH1には、MP1に対して説明したMH size、offset、length、File size及びfilepathが記録される。図4Bのように一つのファイルブロックが3個のMB1、MB2、MB3に区分されることは、一つのファイルブロックに第1ないし第3ファイルが記録されてパッケージ送信されることを意味する。ここで、MB1には、第1ファイルの一部又は全体のデータが記録され、MB2には、第2ファイルの全体のデータが記録され、MB3には、第3ファイルの一部又は全体のデータが記録されてもよい。
【0044】
第1ディスクリーダ130が少なくとも一つ以上のマイクロブロックを生成する動作を説明すると、以下の通りである。例えば、ユーザが第1ファイルと第2ファイルとのパッケージ送信をリクエストしたと仮定する。
【0045】
1.第1ディスクリーダ130は、第1ファイルの全体のデータサイズとFPの最大サイズとを比較して第1ファイルの全体をFPにすべて記録できる場合に、一つのMB1を生成し、MP1に第1ファイルの全体のデータを記録する。一方、FPのMPにデータが記録されるので、MPのサイズと第1ファイルの全体のデータのサイズとを比較することが正確な表現であるが、本願発明の説明において、FPのサイズを比較するという表現とMPのサイズを比較するという表現とを、特に区別する実益がない限り、互いに同じ意味として混用して使用するようにする。
【0046】
2.また、第1ディスクリーダ130は、第1ファイルの全体のデータがFPの最大サイズより大きな場合、FPの最大サイズと一致するデータを第1ファイルから読み出して一つのMB1を生成し、第1ファイルの残ったデータは、次のファイルブロックに記録することができる。したがって、FPに他のデータを記録できる空き空間がない場合に、第1ディスクリーダ130は、図4Aに示すように、一つの第1マイクロブロックを生成し、このとき、MP1には、第1ファイルの全体のデータ又は一部のデータのみが記録される。
【0047】
3.これに対し、FPに第1ファイルのデータを記録した後、他のデータを記録できる空き空間がある場合、第1ディスクリーダ130は、次に送信する第2ファイルを読み込んでMB2をさらに生成してファイルブロックを一杯にすることができる。すなわち、第1ディスクリーダ130は、FPの空き空間と第2ファイルの全体のデータのサイズとを比較して、FPの空き空間にMB2を生成し、MP2に第2ファイルの全体又は一部のデータを記録するとよい。これにより、ファイルブロックには、2つのマイクロブロックMB1、MB2が生成される。
【0048】
4.仮に、FPの空き空間のサイズより第2ファイルのサイズが大きい場合、第1ディスクリーダ130は、FPの空き空間に相当するだけのデータを第2ファイルから読み出して記録し、次のファイルブロックに第2ファイルの残りのデータを記録するとよい。
【0049】
第1アクティブブロックプール140は、少なくとも一つ以上のマイクロブロックが生成されたファイルブロックを一時的に保管できる。すなわち、第1アクティブブロックプール140は、少なくとも一つ以上の送信対象ファイルが記録されたファイルブロックを一時的に保管できる。
【0050】
第1通信部150は、図4A又は図4Bに示すように、データが記録された複数のファイルブロックが第1アクティブブロックプール140に保管されると、複数のファイルブロックを第1データ受信装置200に送信できる。第1通信部150は、複数のファイルブロックを並列TCPストリーム方式で第1データ受信装置200に送信できる。このために、第1通信部150は、複数の第1ソケットライター151を含み、第1ソケットライター151は、第1アクティブブロックプール140に未送信のファイルブロックがあるかどうかを確認し、未送信のファイルブロックを第1データ受信装置200に送信できる。第1ソケットライター151は、各々一つのTCPストリームに対応して、ファイルブロックを同時に並列送信できる。第1ソケットライター151は、送信が完了したファイルブロックを第1インアクティブブロックプール120に送信することができる。
【0051】
第1制御部160は、少なくとも一つ以上のプロセッサを利用して、上述した第1データ送信装置100の動作を制御できる。
【0052】
一方、第1データ受信装置200は、第2通信部210、第2インアクティブブロックプール220、第2アクティブブロックプール230、第1ディスクライター(Disk Writer)240、第2格納媒体250及び第2制御部260を備えることができる。
【0053】
第2通信部210は、第1データ送信装置100から並列TCPストリームを介してファイルブロックを受信することができる。このために、第2通信部210は、複数の第1ソケットリーダ211を含み、第1ソケットリーダ211は、第1ソケットライター151と各々一つのTCPストリームを確立することができる。
【0054】
第2インアクティブブロックプール220は、図3のように空きファイルブロックを保管できる。保管されたファイルブロックは、第2通信部210を介して受信されたファイルブロックのデータを記録する時に使用される。
【0055】
第1ソケットリーダ211は、ファイルブロックが受信されるたびに第2インアクティブブロックプール220から空きファイルブロックを取得し、受信されたファイルブロックのデータを空きファイルブロックに記録するとよい。そして、第1ソケットリーダ211は、受信されたデータが記録されたファイルブロックを第2アクティブブロックプール230に保管するとよい。例えば、受信されたファイルブロックが図4Bのように3個のMB1、MB2、MB3を含む場合に、第1ソケットリーダ211は、空きファイルブロックに図4Bと同じ形態でヘッダ情報とファイルのデータを記録するとよい。第1ソケットリーダ211は、ファイルのパッケージ送信が完了するまで、上述した動作を繰り返す。
【0056】
第1ディスクライター240は、受信されたファイルブロックが各々少なくとも一つ以上のマイクロブロックを含む場合、マイクロブロック単位でデータを読み込んで第2格納媒体250に記録するとよい。
【0057】
詳細に説明すれば、第1ソケットリーダ211が上述した動作を行う間に、第1ディスクライター240は、第2アクティブブロックプール230にファイルブロックがあるかどうかを確認する。第1ディスクライター240は、第2アクティブブロックプール230にファイルブロックがあると、ファイルブロックのMHに記録された情報を参照して、MPに記録されたデータを第2格納媒体250に記録できる。ファイルブロック、すなわち、MPに記録されたデータが第2格納媒体250に記録されると、第1ディスクライター240は、空きファイルブロックを第2インアクティブブロックプール220に伝達できる。
【0058】
第1ディスクライター240が少なくとも一つ以上のマイクロブロックに記録されたデータを第2格納媒体250に記録する動作について説明すると、以下のとおりである。
【0059】
まず、ファイルブロックが図4Aのように一つのマイクロブロックを含む場合、第1ディスクライター240は、MHのオフセットを確認し、第2格納媒体250のうち、オフセットに対応する位置にMPに記録されたデータを記録できる。例えば、MPに記録されたデータが第1ファイルのデータで、オフセットが「0」である場合に第1ディスクライター240は、データが第1ファイルの最初の部分に位置すると判定し、第2格納媒体250のうち、第1ファイルが記録される領域のうち、最初の部分に記録できる。第1ディスクライター240は、MHのFilesizeから第1ファイルの全体サイズが分かるので、第1ファイルが第2格納媒体250で占める大きさが分かり、第1ファイルが記録される領域を予め割り当てることができる。
【0060】
また、ファイルブロックが図4Bのように3個のMB1、MB2、MB3を含む場合に、第1ディスクライター240は、MH1のfilepathからファイル名を確認し、確認されたファイル名が第1ファイルであると、第1ファイルをMH1に記録されたオフセットを参照してMP1に記録されたデータを第2格納媒体250に記録できる。以後、第1ディスクライター240は、MH2のfilepathからファイル名を確認し、確認されたファイル名が第2ファイルであると、第2ファイルをMH2に記録されたオフセットを参照してMP2に記録されたデータを第2格納媒体250に記録できる。MB3に記録されたデータを記録する過程も上述したとおりである。
【0061】
第2制御部260は、少なくとも一つ以上のプロセッサを利用して上述した第1データ受信装置200の動作を制御できる。
【0062】
図5は、本発明の例示的な第2の実施形態に係るデータの並列送信のための第2データ送信装置500及び第2データ受信装置600を示すブロック図である。
【0063】
第2データ送信装置500及び第2データ受信装置600は、送信対象ファイルをパッケージ送信しながらレジュームダウンロード送信をすることができる。このために、第2データ送信装置500は、第3格納媒体510、リスト管理部520、第3インアクティブブロックプール530、第2ディスクリーダ540、第3アクティブブロックプール550、第3通信部560及び第3制御部570を備えることができる。
【0064】
図5に示す第3格納媒体510、第3インアクティブブロックプール530、第2ディスクリーダ540、第3アクティブブロックプール550、第3通信部560及び第3制御部570の全般的な動作は、図2を参照して説明された第1格納媒体110、第1インアクティブブロックプール120、第1ディスクリーダ540、第1アクティブブロックプール140、第1通信部150及び第1制御部160の動作とそれぞれ同一又は類似しているので、これらについての詳細な説明を省略する。
【0065】
リスト管理部520は、第2データ受信装置600にパッケージ送信する送信対象ファイルにインデックスを割り当て、送信対象ファイルのインデックス、ファイル名及びファイルサイズに対する情報を送信ファイルリストに加えることによって、1又は複数の送信ファイルリストを作成できる。例えば、リスト管理部520は、100個の送信対象ファイルを第2データ受信装置600に送信しようとする場合に、100個のファイルに0〜99までのインデックスを割り当て、100個のファイルを例えば20個ずつ分類して5個の第1ないし第5送信ファイルリストを作ることができる。リスト管理部520は、第2データ受信装置600に作成した送信対象ファイルを送信する。
【0066】
また、リスト管理部520は、複数の送信ファイルリストを第2データ受信装置600に送信してもよい。また、リスト管理部520は、先に送信した送信ファイルリストに対して第2データ受信装置600のリスト確認部620から応答(例えば、レジュームダウンロードリスト)があると、次に送信ファイルリストを送信してもよい。
【0067】
図6は、本発明の例示的な実施形態に係る送信ファイルリストの構造を示す図である。
【0068】
図6に示すように、リスト管理部520は、第1〜第nインデックス、第1〜第nファイル名、第1〜第nファイルサイズ、及び終了識別子を含む送信ファイルリストを作成することができる。第1〜第nインデックスは、送信ファイルリストに含まれるn個のファイルに割り当てられたインデックスである。第1〜第nファイル名は、第1ないし第nインデックスに対応する各ファイルのファイル名である。第1〜第nファイルサイズは、第1〜第nインデックスに対応する各ファイルのサイズである。終了識別子は、もうこれ以上送信するファイルがない場合を表示するための終結文字(end delimiter)であって、最後の送信ファイルリストに追加で記載されるとよい。
【0069】
リスト管理部520は、送信するファイルが全部でm個(m>n)ある場合に、図6のような送信ファイルリストを2つ以上作成することができる。
【0070】
図6に示す送信ファイルリストの例を参照すれば、送信ファイルリストは、第1〜第nファイルに対するファイル情報を含んでいる。詳細には、送信ファイルリストは、第1〜第nファイルのインデックスとして0,1,...,n−1と、第1〜第nファイルのファイル名としてa,so.txt,...,b.jpgと、第1〜第nファイルのサイズとして10bytes,3000bytes,...,1000bytesを含んでいる。
【0071】
また、図5に示すように、第3通信部560は、複数の送信ファイルリストを順次に、並列TCPストリームとは異なる独立的なチャネルを介して第2データ受信装置600に送信できる。また、第3通信部560は、複数の送信ファイルリストを順次に第2データ受信装置600に送信する間に、ファイルブロックを並列TCPストリームを介して第2データ受信装置600に送信できる。
【0072】
第2ディスクリーダ540は、レジュームダウンロードリストが第2データ受信装置600から受信されると、レジュームダウンロードリストに含まれたインデックスに対応するファイルを送信対象ファイルから確認し、該確認されたファイルのうち、レジュームダウンロードリストに含まれたオフセットに対応する位置からのデータをファイルブロックに記録してレジュームダウンロード送信を試みることができる。第2ディスクリーダ540は、図4A又は図4Bを参照して説明されたファイルブロック(又はマイクロブロック)を利用して、レジュームダウンロードするファイルのデータをファイルブロックに記録できる。
【0073】
一方、第2データ受信装置600は、第4通信部610、リスト確認部620、第4インアクティブブロックプール630、第4アクティブブロックプール640、第2ディスクライター650、第4格納媒体660及び第4制御部670を備えることができる。図5に示す第4通信部610、第4インアクティブブロックプール630、第4アクティブブロックプール640、第2ディスクライター650、第4格納媒体660、及び第4制御部670の全般的な動作は、図2を参照して説明された第2通信部210、第2インアクティブブロックプール220、第2アクティブブロックプール230、第1ディスクライター240、第2格納媒体250、及び第2制御部260の動作を含むので、詳細な説明を省略する。
【0074】
第4通信部610は、第2データ送信装置500から送信ファイルリストを順次に受信し、各送信ファイルリストに対する応答であるレジュームダウンロードリスト(後述するリスト確認部620により作成されたものである)を第2データ送信装置500に送信できる。また、送信ファイルリストが受信される間に、第4通信部610は、第2データ送信装置500からファイルブロックを並列TCPストリームを介してファイルブロックを受信することができる。送信ファイルリストは、第2データ送信装置500の送信対象ファイルのインデックス、ファイル名及びファイルサイズに対する情報を含む。
【0075】
リスト確認部620は、第2データ送信装置500から受信された送信ファイルリストとファイルブロックを利用して既に受信された複数のファイルを比較して、既受信の複数のファイルのうち、レジュームダウンロードするファイルを決定し、決定されたファイルのインデックスとオフセット(決定されたファイルのうち、レジュームダウンロードするデータのスタートアドレスを表す)を含むレジュームダウンロードリストを作成して、第2データ送信装置500に送信できる。リスト確認部620によって作成されるレジュームダウンロードリストを、図8を参照して説明する。
【0076】
リスト確認部620は、送信ファイルリストに含まれたファイルが第4格納媒体660に格納されていない場合、すなわち、送信ファイルリストを先に受信した場合、送信ファイルリストに含まれたファイルの全体送信をリクエストするレジュームダウンロードリストを作成することができる。
【0077】
図7は、本発明の例示的な実施形態に係るメタファイルの構造を示す図である。
【0078】
図7に示すように、第2ディスクライター650は、FBの最大送信サイズ、受信された累積ファイルサイズ、第1番目のMB(又はFB)のサイズ、i番目のMB(又はFB)のフラグ及び終了識別子を含むメタファイルを作成することができる。
【0079】
第1ファイルが受信された場合、「FBの最大送信サイズ」は、第1ファイルを送信するファイルブロックに割り当てられた最大送信量である。「受信された累積ファイルサイズ」は、少なくとも一つ以上のファイルブロックを介して受信された第1ファイルの累積サイズ(累積量)である。例えば、「受信された累積ファイルサイズ」は、第1ファイルが3個のファイルブロックを介して受信された場合、3個のファイルブロックに記録された第1ファイルのサイズを足し合せたものである。第1ファイルを送信するファイルブロックのうち、一つが未だ受信されていない場合に、第1ファイルの受信された累積ファイルサイズは、第1ファイルの実際のサイズより小さくなる。
【0080】
「第1番目のMBのサイズ」は、第1ファイルを最初に送信したマイクロブロックのサイズであって、「第1番目のMBのサイズ」は、FPの最大MPサイズと同一であるか、又はFPの最大MPサイズより小さいとよい。「第1番目のMBのサイズ」がFPより小さい場合は、一つのファイルブロックに少なくとも2つのファイルが記録されている場合である。i番目のMBのフラグは、第1ファイルを連続的に送信した後、MBの受信有無を表す情報である。i=2,3,...,m(mは、正数)である。fi=0は、第1ファイルのデータを記録したi番目のMBが受信されていないことを意味し、fi=1は、i番目のMBが受信されたことを意味する。
【0081】
図7に示すメタファイルの例を参照すれば、一つのFBが最大1Mbytesのデータを送信できる場合に、第2ディスクライター650は、「FBの最大送信サイズ」に1Mbytesを記録する。第1ファイルが4個の第1ないし第4ファイルブロックを介して受信された場合、第2ディスクライター650は、受信された累積ファイルサイズ」に4個のファイルブロックに記録された第1ファイルのサイズを合せた2.5Mbytesを記録する。第1ファイルを最初に送信したファイルブロックが第1ファイルブロックである場合、第2ディスクライター650は、「1ST MBのサイズ」に第1ファイルブロックに記録された第1ファイルのデータのサイズ、すなわち、第1ファイルのデータを記録したMBのサイズを記録する。第1ファイルの残ったデータを記録した第2ファイルブロックと第4ファイルブロックとは、正常に受信され、第3ファイルブロックは、受信されない場合、第2ディスクライター650は、f2に「1」を記録し、f3に「0」を記録し、f4に「1」を記録する。
【0082】
第2ディスクライター650は、メタファイルを作成しながら、それと同時にMPに記録されたデータをMHに記録されたオフセットを参照して第4格納媒体660に格納することができる。作成されたメタファイルは、第2ディスクライター650が使用するメモリ(図示せず)に格納されるとよい。したがって、メモリには、第2データ送信装置500から受信されたファイルのメタファイルが格納されるとよい。
【0083】
第2ディスクライター650は、少なくとも一つのファイルブロックを介して受信された少なくとも一つの以上のファイルごとにメタファイルを作成することができる。また、第2ディスクライター650は、受信されたファイルの途中からの欠落又は受信されたファイルの中間の欠落がない状態ですべて送信されたと確認されると、メタファイルを削除できる。第2ディスクライター650は、メタファイルのフラグがすべて1で、第1番目のMBのサイズが0でないと、ファイルがすべて受信されて第4格納媒体660に格納されたと判定できる。
【0084】
以下、リスト確認部620がメモリに格納されたメタファイルを参照してレジュームダウンロードリストを作成し、リスト管理部520がレジュームダウンロードファイルのデータを再送信する動作について説明する。
【0085】
第2データ送信装置500から受信された送信ファイルリストに含まれたファイル名に対応するファイルが、既に受信された複数のファイルのうちの一つである第1ファイルであり、第1ファイルのメタファイルが存在すると、リスト確認部620は、第1ファイルをレジュームダウンロードするファイルと決定できる。すなわち、リスト確認部620は、送信ファイルリストに含まれたファイルを確認し、確認されたファイルのうち、メタファイルが存在するファイルは、すべてレジュームダウンロードするファイルと決定できる。リスト確認部620は、レジュームダウンロードするファイルの情報を利用して、レジュームダウンロードリストを作成することができる。
【0086】
図8は、本発明の例示的な実施形態に係るレジュームダウンロードリストの構造を示す図である。
【0087】
図8に示すように、リスト確認部620は、レジュームダウンロードするファイルのインデックス、オフセット及び終了識別子を含むレジュームダウンロードリストを作成することができる。リスト確認部620は、データ送信量を最小化するためにレジュームダウンロードするファイルのファイル名をレジュームダウンロードリストに含めなくてもよく、これは選択事項である。
【0088】
「レジュームダウンロードするファイルのインデックス」は、レジュームダウンロードするファイルに割り当てられた固有識別子であって、図6の送信ファイルリストから取得できる。「オフセット」は、レジュームダウンロードするファイルのうち、レジュームダウンロードするデータのスタートアドレスを表す。「終了識別子」は、送信ファイルリストに含まれたファイルのうち、レジュームダウンロードするファイルの情報をレジュームダウンロードリストにすべて記録した後に、現在の送信ファイルリストに対してもうこれ以上レジュームダウンロードするファイルがないことを通知する終結文字である。
【0089】
図8に示すレジュームダウンロードリストの例を参照すれば、リスト確認部620は、一つの送信ファイルリストに含まれたファイルのうち、レジュームダウンロードするファイルとして決定されたファイルのインデックスがそれぞれ「0」と「3」である場合に、「0」と「3」をインデックス領域に記録する。
【0090】
リスト確認部620は、該当するメタファイルの「1ST MBのサイズ」とフラグ情報を参照してオフセット(レジュームダウンロードするデータのスタートアドレス)を算出できる。
【0091】
詳細に説明すれば、レジュームダウンロードするファイルとして決定されたファイルが第1ファイルで、第1ファイルが複数のファイルブロックを介して受信された場合に、リスト確認部620は、第1ファイルのメタファイルに第1ファイルを最初に送信した第1番目のファイルブロック(i=1)の送信量(1ST MBのサイズ)が0と記録されていると、第1ファイルのオフセットを0とするレジュームダウンロードリストを作成することができる。このような場合、第2データ送信装置500は、第1ファイルを始めから再送信する。
【0092】
また、リスト確認部620は、第1ファイルが複数のファイルブロックを介して受信された場合、メタファイルに第1ファイルを最初に送信した第1番目のファイルブロック(i=1)の送信量がkバイト(kは、正数)と記録されており、第1ファイルをi(i=2,3,...,m)番目に送信したファイルブロックのフラグが0であると、「kバイト+(i−2)nバイト」を第1ファイルのオフセットとして算出できる。nバイトは、図7に示す「FBの最大送信サイズ」である。
【0093】
図8に示すレジュームダウンロードリストの例を参照すれば、リスト確認部620は、一つの送信ファイルリストに含まれたファイルのうち、レジュームダウンロードするファイルとして決定された第1ファイルと第2ファイルのインデックスがそれぞれ「0」と「3」である場合に、「0」と「3」とをインデックス領域に記録する。図7に示すメタファイルの例が第1ファイルのメタファイルである場合に、リスト確認部620は、次のように第1ファイルのオフセットを算出する。
【0094】
オフセット=kバイト+(i−2)nバイト=0.5Mbytes+(3−2)1Mbytes=1.5Mbytes
したがって、リスト確認部620は、第1ファイルのインデックスである「0」とオフセットである「1.5Mbytes」をレジュームダウンロードリストに図8のように記録できる。これと同じ方法によって、リスト確認部620は、第2ファイルのインデックスである「3」とオフセットである「1530bytes」とをレジュームダウンロードリストに図8のように記録できる。図8のようにレジュームダウンロードリストを受信した第2データ送信装置500は、レジュームダウンロードリストに含まれたインデックスに対応するファイルを確認し、確認されたファイルのうち、オフセットに対応する位置(又はその次の位置)からのデータを第2データ受信装置600にファイルブロックを利用してパッケージ方式で再送信できる。
【0095】
上述した本発明の例示的な第2の実施形態に係るリスト管理部520、リスト確認部620、第2ディスクリーダ540、第2ディスクライター650、第2ソケットライター561及び第2ソケットリーダ611は、スレッド(thread)として動作して同時に実行されてもよい。
【0096】
図9は、本発明の例示的な第1の実施形態に係るデータの並列送信方法を説明するためのフローチャートである。
【0097】
図9のデータの並列送信方法を行う第1データ送信装置は、図2を参照して説明した第1データ送信装置100であるとよい。
【0098】
図9に示すように、第1データ送信装置は、ユーザから複数のファイルのパッケージ送信リクエストを受信する(S910)。以下、第1及び第2ファイルのパッケージ送信を例に挙げて説明する。
【0099】
第1データ送信装置は、パッケージ送信がリクエストされたファイルのうち、第1ファイルのデータを格納媒体から読み出して、MBを生成する(S920)。ステップS920にて、第1データ送信装置は、第1ファイルのデータを読み出す前にインアクティブブロックプールから持ってきたFPの最大サイズと第1ファイルの全体サイズとを比較してMBを生成できる。これに対しては、図10を参照して詳細に説明する。
【0100】
第1データ送信装置は、生成されたMBの中のMPに、読み出したデータを記録した後、FPにMBを格納する(S930)。
【0101】
第1データ送信装置は、FPにデータをさらに記録できる領域が残っていているかどうかを確認する(S940)。
【0102】
残った領域がないと(S940−N)、第1データ送信装置は、FP全体にデータが記録されたFBを第1データ受信装置に並列TCPストリーム方式を介して送信する(S950)。
【0103】
これに対し、残った領域があると(S940−Y)、パッケージ送信する全てのファイルがFBに記録されたかどうかを確認する(S960)。ステップS960にて、第1データ送信装置は、第1ファイルの全てがFBに記載されたと判定し、さらに送信する第2ファイルがあるかどうかを確認する。
【0104】
パッケージ送信する全てのファイルが記録されていると(S960−Y)、第1データ送信装置は、FPの一部が空いているFBを第1データ受信装置に送信する(S970)。
【0105】
パッケージ送信するファイルが残っていると(S960−N)、第1データ送信装置は、ステップS920に進んで第2ファイルのデータを読み出し、ステップS920ないしステップS970を繰り返す。
【0106】
図10は、図9に示すデータの並列送信方法をさらに詳細に説明するためのフローチャートである。
【0107】
図10に示すように、第1データ送信装置は、ユーザから複数のファイルのパッケージ送信リクエストを受信する(S1000)。以下、第nファイル及び第n+1ファイルのパッケージ送信を例に挙げて説明する。
【0108】
第1データ送信装置は、FBに割り当て可能なMPの最大サイズと第nファイルのデータのサイズとを比較する(S1005)。ステップS1005にて、第1データ送信装置は、インアクティブブロックプールからFBを持ってきて第1格納媒体から第nファイルを読み出して、サイズを比較する。
【0109】
MPの最大サイズが第nファイルのデータのサイズより大きいと(S1010−Y)、第1データ送信装置は、第nファイルのデータのサイズに相当するMB(以下、MBnとする)を生成する(S1015)。
【0110】
そして、第1データ送信装置は、MBnのMHnとMPnにそれぞれヘッダ情報と第nファイルのデータとを記録する(S1020)。ステップS1020にて記録されるヘッダ情報は、図4Aを参照して説明された情報であるとよい。
【0111】
第1データ送信装置は、パッケージ送信がリクエストされた第n+1ファイルが記録されたかどうかを確認し、記録されていないと(S1025−N)、第1データ送信装置は、FPのうちMBnを除いて残ったMPの最大サイズと第n+1ファイルのデータのサイズを比較する(S1030)。
【0112】
そして、第1データ送信装置は、「n=n+1」と定めた後(S1035)、ステップS1010に進んでステップS1015ないしステップS1020を繰り返し行う。
【0113】
これに対して、第1データ送信装置は、第n+1ファイルが記録されたことが確認されると(S1025−Y)、FPの一部が空いているFBを第1データ受信装置に送信する(S1040)。ステップS1040にて送信されるFBには、第nファイルと第n+1ファイルとが記録されてパッケージ送信される。
【0114】
一方、ステップS1010にて、MPの最大サイズと第nファイルのデータのサイズが同一であると(S1045−Y)、第1データ送信装置は、第nファイルのデータのサイズに相当するMBnを生成する(S1050)。
【0115】
そして、第1データ送信装置は、MBnのMHnとMPnにそれぞれヘッダ情報と第nファイルのデータとを記録する(S1055)。
【0116】
第nファイルのデータが記録されると、第1データ送信装置は、パッケージ送信がリクエストされた第n+1ファイルが記録されたかどうかを確認し、記録されていないと(S1060−N)、第1データ送信装置は、「n=n+1」と定めた後(S1065)、ステップS1005に進む。
【0117】
これに対し、第1データ送信装置は、第n+1ファイルが記録されたことが確認されると(S1060−Y)、FP全体にデータが記録されたFB(MBnを含むFB)を含む複数のFBを第1データ受信装置に送信する(S1070)。ステップS1070にて送信されるFBには、第nファイルと第n+1ファイルとが記録されて、当該FBがパッケージ送信される。
【0118】
一方、MPの最大サイズと第nファイルのデータのサイズが同一でなく(S1045−N)、MPの最大サイズより第nファイルのデータのサイズが大きな場合(S1075)、第1データ送信装置は、MPの最大サイズに相当するMBnを生成する(S1080)。
【0119】
第1データ送信装置は、MBnのMHnとMPnにそれぞれヘッダ情報と第nファイルのデータを記録する(S1085)。
【0120】
そして、第1データ送信装置は、次のFBのMPの最大サイズと第nファイルの残ったデータのサイズとを比較する(S1090)。
【0121】
これと共に、第1データ送信装置は、「FB=次のFB」と定め、「第nファイルのサイズ=第nファイルの残ったデータのサイズ」と定めた後(S1095)、S1010ステップに進む。これにより、第1データ送信装置は、ステップS1010ないしステップS1095を繰り返し行って、第nファイルの残ったデータを次のFBに記録する。
【0122】
図11は、本発明の例示的な実施形態に係るデータの並列受信方法を説明するためのフローチャートである。
【0123】
図11のデータの並列受信方法を行う第1データ受信装置は、図2を参照して説明された第1データ受信装置200である。
【0124】
図11に示すように、第1データ受信装置は、第1データ送信装置から受信されたFBのヘッダ情報とデータを、空いているFBに記録する(S1110)。ステップS1110において、第1データ受信装置は、受信されたFBが複数のMBを含む場合、空いているFBを複数のMBに区分して同様にデータを記録してもよい。
【0125】
第1データ受信装置は、ヘッダ情報とデータが記録されたFBをアクティブブロックプールに保管する(S1120)。
【0126】
第1データ受信装置は、アクティブブロックプールに保管されたFBからデータをMB単位で読み出して、第2格納媒体に記録する(S1130)。ステップS1130において、第1データ受信装置は、MHに記録されたオフセットを参照して、MPに記録されたデータを第2格納媒体に記録する。
【0127】
第1データ受信装置は、FBに残ったMBがあると(S1140−Y)、ステップS1130を繰り返し行う。
【0128】
これに対し、FBに残ったマイクロブロックがないと(S1140−N)、すなわち、FPに記録されたデータがすべて第2格納媒体に記録されると、アクティブブロックプールに他のFBがあるかどうかを確認する(S1150)。
【0129】
アクティブブロックプールに他のFBがあると(S1150−Y)、第1データ受信装置は、ステップS1110に進む。
【0130】
これに対し、アクティブブロックプールに他のFBがないと(S1150−N)、第1データ受信装置は、パッケージ送信がリクエストされたファイルの格納が完了したかどうかを確認する(S1160)。ステップS1160にて、第1データ受信装置は、MHのFile sizeに記録されたサイズと実際に受信されたデータのサイズとが同じ場合に、ファイルの格納が完了したと確認することができる。
【0131】
格納が完了した場合(S1160−Y)に、第1データ受信装置は、パッケージファイルの受信が完了したことを報告する受信完了メッセージを第1データ送信装置に送信する(S1170)。
【0132】
格納が完了しない場合(S1160−N)、第1データ受信装置は、ステップS1150に進む。
【0133】
図12は、本発明の例示的な他の実施形態に係るデータの並列送受信方法を説明するためのフローチャートである。
【0134】
図12のデータの並列送受信方法を行う第2データ送信装置と第2データ受信装置とは、図5を参照して説明された第2データ送信装置500と第2データ受信装置600である。
【0135】
図12に示すように、第2データ送信装置は、ユーザから複数のファイルのパッケージ送信リクエストを受信する(S1205)。
【0136】
第2データ送信装置は、パッケージ送信する送信対象ファイルを分割して、複数のグループを作る(S1210)。
【0137】
第2データ送信装置は、各グループに属するファイルの情報に基づき、図6のような送信ファイルリストを作成する(S1215)。すなわち、第2データ送信装置は、一つのグループに対して一つの送信ファイルリストを作成する。送信ファイルリストは、一つのグループに属したファイルのインデックス、ファイル名及び全体ファイルサイズに対する情報を含む。
【0138】
第2データ送信装置は、ステップS1215にて作成された送信ファイルリストを第2データ受信装置に送信する(S1220)。
【0139】
第2データ送信装置は、作成された送信ファイルリストを送信する間に、残りのグループに対する送信ファイルリストの作成が完了したかどうかを確認する(S1225)。
【0140】
作成が完了していない場合(S1225−N)、第2データ送信装置は、残りのグループに対する送信ファイルリストを作成して送信するステップS1215及びステップS1220を繰り返し行う。
【0141】
第2データ受信装置は、ステップS1220において受信された送信ファイルリストと、FBを介して既に受信された複数のファイルとを比較して、既に受信された複数のファイルのうち、レジュームダウンロードするファイルを決定し、決定されたファイルのインデックスとオフセット(決定されたファイルのうち、レジュームダウンロードするデータのスタートアドレスを表す)を含むレジュームダウンロードリストを作成する(S1230)。ステップS1230を、図13を参照してさらに詳細に説明する。
【0142】
第2データ受信装置は、作成されたレジュームダウンロードリストを第2データ送信装置に送信する(S1235)。
【0143】
第2データ送信装置は、受信されたレジュームダウンロードリストを参照して、パッケージ送信するファイルのデータを少なくとも一つ以上のFBに記録する(S1240)。ステップS1240において、第2データ送信装置は、図9及び図10を参照して説明したように、MB単位でデータをFBに記録する。
【0144】
第2データ送信装置は、ステップS1240においてデータが記録された少なくとも一つ以上のFBを第2データ受信装置に送信する(S1245)。ステップS1240及びステップS1245において、第2データ送信装置は、レジュームダウンロードリストに含まれたインデックスに相当するファイルを第3格納媒体から確認し、該確認されたファイルのうち、オフセットに対応する位置(又はその次の位置)からのデータを、第2データ受信装置にFBを利用してパッケージ方式で初期送信又は再送信する。例えば、第2データ送信装置は、レジュームダウンロードリストのオフセットが「0」である場合に、ファイルを始めから送信し、オフセットが「0」でないmbytes(mは、正数)である場合に、ファイルのうち、mbytesに対応する位置からのデータを送信する。
【0145】
第2データ受信装置は、受信された少なくとも一つ以上のFBのヘッダ情報とデータとを空いている少なくとも一つ以上のFBに記録する(S1250)。ステップS1250において、第2データ受信装置は、受信されたFBが複数のMBを含む場合に、FBを複数のMBに区分して同様にデータを記録できる。
【0146】
第2データ受信装置は、ヘッダ情報とデータが記録された少なくとも一つのFBをアクティブブロックプールに順次に保管する(S1255)。
【0147】
第2データ受信装置は、アクティブブロックプールに保管されたFBのうち、MPに記録されたファイル(以下では、「第1ファイル」とする)のメタファイルが存在しているかどうかを確認する(S1260)。
【0148】
第1ファイルのメタファイルが第2データ受信装置に存在しないと(S1260−N)、第2データ受信装置は、第1ファイルのメタファイルを作成する(S1265)。ステップS1265において、第2データ受信装置は、図7のような形態のメタファイルを作成することができる。
【0149】
第2データ受信装置は、FBのMPに記録された第1ファイルのデータを第4格納媒体に格納する(S1270)。
【0150】
第1ファイルが複数のFBを介して受信される場合、第2データ受信装置は、FBが受信されるごとにメタファイルをアップデートする(S1275)。
【0151】
第2データ受信装置は、FBに記録されたデータがすべて第4格納媒体に記録されていると、アクティブブロックプールに他のFBがあるかどうかを確認する(S1280)。
【0152】
アクティブブロックプールに他のFBがあると(S1280−Y)、第2データ受信装置は、ステップS1260に進む。
【0153】
反面、アクティブブロックプールに他のFBがないと(S1280−N)、第2データ受信装置は、ファイルの格納が完了したかどうかを確認し、パッケージファイルの受信又はレジュームダウンロード受信が完了したことを報告する受信完了メッセージを第2データ送信装置に送信する(S1285)。
【0154】
上述したデータ並列送受信方法において、第2データ送信装置は、第2データ受信装置がレジュームダウンロードリストを作成する間に、ステップS1215〜ステップS1225を並列実行することができ、ステップS1215〜ステップS1235が行われる間にステップS1240〜ステップS1245を並列実行してもよい。
【0155】
図13は、図12のステップS1230をさらに詳細に示すフローチャートである。
【0156】
図13に示すように、第2データ受信装置は、第2データ送信装置から送信ファイルリストを受信する(S1300)。
【0157】
第2データ受信装置は、受信された送信ファイルリストに含まれたファイルのうち、現在処理する第1ファイルが第4格納媒体に格納されているかどうかを確認する(S1310)。第2データ受信装置は、送信ファイルリストに記録された第1ファイルのファイル名又はインデックスと第4格納媒体に格納されたファイル名又はインデックスを比較して、第1ファイルの格納有無を確認することができる。
【0158】
第1ファイルが第4格納媒体に格納されていると(S1310−Y)、第2データ受信装置は、送信ファイルリストに記録された第1ファイルのサイズと第4格納媒体に格納された第1ファイルのサイズとが同一であるかどうか、第1ファイルのメタファイルがメモリに格納されていないかどうかを確認する(S1320)。
【0159】
互いにサイズが同一であり、かつ第1ファイルのメタファイルが格納されていないと(S1320−Y)、第2データ受信装置は、第1ファイルの送信が完了したと判定し、レジュームダウンロードをしない(S1330)。
【0160】
これに対し、互いにサイズが同一でないか、又はメタファイルが格納されていると(S1320−N)、第2データ受信装置は、メタファイルの第1番目のMB(1ST MB)のサイズが「0」であるかどうかを確認する(S1340)。
【0161】
メタファイルの第1番目のMBのサイズが0でないと(S1340−N)、第2データ受信装置は、第1ファイルを初めて送信したFB(又はMB)が受信されているのでi=2(iは、第1ファイルをi番目に送信したMBである)に設定する(S1350)。
【0162】
そして、第2データ受信装置は、第2番目のMB(i=2)のフラグであるfiが「0」であるかどうかを確認する(S1360)。
【0163】
ステップS1360にてfi=0(i=2)であると(S1360−Y)、第2データ受信装置は、第1ファイルを送信した第2番目のFBが受信されていないと判定し、レジュームダウンロードするアドレスであるオフセットを算出する(S1370)。ステップS1370において、第2データ受信装置は、「オフセット=kバイト+(i−2)nバイト」を利用して、第1ファイルのオフセットを算出する。算出されたオフセットは、第1ファイルのメタファイルに記録された受信された累積ファイルサイズと同じであってもよい。
【0164】
ステップS1360にてfi=0(i=2)でないと(S1360−N)、第2データ受信装置は、iに1を加え(S1390)、再度ステップS1360を実行する。第2データ受信装置は、最後のiまでこの処理を繰り返す。
【0165】
第2データ受信装置は、第1ファイルのインデックスとステップS1370にて算出されたオフセットをレジュームダウンロードリストに記録する(S1380)。
【0166】
図13は、一つの送信ファイルリストに含まれた複数のファイルのうち、第1ファイルのオフセットを求める過程に対して示すものであって、第2データ受信装置は、送信ファイルリストに含まれたすべてのファイルに対してステップS1320〜ステップS1380を繰り返し行うことができる。これにより、第2データ受信装置は、一つの送信ファイルリストに対する応答であるレジュームダウンロードリストを最終的に作成して、第2データ送信装置に送信する(S1235)。
【0167】
以上、本発明は、限定された実施形態と図面により説明されたが、本発明は、上記の実施形態に限定されるものではなく、本発明が属する分野における通常の知識を有した者であれば、このような記載から多様な修正及び変形が可能である。したがって、本発明の範囲は、説明された実施形態に限定されてはならず、後述する特許請求の範囲だけでなく、この特許請求の範囲と均等なものによって定められなけばならない。
【符号の説明】
【0168】
100 第1データ送信装置
110 第1格納媒体
120 第1インアクティブブロックプール
130 第1ディスクリーダ
140 第1アクティブブロックプール
150 第1通信部
160 第1制御部
200 第1データ受信装置
210 第2通信部
220 第2インアクティブブロックプール
230 第2アクティブブロックプール
240 第1ディスクライター
250 第2格納媒体
260 第2制御部

【特許請求の範囲】
【請求項1】
複数のファイルを送信するデータ送信装置であって、
ファイルブロックを一つ又は複数のマイクロブロックに区分し、前記一つ又は複数のマイクロブロックの各々のサイズに対応するデータを前記複数のファイルから読み出して、前記一つ又は複数のマイクロブロックに順次に記録するディスクリーダと、
前記ファイルブロックに含まれる一つ又は複数のマイクロブロックにデータが記録されると、前記ファイルブロックをデータ受信装置に送信する通信部と、を備え、
前記一つ又は複数のマイクロブロックは、各々マイクロブロックヘッダ及びマイクロブロックペイロードに区分され、
前記ディスクリーダは、前記マイクロブロックヘッダに、前記マイクロブロックペイロードに記録されるデータのアドレスを表すオフセットを記録し、前記マイクロブロックペイロードに、前記データを記録することを特徴とするデータ送信装置。
【請求項2】
前記ディスクリーダは、前記複数のファイルのうち、第1ファイルのデータを前記複数のマイクロブロックに記録し、前記ファイルブロックに前記第1ファイルのデータを記録したマイクロブロック以外の空き領域があると、追加のマイクロブロックを生成し、前記複数のファイルのうち、第2ファイルのデータを前記追加のマイクロブロックに記録することを特徴とする請求項1に記載のデータ送信装置。
【請求項3】
前記ディスクリーダは、前記ファイルブロック全体に、前記複数のファイルのうちの第1ファイルのデータが記録される場合に、前記ファイルブロックを一つのマイクロブロックヘッダと一つのマイクロブロックペイロードに区分することを特徴とする請求項1に記載のデータ送信装置。
【請求項4】
前記データ受信装置に送信するファイルの全てをもとに送信ファイルリストを生成し、前記送信ファイルリストを前記データ受信装置に送信するリスト管理部、をさらに備え、
前記送信ファイルリストは、ファイルのインデックス、ファイル名及びファイルサイズに対する情報を含むことを特徴とする請求項1に記載のデータ送信装置。
【請求項5】
前記通信部は、前記送信ファイルリストが前記データ受信装置に順次に送信される間に、前記データが記録された複数のマイクロブロックを含む前記ファイルブロックを並列ストリームを利用して送信することを特徴とする請求項4に記載のデータ送信装置。
【請求項6】
前記ディスクリーダは、前記複数のファイルのうち、前記データ受信装置から受信したレジュームダウンロードリストに含まれたインデックスに対応するファイルを確認し、前記確認されたファイルのうち、前記レジュームダウンロードリストに含まれたオフセットに対応する位置からのデータを前記ファイルブロックに記録してレジュームダウンロード送信を行い、
前記レジュームダウンロードリストは、レジュームダウンロードすることと決定されたファイルのインデックスと、前記決定されたファイルにおいて、レジュームダウンロードするデータのスタートアドレスを表すオフセットとを含むことを特徴とする請求項4に記載のデータ送信装置。
【請求項7】
データ送信装置から送信されるファイルブロックを受信する通信部と、
前記受信されたファイルブロックが一つ又は複数のマイクロブロックを含む場合に、マイクロブロック単位でデータを読み出して格納媒体に記録するディスクライターと、を備え、
前記ファイルブロックは、データ送信単位であって、
前記マイクロブロックは、少なくとも一つ以上のファイルのデータが記録される単位であって、
前記一つ又は複数のマイクロブロックの各々は、マイクロブロックヘッダ及びマイクロブロックペイロードを含み、 前記ディスクライターは、前記マイクロブロックヘッダに記録され、前記マイクロブロックペイロードに記録されたデータのアドレスを表すオフセットを参照して、前記マイクロブロックペイロードに記録されたデータを前記格納媒体に記録することを特徴とするデータ受信装置。
【請求項8】
前記ディスクライターは、前記マイクロブロックヘッダに記録されたファイルパス(filepath)を参照して、前記ファイルブロックを介して受信された前記少なくとも一つ以上のファイルを前記格納媒体に各々記録することを特徴とする請求項7に記載のデータ受信装置。
【請求項9】
前記通信部が前記データ送信装置から受信した送信ファイルリストを利用して、既受信の複数のファイルのうち、レジュームダウンロードするファイルを決定し、前記決定されたファイルのインデックスと、前記決定されたファイルのうち、レジュームダウンロードするデータのスタートアドレスを表すオフセットとを含むレジュームダウンロードリストを作成して、前記データ送信装置に送信するリスト確認部をさらに備え、
前記送信ファイルリストは、送信対象となるファイルのインデックス、ファイル名及びファイルサイズに対する情報を含むことを特徴とする請求項7に記載のデータ受信装置。
【請求項10】
前記リスト確認部は、前記受信された送信ファイルリストに含まれたファイル名に対応するファイルが前記既受信の複数のファイルのうちの一つの第1ファイルであり、前記第1ファイルのメタファイルが存在すると、前記第1ファイルを前記レジュームダウンロードするファイルとして決定し、
前記メタファイルは、前記第1ファイルの送信完了有無に関する情報を表すフラグを含むことを特徴とする請求項9に記載のデータ受信装置。
【請求項11】
前記リスト確認部は、前記第1ファイルが前記ファイルブロックを介して受信された場合、前記メタファイルに、前記第1ファイルを最初に送信した第1番目の前記ファイルブロックの送信量が0に記録されていると、前記第1ファイルのオフセットを0とするレジュームダウンロードリストを作成し、
前記データ送信装置は、前記第1ファイルを始めから再度送信することを特徴とする請求項10に記載のデータ受信装置。
【請求項12】
前記リスト確認部は、前記第1ファイルが前記ファイルブロックを介して受信された場合に、前記メタファイルに、前記第1ファイルを最初に送信した第1番目の前記ファイルブロック(i=1)の送信量がkバイト(kは、正数)として記録されており、前記第1ファイルをi(i=2,3,...,m)番目に送信したファイルブロックのフラグが0であると、前記第1ファイルのオフセットをkバイト+(i−2)nバイトにするレジュームダウンロードリストを作成し、
前記nバイトは、前記ファイルブロックの最大送信サイズであることを特徴とする請求項10に記載のデータ受信装置。
【請求項13】
前記ディスクライターは、前記ファイルブロックを介して受信された第1ファイルのメタファイルを作成し、
前記第1ファイルのメタファイルは、前記ファイルブロックの最大送信サイズ、前記第1ファイルの受信された累積ファイルサイズ、前記第1ファイルを最初に送信した第1番目の前記ファイルブロックのサイズ、及び前記第1ファイルを引き続いて送信した次のファイルブロックの受信有無を表すフラグを含むことを特徴とする請求項10に記載のデータ受信装置。
【請求項14】
複数のファイルを送信するデータ送信方法であって、
ファイルブロックを一つ又は複数のマイクロブロックに区分し、前記一つ又は複数のマイクロブロックの各々のサイズに対応するデータを前記複数のファイルから読み出して、前記一つ又は複数のマイクロブロックに順次に記録するステップと、
前記ファイルブロックに含まれる一つ又は複数のマイクロブロックにデータが記録されると、前記ファイルブロックをデータ受信装置に送信するステップと、を含み、
前記一つ又は複数のマイクロブロックは、各々マイクロブロックヘッダ及びマイクロブロックペイロードに区分され、
前記記録するステップは、前記マイクロブロックヘッダに、前記マイクロブロックペイロードに記録されるデータのアドレスを表すオフセットを記録し、前記マイクロブロックペイロードに、前記データを記録することを特徴とするデータ送信方法。
【請求項15】
前記記録するステップは、前記複数のファイルのうち、第1ファイルのデータを前記複数のマイクロブロックに記録し、前記ファイルブロックに前記第1ファイルのデータを記録したマイクロブロック以外の空き領域があると、追加のマイクロブロックを生成し、前記複数のファイルのうち、第2ファイルのデータを前記追加のマイクロブロックに記録することを特徴とする請求項14に記載のデータ送信方法。
【請求項16】
前記記録するステップは、前記ファイルブロック全体に、前記複数のファイルのうちの第1ファイルのデータが記録される場合に、前記ファイルブロックを一つのマイクロブロックヘッダと一つのマイクロブロックペイロードとに区分することを特徴とする請求項14に記載のデータ送信方法。
【請求項17】
前記データ受信装置に送信するファイルの全てをもとに送信ファイルリストを生成するステップと、
前記生成された送信ファイルリストを前記データ受信装置に送信するステップと、をさらに含み、
前記送信ファイルリストは、ファイルのインデックス、ファイル名及びファイルサイズに対する情報を含むことを特徴とする請求項14に記載のデータ送信方法。
【請求項18】
レジュームダウンロードリストを前記データ受信装置から受信するステップと、
前記複数のファイルのうち、前記受信されたレジュームダウンロードリストに含まれたインデックスに対応するファイルを確認するステップと、
前記確認されたファイルのうち、前記レジュームダウンロードリストに含まれたオフセットに対応する位置からのデータを前記ファイルブロックに記録してレジュームダウンロード送信を開始するステップと、をさらに含み、
前記レジュームダウンロードリストは、レジュームダウンロードすることと決定されたファイルのインデックスと、前記決定されたファイルにおいて、レジュームダウンロードするデータのスタートアドレスを表すオフセットとを含むことを特徴とする請求項17に記載のデータ送信方法。
【請求項19】
データ送信装置から送信されるファイルブロックを受信するステップと、
前記受信されたファイルブロックが一つ又は複数のマイクロブロックを含む場合に、マイクロブロック単位でデータを読み出して格納媒体に記録するステップと、を含み、
前記ファイルブロックは、データ送信単位であって、
前記マイクロブロックは、少なくとも一つ以上のファイルのデータが記録される単位であって、
前記一つ又は複数のマイクロブロックの各々は、マイクロブロックヘッダ及びマイクロブロックペイロードを含み、
前記記録するステップは、前記マイクロブロックヘッダに記録され、前記マイクロブロックペイロードに記録されたデータのアドレスを表すオフセットを参照して、前記マイクロブロックペイロードに記録されたデータを前記格納媒体に記録し、前記マイクロブロックヘッダに記録されたファイルパス(filepath)を参照して、前記ファイルブロックを介して受信された前記少なくとも一つ以上のファイルを前記格納媒体に各々記録することを特徴とするデータ受信方法。
【請求項20】
送信ファイルリストを前記データ送信装置から受信するステップと、
前記受信された送信ファイルリストを利用して、既受信の複数のファイルのうち、レジュームダウンロードするファイルを決定するステップと、
前記決定されたファイルのインデックスと、前記決定されたファイルのうち、レジュームダウンロードするデータのスタートアドレスを表すオフセットとを含むレジュームダウンロードリストを作成するステップと、
前記作成されたレジュームダウンロードリストを前記データ送信装置に送信するステップと、をさらに含み、
前記送信ファイルリストは、送信対象となるファイルのインデックス、ファイル名及び全体ファイルサイズに対する情報を含むことを特徴とする請求項19に記載のデータ受信方法。
【請求項21】
前記決定するステップは、前記受信された送信ファイルリストに含まれたファイル名に対応するファイルが前記既受信の複数のファイルのうちの何れか一つである第1ファイルであり、前記第1ファイルのメタファイルが存在すると、前記第1ファイルを前記レジュームダウンロードするファイルとして決定し、
前記メタファイルは、前記第1ファイルの送信完了有無に関する情報を表すフラグを含むことを特徴とする請求項20に記載のデータ受信方法。
【請求項22】
前記レジュームダウンロードリストを作成するステップは、前記第1ファイルが前記ファイルブロックを介して受信された場合、前記メタファイルに、前記第1ファイルを最初に送信した第1番目の前記ファイルブロックの送信量が0に記録されていると、前記第1ファイルのオフセットを0とするレジュームダウンロードリストを作成し、
前記データ送信装置は、前記第1ファイルを始めから再送信することを特徴とする請求項21に記載のデータ受信方法。
【請求項23】
前記レジュームダウンロードリストを作成するステップは、前記第1ファイルが前記ファイルブロックを介して受信された場合に、前記メタファイルに、前記第1ファイルを最初に送信した第1番目の前記ファイルブロック(i=1)の送信量がkバイト(kは、正数)として記録されており、前記第1ファイルをi(i=2,3,...,m)番目に送信したファイルブロックのフラグが0であると、前記第1ファイルのオフセットをkバイト+(i−2)nバイトにするレジュームダウンロードリストを作成し、
前記nバイトは、前記ファイルブロックの最大送信サイズであり、
前記データ送信装置は、前記第1ファイルのオフセットに対応する位置からのデータを再送信することを特徴とする請求項21に記載のデータ受信方法。
【請求項24】
前記ファイルブロックを介して受信された第1ファイルのメタファイルを作成するステップをさらに含み、
前記第1ファイルのメタファイルは、前記ファイルブロックの最大送信サイズ、前記第1ファイルの受信された累積ファイルサイズ、前記第1ファイルを最初に送信した第1番目の前記ファイルブロックのサイズ、及び前記第1ファイルを引き続いて送信した次のファイルブロックの受信有無を表すフラグを含むことを特徴とする請求項21に記載のデータ受信方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2013−97804(P2013−97804A)
【公開日】平成25年5月20日(2013.5.20)
【国際特許分類】
【出願番号】特願2012−237753(P2012−237753)
【出願日】平成24年10月29日(2012.10.29)
【出願人】(510294195)サムソン エスディーエス カンパニー リミテッド (33)
【Fターム(参考)】