KR20220073430A - Method and apparatus for transfering file using chunking - Google Patents

Method and apparatus for transfering file using chunking Download PDF

Info

Publication number
KR20220073430A
KR20220073430A KR1020200161491A KR20200161491A KR20220073430A KR 20220073430 A KR20220073430 A KR 20220073430A KR 1020200161491 A KR1020200161491 A KR 1020200161491A KR 20200161491 A KR20200161491 A KR 20200161491A KR 20220073430 A KR20220073430 A KR 20220073430A
Authority
KR
South Korea
Prior art keywords
chunks
transmission
chunk
file
server
Prior art date
Application number
KR1020200161491A
Other languages
Korean (ko)
Inventor
이빛나
김다연
옥지원
유태황
원영선
Original Assignee
삼성에스디에스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성에스디에스 주식회사 filed Critical 삼성에스디에스 주식회사
Priority to KR1020200161491A priority Critical patent/KR20220073430A/en
Publication of KR20220073430A publication Critical patent/KR20220073430A/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • H04L67/5651Reducing the amount or size of exchanged application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Abstract

클라이언트와 서버 사이에 파일을 전송하는 방법이 제공된다. 본 발명의 일 실시예에 따른 파일 전송 방법은, 클라이언트 장치가 기설정된 사이즈를 가지는 M개의 청크들로 전송 대상 파일을 분할하는 동작을 개시하는 단계와, 상기 M개의 청크들을 순차적으로 상기 서버에 전송하되, 상기 서버로의 복수의 연결을 통해 N개의 청크들을 병렬적으로 전송하는 단계와, 상기 병렬 전송되는 N개의 청크들 중 어느 하나의 전송이 완료되면, 상기 병렬 전송되는 나머지 청크들의 전송 완료 여부와 무관하게, 상기 M개의 청크들 중 미전송된 하나의 청크의 전송을 개시하는 단계를 포함할 수 있다.A method is provided for transferring files between a client and a server. A file transmission method according to an embodiment of the present invention includes the steps of: initiating, by a client device, an operation of dividing a transmission target file into M chunks having a preset size; and sequentially transmitting the M chunks to the server However, the steps of transmitting N chunks in parallel through a plurality of connections to the server; Irrespective of , the method may include initiating transmission of one untransmitted chunk among the M chunks.

Description

청크 분할을 이용한 파일 전송 방법 및 장치{METHOD AND APPARATUS FOR TRANSFERING FILE USING CHUNKING}File transfer method and device using chunking

본 발명의 실시예들은 청크 분할을 이용한 파일 전송 방법 및 장치에 관한 것이다. 보다 구체적으로, 본 발명의 실시예들은 클라이언트와 서버 사이에 복수의 연결을 통해 복수의 청크들을 병렬 전송하는 방법 및 장치에 관한 것이다. Embodiments of the present invention relate to a file transfer method and apparatus using chunk division. More specifically, embodiments of the present invention relate to a method and apparatus for parallelly transmitting a plurality of chunks through a plurality of connections between a client and a server.

컴퓨팅 장치의 처리 능력 향상, 네트워크 인프라의 대역폭의 확장, 및 디지털 콘텐츠 산업의 발전에 따라, 클라이언트 장치와 서버 사이에 대용량의 파일들이 빈번하게 전송된다. BACKGROUND With the improvement of the processing power of the computing device, the expansion of the bandwidth of the network infrastructure, and the development of the digital content industry, large files are frequently transmitted between the client device and the server.

클라이언트 장치와 서버 사이에서, 웹 브라우저를 통한 웹 기반 파일 업로드 및 다운로드 방법들이 제공될 수 있다. 클라이언트-서버 환경에서, 클라이언트 장치로부터 서버 시스템에 업로드 된 파일은 서버 시스템의 애플리케이션 서버에 의해 암호화 등의 후처리를 거친 후에 서버에 저장될 수 있고, 후처리가 완료된 파일은 서버 시스템의 애플리케이션 서버로부터 서버 시스템의 스토리지 서버로 전송되어 저장될 수 있다. Between the client device and the server, web-based file uploading and downloading methods through a web browser may be provided. In a client-server environment, a file uploaded from a client device to a server system may be stored in the server after post-processing such as encryption by an application server of the server system, and the post-processing file is transferred from the application server of the server system It may be transmitted and stored to a storage server of the server system.

클라이언트 장치가 서버 시스템에 파일을 업로드 할 때, 업로드 속도의 향상을 위해서 파일을 여러 개의 청크들로 분할하여 병렬적으로 업로드할 수 있다. 그런데 클라이언트 장치가 전송 완료된 청크들에 관한 정보와 함께 애플리케이션 서버에 별도로 병합 요청을 해야만, 애플리케이션 서버가 청크들을 다시 하나의 파일로 병합하는 프로세스를 개시할 수 있다. 이때, 애플리케이션 서버에 병합 요청을 전송한 클라이언트 장치는 애플리케이션 서버에서 병합이 완료될 때까지 대기하여야 하므로, 클라이언트 장치의 사용자의 불편이 야기될 수 있다.When a client device uploads a file to the server system, the file can be divided into multiple chunks and uploaded in parallel to improve upload speed. However, only when the client device separately makes a merge request to the application server together with information on the transferred chunks, the application server can start the process of merging the chunks into one file again. In this case, since the client device that has transmitted the merging request to the application server must wait until the merging is completed in the application server, inconvenience to the user of the client device may be caused.

나아가, 서버 시스템의 애플리케이션 서버는 클라이언트로부터 전송받은 파일을 암호화할 수 있는데, 상기 암호화는 파일 전체가 존재해야만 개시될 수 있는 경우들이 있다. 다시 말해, 파일을 구성하는 일부 청크들만이 수신된 상태에서는 암호화 프로세스가 개시되지 않을 수 있다. 또한 서버 시스템의 애플리케이션 서버는 암호화된 파일을 청크로 분할하여 스토리지 서버에 전송함으로써, 스토리지 서버가 암호화된 파일을 저장하도록 할 수 있다.Furthermore, the application server of the server system may encrypt the file received from the client, and there are cases in which the encryption can be initiated only when the entire file exists. In other words, the encryption process may not start when only some chunks constituting the file are received. In addition, the application server of the server system divides the encrypted file into chunks and transmits it to the storage server, so that the storage server stores the encrypted file.

전술한 바와 같이 서버 시스템 내에서, 청크들의 병합, 병합된 파일의 암호화, 암호화된 파일의 분할, 및 애플리케이션 서버로부터 스토리지 서버로의 전송 등의 동작이 수행되는 동안, 서버 시스템에 파일 업로드를 요청한 클라이언트 장치에 대기 시간이 발생하여, 사용자의 불편이 야기될 수 있다.As described above, while operations such as merging chunks, encryption of merged files, division of encrypted files, and transmission from the application server to the storage server are performed in the server system, a client requesting file upload to the server system as described above A waiting time may occur in the device, which may cause inconvenience to the user.

한국등록특허 제10-1424362호 (2014. 7. 22. 등록)Korean Patent No. 10-1424362 (Registered on July 22, 2014)

본 발명의 몇몇 실시예들을 통하여 달성하고자 하는 기술적 과제는 컴퓨팅 장치들 사이에 파일을 전송하는 방법 및 장치를 제공하는 것이다. A technical problem to be achieved through some embodiments of the present invention is to provide a method and an apparatus for transferring a file between computing devices.

본 발명의 몇몇 실시예들을 통하여 달성하고자 하는 다른 기술적 과제는, 클라이언트와 서버 사이에 복수의 연결을 통해 복수의 청크들을 병렬 전송하는 방법 및 장치를 제공하는 것이다.Another technical problem to be achieved through some embodiments of the present invention is to provide a method and apparatus for parallelly transmitting a plurality of chunks through a plurality of connections between a client and a server.

본 발명의 몇몇 실시예들을 통하여 달성하고자 하는 또 다른 기술적 과제는, 클라이언트와 서버 사이에 복수의 청크들을 병렬 전송함에 있어서, 전송 효율을 증가시키는 방법 및 장치를 제공하는 것이다.Another technical problem to be achieved through some embodiments of the present invention is to provide a method and apparatus for increasing transmission efficiency in parallel transmission of a plurality of chunks between a client and a server.

본 발명의 몇몇 실시예들을 통하여 달성하고자 하는 또 다른 기술적 과제는, 클라이언트와 서버 사이의 파일 전송시 클라이언트의 대기 시간을 줄이는 방법 및 장치를 제공하는 것이다. Another technical problem to be achieved through some embodiments of the present invention is to provide a method and apparatus for reducing the waiting time of a client when transferring a file between a client and a server.

본 발명의 몇몇 실시예들을 통하여 달성하고자 하는 또 다른 기술적 과제는, 클라이언트와 서버 사이의 파일 전송 시, 전송 완료 사실을 비동기식 채널로 전달할 수 있는 방법 및 장치를 제공하는 것이다. Another technical problem to be achieved through some embodiments of the present invention is to provide a method and apparatus capable of transmitting the fact of transmission completion through an asynchronous channel when transferring a file between a client and a server.

본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명의 기술분야에서의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.The technical problems of the present invention are not limited to the technical problems mentioned above, and other technical problems not mentioned will be clearly understood by those skilled in the art from the following description.

상기 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른, 클라이언트와 서버 사이에 파일을 전송하는 방법은, 클라이언트 장치가 기설정된 사이즈를 가지는 M개의 청크들로 전송 대상 파일을 분할하는 동작을 개시하는 단계와, 상기 M개의 청크들을 순차적으로 상기 서버에 전송하되, 상기 서버로의 복수의 연결을 통해 N개의 청크들을 병렬적으로 전송하는 단계와, 상기 병렬 전송되는 N개의 청크들 중 어느 하나의 전송이 완료되면, 상기 병렬 전송되는 나머지 청크들의 전송 완료 여부와 무관하게, 상기 M개의 청크들 중 미전송된 하나의 청크의 전송을 개시하는 단계를 포함할 수 있다. In a method for transmitting a file between a client and a server, according to an embodiment of the present invention for solving the above technical problem, the client device divides the transmission target file into M chunks having a preset size. initiating, sequentially transmitting the M chunks to the server, but transmitting the N chunks in parallel through a plurality of connections to the server, and any one of the N chunks transmitted in parallel When the transmission of is completed, the method may include initiating transmission of one untransmitted chunk among the M chunks, regardless of whether the transmission of the remaining chunks transmitted in parallel is completed.

일 실시예에서, 상기 파일 전송 방법은 상기 클라이언트 장치가 상기 전송 대상 파일의 전송 완료를 나타내는 메시지를 상기 서버로부터 수신하는 단계를 더 포함하되, 상기 전송 완료를 나타내는 메시지는, 상기 전송 대상 파일의 전송을 위해 상기 클라이언트 장치와 상기 서버 사이에 수립된 연결과는 상이한 연결을 통해 수신될 수 있다. In one embodiment, the file transmission method further comprises the step of receiving, by the client device, a message indicating completion of transmission of the file to be transmitted from the server, wherein the message indicating completion of transmission is the transmission of the file to be transmitted may be received through a connection different from the connection established between the client device and the server for this purpose.

일 실시예에서, 상기 전송 완료를 나타내는 메시지는, 상기 클라이언트 장치와 상기 서버 사이에 수립된 웹소켓(websocket) 연결을 통해 수신될 수 있다. In an embodiment, the message indicating the completion of the transmission may be received through a websocket connection established between the client device and the server.

일 실시예에서, 상기 서버가 상기 클라이언트 장치로부터 상기 청크들을 순차적으로 수신하는 단계와, 상기 서버가, 상기 청크들의 순차적인 수신과 병렬적으로, 상기 수신된 청크들을 하나로 병합하는 단계와, 상기 M개의 청크들의 수신이 완료되면, 상기 수신된 M개의 청크들의 병합 완료 여부와 무관하게, 상기 전송 대상 파일의 전송 완료를 나타내는 메시지를 상기 클라이언트 장치로 전송하는 단계를 더 포함할 수 있다. In one embodiment, the server sequentially receiving the chunks from the client device, the server merging the received chunks into one in parallel with the sequential reception of the chunks; The method may further include transmitting a message indicating completion of transmission of the transmission target file to the client device when reception of the M chunks is completed, regardless of whether the M chunks are merged.

일 실시예에서, 상기 서버가 상기 클라이언트 장치로부터 상기 청크들을 순차적으로 수신하는 단계와, 상기 서버가, 상기 청크들의 순차적인 수신과 병렬적으로, 상기 수신된 청크들을 하나로 병합하는 단계를 더 포함하되, 상기 하나의 파일로 병합하는 단계는, 상기 수신된 청크들 중 병합 대상 청크가, 기병합된 파일로부터 연속되는 청크가 아니라는 판정에 응답하여, 상기 병합 대상 청크의 병합을 보류하는 단계를 포함할 수 있다. In one embodiment, the method further comprising: sequentially receiving, by the server, the chunks from the client device; and merging, by the server, the received chunks into one, in parallel with the sequential reception of the chunks. , the step of merging into one file may include, in response to determining that a merge target chunk among the received chunks is not a continuous chunk from a previously merged file, suspending merging of the merge target chunk. can

일 실시예에서, 상기 하나의 파일로 병합하는 단계는, 상기 수신된 청크들 중 병합 대상 청크의 시작점에 대응되는, 상기 전송 대상 파일 내의 제1 오프셋을 식별하는 단계와, 상기 기병합된 파일의 끝점에 대응되는, 상기 전송 대상 파일 내의 제2 오프셋을 식별하는 단계를 포함할 수 있다. In an embodiment, the step of merging into one file includes: identifying a first offset in the transmission target file corresponding to a starting point of a merge target chunk among the received chunks; The method may include identifying a second offset in the transmission target file corresponding to the endpoint.

