KR101780847B1 - 데이터 전송 장치 및 방법 - Google Patents
데이터 전송 장치 및 방법 Download PDFInfo
- Publication number
- KR101780847B1 KR101780847B1 KR1020130150467A KR20130150467A KR101780847B1 KR 101780847 B1 KR101780847 B1 KR 101780847B1 KR 1020130150467 A KR1020130150467 A KR 1020130150467A KR 20130150467 A KR20130150467 A KR 20130150467A KR 101780847 B1 KR101780847 B1 KR 101780847B1
- Authority
- KR
- South Korea
- Prior art keywords
- file
- data
- block
- transmission
- list
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/14—Multichannel or multilink protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
데이터 전송 장치 및 방법이 제공된다. 데이터 전송 장치의 디스크 리더는 파일블록을 복수 개의 마이크로블록들로 나누고, 복수 개의 마이크로블록들의 크기에 대응하는 데이터를 복수 개의 파일들로부터 읽어와 복수 개의 마이크로블록들에 순차적으로 기록하며, 통신부는 복수 개의 마이크로블록들에 데이터가 모두 기록되면, 파일블록을 데이터 수신 장치로 전송할 수 있다.
Description
본 발명은 데이터 전송 장치 및 방법에 관한 것으로, 보다 상세하게는 파일의 묶음 전송 및 이어받기 전송이 가능한 데이터 전송 장치 및 방법에 관한 것이다.
기존에는 다수의 파일들을 전송하는 경우, 하나의 파일에 대한 컨트롤 메시지를 전송하고 하나의 파일이 전송이 완료가 되었다는 컨트롤 메시지를 받은 후, 다음 파일을 순차적으로 전송한다. 이러한 전송 방식은 서버와 클라이언트간에 하나의 TCP(Transport Control Protocol) 연결을 맺어서 해당 채널을 통해 데이터를 보내고 받는 동작을 수행하는 경우와 다수의 TCP 스트림을 열어 데이터를 병렬로 전송하는 경우 모두 동일하다.
그러나, 기존의 방식으로 파일을 전송하는 경우, 컨트롤 메시지 전송 시에는 실제 데이터를 전송할 수 없으며, 이로 인해 패킷 로스가 많이 발생하거나 RTT(Round Trip Time)가 긴 네트워크상에서는 전송 효율이 급격히 떨어지는 결과가 초래된다. 또한 네트워크 BDP(Bandwidth Delay Product)보다 작은 크기의 파일 하나를 전송하는 경우, 네트워크를 효율적으로 사용할 수 없어 비효율적 전송이 이루어 진다는 문제점이 있다. 이러한 문제점들을 해결하기 위해, 다수의 파일들을 압축하고 묶어 하나의 파일로 전송할 수 있지만, 이러한 경우 압축 및 압축 해제에 시간이 오래 소요되는 불편함이 발생하며, 결과적으로 압축을 통해 데이터의 사이즈를 줄여서 전송 시간을 감소시키는 효과보다, 압축에 걸리는 시간이 더 길어 결과적으로 전송이 더 느려지는 현상이 발생한다.
또한, 병렬 TCP 스트림 전송 방식을 사용하는 경우, 단일 TCP 스트림 전송에서는 발생하지 않는 전송의 역전현상이 발생한다. 이는, 단일 TCP 스트림 전송의 경우 먼저 전송된 데이터가 반드시 먼저 도착하는 것이 보장되는 반면, 병렬 TCP 스트림 전송 방식의 경우에는, 첫 번째 스트림을 통해 전송되는 데이터가 두 번째 스트림을 통해 전송되는 데이터보다 먼저 전송되어도 두 번째 스트림의 데이터보다 먼저 도착하는 것을 보장할 수 없기 때문이다.
또한, 기존의 병렬 TCP 스트림 전송의 경우, 상술한 바와 같이 데이터의 순차적인 전송이 보장되지 않으므로, 파일의 이어받기를 적용하는 것이 어렵다. 또한, 다량의 파일들을 병렬 TCP 스트림 전송 방식으로 전송하는 경우, 이어받기가 불가능하거나 이미 전송된 데이터에 대해서도 재전송이 일어나므로 전송효율이 저하된다.
본 발명적 개념의 예시적 실시예에 따르면, 다수의 파일들을 실시간으로 묶음 전송함으로써 파일을 각각 전송할 때 발생하는 컨트롤 메시지의 횟수를 최소화하고, TCP 효율성을 개선할 수 있는 데이터 전송 장치 및 방법을 제공하는 것이다.
또한, 본 발명적 개념의 예시적 실시예에 따르면, 다수의 파일을 묶음전송할 때 일부 데이터의 전송이 누락되거나 전송이 정지되는 경우, 이어받기 기능을 보장할 수 있는 데이터 전송 장치 및 방법을 제공하는 것이다.
본 발명적 개념의 다른 예시적 실시 예에 따르면, 파일블록을 복수 개의 마이크로블록들로 나누고, 상기 복수 개의 마이크로블록들의 크기에 대응하는 데이터를 복수 개의 파일들로부터 읽어와 상기 복수 개의 마이크로블록들에 순차적으로 기록하는 디스크 리더; 및 상기 복수 개의 마이크로블록들에 데이터가 기록되면, 상기 파일블록을 데이터 수신 장치로 전송하는 통신부;를 포함하는 것을 특징으로 하는 데이터 전송 장치가 제공될 수 있다.
상기 디스크 리더는, 상기 복수 개의 파일들 중 제1파일의 데이터를 상기 복수 개의 마이크로블록들에 기록하고 남은 마이크로블록이 있으면, 상기 복수 개의 파일들 중 제2파일의 데이터를 상기 남은 마이크로블록에 기록할 수 있다.
상기 디스크 리더는, 상기 파일블록을 각각 마이크로블록 헤더 및 마이크로블록 페이로드를 포함하는 상기 복수 개의 마이크로블록 들로 나누며, 상기 마이크로블록 헤더에는 오프셋-상기 마이크로블록에 기록되는 데이터의 주소를 나타냄-을 기록하고, 상기 마이크로블록 페이로드에는 상기 데이터를 기록할 수 있다.
상기 디스크 리더는, 상기 복수 개의 마이크로블록들이 상기 복수 개의 파일들 중 제1파일의 데이터로 모두 채워지는 경우, 상기 파일블록을 한 개의 마이크로블록 헤더와 한 개의 마이크로블록 페이로드로 나눌 수 있다.
상기 데이터 수신 장치로 전송할 전체 파일들을 복수 개의 전송 파일 리스트들로 분할하고, 상기 복수 개의 전송 파일 리스트들을 상기 데이터 수신 장치로 전송하는 리스트 관리부;를 더 포함하며, 상기 복수 개의 전송 파일 리스트들은, 각각 해당 전송 파일 리스트에 포함된 파일들의 인덱스, 파일명 및 전체파일크기에 대한 정보를 포함할 수 있다.
상기 통신부는, 상기 전송 파일 리스트들이 상기 데이터 수신 장치로 순차적으로 전송되는 동안, 상기 데이터가 모두 기록된 복수 개의 마이크로블록들을 포함하는 상기 파일블록을 병렬 스트림을 이용하여 전송할 수 있다.
상기 데이터 수신 장치는, 상기 복수 개의 전송 파일 리스트들 중 현재 수신된 전송 파일 리스트와 상기 파일블록을 통해 수신된 복수 개의 파일들을 비교하여, 상기 복수 개의 파일들 중 이어받기할 파일을 판단하고, 상기 판단된 파일의 인덱스와 오프셋-상기 판단된 파일 중 이어받기할 데이터의 시작 주소를 나타냄-을 포함하는 이어받기 리스트를 작성하여 상기 리스트 관리부에게 전송할 수 있다.
상기 디스크 리더는, 상기 이어받기 리스트에 포함된 인덱스에 대응하는 파일을 상기 복수 개의 파일들로부터 확인하고, 상기 확인된 파일 중 상기 이어받기 리스트에 포함된 오프셋에 대응하는 위치부터의 데이터를 상기 파일블록에 기록하여 이어받기 전송을 시도할 수 있다.
한편, 본 발명적 개념의 다른 예시적 실시 예에 따르면, 데이터 송신 장치로부터 전송되는 복수 개의 파일블록-데이터 전송 단위-들을 수신하는 통신부; 및 상기 수신된 파일블록들이 각각 복수 개의 마이크로블록들- 적어도 하나 이상의 파일의 데이터가 기록되는 단위-을 포함하는 경우, 마이크로블록단위로 데이터를 읽어 저장매체에 기록하는 디스크 라이터;를 포함하는 것을 특징으로 하는 데이터 수신 장치가 제공될 수 있다.
상기 복수 개의 마이크로블록들은 각각 마이크로블록 헤더 및 마이크로블록 페이로드를 포함하며, 상기 디스크 라이터는, 상기 마이크로블록 헤더에 기록된 오프셋-상기 마이크로블록들에 기록된 데이터의 주소를 나타냄-을 참조하여 상기 마이크로블록 페이로드에 기록된 데이터를 상기 저장매체에 기록할 수 있다.
상기 복수 개의 마이크로블록들은 마이크로블록 헤더 및 마이크로블록 페이로드를 포함하며, 상기 디스크 라이터는, 상기 마이크로블록 헤더에 기록된 파일패스(filepath)를 참조하여 상기 파일블록들을 통해 수신된 상기 적어도 하나 이상의 파일을 상기 저장매체에 각각 기록할 수 있다.
상기 통신부는, 전송 파일 리스트-상기 데이터 송신 장치가 상기 통신부로 전송할 전체 파일들을 분할하여 생성한 복수 개의 전송 파일 리스트들 중 하나-를 상기 데이터 송신 장치로부터 수신하며, 상기 전송 파일 리스트는 상기 하나의 전송 파일 리스트에 포함된 파일들의 인덱스, 파일명 및 전체파일크기에 대한 정보를 포함할 수 있다.
또한, 기수신된 복수 개의 파일들 중 이어받기할 파일을 상기 수신된 전송 파일 리스트를 이용하여 판단하고, 상기 판단된 파일의 인덱스와 오프셋-상기 판단된 파일 중 이어받기할 데이터의 시작 주소를 나타냄-을 포함하는 이어받기 리스트를 작성하여 상기 데이터 전송 장치에게 전송하는 리스트 확인부;를 더 포함할 수 있다.
상기 리스트 확인부는, 상기 수신된 전송 파일 리스트에 포함된 파일명에 해당하는 파일이 상기 기수신된 복수 개의 파일들 중 하나인 제1파일이고, 상기 제1파일의 메타파일이 존재하면, 상기 제1파일을 상기 이어받기할 파일로 판단하며, 상기 메타파일은 상기 제1파일의 전송완료여부에 대한 정보를 나타내는 플래그를 포함할 수 있다.
상기 리스트 확인부는, 상기 제1파일이 상기 복수 개의 파일블록들을 통해 수신된 경우, 상기 메타파일에 상기 복수 개의 파일블록들 중 상기 제1파일을 처음 전송한 첫 번째 파일블록의 전송량이 0으로 기록되어 있으면, 상기 제1파일의 오프셋을 0으로 하는 이어받기 리스트를 작성하며, 상기 데이터 전송 장치는 상기 제1파일을 처음부터 재전송할 수 있다.
상기 리스트 확인부는, 상기 제1파일이 상기 복수 개의 파일블록들을 통해 수신된 경우, 상기 메타파일에 상기 복수 개의 파일블록들 중 상기 제1파일을 처음 전송한 첫 번째 파일블록(i=1)의 전송량이 k바이트(k는 양수)로 기록되어 있고, 상기 제1파일을 i(i=2, 3, …, m)번째로 전송한 파일블록의 플래그가 0이면, 상기 제1파일의 오프셋을 k바이트+(i-2)*n바이트로 하는 이어받기 리스트를 작성하며, 상기 n바이트는 상기 파일블록의 최대 전송 크기이다.
상기 디스크 라이터는, 상기 파일블록들을 통해 수신된 적어도 하나 이상의 파일마다 메타파일을 작성하며, 상기 제1파일이 상기 복수 개의 블록들을 통해 수신된 경우, 상기 제1파일의 메타파일은, 상기 제1파일블록의 최대 전송 크기, 상기 제1파일의 수신된 누적 파일 크기, 상기 복수 개의 제1파일블록들 중 상기 제1파일을 최초 전송한 상기 최초 파일블록의 크기 및 상기 제1파일을 연속적으로 전송한 다음 파일블록들의 수신 여부를 나타내는 플래그를 포함할 수 있다.
상기 데이터 전송 장치는 상기 수신된 이어받기 리스트에 포함된 인덱스에 해당하는 파일을 확인하고, 상기 확인된 파일 중 상기 오프셋에 해당하는 위치부터의 데이터를 상기 통신부에게 재전송할 수 있다.
한편, 본 발명적 개념의 다른 예시적 실시 예에 따르면, 파일블록을 복수 개의 마이크로블록들로 나누고, 상기 복수 개의 마이크로블록들의 크기에 대응하는 데이터를 복수 개의 파일들로부터 읽어와 상기 복수 개의 마이크로블록들에 순차적으로 기록하는 단계; 및 상기 복수 개의 마이크로블록들에 데이터가 기록되면, 상기 파일블록을 데이터 수신 장치로 전송하는 단계;를 포함하는 것을 특징으로 하는 데이터 전송 방법이 제공될 수 있다.
상기 기록하는 단계는, 상기 복수 개의 파일들 중 제1파일의 데이터를 상기 복수 개의 마이크로블록들에 기록하고 남은 마이크로블록이 있으면, 상기 복수 개의 파일들 중 제2파일의 데이터를 상기 남은 마이크로블록에 기록할 수 있다.
상기 데이터 수신 장치로 전송할 전체 파일들을 복수 개의 전송 파일 리스트들로 분할하는 단계; 및 상기 분할된 복수 개의 전송 파일 리스트들을 상기 데이터 수신 장치로 순차적으로 전송하는 단계;를 더 포함하며, 상기 복수 개의 전송 파일 리스트들은, 각각 해당 전송 파일 리스트에 포함된 파일들의 인덱스, 파일명 및 전체파일크기에 대한 정보를 포함할 수 있다.
상기 이어받기 리스트를 상기 데이터 수신 장치로부터 수신하는 단계; 상기 수신된 이어받기 리스트에 포함된 인덱스에 대응하는 파일을 상기 복수 개의 파일들로부터 확인하는 단계; 및 상기 확인된 파일 중 상기 이어받기 리스트에 포함된 오프셋에 대응하는 위치부터의 데이터를 상기 파일블록에 기록하여 이어받기 전송을 시작하는 단계;를 더 포함할 수 있다.
한편, 본 발명적 개념의 다른 예시적 실시 예에 따르면, 데이터 송신 장치로부터 전송되는 복수 개의 파일블록-데이터 전송 단위-들을 수신하는 단계; 및 상기 수신된 파일블록들이 각각 복수 개의 마이크로블록들- 적어도 하나 이상의 파일의 데이터가 기록되는 단위-을 포함하는 경우, 마이크로블록단위로 데이터를 읽어 저장매체에 기록하는 단계;를 포함하는 것을 특징으로 하는 데이터 수신 방법이 제공될 수 있다.
전송 파일 리스트를 상기 데이터 송신 장치로부터 수신하는 단계; 기수신된 복수 개의 파일들 중 이어받기할 파일을 상기 수신된 전송 파일 리스트를 이용하여 판단하는 단계; 상기 판단된 파일의 인덱스와 오프셋-상기 판단된 파일 중 이어받기할 데이터의 시작 주소를 나타냄-을 포함하는 이어받기 리스트를 작성하는 단계; 및 상기 작성된 이어받기 리스트를 상기 데이터 전송 장치에게 전송하는 단계;를 더 포함할 수 있다.
상기 판단하는 단계는, 상기 수신된 전송 파일 리스트에 포함된 파일명에 해당하는 파일이 상기 기수신된 복수 개의 파일들 중 하나인 제1파일이고, 상기 제1파일의 메타파일이 존재하면, 상기 제1파일을 상기 이어받기할 파일로 판단하며, 상기 메타파일은 상기 제1파일의 전송완료여부에 대한 정보를 나타내는 플래그를 포함할 수 있다.
상기 이어받기 리스트를 작성하는 단계는, 상기 제1파일이 상기 복수 개의 파일블록들을 통해 수신된 경우, 상기 메타파일에 상기 복수 개의 파일블록들 중 상기 제1파일을 처음 전송한 첫 번째 파일블록의 전송량이 0으로 기록되어 있으면, 상기 제1파일의 오프셋을 0으로 하는 이어받기 리스트를 작성하며, 상기 데이터 전송 장치는 상기 제1파일을 처음부터 재전송할 수 있다.
상기 이어받기 리스트를 작성하는 단계는, 상기 제1파일이 상기 복수 개의 파일블록들을 통해 수신된 경우, 상기 메타파일에 상기 복수 개의 파일블록들 중 상기 제1파일을 처음 전송한 첫 번째 파일블록(i=1)의 전송량이 k바이트(k는 양수)로 기록되어 있고, 상기 제1파일을 i(i=2, 3, …, m)번째로 전송한 파일블록의 플래그가 0이면, 상기 제1파일의 오프셋을 k바이트+(i-2)*n바이트로 하는 이어받기 리스트를 작성하며, 상기 n바이트는 상기 파일블록의 최대 전송 크기이고, 상기 데이터 전송 장치는 상기 제1파일의 오프셋에 해당하는 위치부터의 데이터를 재전송할 수 있다.
본 발명적 개념의 하나 이상의 예시적 실시예는 WAN(Wide Area Networks) 환경에서 사용할 경우 효율이 높다. WAN 환경의 경우, 패킷 로스(Packet Loss)나 RTT(Round Trip Time)가 커서 TCP 프로토콜의 특성상 네트워크의 대역폭을 다 사용하지 못하는 경우가 발생한다. 즉, 패킷 로스가 발생하여 윈도우를 줄임으로써 전송할 수 있는 패킷의 양이 줄어들거나, 애크를 수신하지 못해 윈도우를 비우지 못해 전송 속도가 현저하게 떨어지는 상황이 발생하는 것이다. 이를 해결하기 위해 본 실시예에서는 다수의 파일들을 실시간으로 묶어 전송함으로써 파일들을 순차적으로 전송할 때에 전송 시작과 종료에 따라 발생하는 컨트롤 메시지를 줄일 수 있다. 이는, 컨트롤 메시지가 전송되는 동안 파일의 데이터는 전송되지 않으므로, 컨트롤 메시지를 줄임으로써 TCP의 데이터 전송 효율을 크게 개선할 수 있다. 또한, 어플리케이션 레이어에서 파일들을 묶어 TCP 레이어로 내림으로써 TCP 윈도우보다 작은 데이터를 전송하는 경우를 최소화하여 TCP 윈도우보다 크기가 작은 데이터를 전송할 때 발생하는 TCP 프로토콜의 비효율적인 동작을 개선하고, 결과적으로 파일들의 전송 시간을 크게 감소시킬 수 있다. 또한, 병렬 TCP 스트림을 사용함으로써, TCP 스트림들이 가지는 윈도우들을 합한 만큼의 데이터를 한 번에 보낼 수 있으며, 결과적으로 데이터 전송 시 충돌 상황이 발생하여도 단일 TCP 스트림을 이용한 전송보다 더 많은 데이터를 전송할 수 있다.
또한, 본 발명적 개념의 하나 이상의 예시적 실시 예는 오프셋과 파일 전체 크기에 대한 정보를 이용함으로써, 병렬 TCP 스트림 전송에서 파일들의 역전현상 없이 이어받기를 가능하게 할 수 있다. 또한, 전송된 파일의 오프셋을 이용하여 이어받기를 수행함으로써 이미 전송된 데이터의 중복 전송을 방지하고, 결과적으로 중복 전송 시 발생하는 전송 비용을 줄일 수 있다. 또한, 다수의 파일들을 그룹으로 나누어 리스트를 먼저 보내 이어받기할 파일을 판단하고, 이어받기를 위해 발생하는 파일 비교와 이어받기할 파일의 데이터를 전송하는 동작을 동시에 수행함으로써 데이터 전송 효율을 높일 수 있다.
도 1은 본 발명적 개념의 예시적 실시예에 따른 데이터의 병렬 전송을 위한 송수신 시스템을 도시한 도면,
도 2는 본 발명적 개념의 예시적 제1실시예에 따른 데이터의 병렬 전송을 위한 제1데이터 전송 장치 및 제1데이터 수신 장치를 도시한 블록도,
도 3은 본 발명적 개념의 예시적 실시예에 따른 파일블록의 구조를 도시한 도면,
도 4a는 본 발명적 개념의 예시적 실시예에 따른 하나의 마이크로블록을 포함하는 파일블록의 구조를 도시한 도면,
도 4b는 본 발명적 개념의 예시적 실시예에 따른 하나의 마이크로블록을 포함하는 파일블록의 구조를 도시한 도면,
도 5는 본 발명적 개념의 예시적 제2실시예에 따른 데이터의 병렬 전송을 위한 제2데이터 전송 장치 및 제2데이터 수신 장치를 도시한 블록도,
도 6은 본 발명적 개념의 예시적 실시예에 따른 전송 파일 리스트의 구조를 도시한 도면,
도 7은 본 발명적 개념의 예시적 실시예에 따른 메타파일의 구조를 도시한 도면,
도 8은 본 발명적 개념의 예시적 실시예에 따른 이어받기 리스트의 구조를 도시한 도면,
도 9는 본 발명적 개념의 예시적 제1실시예에 따른 데이터의 병렬 전송 방법을 설명하기 위한 흐름도,
도 10은 도 9에 도시된 데이터의 병렬 전송 방법을 보다 자세히 설명하기 위한 흐름도,
도 11은 본 발명적 개념의 예시적 실시예에 따른 데이터의 병렬 수신 방법을 설명하기 위한 흐름도,
도 12는 본 발명적 개념의 예시적 다른 실시예에 따른 데이터의 병렬 송수신 방법을 설명하기 위한 흐름도, 그리고,
도 13은 도 12의 S1230단계를 보다 자세히 도시한 흐름도이다.
도 2는 본 발명적 개념의 예시적 제1실시예에 따른 데이터의 병렬 전송을 위한 제1데이터 전송 장치 및 제1데이터 수신 장치를 도시한 블록도,
도 3은 본 발명적 개념의 예시적 실시예에 따른 파일블록의 구조를 도시한 도면,
도 4a는 본 발명적 개념의 예시적 실시예에 따른 하나의 마이크로블록을 포함하는 파일블록의 구조를 도시한 도면,
도 4b는 본 발명적 개념의 예시적 실시예에 따른 하나의 마이크로블록을 포함하는 파일블록의 구조를 도시한 도면,
도 5는 본 발명적 개념의 예시적 제2실시예에 따른 데이터의 병렬 전송을 위한 제2데이터 전송 장치 및 제2데이터 수신 장치를 도시한 블록도,
도 6은 본 발명적 개념의 예시적 실시예에 따른 전송 파일 리스트의 구조를 도시한 도면,
도 7은 본 발명적 개념의 예시적 실시예에 따른 메타파일의 구조를 도시한 도면,
도 8은 본 발명적 개념의 예시적 실시예에 따른 이어받기 리스트의 구조를 도시한 도면,
도 9는 본 발명적 개념의 예시적 제1실시예에 따른 데이터의 병렬 전송 방법을 설명하기 위한 흐름도,
도 10은 도 9에 도시된 데이터의 병렬 전송 방법을 보다 자세히 설명하기 위한 흐름도,
도 11은 본 발명적 개념의 예시적 실시예에 따른 데이터의 병렬 수신 방법을 설명하기 위한 흐름도,
도 12는 본 발명적 개념의 예시적 다른 실시예에 따른 데이터의 병렬 송수신 방법을 설명하기 위한 흐름도, 그리고,
도 13은 도 12의 S1230단계를 보다 자세히 도시한 흐름도이다.
이상의 본 발명의 목적들, 다른 목적들, 특징들 및 이점들은 첨부된 도면과 관련된 이하의 바람직한 실시예들을 통해서 쉽게 이해될 것이다. 그러나 본 발명은 여기서 설명되는 실시예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 오히려, 여기서 소개되는 실시예들은 개시된 내용이 철저하고 완전해질 수 있도록 그리고 당업자에게 본 발명의 사상이 충분히 전달될 수 있도록 하기 위해 제공되는 것이다.
본 명세서에서, 어떤 구성요소가 다른 구성요소 상에 있다고 언급되는 경우에 그것은 다른 구성요소 상에 직접 형성될 수 있거나 또는 그들 사이에 제 3의 구성요소가 개재될 수도 있다는 것을 의미한다.
본 명세서에서 제1, 제2 등의 용어가 구성요소들을 기술하기 위해서 사용된 경우, 이들 구성요소들이 이 같은 용어들에 의해서 한정되어서는 안 된다. 이들 용어들은 단지 어느 구성요소를 다른 구성요소와 구별시키기 위해서 사용되었을 뿐이다. 여기에 설명되고 예시되는 실시예들은 그것의 상보적인 실시예들도 포함한다.
또한, 제1 엘리먼트(또는 구성요소)가 제2 엘리먼트(또는 구성요소) 상(ON)에서 동작 또는 실행된다고 언급될 때, 제1 엘리먼트(또는 구성요소)는 제2 엘리먼트(또는 구성요소)가 동작 또는 실행되는 환경에서 동작 또는 실행되거나 또는 제2 엘리먼트(또는 구성요소)와 직접 또는 간접적으로 상호 작용을 통해서 동작 또는 실행되는 것으로 이해되어야 할 것이다.
어떤 엘리먼트, 구성요소, 장치, 또는 시스템이 프로그램 또는 소프트웨어로 이루어진 구성요소를 포함한다고 언급되는 경우, 명시적인 언급이 없더라도, 그 엘리먼트, 구성요소, 장치, 또는 시스템은 그 프로그램 또는 소프트웨어가 실행 또는 동작하는데 필요한 하드웨어(예를 들면, 메모리, CPU 등)나 다른 프로그램 또는 소프트웨어(예를 들면 운영체제나 하드웨어를 구동하는데 필요한 드라이버 등)를 포함하는 것으로 이해되어야 할 것이다.
또한, 어떤 엘리먼트(또는 구성요소)가 구현됨에 있어서 특별한 언급이 없다면, 그 엘리먼트(또는 구성요소)는 소프트웨어, 하드웨어, 또는 소프트웨어 및 하드웨어 어떤 형태로도 구현될 수 있는 것으로 이해되어야 할 것이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 '포함한다(comprises)' 및/또는 '포함하는(comprising)'은 언급된 구성요소는 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
이하, 도면을 참조하여 본 발명적 개념을 상세히 설명하도록 한다. 아래의 특정 실시예들을 기술하는데 있어서, 여러 가지의 특정적인 내용들은 발명적 개념을 더 구체적으로 설명하고 이해를 돕기 위해 작성되었다. 하지만 본 발명적 개념을 이해할 수 있을 정도로 이 분야의 지식을 갖고 있는 독자는 이러한 여러 가지의 특정적인 내용들이 없어도 사용될 수 있다는 것을 인지할 수 있다. 어떤 경우에는, 발명적 개념을 기술하는 데 있어서 흔히 알려졌으면서 발명과 크게 관련 없는 부분들은 본 발명적 개념을 설명하는 데 있어 별 이유 없이 혼돈이 오는 것을 막기 위해 기술하지 않음을 미리 언급해 둔다.
도 1은 본 발명적 개념의 예시적 실시예에 따른 데이터의 병렬 전송을 위한 송수신 시스템을 도시한 도면이다.
도 1을 참조하면, 데이터의 병렬 전송을 위한 송수신 시스템은 데이터 전송 장치(10)와 데이터 수신 장치(20)를 포함한다. 데이터 전송 장치(10)는 후술할 제1데이터 전송 장치(100) 또는 제2데이터 전송 장치(500)이고, 데이터 수신 장치(20)는 제1데이터 수신 장치(200) 또는 제2데이터 수신 장치(500)일 수 있다.
데이터 전송 장치(10)는 파일의 전송 요청이 수신되면, 파일의 속성정보를 포함하는 기본제어정보와 파일을 전송할 소켓을 하나 이상 생성할 수 있다.
소켓은 파일의 전송을 위해 데이터 전송 장치(10)와 데이터 수신 장치(20)를 연결하는 소프트웨어적 장치로서, 하나의 소켓은 하나의 스트림을 구성할 수 있다. 따라서, 데이터 전송 장치(10)와 데이터 수신 장치(20) 사이에는 데이터의 병렬 전송을 위한 복수 개의 스트림들(S1, S2, …, SN, N은 정수)이 마련된다. 복수 개의 스트림들(S1, S2, …, SN)은 적어도 하나의 포트에 마련되나, 서로 다른 대역폭을 가지는 멀티 채널로 구현될 수 있다. 일 예로, 데이터 전송 장치(10)와 데이터 수신 장치(20)는 TCP(Transmission Control Protocol) 채널을 통해, 파일을 병렬 스트리밍 전송 방식으로 송수신할 수 있으며, 이에 한정되지는 않는다.
기본제어정보는 파일의 전송을 위해 초기에 제1데이터 전송 장치(10)와 제1데이터 수신 장치(20)가 공유하는 정보이다. 기본제어정보는 전송할 파일의 파일명, 파일 사이즈, 스트림의 개수, 디스크 버퍼 사이즈, 전체 블록 개수, 소켓 버퍼 사이즈, IP 주소, 포트 정보 및 세션 ID(identification) 등의 정보를 포함한다. 스트림의 개수는 파일 전송에 사용될 수 있는 스트림의 최대 연결 개수이고, 디스크 버퍼 사이즈는 디스크(예를 들어, 제2저장매체(250))에 데이터를 쓰기 위해 버퍼에 할당된 블록의 크기, 소켓 버퍼 사이즈는 전송 프로토콜의 커널단에서 사용하는 버퍼의 크기, IP 주소는 데이터 전송에 사용되는 IP의 주소, 포트 정보는 데이터 전송에 사용되는 포트의 정보, 세션 ID는 각 스트림의 ID이다.
도 2는 본 발명적 개념의 예시적 제1실시예에 따른 데이터의 병렬 전송을 위한 제1데이터 전송 장치(100) 및 제1데이터 수신 장치(200)를 도시한 블록도이다.
도 2를 참조하면, 제1데이터 전송 장치(100)는 제1저장매체(110), 제1비활성 블록풀(120), 제1디스크 리더(Disk Reader)(130), 제1활성 블록풀(140), 제1통신부(150) 및 제1제어부(160)를 포함할 수 있다.
제1저장매체(110)에는 제1데이터 수신 장치(200)로 전송할 복수 개의 파일들이 저장될 수 있다. 제1저장매체(110)는 하드 디스크 드라이브와 같은 대용량 메모리일 수 있다.
제1비활성 블록풀(120)은 데이터가 기록되어 있지 않은 복수 개의 파일블록들을 메모리의 효율적 사용을 위해 저장(또는 보관)한다. 파일블록은 제1디스크 리더(130)가 제1저장매체(110)에 저장된 복수 개의 파일들 중 전송할 파일들을 기록할 때 사용될 수 있다. 이하에서는 복수 개의 파일들 중 제1데이터 수신 장치(200)로 묶음 전송할 파일들을 '전송 대상 파일들'이라 하며, 전송 대상 파일들의 일 예로서 제1파일과 제2파일을 예로 들어 설명한다.
'묶음 전송'은 하나의 파일블록에 제1파일을 기록한 후에도 파일블록에 다른 파일을 기록할 수 있는 여유 공간이 있는 경우, 제2파일의 전체 또는 일부를 여유 공간에 기록함으로써, 제1파일과 제2파일을 하나의 파일블록으로 전송하는 것을 의미한다. 묶음 전송 시, 하나의 파일블록에는 제1파일의 전체와 제2파일의 전체가 기록되거나, 제1파일의 전체와 제2파일의 일부가 기록되거나, 제1파일의 일부와 제2파일의 일부가 기록되거나, 제1파일의 일부와 제2파일의 전체가 기록될 수 있다.
도 3은 본 발명적 개념의 예시적 실시예에 따른 파일블록의 구조를 도시한 도면이다.
도 3을 참조하면, 파일블록(FB: File Block)은 파일블록 헤더(FH: Fileblock Header)와 파일블록 페이로드(FP: Fileblock Payload)로 구분된다. FH에는 파일블록이 데이터를 기록하고 있음을 나타내는 태그 정보, FP의 크기, 파일블록의 압축여부를 나타내는 플래그가 기록될 수 있다. FP에는 FP의 크기에 해당하는 데이터와, 기록된 데이터의 속성정보가 기록될 수 있다. 도 3에 도시된 바와 같이, 데이터가 기록되지 않은 비어 있는 파일블록은 제1비활성 블록풀(120)에 복수 개 저장되어 있을 수 있다.
제1디스크 리더(130)는 제1비활성 블록풀(120)로부터 비어있는 파일블록을 가져와 파일블록을 각각 마이크로블록 헤더(MH: Microblock Header)와 하나의 마이크로블록 페이로드(MP: Microblock Payload)를 포함하는 적어도 하나 이상의 마이크로블록으로 나눌 수 있다. 그리고, 제1디스크 리더(130)는 적어도 하나 이상의 마이크로블록의 크기에 대응하는 데이터를 전송 대상 파일들로부터 읽어와 적어도 하나 이상의 마이크로블록에 순차적으로 기록할 수 있다. 즉, 제1디스크 리더(130)는 FP의 크기와 제1파일의 크기를 비교하여, 한 개의 마이크로블록 또는 복수 개의 마이크로블록들을 생성하여 파일블록을 나눌 수 있다. 마이크로블록은 적어도 하나 이상의 파일의 데이터가 기록되는 단위로서, 데이터가 기록되는 크기는 유동적이다.
자세히 설명하면, 제1디스크 리더(130)는 FP의 크기와 제1파일의 크기에 따라, FP에 한 개 이상의 논리적인 마이크로블록을 생성할 수 있다. 예를 들어, 하나의 파일블록에 기록할 수 있는 데이터 크기가 제1파일보다 작거나 같으면, 제1디스크 리더(130)는 파일블록에 도 4a와 같이 하나의 마이크로블록을 파일블록에 생성할 수 있다. 또한, 하나의 파일블록에 기록할 수 있는 데이터 크기가 제1파일보다 크면, 제1디스크 리더(130)는 파일블록에 도 4b와 같이 적어도 두 개의 마이크로블록들을 생성하여 파일블록에 기록할 수 있다.
도 4a는 본 발명적 개념의 예시적 실시예에 따른 하나의 마이크로블록을 포함하는 파일블록의 구조를 도시한 도면이다.
도 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파일이 제1저장매체(110)에 저장된 디렉토리와 파일명을 포함할 수 있다. MP에는 MH 크기와 일치하거나 작은 크기의 데이터가 기록될 수 있다.
도 4b는 본 발명적 개념의 예시적 실시예에 따른 하나의 마이크로블록을 포함하는 파일블록의 구조를 도시한 도면이다.
도 4b를 참조하면, 파일블록은 FH와 FP로 구분되고, FP는 복수 개의 마이크로블록 헤더들(MH1, MH2, MH3)과 복수 개의 마이크로블록 페이로드들(MP1, MP2, MP3)로 구분될 수 있다. 도 4b에는 3개의 마이크로블록들(MB1, MB2, MB3)이 도시되어 있으나, 이는 일 예로서 이에 한정되지 않는다.
각 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파일의 일부 또는 전체 데이터가 기록될 수 있다.
제1디스크 리더(130)가 적어도 하나 이상의 마이크로 블록을 생성하는 동작에 대해 설명하면 다음과 같다. 예를 들어, 사용자가 제1파일과 제2파일의 묶음 전송을 요청하였다고 가정한다.
1. 제1디스크 리더(130)는 제1파일의 전체 데이터 크기와 FP의 최대 크기를 비교하여 제1파일 전체를 FP에 모두 기록할 수 있는 경우, 하나의 MB1을 생성하고, MP1에 제1파일의 전체 데이터를 기록한다. 여기서, 설명의 편의를 위해 FP의 최대 크기를 비교하고 있으나, 실제로 FP는 MH와 MP를 포함하므로 MH의 크기를 비교하는 것이 적합할 수 있으며, 이하에서는 크기 비교 시 FP와 MP를 혼용한다.
2. 또한, 제1디스크 리더(130)는 제1파일의 전체 데이터가 FP보다 큰 경우, FP의 크기와 일치하는 데이터를 읽어 하나의 MB1을 생성하고, 제1파일의 남은 데이터는 다음 파일블록에 기록할 수 있다. 따라서, FP에 다른 데이터를 더 기록할 수 있는 여유 공간이 없는 경우, 제1디스크 리더(130)는 도 4a에 도시된 바와 같이 하나의 제1마이크로블록을 생성하며, 이때 MP1에는 제1파일의 전체 데이터 또는 일부 데이터만 기록된다.
3. 반면, FP에 제1파일의 데이터를 기록한 후 다른 데이터를 기록할 수 있는 여유 공간이 있는 경우, 제1디스크 리더(130)는 다음 전송할 제2파일을 읽어 추가로 MB2를 생성하여 파일블록을 채울 수 있다. 즉, 제1디스크 리더(130)는 FP의 여유 공간과 제2파일의 전체 데이터 크기를 비교하여 FP의 여유 공간에 MB2를 생성하고, MP2에 제2파일의 전체 데이터를 기록할 수 있다. 이로써, 파일블록에는 두 개의 마이크로블록들(MB1, MB2)이 생성되고, FP에는 데이터가 기록되지 않은 공간이 남는다.
4. 만약, FP의 여유 공간의 크기보다 제2파일의 크기가 큰 경우, 제1디스크 리더(130)는 FP의 여유 공간에 해당하는 만큼의 데이터를 제2파일로부터 읽어와 기록하고, 다음 파일블록에 제2파일의 남은 데이터를 기록할 수 있다.
제1활성 블록풀(140)은 적어도 하나 이상의 마이크로블록이 생성된 파일블록을 임시 보관할 수 있다. 즉, 제1활성 블록풀(140)은 적어도 하나 이상의 전송 대상 파일이 기록된 파일블록을 임시 보관할 수 있다.
제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)로 보낼 수 있다.
제1제어부(160)는 적어도 하나 이상의 프로세서를 이용하여 상술한 제1데이터 전송 장치(100)의 동작을 제어할 수 있다.
한편, 제1데이터 수신 장치(200)는 제2통신부(210), 제2비활성 블록풀(220), 제2활성 블록풀(230), 제1디스크 라이터(Disk Writer)(240), 제2저장매체(250) 및 제2제어부(260)를 포함할 수 있다.
제2통신부(210)는 제1데이터 전송 장치(100)로부터 병렬 TCP 스트림을 통해 파일블록을 수신할 수 있다. 이를 위해, 제2통신부(210)에는 복수 개의 제1소켓 리더들(211)이 마련되며, 제1소켓 리더들(211)은 제1소켓 라이터들(151)과 각각 하나의 TCP 스트림을 맺을 수 있다.
제2비활성 블록풀(220)은 도 3과 같이 비어 있는 파일블록들을 보관할 수 있다. 보관된 파일블록은 제2통신부(210)를 통해 수신된 파일블록의 데이터를 기록할 때 사용될 수 있다.
제1소켓 리더들(211)은 파일블록이 수신될 때마다 제1비활성 블록풀(120)로부터 비어 있는 파일블록을 가져와 수신된 파일블록의 데이터를 비어 있는 파일블록에 기록할 수 있다. 그리고, 제1소켓 리더들(211)은 수신된 데이터가 기록된 파일블록을 제2활성 블록풀(230)에 보관할 수 있다. 예를 들어, 수신된 파일블록이 도 4b와 같이 3개의 MB1, MB2, MB3를 포함하는 경우, 제1소켓 리더들(211)은 비어 있는 파일블록에 도 4b와 동일한 형태로 헤더정보와 파일들의 데이터를 기록할 수 있다. 제1소켓 리더들(211)은 파일들의 묶음 전송이 완료될 때까지 상술한 동작을 반복한다.
제1디스크 라이터(240)는 수신된 파일블록들이 각각 적어도 하나 이상의 마이크로블록을 포함하는 경우, 마이크로블록 단위로 데이터를 읽어 제2저장매체(250)에 기록할 수 있다.
자세히 설명하면, 제1소켓 리더들(211)이 상술한 동작을 수행하는 동안, 제1디스크 라이터(240)는 제2활성 블록풀(230)을 확인하여 파일블록이 있는지를 확인한다. 제1디스크 라이터(240)는 제2활성 블록풀(230)에 파일블록이 있으면, 파일블록의 MH에 기록된 정보들을 참조하여 MP에 기록된 데이터를 제2저장매체(250)에 기록할 수 있다. 파일블록, 즉, MP에 기록된 데이터가 제2저장매체(250)에 기록되면, 제1디스크 라이터(240)는 빈 파일블록을 제2비활성 블록풀(220)로 전달할 수 있다.
제1디스크 라이터(240)가 적어도 하나 이상의 마이크로 블록에 기록된 데이터를 제2저장매체(250)에 기록하는 동작에 대해 설명하면 다음과 같다.
먼저, 파일블록이 도 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파일이 기록될 영역을 미리 할당할 수 있다.
또한, 파일블록이 도 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에 기록된 데이터를 기록하는 과정도 상기와 동일하다.
제2제어부(260)는 적어도 하나 이상의 프로세서를 이용하여 상술한 제1데이터 수신 장치(200)의 동작을 제어할 수 있다.
도 5는 본 발명적 개념의 예시적 제2실시예에 따른 데이터의 병렬 전송을 위한 제2데이터 전송 장치(500) 및 제2데이터 수신 장치(600)를 도시한 블록도이다.
제2데이터 전송 장치(500) 및 제2데이터 수신 장치(600)는 전송 대상 파일들을 묶음 전송하면서 이어받기 전송을 할 수 있다. 이를 위하여, 제2데이터 전송 장치(500)는 제3저장매체(510), 리스트 관리부(520), 제3비활성 블록풀(530), 제2디스크 리더(540), 제3활성 블록풀(550), 제3통신부(560) 및 제3제어부(570)를 포함할 수 있다.
도 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)의 동작을 포함하므로 상세한 설명은 생략한다.
리스트 관리부(520)는 제2데이터 수신 장치(600)로 묶음 전송할 전송 대상 파일들에게 인덱스를 할당하고, 전송 대상 파일들을 복수 개의 전송 파일 리스트들로 분할할 수 있다. 예를 들어, 리스트 관리부(520)는 100개의 전송 대상 파일들을 제2데이터 수신 장치(600)로 전송하려는 경우, 100개의 파일들에 0~99까지의 인덱스를 할당하고 100개의 파일들을 예를 들어 20개씩 분류하여 5개의 제1 내지 제5전송 파일 리스트들을 만들 수 있다. 리스트 관리부(520)는 각 전송 파일 리스트마다 해당 전송 파일 리스트에 포함된 파일들의 인덱스, 파일명 및 전체파일크기에 대한 정보를 추가로 기재하여 제2데이터 수신 장치(600)로 전송하도록 할 수 있다.
그리고, 리스트 관리부(520)는 복수 개의 전송 파일 리스트들을 제2데이터 수신 장치(600)로 전송하도록 할 수 있다. 또한, 리스트 관리부(520)는 먼저 보낸 전송 파일 리스트에 대해 제2데이터 수신 장치(600)의 리스트 확인부(620)로부터 응답(예를 들어, 이어받기 리스트)이 오면 다음 전송 파일 리스트를 전송하도록 할 수도 있다.
도 6은 본 발명적 개념의 예시적 실시예에 따른 전송 파일 리스트의 구조를 도시한 도면이다.
도 6을 참조하면, 리스트 관리부(520)는 제1 내지 제n인덱스, 제1 내지 제n파일명, 제1 내지 제n파일크기 및 종료 식별자를 포함하는 전송 파일 리스트를 작성할 수 있다. 제1 내지 제n인덱스는 전송 파일 리스트에 포함되는 n개의 파일들에 할당된 인덱스이다. 제1 내지 제n파일명은 제1 내지 제n인덱스에 대응하는 각 파일의 파일명이다. 제1 내지 제n파일크기는 제1 내지 제n인덱스에 대응하는 각 파일의 크기이다. 종료 식별자는 더 이상 전송할 파일이 없을 경우를 표시하기 위한 종결문자(end delimiter)로서, 마지막 전송 파일 리스트에 추가로 기재될 수 있다.
리스트 관리부(520)는 전송할 파일들이 모두 m개(m>n)인 경우, 도 6과 같은 전송 파일 리스트를 두 개 이상 작성할 수 있다.
도 6에 도시된 전송 파일 리스트의 예를 참조하면, 전송 파일 리스트는 제1 내지 제n파일에 대한 파일 정보를 포함하고 있다. 자세히는, 전송 파일 리스트는 제1 내지 제n파일의 인덱스로서 0, 1, …, n-1과, 제1 내지 제n파일의 파일명으로서 a, so.txt, …, b.jpg와, 제1 내지 제n파일의 크기로서 10bytes, 3000bytes, …, 1000bytes를 포함하고 있다.
다시 도 5를 참조하면, 제3통신부(560)는 복수 개의 전송 파일 리스트들을 순차적으로 제2데이터 수신 장치(600)로 전송하며, 병렬 TCP 스트림과는 다른 독립적인 채널을 통해 전송할 수 있다. 또한, 제3통신부(560)는 복수 개의 전송 파일 리스트들을 순차적으로 제2데이터 수신 장치(600)로 전송하는 동안, 파일블록들을 병렬 TCP 스트림을 통해 제2데이터 수신 장치(600)로 전송할 수 있다.
제2디스크 리더(540)는 이어받기 리스트가 수신되면, 이어받기 리스트에 포함된 인덱스에 대응하는 파일을 전송 대상 파일들로부터 확인하고, 확인된 파일 중 이어받기 리스트에 포함된 오프셋에 대응하는 위치부터의 데이터를 파일블록에 기록하여 이어받기 전송을 시도할 수 있다. 제2디스크 리더(540)는 도 4a 또는 도 4b를 참조하여 설명한 파일블록(또는 마이크로블록)을 이용하여, 이어받기할 파일의 데이터를 파일블록에 기록할 수 있다.
한편, 제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)의 동작을 포함하므로 상세한 설명은 생략한다.
제4통신부(610)는 제2데이터 전송 장치(500)로부터 전송 파일 리스트들을 순차적으로 수신하고, 각 전송 파일 리스트에 대한 응답인 이어받기 리스트들을 제2데이터 전송 장치(500)에게 전송할 수 있다. 또한, 전송 파일 리스트들이 수신되는 동안, 제4통신부(610)는 제2데이터 전송 장치(500)로부터 파일블록들을 병렬 TCP 스트림을 통해 파일블록을 수신할 수 있다. 전송 파일 리스트는 제2데이터 전송 장치(500)가 전송 대상 파일들을 분할하여 생성한 복수 개의 전송 파일 리스트들 중 하나로서, 하나의 전송 파일 리스트에 포함된 파일들의 인덱스, 파일명 및 전체파일크기에 대한 정보를 포함할 수 있다.
리스트 확인부(620)는 제2데이터 전송 장치(500)로부터 수신된 전송 파일 리스트와 파일블록을 통해 기수신된 복수 개의 파일들을 비교하여, 기수신된 복수 개의 파일들 중 이어받기할 파일을 판단하고, 판단된 파일의 인덱스와 오프셋-판단된 파일 중 이어받기할 데이터의 시작 주소를 나타냄-을 포함하는 이어받기 리스트를 작성하여 제2데이터 전송 장치(500)에게 전송할 수 있다. 리스트 확인부(620)에서 작성되는 이어받기 리스트는 도 8을 참조하여 설명한다.
리스트 확인부(620)는 전송 파일 리스트에 포함된 파일들이 제4저장매체(660)에 저장되어 있지 않은 경우, 즉, 전송 파일 리스트를 처음 수신한 경우, 전송 파일 리스트에 포함된 파일들의 전체 전송을 요청하는 이어받기 리스트를 작성할 수 있다.
도 7은 본 발명적 개념의 예시적 실시예에 따른 메타파일의 구조를 도시한 도면이다.
도 7을 참조하면, 제2디스크 라이터(650)는 FB의 최대 전송 크기, 수신된 누적 파일 크기, 첫 번째 MB(또는 FB)의 크기, i번째 MB(또는 FB)의 플래그 및 종료 식별자를 포함하는 메타파일을 작성할 수 있다.
제1파일이 수신된 경우, 'FB의 최대 전송 크기'는 제1파일을 전송하는 파일블록에 할당된 최대 전송량이다. '수신된 누적 파일 크기'는 적어도 하나 이상의 파일블록을 통해 수신된 제1파일의 누적 크기(누적량)이다. 예를 들어, '수신된 누적 파일 크기'는 제1파일이 3개의 파일블록을 통해 수신된 경우, 3개의 파일블록에 기록된 제1파일의 크기를 합한 것이다. 제1파일을 전송하는 파일블록들 중 하나가 수신되지 않은 경우, 제1파일의 수신된 누적 파일 크기는 제1파일의 실제 크기보다 작을 수 있다.
'첫 번째 MB의 크기'는 제1파일을 최초 전송한 마이크로블록의 크기로서, '첫 번째 MB의 크기'는 FP의 최대 MP 크기와 동일하거나 작을 수 있다. '첫 번째 MB의 크기'가 FP보다 작은 경우는, 하나의 파일블록에 적어도 두 개의 파일이 기록되어 있기 때이다. i번째 MB의 플래그는 제1파일을 연속적으로 전송한 다음 MB들의 수신 여부를 나타내는 정보이다. i=2, 3, …, m(m은 양수)이다. fi=0은 제1파일의 데이터를 기록한 i번째 MB가 수신되지 않았음을 의미하며, fi=1은 i번째 MB가 수신되었음을 의미한다.
도 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'을 기록한다.
제2디스크 라이터(650)는 메타파일을 작성하면서, 그와 동시에 MP에 기록된 데이터를 MH에 기록된 오프셋을 참조하여 제4저장매체(660)에 저장할 수 있다. 작성된 메타파일은 제2디스크 라이터(650)가 사용하는 메모리(미도시)에 저장될 수 있다. 따라서, 메모리에는 제2데이터 전송 장치(500)로부터 수신된 파일들의 메타파일들이 저장될 수 있다.
제2디스크 라이터(650)는 적어도 하나의 파일블록을 통해 수신된 적어도 하나의 이상의 파일마다 메타파일을 작성할 수 있다. 또한, 제2디스크 라이터(650)는 수신된 파일이 끊김없이 또는 중간의 누락없이 모두 전송된 것으로 확인되면 메타파일을 삭제할 수 있다. 제2디스크 라이터(650)는 메타파일의 플래그가 모두 1이고, 첫 번째 MB의 크기가 0이 아니면 파일이 모두 수신되어 제4저장매체(660)에 저장된 것으로 판단할 수 있다.
이하에서는 리스트 확인부(620)가 메모리에 저장된 메타파일을 참조하여 이어받기 리스트를 작성하고, 리스트 관리부(520)가 이어받기 파일의 데이터를 재전송하는 동작에 대해 설명한다.
리스트 확인부(620)는 제2데이터 전송 장치(500)로부터 수신된 전송 파일 리스트에 포함된 파일명에 해당하는 파일이 기수신된 복수 개의 파일들 중 하나인 제1파일이고, 제1파일의 메타파일이 존재하면, 제1파일을 이어받기할 파일로 판단할 수 있다. 즉, 리스트 확인부(620)는 전송 파일 리스트에 포함된 파일들을 확인하고, 확인된 파일들 중 메타파일이 존재하는 파일은 모두 이어받기할 파일로 판단할 수 있다. 리스트 확인부(620)는 이어받기할 파일들의 정보를 이용하여 이어받기 리스트를 작성할 수 있다.
도 8은 본 발명적 개념의 예시적 실시예에 따른 이어받기 리스트의 구조를 도시한 도면이다.
도 8을 참조하면, 리스트 확인부(620)는 이어받기할 파일들의 인덱스, 오프셋 및 종료 식별자를 포함하는 이어받기 리스트를 작성할 수 있다. 리스트 확인부(620)는 데이터 전송량을 최소화하기 위하여 이어받기할 파일들의 파일명은 이어받기 리스트에 포함하지 않을 수 있으며, 이는 선택사항이다.
'이어받기할 파일들의 인덱스'는 이어받기할 파일에 할당된 고유 식별자로서, 도 6의 전송 파일 리스트로부터 알 수 있다. '오프셋'은 이어받기할 파일 중 이어받기할 데이터의 시작 주소를 나타낸다. '종료 식별자'는 전송 파일 리스트에 포함된 파일들 중 이어받기할 파일들의 정보를 이어받기 리스트에 모두 기록하면, 현재 전송 파일 리스트에 대해서는 더 이상 이어받기할 파일이 없음을 알려주는 종결 문자이다.
도 8에 도시된 이어받기 리스트의 예를 참조하면, 리스트 확인부(620)는 하나의 전송 파일 리스트에 포함된 파일들 중 이어받기할 파일들로서 판단된 파일들의 인덱스가 각각 '0'과 '3'인 경우, '0'과 '3'을 인덱스 영역에 기록한다.
리스트 확인부(620)는 해당하는 메타파일의 '1ST MB의 크기'와 플래그 정보를 참조하여 오프셋-이어받기할 데이터의 시작 주소-을 산출할 수 있다.
자세히 설명하면, 이어받기할 파일로 판단된 파일이 제1파일이고, 제1파일이 복수 개의 파일블록들을 통해 수신된 경우, 리스트 확인부(620)는, 제1파일의 메타파일에 제1파일을 처음 전송한 첫 번째 파일블록(i=1)의 전송량(1ST MB의 크기)이 0으로 기록되어 있으면, 제1파일의 오프셋을 0으로 하는 이어받기 리스트를 작성할 수 있다. 이러한 경우, 제2데이터 전송 장치(500)는 제1파일을 처음부터 재전송한다.
또한, 리스트 확인부(620)는, 제1파일이 복수 개의 파일블록들을 통해 수신된 경우, 메타파일에 제1파일을 처음 전송한 첫 번째 파일블록(i=1)의 전송량이 k바이트(k는 양수)로 기록되어 있고, 제1파일을 i(i=2, 3, …, m)번째로 전송한 파일블록의 플래그가 0이면, 'k바이트+(i-2)*n바이트'를 제1파일의 오프셋으로서 산출할 수 있다. n바이트는 도 7에 도시된 'FB의 최대 전송 크기'이다.
도 8에 도시된 이어받기 리스트의 예를 참조하면, 리스트 확인부(620)는 하나의 전송 파일 리스트에 포함된 파일들 중 이어받기할 파일들로서 판단된 제1파일과 제2파일의 인덱스가 각각 '0'과 '3'인 경우, '0'과 '3'을 인덱스 영역에 기록한다. 도 7에 도시된 메타파일의 예가 제1파일의 메타파일인 경우, 리스트 확인부(620)는 다음과 같이 제1파일의 오프셋을 산출한다.
오프셋= 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)에게 파일블록을 이용하여 묶음 방식으로 재전송할 수 있다.
상술한 본 발명적 개념의 예시적 제2실시예에 따른 리스트 관리부(520), 리스트 확인부(620), 제2디스크 리더(540), 제2디스크 라이터(650), 제2소켓 라이터들(561) 및 제2소켓 리더들(611)은 스레드로 동작하여 동시에 실행될 수 있다.
도 9는 본 발명적 개념의 예시적 제1실시예에 따른 데이터의 병렬 전송 방법을 설명하기 위한 흐름도이다.
도 9의 데이터의 병렬 전송 방법을 수행하는 제1데이터 전송 장치는 도 2를 참조하여 설명한 제1데이터 전송 장치(100)일 수 있다.
도 9를 참조하면, 제1데이터 전송 장치는 사용자로부터 복수 개의 파일들의 묶음 전송 요청을 수신할 수 있다(S910). 이하에서는 제1 및 제2파일의 묶음 전송을 예로 들어 설명한다.
제1데이터 전송 장치는 묶음 전송이 요청된 파일들 중 제1파일의 데이터를 저장매체로부터 읽어와 MB를 생성할 수 있다(S920). S920단계에서, 제1데이터 전송 장치는 제1파일의 데이터를 읽어오기 이전에 비활성 블록풀로부터 가져온 FP의 최대 크기와 제1파일의 전체 크기를 비교하여 MB를 생성할 수 있다. 이에 대해서는 도 10을 참조하여 자세히 설명한다.
제1데이터 전송 장치는 생성된 MB 중 MP에 읽어온 데이터를 기록한 후 MB로 FP를 채울 수 있다(S930).
제1데이터 전송 장치는 FP에 데이터를 추가로 기록할 수 있는 영역이 남아 있는지 확인한다(S940).
남은 영역이 없으면(S940-N), 제1데이터 전송 장치는 FP에 데이터가 모두 채워진 FB를 제1데이터 수신 장치로 병렬 TCP 스트림 방식을 통해 전송할 수 있다.
반면, 남은 영역이 있으면(S940-Y), 묶음 전송할 파일들이 FB에 모두 기록되었는지 확인할 수 있다(S960). S960단계에서, 제1데이터 전송 장치는 제1파일이 모두 FB에 기재된 것으로 판단하고, 추가로 전송할 제2파일이 있는지 확인할 수 있다.
묶음 전송할 파일들이 모두 기록되었으면(S960-Y), 제1데이터 전송 장치는 FP의 일부가 빈 FB를 제1데이터 수신 장치에게 전송할 수 있다(S970).
묶음 전송할 파일들이 남아 있으면(S960-N), 제1데이터 전송 장치는 S920단계로 진입하여 제2파일의 데이터를 읽고 S920단계 내지 S970단계를 반복할 수 있다.
도 10은 도 9에 도시된 데이터의 병렬 전송 방법을 보다 자세히 설명하기 위한 흐름도이다.
도 10을 참조하면, 제1데이터 전송 장치는 사용자로부터 복수 개의 파일들의 묶음 전송 요청을 수신할 수 있다(S1000). 이하에서는 제n파일 및 제n+1파일의 묶음 전송을 예로 들어 설명한다.
제1데이터 전송 장치는 FB에 할당가능한 최대 MP의 크기와 제n파일의 데이터 크기를 비교할 수 있다(S1005). S1005단계에서, 제1데이터 전송 장치는 비활성 블록풀로부터 FB를 가져오고 제1저장매체로부터 제n파일을 읽어와 크기를 비교할 수 있다.
최대 MP가 제n파일의 데이터보다 크면(S1010-Y), 제1데이터 전송 장치는 제n파일의 데이터 크기에 해당하는 MB(이하, MBn이라 한다)를 생성할 수 있다(S1015).
그리고, 제1데이터 전송 장치는 MBn의 MHn과 MPn에 각각 헤더정보와 제n파일의 데이터를 기록할 수 있다(S1020). S1020단계에서 기록되는 헤더정보는 도 4a를 참조하여 설명한 정보들일 수 있다.
제1데이터 전송 장치는 묶음 전송이 요청된 제n+1파일의 기록되었는지 확인하고, 기록되지 않았으면(S1025-N), 제1데이터 전송 장치는 FP 중 MBn을 제외하고 남은 최대 MP와 제n+1파일의 데이터 크기를 비교할 수 있다(S1030).
그리고, 제1데이터 전송 장치는 'n=n+1' 정한 후(S1035), S1010단계로 진입하여 S1015단계 내지 S1020단계를 반복수행할 수 있다.
반면, 제1데이터 전송 장치는 제n+1파일의 기록된 것으로 확인되면(S1025-Y), FP의 일부가 빈 FB를 제1데이터 수신 장치로 전송할 수 있다(S1040). S1040단계에서 전송되는 FB에는 제n파일과 제n+1파일이 기록되어 묶음전송될 수 있다.
한편, S1010단계에서, 최대 MP와 제n파일의 데이터 크기가 동일하면(S1045-Y), 제1데이터 전송 장치는 제n파일의 데이터 크기에 해당하는 MBn을 생성할 수 있다(S1050).
그리고, 제1데이터 전송 장치는 MBn의 MHn과 MPn에 각각 헤더정보와 제n파일의 데이터를 기록할 수 있다(S1055).
제n파일의 데이터가 기록되면, 제1데이터 전송 장치는 묶음 전송이 요청된 제n+1파일의 기록되었는지 확인하고, 기록되지 않았으면(S1060-N), 제1데이터 전송 장치는 'n=n+1'로 정한 후(S1065), S1005단계로 진입할 수 있다.
반면, 제1데이터 전송 장치는 제n+1파일의 기록된 것으로 확인되면(S1060-Y), FP가 채워진 FB를 제1데이터 수신 장치로 전송할 수 있다(S1070). S1070단계에서 전송되는 FB에는 제n파일과 제n+1파일이 기록되어 묶음전송될 수 있다.
한편, 최대 MP와 제n파일의 데이터 크기가 동일하지 않고(S1045-N), 최대 MP보다 제n파일의 데이터 크기가 큰 경우(S1075), 제1데이터 전송 장치는 최대 MP의 크기에 해당하는 MBn을 생성할 수 있다(S1080).
제1데이터 전송 장치는 MBn의 MHn과 MPn에 각각 헤더정보와 제n파일의 데이터를 기록할 수 있다(S1085).
그리고, 제1데이터 전송 장치는 다음 FB의 최대 MP 크기와 제n파일의 남은 데이터의 크기를 비교할 수 있다(S1090).
이와 함께, 제1데이터 전송 장치는 'FB=다음 FB'로 정하고, '제n파일의 크기=제n파일의 남은 데이터 크기'로 정한 후(S1095), S1010단계로 진입할 수 있다. 이로써, 제1데이터 전송 장치는 S1010단계 내지 S1095단계를 반복수행하여 제n파일의 남은 데이터를 다음 FB에 기록할 수 있다.
도 11은 본 발명적 개념의 예시적 실시예에 따른 데이터의 병렬 수신 방법을 설명하기 위한 흐름도이다.
도 11의 데이터의 병렬 수신 방법을 수행하는 제1데이터 수신 장치는 도 2를 참조하여 설명한 제1데이터 수신 장치(200)일 수 있다.
도 11을 참조하면, 제1데이터 수신 장치는 제1데이터 전송 장치로부터 수신된 FB의 헤더정보와 데이터를 비어있는 FB에 기록할 수 있다(S1110). S1110단계에서, 제1데이터 수신 장치는 수신된 FB가 복수 개의 MB들을 포함하는 경우, 비어있는 FB를 복수 개의 MB들로 구분하여 동일하게 데이터를 기록할 수 있다.
제1데이터 수신 장치는 헤더정보와 데이터가 기록된 FB를 활성 블록풀에 보관한다(S1120).
제1데이터 수신 장치는 활성 블록풀에 보관된 FB로부터 데이터를 MB 단위로 읽어와 제2저장매체에 기록할 수 있다(S1130). S1130단계에서, 제1데이터 수신 장치는 MH에 기록된 오프셋을 참조하여, MP에 기록된 데이터를 제2저장매체에 기록할 수 있다.
제1데이터 수신 장치는 FB에 남은 MB가 있으면(S1140-Y) S1130단계를 반복수행한다.
반면, FB에 남은 마이크로 블록이 없으면(S1140-N), 즉, FP에 기록된 데이터들이 모두 제2저장매체에 기록되면, 활성 블록풀에 다른 FB가 있는지 확인할 수 있다(S1150).
활성 블록풀에 다른 FB가 있으면(S1150-Y), 제1데이터 수신 장치는 S1110단계로 진입한다.
반면, 활성 블록풀에 다른 FB가 없으면(S1150-N), 제1데이터 수신 장치는 묶음 전송이 요청된 파일들의 저장이 완료되었는지 확인할 수 있다(S1160). S1160단계에서, 제1데이터 수신 장치는 MH의 file size에 기록된 크기와 실제 수신된 데이터의 크기가 동일한 경우 파일의 저장이 완료된 것으로 확인할 수 있다.
저장이 완료된 경우(S1160-Y), 제1데이터 수신 장치는 묶음 파일의 수신이 완료되었음을 보고하는 수신 완료 메시지를 제1데이터 전송 장치에게 전송할 수 있다(S1170).
저장이 완료되지 않은 경우(S1160-N), 제1데이터 수신 장치는 S1150단계로 진입한다.
도 12는 본 발명적 개념의 예시적 다른 실시예에 따른 데이터의 병렬 송수신 방법을 설명하기 위한 흐름도이다.
도 12의 데이터의 병렬 송수신 방법을 수행하는 제2데이터 전송 장치와 제2데이터 수신 장치는 도 5를 참조하여 설명한 제2데이터 전송 장치(500)와 제2데이터 수신 장치(600)일 수 있다.
도 12를 참조하면, 제1데이터 수신 장치는 제2데이터 전송 장치는 사용자로부터 복수 개의 파일들의 묶음 전송 요청을 수신할 수 있다(S1205).
제2데이터 전송 장치는 묶음 전송할 전송 대상 파일들을 분할하여 복수 개의 그룹을 만들 수 있다(S1210).
제2데이터 전송 장치는 각 그룹에 속하는 파일들을 이용하여 도 6과 같은 전송 파일 리스트를 작성할 수 있다(S1215). 즉, 제2데이터 전송 장치는 하나의 그룹당 하나의 전송 파일 리스트를 작성할 수 있다. 전송 파일 리스트는 하나의 그룹에 속한 파일들의 인덱스, 파일명 및 전체파일크기에 대한 정보를 포함한다.
제2데이터 전송 장치는 S1215단계에서 작성된 전송 파일 리스트를 제2데이터 수신 장치에게 전송할 수 있다(S1220).
제2데이터 전송 장치는 작성된 전송 파일 리스트를 전송하는 동안 남은 그룹에 대한 전송 파일 리스트의 작성이 완료되었는지 확인한다(S1225).
작성이 완료되지 않은 경우(S1225-N), 제2데이터 전송 장치는 남은 그룹에 대한 전송 파일 리스트를 작성하여 전송하는 S1215단계 및 S1220단계를 반복수행할 수 있다.
제2데이터 수신 장치는 S1220단계에서 수신된 전송 파일 리스트와 FB를 통해 기수신된 복수 개의 파일들을 비교하여, 기수신된 복수 개의 파일들 중 이어받기할 파일을 판단하고, 판단된 파일의 인덱스와 오프셋-판단된 파일 중 이어받기할 데이터의 시작 주소를 나타냄-을 포함하는 이어받기 리스트를 작성할 수 있다(S1230). S1230단계는 도 13을 참조하여 보다 자세히 설명한다.
제2데이터 수신 장치는 작성된 이어받기 리스트를 제2데이터 전송 장치에게 전송할 수 있다(S1235).
제2데이터 전송 장치는 수신된 이어받기 리스트를 참조하여 묶음 전송할 파일들의 데이터를 적어도 하나 이상의 FB에 기록할 수 있다(S1240). S1240단계에서, 제2데이터 전송 장치는 도 9 및 도 10을 참조하여 설명한 바와 같이 MB 단위로 데이터를 FB에 기록할 수 있다.
제2데이터 전송 장치는 S1240단계에서 데이터가 기록된 적어도 하나 이상의 FB를 제2데이터 수신 장치에게 전송할 수 있다(S1245). S1240단계 및 S1245단계에서, 제2데이터 전송 장치는 이어받기 리스트에 포함된 인덱스에 해당하는 파일을 제3저장매체로부터 확인하고, 확인된 파일 중 오프셋에 해당하는 위치(또는 그 다음 위치)부터의 데이터를 제2데이터 수신 장치에게 FB를 이용하여 묶음 방식으로 초기 전송 또는 재전송할 수 있다. 예를 들어, 제2데이터 전송 장치는 이어받기 리스트의 오프셋이 '0'인 경우 파일을 처음부터 전송하고, 오프셋이 '0'이 아닌 mbytes(m은 양수)인 경우, 파일 중 mbytes에 해당하는 위치부터의 데이터를 전송할 수 있다.
제2데이터 수신 장치는 수신된 적어도 하나 이상의 FB의 헤더정보와 데이터를 비어있는 적어도 하나 이상의 FB에 기록할 수 있다(S1250). S1250단계에서, 제2데이터 수신 장치는 수신된 FB가 복수 개의 MB들을 포함하는 경우, 비어있는 FB를 복수 개의 MB들로 구분하여 동일하게 데이터를 기록할 수 있다.
제2데이터 수신 장치는 헤더정보와 데이터가 기록된 적어도 하나의 FB를 활성 블록풀에 순차적으로 보관한다(S1255).
제2데이터 수신 장치는 활성 블록풀에 보관된 FB 중 마이크로페이로드에 기록된 파일(이하에서는 '제1파일'이라 한다)의 메타파일이 존재하는지 확인할 수 있다(S1260).
제1파일의 메타파일이 제2데이터 수신 장치에 존재하지 않으면(S1260-N), 제2데이터 수신 장치는 제1파일의 메타파일을 작성할 수 있다(S1265). S1265단계에서 제2데이터 수신 장치는 도 7과 같은 형태의 메타파일을 작성할 수 있다.
제2데이터 수신 장치는 FB의 MP에 기록된 제1파일의 데이터를 제4저장매체에 저장할 수 있다(S1270).
제1파일이 복수 개의 FB들을 통해 수신되는 경우, 제2데이터 수신 장치는 FB들이 수신될 때마다 메타파일을 업데이트할 수 있다(S1275).
제2데이터 수신 장치는 FB에 기록된 데이터들이 모두 제4저장매체에 기록되었으면, 활성 블록풀에 다른 FB가 있는지 확인할 수 있다(S1280).
활성 블록풀에 다른 FB가 있으면(S1280-Y), 제2데이터 수신 장치는 S1260단계로 진입한다.
반면, 활성 블록풀에 다른 FB가 없으면(S1280-N), 제2데이터 수신 장치는 파일들의 저장이 완료되었는지 확인하고, 묶음 파일의 수신 또는 이어받기 수신이 완료되었음을 보고하는 수신 완료 메시지를 제2데이터 전송 장치에게 전송할 수 있다(S1285).
상술한 데이터 병렬 송수신 방법에 있어서, 제2데이터 전송 장치는 제2데이터 수신 장치가 이어받기 리스트를 작성하는 동안 S1215단계 내지 S1225단계를 병행할 수 있으며, S1215단계 내지 S1235단계가 수행되는 동안 S1240단계 내지 S1245단계를 병행할 수도 있다.
도 13은 도 12의 S1230단계를 보다 자세히 도시한 흐름도이다.
도 13을 참조하면, 제2데이터 수신 장치는 제2데이터 전송 장치로부터 전송 파일 리스트를 수신한다(S1300).
제2데이터 수신 장치는 수신된 전송 파일 리스트에 포함된 파일들 중 현재 처리할 제1파일이 제4저장매체에 저장되어 있는지 확인한다(S1310). 제2데이터 수신 장치는 전송 파일 리스트에 기록된 제1파일의 파일명 또는 인덱스와 제4저장매체에 저장된 파일명 또는 인덱스를 비교하여 제1파일의 저장여부를 확인할 수 있다.
제1파일이 제4저장매체에 저장되어 있으면(S1310-Y), 제2데이터 수신 장치는 전송 파일 리스트에 기록된 제1파일의 크기와 제4저장매체에 저장된 제1파일의 크기가 동일하고, 제1파일의 메타파일이 메모리에 저장되어 있는지 확인할 수 있다(S1320).
서로 크기가 동일하면서 제1파일의 메타파일이 저장되어 있지 않으면(S1330-Y), 제2데이터 수신 장치는 제1파일의 전송이 완료된 것으로 판단하고 이어받기를 하지 않는다(S1330).
반면, 서로 크기가 동일하나 제1파일의 메타파일이 저장되어 있지 않거나, 서로 크기도 다르면서 메타파일이 저장되어 있지 않으면(S1330-N), 제2데이터 수신 장치는 메타파일의 첫 번째 MB(1ST MB)의 크기가 '0'인지 확인할 수 있다(S1340).
메타파일의 첫 번째 MB의 크기가 0이 아니면(S1340-N), 제2데이터 수신 장치는 제1파일을 처음 전송한 FB(또는 MB)가 수신되었으므로 i=2(i는 제1파일을 i번째로 전송한 MB임)로 설정한다(S1350).
그리고, 제2데이터 수신 장치는 두 번째 MB(i=2)의 플래그인 fi가 '0'인지 확인할 수 있다(S1360).
S1360단계에서 fi=0(i=2)이면(S1360-Y), 제2데이터 수신 장치는 제1파일을 전송한 두 번째 FB가 수신되지 않은 것으로 판단하고 이어받기할 주소인 오프셋을 산출할 수 있다(S1370). S1370단계에서, 제2데이터 수신 장치는 '오프셋=k바이트+(i-2)*n바이트'를 이용하여 제1파일의 오프셋을 산출할 수 있다. 산출된 오프셋은 제1파일의 메타파일에 기록된 수신된 누적 파일 크기와 같을 수 있다.
제2데이터 수신 장치는 제1파일의 인덱스와 S1370단계에서 산출된 오프셋을 이어받기 리스트에 기록할 수 있다(S1380).
도 13은 하나의 전송 파일 리스트에 포함된 복수 개의 파일들 중 제1파일의 오프셋을 구하는 과정에 대해 도시한 것으로서, 제2데이터 수신 장치는 전송 파일 리스트에 포함된 모든 파일들에 대해 S1320단계 내지 S1380단계를 반복수행할 수 있다. 이로써, 제2데이터 수신 장치는 하나의 전송 파일 리스트에 대한 응답인 이어받기 리스트를 최종으로 작성하여 제2데이터 전송 장치에게 전송할 수 있다(S1235).
상기와 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
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제어부
120: 제1비활성 블록풀 130: 제1디스크 리더
140: 제1활성 블록풀 150: 제1통신부
160: 제1제어부 200: 제1데이터 수신 장치
210: 제2통신부 220: 제2비활성 블록풀
230: 제2활성 블록풀 240: 제1디스크 라이터
250: 제2저장매체 260: 제2제어부
Claims (32)
- 복수의 파일들을 전송하는 데이터 전송 장치에 있어서
파일블록 페이로드의 크기와 전송할 파일의 크기에 따라서 파일블록을 하나 또는 복수 개의 마이크로블록들로 나누고, 상기 하나 또는 복수 개의 마이크로블록들의 각각의 크기에 대응하는 데이터를 상기 복수 개의 파일들로부터 읽어와 상기 하나 또는 복수 개의 마이크로블록들에 순차적으로 기록하는 디스크 리더; 및
상기 파일블록에 포함된 하나 또는 복수 개의 마이크로블록들에 데이터가 기록되면, 상기 파일블록을 데이터 수신 장치로 전송하는 통신부;를 포함하고,
상기 하나 또는 복수의 마이크로블록들은 각각 마이크로블록 헤더 및 마이크로블록 페이로드로 구분되며,
상기 하나 또는 복수의 마이크로블록들의 크기는 유동적이며,
상기 디스크 리더는,
상기 마이크로블록 헤더에 상기 마이크로블록 페이로드에 기록되는 데이터의 주소를 나타내는 오프셋을 기록하고, 상기 마이크로블록 페이로드에 상기 데이터를 기록하며,
상기 디스크 리더는,
상기 복수 개의 파일들 중 제1파일의 데이터를 상기 복수 개의 마이크로블록들에 기록하고 상기 파일 블록에 제1파일의 데이터를 기록한 마이크로블록 이외의 빈 영역이 있으면 추가의 마이크로블록을 생성하고, 상기 복수 개의 파일들 중 제2파일의 데이터를 상기 추가의 마이크로블록에 기록하는 것을 특징으로 하는 데이터 전송 장치. - 삭제
- 삭제
- 제1항에 있어서,
상기 디스크 리더는,
상기 파일 블록에 상기 복수 개의 파일들 중의 제1파일의 데이터가 모두 채워질 경우, 상기 파일블록을 한 개의 마이크로블록 헤더와 한 개의 마이크로블록 페이로드로 나누는 것을 특징으로 하는 데이터 전송 장치. - 제1항에 있어서,
상기 데이터 수신 장치로 전송할 전체 파일들로부터 복수 개의 전송 파일 리스트들을 생성하고, 상기 복수 개의 전송 파일 리스트들을 상기 데이터 수신 장치로 전송하는 리스트 관리부;를 더 포함하며,
상기 복수 개의 전송 파일 리스트들은, 각각 해당 전송 파일 리스트에 포함된 파일들의 인덱스, 파일명 및 파일크기에 대한 정보를 포함하는 것을 특징으로 하는 데이터 전송 장치. - 제5항에 있어서,
상기 통신부는,
상기 전송 파일 리스트들이 상기 데이터 수신 장치로 순차적으로 전송되는 동안, 상기 데이터가 모두 기록된 복수 개의 마이크로블록들을 포함하는 상기 파일블록을 병렬 스트림을 이용하여 전송하는 것을 특징으로 하는 데이터 전송 장치. - 제5항에 있어서,
상기 데이터 수신 장치는,
상기 복수 개의 전송 파일 리스트들 중 현재 수신된 전송 파일 리스트와 상기 파일블록을 통해 수신된 복수 개의 파일들을 비교하여, 상기 복수 개의 파일들 중 이어받기할 파일을 판단하고, 상기 판단된 파일의 인덱스와 오프셋-상기 판단된 파일 중 이어받기할 데이터의 시작 주소를 나타냄-을 포함하는 이어받기 리스트를 작성하여 상기 리스트 관리부에게 전송하는 것을 특징으로 하는 데이터 전송 장치. - 제5항에 있어서,
상기 디스크 리더는,
상기 데이터 수신 장치로부터 수신한 이어받기 리스트에 포함된 인덱스에 대응하는 파일을 상기 복수 개의 파일들로부터 확인하고, 상기 확인된 파일 중 상기 이어받기 리스트에 포함된 오프셋에 대응하는 위치부터의 데이터를 상기 파일블록에 기록하여 이어받기 전송을 시도하며,
상기 이어받기 리스트는 이어받기할 것으로 판단된 파일의 인덱스와 상기 이어받기할 것으로 판단된 파일에 있어서 이어받기할 데이터의 시작 주소를 나타내는 오프셋을 포함하는 것을 특징으로 하는 데이터 전송 장치. - 복수 파일들을 데이터 전송 장치로부터 수신하는 데이터 수신 장치에 있어서,
상기 데이터 전송 장치로부터 전송되는 파일블록-데이터 전송 단위-들을 수신하는 통신부; 및
상기 수신된 파일블록들이 각각 하나 또는 복수 개의 마이크로블록들- 적어도 하나 이상의 파일의 데이터가 기록되는 단위-을 포함하는 경우, 마이크로블록단위로 데이터를 읽어 저장매체에 기록하는 디스크 라이터;를 포함하고,
상기 하나 또는 복수 개의 마이크로블록들은 각각 마이크로블록 헤더 및 마이크로블록 페이로드를 포함하며,
상기 하나 또는 복수 개의 마이크로블록들은 상기 파일블록의 페이로드의 크기와 상기 데이터 수신장치가 상기 데이터 전송 장치로부터 수신하는 파일의 크기에 따라서 나누어진 것이며,
상기 하나 또는 복수의 마이크로블록들의 크기는 유동적이며,
상기 디스크 라이터는,
상기 마이크로블록 헤더에 기록된 오프셋-상기 마이크로블록에 기록된 데이터의 주소를 나타냄-을 참조하여 상기 마이크로블록 페이로드에 기록된 데이터를 상기 저장매체에 기록하며,
상기 디스크 라이터는,
상기 마이크로블록 헤더에 기록된 파일패스(filepath)를 참조하여 상기 파일블록들을 통해 수신된 상기 적어도 하나 이상의 파일을 상기 저장매체에 각각 기록하는 것을 특징으로 하는 데이터 수신 장치. - 삭제
- 삭제
- 제9항에 있어서,
상기 통신부는,
전송 파일 리스트-상기 데이터 전송 장치가 상기 통신부로 전송할 전체 파일들을 분할하여 생성한 복수 개의 전송 파일 리스트들 중 하나-를 상기 데이터 전송 장치로부터 수신하며,
상기 전송 파일 리스트는 상기 하나의 전송 파일 리스트에 포함된 파일들의 인덱스, 파일명 및 파일크기에 대한 정보를 포함하는 것을 특징으로 하는 데이터 수신 장치. - 제12항에 있어서,
기수신된 복수 개의 파일들 중 이어받기할 파일을 상기 수신된 전송 파일 리스트를 이용하여 판단하고, 상기 판단된 파일의 인덱스와 오프셋-상기 판단된 파일 중 이어받기할 데이터의 시작 주소를 나타냄-을 포함하는 이어받기 리스트를 작성하여 상기 데이터 전송 장치에게 전송하는 리스트 확인부;를 더 포함하는 것을 특징으로 하는 데이터 수신 장치. - 제13항에 있어서,
상기 리스트 확인부는,
상기 수신된 전송 파일 리스트에 포함된 파일명에 해당하는 파일이 상기 기수신된 복수 개의 파일들 중 하나인 제1파일이고, 상기 제1파일의 메타파일이 존재하면, 상기 제1파일을 상기 이어받기할 파일로 판단하며,
상기 메타파일은 상기 제1파일의 전송완료여부에 대한 정보를 나타내는 플래그를 포함하는 것을 특징으로 하는 데이터 수신 장치. - 제14항에 있어서,
상기 리스트 확인부는,
상기 제1파일이 상기 복수 개의 파일블록들을 통해 수신된 경우, 상기 메타파일에 상기 복수 개의 파일블록들 중 상기 제1파일을 처음 전송한 첫 번째 파일블록의 전송량이 0으로 기록되어 있으면, 상기 제1파일의 오프셋을 0으로 하는 이어받기 리스트를 작성하며,
상기 데이터 전송 장치는 상기 제1파일을 처음부터 재전송하는 것을 특징으로 하는 데이터 수신 장치. - 제14항에 있어서,
상기 리스트 확인부는,
상기 제1파일이 상기 복수 개의 파일블록들을 통해 수신된 경우, 상기 메타파일에 상기 복수 개의 파일블록들 중 상기 제1파일을 처음 전송한 첫 번째 파일블록(i=1)의 전송량이 k바이트(k는 양수)로 기록되어 있고, 상기 제1파일을 i(i=2, 3, …, m)번째로 전송한 파일블록의 플래그가 0이면, 상기 제1파일의 오프셋을 k바이트+(i-2)*n바이트로 하는 이어받기 리스트를 작성하며,
상기 n바이트는 상기 파일블록의 최대 전송 크기인 것을 특징으로 하는 데이터 수신 장치. - 제14항에 있어서,
상기 디스크 라이터는, 상기 파일블록들을 통해 수신된 제1파일의 메타파일을 작성하며, 상기 제1파일의 메타파일은, 상기 파일블록의 최대 전송 크기, 상기 제1파일의 수신된 누적 파일 크기, 상기 복수 개의 파일블록들 중 상기 제1파일을 최초 전송한 파일블록의 크기 및 상기 제1파일을 연속적으로 전송한 다음 파일블록들의 수신 여부를 나타내는 플래그를 포함하는 것을 특징으로 하는 데이터 수신 장치. - 제13항에 있어서,
상기 데이터 전송 장치는 상기 수신된 이어받기 리스트에 포함된 인덱스에 해당하는 파일을 확인하고, 상기 확인된 파일 중 상기 오프셋에 해당하는 위치부터의 데이터를 상기 통신부에게 재전송하는 것을 특징으로 하는 데이터 수신 장치. - 데이터 전송 장치가 복수의 파일들을 데이터 수신 장치에게 전송하는 데이터 전송 방법에 있어서,
상기 데이터 전송 장치가, 파일블록 페이로드의 크기와 전송할 파일의 크기에 따라서 파일블록을 하나 또는 복수 개의 마이크로블록들로 나누고, 상기 하나 또는 복수 개의 마이크로블록들의 각각의 크기에 대응하는 데이터를 복수 개의 파일들로부터 읽어와 상기 하나 또는 복수 개의 마이크로블록들에 순차적으로 기록하는 단계; 및
상기 데이터 전송 장치가, 상기 파일블록에 포함된 하나 또는 복수 개의 마이크로블록들에 데이터가 기록되면, 상기 파일블록을 데이터 수신 장치로 전송하는 단계;를 포함하며,
상기 하나 또는 복수의 마이크로블록들은 각각 마이크로블록 헤더 및 마이크로블록 페이로드로 구분되며,
상기 하나 또는 복수의 마이크로블록들의 크기는 유동적이며,
상기 기록하는 단계는,
상기 마이크로블록 헤더에 상기 마이크로블록 페이로드에 기록되는 데이터의 주소를 나타내는 오프셋을 기록하고, 상기 마이크로블록 페이로드에 상기 데이터를 기록하며,
상기 기록하는 단계는,
상기 복수 개의 파일들 중 제1파일의 데이터를 상기 복수 개의 마이크로블록들에 기록하고 상기 파일 블록에 제1파일의 데이터를 기록한 마이크로블록 이외의 빈 영역이 있으면 추가의 마이크로블록을 생성하고, 상기 복수 개의 파일들 중 제2파일의 데이터를 상기 추가의 마이크로블록에 기록하는 것을 특징으로 하는 데이터 전송 방법. - 삭제
- 삭제
- 제19항에 있어서,
상기 기록하는 단계는,
상기 파일 블록에 상기 복수 개의 파일들 중의 제1파일의 데이터가 모두 채워질 경우, 상기 파일블록을 한 개의 마이크로블록 헤더와 한 개의 마이크로블록 페이로드로 나누는 것을 특징으로 하는 데이터 전송 방법. - 제19항에 있어서,
상기 데이터 전송 장치가, 상기 데이터 수신 장치로 전송할 전체 파일들로부터 복수 개의 전송 파일 리스트들을 생성하는 단계; 및
상기 데이터 전송 장치가, 상기 생성된 복수 개의 전송 파일 리스트들을 상기 데이터 수신 장치에게 순차적으로 전송하는 단계;를 더 포함하며,
상기 복수 개의 전송 파일 리스트들은, 각각 해당 전송 파일 리스트에 포함된 파일들의 인덱스, 파일명 및 파일크기에 대한 정보를 포함하는 것을 특징으로 하는 데이터 전송 방법. - 제23항에 있어서,
상기 데이터 수신 장치는,
상기 복수 개의 전송 파일 리스트들 중 현재 수신된 전송 파일 리스트와 상기 파일블록을 통해 수신된 복수 개의 파일들을 비교하여, 상기 복수 개의 파일들 중 이어받기할 파일을 판단하고, 상기 판단된 파일의 인덱스와 오프셋-상기 판단된 파일 중 이어받기할 데이터의 시작 주소를 나타냄-을 포함하는 이어받기 리스트를 작성하여 데이터 전송 장치에게 전송하는 것을 특징으로 하는 데이터 전송 방법. - 제23항에 있어서,
상기 데이터 전송 장치가, 이어받기 리스트를 상기 데이터 수신 장치로부터 수신하는 단계;
상기 데이터 전송 장치가, 상기 이어받기 리스트에 포함된 인덱스에 대응하는 파일을 상기 복수 개의 파일들로부터 확인하는 단계; 및
상기 데이터 전송 장치가, 상기 확인된 파일 중 상기 이어받기 리스트에 포함된 오프셋에 대응하는 위치부터의 데이터를 상기 파일블록에 기록하여 이어받기 전송을 시작하는 단계;를 더 포함하며,
상기 오프셋은 이어받기할 파일로 판단된 파일에서의 이어받기할 데이터의 시작 주소를 나타내는 것을 특징으로 하는 데이터 전송 방법. - 데이터 수신 장치가 복수의 파일들을 데이터 전송 장치로부터 수신하는 데이터 수신 방법에 있어서
데이터 수신 장치가, 데이터 전송 장치로부터 전송되는 복수 개의 파일블록-데이터 전송 단위-들을 수신하는 단계; 및
데이터 수신 장치가, 상기 수신된 파일블록들이 각각 하나 또는 복수 개의 마이크로블록들- 적어도 하나 이상의 파일의 데이터가 기록되는 단위-을 포함하는 경우, 마이크로블록단위로 데이터를 읽어 저장매체에 기록하는 단계;를 포함하며,
상기 하나 또는 복수의 마이크로블록들은 각각 마이크로블록 헤더 및 마이크로블록 페이로드로 구분되며,
상기 하나 또는 복수 개의 마이크로블록들은 상기 파일블록의 페이로드의 크기와 상기 데이터 수신장치가 상기 데이터 전송 장치로부터 수신하는 파일의 크기에 따라서 나누어진 것이며,
상기 하나 또는 복수의 마이크로블록들의 크기는 유동적이며,
상기 기록하는 단계는,
상기 마이크로블록 헤더에 기록된 오프셋-상기 마이크로블록들에 기록된 데이터의 주소를 나타냄-을 참조하여 상기 마이크로블록 페이로드에 기록된 데이터를 상기 저장매체에 기록하고, 상기 마이크로블록 헤더에 기록된 파일패스(filepath)를 참조하여 상기 파일블록들을 통해 수신된 상기 적어도 하나 이상의 파일을 상기 저장매체에 각각 기록하는 것을 특징으로 하는 데이터 수신 방법. - 삭제
- 제26항에 있어서,
데이터 수신 장치가, 전송 파일 리스트를 상기 데이터 전송 장치로부터 수신하는 단계;
데이터 수신 장치가, 기수신된 복수 개의 파일들 중 이어받기할 파일을 상기 수신된 전송 파일 리스트를 이용하여 판단하는 단계;
데이터 수신 장치가, 상기 판단된 파일의 인덱스와 오프셋-상기 판단된 파일 중 이어받기할 데이터의 시작 주소를 나타냄-을 포함하는 이어받기 리스트를 작성하는 단계; 및
데이터 수신 장치가, 상기 작성된 이어받기 리스트를 상기 데이터 전송 장치에게 전송하는 단계;를 더 포함하며,
상기 전송 파일 리스트는 상기 데이터 전송 장치가 상기 데이터 수신 장치에게 전송할 전체 파일들을 분할하여 생성한 복수 개의 전송 파일 리스트들 중 하나로서, 상기 하나의 전송 파일 리스트에 포함된 파일들의 인덱스, 파일명 및 파일크기에 대한 정보를 포함하는 것을 특징으로 하는 데이터 수신 방법. - 제28항에 있어서,
상기 판단하는 단계는,
상기 수신된 전송 파일 리스트에 포함된 파일명에 해당하는 파일이 상기 기수신된 복수 개의 파일들 중 하나인 제1파일이고, 상기 제1파일의 메타파일이 존재하면, 상기 제1파일을 상기 이어받기할 파일로 판단하며,
상기 메타파일은 상기 제1파일의 전송완료여부에 대한 정보를 나타내는 플래그를 포함하는 것을 특징으로 하는 데이터 수신 방법. - 제29항에 있어서,
상기 이어받기 리스트를 작성하는 단계는,
상기 제1파일이 상기 복수 개의 파일블록들을 통해 수신된 경우, 상기 메타파일에 상기 복수 개의 파일블록들 중 상기 제1파일을 처음 전송한 첫 번째 파일블록의 전송량이 0으로 기록되어 있으면, 상기 제1파일의 오프셋을 0으로 하는 이어받기 리스트를 작성하며,
상기 데이터 전송 장치는 상기 제1파일을 처음부터 재전송하는 것을 특징으로 하는 데이터 수신 방법. - 제29항에 있어서,
상기 이어받기 리스트를 작성하는 단계는,
상기 제1파일이 상기 복수 개의 파일블록들을 통해 수신된 경우, 상기 메타파일에 상기 복수 개의 파일블록들 중 상기 제1파일을 처음 전송한 첫 번째 파일블록(i=1)의 전송량이 k바이트(k는 양수)로 기록되어 있고, 상기 제1파일을 i(i=2, 3, …, m)번째로 전송한 파일블록의 플래그가 0이면, 상기 제1파일의 오프셋을 k바이트+(i-2)*n바이트로 하는 이어받기 리스트를 작성하며,
상기 n바이트는 상기 파일블록의 최대 전송 크기이고, 상기 데이터 전송 장치는 상기 제1파일의 오프셋에 해당하는 위치부터의 데이터를 재전송하는 것을 특징으로 하는 데이터 수신 방법. - 제29항에 있어서,
데이터 수신 장치가, 상기 파일블록들을 통해 수신된 제1파일의 메타파일을 작성하는 단계;를 더 포함하며,
상기 제1파일의 메타파일은, 상기 파일블록의 최대 전송 크기, 상기 제1파일의 수신된 누적 파일 크기, 상기 파일블록들 중 상기 제1파일을 최초 전송한 파일블록의 크기 및 상기 제1파일을 연속적으로 전송한 다음 파일블록들의 수신 여부를 나타내는 플래그를 포함하는 것을 특징으로 하는 데이터 수신 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130150467A KR101780847B1 (ko) | 2013-12-05 | 2013-12-05 | 데이터 전송 장치 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130150467A KR101780847B1 (ko) | 2013-12-05 | 2013-12-05 | 데이터 전송 장치 및 방법 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110110999A Division KR20130046540A (ko) | 2011-10-28 | 2011-10-28 | 데이터 전송 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140009947A KR20140009947A (ko) | 2014-01-23 |
KR101780847B1 true KR101780847B1 (ko) | 2017-10-10 |
Family
ID=50142922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130150467A KR101780847B1 (ko) | 2013-12-05 | 2013-12-05 | 데이터 전송 장치 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101780847B1 (ko) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000259366A (ja) | 1999-03-10 | 2000-09-22 | Seiko Epson Corp | 記憶制御装置及び該記憶制御装置を有するプリンタ |
US20100115365A1 (en) * | 2008-11-03 | 2010-05-06 | Industrial Technology Research Institute | System and method for data transmission |
-
2013
- 2013-12-05 KR KR1020130150467A patent/KR101780847B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000259366A (ja) | 1999-03-10 | 2000-09-22 | Seiko Epson Corp | 記憶制御装置及び該記憶制御装置を有するプリンタ |
US20100115365A1 (en) * | 2008-11-03 | 2010-05-06 | Industrial Technology Research Institute | System and method for data transmission |
Also Published As
Publication number | Publication date |
---|---|
KR20140009947A (ko) | 2014-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5554817B2 (ja) | データ送信装置及び方法 | |
US9438538B2 (en) | Data matching using flow based packet data storage | |
US20230034545A1 (en) | Computational accelerator for storage operations | |
US8935336B2 (en) | Optimizing program requests over a wide area network | |
US9389795B2 (en) | Dividing incoming data into multiple data streams and transforming the data for storage in a logical data object | |
US7373418B2 (en) | Wire protocol for a media server system | |
US20050044250A1 (en) | File transfer system | |
US20040210584A1 (en) | Method and apparatus for increasing file server performance by offloading data path processing | |
US20110246763A1 (en) | Parallel method, machine, and computer program product for data transmission and reception over a network | |
US20060174058A1 (en) | Recirculation buffer for semantic processor | |
US20110093524A1 (en) | Access log management method | |
EP4174675A1 (en) | On-board data storage method and system | |
KR101780847B1 (ko) | 데이터 전송 장치 및 방법 | |
US7010548B2 (en) | Sparse and non-sparse data management method and system | |
CN115065694A (zh) | 一种云存储数据中转上传系统、方法、设备及介质 | |
Shimano et al. | An information propagation scheme for an autonomous distributed storage system in iSCSI environment | |
JP2006013911A (ja) | ストリームデータ転送方法、装置、プログラム、および記録媒体 | |
US8316149B2 (en) | Information communication system, server, content holding device, content receiving device, information processing method, and program | |
KR101181478B1 (ko) | 데이터 전송 장치 및 방법, 데이터 수신 장치 및 방법, 그리고 데이터 송수신 시스템 | |
CN115801767A (zh) | 基于单向光闸的文件传输方法、装置及系统 | |
JP2015135535A (ja) | ファイル処理装置およびファイル処理方法 | |
CN117714432A (zh) | 基于工业app的音视频数据网络传输可靠性优化方法 | |
CN102055729B (zh) | iSCSI封包的数据解析方法 | |
US20120147886A1 (en) | Method for receiving multi-cast packet |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) |