일 실시예에서, 상기 파일 전송 방법은, 상기 전송 대상 파일 내에서 상기 수신된 각각의 청크들이 대응되는 위치에 기초하여, 우선순위 기반의 큐(queue)에 상기 수신된 청크들을 삽입하는 단계를 더 포함할 수 있다. In one embodiment, the file transmission method further includes inserting the received chunks into a priority-based queue based on a position corresponding to each of the received chunks in the transmission target file. may include

일 실시예에서, 상기 N개의 청크들을 병렬적으로 전송하는 단계는, 각각의 청크를 각각의 HTTP 요청으로 전송하는 단계를 포함하고, 상기 HTTP 요청의 헤더부는, 상기 전송 대상 파일 내에서의 각 청크의 위치 정보를 포함하고, 상기 HTTP 요청의 바디부는, 상기 각 청크의 내용을 포함할 수 있다. In an embodiment, the step of transmitting the N chunks in parallel includes transmitting each chunk as each HTTP request, and a header part of the HTTP request includes each chunk in the transmission target file. location information of , and the body part of the HTTP request may include the contents of each chunk.

상기 기술적 과제를 해결하기 위한, 본 발명의 다른 일 실시예에 따른, 클라이언트와 서버 사이에 파일을 전송하는 방법은, 서버가, 타깃 파일로부터 분할된 M개의 청크들을, 클라이언트 장치로부터 순차적으로 수신하는 단계와, 상기 서버가, 상기 청크들의 순차적인 수신과 병렬적으로, 상기 수신된 청크들을 하나로 병합하여, 병합된 파일을 생성하는 단계와, 상기 M개의 청크들의 수신이 완료되면, 상기 수신된 청크들의 병합 완료 여부와 무관하게, 상기 타깃 파일의 전송 완료를 나타내는 메시지를 상기 클라이언트 장치로 전송하는 단계를 포함할 수 있다. In a method for transmitting a file between a client and a server, according to another embodiment of the present invention for solving the above technical problem, the server sequentially receives M chunks divided from a target file from a client device Step, the server merging the received chunks into one in parallel with the sequential reception of the chunks to generate a merged file; and when the reception of the M chunks is completed, the received chunk The method may include transmitting a message indicating completion of transmission of the target file to the client device irrespective of whether the merging of the files has been completed.

일 실시예에서, 상기 파일 전송 방법은, 상기 M개의 청크들의 병합이 완료되면, 상기 병합된 파일에 대한 후처리를 실시하여 후처리된 파일을 생성하는 단계와, 상기 후처리된 파일을 N개의 청크들로 분할하는 단계와, 상기 N개의 청크들을 저장소에 저장하는 단계를 더 포함할 수 있다. In one embodiment, the file transmission method includes the steps of: when the merging of the M chunks is completed, performing post-processing on the merged file to generate a post-processed file; The method may further include dividing into chunks and storing the N chunks in a storage.

일 실시예에서, 상기 파일 전송 방법은, 상기 타깃 파일에 대한 제공 요청의 수신에 응답하여, 상기 서버가, 상기 N개의 청크들을 상기 저장소로부터 획득하는 단계와, 상기 서버가, 상기 제공 요청을 전송한 클라이언트 장치에 상기 N개의 청크들을 순차적으로 전송하는 단계를 더 포함할 수 있다. In one embodiment, the file transmission method includes: in response to receiving a provision request for the target file, obtaining, by the server, the N chunks from the storage; The method may further include sequentially transmitting the N chunks to one client device.

상기 기술적 과제를 해결하기 위한, 본 발명의 또 다른 일 실시예에 따른 컴퓨팅 장치는, 청크 생성부 및 청크 전송부를 포함하고, 상기 청크 생성부는, 타깃 파일을 기설정된 사이즈를 가지는 M개의 청크들로 분할하고, 상기 청크 전송부는, 상기 M개의 청크들을 순차적으로 전송하되, 복수의 연결을 통해 N개의 청크들을 병렬적으로 전송하며, 상기 병렬 전송되는 N개의 청크들 중 어느 하나의 전송이 완료되면, 상기 병렬 전송되는 나머지 청크들의 전송 완료 여부와 무관하게, 상기 M개의 청크들 중 미전송된 하나의 청크의 전송을 개시할 수 있다.In order to solve the above technical problem, a computing device according to another embodiment of the present invention includes a chunk generation unit and a chunk transmission unit, and the chunk generation unit converts a target file into M chunks having a preset size. division, and the chunk transmitter sequentially transmits the M chunks, transmits the N chunks in parallel through a plurality of connections, and when the transmission of any one of the N chunks transmitted in parallel is completed, Transmission of one untransmitted chunk among the M chunks may be started regardless of whether the transmission of the remaining chunks transmitted in parallel has been completed.

일 실시예에서, 상기 컴퓨팅 장치는 웹소켓 통신부를 더 포함하며, 상기 청크 전송부는, HTTP 요청에 의해 수립되는 제1 연결을 통해 상기 청크들을 전송하고, 상기 웹소켓 통신부는, 상기 N개의 청크들의 전송이 완료되면, 상기 제1 연결과는 상이한 제2 연결을 통해 상기 타깃 파일의 전송 완료를 나타내는 메시지를 수신할 수 있다. In an embodiment, the computing device further comprises a websocket communication unit, the chunk transmission unit transmits the chunks through a first connection established by an HTTP request, and the websocket communication unit includes: When the transmission is completed, a message indicating the completion of transmission of the target file may be received through a second connection different from the first connection.

일 실시예에서, 상기 청크 전송부는, 상기 타깃 파일 내에서의 각 청크의 위치 정보를 상기 HTTP 요청의 헤더부에 기록하고, 상기 각 청크의 내용을 상기 HTTP 요청의 바디부에 기록할 수 있다. In an embodiment, the chunk transmitter may record location information of each chunk in the target file in a header part of the HTTP request, and record the contents of each chunk in a body part of the HTTP request.

상기 기술적 과제를 해결하기 위한, 본 발명의 또 다른 일 실시예에 따른 컴퓨팅 장치는, 청크 수신부, 청크 병합부, 및 웹소켓 통신부를 포함하고, 상기 청크 수신부는, 타깃 파일로부터 분할된 M개의 청크들을, 클라이언트 장치로부터 순차적으로 수신하고, 상기 청크 병합부는, 상기 청크 수신부와 병렬적으로 동작하여, 상기 청크 수신부가 순차적으로 수신하는 청크들을 하나로 병합하며, 상기 웹소켓 통신부는, 상기 청크 수신부에 의해 상기 M개의 청크들의 수신이 완료되면, 상기 청크 병합부에 의한 병합 완료 여부와 무관하게, 상기 타깃 파일의 전송 완료를 나타내는 메시지를 상기 클라이언트 장치로 전송할 수 있다. In order to solve the above technical problem, a computing device according to another embodiment of the present invention includes a chunk receiving unit, a chunk merging unit, and a web socket communication unit, wherein the chunk receiving unit includes M chunks divided from a target file. data received sequentially from the client device, the chunk merging unit operates in parallel with the chunk receiving unit to merge chunks sequentially received by the chunk receiving unit into one, and the WebSocket communication unit is configured by the chunk receiving unit When reception of the M chunks is completed, a message indicating completion of transmission of the target file may be transmitted to the client device regardless of whether the merge by the chunk merging unit is completed.

일 실시예에서, 상기 컴퓨팅 장치는 후처리부를 더 포함하며, 상기 후처리부는, 상기 M개의 청크들의 병합이 완료되면, 상기 병합된 파일에 대한 후처리를 실시하고, 상기 후처리된 파일을 N개의 청크들로 분할하며, 상기 N개의 청크들을 저장할 수 있다. In an embodiment, the computing device further includes a post-processing unit, wherein the post-processing unit performs post-processing on the merged file when the merging of the M chunks is completed, and converts the post-processed file to N It is divided into chunks, and the N chunks can be stored.

상기 기술적 과제를 해결하기 위한, 본 발명의 또 다른 일 실시예에 따른 컴퓨터 판독 가능한 비일시적 저장 매체는 명령어를 포함하고, 상기 명령어는 프로세서에 의해 실행될 때, 상기 프로세서로 하여금, 기설정된 사이즈를 가지는 M개의 청크들로 전송 대상 파일을 분할하는 동작을 개시하는 단계와, 상기 M개의 청크들을 순차적으로 서버에 전송하되, 상기 서버로의 복수의 연결을 통해 N개의 청크들을 병렬적으로 전송하는 단계와, 상기 병렬 전송되는 N개의 청크들 중 어느 하나의 전송이 완료되면, 상기 병렬 전송되는 나머지 청크들의 전송 완료 여부와 무관하게, 상기 M개의 청크들 중 미전송된 하나의 청크의 전송을 개시하는 단계를 포함하는 동작들을 수행하도록 할 수 있다. In order to solve the above technical problem, a computer-readable non-transitory storage medium according to another embodiment of the present invention includes instructions, and when the instructions are executed by a processor, the processor causes the processor to have a predetermined size. Initiating an operation of dividing a file to be transmitted into M chunks, sequentially transmitting the M chunks to a server, and transmitting N chunks in parallel through a plurality of connections to the server; , when the transmission of any one of the N chunks transmitted in parallel is completed, irrespective of whether the transmission of the remaining chunks transmitted in parallel is completed, starting transmission of one untransmitted chunk among the M chunks It is possible to perform operations including

일 실시예에서, 상기 명령어는 프로세서에 의해 실행될 때, 상기 프로세서로 하여금, 상기 전송 대상 파일의 전송 완료를 나타내는 메시지를 상기 서버로부터 수신하는 단계를 포함하는 동작들을 수행하도록 하며, 상기 전송 완료를 나타내는 메시지는, 상기 전송 대상 파일의 전송을 위해 상기 서버와의 사이에 수립된 연결과는 상이한 연결을 통해 수신될 수 있다.In one embodiment, the instructions, when executed by the processor, cause the processor to perform operations including receiving, from the server, a message indicating completion of transmission of the file to be transmitted, indicating completion of transmission The message may be received through a connection different from the connection established between the server and the server for transmission of the transmission target file.

도 1은 본 발명의 몇몇 실시예에 따른 파일 전송 방법이 적용될 수 있는, 예시적인 클라이언트-서버 시스템을 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따라 클라이언트 장치로부터 서버 시스템으로 파일이 업로드 되는 방법을 설명하는 흐름도이다.
도 3 내지 도 8은 도 2를 참조하여 설명된 파일 전송 방법에 따라, 전송 대상 파일이 복수의 청크로 분할되어 클라이언트 장치로부터 서버 시스템으로 병렬 전송되는 예시적인 과정을 나타낸 참조 도면이다.
도 9는 본 발명의 일 실시예에 따라 서버 시스템으로부터 클라이언트 장치로 파일이 다운로드 되는 방법을 설명하는 흐름도이다.
도 10은 도 9를 참조하여 설명된 파일 전송 방법에 따라, 스토리지 서버에 청크로 분할된 상태로 저장된 전송 대상 파일이 병합 없이 클라이언트 장치로 전송되는 예시적인 과정을 나타낸 참조 도면이다.
도 11은 본 발명의 다른 일 실시예에 따른, 클라이언트 장치의 구성과 동작을 설명하기 위한 도면이다.
도 12는 본 발명의 또 다른 일 실시예에 따른, 서버 시스템의 애플리케이션 서버 장치의 구성과 동작을 설명하기 위한 도면이다.
도 13은 본 발명의 몇몇 실시예들이 구현될 수 있는 예시적인 컴퓨팅 장치를 설명하기 위한 도면이다.
1 is a diagram illustrating an exemplary client-server system to which a file transfer method according to some embodiments of the present invention may be applied.
2 is a flowchart illustrating a method of uploading a file from a client device to a server system according to an embodiment of the present invention.
3 to 8 are reference diagrams illustrating exemplary processes in which a transmission target file is divided into a plurality of chunks and transmitted in parallel from a client device to a server system according to the file transmission method described with reference to FIG. 2 .
9 is a flowchart illustrating a method for downloading a file from a server system to a client device according to an embodiment of the present invention.
10 is a reference diagram illustrating an exemplary process in which a transmission target file stored in a state of being divided into chunks in a storage server is transmitted to a client device without merging according to the file transmission method described with reference to FIG. 9 .
11 is a diagram for explaining the configuration and operation of a client device according to another embodiment of the present invention.
12 is a diagram for explaining the configuration and operation of an application server device of a server system according to another embodiment of the present invention.
13 is a diagram for describing an exemplary computing device in which some embodiments of the present invention may be implemented.

이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명의 기술적 사상은 이하의 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 이하의 실시예들은 본 발명의 기술적 사상을 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명의 기술적 사상은 청구항의 범주에 의해 정의될 뿐이다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. Advantages and features of the present invention and methods of achieving them will become apparent with reference to the embodiments described below in detail in conjunction with the accompanying drawings. However, the technical spirit of the present invention is not limited to the following embodiments, but may be implemented in various different forms, and only the following embodiments complete the technical spirit of the present invention, and in the technical field to which the present invention belongs It is provided to fully inform those of ordinary skill in the art of the scope of the present invention, and the technical spirit of the present invention is only defined by the scope of the claims.

각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.In adding reference numerals to the components of each drawing, it should be noted that the same components are given the same reference numerals as much as possible even though they are indicated on different drawings. In addition, in describing the present invention, if it is determined that a detailed description of a related known configuration or function may obscure the gist of the present invention, the detailed description thereof will be omitted.

다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.Unless otherwise defined, all terms (including technical and scientific terms) used herein may be used with the meaning commonly understood by those of ordinary skill in the art to which the present invention belongs. In addition, terms defined in a commonly used dictionary are not to be interpreted ideally or excessively unless clearly defined in particular. The terminology used herein is for the purpose of describing the embodiments and is not intended to limit the present invention. In this specification, the singular also includes the plural unless specifically stated otherwise in the phrase.

또한, 본 발명의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.In addition, in describing the components of the present invention, terms such as first, second, A, B, (a), (b), etc. may be used. These terms are only for distinguishing the elements from other elements, and the essence, order, or order of the elements are not limited by the terms. When it is described that a component is “connected”, “coupled” or “connected” to another component, the component may be directly connected or connected to the other component, but another component is formed between each component. It should be understood that elements may also be “connected,” “coupled,” or “connected.”

명세서에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.As used herein, "comprises" and/or "comprising" refers to the presence of one or more other components, steps, operations and/or elements mentioned. or addition is not excluded.

별도의 언급이 없는 한, 본 명세서에서 데이터의 갱신이란, 데이터의 생성, 수정, 및 삭제를 모두 지칭한다. Unless otherwise noted, in this specification, data update refers to creation, modification, and deletion of data.

이하, 본 발명의 몇몇 실시예들에 대하여 첨부된 도면에 따라 상세하게 설명한다.Hereinafter, some embodiments of the present invention will be described in detail with reference to the accompanying drawings.

도 1은 본 발명의 몇몇 실시예에 따른 파일 전송 방법이 적용될 수 있는, 예시적인 클라이언트-서버 시스템을 도시한 도면이다. 1 is a diagram illustrating an exemplary client-server system to which a file transfer method according to some embodiments of the present invention may be applied.

도 1을 참조하면, 본 발명의 실시예들에 따른 파일 전송 방법은, 클라이언트 장치(10)와 서버 시스템(20) 사이의 파일 전송에 이용될 수 있다. 본 발명의 실시예들에 따른 파일 전송 방법은 웹 기반의 서버-클라이언트 통신을 이용할 수 있다. 서버 시스템(20)에는 웹 서버를 비롯한 다양한 애플리케이션 서비스들이 구동될 수 있고, 클라이언트 장치(10)는 웹 브라우저 등의 응용프로그램을 통해 서버 시스템(20)과 상호작용할 수 있다. 클라이언트 장치(10)와 서버 시스템(20) 사이에 HTTP 프로토콜을 포함한 통신 프로토콜들이 이용될 수 있다.Referring to FIG. 1 , a file transfer method according to embodiments of the present invention may be used for file transfer between a client device 10 and a server system 20 . The file transfer method according to embodiments of the present invention may use web-based server-client communication. Various application services including a web server may be driven in the server system 20 , and the client device 10 may interact with the server system 20 through an application program such as a web browser. Communication protocols including the HTTP protocol may be used between the client device 10 and the server system 20 .

서버 시스템(20)은 애플리케이션 서버(210)를 구비할 수 있다. 애플리케이션 서버(210)는 클라이언트 장치(10)와의 사이에 동기식 및/또는 비동기식 연결을 수립하고, 클라이언트 장치(10)에 애플리케이션 서비스를 제공할 수 있다. 또한 애플리케이션 서버(210)는 클라이언트 장치(10)에게 파일을 송신하거나, 클라이언트 장치(10)로부터 파일을 수신할 수 있다. The server system 20 may include an application server 210 . The application server 210 may establish a synchronous and/or asynchronous connection with the client device 10 and provide an application service to the client device 10 . Also, the application server 210 may transmit a file to the client device 10 or receive a file from the client device 10 .

애플리케이션 서버(210)는 클라이언트 장치(10)로부터 수신한 파일을 후처리(post-processing) 할 수 있다. 후처리란, 클라이언트 장치(10)로부터 수신된 파일을 서버 시스템(20) 내에 저장하기에 앞서서 수신된 파일에 가해질 수 있는 다양한 처리들을 포함할 수 있다. 예를 들어 후처리란, 파일의 분할(split), 암호화(encryption), 압축(compression), DRM(digital content management)을 위한 보안 적용, 해시 값 등 디지털 지문 획득, 동영상 코덱 변환 등 애플리케이션 서비스의 목적에 따라 요구될 수 있는 다양한 처리들일 수 있다. The application server 210 may post-process the file received from the client device 10 . Post-processing may include various processes that may be applied to the received file prior to storing the file received from the client device 10 in the server system 20 . For example, post-processing is the purpose of application services such as file splitting, encryption, compression, security application for DRM (digital content management), digital fingerprint acquisition such as hash value, video codec conversion, etc. There may be various processes that may be required depending on the .

서버 시스템(20)은 애플리케이션 서버(210) 외에 스토리지 서버(220)를 추가로 구비할 수 있다. 스토리지 서버(220)는 애플리케이션 서버(210)가 클라이언트 장치(10)로부터 수신한 파일을 저장 장치에 저장하고, 클라이언트 장치(10)로부터 파일에 대한 다운로드 요청이 있을 때, 요청된 파일을 애플리케이션 서버(210)가 클라이언트 장치(10)에게 송신할 수 있도록, 요청된 파일을 애플리케이션 서버(210)에게 제공할 수 있다. The server system 20 may further include a storage server 220 in addition to the application server 210 . The storage server 220 stores the file received by the application server 210 from the client device 10 in the storage device, and when there is a download request for the file from the client device 10, the requested file is transferred to the application server ( The requested file may be provided to the application server 210 so that the 210 may be transmitted to the client device 10 .

애플리케이션 서버(210)와 스토리지 서버(220)는 물리적으로 하나의 컴퓨팅 시스템 또는 장치 내에서 실행되는 컴포넌트들로서 구현될 수도 있지만, 물리적으로 분리된 별개의 컴퓨팅 장치로서 구현될 수도 있다. 애플리케이션 서버(210)와 스토리지 서버(220)는 클라우드 환경에서 하나 이상의 컴퓨팅 장치들 상에서 실행되는 하나 이상의 인스턴스들일 수 있다. 애플리케이션 서버(210)와 스토리지 서버(220) 사이에 서로 데이터를 주고받을 수 있다면, 애플리케이션 서버(210)와 스토리지 서버(220)는 이격된 장소에 위치할 수 있다. The application server 210 and the storage server 220 may be implemented as components that are physically executed in one computing system or device, or may be implemented as separate physically separate computing devices. The application server 210 and the storage server 220 may be one or more instances running on one or more computing devices in a cloud environment. If data can be exchanged between the application server 210 and the storage server 220 , the application server 210 and the storage server 220 may be located at separate locations.

도 2는 본 발명의 일 실시예에 따라 클라이언트 장치(10)로부터 서버 시스템(20)으로 전송 대상 파일이 업로드 되는 방법을 설명하는 흐름도이며, 도 3 내지 도 8은 전송 대상 파일이 복수의 청크로 분할되어 클라이언트 장치로부터 서버 시스템으로 병렬 전송되는 예시적인 과정을 나타낸 참조 도면이다.2 is a flowchart illustrating a method in which a transmission target file is uploaded from the client device 10 to the server system 20 according to an embodiment of the present invention, and FIGS. 3 to 8 show the transmission target file in a plurality of chunks. It is a reference diagram showing an exemplary process of being divided and transmitted in parallel from the client device to the server system.

도 2를 참조하면, 먼저 클라이언트 장치(10)가 서버 시스템(20)의 애플리케이션 서버(210)로 파일 업로드 요청을 전송할 수 있다(S101). 파일 업로드 요청에는 파일명, 파일 사이즈, 및 기타 메타 데이터들이 포함될 수 있다. Referring to FIG. 2 , first, the client device 10 may transmit a file upload request to the application server 210 of the server system 20 ( S101 ). The file upload request may include a file name, file size, and other metadata.

파일 업로드 요청을 수신한 애플리케이션 서버(210)는 클라이언트 장치(10)로부터 수신될 파일에 대응되는 고유 식별자인 UUID를 생성하고, 파일 수신을 준비할 수 있다(S101). 예컨대, 애플리케이션 서버(210)는, 파일을 저장할 폴더 등 공간을 마련할 수 있으며, 여러 개의 청크들로 분할되어 수신될 파일을 순차적으로 병합하기 위한 우선순위 기반의 큐(queue)를 생성할 수 있다.Upon receiving the file upload request, the application server 210 may generate a UUID that is a unique identifier corresponding to a file to be received from the client device 10 and prepare to receive the file ( S101 ). For example, the application server 210 may provide a space such as a folder to store files, and may create a priority-based queue for sequentially merging files to be received after being divided into several chunks. .

이어서 애플리케이션 서버(210)는 생성된 UUID를 클라이언트 장치(10)에게 반환할 수 있다(S103). Subsequently, the application server 210 may return the generated UUID to the client device 10 (S103).

클라이언트 장치(10)는 전송 대상 파일을 소정의 사이즈를 가지는 M개의 청크들로 분할하는 동작을 개시할 수 있다(S111). 청크들의 사이즈는 사전에 지정된 것일 수도 있고, 클라이언트 장치(10)와 서버 시스템(20)이 동적으로 결정한 사이즈일 수도 있다. 한편, M은 전송 대상 파일의 전체 사이즈를 상기 청크 사이즈로 나눈 값을 가리킨다. 전송 대상 파일을 M개의 청크들로 분할하는 동작은, 실제로 분할된 청크들을 생성 및 임시 저장하는 동작일 수도 있지만, 전송 대상 파일의 전 구간을 동일한 사이즈를 가지는 조각들로 구분하고, 조각들 각각을 하나의 청크로서 매핑하는 동작일 수 있다.The client device 10 may initiate an operation of dividing the transmission target file into M chunks having a predetermined size ( S111 ). The size of the chunks may be predetermined or may be a size dynamically determined by the client device 10 and the server system 20 . Meanwhile, M indicates a value obtained by dividing the total size of the transmission target file by the chunk size. The operation of dividing the transmission target file into M chunks may be an operation of actually generating and temporarily storing the divided chunks, but divides the entire section of the transmission target file into pieces having the same size, and separates each of the pieces. It may be an operation of mapping as one chunk.

전송 대상 파일을 M개의 청크들로 분할하는 동작이 완료되기 이전에, 또는 상기 동작이 완료된 후에, 클라이언트 장치(10)는, 애플리케이션 서버(210)와의 사이에 N개의 채널 내지는 연결을 수립하고, 동시에 N개의 채널들을 통해 N개의 청크들을 애플리케이션 서버(210)에 전송하는 동작을 개시할 수 있다(S112). 클라이언트 장치(10)는 N개의 채널들을 통해 동시에 N개의 청크들을 병렬적으로 전송할 수 있다. 여기서 N은 사전에 지정된 최대 동시 전송 채널수 일 수도 있고, 클라이언트 장치(10)와 서버 시스템(20)이 동적으로 결정한 채널수 일 수도 있다. Before or after the operation of dividing the transmission target file into M chunks is completed, the client device 10 establishes N channels or connections with the application server 210, and at the same time An operation of transmitting the N chunks to the application server 210 through the N channels may be initiated (S112). The client device 10 may transmit N chunks in parallel through the N channels at the same time. Here, N may be the maximum number of simultaneous transmission channels designated in advance, or the number of channels dynamically determined by the client device 10 and the server system 20 .

클라이언트 장치(10)는 전송 대상 파일로부터 분할되어 순차적으로 생성된 청크들을 순차적으로 전송할 수 있다. 예를 들어, 클라이언트 장치(10)는 전송 대상 파일의 시작 부분에 해당하는 청크를 포함한 N개의 청크들을 가장 먼저 전송하고, 전송 대상 파일의 끝 부분에 해당하는 청크를 포함한 N개의 청크들을 가장 마지막에 전송하는 등의 방식으로, 청크들을 순차 전송할 수 있다. 여기서 클라이언트 장치(10)는 전송 대상 파일이 총 M개의 청크들로 분할되는 동작이 완료되기 이전에, 최초로 생성된 N개의 청크들을 애플리케이션서버(210)에 전송하는 동작을 개시할 수 있다. 다시 말해, 클라이언트 장치(10)는 전송 대상 파일로부터 분할된 모든 청크들이 생성되기를 기다리지 않고, 먼저 생성된 청크들부터 전송하기 시작할 수 있다. 이로 인해, 총 전송 소요 시간이 절감될 수 있으며, 클라이언트 장치(10)의 사용자가 느끼는 응답 지연 시간이 단축될 수 있다.The client device 10 may sequentially transmit chunks that are sequentially generated by dividing the file to be transmitted. For example, the client device 10 first transmits N chunks including a chunk corresponding to the beginning of the transmission target file, and lastly transmits N chunks including a chunk corresponding to the end of the transmission target file. The chunks may be transmitted sequentially in a manner such as transmitting. Here, the client device 10 may initiate an operation of transmitting the initially generated N chunks to the application server 210 before the operation of dividing the transmission target file into a total of M chunks is completed. In other words, the client device 10 may start transmitting from the first generated chunks without waiting for all the chunks divided from the transmission target file to be generated. Accordingly, the total transmission time may be reduced, and the response delay time perceived by the user of the client device 10 may be reduced.

각각의 청크들은, 클라이언트 장치(10)로부터 애플리케이션 서버(210)로의 HTTP 요청(HTTP Request)을 통해 전송될 수 있다. Each chunk may be transmitted from the client device 10 to the application server 210 through an HTTP request (HTTP Request).

각각의 청크를 전송하기 위한 HTTP 요청의 헤더부(header)에는, 전송 대상 파일을 나타내는 식별자(예컨대 애플리케이션 서버(210)가 전송 대상 파일을 위해 생성한 UUID), 및 전송 대상 파일 내에서 각 청크의 위치를 나타내는 정보가 포함될 수 있다. 전송 대상 파일 내에서 각 청크의 위치는, 예컨대 전송 대상 파일 내에서 각 청크에 대응되는 부분의 시작점의 오프셋과 끝점의 오프셋에 의해 표현될 수 있다. In the header of the HTTP request for transmitting each chunk, an identifier indicating the transmission target file (eg, a UUID generated by the application server 210 for the transmission target file), and each chunk in the transmission target file Information indicating the location may be included. The position of each chunk in the transmission target file may be expressed, for example, by an offset of a start point and an offset of an end point of a portion corresponding to each chunk in the transmission target file.

각각의 청크를 전송하기 위한 HTTP 요청의 바디부(body)에는, 전송 대상 파일에서 각 청크에 대응되는 부분의 파일 내용이 포함될 수 있다. The body of the HTTP request for transmitting each chunk may include file contents of a portion corresponding to each chunk in the transmission target file.

애플리케이션 서버(210)는 N개의 채널을 통해 전송되는 청크들을 수신할 수 있다(S113). 후술하겠지만, 애플리케이션 서버(210)는 청크 수신부(CHUNK RECEIVER; 211)를 통해 클라이언트 장치(10)가 전송하는 청크들을 수신할 수 있다. The application server 210 may receive chunks transmitted through N channels (S113). As will be described later, the application server 210 may receive chunks transmitted by the client device 10 through the chunk receiver 211 .

또한 애플리케이션 서버(210)는, 후술할 청크 병합부(CHUNK MERGER; 212)를 통해, 순차적으로 수신이 완료되는 청크들을 하나의 파일로 병합하는 동작을 개시할 수 있다(S120). 청크 병합부(212)에 의해 청크들을 하나의 파일로 병합하는 동작은 청크 수신부(211)에 의해 청크들을 수신하는 동작과 동시에 병렬적으로 수행될 수 있다. 예를 들어, 청크 병합부(212)는, 전송 대상 파일 내에서 각각의 수신된 청크들이 대응되는 위치에 따른 순서대로, 수신된 청크들을 순차적으로 병합할 수 있다. Also, the application server 210 may initiate an operation of merging the sequentially received chunks into one file through a chunk merging unit (CHUNK MERGER) 212, which will be described later (S120). The operation of merging the chunks into one file by the chunk merging unit 212 may be performed in parallel with the operation of receiving the chunks by the chunk receiving unit 211 . For example, the chunk merging unit 212 may sequentially merge the received chunks in an order according to positions corresponding to each of the received chunks in the transmission target file.

도 3은 클라이언트 장치(10)로부터 애플리케이션 서버(210)로 동시에 3개의 채널 내지는 연결을 통해 3개의 청크들이 병렬적으로 전송되고 있는 예시적인 모습을 나타낸다. 도 3을 참조하면, 전송 대상 파일("FILE A")의 시작 부분에 해당하는 청크 #1, #2, #3이 애플리케이션 서버(210)로 병렬적으로 전송될 수 있다. 3 shows an exemplary state in which three chunks are transmitted in parallel from the client device 10 to the application server 210 through three channels or connections at the same time. Referring to FIG. 3 , chunks #1, #2, and #3 corresponding to the beginning of a transmission target file (“FILE A”) may be transmitted to the application server 210 in parallel.

도 3에서, 전송 대상 파일(FILE A)의 사이즈는 100인 것으로 가정하여 도시되었고, 청크 #1(0-3)은 전송 대상 파일을 논리적으로 100개의 구간으로 나눌 때 0 내지 3번 지점에 해당하는 청크를 나타내며, 청크 #2(3-6)은 전송 대상 파일의 3 내지 6번 지점에 해당하는 청크를 나타내며, 청크 #3(6-9)은 전송 대상 파일의 6 내지 9번 지점에 해당하는 청크를 나타낸다. 계속해서 참조할 도 4 내지 도 10에서도 마찬가지의 방식으로 표기한다. In FIG. 3, it is assumed that the size of the transmission target file (FILE A) is 100, and chunk #1 (0-3) corresponds to points 0 to 3 when the transmission target file is logically divided into 100 sections. Chunk #2(3-6) indicates the chunks corresponding to points 3 to 6 of the transfer target file, and chunk #3(6-9) corresponds to points 6 to 9 of the transfer destination file. Represents a chunk of 4 to 10, which will be referenced continuously, are also indicated in the same manner.

다시 도 2를 참조하여 설명한다.It will be described again with reference to FIG. 2 .

단계(S112)에서 병렬 전송이 개시된 N개의 채널들 중 어느 하나의 채널(제1 채널)에서 청크의 전송이 완료되면, 애플리케이션 서버(210)는 제1 채널의 전송 완료를 나타내는 메시지를 반환할 수 있다(S114).When the transmission of the chunk is completed in any one of the N channels (first channel) in which parallel transmission is initiated in step S112, the application server 210 may return a message indicating the completion of transmission of the first channel. There is (S114).

상기 메시지를 수신한 클라이언트 장치(10)는, N개의 채널들 중 제1 채널 외의 다른 채널을 통해 전송되는 청크들의 전송이 완료되었는지 여부와 무관하게, 제1 채널을 통해 다음 청크의 전송을 개시할 수 있다. 다시 말해, 비록 N개의 채널들 중 제1 채널을 제외한 다른 채널에서는 청크의 전송이 완료되지 않았더라도, 청크의 전송이 완료된 제1 채널에서는 다음 청크의 전송이 곧바로 개시될 수 있다. 여기서 다음 청크란, 전송 대상 파일을 분할한 청크들 중 아직 애플리케이션 서버(210)로 전송되지 않은 청크를 나타낼 수 있다. Upon receiving the message, the client device 10 initiates transmission of the next chunk through the first channel regardless of whether or not transmission of chunks transmitted through a channel other than the first channel among the N channels is completed. can In other words, even if transmission of the chunk is not completed in channels other than the first channel among the N channels, transmission of the next chunk may be started immediately in the first channel in which the transmission of the chunk is completed. Here, the next chunk may indicate a chunk that has not yet been transmitted to the application server 210 among the chunks in which the transmission target file is divided.

마찬가지로, 단계(S112)에서 병렬 전송이 개시된 N개의 채널들 중 다른 하나의 채널(제2 채널)에서 청크의 전송이 완료되면, 애플리케이션 서버(210)는 제2 채널의 전송 완료를 나타내는 메시지를 반환할 수 있고(S115), 상기 메시지를 수신한 클라이언트 장치(10)는, 다른 채널의 전송 완료 여부와 무관하게, 제2 채널을 통해 다음 청크의 전송을 개시할 수 있다. Similarly, when the transmission of the chunk is completed in another channel (the second channel) among the N channels in which parallel transmission is started in step S112 , the application server 210 returns a message indicating the completion of the transmission of the second channel. and (S115), the client device 10 receiving the message may initiate transmission of the next chunk through the second channel regardless of whether the transmission of the other channel has been completed.

도 4는, 클라이언트 장치(10)로부터 애플리케이션 서버(210)로 청크 #1, #2, #3의 전송이 완료된 예시적인 모습을 나타낸다. 청크 #1, #2, #3 각각의 전송이 완료될 때, 애플리케이션 서버(210)는 클라이언트 장치(10)로 각 청크의 전송 완료를 알리는 메시지를 반환할 수 있다. 전송이 완료된 청크 #1, #2, #3는, 전송 대상 파일 내에서 각각의 청크들이 대응되는 위치에 따른 순서대로, 청크 병합부(212)의 우선순위 큐에 삽입되어, 병합되는 과정이 개시될 수 있다.4 shows an exemplary state in which the transmission of chunks #1, #2, and #3 from the client device 10 to the application server 210 is completed. When the transmission of each of the chunks #1, #2, and #3 is completed, the application server 210 may return a message indicating the completion of transmission of each chunk to the client device 10 . The transfer-completed chunks #1, #2, and #3 are inserted into the priority queue of the chunk merging unit 212 in the order according to the positions of the respective chunks in the transfer target file, and the merging process is started. can be

도 5는 클라이언트 장치(10)와 애플리케이션 서버(210) 사이에 동시에 수립된 3개의 채널을 통하여, 전송 대상 파일의 청크 #4, #5, #6이 병렬적으로 전송되고 있는 예시적인 모습을 나타낸다. 또한 도 4를 참조하여 앞서 설명한 시점에, 청크 병합부의 우선순위 큐에 삽입되어 병합의 대상이던 청크 #1, #2, #3가 하나의 파일로 순차적으로 병합되어, 임시 저장소에 저장된 모습이 도 5에 도시되어 있다. 도 5에는 청크 #1, #2, #3이 병합된 결과, 전송 대상 파일의 0 내지 9번 지점까지의 내용이 포함된 병합된 파일(0-9)이 애플리케이션 서버(210)의 임시 저장소에 저장된 모습이 도시되어 있다.5 shows an exemplary state in which chunks #4, #5, and #6 of a transmission target file are transmitted in parallel through three channels established simultaneously between the client device 10 and the application server 210. . Also, at the time described above with reference to FIG. 4, chunks #1, #2, and #3, which were inserted into the priority queue of the chunk merging unit and were the subject of merging, were sequentially merged into one file and stored in the temporary storage is shown in FIG. 5 is shown. In FIG. 5, as a result of merging chunks #1, #2, and #3, the merged files (0-9) including the contents of points 0 to 9 of the transmission target file are stored in the temporary storage of the application server 210. The saved image is shown.

도 5에 도시된 상태에서 각각의 청크의 전송이 완료되면, 애플리케이션 서버(210)는 클라이언트 장치(10)로 해당 청크의 전송 완료를 알리는 메시지를 반환할 수 있다. 또한 도 5에 도시된 상태에서 각각의 청크의 전송이 완료되면, 해당 청크는 청크 병합부(212)의 우선순위 큐에 삽입되고, 순차적인 병합 동작의 대상이 될 수 있다.When transmission of each chunk is completed in the state shown in FIG. 5 , the application server 210 may return a message informing the client device 10 of completion of transmission of the corresponding chunk. In addition, when the transmission of each chunk is completed in the state shown in FIG. 5 , the corresponding chunk is inserted into the priority queue of the chunk merging unit 212 and may be a target of a sequential merging operation.

도 6은, 도 5에 도시된 상태에서 청크 #4, #6의 전송이 완료된 결과, 청크 #5, #7, #8이 병렬적으로 전송되고 있는 예시적인 모습을 나타낸다.FIG. 6 shows an exemplary state in which chunks #5, #7, and #8 are transmitted in parallel as a result of completion of transmission of chunks #4 and #6 in the state shown in FIG. 5 .

도 5에 도시된 상태에서 청크 #4, #6 각각의 전송이 완료될 때, 애플리케이션 서버(210)는 클라이언트 장치(10)로 각 청크의 전송 완료를 알리는 메시지를 반환하고, 클라이언트 장치(10)는 청크 #4, #6의 전송 완료 메시지에 응답하여, 청크 #7, #8의 전송을 개시할 수 있다.When the transmission of each of chunks #4 and #6 in the state shown in FIG. 5 is completed, the application server 210 returns a message to the client device 10 notifying the completion of transmission of each chunk, and the client device 10 may initiate transmission of chunks #7 and #8 in response to the transmission completion message of chunks #4 and #6.

도 5에 도시된 상태에서 청크 #4, #6 각각의 전송이 완료되면, 청크 #4, #6은 먼저 청크 병합부(212)의 우선순위 큐에 삽입될 수 있다. 기 병합된 파일(0-9)로부터 연속되는 청크 #4(9-12)는 우선순위 큐로부터 추출되어, 기 병합된 파일(0-9)의 끝 부분에 병합될 수 있다. 그 결과 도 6에 도시된 기 병합된 파일(0-12)에는 전송 대상 파일의 0 내지 12번 지점까지의 내용이 포함되어 있을 수 있다. 한편, 도 6에 도시된 상태에서, 청크 #6(15-18)은 기 병합된 파일(0-12)로부터 연속된 청크가 아니므로, 병합이 보류된 채로 우선순위 큐에 남아 있을 수 있다.When the transmission of each of chunks #4 and #6 is completed in the state shown in FIG. 5 , chunks #4 and #6 may first be inserted into the priority queue of the chunk merging unit 212 . A continuous chunk #4 (9-12) from the pre-merged file (0-9) may be extracted from the priority queue and merged at the end of the pre-merged file (0-9). As a result, the pre-merged files 0-12 shown in FIG. 6 may include contents 0 to 12 of the transmission target file. Meanwhile, in the state shown in FIG. 6 , since chunk #6 (15-18) is not a continuous chunk from the previously merged files (0-12), it may remain in the priority queue with merging pending.

전술한 과정을 보다 구체적으로 설명하면, 병합 대상 청크(예컨대 청크 #4)의 시작점에 대응되는, 전송 대상 파일 내의 제1 오프셋(예컨대 9)이 식별되고, 기 병합된 파일의 끝점에 대응되는, 전송 대상 파일 내의 제2 오프셋(예컨대 9)이 식별될 수 있다. 병합 대상 청크(예컨대 청크 #4)의 시작점이 기병합된 파일의 끝점과 일치하는 경우, 병합 대상 청크는 기병합된 파일의 끝 부분에 병합될 수 있다. 예컨대 청크 #4가 기 병합된 파일(0-9)의 끝 부분에 병합될 수 있다. 한편, 병합 대상 청크(예컨대 청크 #6)의 시작점에 대응되는, 전송 대상 파일 내의 제1 오프셋(예컨대 15)이, 기 병합된 파일의 끝점에 대응되는, 전송 대상 파일 내의 제2 오프셋(예컨대 12)와 일치하지 않는 경우, 병합 대상 청크(예컨대 청크 #6)의 병합은 보류될 수 있다.To describe the above process in more detail, the first offset (eg, 9) in the transmission target file, which corresponds to the start point of the merge target chunk (eg, chunk #4), is identified, and corresponds to the end point of the merged file, A second offset (eg, 9) in the to-be-sent file may be identified. When the start point of the merge target chunk (eg, chunk #4) coincides with the end point of the merged file, the merge target chunk may be merged to the end of the merged file. For example, chunk #4 may be merged at the end of the merged file (0-9). On the other hand, a first offset (eg, 15) in the transmission target file, corresponding to the start point of the merge target chunk (eg, chunk #6), corresponds to the end point of the merged file, and a second offset (eg, 12) in the transmission target file ), the merge of the merge target chunk (eg, chunk #6) may be suspended.

도 6에 도시된 상태에서, 청크 #5, #7, #8의 전송이 각각 완료되면, 청크 #5, #7, #8이 각각 청크 병합부(212)의 우선순위 큐에 삽입될 수 있다. 이때 청크 #5, #7, #8는 전송 대상 파일 내에서 각각의 청크들이 대응되는 위치에 따른 순서대로 상기 우선순위 큐에 삽입될 수 있다. 다시 말해, 우선순위 큐에 청크 #5 이전에 청크 #6이 삽입되었더라도, 청크 #5가 청크 #6보다 먼저 우선순위 큐로부터 추출될 수 있다.In the state shown in FIG. 6 , when the transmission of chunks #5, #7, and #8 is completed, respectively, chunks #5, #7, and #8 may be inserted into the priority queue of the chunk merging unit 212 , respectively. . In this case, chunks #5, #7, and #8 may be inserted into the priority queue in order according to positions corresponding to the respective chunks in the transmission target file. In other words, even if chunk #6 is inserted into the priority queue before chunk #5, chunk #5 may be extracted from the priority queue before chunk #6.

우선순위 큐에 청크 #5, #7, #8 등이 삽입되고 나면, 기 병합된 파일(0-12)로부터 연속되는 청크 #5(12-15)가 우선순위 큐로부터 추출되어, 기 병합된 파일(0-12)의 끝 부분에 병합되고, 이어서 청크 #6(15-18), 청크 #7(18-21), 및 청크 #8(21-24)이 순차적으로 우선순위 큐로부터 추출되어 기 병합된 파일의 끝 부분에 순차적으로 병합될 수 있다.After chunks #5, #7, #8, etc. are inserted into the priority queue, continuous chunks #5 (12-15) from the previously merged files (0-12) are extracted from the priority queue, merged at the end of file (0-12), then chunk #6 (15-18), chunk #7 (18-21), and chunk #8 (21-24) are sequentially extracted from the priority queue They may be sequentially merged at the end of the previously merged file.

도 7은 클라이언트 장치(10)로부터 애플리케이션 서버(210)로 마지막 청크들(청크 #32(93-96), 청크 #33(96-99), 청크 #34(99-100))의 전송이 완료된 상태를 예시적으로 도시한다. 7 shows that the transmission of the last chunks (chunk #32 (93-96), chunk #33 (96-99), chunk #34 (99-100)) from the client device 10 to the application server 210 is completed. The state is illustrated by way of example.

클라이언트 장치(10)로부터 애플리케이션 서버(210)로 모든 청크들의 전송이 완료되면, 애플리케이션 서버(210)의 청크 수신부(211)로부터 클라이언트 장치(10)로 파일 전송 완료 메시지가 반환될 수 있다. 상기 파일 전송 완료 메시지는, 청크들의 전송을 위해 클라이언트 장치(10)와 애플리케이션 서버(210) 사이에 수립된 채널 내지는 연결과는 상이한 별도의 연결을 통해 반환될 수 있다. 일 실시예에서, 파일 전송 완료 메시지가 반환되는 연결은 비동기식 연결일 수 있다. 일 실시예에서, 모든 청크들의 전송이 완료되면, 애플리케이션 서버(210)는 클라이언트 장치(10)와의 사이에 웹소켓(websocket) 연결을 수립하고, 웹소켓 연결을 통해 파일 전송 완료 메시지를 반환할 수 있다. When the transmission of all chunks from the client device 10 to the application server 210 is completed, a file transmission completion message may be returned from the chunk receiver 211 of the application server 210 to the client device 10 . The file transfer completion message may be returned through a channel established between the client device 10 and the application server 210 for transmission of chunks or a separate connection different from the connection. In one embodiment, the connection for which the file transfer completion message is returned may be an asynchronous connection. In one embodiment, when transmission of all chunks is completed, the application server 210 establishes a websocket connection with the client device 10 and returns a file transfer completion message through the websocket connection. have.

클라이언트 장치(10)로부터 애플리케이션 서버(210)로 모든 청크들의 전송이 완료되면, 전송된 청크들의 병합 상태와 무관하게, 상기 파일 전송 완료 메시지가 곧바로 반환될 수 있다. 구체적으로, 도 7에 도시된 상태는, 전송된 청크들의 병합이 완료되지 않은 상태이다. 구체적으로, 애플리케이션 서버(210)의 임시 저장소에는 전송 대상 파일의 0 내지 93번 지점까지가 병합된 파일이 임시 저장되어 있고, 청크 #32(93-96), 청크 #33(96-99), 청크 #34(99-100)는 청크 병합부(212)의 우선순위 큐에 삽입된 상태로 병합되기를 기다리고 있다. 이처럼 청크 #32(93-96), 청크 #33(96-99), 청크 #34(99-100)의 병합이 완료되지 않았더라도, 병합 상태와는 무관하게 애플리케이션 서버(210)의 청크 수신부(211)로부터 클라이언트 장치(10)로 파일 전송 완료 메시지가 반환될 수 있다. When the transmission of all chunks from the client device 10 to the application server 210 is completed, the file transmission completion message may be immediately returned regardless of the merged state of the transmitted chunks. Specifically, the state shown in FIG. 7 is a state in which merging of transmitted chunks is not completed. Specifically, in the temporary storage of the application server 210, the merged files from 0 to 93 of the transmission target file are temporarily stored, chunk #32 (93-96), chunk #33 (96-99), Chunk #34 (99-100) is inserted into the priority queue of the chunk merging unit 212 and is waiting to be merged. Even if the merging of chunk #32 (93-96), chunk #33 (96-99), and chunk #34 (99-100) is not completed, the chunk receiving unit ( A file transfer completion message may be returned from the 211 to the client device 10 .

다시 도 2를 참조하여 설명한다.It will be described again with reference to FIG. 2 .

도 7을 참조하여 전술한 바와 같이, 모든 청크들의 전송이 완료되면, 전송된 청크들의 병합 상태와 무관하게, 애플리케이션 서버(210)로부터 클라이언트 장치로 파일 전송 완료 메시지가 반환될 수 있다(S118). 클라이언트 장치(10)가 파일 전송 완료 메시지를 수신하면, 클라이언트 장치(10)는 파일 업로드 프로세스를 완료 처리할 수 있다(S130). 예를 들어 클라이언트 장치(10)의 사용자에게 업로드 완료 메시지가 디스플레이될 수 있다. As described above with reference to FIG. 7 , when transmission of all chunks is completed, a file transmission completion message may be returned from the application server 210 to the client device regardless of the merged state of the transmitted chunks ( S118 ). When the client device 10 receives the file transfer completion message, the client device 10 may complete the file upload process (S130). For example, an upload completion message may be displayed to the user of the client device 10 .

계속해서 도 2를 참조하면, 애플리케이션 서버(210)의 청크 병합부(212)에 의해, 수신된 모든 청크들을 하나로 병합하는 동작이 완료되면, 애플리케이션 서버(210)는 병합된 파일에 대한 후처리 과정을 개시할 수 있다(S141). 전술한 바와 같이, 후처리란 파일의 분할(split), 암호화(encryption), 압축(compression), DRM(digital content management)을 위한 보안 적용, 해시 값 등 디지털 지문 획득, 동영상 코덱 변환 등 애플리케이션 서비스의 목적에 따라 요구될 수 있는 다양한 처리들일 수 있다.Continuing to refer to FIG. 2 , when the operation of merging all received chunks into one is completed by the chunk merging unit 212 of the application server 210 , the application server 210 performs a post-processing process for the merged file. can be initiated (S141). As described above, post-processing refers to application services such as file split, encryption, compression, security application for digital content management (DRM), digital fingerprint acquisition such as hash value, and video codec conversion. There may be various treatments that may be required depending on the purpose.

병합된 파일에 대한 후처리가 완료되면, 애플리케이션 서버(210)는 후처리 된 파일을 저장할 수 있다. 일 실시예에서, 애플리케이션 서버(210)는 애플리케이션 서버(210)와 직접 연결된 저장 장치에 상기 파일을 저장할 수 있다. 도 2에 도시된 실시예 등 다른 실시예에서, 애플리케이션 서버(210)는 상기 파일을 스토리지 서버(220)에 전송하여(S142), 스토리지 서버(220)로 하여금 상기 파일을 저장하도록 할 수 있다(S143). 스토리지 서버(220)의 파일 저장이 완료되면, 스토리지 서버(220)로부터 애플리케이션 서버(210)로 파일 전송 완료 메시지(S144)가 전송되고, 애플리케이션 서버(210)는 파일 저장 프로세스를 완료 처리할 수 있다(S150).When post-processing of the merged file is completed, the application server 210 may store the post-processed file. In an embodiment, the application server 210 may store the file in a storage device directly connected to the application server 210 . In another embodiment, such as the embodiment shown in FIG. 2 , the application server 210 may transmit the file to the storage server 220 ( S142 ), causing the storage server 220 to store the file ( S142 ). S143). When the storage server 220 completes the file storage, a file transfer completion message S144 is transmitted from the storage server 220 to the application server 210, and the application server 210 may complete the file storage process. (S150).

도 8은, 애플리케이션 서버(210)에서 청크들의 병합 및 후처리 된 후, 후처리 된 파일이 스토리지 서버(220)로 전송되어 저장되는 과정을 설명하기 위한 도면이다. 도 8에는, 병합된 파일에 대하여 암호화 처리를 포함한 DRM이 적용되고, DRM이 적용된 파일이 3개의 청크로 다시 분할된 후, 분할된 청크들이 스토리지 서버(220)로 병렬 전송되어 저장되는 실시예가 도시되었다. 이때, 메타 DB(215)에 각각의 청크들에 관한 정보가 저장되어, 향후에 분할된 청크들로부터 파일을 병합하는 과정에 이용될 수 있다. 도 8에 도시된 바와 같이, DRM이 적용된 후 3개의 청크로 분할된 파일은 스토리지 서버(220)에 저장될 수 있다.FIG. 8 is a diagram for explaining a process in which chunks are merged and post-processed in the application server 210 , and the post-processed file is transmitted to and stored in the storage server 220 . 8 shows an embodiment in which DRM including encryption processing is applied to the merged file, and the DRM-applied file is again divided into three chunks, and then the divided chunks are transmitted in parallel to the storage server 220 and stored. became In this case, information about each chunk is stored in the meta DB 215 and may be used in a process of merging files from the divided chunks in the future. As shown in FIG. 8 , the file divided into three chunks after DRM is applied may be stored in the storage server 220 .

도 9는 본 발명의 일 실시예에 따라 서버 시스템(20)으로부터 클라이언트 장치(10)로 파일이 다운로드 되는 방법을 설명하는 흐름도이며, 도 10은 스토리지 서버(220)에 청크로 분할된 상태로 저장된 전송 대상 파일이, 다시 하나의 파일로 병합되지 않은 채 클라이언트 장치로 순차 전송되는 예시적인 과정을 나타내는 참조 도면이다.9 is a flowchart illustrating a method of downloading a file from the server system 20 to the client device 10 according to an embodiment of the present invention, and FIG. 10 is a storage server 220 stored in a divided state. It is a reference diagram illustrating an exemplary process in which a transmission target file is sequentially transmitted to a client device without being merged into one file again.

도 9를 참조하면, 클라이언트 장치(10)는 전송 대상 파일에 대한 다운로드 요청을 애플리케이션 서버(210)에 전송할 수 있다. Referring to FIG. 9 , the client device 10 may transmit a download request for a transmission target file to the application server 210 .

클라이언트 장치(10)의 요청에 응답하여, 애플리케이션 서버(210)는 전송 대상 파일에 대응되는 청크들을 식별할 수 있다. 그리고 애플리케이션 서버(210)는 상기 청크들에 대한 다운로드 요청을 스토리지 서버(220)에 전송할 수 있다. 도 10을 참조하면, 애플리케이션 서버(210)는 메타 DB(215)에 저장된 데이터 레코드를 참조하여, 전송 대상 파일이 대응되는 청크 #1, #2, #3을 식별할 수 있다. 또한, 애플리케이션 서버(210)가 청크 #1, #2, #3에 대한 다운로드를 스토리지 서버(220)에 요청할 수 있다.In response to the request of the client device 10 , the application server 210 may identify chunks corresponding to the file to be transmitted. In addition, the application server 210 may transmit a download request for the chunks to the storage server 220 . Referring to FIG. 10 , the application server 210 may identify the chunks #1, #2, and #3 corresponding to the transmission target file by referring to the data record stored in the meta DB 215 . Also, the application server 210 may request the storage server 220 to download chunks #1, #2, and #3.

애플리케이션 서버(210)의 요청에 응답하여, 스토리지 서버(220)는 상기 요청된 청크들을 애플리케이션 서버(210)에 순차적으로 전송하 수 있다. 스토리지 서버(220)는 둘 이상의 네트워크 연결을 이용하여, 둘 이상의 청크들을 동시에 병렬적으로 애플리케이션 서버(210)로 전송할 수 있다. 도 10을 참조하면, 스토리지 서버(220)는 저장 장치에 저장된, DRM 적용된 청크 #1, #2, #3을 애플리케이션 서버(210)에게 병렬적으로 전송할 수 있다.In response to the request of the application server 210 , the storage server 220 may sequentially transmit the requested chunks to the application server 210 . The storage server 220 may transmit two or more chunks simultaneously and in parallel to the application server 210 using two or more network connections. Referring to FIG. 10 , the storage server 220 may transmit DRM-applied chunks #1, #2, and #3 stored in the storage device to the application server 210 in parallel.

애플리케이션 서버(210)는, 스토리지 서버(220)로부터 수신된 청크들을 클라이언트 장치(10)에게 전달할 수 있다. 구체적으로, 전송 대상 파일 내에서 각각의 청크가 대응되는 위치에 따른 순서대로, 청크들을 클라이언트 장치(10)에게 스트리밍할 수 있다. 도 10을 참조하면, 애플리케이션 서버(210)는 수신된 청크 #1, #2, #3을 다시 하나의 파일로 병합하지 않고 순차적으로 스트리밍함으로써, 전송 대상 파일을 클라이언트 장치(10)에게 제공할 수 있다.The application server 210 may deliver the chunks received from the storage server 220 to the client device 10 . Specifically, the chunks may be streamed to the client device 10 in an order according to a location to which each chunk corresponds in the transmission target file. Referring to FIG. 10 , the application server 210 may provide a transmission target file to the client device 10 by sequentially streaming the received chunks #1, #2, and #3 without merging them into one file again. have.

지금까지 도 2 내지 도 10을 참조하여, 본 발명의 몇몇 실시예에 따라 클라이언트 장치(10)로부터 서버 시스템(20)으로 전송 대상 파일을 업로드 및 다운로드 하는 방법을 설명하였다.So far, a method of uploading and downloading a transmission target file from the client device 10 to the server system 20 according to some embodiments of the present invention has been described with reference to FIGS. 2 to 10 .

전술한 실시예들에 따르면, 클라이언트 장치(10)에서 분할된 청크들이, N개의 채널 내지는 연결을 통해 클라이언트 장치(10)로부터 애플리케이션 서버(210)로 동시에 병렬적으로 전송될 수 있으며, 그로 인해 전송 시간이 단축될 수 있다.According to the above-described embodiments, the divided chunks in the client device 10 may be simultaneously and in parallel transmitted from the client device 10 to the application server 210 through N channels or connections, whereby the transmission time can be shortened.

전술한 실시예들에 따르면, 클라이언트 장치(10)에서 분할된 청크들이 N개의 채널 내지는 연결을 통해 클라이언트 장치(10)로부터 애플리케이션 서버(210)로 전송될 때, 어느 하나의 채널이 전송이 완료되면 다른 채널의 전송 상태와 무관하게 곧바로 다음 청크의 전송이 개시될 수 있다. 그로 인해, 전송 채널들 사이에 속도 차이가 있거나, 전송 속도가 일시적으로 느린 채널이 존재하여도, 전송 채널의 수는 항상 최대치로 유지될 수 있다. 다시 말해 클라이언트 장치(10)와 애플리케이션 서버(210) 사이의 네트워크 대역폭이 최대로 활용되며, 전송 대상 파일이 전송 완료되는 시점을 최대한 앞당길 수 있다. According to the above-described embodiments, when the chunks divided in the client device 10 are transmitted from the client device 10 to the application server 210 through N channels or connections, when any one channel is transmitted, Transmission of the next chunk may be started immediately regardless of the transmission status of other channels. Therefore, even if there is a speed difference between the transmission channels or a channel having a temporarily slow transmission speed exists, the number of transmission channels can always be maintained at the maximum value. In other words, the network bandwidth between the client device 10 and the application server 210 is maximally utilized, and the time when the transmission target file is completed can be advanced as much as possible.

전술한 실시예들에 따르면, 애플리케이션 서버(210)에서 청크를 수신하는 동작과 청크를 병합하는 동작이 동시에 병렬적으로 수행될 수 있다. 구체적으로, 애플리케이션 서버(210)의 청크 수신부(211)에 의해 수신된 청크들은, 전송 대상 파일 내에서 각각의 청크들이 대응되는 위치에 따른 순서대로 우선순위 큐에 삽입되고, 애플리케이션 서버(210)의 청크 병합부(212)에 의해 우선순위 큐에 저장된 청크들이 순서대로 병합될 수 있다. 위와 같은 구성을 통해 애플리케이션 서버(210)는, 모든 청크들의 수신이 완료되면, 청크들의 병합 완료 여부와 무관하게, 클라이언트 장치(10)로 전송 완료 메시지를 반환할 수 있다. 따라서 클라이언트 장치(10)의 사용자는 애플리케이션 서버(210)에서 청크 병합이 완료될 때까지 대기할 필요가 없다.According to the above-described embodiments, the operation of receiving the chunk from the application server 210 and the operation of merging the chunks may be simultaneously performed in parallel. Specifically, the chunks received by the chunk receiving unit 211 of the application server 210 are inserted into the priority queue in order according to positions corresponding to the respective chunks in the transmission target file, and The chunks stored in the priority queue may be sequentially merged by the chunk merging unit 212 . Through the above configuration, when the reception of all chunks is completed, the application server 210 may return a transmission completion message to the client device 10 irrespective of whether the merging of the chunks is completed. Accordingly, the user of the client device 10 does not need to wait until the chunk merging is completed in the application server 210 .

전술한 실시예들에 따르면, 전송 대상 파일이 클라이언트 장치(10)로부터 애플리케이션 서버(220)로 전송 완료되면, 애플리케이션 서버(220)와 클라이언트 장치(10) 사이에 웹소켓 통신 채널 내지는 연결이 생성되고 이를 통해 전송 완료 메시지가 반환될 수 있다. 클라이언트 장치(10)로부터 애플리케이션 서버(220)로의 파일 업로드는 예컨대 HTTP 통신을 사용하고, 파일 전송 완료 메시지는 웹소켓 통신을 사용할 수 있다. 이로 인해, 클라이언트 장치(10)는 청크들의 전송이 완료된 후 애플리케이션 서버(210)에서 청크들이 병합 및 후처리되는 과정이 진행되는 동안 애플리케이션 서버(210)의 리스폰스를 기다릴 필요가 없고, 전송 완료 메시지는 비동기식 채널 내지는 연결을 통해 제공받을 수 있으므로, 클라이언트 장치(10)의 사용자가 체감하는 대기 시간이 줄어들 수 있다. According to the above-described embodiments, when the transmission target file is completed from the client device 10 to the application server 220 , a WebSocket communication channel or connection is created between the application server 220 and the client device 10 , Through this, a transmission completion message may be returned. File upload from the client device 10 to the application server 220 may use, for example, HTTP communication, and the file transfer completion message may use WebSocket communication. Due to this, the client device 10 does not need to wait for a response from the application server 210 while the chunks are merged and post-processed in the application server 210 after the transmission of the chunks is completed, and the transmission completion message is Since it may be provided through an asynchronous channel or connection, the waiting time experienced by the user of the client device 10 may be reduced.

전술한 실시예들에 따르면, 애플리케이션 서버(210)가 수신한 청크들을 하나의 파일로 병합하고, 병합된 파일에 대한 후처리가 진행될 수 있으며, 후처리 된 파일은 다시 둘 이상의 청크들로 분할하여 스토리지 서버(220)에 병렬적으로 전송할 수 있다. 이처럼 애플리케이션 서버(210)와 스토리지 서버(220) 사이에서도 청크 분할을 통한 병렬 전송이 이용함으로써, 네트워크 대역폭의 활용률을 높이고 전송 시간을 단축시킬 수 있다.According to the above-described embodiments, the application server 210 merges the received chunks into one file, post-processing of the merged file may be performed, and the post-processed file is again divided into two or more chunks. It may be transmitted in parallel to the storage server 220 . As such, by using parallel transmission through chunking between the application server 210 and the storage server 220 , it is possible to increase the utilization rate of network bandwidth and shorten the transmission time.

전술한 실시예들에 따르면, 클라이언트 장치(10)로부터 전송 대상 파일에 대한 다운로드 요청이 있을 경우, 스토리지 서버(220)에 저장되어 있는 청크들을 하나의 파일로 병합하지 않고도, 애플리케이션 서버(210)를 통해 클라이언트 장치(10)에게 순서대로 스트리밍할 수 있다.According to the above-described embodiments, when there is a download request for a file to be transmitted from the client device 10 , the application server 210 is installed without merging the chunks stored in the storage server 220 into one file. Through this, it is possible to sequentially stream to the client device 10 .

이하에서는 도 11 및 도 12를 참조하여, 본 발명의 다른 실시예들에 따른 클라이언트 장치(10) 및 애플리케이션 서버 장치(210)의 구성과 동작을 설명한다. 도 11 및 도 12에 도시된 실시예는 본 발명의 목적을 달성하기 위한 몇몇 실시예일 뿐이며, 필요에 따라 일부 구성이 추가되거나 삭제될 수 있다. 별도로 언급하지 않더라도, 도 11 및 도 12에 도시된 실시예에 따른 클라이언트 장치(10) 및 애플리케이션 서버 장치(210)의 구성 및 동작을 이해함에 있어서, 도 2 내지 도 10을 참조하여 설명된 실시예들의 기술 사상이 반영될 수 있다.Hereinafter, the configuration and operation of the client device 10 and the application server device 210 according to other embodiments of the present invention will be described with reference to FIGS. 11 and 12 . 11 and 12 are only some examples for achieving the object of the present invention, and some components may be added or deleted as necessary. Although not specifically mentioned, the embodiment described with reference to FIGS. 2 to 10 in understanding the configuration and operation of the client device 10 and the application server device 210 according to the embodiment shown in FIGS. 11 and 12 . Their technical ideas can be reflected.

도 11은 본 발명의 일 실시예에 따른 클라이언트 장치(10)의 블록도이다. 클라이언트 장치(10)는 청크 생성부(101), 청크 전송부(102), 및 웹소켓 통신부(103)를 구비할 수 있다.11 is a block diagram of a client device 10 according to an embodiment of the present invention. The client device 10 may include a chunk generation unit 101 , a chunk transmission unit 102 , and a websocket communication unit 103 .

청크 생성부(101)는 전송 대상 파일을 소정의 사이즈를 가지는 청크들로 분할할 수 있다.The chunk generator 101 may divide the transmission target file into chunks having a predetermined size.

청크 전송부(102)는, 분할 생성된 청크들을 순차적으로 전송할 수 있다. 청크 전송부(102)는 복수의 연결을 수립하여, 동시에 둘 이상의 청크들을 병렬적으로 전송할 수 있다. 청크 전송부(102)는 예컨대 HTTP 요청에 의해 수립되는 제1 연결을 통해 청크들을 전송할 수 있다. 청크 전송부(102)는 전송 대상 파일의 식별자 및 전송 대상 파일 내에서의 각 청크의 위치 정보 등을 HTTP 헤더부에 기록하고, 각 청크의 내용을 HTTP 바디부에 기록하여 전송할 수 있다.The chunk transmitter 102 may sequentially transmit the divided chunks. The chunk transmitter 102 may establish a plurality of connections and transmit two or more chunks in parallel at the same time. The chunk transmitter 102 may transmit chunks through a first connection established by, for example, an HTTP request. The chunk transmission unit 102 may record the identifier of the transmission target file and the location information of each chunk in the transmission target file in the HTTP header part, and may record the contents of each chunk in the HTTP body part and transmit it.

청크 전송부(102)는, 병렬 전송되는 청크들 중 어느 하나의 전송이 완료되면, 병렬 전송되는 나머지 청크들의 전송 완료 여부와 무관하게, 미전송된 청크의 전송을 개시할 수 있다.When the transmission of any one of the chunks transmitted in parallel is completed, the chunk transmission unit 102 may start transmission of the untransmitted chunk regardless of whether the transmission of the remaining chunks transmitted in parallel is completed.

웹소켓 통신부(103)는 파일 전송 상대방과의 사이에 비동기식 연결을 수립할 수 있다. 웹소켓 통신부(103)는 청크 전송부(102)에 의한 모든 청크의 전송이 완료되면, 청크 전송부(102)에 의해 수립된 제1 연결과는 상이한 제2 연결, 예컨대 웹소켓 통신 연결을 통해, 전송 대상 파일의 전송 완료를 나타내는 메시지를 수신할 수 있다. The websocket communication unit 103 may establish an asynchronous connection with a file transfer counterpart. When the transmission of all chunks by the chunk transmission unit 102 is completed, the websocket communication unit 103 performs a second connection different from the first connection established by the chunk transmission unit 102, for example, through a websocket communication connection. , it is possible to receive a message indicating the completion of the transmission of the target file.

도 12는 본 발명의 일 실시예에 따른 애플리케이션 서버 장치(210)의 블록도이다. 애플리케이션 서버 장치(10)는 청크 수신부(211), 청크 병합부(212), 웹소켓 통신부(213), 후처리부(214), 및 저장부(215)를 구비할 수 있다.12 is a block diagram of an application server device 210 according to an embodiment of the present invention. The application server device 10 may include a chunk receiving unit 211 , a chunk merging unit 212 , a WebSocket communication unit 213 , a post-processing unit 214 , and a storage unit 215 .

청크 수신부(211)는 전송 대상 파일 또는 전송 대상 파일로부터 분할된 청크들을 수신할 수 있다. 청크 수신부(211)는 복수의 연결을 통하여, 동시에 둘 이상의 파일 또는 청크들을 병렬적으로 수신할 수 있다. 청크 수신부(211)는 수신된 파일들을 청크 병합부(212)의 우선순위 큐에 제공할 수 있다.The chunk receiving unit 211 may receive a transmission target file or divided chunks from a transmission target file. The chunk receiving unit 211 may simultaneously receive two or more files or chunks in parallel through a plurality of connections. The chunk receiving unit 211 may provide the received files to the priority queue of the chunk merging unit 212 .

청크 병합부(212)는 청크 수신부(211)가 순차적으로 수신하는 청크들을 하나로 병합할 수 있다. 전송 대상 파일에서의 위치에 따라 청크들을 순차적으로 병합하기 위하여, 청크 병합부(212)는 우선순위 큐를 이용하여 청크들의 순서를 적절히 관리할 수 있다. The chunk merging unit 212 may merge chunks sequentially received by the chunk receiving unit 211 into one. In order to sequentially merge chunks according to their positions in the transmission target file, the chunk merging unit 212 may appropriately manage the order of the chunks using a priority queue.

후처리부(214)는 병합된 청크들을 대상으로 후처리 동작을 수행할 수 있다. 전술한 바와 같이 후처리는 파일의 분할, 암호화, 압축, DRM을 위한 보안 적용, 해시 값 등 디지털 지문 획득, 동영상 코덱 변환 등 애플리케이션 서비스의 목적에 따라 요구될 수 있는 다양한 처리들일 수 있다. 후처리부(214)는 후처리가 완료된 파일을 저장부(215)에 저장할 수 있다.The post-processing unit 214 may perform a post-processing operation on the merged chunks. As described above, post-processing may be various processes that may be required depending on the purpose of the application service, such as file division, encryption, compression, security application for DRM, digital fingerprint acquisition such as hash value, and video codec conversion. The post-processing unit 214 may store the post-processing file in the storage unit 215 .

저장부(215)에는, 청크 수신부(211)에 의해 수신되어 청크 병합부(212)에 의한 병합의 대상이 되는 청크들이 임시로 저장되거나, 청크 병합부(212)에 의해 병합되어 후처리의 대상이 되는 파일이 입시로 저장될 수 있다. 저장부(215)에는 후처리된 파일 또는 후처리된 파일이 다시 복수의 청크들로 분할되어 저장될 수 있다. In the storage unit 215 , chunks received by the chunk receiving unit 211 and subject to merging by the chunk merging unit 212 are temporarily stored or merged by the chunk merging unit 212 to be subjected to post-processing. This file can be saved as an entrance exam. In the storage unit 215 , the post-processed file or the post-processed file may be divided into a plurality of chunks and stored.

지금까지 도 11 및 도 12를 참조하여, 본 발명의 몇몇 실시예들에 따른 클라이언트 장치(10) 및 애플리케이션 서버 장치(210)의 구성과 동작을 설명하였다. 이하에서는 도 13을 참조하여 본 발명의 몇몇 실시예들에 따른 클라이언트 장치(10), 애플리케이션 서버 장치(210), 스토리지 장치(220) 등이 구현될 수 있는 예시적인 컴퓨팅 장치(1500)에 대하여 설명하도록 한다.So far, the configuration and operation of the client device 10 and the application server device 210 according to some embodiments of the present invention have been described with reference to FIGS. 11 and 12 . Hereinafter, an exemplary computing device 1500 in which the client device 10 , the application server device 210 , the storage device 220 , etc. may be implemented according to some embodiments of the present invention will be described with reference to FIG. 13 . let it do

도 13은 본 발명의 몇몇 실시예들에 따른 방법들을 수행할 수 있는 예시적인 컴퓨팅 장치(1500)를 나타내는 하드웨어 구성도이다. 13 is a hardware configuration diagram illustrating an exemplary computing device 1500 capable of performing methods according to some embodiments of the present invention.

도 13에 도시된 바와 같이, 컴퓨팅 장치(1500)는 하나 이상의 프로세서(1510), 버스(1550), 통신 인터페이스(1570), 상기 프로세서(1510)에 의하여 수행되는 컴퓨터 프로그램(1591)을 로드(load)하는 메모리(1530)와, 컴퓨터 프로그램(1591)을 저장하는 스토리지(1590)를 포함할 수 있다. 다만, 도 13에는 본 발명의 실시예와 관련 있는 구성 요소들만이 도시되어 있다. 따라서, 본 발명이 속한 기술분야의 통상의 기술자라면 도 13에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다.13 , the computing device 1500 loads one or more processors 1510 , a bus 1550 , a communication interface 1570 , and a computer program 1591 executed by the processor 1510 . ) may include a memory 1530 and a storage 1590 for storing the computer program 1591 . However, only the components related to the embodiment of the present invention are illustrated in FIG. 13 . Accordingly, one of ordinary skill in the art to which the present invention pertains can see that other general-purpose components other than the components shown in FIG. 13 may be further included.

프로세서(1510)는 컴퓨팅 장치(1500)의 각 구성의 전반적인 동작을 제어한다. 프로세서(1510)는 CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), GPU(Graphic Processing Unit) 또는 본 발명의 기술 분야에 잘 알려진 임의의 형태의 프로세서를 포함하여 구성될 수 있다. 또한, 프로세서(1510)는 본 발명의 실시예들에 따른 방법을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있다. 컴퓨팅 장치(1500)는 하나 이상의 프로세서를 구비할 수 있다.The processor 1510 controls the overall operation of each component of the computing device 1500 . The processor 1510 includes a central processing unit (CPU), a micro processor unit (MPU), a micro controller unit (MCU), a graphic processing unit (GPU), or any type of processor well known in the art. can be In addition, the processor 1510 may perform an operation on at least one application or program for executing the method according to the embodiments of the present invention. The computing device 1500 may include one or more processors.

메모리(1530)는 각종 데이터, 명령 및/또는 정보를 저장한다. 메모리(1530)는 본 발명의 실시예들에 따른 방법을 실행하기 위하여 스토리지(1590)로부터 하나 이상의 프로그램(1591)을 로드할 수 있다. 메모리(1530)는 RAM과 같은 휘발성 메모리로 구현될 수 있을 것이나, 본 발명의 기술적 범위가 이에 한정되는 것은 아니다.The memory 1530 stores various data, commands, and/or information. The memory 1530 may load one or more programs 1591 from the storage 1590 to execute a method according to embodiments of the present invention. The memory 1530 may be implemented as a volatile memory such as RAM, but the technical scope of the present invention is not limited thereto.

버스(1550)는 컴퓨팅 장치(1500)의 구성 요소 간 통신 기능을 제공한다. 버스(1550)는 주소 버스(Address Bus), 데이터 버스(Data Bus) 및 제어 버스(Control Bus) 등 다양한 형태의 버스로 구현될 수 있다.The bus 1550 provides a communication function between components of the computing device 1500 . The bus 1550 may be implemented as various types of buses, such as an address bus, a data bus, and a control bus.

통신 인터페이스(1570)는 컴퓨팅 장치(1500)의 유무선 인터넷 통신을 지원한다. 또한, 통신 인터페이스(1570)는 인터넷 통신 외의 다양한 통신 방식을 지원할 수도 있다. 이를 위해, 통신 인터페이스(1570)는 본 발명의 기술 분야에 잘 알려진 통신 모듈을 포함하여 구성될 수 있다.The communication interface 1570 supports wired/wireless Internet communication of the computing device 1500 . Also, the communication interface 1570 may support various communication methods other than Internet communication. To this end, the communication interface 1570 may be configured to include a communication module well-known in the art.

몇몇 실시예들에 따르면, 통신 인터페이스(1570)는 생략될 수도 있다.According to some embodiments, the communication interface 1570 may be omitted.

스토리지(1590)는 상기 하나 이상의 프로그램(1591)과 각종 데이터를 비임시적으로 저장할 수 있다.The storage 1590 may non-temporarily store the one or more programs 1591 and various data.

스토리지(1590)는 ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체를 포함하여 구성될 수 있다.The storage 1590 is a non-volatile memory such as a read only memory (ROM), an erasable programmable ROM (EPROM), an electrically erasable programmable ROM (EEPROM), a flash memory, a hard disk, a removable disk, or well in the art to which the present invention pertains. It may be configured to include any known computer-readable recording medium.

컴퓨터 프로그램(1591)은 메모리(1530)에 로드될 때 프로세서(1510)로 하여금 본 발명의 다양한 실시예에 따른 방법/동작을 수행하도록 하는 하나 이상의 인스트럭션들을 포함할 수 있다. 즉, 프로세서(1510)는 상기 하나 이상의 인스트럭션들을 실행함으로써, 본 발명의 다양한 실시예에 따른 방법/동작들을 수행할 수 있다.The computer program 1591 may include one or more instructions that, when loaded into the memory 1530 , cause the processor 1510 to perform methods/operations in accordance with various embodiments of the present invention. That is, the processor 1510 may perform the methods/operations according to various embodiments of the present disclosure by executing the one or more instructions.

지금까지 도 1 내지 도 13을 참조하여 본 발명의 다양한 실시예들 및 그 실시예들에 따른 효과들을 언급하였다. 본 발명의 기술적 사상에 따른 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.So far, various embodiments of the present invention and effects according to the embodiments have been described with reference to FIGS. 1 to 13 . Effects according to the technical spirit of the present invention are not limited to the above-mentioned effects, and other effects not mentioned will be clearly understood by those skilled in the art from the following description.

지금까지 도 1 내지 도 13을 참조하여 설명된 본 발명의 기술적 사상은 컴퓨터가 읽을 수 있는 매체 상에 컴퓨터가 읽을 수 있는 코드로 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체는, 예를 들어 이동형 기록 매체(CD, DVD, 블루레이 디스크, USB 저장 장치, 이동식 하드 디스크)이거나, 고정식 기록 매체(ROM, RAM, 컴퓨터 구비 형 하드 디스크)일 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체에 기록된 상기 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여 다른 컴퓨팅 장치에 전송되어 상기 다른 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 다른 컴퓨팅 장치에서 사용될 수 있다.The technical ideas of the present invention described with reference to FIGS. 1 to 13 may be implemented as computer-readable codes on a computer-readable medium. The computer-readable recording medium may be, for example, a removable recording medium (CD, DVD, Blu-ray disk, USB storage device, removable hard disk) or a fixed recording medium (ROM, RAM, computer-equipped hard disk). can The computer program recorded on the computer-readable recording medium may be transmitted to another computing device through a network such as the Internet and installed in the other computing device, thereby being used in the other computing device.

이상에서, 본 발명의 실시예를 구성하는 모든 구성 요소들이 하나로 결합되거나 결합되어 동작하는 것으로 설명되었다고 해서, 본 발명의 기술적 사상이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 발명의 목적 범위 안에서라면, 그 모든 구성요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다.In the above, even though all the components constituting the embodiment of the present invention are described as being combined or operating in combination, the technical spirit of the present invention is not necessarily limited to this embodiment. That is, within the scope of the object of the present invention, all the components may operate by selectively combining one or more.

도면에서 동작들이 특정한 순서로 도시되어 있지만, 반드시 동작들이 도시된 특정한 순서로 또는 순차적 순서로 실행되어야만 하거나 또는 모든 도시 된 동작들이 실행되어야만 원하는 결과를 얻을 수 있는 것으로 이해되어서는 안 된다. 특정 상황에서는, 멀티태스킹 및 병렬 처리가 유리할 수도 있다. 더욱이, 위에 설명한 실시예들에서 다양한 구성들의 분리는 그러한 분리가 반드시 필요한 것으로 이해되어서는 안 되고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품으로 패키지 될 수 있음을 이해하여야 한다.Although acts are shown in a particular order in the drawings, it should not be understood that the acts must be performed in the specific order or sequential order shown, or that all illustrated acts must be performed to obtain a desired result. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of the various components in the embodiments described above should not be construed as necessarily requiring such separation, and the described program components and systems may generally be integrated together into a single software product or packaged into multiple software products. It should be understood that there is

이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 본 발명이 다른 구체적인 형태로도 실시될 수 있다는 것을 이해할 수 있다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명에 의해 정의되는 기술적 사상의 권리범위에 포함되는 것으로 해석되어야 할 것이다.Although embodiments of the present invention have been described above with reference to the accompanying drawings, those of ordinary skill in the art to which the present invention pertains can practice the present invention in other specific forms without changing the technical spirit or essential features. can understand that there is Therefore, it should be understood that the embodiments described above are illustrative in all respects and not restrictive. The protection scope of the present invention should be interpreted by the following claims, and all technical ideas within the equivalent range should be interpreted as being included in the scope of the technical ideas defined by the present invention.

Claims (18)

클라이언트와 서버 사이에 파일을 전송하는 방법으로서,
클라이언트 장치가 기설정된 사이즈를 가지는 M개의 청크들로 전송 대상 파일을 분할하는 동작을 개시하는 단계;
상기 M개의 청크들을 순차적으로 상기 서버에 전송하되, 상기 서버로의 복수의 연결을 통해 N개의 청크들을 병렬적으로 전송하는 단계; 및
상기 병렬 전송되는 N개의 청크들 중 어느 하나의 전송이 완료되면, 상기 병렬 전송되는 나머지 청크들의 전송 완료 여부와 무관하게, 상기 M개의 청크들 중 미전송된 하나의 청크의 전송을 개시하는 단계
를 포함하는,
파일 전송 방법.
A method for transferring files between a client and a server, comprising:
initiating, by a client device, an operation of dividing a transmission target file into M chunks having a preset size;
transmitting the M chunks sequentially to the server, and transmitting the N chunks in parallel through a plurality of connections to the server; and
Initiating transmission of one untransmitted chunk among the M chunks when transmission of any one of the N chunks transmitted in parallel is completed, regardless of whether the transmission of the remaining chunks transmitted in parallel is completed
containing,
How to transfer files.
제1항에 있어서,
상기 클라이언트 장치가 상기 전송 대상 파일의 전송 완료를 나타내는 메시지를 상기 서버로부터 수신하는 단계
를 더 포함하되,
상기 전송 완료를 나타내는 메시지는, 상기 전송 대상 파일의 전송을 위해 상기 클라이언트 장치와 상기 서버 사이에 수립된 연결과는 상이한 연결을 통해 수신되는,
파일 전송 방법.
According to claim 1,
receiving, by the client device, a message indicating completion of transmission of the file to be transmitted from the server
further comprising,
The message indicating the completion of the transmission is received through a connection different from the connection established between the client device and the server for transmission of the file to be transmitted,
How to transfer files.
제2항에 있어서,
상기 전송 완료를 나타내는 메시지는, 상기 클라이언트 장치와 상기 서버 사이에 수립된 웹소켓(websocket) 연결을 통해 수신되는,
파일 전송 방법.
3. The method of claim 2,
The message indicating the completion of the transmission is received through a websocket connection established between the client device and the server,
How to transfer files.
제1항에 있어서,
상기 서버가 상기 클라이언트 장치로부터 상기 청크들을 순차적으로 수신하는 단계;
상기 서버가, 상기 청크들의 순차적인 수신과 병렬적으로, 상기 수신된 청크들을 하나로 병합하는 단계; 및
상기 M개의 청크들의 수신이 완료되면, 상기 수신된 M개의 청크들의 병합 완료 여부와 무관하게, 상기 전송 대상 파일의 전송 완료를 나타내는 메시지를 상기 클라이언트 장치로 전송하는 단계
를 포함하는,
파일 전송 방법.
According to claim 1,
receiving, by the server, the chunks sequentially from the client device;
merging, by the server, the received chunks into one in parallel with the sequential reception of the chunks; and
When the reception of the M chunks is completed, transmitting a message indicating completion of transmission of the transmission target file to the client device regardless of whether the M chunks are merged.
containing,
How to transfer files.
제1항에 있어서,
상기 서버가 상기 클라이언트 장치로부터 상기 청크들을 순차적으로 수신하는 단계; 및
상기 서버가, 상기 청크들의 순차적인 수신과 병렬적으로, 상기 수신된 청크들을 하나로 병합하는 단계
를 더 포함하되,
상기 하나의 파일로 병합하는 단계는,
상기 수신된 청크들 중 병합 대상 청크가, 기병합된 파일로부터 연속되는 청크가 아니라는 판정에 응답하여, 상기 병합 대상 청크의 병합을 보류하는 단계
를 포함하는,
파일 전송 방법.
According to claim 1,
receiving, by the server, the chunks sequentially from the client device; and
merging, by the server, the received chunks into one in parallel with the sequential reception of the chunks
further comprising,
The step of merging into one file is,
suspending merging of the merged chunks in response to determining that the merged chunks among the received chunks are not continuous chunks from the pre-merged file;
containing,
How to transfer files.
제5항에 있어서,
상기 하나의 파일로 병합하는 단계는,
상기 수신된 청크들 중 병합 대상 청크의 시작점에 대응되는, 상기 전송 대상 파일 내의 제1 오프셋을 식별하는 단계; 및
상기 기병합된 파일의 끝점에 대응되는, 상기 전송 대상 파일 내의 제2 오프셋을 식별하는 단계
를 포함하는,
파일 전송 방법.
6. The method of claim 5,
The step of merging into one file is,
identifying a first offset in the transmission target file corresponding to a starting point of a merge target chunk among the received chunks; and
Identifying a second offset in the transmission target file corresponding to the end point of the pre-merged file
containing,
How to transfer files.
제6항에 있어서,
상기 전송 대상 파일 내에서 상기 수신된 각각의 청크들이 대응되는 위치에 기초하여, 우선순위 기반의 큐(queue)에 상기 수신된 청크들을 삽입하는 단계
를 더 포함하는,
파일 전송 방법.
7. The method of claim 6,
Inserting the received chunks into a priority-based queue based on a position to which each of the received chunks corresponds in the transmission target file
further comprising,
How to transfer files.
제6항에 있어서,
상기 N개의 청크들을 병렬적으로 전송하는 단계는, 각각의 청크를 각각의 HTTP 요청으로 전송하는 단계를 포함하고,
상기 HTTP 요청의 헤더부는, 상기 전송 대상 파일 내에서의 각 청크의 위치 정보를 포함하고,
상기 HTTP 요청의 바디부는, 상기 각 청크의 내용을 포함하는,
파일 전송 방법.
7. The method of claim 6,
Transmitting the N chunks in parallel includes sending each chunk in each HTTP request,
The header part of the HTTP request includes location information of each chunk in the transmission target file,
The body part of the HTTP request includes the contents of each chunk,
How to transfer files.
클라이언트와 서버 사이에 파일을 전송하는 방법으로서,
서버가, 타깃 파일로부터 분할된 M개의 청크들을, 클라이언트 장치로부터 순차적으로 수신하는 단계;
상기 서버가, 상기 청크들의 순차적인 수신과 병렬적으로, 상기 수신된 청크들을 하나로 병합하여, 병합된 파일을 생성하는 단계; 및
상기 M개의 청크들의 수신이 완료되면, 상기 수신된 청크들의 병합 완료 여부와 무관하게, 상기 타깃 파일의 전송 완료를 나타내는 메시지를 상기 클라이언트 장치로 전송하는 단계
를 포함하는,
파일 전송 방법.
A method for transferring files between a client and a server, comprising:
receiving, by the server, M chunks divided from the target file sequentially from the client device;
generating, by the server, a merged file by merging the received chunks into one in parallel with the sequential reception of the chunks; and
When the reception of the M chunks is completed, transmitting a message indicating the completion of transmission of the target file to the client device regardless of whether the merge of the received chunks is completed
containing,
How to transfer files.
제9항에 있어서,
상기 M개의 청크들의 병합이 완료되면, 상기 병합된 파일에 대한 후처리를 실시하여 후처리된 파일을 생성하는 단계;
상기 후처리된 파일을 N개의 청크들로 분할하는 단계; 및
상기 N개의 청크들을 저장소에 저장하는 단계
를 더 포함하는,
파일 전송 방법.
10. The method of claim 9,
generating a post-processed file by performing post-processing on the merged file when merging of the M chunks is completed;
dividing the post-processed file into N chunks; and
Storing the N chunks in storage
further comprising,
How to transfer files.
제10항에 있어서,
상기 타깃 파일에 대한 제공 요청의 수신에 응답하여,
상기 서버가, 상기 N개의 청크들을 상기 저장소로부터 획득하는 단계; 및
상기 서버가, 상기 제공 요청을 전송한 클라이언트 장치에 상기 N개의 청크들을 순차적으로 전송하는 단계
를 더 포함하는,
파일 전송 방법.
11. The method of claim 10,
In response to receiving a request to provide the target file,
obtaining, by the server, the N chunks from the storage; and
Sequentially transmitting, by the server, the N chunks to the client device that has transmitted the provision request
further comprising,
How to transfer files.
청크 생성부; 및
청크 전송부
를 포함하는 컴퓨팅 장치로서,
상기 청크 생성부는, 타깃 파일을 기설정된 사이즈를 가지는 M개의 청크들로 분할하고,
상기 청크 전송부는,
상기 M개의 청크들을 순차적으로 전송하되, 복수의 연결을 통해 N개의 청크들을 병렬적으로 전송하며,
상기 병렬 전송되는 N개의 청크들 중 어느 하나의 전송이 완료되면, 상기 병렬 전송되는 나머지 청크들의 전송 완료 여부와 무관하게, 상기 M개의 청크들 중 미전송된 하나의 청크의 전송을 개시하는,
컴퓨팅 장치.
chunk generation unit; and
chunk transport
A computing device comprising:
The chunk generator divides the target file into M chunks having a preset size,
The chunk transmission unit,
The M chunks are sequentially transmitted, and the N chunks are transmitted in parallel through a plurality of connections,
Upon completion of transmission of any one of the N chunks transmitted in parallel, transmission of one untransmitted chunk among the M chunks is started regardless of whether the transmission of the remaining chunks transmitted in parallel is completed.
computing device.
제12항에 있어서,
상기 컴퓨팅 장치는 웹소켓 통신부를 더 포함하며,
상기 청크 전송부는, HTTP 요청에 의해 수립되는 제1 연결을 통해 상기 청크들을 전송하고,
상기 웹소켓 통신부는, 상기 N개의 청크들의 전송이 완료되면, 상기 제1 연결과는 상이한 제2 연결을 통해 상기 타깃 파일의 전송 완료를 나타내는 메시지를 수신하는,
컴퓨팅 장치.
13. The method of claim 12,
The computing device further includes a websocket communication unit,
The chunk transmitter transmits the chunks through a first connection established by an HTTP request,
wherein the websocket communication unit receives a message indicating completion of transmission of the target file through a second connection different from the first connection when transmission of the N chunks is completed;
computing device.
제13항에 있어서,
상기 청크 전송부는,
상기 타깃 파일 내에서의 각 청크의 위치 정보를 상기 HTTP 요청의 헤더부에 기록하고,
상기 각 청크의 내용을 상기 HTTP 요청의 바디부에 기록하는,
컴퓨팅 장치.
14. The method of claim 13,
The chunk transmission unit,
Recording the location information of each chunk in the target file in the header part of the HTTP request,
Recording the contents of each chunk in the body part of the HTTP request,
computing device.
청크 수신부;
청크 병합부; 및
웹소켓 통신부
를 포함하는 컴퓨팅 장치로서,
상기 청크 수신부는, 타깃 파일로부터 분할된 M개의 청크들을, 클라이언트 장치로부터 순차적으로 수신하고,
상기 청크 병합부는, 상기 청크 수신부와 병렬적으로 동작하여, 상기 청크 수신부가 순차적으로 수신하는 청크들을 하나로 병합하며,
상기 웹소켓 통신부는, 상기 청크 수신부에 의해 상기 M개의 청크들의 수신이 완료되면, 상기 청크 병합부에 의한 병합 완료 여부와 무관하게, 상기 타깃 파일의 전송 완료를 나타내는 메시지를 상기 클라이언트 장치로 전송하는,
컴퓨팅 장치.
chunk receiver;
chunk merging unit; and
websocket communication department
A computing device comprising:
The chunk receiving unit sequentially receives M chunks divided from the target file from the client device,
The chunk merging unit operates in parallel with the chunk receiving unit to merge the chunks sequentially received by the chunk receiving unit into one;
When the reception of the M chunks is completed by the chunk receiving unit, the WebSocket communication unit transmits a message indicating the completion of transmission of the target file to the client device regardless of whether the merge by the chunk merging unit is completed. ,
computing device.
제15항에 있어서,
상기 컴퓨팅 장치는 후처리부를 더 포함하며,
상기 후처리부는,
상기 M개의 청크들의 병합이 완료되면, 상기 병합된 파일에 대한 후처리를 실시하고,
상기 후처리된 파일을 N개의 청크들로 분할하며,
상기 N개의 청크들을 저장하는,
컴퓨팅 장치.
16. The method of claim 15,
The computing device further comprises a post-processing unit,
The post-processing unit,
When merging of the M chunks is completed, post-processing is performed on the merged file,
Splitting the post-processed file into N chunks,
storing the N chunks,
computing device.
명령어를 포함하는 컴퓨터 판독 가능한 비일시적 저장 매체로서,
상기 명령어는 프로세서에 의해 실행될 때, 상기 프로세서로 하여금,
기설정된 사이즈를 가지는 M개의 청크들로 전송 대상 파일을 분할하는 동작을 개시하는 단계;
상기 M개의 청크들을 순차적으로 서버에 전송하되, 상기 서버로의 복수의 연결을 통해 N개의 청크들을 병렬적으로 전송하는 단계; 및
상기 병렬 전송되는 N개의 청크들 중 어느 하나의 전송이 완료되면, 상기 병렬 전송되는 나머지 청크들의 전송 완료 여부와 무관하게, 상기 M개의 청크들 중 미전송된 하나의 청크의 전송을 개시하는 단계
를 포함하는 동작들을 수행하도록 하는,
컴퓨터 판독 가능한 비일시적 저장 매체.
A computer-readable non-transitory storage medium comprising instructions, comprising:
The instructions, when executed by a processor, cause the processor to:
initiating an operation of dividing the transmission target file into M chunks having a preset size;
transmitting the M chunks sequentially to a server, but transmitting the N chunks in parallel through a plurality of connections to the server; and
Initiating transmission of one untransmitted chunk among the M chunks when transmission of any one of the N chunks transmitted in parallel is completed, regardless of whether the transmission of the remaining chunks transmitted in parallel is completed
to perform operations including
A computer-readable non-transitory storage medium.
제17항에 있어서,
상기 명령어는 프로세서에 의해 실행될 때, 상기 프로세서로 하여금,
상기 전송 대상 파일의 전송 완료를 나타내는 메시지를 상기 서버로부터 수신하는 단계
를 포함하는 동작들을 수행하도록 하며,
상기 전송 완료를 나타내는 메시지는, 상기 전송 대상 파일의 전송을 위해 상기 서버와의 사이에 수립된 연결과는 상이한 연결을 통해 수신되는,
컴퓨터 판독 가능한 비일시적 저장 매체.
18. The method of claim 17,
The instructions, when executed by a processor, cause the processor to:
Receiving a message indicating completion of transmission of the transmission target file from the server
to perform operations including
The message indicating the completion of the transmission is received through a connection different from the connection established with the server for transmission of the transmission target file,
A computer-readable non-transitory storage medium.
KR1020200161491A 2020-11-26 2020-11-26 Method and apparatus for transfering file using chunking KR20220073430A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200161491A KR20220073430A (en) 2020-11-26 2020-11-26 Method and apparatus for transfering file using chunking

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200161491A KR20220073430A (en) 2020-11-26 2020-11-26 Method and apparatus for transfering file using chunking

Publications (1)

Publication Number Publication Date
KR20220073430A true KR20220073430A (en) 2022-06-03

Family

ID=81983728

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200161491A KR20220073430A (en) 2020-11-26 2020-11-26 Method and apparatus for transfering file using chunking

Country Status (1)

Country Link
KR (1) KR20220073430A (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101424362B1 (en) 2009-08-28 2014-08-12 애플 인크. Chunked downloads over a content delivery network

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101424362B1 (en) 2009-08-28 2014-08-12 애플 인크. Chunked downloads over a content delivery network

Similar Documents

Publication Publication Date Title
US9531802B2 (en) Data transmission and reception system
CN106453474B (en) Network transmission of large files in unstable network environments
CN108028833A (en) A kind of method, system and the relevant device of NAS data accesses
US20120011101A1 (en) Integrating client and server deduplication systems
CN108958922B (en) Method and device for executing task
US9906581B2 (en) Information processing apparatus, control method, and storage medium
US20140358869A1 (en) System and method for accelerating mapreduce operation
US20140250158A1 (en) Method and device for obtaining file
US10404828B2 (en) Streaming apparatus, streaming method, and streaming service system using the streaming apparatus
US9420070B2 (en) Streaming zip
US9794354B1 (en) System and method for communication between networked applications
CN104184789A (en) File downloading method and device
US20110153882A1 (en) Apparatus and method for transforming content
CN107181774B (en) Data movement between distributed data centers
CN103152606B (en) Video file processing method and device, system
US10834164B2 (en) Virtualizing audio and video devices using synchronous A/V streaming
KR20220073430A (en) Method and apparatus for transfering file using chunking
CN110740138B (en) Data transmission method and device
EP3648418B1 (en) Method and system for optimizing data flow between devices
US20110145440A1 (en) Method of distributed computing electronic device and system applying the method
CN109088907B (en) File transfer method and device
CN113542422B (en) Data storage method and device, storage medium and electronic device
JP5410301B2 (en) Distributed processing system, distributed processing method, and program
JP4648415B2 (en) File transfer system and application server
KR20220053386A (en) Data communication method and apparatus for efficient file transmission