KR101992061B1 - 데이터 전송 장치 및 그 방법 - Google Patents

데이터 전송 장치 및 그 방법 Download PDF

Info

Publication number
KR101992061B1
KR101992061B1 KR1020180137576A KR20180137576A KR101992061B1 KR 101992061 B1 KR101992061 B1 KR 101992061B1 KR 1020180137576 A KR1020180137576 A KR 1020180137576A KR 20180137576 A KR20180137576 A KR 20180137576A KR 101992061 B1 KR101992061 B1 KR 101992061B1
Authority
KR
South Korea
Prior art keywords
data
size
block
communication channel
information
Prior art date
Application number
KR1020180137576A
Other languages
English (en)
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 KR1020180137576A priority Critical patent/KR101992061B1/ko
Application granted granted Critical
Publication of KR101992061B1 publication Critical patent/KR101992061B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/36Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
    • H04L47/365Dynamic adaptation of the packet size
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0894Packet rate
    • 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
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols
    • 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/166IP fragmentation; TCP segmentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Environmental & Geological Engineering (AREA)
  • Communication Control (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

본 발명의 실시예에 따른 데이터 전송 장치 및 그 방법이 제공된다. 데이터 전송 장치는, 데이터 전송을 위해 제2 장치와 제1 통신 채널 및 상기 제1 통신 채널과 상이한 통신 방식을 가지는 제2 통신 채널을 설정하도록 구성된 통신 인터페이스; 메모리; 및 상기 통신 인터페이스와 상기 메모리와 연결되는 프로세서를 포함하고, 상기 프로세서는, 상기 제2 장치로 전송하고자 하는 데이터를 제1 크기를 가지는 복수의 데이터 블록들로 분할하고, 상기 복수의 분할된 데이터 블록들 각각을 상기 제1 크기보다 작은 제2 크기를 가지는 복수의 데이터 조각들로 분할하고, 상기 복수의 분할된 데이터 조각들 각각을 제1 통신 채널을 통해서 상기 제2 장치로 전달하고, 상기 데이터에 대한 전송이 완료되면 상기 제2 통신 채널을 통해서 상기 제2 장치로부터 미전송 데이터 조각에 대한 정보를 포함하는 확인 응답 데이터를 수신하고, 상기 미전송 데이터 조각에 대한 정보에 기반하여 상기 복수의 분할된 데이터 조각들 중 적어도 하나의 미전송 데이터 조각을 확인하고, 상기 확인된 적어도 하나의 전송 데이터 조각을 상기 제1 통신 채널을 통해서 상기 제2 장치로 전달한다.

Description

데이터 전송 장치 및 그 방법{APPARATUS AND METHOD FOR TRANSMITTING FILE DATA}
본 발명은 데이터 전송 장치 및 그 방법에 관한 것으로, 보다 상세하게 고용량의 데이터를 전송하기 위한 장치 및 그 방법에 관한 것이다.
일반적으로 전자 장치들은 TCP(Transmission Control Protocol) 통신 방식 및 UDP(User Datagram Protocol) 통신 방식을 이용하여 다른 전자 장치들과 데이터 송수신을 수행할 수 있다. 상기 TCP 통신 방식은 인터넷 프로토콜 중 하나로, 송신측에서 데이터를 여러 개의 패킷으로 나누어 수신측으로 전송하고, 수신측에서 패킷이 수신되면 패킷 전송된 것을 보장하기 위해 응답(acknowledgment, ACK)을 송신측으로 전달함으로써, 데이터 전송에 대한 신뢰성을 보장해주는 통신 방식이다. 이러한 TCP 통신 방식으로 데이터를 전송하는 경우 데이터 전송에 대한 신뢰성이 보장될 수 있다는 장점이 있으나, 전송 에러가 발생할 경우 패킷 손실에 대한 재전송 및 혼잡 제어를 수행하기 때문에, 손실된 패킷을 재전송하기 위해 데이터 전송 속도를 낮추게 되어 전송 효율이 떨어진다는 단점이 있다. 반면에, UDP 통신 방식은 비열결형 프로토콜로, TCP 통신 방식과 다르게 신호 연결 및 해제 과정을 수행하지 않고, 송신측에서 일방적으로 데이터 패킷을 전송하며, 수신측으로부터 패킷 전송에 따른 응답을 받지 않는다. 이러한 UDP 통신 방식으로 데이터를 전송하는 경우 TCP 통신 방식보다 전송 속도가 빠르기 때문에 전송 효율을 극대화할 수 있다는 장점이 있으나, 송신하는 데이터의 일부가 유실될 가능성, 특히 무선 네트워크 환경에서 데이터 유실 가능성이 증가할 수 있어 패킷 전송의 신뢰성을 보장하지 않는다는 단점이 있다.
최근에는 고용량의 데이터를 전송할 수 있는 네트워크 서비스가 제공됨에 따라 신뢰성과 전송 속도를 동시에 보장할 수 있는 데이터 전송 방법이 요구된다.
본 발명이 해결하고자 하는 과제는 데이터 전송 장치 및 그 방법을 제공하는 것이다.
구체적으로, 본 발명이 해결하고자 하는 과제는 신뢰성과 전송 속도를 동시에 보장하는 고용량의 데이터를 전송하기 위한 데이터 전송 장치 및 그 방법을 제공하는 것이다.
본 발명의 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
전술한 바와 같은 과제를 해결하기 위하여 본 발명의 실시예에 따른 데이터 전송 장치 및 그 방법이 제공된다. 데이터 전송 장치는, 데이터 전송을 위해 제2 장치와 제1 통신 채널 및 상기 제1 통신 채널과 상이한 통신 방식을 가지는 제2 통신 채널을 설정하도록 구성된 통신 인터페이스; 메모리; 및 상기 통신 인터페이스와 상기 메모리와 연결되는 프로세서를 포함하고, 상기 프로세서는, 상기 제2 장치로 전송하고자 하는 데이터를 제1 크기를 가지는 복수의 데이터 블록들로 분할하고, 상기 복수의 분할된 데이터 블록들 각각을 상기 제1 크기보다 작은 제2 크기를 가지는 복수의 데이터 조각들로 분할하고, 상기 복수의 분할된 데이터 조각들 각각을 제1 통신 채널을 통해서 상기 제2 장치로 전달하고, 상기 데이터에 대한 전송이 완료되면 상기 제2 통신 채널을 통해서 상기 제2 장치로부터 미전송 데이터 조각에 대한 정보를 포함하는 확인 응답 데이터를 수신하고, 상기 미전송 데이터 조각에 대한 정보에 기반하여 상기 복수의 분할된 데이터 조각들 중 적어도 하나의 미전송 데이터 조각을 확인하고, 상기 확인된 적어도 하나의 전송 데이터 조각을 상기 제1 통신 채널을 통해서 상기 제2 장치로 전달한다.
데이터 전송 방법은, 데이터 전송을 위해 제2 장치와 제1 통신 채널 및 상기 제1 통신 채널과 상이한 통신 방식을 가지는 제2 통신 채널을 설정하는 단계; 상기 제2 장치로 전송하고자 하는 데이터를 제1 크기를 가지는 복수의 데이터 블록들로 분할하는 단계; 상기 복수의 분할된 데이터 블록들 각각을 상기 제1 크기보다 작은 제2 크기를 가지는 복수의 데이터 조각들로 분할하는 단계; 상기 복수의 분할된 데이터 조각들 각각을 제1 통신 채널을 통해서 상기 제2 장치로 전달하는 단계; 상기 데이터에 대한 전송이 완료되면 상기 제2 통신 채널을 통해서 상기 제2 장치로부터 미전송 데이터 조각에 대한 정보를 포함하는 확인 응답 데이터를 수신하는 단계; 상기 미전송 데이터 조각에 대한 정보에 기반하여 상기 복수의 분할된 데이터 조각들 중 적어도 하나의 미전송 데이터 조각을 확인하는 단계; 및 상기 확인된 적어도 하나의 전송 데이터 조각을 상기 제1 통신 채널을 통해서 상기 제2 장치로 전달하는 단계를 포함한다.
기타 실시예의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명은 신뢰성이 높으면서 전송 속도가 향상된 고용량의 데이터 전송 서비스를 제공할 수 있다.
본 발명에 따른 효과는 이상에서 예시된 내용에 의해 제한되지 않으며, 더욱 다양한 효과들이 본 명세서 내에 포함되어 있다.
도 1은 본 발명의 실시예에 따른 데이터 전송 시스템을 설명하기 위한 개략도이다.
도 2는 본 발명의 실시예에 따른 제1 장치 및 제2 장치를 설명하기 위한 개략도이다.
도 3은 본 발명의 실시예에 따른 제2 통신 채널을 통해서 송수신되는 요청/응답 데이터에 대한 구조를 나타내는 예시도이다.
도 4는 본 발명의 실시예에 따른 송신측 전송 프로그램 모듈을 설명하기 위한 개략도이다.
도 5는 본 발명의 실시예에 따른 수신측 전송 프로그램 모듈을 설명하기 위한 개략도이다.
도 6은 본 발명의 실시예에 따른 재1 장치에서 제2 장치로 데이터를 송신하는 방법을 설명하기 위한 개략적인 순서도이다.
도 7은 본 발명의 실시예에 따른 재2 장치에서 제1 장치로부터 데이터를 수신하는 방법을 설명하기 위한 개략적인 순서도이다.
도 8을 본 발명의 실시예에 따른 제1 장치 및 제2 장치간의 데이터 전송 방법을 설명하기 위한 개략적인 순서도이다.
도 9 내지 도 14는 본 발명의 실시예에 따른 제1 장치 및 제2 장치 사이의 데이터 전송 동작을 설명하기 위한 예시도들이다.
도 15 및 도 16은 본 발명의 실시예에 따른 데이터 전송 방법에 관한 효과를 나타내는 도면들이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
비록 제1, 제2 등이 다양한 구성요소들을 서술하기 위해서 사용되나, 이들 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용하는 것이다. 따라서 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있음은 물론이다.
명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
본 발명의 여러 실시예들의 각각 특징들이 부분적으로 또는 전체적으로 서로 결합 또는 조합 가능하며, 당업자가 충분히 이해할 수 있듯이 기술적으로 다양한 연동 및 구동이 가능하며, 각 실시예들이 서로에 대하여 독립적으로 실시 가능할 수도 있고 연관 관계로 함께 실시 가능할 수도 있다.이하, 첨부된 도면을 참조하여 본 발명의 다양한 실시예들을 상세히 설명한다.
도 1은 본 발명의 실시예에 따른 데이터 전송 시스템을 설명하기 위한 개략도이다.
도 1을 참조하면, 데이터 전송 시스템은 데이터 송수신을 위해 제2 장치(200)와 제1 통신 방식을 가지는 제1 통신 채널 및 제1 통신 방식과 상이한 제2 통신 방식을 가지는 제2 통신 채널을 설정하는 제1 장치(100) 및 제2 장치(200)를 포함할 수 있다. 상기 데이터 전송 시스템은 제1 장치(100)와 제2 장치(200) 사이의 데이터 및 데이터 송수신을 위한 제어 명령 데이터를 전달하는 라우터, 중계기 또는 스위치 등(미도시)을 더 포함할 수 있다. 예를 들어, 제1 장치(100)와 제2 장치(200) 사이에는 다양한 네트워크들이 존재할 수 있다. 상기 제1 통신 방식은 단방향 통신(one-way communication)을 위한 UDP(User Datagram Protocol) 통신 방식일 수 있고, 제2 통신 방식은 양방향 통신(two-way communication)을 위한 TCP(Transmission Control Protocol) 통신 방식일 수 있다. 예를 들어, 제1 장치(100)는 제1 통신 채널을 통해서 음성 데이터, 영상 데이터 및 멀티미디어 데이터 등과 같은 고용량의 데이터를 전송하고, 제2 통신 채널을 통해서 데이터 전송을 위해 사용되는 제어 명령 데이터를 제2 장치(200)로 전달하거나 제2 장치(200)로부터 수신할 수 있다. 상기 제어 명령 데이터는 요청 데이터(예: Pull data) 및 응답 데이터(예: Push data)를 포함할 수 있다.
구체적으로, 제1 장치(100)는 데이터 송수신을 위해 제2 장치(200)와 연결을 수행하고, 제2 통신 채널을 통해서 제2 장치(200)로부터 소정의 데이터에 대한 상세 정보를 요청하기 위한 상세 정보 요청 데이터를 수신하고, 상세 정보를 포함하는 상세 정보 응답 데이터를 제2 장치(200)로 전달할 수 있다. 여기서, 소정의 데이터는 제1 장치(100)에서 제2 장치(200)로 전달하고자 하는 고용량의 데이터일 수 있다. 상기 상세 정보는 소정의 데이터의 크기, 소정의 데이터의 이름, 데이터 블록(block)의 크기(예: 제1 크기), 데이터 조각(slice)의 크기(예: 제2 크기) 등을 포함할 수 있다. 예를 들어, 데이터 조각은 UDP 데이터 패킷으로 캡슐화(encapsulate)되어 제1 통신 채널(예: UDP 통신 채널)을 통해서 제2 장치(200)로 전달될 수 있다. 상기 UDP 데이터 패킷은 패킷을 생성한 제1 장치(100)의 어플리케이션 포트 번호(source port), 패킷을 수신하는 제2 장치(200)의 어플리케이션 포트 번호(destination port), UDP 패킷 헤더와 데이터(payload)를 포함하는 전체 길이(length), 전송된 패킷(또는 파일 조각)의 손상 여부를 나타내는 체크섬(checksum)을 포함할 수 있다.
상기 제1 장치(100)는 제2 장치(200)로 전송하고자 하는 데이터를 제1 크기를 가지는 복수의 데이터 블록들로 분할하고, 복수의 데이터 블록들 각각을 제1 크기보다 작은 제2 크기를 가지는 복수의 데이터 조각들로 분할할 수 있다. 예를 들어, 전송하고자 하는 데이터의 크기가 1Gbyte인 경우 제1 장치(100)는 데이터를 8Mbyte의 데이터 블록들로 분할하고, 분할된 데이터 블록을 1Kbyte의 데이터 조각들로 분할할 수 있다.
상기 제1 장치(100)는 분할된 데이터 조각들 각각을 제1 통신 채널을 통해서 제2 장치(200)로 전달하고, 데이터 조각들에 대한 전송이 완료되면 제2 장치(200)로부터의 데이터 조각들에 대한 확인 응답 데이터의 수신을 대기할 수 있다. 예를 들어, 데이터 조각들은 적어도 하나의 데이터 블록에 해당하거나 데이터 전체에 해당할 수 있다.
제2 통신 채널을 통해서 제2 장치(200)로부터 확인 응답 데이터가 수신되면 제1 장치(100)는 확인 응답 데이터에 미전송 데이터 조각에 대한 정보가 포함되는지를 확인할 수 있다. 여기서, 확인 응답 데이터는 특정 데이터 블록에 해당하는 데이터 조각들의 전송이 정상적으로 확인됨을 나타내는 제어 명령 데이터일 수 있다. 상기 제어 명령 데이터는 데이터 조각의 전송을 나타내는 전송 데이터 조각에 대한 정보 또는/및 데이터 조각의 미전송을 나타내는 미전송 데이터 조각에 대한 정보를 포함하는 데이터 조각들에 대한 정보를 포함할 수 있다. 상기 전송 또는 미전송 데이터 조각에 대한 정보는 데이터 조각의 전송 또는 미전송을 나타내는 비트들을 포함할 수 있다. 예를 들어, 비트들은 데이터 조각이 전송된 경우 '1'이고, 데이터 조각이 미전송된 경우 '0'일 수 있다. 다양한 실시예에서 데이터 조각에 대한 정보는 비트맵(bitmap)으로서 표현될 수도 있다. 상기 비트맵은 데이터 조각이 미전송된 것을 나타내는 스킵 비트들(skipped bits)을 포함할 수 있다. 다양한 실시예에서 제1 장치(100)로부터 데이터 조각들이 모두 전송된 경우 데이터 조각에 대한 정보는 미전송 데이터 조각에 대한 정보를 포함하지 않을 수 있다.
확인 응답 데이터에 미전송 데이터 조각에 대한 정보가 포함된 경우 제1 장치(100)는 미전송 데이터 조각에 대한 정보에 기반하여 미전송 데이터 조각을 확인하고, 확인된 미전송 데이터 조각을 제1 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다. 데이터에 대응하는 모든 데이터 조각들의 전송이 완료되면 제1 장치(100)는 제2 통신 채널을 통해서 데이터 전송의 완료를 나타내는 전송 완료 데이터를 제2 장치(200)로 전달할 수 있다. 여기서, 전송 완료 데이터는 EOF(end of frame) 데이터일 수 있다.
확인 응답 데이터에 미전송 데이터 조각에 대한 정보가 포함되지 않은 경우 제1 장치(100)는 제2 통신 채널을 전송 완료 데이터를 제2 장치(200)로 전달할 수 있다. 예를 들어, 전송 완료된 데이터 조각들이 소정의 데이터의 마지막 데이터 블록에 해당하는 경우 제1 장치(100)는 제2 통신 채널을 통해서 전송 완료 데이터를 제2 장치(200)로 전달하고, 소정의 데이터에 대한 송신을 완료할 수 있다.
다양한 실시예에서 전송 완료된 데이터 조각들이 마지막 데이터 블록에 해당하지 않는 경우 제1 장치(100)는 다음 데이터 블록에 해당하는 데이터 조각들을 제1 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다. 소정의 데이터의 마지막 데이터 블록에 대한 송신이 완료되면 제1 장치(100)는 제2 통신 채널을 통해서 제2 장치(200)로 전송 완료 데이터를 전달하고, 소정의 데이터에 대한 송신을 완료할 수 있다.
제2 통신 채널을 통해서 제2 장치(200)로부터 확인 응답 데이터가 수신되지 않으면 제1 장치(100)는 제2 통신 채널을 통해서 제2 장치(200)로 확인 응답 데이터를 요청하기 위한 확인 응답 요청 데이터를 전달할 수 있다. 이에 대한 응답으로 제2 장치(200)로부터 확인 응답 데이터가 수신되면 제1 장치(100)는 상술한 바와 같이 확인 응답 데이터에 미전송 데이터 조각에 대한 정보가 포함되는지에 따라 미전송 데이터 조각을 제2 장치(200)로 전달하거나, 다음 데이터 블록에 해당하는 데이터 조각들을 제2 장치(200)로 전달하거나, 전송 완료 데이터를 제2 장치(200)로 전달하고, 소정의 데이터에 대한 송신을 완료할 수 있다.
다양한 실시예에서 제1 장치(100)는 데이터 블록에 대한 정보를 포함하는 블록 정보 응답 데이터를 주기적으로 생성하고, 생성된 블록 정보 응답 데이터를 제2 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다. 여기서, 데이터 블록에 대한 정보는 데이터 블록의 ID, (변경된) 크기, 데이터 블록에 대응하는 데이터 조각의 (변경된) 크기 등을 포함할 수 있다. 다양한 실시예에서 제1 장치(100)는 제2 통신 채널을 통해서 제2 장치(200)로부터 블록 정보 요청 데이터를 수신하고, 수신된 블록 정보 요청 데이터에 대한 응답으로 블록 정보 응답 데이터를 제2 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다. 상기 블록 정보 요청 데이터는 제1 장치(100)로부터 다음에 전송되는 데이터 블록에 대한 정보를 요청하기 위한 제어 명령 데이터일 수 있다. 구체적으로, 제1 장치(100)는 제1 통신 채널에 대한 전송 효율을 확인하고, 확인된 전송 효율에 따라 데이터 블록의 크기 또는 데이터 조각의 크기를 변경할 수 있다. 예를 들어, 제1 장치(100)는 첫번째 데이터 블록의 전송이 완료되면 제2 장치(200)로부터 확인 응답 메시지를 수신할 수 있다. 상기 제1 장치(100)는 확인 응답 메시지에 포함된 미전송 데이터 조각에 대한 정보에 기반하여 적어도 하나의 미전송 데이터 조각을 확인할 수 있다.
확인 응답 메시지에 미전송 데이터 조각에 대한 정보가 포함되지 않거나, 확인된 적어도 하나의 미전송 데이터 조각의 크기(또는 개수)가 기 설정된 제1 임계 크기(또는 제1 임계 개수)보다 작으면 제1 장치(100)는 제1 통신 채널에 대한 전송 효율이 높다고 판단하여 두번째로 전송하고자 하는 데이터 블록의 크기를 첫번째로 전송한 데이터 블록의 크기보다 큰 크기로 변경하거나, 두번째로 전송하고자 하는 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 첫번째로 전송한 데이터 블록에 해당하는 데이터 조각들 각각의 크기보다 큰 크기로 변경할 수 있다. 상기 제1 장치(100)는 확인된 적어도 하나의 미전송 데이터 조각의 크기(또는 개수)가 기 설정된 제2 임계 크기(또는 제2 임계 개수)보다 크면 제1 통신 채널에 대한 전송 효율이 낮다고 판단할 수 있다. 이러한 경우 제1 장치(100)는 두번째로 전송하고자 하는 데이터 블록의 크기를 첫번째로 전송한 데이터 블록의 크기보다 작은 크기로 변경하거나, 두번째로 전송하고자 하는 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 첫번째로 전송한 데이터 블록에 해당하는 데이터 조각들 각각의 크기보다 작은 크기로 변경할 수 있다. 상기 제1 장치(100)는 두번째 데이터 블록에 대한 ID, (변경된) 크기 및 두번째 데이터 블록에 해당하는 데이터 조각의 (변경된) 크기 등을 포함하는 데이터 블록에 대한 정보를 포함하는 블록 정보 응답 데이터를 생성하고, 생성된 블록 정보 응답 데이터를 제2 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다. 상기 제1 장치(100)는 변경된 크기의 데이터 블록에 해당하는 데이터 조각들 각각을 제2 통신 채널을 통해서 제2 장치(200)로 전달하거나 변경된 크기의 데이터 조각들 각각을 제2 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다. 이와 같이 데이터 블록의 크기 또는 데이터 조각의 크기가 변경되는 경우 이를 제2 장치(200)에게 알리기 위해 제1 장치(100)는 제1 통신 채널의 전송 효율을 주기적으로 판단할 수 있다. 다시 말해서, 제1 장치(100)는 주기적으로 전송 효율을 판단하고, 판단된 전송 효율에 의해 데이터 블록 또는 데이터 조각의 크기를 변경하며, 데이터 블록 또는 데이터 조각의 크기가 변경될 때마다 블록 정보 응답 데이터를 생성하여 제2 통신 채널을 통해서 제2 장치(200)로 블록 정보 응답 데이터를 전달할 수 있다.
다양한 실시예에서 제2 장치(200)로부터 수신된 블록 정보 요청 데이터는 제2 장치(200)에 의해서 산출된 전송 데이터 조각들의 개수 또는/및 미전송 데이터 조각에 대한 정보를 더 포함할 수 있다. 여기서, 전송 데이터 조각들의 수는 데이터 블록의 크기 및 전송된 데이터 조각들의 크기에 기반하여 산출되며, 제2 장치(200)가 수신한 유효한 데이터 조각들의 개수일 수 있다. 상기 제1 장치(100)는 제2 장치(200)로부터의 확인 응답 데이터에 대한 수신을 대기할 필요 없이 제2 장치(200)로부터 주기적으로 수신되는 블록 정보 요청 데이터에 포함된 전송 데이터 조각의 개수를 이용하여 제1 통신 채널에 대한 전송 효율을 판단할 수 있다. 예를 들어, 제2 장치(200)가 수신한 유효한 데이터 조각들의 개수가 기 설정된 제3 임계 개수 이하인 경우 제1 통신 채널에 대한 전송 효율이 낮다고 판단될 수 있고, 제2 장치(200)가 수신한 유효한 데이터 조각들의 개수가 기 설정된 제4 임계 개수 이상인 경우 제1 통신 채널에 대한 전송 효율이 높다고 판단될 수 있다. 이와 같이 판단된 전송 효율에 따라 제1 장치(100)는 데이터 블록의 크기 또는/및 데이터 조각의 크기를 이전에 전송된 데이터 블록의 크기 또는/및 데이터 조각의 크기보다 크거나 작게 변경하고, 데이터 블록의 변경된 크기 또는/및 데이터 조각의 변경된 크기 등을 포함하는 데이터 블록에 대한 정보를 포함하는 블록 정보 응답 데이터를 제2 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다.
다양한 실시예에서 제1 장치(100)는 특정 데이터 블록을 전송하기 위해서 소요된 시간 및 특정 데이터 블록의 크기에 기반하여 특정 데이터 블록에 대한 전송 속도를 산출하고, 산출된 전송 속도에 따라 다음에 전송하고자 하는 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 변경할 수 있다. 예를 들어, 특정 데이터 블록을 전송하기 위해 소요된 시간은 특정 데이터 블록의 첫번째 데이터 조각을 전송한 시간 및 특정 데이터 블록의 마지막 데이터 조각을 전송한 시간을 이용하여 산출될 수 있다. 다양한 실시예에서 특정 데이터 블록을 전송하는데 소요된 시간은 특정 데이터 블록의 첫번째 데이터 조각을 전송한 시간 및 특정 데이터 블록의 마지막 데이터 조각을 전송하고 제2 장치(200)로부터 확인 응답 데이터를 수신한 시간을 이용하여 산출될 수도 있다. 이와 같이 산출된 전송 속도가 기 설정된 제1 임계 전송 속도보다 작으면 제1 장치(100)는 제1 통신 채널에 대한 전송 효율이 낮다고 판단할 수 있다. 이러한 경우 제1 장치(100)는 다음에 전송하고자 하는 데이터 블록의 크기를 이전에 전송한 특정 데이터 블록의 크기보다 더 작게 변경하거나, 다음에 전송하고자 하는 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 이전에 전송한 특정 데이터 조각에 해당하는 데이터 조각들 각각의 크기보다 더 작게 변경할 수 있다. 산출된 전송 속도가 기 설정된 제2 임계 전송 속도보다 크면 제1 장치(100)는 제1 통신 채널에 대한 전송 효율이 높다고 판단할 수 있다. 이러한 경우 제1 장치(100)는 다음에 전송하고자 하는 데이터 블록의 크기를 이전에 전송한 특정 데이터 블록의 크기보다 더 크게 변경하거나, 다음에 전송하고자 하는 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 이전에 전송한 특정 데이터 조각에 해당하는 데이터 조각들 각각의 크기보다 더 크게 변경할 수 있다. 상기 제1 장치(100)는 데이터 블록의 변경된 크기 또는/및 데이터 조각의 변경된 크기 등을 포함하는 데이터 블록에 대한 정보를 포함하는 블록 정보 응답 데이터를 생성하고, 생성된 블록 정보 응답 데이터를 제2 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다.
다양한 실시예에서 제1 장치(100)는 제2 장치(200)로 전송된 데이터 조각들에 대한 손실이 발생되거나, 제2 장치(200)로 특정 데이터 블록에 해당하는 데이터 조각들의 전송이 완료된 이후에 제2 장치(200)로부터 확인 응답 데이터가 수신되지 않는 등의 혼잡 현상(Congestion)이 발생되면 제1 장치(100)의 혼잡 윈도우 크기를 조절하고, 조절된 혼잡 윈도우 크기에 따라 다음에 전송하고자 하는 데이터 블록의 크기 또는/및 다음에 전송하고자 하는 데이터 조각의 크기를 변경할 수 있다. 상기 혼잡 현상은 제1 장치(100)와 제2 장치(200)간의 데이터를 전달하는 라우터에서 버퍼가 오버플로우되어 패킷 손실이 발생되거나, 라우터 버퍼에서 긴 큐잉 지연(Queueing delay)이 발생된 경우 등을 포함할 수 있다. 상기 제1 장치(100)는 제2 장치(200)로부터 수신된 블록 정보 요청 데이터에 포함된 전송 데이터 조각의 개수와 제1 장치(100)가 전송한 데이터 조각의 개수를 비교하여 서로 다르면 제2 통신 채널을 통해서 제2 장치(200)로 확인 요청 데이터를 전달할 수 있다. 제2 통신 채널을 통해서 제2 장치(200)로부터 확인 요청 데이터가 수신되면 제1 장치(100)는 확인 요청 데이터에 포함된 미전송 데이터 조각에 대한 정보에 기반하여 미전송 데이터 조각들을 확인할 수 있다. 확인된 미전송 데이터 조각들이 연속적으로 특정 개수 이상인 경우 제1 장치(100)는 혼잡이 발생된 것으로 판단할 수 있다. 이러한 경우 제1 장치(100)는 특정 데이터 블록을 전송하기 위해 소요된 시간 및 특정 데이터 블록에 해당하는 복수의 데이터 조각들의 개수에 기반하여 다음에 전송하고자 하는 데이터 블록에 대한 제1 장치(100)의 혼잡 윈도우 크기를 산출하고, 산출된 혼잡 윈도우 크기에 따라 다음에 전송하고자 하는 데이터 블록에 해당하는 데이터 조각들의 크기를 변경할 수 있다. 예를 들어, 특정 데이터 블록을 전송하기 위한 소요된 시간이 2초이고, 특정 데이터 블록에 해당하는 복수의 데이터 조각들에 대한 개수가 8192개인 경우 다음에 전송하고자 하는 데이터 블록에 대한 제1 장치(100)의 혼잡 윈도우 크기는 4086개일 수 있다. 상기 제1 장치(100)는 산출된 혼잡 윈도우 크기에 따라 데이터 블록의 크기 또는/및 데이터 조각의 크기를 변경하고, 데이터 블록의 변경된 크기 또는/및 데이터 조각의 변경된 크기 등을 포함하는 데이터 블록에 대한 정보를 포함하는 블록 정보 응답 데이터를 생성한 후 생성된 블록 정보 응답 데이터를 제2 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다.
상기 제1 장치(100)는 변경된 크기의 데이터 블록에 해당하는 데이터 조각들을 제1 통신 채널을 통해서 제2 장치(200)로 전달하거나, 변경된 크기의 각 데이터 조각을 제1 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다.
다음으로, 제2 장치(200)는 데이터 송수신을 위해 제1 장치(100)와 연결을 수행하여 제2 통신 채널을 통해서 제1 장치(100)로 소정의 데이터에 관한 상세 정보를 요청하기 위한 상세 정보 요청 메시지를 전달하고, 제1 장치(100)로부터 상세 정보를 포함하는 상세 정보 응답 메시지를 수신할 수 있다. 상기 상세 정보는 소정의 데이터의 크기, 소정의 데이터의 이름, 데이터 블록의 크기, 데이터 조각의 크기 등을 포함할 수 있다.
구체적으로, 제2 장치(200)는 상세 정보에 포함된 데이터의 크기, 데이터 블록의 크기 및 데이터 조각의 크기에 기반하여 제1 장치(100)로부터 전송될 수 있는 데이터에 해당하는 데이터 블록들의 개수 및 각 데이터 블록에 해당하는 데이터 조각들의 개수를 확인할 수 있다. 예를 들어, 하나의 데이터의 크기가 1Gbyte이고, 하나의 데이터 블록의 크기가 8Mbyte이며, 하나의 데이터 조각의 크기가 1Kbyte인 경우 제2 장치(200)는 제1 장치(100)로부터 전송될 수 있는 데이터 블록의 개수가 128개이고, 하나의 데이터 블록에 해당하는 데이터 조각의 개수가 8192개인 것을 확인할 수 있다.
상기 제2 장치(200)는 제1 통신 채널을 통해서 제1 장치(100)로부터 데이터 조각을 수신하여 저장하고, 데이터 조각의 전송 또는 미전송을 나타내는 데이터 조각에 대한 정보를 생성할 수 있다. 상기 제2 장치(200)는 특정 데이터 블록에 해당하는 데이터 조각들의 수신이 완료될 때까지 데이터 조각을 수신하여 저장하고, 데이터 조각의 전송 또는 미전송을 나타내는 데이터 조각의 정보를 생성할 수 있다. 특정 데이터 블록에 해당하는 데이터 조각들의 수신이 완료되면 제2 장치(200)는 데이터 조각의 정보를 포함하는 확인 응답 데이터를 생성하고, 생성된 확인 응답 데이터를 제2 통신 채널을 통해서 제1 장치(100)로 전달할 수 있다.
구체적으로, 제1 통신 채널을 통해서 상기 제1 장치(100)로부터 첫번째 데이터 조각이 수신되면 제2 장치(200)는 수신된 첫번째 데이터 조각을 저장하고, 첫번째 데이터 조각의 전송을 나타내는 정보를 생성할 수 있다. 기 설정된 시간 동안 다음 데이터 조각의 수신을 대기하고, 제1 통신 채널을 통해서 제1 장치(100)로부터 두번째 데이터 조각이 수신되면 제2 장치(200)는 수신된 두번째 데이터 조각을 저장하고, 두번째 데이터 조각의 전송을 나타내는 정보를 생성할 수 있다. 기 설정된 시간 동안 다음 데이터 조각의 수신을 대기하고, 기 설정된 시간 동안 제1 통신 채널을 통해서 세번째 데이터 조각이 수신되지 않으면 제2 장치(200)는 세번째 데이터 조각의 미전송을 나타내는 정보를 생성할 수 있다. 특정 데이터 블록에 해당하는 데이터 조각들의 수신이 완료될 때까지 제2 장치(200)는 특정 데이터 블록에 해당하는 데이터 조각들 각각을 수신하여 저장하고, 데이터 조각들 각각에 대한 전송 또는 미전송을 나타내는 비트들을 포함하는 데이터 조각들에 대한 정보를 생성할 수 있다.
특정 데이터 블록에 해당하는 데이터 조각들의 전송이 완료되면 제2 장치(200)는 확인 응답 데이터를 생성하고, 생성된 확인 응답 데이터를 제2 통신 채널을 통해서 제1 장치(100)로 전달할 수 있다. 상기 확인 응답 데이터는 데이터 조각들에 대한 정보를 포함하는데, 상기 데이터 조각들에 대한 정보는 전송 데이터 조각에 대한 정보 및 미전송 데이터 조각에 대한 정보를 중 적어도 하나를 포함할 수 있다. 만약 데이터 조각들의 전송이 정상적으로 이루어진 경우 데이터 조각들에 대한 정보는 전송 데이터에 대한 정보만을 포함할 수 있다.
다양한 실시예에서 제2 장치(200)는 수신된 데이터 조각의 손상 여부를 확인하고, 수신된 데이터 조각이 손상된 경우 해당 데이터 조각을 삭제하여 해당 데이터 조각이 미전송 데이터 조각으로서 미전송 데이터 조각에 대한 정보를 생성할 수 있다. 예를 들어, UDP 데이터 패킷으로 캡슐화된 데이터 조각은 전송된 패킷의 손상 여부를 나타내는 체크섬 정보를 포함하므로, 제2 장치(200)는 특정 데이터 조각이 수신된 경우에도 체크섬 정보를 이용하여 수신된 데이터 조각이 손상된 데이터 조각인지를 판단하고, 손상된 데이터 조각으로 확인되면 해당 데이터 조각을 버림으로써, 해당 데이터 조각을 미전송 데이터 조각으로서 판단할 수 있다. 상기 제2 장치(200)는 제1 장치(100)로부터 손상된 데이터 조각을 재전송하기 위해 해당 데이터 조각에 대응하여 미전송 데이터 조각에 대한 정보를 생성할 수 있다.
다양한 실시예에서 제2 장치(200)는 데이터 블록에 해당하는 모든 데이터 조각들에 대한 전송이 완료되거나, 데이터에 해당하는 모든 데이터 조각들에 대한 전송이 완료되면 이에 대한 확인 응답 데이터를 생성하고, 생성된 확인 응답 메시지를 제2 통신 채널을 통해서 제1 장치(100)로 전달할 수 있다. 이러한 경우 소정의 데이터가 고용량일수록 데이터 블록의 개수 또는 데이터 조각의 개수가 많기 때문에, 이에 따라 제1 장치(100)로 전송되는 확인 응답 데이터의 전송 빈도수가 높아질 수 있다. 이와 같이 확인 응답 데이터의 전송 빈도수가 높아지면 제2 통신 채널에 트래픽이 발생되어 제2 통신 채널에 대한 확인 응답 데이터의 혼잡 현상이 발생될 수 있다. 이에, 확인 응답 데이터의 전송 빈도수를 줄이는 경우 확인 응답 데이터에 포함되는 미전송 데이터 조각에 대한 정보의 크기가 커지고, 이에 따라 확인 응답 데이터의 크기 또한 커질 수 있다. 이와 같이 확인 응답 데이터의 크기가 커지면 확인 응답 데이터에 대한 전송 속도가 느려지므로, 제2 통신 채널에 대한 혼잡 현상이 발생될 수 있다. 따라서, 제2 통신 채널에 대한 혼잡 현상을 줄이기 위해 제2 장치(200)는 특정 데이터 블록에 속하는 데이터 조각들에 대한 확인 응답 데이터를 압축(compress) 또는 소형화(compact)하거나, 확인 응답 데이터의 전송 빈도수를 제어할 수 있다. 예를 들어, 제2 장치(200)는 미전송 데이터 조각에 대한 정보를 총 24개의 비트로 나타내어 확인 응답 데이터의 크기를 줄이거나, 미전송 데이터 조각에 대한 정보의 크기 및 제1 통신 채널 용량에 기반하여 확인 응답 데이터의 전송 빈도수를 산출하고, 산출된 전송 빈도수에 의해 확인 응답 데이터의 전송을 제어할 수 있다.
상기 제2 장치(200)는 제1 통신 채널을 통해서 제1 장치(100)로부터 적어도 하나의 미전송 데이터 조각을 수신하고, 수신된 적어도 하나의 미전송 데이터 조각을 저장할 수 있다. 소정의 데이터에 해당하는 모든 데이터 조각들의 전송이 완료되면 제2 장치(200)는 제1 장치(100)로부터의 전송 완료 데이터에 대한 수신을 대기할 수 있다. 제2 통신 채널을 통해서 제1 장치(100)로부터 전송 완료 데이터가 수신되면 제2 장치(200)는 소정의 데이터에 대한 수신을 완료할 수 있다.
다양한 실시예에서 제2 장치(200)는 적어도 하나의 미전송 데이터 조각에 대한 수신이 완료되면 이에 대한 확인 응답 데이터를 생성하여 제2 통신 채널을 통해서 제1 장치(100)로 전달할 수 있다. 제1 통신 채널을 통해서 제1 장치(100)로부터 전송 완료 데이터가 수신되면 제2 장치(200)는 데이터에 대한 수신을 완료할 수 있다.
다양한 실시예에서 제2 장치(200)는 제2 통신 채널을 통해서 제1 장치(100)로부터 데이터 블록의 변경된 크기 또는/및 데이터 조각의 변경된 크기 등을 포함하는 데이터 블록에 대한 정보를 포함하는 블록 정보 응답 데이터를 주기적으로 수신할 수 있다. 다양한 실시예에서 제2 장치(200)는 데이터 블록에 대한 정보를 요청하기 위한 블록 정보 요청 데이터를 주기적으로 생성하고, 생성된 블록 정보 요청 데이터를 제2 통신 채널을 통해서 제1 장치(100)로 전달할 수도 있다. 다양한 실시예에서 제1 통신 채널의 전송 효율에 의해서 데이터 블록의 크기 또는/및 데이터 조각의 크기가 변경되거나, 데이터 블록의 전송 속도에 따라 데이터 블록의 크기 또는/및 데이터 조각의 크기가 변경되거나, 혼잡 현상이 발생됨에 따라 데이터 블록의 크기 또는/및 데이터 조각의 크기가 변경되면 제2 장치(200)는 제2 통신 채널을 통해서 제1 장치(100)로부터 데이터 블록의 변경된 크기 또는/및 데이터 조각의 변경된 크기 등을 포함하는 데이터 블록에 대한 정보를 포함하는 블록 정보 응답 데이터를 수신할 수 있다.
도 2는 본 발명의 실시예에 따른 제1 장치 및 제2 장치를 설명하기 위한 개략도이다.
도 2를 참조하면, 제1 장치(100)는 통신 모듈(110), 메모리(120) 및 프로세서(130)를 포함하고, 제2 장치(200)는 통신 모듈(210), 메모리(220) 및 프로세서(230)를 포함할 수 있다.
먼저, 제1 장치(100)에 대해서 살펴보면, 통신 모듈(110)은 제1 장치(100)가 외부 장치와 통신 가능하도록 연결한다. 상기 통신 모듈(110)은 제1 통신 방식을 가지는 제1 통신 채널을 통해서 제2 장치(200)와의 데이터 송수신을 수행하고, 제1 통신 방식과 상이한 제2 통신 방식을 가지는 제2 통신 채널을 통해서 제2 장치(200)와의 데이터 송수신을 수행할 수 있다. 예를 들어, 제1 통신 방식은 단방향 통신 방식이고, 제2 통신 방식은 양방향 통신 방식일 수 있다.
구체적으로, 통신 모듈(110)은 제1 통신 채널을 통해서 제2 장치(200)로 데이터 조각을 전달할 수 있다. 상기 통신 모듈(110)은 제1 통신 채널을 통해서 제2 장치(200)로 미전송 데이터 조각을 전달할 수 있다.
상기 통신 모듈(110)은 제2 통신 채널을 통해서 제2 장치(200)로 전송에 관련된 제어 명령 데이터를 전달하거나, 제2 장치(200)로부터 전송에 관련된 제어 명령 데이터를 수신할 수 있다. 상기 제어 명령 데이터는 상세 정보 요청/응답 데이터, 데이터 조각에 대한 확인 요청/응답 데이터 또는 블록 정보 요청/응답 데이터를 포함할 수 있다. 예를 들어, 통신 모듈(110)은 제2 통신 채널을 통해서 제2 장치(200)로부터 상세 정보 요청 데이터를 수신하고, 제2 장치(200)로 상세 정보 응답 데이터를 전달할 수 있다. 상기 통신 모듈(110)은 제2 통신 채널을 통해서 제2 장치(200)로 데이터 조각에 대한 확인 요청 데이터를 전달하고, 제2 장치(200)로부터 데이터 조각에 대한 확인 응답 데이터를 수신할 수 있다. 상기 통신 모듈(110)은 제2 통신 채널을 통해서 제2 장치(200)로부터 블록 정보 요청 데이터를 수신하고, 제2 장치(200)로 블록 정보 응답 데이터를 전달할 수 있다. 상기 통신 모듈(110)은 전송 완료 데이터를 제2 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다.
메모리(120)는 데이터 송신을 위한 다양한 데이터를 저장할 수 있다. 구체적으로, 메모리(120)는 제2 장치(200)로 전송하고자 하는 소정의 데이터를 저장하고, 소정의 데이터를 분할한 복수의 데이터 블록들에 대한 정보(예: 데이터 블록의 크기), 데이터 블록을 분할한 복수의 데이터 조각들에 대한 정보(예: 데이터 조각의 크기)를 저장할 수 있다. 예를 들어, 메모리(120)는 데이터 패킷을 버퍼링하기 위한 적어도 하나의 버퍼(Buffer)를 포함할 수 있다.
프로세서(130)는 통신 모듈(110) 및 메모리(120)와 동작 가능하게 연결되며, 데이터 송신을 위한 다양한 명령들을 수행할 수 있다. 구체적으로, 프로세서(130)는 데이터 송수신을 위해 제2 장치(200)와 연결을 수행하는데, 제1 통신 방식을 가지는 제1 통신 채널을 설정하고, 제2 통신 방식을 가지는 제2 통신 채널을 설정할 수 있다. 상기 프로세서(130)는 제2 장치(200)로 전송하고자 하는 데이터에 관한 상세 정보를 포함하는 상세 정보 응답 데이터를 생성하고, 생성된 상세 정보 응답 데이터를 제2 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다. 상기 상세 정보는 데이터의 크기, 데이터의 이름, 데이터 블록의 크기, 데이터 조각의 크기 등을 포함할 수 있다. 다양한 실시예에서 프로세서(130)는 제2 통신 채널을 통해서 제2 장치(200)로부터 상세 정보를 요청하는 상세 정보 요청 데이터를 수신하고, 이에 대한 응답으로 상세 정보 응답 데이터를 제2 장치(200)로 전달할 수도 있다.
상기 프로세서(130)는 제2 장치(200)로 전송하고자 하는 데이터를 제1 크기를 가지는 복수의 데이터 블록들로 분할하고, 제1 크기로 분할된 복수의 데이터 블록들 각각을 제1 크기보다 작은 제2 크기를 가지는 복수의 데이터 조각들로 분할 수 있다.
상기 프로세서(130)는 특정 데이터 블록에 해당하는 제2 크기로 분할된 복수의 데이터 조각들 각각을 제1 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다. 예를 들어, 프로세서(130)는 제2 크기의 데이터 조각을 캡슐화한 데이터 패킷을 생성하고, 생성된 데이터 패킷을 제1 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다. 예를 들어, 데이터 패킷은 UDP 데이터 패킷의 구조를 가질 수 있다.
상기 프로세서(130)는 특정 데이터 블록에 해당하는 복수의 데이터 조각들에 대한 전송이 완료되면 제2 장치(200)로부터 해당 데이터 블록에 대한 전송 확인을 나타내는 확인 응답 데이터의 수신을 대기할 수 있다. 다양한 실시예에서 프로세서(130)는 복수의 데이터 조각들에 대한 전송이 완료되면 해당 데이터 블록에 대한 전송 확인을 요청하기 위한 확인 요청 데이터를 제2 통신 채널을 통해서 제2 장치(200)로 전달할 수도 있다. 제2 통신 채널을 통해서 제2 장치(200)로부터 확인 응답 데이터가 수신되면 프로세서(130)는 확인 응답 데이터에 미전송 데이터 조각에 대한 정보가 포함되는지를 확인하고, 미전송 데이터 조각에 대한 정보가 포함되면 미전송 데이터 조각에 대한 정보에 기반하여 복수의 데이터 조각들 중 미전송된 적어도 하나의 데이터 조각을 확인할 수 있다. 상기 프로세서(130)는 미전송된 적어도 하나의 데이터 조각을 제1 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다. 확인 응답 데이터에 미전송 데이터 조각에 대한 정보가 포함되지 않으면 프로세서(130)는 다음 데이터 블록에 해당하는 복수의 데이터 조각들 각각을 제1 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다. 다양한 실시예에서 특정 데이터 블록이 데이터의 마지막 데이터 블록인 경우 프로세서(130)는 제2 통신 채널을 통해서 제2 장치(200)로 전송 완료 데이터를 전송할 수도 있다.
다양한 실시예에서 프로세서(130)는 제1 통신 채널에 대한 전송 효율을 확인하고, 확인된 전송 효율에 따라 데이터 블록의 크기 또는 데이터 조각의 크기를 변경할 수 있다. 구체적으로, 프로세서(130)는 특정 데이터 블록의 전송이 완료되면 제1 통신 채널에 대한 전송 효율을 확인하는데, 다음의 2가지 방법으로 전송 효율을 확인할 수 있다. 제1 방법으로, 프로세서(130)는 제2 장치(200)로부터 수신된 확인 응답 메시지에 포함된 미전송 데이터 조각에 대한 정보를 이용하여 제1 통신 채널에 대한 전송 효율이 높거나 낮은지를 확인할 수 있다. 예를 들어, 프로세서(130)는 미전송 데이터 조각에 대한 정보에 기반하여 미전송된 적어도 하나의 데이터 조각을 확인하고, 확인된 적어도 하나의 미전송 데이터 조각의 개수가 제1 임계 개수보다 작으면 제1 통신 채널에 대한 전송 효율이 높다고 판단하여 다음으로 전송하고자 하는 데이터 블록의 크기를 특정 데이터 블록의 크기보다 큰 크기로 변경하거나, 다음으로 전송하고자 하는 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 특정 데이터 블록에 해당하는 데이터 조각들 각각의 크기보다 큰 크기로 변경할 수 있다. 제2 방법으로, 프로세서(130)는 제2 장치(200)로부터 수신된 블록 정보 요청 데이터에 포함된 전송 데이터 조각의 수 또는/및 미전송 데이터 조각에 대한 정보를 이용하여 제1 통신 채널에 대한 전송 효율이 높거나 낮은지 확인할 수 있다. 예를 들어, 프로세서(130)는 블록 정보 요청 데이터에 포함된 전송 데이터 조각의 개수가 기 설정된 제3 임계 개수 보다 작으면 제1 통신 채널에 대한 전송 효율이 낮다고 판단하여 다음으로 전송하고자 하는 데이터 블록의 크기를 특정 데이터 블록의 크기보다 작은 크기로 변경하거나, 다음으로 전송하고자 하는 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 특정 데이터 블록에 해당하는 데이터 조각들 각각의 크기보다 작은 크기로 변경할 수 있다. 전송 데이터 조각의 개수가 기 설정된 제4 임계 개수 보다 크면 제1 통신 채널에 대한 전송 효율이 높다고 판단하여 다음으로 전송하고자 하는 데이터 블록의 크기를 특정 데이터 블록의 크기보다 큰 크기로 변경하거나, 다음으로 전송하고자 하는 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 특정 데이터 블록에 해당하는 데이터 조각들 각각의 크기보다 큰 크기로 변경할 수 있다.
상술한 방법 이외에 다양한 방법을 이용하여 제1 통신 채널의 전송 효율을 판단할 수 있다.
다양한 실시예에서 프로세서(130)는 특정 데이터 블록을 전송하기 위해서 소요된 시간 및 특정 데이터 블록의 크기에 기반하여 특정 데이터 블록에 대한 전송 속도를 산출하고, 산출된 전송 속도에 따라 다음에 전송하고자 하는 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 변경할 수 있다. 예를 들어, 프로세서(130)는 특정 데이터 블록의 첫번째 데이터 조각을 전송한 시간 및 특정 데이터 블록의 마지막 데이터 조각을 전송한 시간을 이용하여 특정 데이터 조각을 전송하기 위해 소요된 시간을 산출하고, 산출된 소요 시간과 특정 데이터 블록의 크기를 이용하여 특정 데이터 블록의 전송 속도를 산출할 수 있다. 산출된 전송 속도가 제1 임계 전송 속도보다 작으면 프로세서(130)는 다음에 전송하고자 하는 데이터 블록의 크기 또는/및 데이터 조각의 크기를 이전에 전송한 데이터 블록의 크기 또는/및 이전에 전송한 데이터 조각의 크기보다 작게 변경할 수 있다. 산출된 전송 속도가 제2 임계 전송 속도보다 크면 프로세서(130)는 다음에 전송하고자 하는 데이터 블록의 크기 또는/및 데이터 조각의 크기를 이전에 전송한 데이터 블록의 크기 또는/및 이전에 전송한 데이터 조각의 크기보다 크게 변경할 수 있다.
다양한 실시예에서 프로세서(130)는 제2 장치(200)로 전송된 데이터 조각들에 대한 손실이 발생되거나, 제2 장치(200)로 특정 데이터 블록에 해당하는 데이터 조각들의 전송이 완료된 이후에 제2 장치(200)로부터 확인 응답 데이터가 수신되지 않는 등의 혼잡 현상(Congestion)이 발생되면 제1 장치(100)의 혼잡 윈도우 크기를 조절하고, 조절된 혼잡 윈도우 크기에 따라 다음에 전송하고자 하는 데이터 블록의 크기 또는/및 다음에 전송하고자 하는 데이터 조각의 크기를 변경할 수 있다. 예를 들어, 프로세서(130)는 제2 장치(200)로부터 수신된 확인 응답 데이터 또는 블록 정보 요청 데이터에 포함된 전송 데이터 조각의 개수에 기반하여 미전송 데이터 조각의 개수를 확인하고, 확인된 전송 데이터 조각의 개수가 임계 개수보다 크거나, 미전송 데이터 조각에 대한 정보에 기반하여 미전송 데이터 조각의 크기가 임계 크기보다 큰 경우 혼잡이 발생된 것으로 판단할 수 있다. 이러한 경우 프로세서(130)는 특정 데이터 블록을 전송하기 위해 소요된 시간 및 특정 데이터 블록에 해당하는 복수의 데이터 조각들의 개수에 기반하여 제1 장치(100)의 혼잡 윈도우 크기를 산출하고, 산출된 혼잡 윈도우 크기에 따라 다음에 전송하고자 하는 데이터 블록에 해당하는 데이터 조각들의 크기를 변경할 수 있다.
상기 프로세서(130)는 데이터 블록의 변경된 크기 또는/및 데이터 조각의 변경된 크기를 포함하는 블록 정보 응답 데이터를 제2 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다. 다양한 실시예에서 프로세서(130)는 제2 통신 채널을 통해서 제2 장치(200)로부터 블록 정보 요청 데이터를 주기적으로 수신하고, 수신된 블록 정보 요청 데이터에 대한 응답으로 블록 정보 응답 데이터를 제2 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다.
다양한 실시예에서 프로세서(130)는 복수의 데이터 조각들에 대한 전송을 완료하고, 미리 설정된 시간 동안 확인 응답 데이터가 수신되지 않는 등의 타임 아웃(time out) 현상이 발생되면 제2 통신 채널을 통해서 제2 장치(200)로 확인 요청 데이터를 전송할 수 있다. 이에 대한 응답으로 제2 통신 채널을 통해서 제2 장치(200)로부터 확인 응답 데이터가 수신되면 프로세서(130)는 확인 응답 데이터에 포함된 미전송 데이터 조각에 대한 정보에 기반하여 적어도 하나의 미전송 데이터 조각을 제1 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다.
다양한 실시예에서 프로세서(130)는 복수의 데이터 조각들에 대한 전송을 수행하는 중에 제2 장치(200)로부터 전송 데이터 조각의 개수 또는/및 미전송 데이터 조각에 대한 정보를 포함하는 블록 정보 요청 데이터를 수신할 수 있다. 프로세서(130)는 블록 정보 요청 데이터에 포함된 전송 데이터 조각의 개수와 제2 장치(200)로 전송된 데이터 조각의 개수를 비교하여 서로 다르면 제2 통신 채널을 통해서 제2 장치(200)로 확인 요청 데이터를 전달할 수 있다. 상기 프로세서(130)는 제2 장치(200)로부터 미전송 데이터 조각에 대한 정보를 포함하는 블록 정보 요청 데이터가 수신되면 미전송 데이터 조각에 대한 정보를 확인하여 연속적으로 특정 개수 이상의 미전송 데이터 조각이 존재하면 타임 아웃 현상이 발생된 것으로 판단할 수 있다. 상기 프로세서(130)는 미전송 데이터 조각에 대한 정보에 기반하여 적어도 하나의 미전송 데이터 조각을 제1 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다.
다양한 실시예에서 프로세서(130)는 제2 통신 채널을 통해서 제2 장치(200)로부터 블록 정보 요청 데이터를 주기적으로 수신하고, 수신된 블록 정보 요청 데이터에 대한 응답으로 블록 정보 응답 데이터를 제2 장치(200)로 전달할 수 있다. 상기 프로세서(130)는 수신된 블록 정보 요청 메시지에 미전송 데이터 조각에 대한 정보가 포함된 경우 미전송 데이터 조각에 대한 정보에 기반하여 적어도 하나의 미전송 데이터 조각을 확인하고, 확인된 적어도 하나의 미전송 데이터 조각을 제1 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다. 예를 들어, 미전송 데이터 조각에 대한 정보는 복수의 데이터 조각들이 연속적으로 미전송된 정보를 포함할 수 있다.
다음으로, 제2 장치(200)에 대해서 살펴보면, 통신 모듈(210)은 제2 장치(200)가 외부 장치와 통신 가능하도록 연결한다. 상기 통신 모듈(210)은 제1 통신 채널을 통해서 제1 장치(100)와의 데이터 송수신을 수행하고, 제2 통신 채널을 통해서 제1 장치(100)와의 데이터 송수신을 수행할 수 있다.
구체적으로, 통신 모듈(210)은 제1 통신 채널을 통해서 제1 장치(100)로부터 데이터 조각을 수신할 수 있다. 상기 통신 모듈(210)은 제1 통신 채널을 통해서 제1 장치(100)로부터 미전송 데이터 조각을 수신할 수 있다.
상기 통신 모듈(210)은 제2 통신 채널을 통해서 제1 장치(100)로 전송에 관련된 제어 명령 데이터를 전달하거나, 제1 장치(100)로부터 전송에 관련된 제어 명령 데이터를 수신할 수 있다. 예를 들어, 통신 모듈(210)은 제2 통신 채널을 통해서 제1 장치(100)로 상세 정보 요청 데이터를 전달하고, 제1 장치(100)로부터 상세 정보 응답 데이터를 수신할 수 있다. 상기 통신 모듈(210)은 제2 통신 채널을 통해서 제1 장치(100)로부터 데이터 조각에 대한 확인 요청 데이터를 수신하고, 제2 장치(200)로 데이터 조각에 대한 확인 응답 데이터를 전달할 수 있다. 상기 통신 모듈(210)은 제2 통신 채널을 통해서 제1 장치(100)로 블록 정보 요청 데이터를 전달하고, 제1 장치(100)로부터 블록 정보 응답 데이터를 수신할 수 있다. 상기 통신 모듈(210)은 전송 완료 데이터를 제2 통신 채널을 통해서 제1 장치(100)로부터 수신할 수 있다.
메모리(220)는 데이터 송신을 위한 다양한 데이터를 저장할 수 있다. 구체적으로, 메모리(220)는 제1 장치(100)로 수신된 데이터 조각을 저장하고, 데이터 조각에 대한 전송 또는 미전송을 나타내는 데이터 조각에 대한 정보를 저장할 수 있다. 상기 메모리(220)는 제1 장치로부터 수신된 상세 정보 또는/및 블록 정보를 저장할 수 있다. 예를 들어, 메모리(220)는 데이터 패킷을 버퍼링하기 위한 적어도 하나의 버퍼(Buffer)를 포함할 수 있다.
프로세서(230)는 통신 모듈(210) 및 메모리(220)와 동작 가능하게 연결되며, 데이터 수신을 위한 다양한 명령들을 수행할 수 있다.
구체적으로, 프로세서(230)는 데이터 송수신을 위해 제1 장치(100)와 연결을 수행하는데, 제1 통신 채널 및 제2 제2 통신 채널을 설정할 수 있다. 상기 프로세서(230)는 제2 통신 채널을 통해서 제1 장치(100)로부터 소정의 데이터에 관한 상세 정보를 포함하는 상세 정보 응답 데이터를 수신할 수 있다. 이를 통해서, 프로세서(230)는 상세 정보에 포함된 소정의 데이터의 크기, 데이터 블록의 크기 및 데이터 조각의 크기에 기반하여 제1 장치(100)로부터 전송될 수 있는 데이터에 해당하는 데이터 블록들의 개수 및 각 데이터 블록에 해당하는 데이터 조각들의 개수를 확인할 수 있다. 다양한 실시예에서 프로세서(230)는 상세 정보를 요청하기 위한 상세 정보 요청 데이터를 생성하고, 생성된 상세 정보 요청 데이터를 제2 통신 채널을 통해서 제1 장치(100)로 전달할 수도 있다.
상기 프로세서(230)는 제1 통신 채널을 통해서 제1 장치(100)로부터 데이터 조각을 수신하여 저장하고, 데이터 조각에 대한 전송 또는 미전송을 나타내는 데이터 조각에 대한 정보를 생성할 수 있다. 상기 데이터 조각은 데이터 패킷으로 캡슐화되어 수신되며, 해당 데이터 패킷은 전송된 패킷(또는 데이터 조각)의 손상 여부를 나타내는 체크섬 정보를 포함할 수 있다. 예를 들어, 프로세서(230)는 특정 데이터 블록에 해당하는 특정 데이터 조각이 수신되면 특정 데이터 조각에 대한 전송을 나타내는 정보를 생성하고, 다음 데이터 조각에 대한 수신을 대기할 수 있다. 미리 설정된 시간 동안 다음 데이터 조각이 수신되지 않으면 프로세서(230)는 다음 데이터 조각에 대한 미전송을 나타내는 정보를 생성할 수 있다. 다양한 실시예에서 프로세서(230)는 데이터 조각에 대한 체크섬 정보를 확인하여 수신된 데이터 조각이 손상된 경우 손상된 데이터 조각을 삭제하고, 해당 데이터 조각에 대한 미전송을 나타내는 정보를 생성할 수 있다. 여기서, 프로세서(230)는 데이터 정보를 이용하여 하나의 데이터 블록에 대응하는 데이터 조각들의 개수를 산출하고, 산출된 개수에 해당하는 데이터 조각별로 수신 또는 미수신을 나타내는 정보를 기록하여 데이터 조각에 대한 정보를 생성할 수 있다. 예를 들어, 프로세서(230)는 데이터 조각이 전송된 경우 '1'로 기록하고, 데이터 조각이 미전송된 경우 '0'으로 기록할 수 있다.
특정 데이터 블록에 대한 전송이 완료되면 프로세서(230)는 생성된 데이터 조각에 대한 정보를 포함하는 확인 응답 데이터를 제2 통신 채널을 통해서 제1 장치(100)로 전달할 수 있다. 예를 들어, 특정 데이터 블록에 관련하여 미전송된 데이터 조각이 존재하는 경우 프로세서(230)는 미전송 데이터 조각에 대한 정보를 포함하는 확인 응답 데이터를 제2 통신 채널을 통해서 제1 장치(100)로 전달할 수 있다. 상기 프로세서(230)는 제1 통신 채널을 통해서 제1 장치(100)로부터 미전송 데이터 조각을 수신하여 저장할 수 있다. 특정 데이터 블록에 대한 모든 데이터 조각들이 정상적으로 수신된 경우 프로세서(230)는 전송 데이터 조각에 대한 정보를 포함하는 확인 응답 데이터를 제2 통신 채널을 통해서 제1 장치(100)로 전달할 수 있다. 특정 데이터 블록이 소정의 데이터의 마지막 데이터 블록인 경우 프로세서(230)는 제2 통신 채널을 통해서 제1 장치(100)로부터 전송 완료 데이터를 수신하고, 데이터에 대한 수신을 완료할 수 있다. 특정 데이터 블록이 소정의 데이터의 마지막 데이터 블록이 아닌 경우 프로세서(230)는 제1 통신 채널을 통해서 제1 장치(100)로부터 다음 데이터 블록에 해당하는 데이터 조각들을 수신하여 저장하고, 데이터 조각에 대한 전송 또는 미전송을 나타내는 데이터 조각에 대한 정보를 생성할 수 있다.
다양한 실시예에서 프로세서(230)는 제2 통신 채널을 통해서 제1 장치(100)로부터 확인 요청 데이터를 수신하고, 수신된 확인 요청 데이터에 대한 응답으로 데이터 조각에 대한 정보를 포함하는 확인 응답 데이터를 제1 장치(100)로 전달할 수 있다.
다양한 실시예에서 프로세서(230)는 제2 통신 채널을 통해서 제1 장치(100)로부터 블록 정보 응답 데이터를 주기적으로 수신할 수 있다. 상기 프로세서(230)는 수신된 블록 정보 응답 데이터에 포함된 블록 정보에 기반하여 제1 장치(100)로부터 전송되는 다음 데이터 블록들의 개수 및 각 데이터 블록에 해당하는 데이터 조각들의 개수를 확인할 수 있다. 예를 들어, 프로세서(230)는 소정의 데이터의 크기, 다음 데이터 블록들의 변경된 크기 또는 다음 데이터 조각들의 변경된 크기를 이용하여 제1 장치(100)로부터 전송될 다음 데이터 블록들의 개수 또는/및 다음 데이터 조각들의 개수를 산출할 수 있다. 이를 통해서 제1 통신 채널의 전송 효율에 의해서 데이터 블록의 크기 또는 데이터 조각의 크기가 변경되더라도 프로세서(230)는 제1 장치(100)로부터 제공된 블록 정보를 이용하여 변경된 크기의 데이터 조각을 수신하여 저장하고, 데이터 조각에 대한 전송 또는 미전송을 나타내는 데이터 조각에 대한 정보를 생성할 수 있다.
다양한 실시예에서 프로세서(230)는 제2 통신 채널을 통해서 제1 장치(100)로 블록 정보 요청 데이터를 주기적으로 전달할 수 있다. 상기 프로세서(230)는 데이터 블록의 크기 및 제1 장치(100)로부터 전송된 데이터 조각들의 크기를 이용하여 제1 장치(100)로부터 전송된 데이터 조각들의 개수인 전송 데이터 조각의 개수를 산출하고, 산출된 전송 데이터 조각의 개수 및 미전송 데이터 조각에 대한 정보를 포함하는 블록 정보 요청 데이터를 생성하여 제2 통신 채널을 통해서 제1 장치(100)로 전달할 수 있다.
다양한 실시예에서 프로세서(230)는 특정 데이터 블록에 대한 모든 데이터 조각들의 전송이 완료되지 않은 상태에서 미리 설정된 시간 동안 제1 통신 채널을 통해서 제1 장치(100)로부터 데이터 조각들이 수신되지 않는 등의 타임 아웃이 발생되면 제2 통신 채널을 통해서 제1 장치(100)로 미전송 데이터 조각에 대한 정보를 포함하는 확인 응답 데이터를 전달할 수 있다. 상기 제1 통신 채널을 통해서 제1 장치(100)로부터 적어도 하나의 미전송 데이터 조각이 수신되면 프로세서(230)는 수신된 적어도 하나의 미전송 데이터 조각을 저장하고, 이에 대한 확인 응답 데이터를 제2 통신 채널을 통해서 제1 장치(100)로 전달할 수 있다.
다양한 실시예에서 제1 통신 채널의 전송 효율에 의해서 데이터 블록의 크기 또는/및 데이터 조각의 크기가 변경되거나, 데이터 블록의 전송 속도에 따라 데이터 블록의 크기 또는/및 데이터 조각의 크기가 변경되거나, 혼잡 현상이 발생됨에 따라 데이터 블록의 크기 또는/및 데이터 조각의 크기가 변경되면 프로세서(230)는 제2 통신 채널을 통해서 제1 장치(100)로부터 데이터 블록의 변경된 크기 또는/및 데이터 조각의 변경된 크기 등을 포함하는 데이터 블록에 대한 정보를 포함하는 블록 정보 응답 데이터를 수신할 수 있다.
다양한 실시예에서 프로세서(230)는 확인 응답 데이터의 크기 또는 확인 응답 데이터의 전송 빈도수에 의해서 제2 통신 채널에 대한 혼잡 현상을 줄이기 위해 확인 응답 데이터에 포함되는 미전송 데이터 조각에 대한 정보의 크기를 줄이거나, 미전송 데이터 조각에 대한 정보의 크기 및 제1 통신 채널 용량에 기반하여 전송하고자 하는 확인 응답 데이터의 빈도수를 산출할 수 있다. 구체적으로, 프로세서(230)는 확인 응답 데이터의 크기를 줄이기 위해서 미전송 데이터 조각에 대한 정보를 나타내는 비트맵을 총 24개의 비트들로 나타낼 수 있다. 이와 같이 각 24개의 비트들이 나타내는 파라미터 섹션은 하기의 [표 1]과 같이 정의될 수 있다.
오프셋 정의
0 미전송 데이터 조각에 대한 정보를 나타내는 비트맵의 압축 여부
1 미전송 데이터 조각에 대한 정보를 나타내는 비트맵의 낮은 위치에서의 스킵 비트
2 미전송 데이터 조각에 대한 정보를 나타내는 비트맵의 높은 위치에서의 스킵 비트
3 미전송 데이터 조각에 대한 정보를 나타내는 비트맵의 모든 비트들
4, 5 미전송 데이터 조각에 대한 정보를 나타내는 비트맵의 낮은 위치에서의 스킵 비트들의 개수에 대한 스케일 팩터(scale factor)(sf_sktail)
6, 7 미전송 데이터 조각에 대한 정보를 나타내는 비트맵의 높은 위치에서의 스킵 비트들의 개수에 대한 스케일 팩터(sf_skhead)
8-15 미전송 데이터 조각에 대한 정보를 나타내는 비트맵의 낮은 위치에서의 스킵 비트들의 개수(n_sktail)
16-23 미전송 데이터 조각에 대한 정보를 나타내는 비트맵의 높은 위치에서의 스킵 비트들의 개수(n_skhead)
상기의 [표 1]에 따르면, 첫번째 비트는 미전송 데이터 조각에 대한 정보를 나타내는 비트맵이 압축되었는지 여부를 나타내도록 정의될 수 있다. 두번째 및 세번째 비트들은 미전송 데이터 조각에 대한 정보를 나타내는 비트맵의 시작과 끝에 대응하는 스킵 비트로 정의될 수 있다. 스킵 비트들의 개수는 여덟번째 비트부터 스물세번째 비트까지 설정될 수 있다. 네번째 비트에서 일곱번째 비트는 스킵 비트들을 산출하기 위한 스케일 요인이 정의될 수 있다. 미전송 데이터 조각에 대한 정보를 포함하는 확인 요청 데이터에서 시간 t 동안 전체 스킵 비트들의 크기(t_sksizet)는 하기의 [수학식 1]에 의해서 산출될 수 있다.
Figure 112018111602914-pat00001
상기에 따르면, n_skheadt는 시간 t 동안 미전송 데이터 조각에 대한 정보를 나타내는 비트맵의 높은 위치에서의 스킵 비트들의 개수를 정의하고, sf_skheadt는 시간 t 동안 미전송 데이터 조각에 대한 정보를 나타내는 비트맵의 높은 위치에서의 스킵 비트들의 개수에 대한 스케일 팩터를 정의하고, n_sktailt는 시간 t 동안 미전송 데이터 조각에 대한 정보를 나타내는 비트맵의 낮은 위치에서의 스킵 비트들의 개수를 정의하고, sf_sktailt는 시간 t 동안 미전송 데이터 조각에 대한 정보를 나타내는 비트맵의 낮은 위치에서의 스킵 비트들의 개수에 대한 스케일 팩터를 정의할 수 있다.
상기 프로세서(230)는 확인 응답 데이터에 대한 전송 혼잡을 줄이기 위해 확인 응답 데이터의 전송 빈도수(tf_ack)를 산출할 수 있다. 상기 전송 빈도수는 전체 스킵 비트들의 크기(t_sksize)와 제1 통신 채널 용량(dchanl_cap)을 이용하여 산출될 수 있다. 전송 빈도수를 산출하기 위해 프로세서(230)는 이전에 전송된 8개의 확인 응답 데이터를 샘플로서 이용할 수 있다. 시간 t+1 동안 전송 빈도수(tf_ackt+1)는 하기의 [수학식 2]에 의해서 산출될 수 있다.
Figure 112018111602914-pat00002
상기의 [수학식 2]에 따르면, α는 확인 응답 데이터의 전송 빈도수를 증가시키기 위한 스피드 업 팩터(speed up factor)를 나타내고, β는 확인 응답 데이터의 전송 빈도수를 감소시키기 위한 딜레이 팩터(delay factor)를 나타낼 수 있으며, dchanl_cap는 제1 통신 채널 용량을 나타낼 수 있다.
상술한 바와 같이 제2 통신 채널을 통해서 제1 장치(100)로부터 수신되거나, 제1 장치(100)로 전송되는 요청/응답에 대한 제어 명령 데이터에 대해서 도 3을 참조하여 구체적으로 살펴보도록 한다.
도 3은 본 발명의 실시예에 따른 제2 통신 채널을 통해서 송수신되는 요청/응답 데이터에 대한 구조를 나타내는 예시도이다.
도 3을 참조하면, 요청/응답 데이터(300)는 TCP 헤더 필드(TCP Header)(302), TCP 옵션 필드(TCP Options)(304), 요청 명령 데이터(Pull Command) 또는 응답 명령 데이터(Push Command)인지를 나타내는 필드(PLLCmd/PSHCmd)(306), 데이터 블록의 전송을 확인하기 위한 데이터인지를 나타내는 필드(Ack)(308), 상세 정보를 확인하기 위한 데이터인지를 나타내는 필드(FInfo)(310), 블록 정보를 확인하기 위한 데이터인지를 나타내는 필드(BInfo)(312), 예약된 명령 데이터 필드(Reserved Commands)(314), 요청/응답 명령 데이터의 요청된 파라미터들을 나타내는 필드(Request Parameters of Pull/Push Commands)(316), 데이터 블록의 아이디(b_id)를 나타내는 필드(b_id)(318), 데이터 블록의 크기(b_size)를 나타내는 필드(b_size)(320), 전송 데이터 조각의 개수(s_count)를 나타내는 필드(s_count)(322), 데이터 조각의 크기(s_size)를 나타내는 필드(s_size)(324), 데이터 블록의 에러 검출(b_crc)을 위한 필드(b_crc)(326) 및 미전송 데이터 조각의 정보(block Ack bitmap)를 나타내는 필드(Block Ack Bitmap)(328)를 포함할 수 있다. 예를 들어, TCP 옵션 필드(304), 요청/응답 명령 데이터의 요청된 파라미터들을 나타내는 필드(316), 데이터 블록의 아이디를 나타내는 필드(318), 데이터 블록의 크기를 나타내는 필드(320), 전송 데이터 조각의 개수를 나타내는 필드(322), 데이터 조각의 크기를 나타내는 필드(324), 데이터 블록의 에러 검출을 위한 필드(326) 및 미전송 데이터 조각에 대한 정보를 나타내는 필드(328)는 선택적으로 포함될 수 있다.
상기 요청/응답 데이터는 헤더에 포함된 8개의 비트 플래그에 의해서 식별될 수 있다. 예를 들어, 첫번째 비트는 요청 명령 데이터 또는 응답 명령 데이터인지를 나타내고, 다음 3 비트는 데이터 블록을 확인하기 위한 명령 데이터(ACK), 상세 정보에 대한 명령 데이터(FInfo), 블록 정보에 대한 명령 데이터(BInfo)인지를 나타낼 수 있다. 마지막 4비트는 커스터마이즈 가능한(customizable) 명령 데이터에 의해서 예약될 수 있다.
상기 요청/응답 명령 데이터는 하기의 [표 2]와 같은 제어 명령 데이터를 포함할 수 있다.
명령(Command) 설명(Description)
확인 요청 데이터 (Pull ACK, PLLAck) 데이터 블록에 대한 확인 응답(ACK)을 요청
확인 응답 데이터 (Push ACK, PSHAck) 데이터 블록에 대한 확인 응답(ACK)을 전달
상세 정보 요청 데이터 (Pull File Information, PLLFInfo) 데이터의 크기, 데이터의 이름, 데이터 블록의 크기 및 데이터 조각의 크기를 포함하는 상세 정보를 요청
상세 정보 응답 데이터 (Push File Information, PSHFInfo) 상세 정보를 전달
블록 정보 요청 데이터 (Pull Block Information, PLLBInfo) 데이터 블록의 ID, 데이터 블록의 크기, 데이터 조각의 크기, 전송 데이터 조각의 개수 및 미전송 데이터 조각에 대한 정보를 포함하는 블록 정보를 요청
블록 정보 응답 데이터 (Push Block Information, PSHBInfo) 블록 정보를 전달
상기의 [표 2]를 참조하면, 서로 다른 요청 데이터는 서로 다른 파라미터들이 포함될 수 있다. 예를 들어, 확인 요청 데이터(PLLAck)는 미전송 데이터 조각에 대한 정보를 요청하기 위해 데이터 블록의 ID가 파라미터로서 포함될 수 있고, 상세 정보 요청 데이터(PLLFInfo)는 특정 데이터에 대한 메타 정보를 질의하기 위해 데이터 이름이 파라미터로서 포함될 수 있다. 다양한 실시예에서 블록 정보는 전송 데이터 조각의 개수 또는/및 미전송 데이터 조각에 대한 정보를 선택적으로 포함할 수 있다.
도 4는 본 발명의 실시예에 따른 송신측 전송 프로그램 모듈을 설명하기 위한 개략도이다.
도 4를 참조하면, 송신측 전송 프로그램 모듈(400)은 제1 장치(100)의 메모리(120)에 저장되고, 제1 장치(100)의 프로세서(130)에 의해서 송신측 전송 프로그램 모듈(400)을 이용하여 제2 장치(200)와의 연결 및 데이터 송수신을 수행할 수 있다.
구체적으로, 송신측 전송 프로그램 모듈(400)은 송신 설정 정보 구성부(410), 데이터 분할부(420), 제1 통신 패킷 송신부(430), 제2 통신 패킷 송수신부(440), 데이터 조각 정보 생성부(450) 및 송신 관리부(460)를 포함할 수 있다.
송신 설정 정보 구성부(410)는 제1 통신 방식 및 제2 통신 방식을 이용하여 데이터 전송을 위한 송신측 설정 정보를 구성할 수 있다. 예를 들어, 송신측 설정 정보는 제1 통신 소켓 버퍼 크기, 제2 통신 소켓 버퍼 크기, 데이터 블록의 크기(예: 제1 크기), 데이터 조각의 크기(예: 제2 크기), 타임 아웃 시간 등을 포함할 수 있다. 이와 같이 설정된 송신측 설정 정보는 제2 장치(200)와의 연결을 통해 제2 장치(200)와 공유될 수 있다.
데이터 분할부(420)는 전송하고자 하는 데이터를 송신 설정 정보 구성부(410)에 의해서 설정된 데이터 블록의 크기 또는/및 데이터 조각의 크기로 분할할 수 있다. 예를 들어, 전송하고자 하는 데이터는 제1 크기의 복수의 데이터 블록들로 분할되고, 각 데이터 블록이 제2 크기의 복수의 데이터 조각들로 분할될 수 있다.
제1 통신 패킷 송신부(430)는 제1 통신 채널을 통해서 전송하고자 하는 데이터를 제2 장치(200)로 전달할 수 있다. 구체적으로, 제1 통신 패킷 송신부(430)는 각 데이터 조각을 캡슐화하여 데이터 패킷을 생성하고, 생성된 데이터 패킷을 제1 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다.
제2 통신 패킷 송수신부(440)는 제2 통신 채널을 통해서 데이터 전송에 관련된 제어 명령 데이터를 송수신할 수 있다. 구체적으로, 제2 통신 패킷 송수신부(440)는 데이터 블록 또는/및 데이터 조각에 대한 전송 확인을 요청하기 위한 확인 요청 데이터를 캡슐화하여 데이터 패킷을 생성하고, 생성된 데이터 패킷을 제2 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다. 상기 제2 통신 패킷 송수신부(440)는 데이터 블록의 크기 또는/및 데이터 조각의 크기 등을 포함하는 블록 정보 응답 데이터를 캡슐화하여 데이터 패킷을 생성하고, 생성된 데이터 패킷을 제2 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다. 상기 제2 통신 패킷 송수신부(440)는 상세 정보를 포함하는 상세 정보 응답 데이터를 캡슐화하여 데이터 패킷을 생성하고, 생성된 데이터 패킷을 제2 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다. 상기 제2 통신 패킷 송수신부(440)는 제2 통신 채널을 통해서 제2 장치(200)로부터 확인 응답 데이터, 블록 정보 요청 데이터 또는 상세 정보 요청 데이터를 캡슐화한 데이터 패킷을 수신할 수 있다.
데이터 조각 정보 생성부(450)는 제1 통신 채널을 통해서 제2 장치(200)로 각 데이터 패킷이 전송됨을 나타내는 송신측 데이터 조각 정보를 생성할 수 있다. 상기 송신측 데이터 조각 정보는 각 데이터 패킷이 전송됨을 나타내기 위한 비트들이 기록된 비트맵을 포함할 수 있다. 예를 들어, 제1 데이터 패킷이 전송되면 데이터 조각 정보 생성부(450)는 제1 데이터 패킷이 전송됨을 나타내기 위한 비트를 기록하기 위한 비트맵을 생성할 수 있다.
송신 관리부(460)는 데이터 전송을 위한 전반적인 동작을 수행할 수 있다. 구체적으로, 송신 관리부(460)는 제1 통신 채널을 통해서 소정의 데이터를 전송하고, 동시에 제2 통신 채널을 통해서 데이터 전송에 관련된 제어 명령 데이터를 송수신하기 위한 적어도 2개의 스레드들(threads)을 생성할 수 있다. 이와 같이 생성된 적어도 2개의 스레드들을 이용하여 송신 관리부(460)는 제1 통신 채널을 통해서 데이터를 전송하는 동작과 제2 통신 채널을 통해서 데이터 전송에 관련된 제어 명령 데이터를 송수신하는 동작을 동시에 수행하도록 각 구성부들(예: 송신 설정 정보 구성부(410), 데이터 분할부(420), 제1 통신 패킷 송신부(430), 제2 통신 패킷 송수신부(440) 및 데이터 조각 정보 생성부(450))을 관리할 수 있다.
도 5는 본 발명의 실시예에 따른 수신측 전송 프로그램 모듈을 설명하기 위한 개략도이다.
도 5를 참조하면, 수신측 파일 프로그램 모듈(500)은 제2 장치(200)의 메모리(220)에 저장되고, 제2 장치(200)의 프로세서(230)에 의해서 수신측 전송 프로그램 모듈(500)을 이용하여 제1 장치(100)와의 연결 및 데이터 송수신을 수행할 수 있다.
구체적으로, 수신측 전송 프로그램 모듈(500)은 수신 설정 정보 구성부(510), 데이터 결합부(520), 제1 통신 패킷 수신부(530), 제2 통신 패킷 송수신부(540), 데이터 조각 정보 생성부(550) 및 수신 관리부(560)를 포함할 수 있다.
수신 설정 정보 구성부(510)는 제1 통신 방식 및 제2 통신 방식을 이용하여 데이터 전송을 위한 수신측 설정 정보를 구성할 수 있다. 예를 들어, 수신측 설정 정보는 제1 통신 소켓 버퍼 크기, 제2 통신 소켓 버퍼 크기, 타임 아웃 시간 등을 포함할 수 있다. 이와 같이 설정된 수신측 설정 정보는 제1 장치(100)와의 연결을 통해 제1 장치(100)와 공유될 수 있다.
데이터 결합부(520)는 제1 장치(100)로부터 수신된 복수의 데이터 조각들을 특정 데이터 블록으로 결합하고, 수신된 적어도 하나의 데이터 블록을 결합하여 데이터를 생성할 수 있다.
제1 통신 패킷 수신부(530)는 는 제1 통신 채널을 통해서 제1 장치(100)로부터 소정의 데이터를 수신할 수 있다. 구체적으로, 제1 통신 패킷 수신부(530)는 제1 통신 채널을 통해서 제1 장치(100)로부터 데이터 패킷을 수신할 수 있다.
제2 통신 패킷 송수신부(540)는 제2 통신 채널을 통해서 데이터 전송에 관련된 제어 명령 데이터를 송수신할 수 있다. 구체적으로, 제2 통신 패킷 송수신부(540)는 데이터 블록 또는/및 데이터 조각에 대한 전송 확인을 응답하기 위한 확인 응답 데이터를 캡슐화하여 데이터 패킷을 생성하고, 생성된 데이터 패킷을 제2 통신 채널을 통해서 제1 장치(100)로 전달할 수 있다. 상기 제2 통신 패킷 송수신부(540)는 데이터 블록의 크기 또는/및 데이터 조각의 크기 등을 포함하는 블록 정보 응답 데이터를 요청하기 위한 블록 정보 요청 데이터를 캡슐화하여 데이터 패킷을 생성하고, 생성된 데이터 패킷을 제2 통신 채널을 통해서 제1 장치(100)로 전달할 수 있다. 상기 제2 통신 패킷 송수신부(540)는 상세 정보를 포함하는 상세 정보 응답 데이터를 요청하기 위한 상세 정보 요청 데이터를 캡슐화하여 데이터 패킷을 생성하고, 생성된 데이터 패킷을 제2 통신 채널을 통해서 제1 장치(100)로 전달할 수 있다. 상기 제2 통신 패킷 송수신부(540)는 제2 통신 채널을 통해서 제1 장치(100)로부터 확인 요청 데이터, 블록 정보 응답 데이터 또는 상세 정보 응답 데이터에 해당하는 데이터 패킷을 수신할 수 있다.
데이터 조각 정보 생성부(550)는 제1 통신 채널을 통해서 제1 장치(100)로부터 각 데이터 패킷이 전송되거나 미전송됨을 나타내는 수신측 데이터 조각 정보를 생성할 수 있다. 상기 수신측 데이터 조각 정보는 각 데이터 패킷이 전송되거나 미전송됨을 나타내기 위한 비트들이 기록된 비트맵을 포함할 수 있다. 예를 들어, 제1 데이터 패킷이 수신되면 데이터 조각 정보 생성부(550)는 제1 데이터 패킷이 정상적으로 전송됨을 나타내기 위한 비트를 비트맵에 기록할 수 있다. 미리 설정된 시간 동안 제2 데이터 패킷이 수신되지 않으면 데이터 조각 정보 생성부(550)는 제2 데이터 패킷이 미전송됨을 나타내기 위한 비트를 비트맵에 기록할 수 있다.
수신 관리부(560)는 데이터 수신을 위한 전반적인 동작을 수행할 수 있다. 구체적으로, 수신 관리부(560)는 제1 통신 채널을 통해서 소정의 데이터를 수신하고, 동시에 제2 통신 채널을 통해서 데이터 전송에 관련된 제어 명령 데이터를 송수신하기 위한 적어도 2개의 스레드들을 생성할 수 있다. 이와 같이 생성된 적어도 2개의 스레드들을 이용하여 수신 관리부(560)는 제1 통신 채널을 통해서 데이터를 수신하는 동작과 제2 통신 채널을 통해서 데이터 전송에 관련된 제어 명령 데이터를 송수신하는 동작을 동시에 수행하도록 각 구성부들(예: 수신 설정 정보 구성부(510), 데이터 결합부(520), 제1 통신 패킷 수신부(530), 제2 통신 패킷 송수신부(540) 및 데이터 조각 정보 생성부(550))을 관리할 수 있다.
도 6은 본 발명의 실시예에 따른 재1 장치에서 제2 장치로 소정의 데이터를 송신하는 방법을 설명하기 위한 개략적인 순서도이다.
도 6을 참조하면, 제1 장치(100)는 제2 장치(200)로 전송하고자 하는 데이터를 제1 크기를 가지는 복수의 데이터 블록들로 분할하고(S600), 복수의 분할된 데이터 블록들 각각을 제1 크기보다 작은 제2 크기를 가지는 복수의 데이터 조각들로 분할할 수 있다(S610). 상기 제1 장치(100)는 복수의 분할된 데이터 조각들 각각을 제1 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다(S620). 상기 제1 장치(100)는 데이터 전송이 완료되면 제1 통신 채널과 상이한 통신 방식을 가지는 제2 통신 채널을 통해서 제2 장치(200)로부터 데이터 조각에 대한 전송을 확인하기 위한 확인 응답 데이터를 수신할 수 있다(S630). 상기 수신된 확인 응답 데이터는 소정의 데이터에 해당하는 각 데이터 조각에 대한 전송을 나타내는 전송 데이터 조각에 대한 정보 또는 미전송을 나타내는 미전송 데이터 조각에 대한 정보를 포함할 수 있다. 상기 제1 장치(100)는 확인 응답 데이터에 미전송 데이터 조각에 대한 정보가 포함되는지를 판단하고(S640), 확인 응답 데이터에 미전송 데이터 조각에 대한 정보가 포함된 경우 미전송 데이터 조각에 대한 정보에 기반하여 적어도 하나의 미전송 데이터 조각을 확인할 수 있다(S650). 상기 제1 장치(100)는 확인된 적어도 하나의 미전송 데이터 조각을 제1 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다(S660). 확인 응답 데이터에 미전송 데이터 조각에 대한 정보가 포함되지 않은 경우 제1 장치(100)는 전송 완료 데이터를 제2 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다(S670).
도 7은 본 발명의 실시예에 따른 재2 장치에서 제1 장치로부터 소정의 데이터를 수신하는 방법을 설명하기 위한 개략적인 순서도이다.
도 7을 참조하면, 제2 장치(200)는 제1 통신 채널을 통해서 제1 장치(100)로부터 복수의 데이터 조각들 각각을 수신할 수 있다(S700). 상기 제2 장치(200)는 수신된 데이터 조각들을 확인하여 미전송 데이터 조각이 존재하는지를 판단하고(S710), 미전송 데이터 조각이 존재하면 데이터 조각에 대한 미전송을 나타내는 미전송 데이터 조각에 대한 정보를 생성할 수 있다(S720). 상기 제2 장치(200)는 생성된 미전송 데이터 조각에 대한 정보를 포함하는 확인 응답 데이터를 생성하고(S730), 생성된 확인 응답 데이터를 제2 통신 채널을 통해서 제1 장치(100)로 전달할 수 있다(S740). 상기 제2 장치(200)는 제1 통신 채널을 통해서 제1 장치(100)로부터 적어도 하나의 미전송 데이터 조각을 수신할 수 있다(S750). 미전송 데이터 조각이 존재하지 않으면 제2 장치(200)는 전송 데이터 조각에 대한 정보를 포함하는 확인 응답 데이터를 생성하고(S760), 생성된 확인 응답 데이터를 제2 통신 채널을 통해서 제1 장치(100)로 전달할 수 있다(S770). 상기 제2 장치(200)는 모든 데이터 조각들이 수신되는지를 판단하고(S780), 모든 데이터 조각들이 수신되면 재2 통신 채널을 통해서 제2 장치(200)로부터 전송 완료 데이터를 수신할 수 있다(S790). 상기 모든 데이터 조각들은 특정 데이터 블록 또는 소정의 데이터에 해당될 수 있다. 모든 데이터 조각들이 수신되지 않으면 제2 장치(200)는 제1 통신 채널을 통해서 제1 장치(100)로부터 특정 데이터 블록에 해당하는 복수의 데이터 조각들 각각을 수신하고(S710), 모든 데이터 조각들을 수신할 때까지 데이터 수신 동작들(S720 내지 S790)을 수행할 수 있다.
도 8을 본 발명의 실시예에 따른 제1 장치 및 제2 장치로간의 데이터 전송 방법을 설명하기 위한 개략적인 순서도이다.
도 8을 참조하면, 800단계에서 제1 장치(100)와 제2 장치(200)는 통신 연결을 수행할 수 있다. 상기 제1 장치(100)와 제2 장치(200)는 제1 통신 채널 및 제2 통신 채널을 설정할 수 있다.
802단계에서 제1 장치(100)는 전송하고자 하는 소정의 데이터의 크기, 소정의 데이터의 이름, 데이터 블록의 크기 및 데이터 조각의 크기 등을 포함하는 상세 정보를 제2 통신 채널을 통해서 제2 장치(200)로 전달하고, 804단계에서 제2 장치(200)는 제2 통신 채널을 통해서 수신된 상세 정보를 저장할 수 있다.
806단계에서 제1 장치(100)는 소정의 데이터를 제1 크기의 복수의 데이터 블록들로 분할하고, 808단계에서 분할된 데이터 블록을 제2 크기의 복수의 데이터 조각들로 분할할 수 있다.
810단계에서 제1 장치(100)는 분할된 데이터 조각을 제1 채널을 통해서 제2 장치(200)로 전달할 수 있다.
812단계에서 제2 장치(200)는 수신된 데이터 조각을 저장하고, 814단계에서 데이터 조각의 전송 또는 미전송을 나타내는 데이터 조각에 대한 정보를 생성할 수 있다.
816단계에서 제1 장치(100)는 소정의 데이터에 대한 전송이 완료되는지를 판단하고, 소정의 데이터에 대한 전송이 완료되면 818단계에서 확인 응답 데이터의 수신을 대기할 수 있다. 소정의 데이터에 대한 전송이 완료되지 않으면 810단계에서 분할된 데이터 조각을 전송할 수 있다.
820단계에서 제2 장치(200)는 데이터 조각에 대한 정보를 포함하는 확인 응답 데이터를 생성하고, 822단계에서 제2 통신 채널을 통해서 제1 장치(100)로 확인 응답 데이터를 전달할 수 있다.
824단계에서 제1 장치(100)는 확인 응답 데이터에 포함된 데이터 조각에 대한 정보를 확인하여 미전송 데이터 조각이 존재하는지를 판단하고, 미전송 데이터 조각이 존재하면 826단계에서 제1 통신 채널을 통해서 제2 장치(200)로 미전송 데이터 조각을 전달할 수 있다. 미전송 데이터 조각이 존재하지 않으면 제1 장치(100)는 832단계에서 제2 통신 채널을 통해서 제2 장치(200)로 전송 완료 데이터를 전송할 수 있다.
미전송 데이터 조각이 수신되면 제2 장치(200)는 828단계에서 소정의 데이터의 수신이 완료되는지를 판단하고, 소정의 데이터의 수신이 완료되면 830단계에서 전송 완료 데이터의 수신을 대기할 수 있다. 소정의 데이터의 수신이 완료되지 않으면 제2 장치(200)는 812단계에서 수신된 데이터 조각을 저장하고, 데이터 수신 과정들(814단계 내지 832단계)을 수행할 수 있다. 제1 장치(100)로부터 전송 완료 데이터가 수신되면 제1 장치(100)와 제2 장치(200)간의 데이터 전송을 완료할 수 있다.
하기에서는 제1 장치(100) 및 제2 장치(200) 사이의 데이터 전송 동작을 도 9 내지 도 14를 참조하여 구체적으로 설명한다. 하기에서 설명하는 동작들은 제1 장치(100)의 프로세서(130) 및 제2 장치(200)의 프로세서(230)에 의해서 수행될 수 있다.
도 9 내지 도 14는 본 발명의 실시예에 따른 제1 장치 및 제2 장치 사이의 데이터 전송 동작을 설명하기 위한 예시도들이다.
도 9를 참조하면, 제1 장치(100)는 제2 장치(200)로 전송하고자 하는 데이터(900)를 제1 크기를 가지는 복수의 데이터 블록들로 분할하고, 분할된 각 데이터 블록을 제2 크기를 가지는 복수의 데이터 조각들로 분할할 수 있다. 예를 들어, 제1 장치(100)는 1GByte의 데이터를 8Mbyte의 데이터 블록으로 분할하고, 8Mbyte의 데이터 블록을 1Kbyte의 데이터 조각으로 분할할 수 있다.
상기 제1 장치(100)는 제1 통신 채널을 통해서 제2 장치(200)로 제1 데이터 블록에 해당하는 데이터 조각들을 전송할 수 있다.
상기 제2 장치(200)는 제1 통신 채널을 통해서 제1 장치(100)로부터 제1 데이터 블록에 해당하는 데이터 조각들을 수신하고, 데이터 조각의 전송 또는 미전송을 나타내는 데이터 조각에 대한 정보를 생성할 수 있다. 예를 들어, 제2 장치(200)는 제1 데이터 조각에서 제5 데이터 조각을 수신하고, 제1 데이터 조각에서 제5 데이터 조각까지의 전송을 나타내는 정보를 생성할 수 있다. 상기 제2 장치(200)는 기 설정된 시간 동안 제6 데이터 조각에 대한 수신을 대기하고, 기 설정된 시간 동안 제6 데이터 조각이 수신되지 않으면 제6 데이터 조각에 대한 미전송을 나타내는 정보를 생성할 수 있다. 이와 같이 제1 데이터 블록에 해당하는 데이터 조각들을 수신하고, 제1 데이터 블록에 해당하는 데이터 조각들에 대한 수신이 완료되면 제2 장치(200)는 데이터 조각들의 전송 또는 미전송을 나타내는 제1 데이터 블록의 데이터 조각에 대한 정보(910)를 생성하고, 생성된 제1 데이터 블록의 데이터 조각에 대한 정보(910)를 포함하는 확인 응답 데이터를 제2 통신 채널을 통해서 제1 장치(100)로 전달할 수 있다. 상기 제1 데이터 블록의 데이터 조각에 대한 정보(910)는 제1 데이터 블록에 해당하는 각 데이터 조각의 전송 또는 미전송을 나타내는 비트들을 나타내는 비트맵을 포함할 수 있다. 예를 들어, 비트맵은 제6 데이터 조각의 미전송을 나타내는 비트를 포함할 수 있다.
도 10을 참조하면, 제1 장치(100)는 제2 통신 채널을 통해서 제2 장치(200)로부터 확인 응답 데이터를 수신하고, 확인 응답 데이터에 포함된 데이터 조각에 대한 정보를 확인하여 미전송 데이터 조각에 대한 정보가 포함되는지를 확인할 수 있다. 미전송 데이터 조각에 대한 정보가 포함된 경우 제1 장치(100)는 미전송 데이터 조각에 대한 정보에 기반하여 제1 데이터 블록에 해당하는 복수의 데이터 조각들 중 미전송된 데이터 조각을 확인할 수 있다. 예를 들어, 제1 장치(100)는 미전송된 제6 데이터 조각을 확인할 수 있다. 상기 제1 장치(100)는 확인된 미전송 데이터 조각(예: 제6 데이터 조각)을 제1 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다.
미전송 데이터 조각이 수신되면 제2 장치(200)는 제6 데이터 조각에 대한 전송을 나타내는 정보를 포함하는 제1 데이터 블록의 데이터 조각 정보(1000)를 생성할 수 있다. 제2 장치(200)는 생성된 제1 데이터 블록의 데이터 조각 정보(1000)를 포함하는 확인 응답 데이터를 생성하고, 생성된 확인 응답 데이터를 제2 통신 채널을 통해서 제1 장치(100)로 전달할 수 있다. 이와 같이 제1 데이터 블록에 대한 전송이 정상적으로 완료되면 제1 장치(100)는 제2 데이터 블록에 대한 전송을 시작할 수 있다.
하기에서는 도 11 내지 도 13을 참조하여 제1 장치(100) 또는 제2 장치(200)가 타임 아웃을 감지하고, 이에 따라 미전송 데이터 조각을 재전송하는 동작에 대해서 설명하도록 한다.
도 11을 참조하면, 제1 장치(100)는 제1 통신 채널을 통해서 제1 데이터 블록에 해당하는 데이터 조각들을 전송하는 중에 제2 통신 채널을 통해서 제2 장치(200)로부터 블록 정보 요청 데이터를 수신할 수 있다. 예를 들어, 블록 정보 요청 데이터는 주기적으로 제1 장치(100)로 전달될 수 있고, 전송 데이터 조각의 개수 또는/및 미전송 데이터 조각에 대한 정보를 포함할 수 있다. 상기 제1 장치(100)는 제2 장치(200)로 전송된 데이터 조각의 개수와 블록 정보 요청 데이터에 포함된 전송 데이터 조각의 개수를 비교하여 서로 다르면 제2 통신 채널을 통해서 제2 장치(200)로 확인 요청 데이터를 전달할 수 있다. 상기 제1 장치(100)는 제2 통신 채널을 통해서 제2 장치(200)로부터 제1 데이터 블록의 데이터 조각 정보(110)를 포함하는 확인 응답 데이터를 수신할 수 있다. 예를 들어, 상기 제1 데이터 블록의 데이터 조각 정보(1100)는 연속적으로 미전송된 특정 개수 이상의 미전송 데이터 조각들(예: 제6, 제7 및 제8 데이터 조각들)을 나타내는 비트들을 포함할 수 있다. 이와 같이 제1 장치(100)는 특정 개수 이상의 미전송된 데이터 조각들이 존재하면 타임 아웃(time-out)이 발생된 것으로 판단할 수 있다.
도 12를 참조하면, 제2 장치(200)는 제1 통신 채널을 통해서 제1 장치(100)로부터 제1 데이터 블록에 해당하는 제1 내지 제5 데이터 조각을 수신하고, 제1 내지 제5 데이터 조각이 전송됨을 나타내는 정보를 생성할 수 있다. 상기 제2 장치(200)는 기 설정된 시간 동안 제6 데이터 조각의 수신을 대기하고, 제6 데이터 조각이 수신되지 않으면 제6 데이터 조각이 미전송됨을 나타내는 정보를 생성하고, 기 설정된 시간 동안 제7 데이터 조각의 수신을 대기할 수 있다. 제7 데이터 조각이 수신되지 않으면 제2 장치(200)는 제7 데이터 조각이 미전송됨을 나타내는 정보를 생성하고, 기 설정된 시간 동안 제8 데이터 조각의 수신을 대기할 수 있다. 제8 데이터 조각이 수신되지 않으면 제2 장치(200)는 제8 데이터 조각이 미전송됨을 나타내는 정보를 생성하고, 타임 아웃이 발생된 것으로 판단할 수 있다. 상기 제2 장치(200)는 제1 내지 제5 데이터 조각에 대한 전송을 나타내는 전송 데이터 조각에 대한 정보 및 제6 내지 제8 데이터 조각에 대한 미전송을 나타내는 미전송 데이터 조각에 대한 정보를 포함하는 제1 데이터 블록의 데이터 조각 정보(1200)를 생성하고, 생성된 제1 데이터 블록의 데이터 조각 정보(1200)를 포함하는 확인 응답 데이터를 제2 통신 채널을 통해서 제1 장치(100)로 전달할 수 있다.
도 13을 참조하면, 제1 장치(100)는 미전송 데이터 조각에 대한 정보에 기반하여 미전송된 제6, 제7 및 제8 데이터 조각들을 확인하고, 확인된 제6, 제7 및 제8 데이터 조각을 제1 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다. 상기 제2 장치(200)는 제1 통신 채널을 통해서 제1 장치(100)로부터 제6, 제7 및 제8 데이터 조각들을 수신하고, 제6, 제7 및 제8 데이터 조각들 각각에 대한 전송을 나타내는 전송 데이터 조각에 대한 정보를 포함하는 제1 데이터 블록의 데이터 조각 정보(1300)를 생성할 수 있다.
하기에서는 제1 통신 채널의 전송 효율 또는 제1 통신 채널의 혼잡 현상 이 발생됨에 따라 데이터 블록의 크기 또는 데이터 조각의 크기를 변경하는 동작에 대해서 설명하도록 한다.
도 14를 참조하면, 제1 장치(100)는 제1 데이터 블록에 해당하는 데이터 조각들에 대한 전송이 완료되면 제2 통신 채널을 통해서 제2 장치(200)로부터 제1 데이터 블록의 데이터 조각 정보(1400)를 포함하는 확인 응답 데이터를 수신할 수 있다. 예를 들어, 제1 장치(100)는 제1 데이터 블록의 데이터 조각 정보(1400)에 기반하여 적어도 하나의 미전송 데이터 조각을 확인할 수 있다. 확인된 적어도 하나의 미전송 데이터 조각의 개수가 제1 임계 개수보다 작으면 제1 장치(100)는 제1 통신 채널에 대한 전송 효율이 높다고 판단하고, 확인된 적어도 하나의 미전송 데이터 조각의 개수가 제2 임계 개수보다 크면 제1 장치(100)는 제1 통신 채널에 대한 전송 효율이 낮다고 판단할 수 있다. 예를 들어, 제1 임계 개수와 제2 임계 개수는 서로 다르거나 같을 수 있고, 제1 임계 개수는 제2 임계 개수보다 작거나 같은 수일 수 있다. 상기 제1 장치(100)는 판단된 전송 효율에 따라 제2 데이터 블록의 크기 또는 제2 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 변경할 수 있다.
예를 들어, 확인된 적어도 하나의 미전송 데이터 조각의 개수가 제1 임계 개수보다 작으면 제1 장치(100)는 전송 효율이 높다고 판단하여 제2 데이터 블록의 크기 또는 제2 데이터 블록에 해당하는 데이터 조각들의 크기를 이전에 전송한 데이터 블록의 크기 또는 데이터 조각의 크기보다 더 크게 변경할 수 있다. 다양한 실시예에서 확인된 적어도 하나의 미전송 데이터 조각의 개수가 제1 임계 개수와 제2 임계 개수 사이인 경우 제1 장치(100)는 전송 효율이 보통이라고 판단하여 제2 데이터 블록의 크기 또는 제2 데이터 블록에 해당하는 데이터 조각들의 크기를 유지할 수도 있다. 다양한 실시예에서 확인된 적어도 하나의 미전송 데이터 조각의 개수가 제2 임계 개수보다 크면 제1 장치(100)는 전송 효율이 낮다고 판단하여 제2 데이터 블록의 크기 또는 제2 데이터 블록에 해당하는 데이터 조각들의 크기를 이전에 전송한 데이터 블록의 크기 또는 데이터 조각의 크기보다 더 작게 변경할 수 있다. 다양한 실시예에서 확인된 적어도 하나의 미전송 데이터 조각의 개수가 제1 임계 개수보다 크면 제1 장치(100)는 전송 효율이 낮다고 판단하여 제2 데이터 블록의 크기 또는 제2 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 이전에 전송한 데이터 블록의 크기 또는 데이터 조각의 크기보다 작게 변경할 수도 있다. 다양한 실시예에서 확인된 적어도 하나의 미전송 데이터 조각의 개수가 제2 임계 개수보다 작으면 제1 장치(100)는 전송 효율이 높다고 판단하여 제2 데이터 블록의 크기 또는 제2 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 이전에 전송한 데이터 블록의 크기 또는 데이터 조각의 크기보다 더 크게 변경할 수도 있다.
다양한 실시예에서 제1 장치(100)는 제1 데이터 블록에 해당하는 데이터 조각들에 대한 전송이 완료되면 제1 데이터 블록을 전송하기 위해 소요된 시간 T1을 산출하고, 산출된 시간 T1과 제1 데이터 블록의 크기에 기반하여 제1 데이터 블록에 대한 전송 속도를 산출할 수 있다. 예를 들어, 산출된 전송 속도가 제1 임계 전송 속도보다 낮으면 제1 장치(100)는 제1 통신 채널에 대한 전송 효율이 낮다고 판단하고, 산출된 전송 속도가 제2 임계 전송 속도 보다 크면 제1 통신 채널에 대한 전송 효율이 높다고 판단할 수 있다. 예를 들어, 제1 임계 전송 속도와 제2 임계 전송 속도는 서로 다르거나 같을 수 있고, 제1 임계 전송 속도는 제2 임계 전송 속도보다 작거나 같은 수일 수 있다. 상기 제1 장치(100)는 판단된 전송 효율에 따라 제2 데이터 블록의 크기 또는 제2 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 변경할 수 있다.
예를 들어, 산출된 전송 속도가 제1 임계 전송 속도보다 작으면 제1 장치(100)는 전송 효율이 낮다고 판단하여 제2 데이터 블록의 크기 또는 제2 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 이전에 전송한 데이터 블록의 크기 또는 데이터 조각의 크기보다 더 작게 변경할 수 있다. 다양한 실시예에서 산출된 전송 속도가 제1 임계 전송 속도와 제2 임계 전송 속도 사이인 경우 제1 장치(100)는 전송 효율이 보통이라고 판단하여 제2 데이터 블록의 크기 또는 제2 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 유지할 수도 있다. 다양한 실시예에서 산출된 전송 속도가 제2 임계 전송 속도보다 크면 제1 장치(100)는 전송 효율이 높다고 판단하여 제2 데이터 블록의 크기 또는 제2 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 이전에 전송한 데이터 블록의 크기 또는 데이터 조각의 크기보다 더 크게 변경할 수 있다. 다양한 실시예에서 산출된 전송 속도가 제1 임계 전송 속도보다 크면 제1 장치(100)는 전송 효율이 높다고 판단하여 제2 데이터 블록의 크기 또는 제2 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 이전에 전송한 데이터 블록의 크기 또는 데이터 조각의 크기보다 더 크게 변경할 수도 있다. 다양한 실시예에서 산출된 전송 속도가 제2 임계 전송 속도보다 작으면 제1 장치(100)는 전송 효율이 낮다고 판단하여 제2 데이터 블록의 크기 또는 제2 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 이전에 전송한 데이터 블록의 크기 또는 데이터 조각의 크기보다 더 작게 변경할 수도 있다.
다양한 실시예에서 제1 장치(100)는 제1 데이터 블록에 해당하는 데이터 조각들에 대한 전송이 완료되면 제2 통신 채널을 통해서 제2 장치(200)로부터 제1 데이터 블록의 데이터 조각 정보(1400)를 포함하는 확인 응답 데이터를 수신할 수 있다. 확인 응답 데이터에 미전송 데이터 조각에 대한 정보가 포함된 경우 제1 장치(100)는 미전송 데이터 조각에 대한 정보에 기반하여 연속적으로 미전송된 특정 개수 이상의 미전송 데이터 조각이 존재하는지를 판단할 수 있다. 연속적으로 미전송된 특정 개수 이상의 미전송 데이터 조각이 존재하면 제1 장치(100)는 혼잡 현상이 발생된 것으로 판단할 수 있다. 이러한 경우 제1 장치(100)는 혼잡 윈도우 크기를 조절하고, 조절된 혼잡 윈도우 크기에 따라 제2 데이터 블록의 크기 또는/및 제2 데이터 블록에 해당하는 데이터 블록들 각각의 크기를 변경할 수 있다. 예를 들어, 제1 데이터 블록을 전송하기 위해 소요된 시간이 T1인 경우 제1 장치(100)는 소요 시간 T1 및 제1 데이터 블록에 해당하는 복수의 데이터 조각들에 대한 개수에 기반하여 제1 장치(100)의 혼잡 윈도우 크기를 산출할 수 있다. 상기 제1 장치(100)는 산출된 혼잡 윈도우 크기에 따라 제2 데이터 블록의 크기 또는/및 제2 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 변경할 수 있다. 상기 변경된 크기의 제2 데이터 블록에 해당하는 데이터 조각들 또는/및 제2 데이터 블록에 해당하는 변경된 크기의 데이터 조각들에 대한 전송이 완료되면 제1 장치(100)는 혼잡 현상이 발생되었는지를 판단하고, 혼잡 현상이 발생된 것으로 판단되면 제2 데이터 블록을 전송하기 위해 소요된 시간 T2 및 제2 데이터 블록에 해당하는 복수의 데이터 조각들에 대한 개수에 기반하여 제1 장치(100)의 혼잡 윈도우 크기를 산출할 수 있다. 상기 제1 장치(100)는 산출된 혼잡 윈도우 크기에 따라 제3 데이터 블록의 크기 또는/및 제3 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 변경할 수 있다. 상기 제1 장치(100)는 변경된 크기의 제3 데이터 블록에 해당하는 데이터 조각들 또는/및 제3 데이터 블록에 해당하는 변경된 크기의 데이터 조각들 각각을 제1 통신 채널을 통해서 제2 장치(200)로 전달할 수 있다. 예를 들어, 제1 장치(100)는 산출된 혼잡 윈도우 크기에 따라 제3 데이터 블록의 크기 또는/및 제3 데이터 블록에 해당하는 데이터 조각들 각각의 크기를 이전에 전송한 데이터 블록의 크기 또는/및 데이터 조각의 크기보다 더 크게 변경하거나, 더 작게 변경하여 전송할 수 있다.
도 15 및 도 16은 본 발명의 실시예에 따른 데이터 전송 방법에 관한 효과를 나타내는 도면들이다.
도 15 및 도 16에 따르면, 각 도면은 상술한 본원의 데이터 전송 방식(Fast Data Transferring Protocol, FDT)을 이용하여 소정의 데이터를 전송한 후 소정의 데이터에 대한 전송 시간 및 소정의 데이터의 크기를 이용하여 실제 전송된 데이터량을 나타내는 굿풋(goodput)을 산출한 결과를 다른 전송 방식을 이용하여 소정의 데이터를 전송하고, 이에 대한 굿풋을 산출한 결과들과 비교한 그래프를 포함할 수 있다. 상기 다른 전송 방식은 쓰나미 UDT(tsunami UDP-based Data Transfer Protocol), SCP(Secure Copy Protocol), UDT, WDT(Warp speed Data Transfer)와 같은 총 5개의 전송 프로토콜을 포함할 수 있다.
도 15는 수신측에서 송신측으로의 단방향 지연시간(Receiver to Sender One-Way Latency)을 나타내는 그래프를 도시한다.
도 15를 참조하면, FDT는 단방향 지연 시간이 증가하더라도 100MB/s 이상의 굿풋을 유지하는데 반해, SCP, WDT 및 UDT는 단방향 지연 시간이 증가할수록 굿풋이 높은 폭으로 60MB/s 이하로 감소하며, 쓰나미 UDT는 60MB/s 이하의 굿풋을 유지하는 것이 확인될 수 있다. 이에 따라, 본 발명은 단방향 전송 지연이 발생 및 증가하더라도 신뢰성 및 전송 속도를 보장할 수 있는 데이터 전송을 할 수 있다.
도 16은 송신측에서 수신측으로의 단방향 패킷 손실율(Sender to Receiver One-Way Packet Loss Rate)을 나타내는 그래프를 도시한다.
도 16을 참조하면, FDT는 단방향 패킷 손실율이 증가하더라도 60MB/s 이상의 굿풋을 유지하는데 반해, SCP, WDT 및 UDT는 단방향 패킷 손실율이 증가할수록 굿풋이 높은 폭으로 20B/s 이하로 감소하며, 쓰나미 UDT는 쓰나미 UDT는 60MB/s 이하의 굿풋을 유지하는 것이 확인될 수 있다. 이에 따라, 본 발명은 단방향 패킷 손실율이 발생 및 증가하더라도 신뢰성 및 전송 속도를 보장할 수 있는 데이터 전송을 할 수 있다.
이와 같이 본 발명은 신뢰성이 높으면서 전송 속도가 향상된 고용량의 데이터 전송 서비스를 제공할 수 있다.
본 발명의 실시예에 따른 장치 및 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다.
컴퓨터 판독 가능 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media) 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 또한 상술한 매체는 프로그램 명령, 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
상술한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 더욱 상세하게 설명하였으나, 본 발명은 반드시 이러한 실시예로 국한되는 것은 아니고, 본 발명의 기술사상을 벗어나지 않는 범위 내에서 다양하게 변형 실시될 수 있다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100: 제1 장치
110: 통신 모듈
120: 메모리
130: 프로세서
200: 제2 장치
210: 통신 모듈
220: 메모리
230: 프로세서

Claims (16)

  1. 데이터 전송을 위해 제2 장치와 제1 통신 채널 및 상기 제1 통신 채널과 상이한 통신 방식을 가지는 제2 통신 채널을 설정하도록 구성된 통신 인터페이스;
    메모리; 및
    상기 통신 인터페이스와 상기 메모리와 연결되는 프로세서를 포함하고,
    상기 프로세서는,
    상기 제2 장치로 전송하고자 하는 데이터를 제1 크기를 가지는 복수의 데이터 블록들로 분할하고,
    상기 복수의 분할된 데이터 블록들 각각을 상기 제1 크기보다 작은 제2 크기를 가지는 복수의 데이터 조각들로 분할하고,
    상기 복수의 분할된 데이터 조각들 각각을 제1 통신 채널을 통해서 상기 제2 장치로 전달하고,
    상기 데이터에 대한 전송이 완료되면 상기 제2 통신 채널을 통해서 상기 제2 장치로부터 미전송 데이터 조각에 대한 정보를 포함하는 확인 응답 데이터를 수신하고,
    상기 미전송 데이터 조각에 대한 정보에 기반하여 상기 복수의 분할된 데이터 조각들 중 적어도 하나의 미전송 데이터 조각을 확인하고,
    상기 확인된 적어도 하나의 미전송 데이터 조각을 상기 제1 통신 채널을 통해서 상기 제2 장치로 전달하고,
    특정 데이터 블록의 크기 및 상기 특정 데이터 블록에 속하는 데이터 조각들 중 상기 제2 장치에 의해서 수신된 적어도 하나의 데이터 조각의 크기에 기반하여 산출된 전송 데이터 조각의 개수를 포함하는 블록 정보 요청 데이터를 수신하도록 구성되고,
    상기 복수의 분할된 데이터 블록들 각각은 상기 블록 정보 요청 데이터에 따라 복수의 데이터 조각들로 분할되는, 데이터 전송 장치.
  2. 제1항에 있어서, 상기 프로세서는,
    상기 데이터의 이름, 상기 데이터의 크기, 상기 제1 크기 및 상기 제2 크기를 포함하는 상세 정보를 생성하고,
    상기 생성된 상세 정보를 포함하는 상세 정보 응답 데이터를 제2 통신 채널을 통해서 제2 장치로 전달하는, 데이터 전송 장치.
  3. 제1항에 있어서, 상기 프로세서는,
    데이터 블록에 대한 정보를 포함하는 블록 정보 응답 데이터를 생성하고,
    상기 생성된 블록 정보 응답 데이터를 상기 제2 통신 채널을 통해서 상기 제2 장치로 전달하고,
    상기 데이터 블록에 대한 정보는,
    상기 데이터 블록의 식별자 정보, 상기 데이터 블록의 크기, 상기 데이터 블록에 속하는 데이터 조각의 크기를 포함하는, 데이터 전송 장치.
  4. 삭제
  5. 제1항에 있어서, 상기 프로세서는,
    상기 전송 데이터 조각의 개수가 상기 제2 장치로 전달된 데이터 조각의 개수와 비교하여 서로 다르면 상기 확인 응답 데이터를 요청하기 위한 확인 요청 데이터를 상기 제2 통신 채널을 통해서 상기 제2 장치로 전달하는, 데이터 전송 장치.
  6. 제1항에 있어서, 상기 프로세서는,
    상기 미전송 데이터 조각의 개수가 기 설정된 제1 임계 개수보다 작으면 다음 데이터 블록의 크기를 상기 제1 크기보다 큰 크기로 변경하거나 상기 다음 데이터 블록에 속하는 데이터 조각의 크기를 상기 제2 크기보다 큰 크기로 변경하는, 데이터 전송 장치.
  7. 제6항에 있어서, 상기 프로세서는,
    상기 미전송 데이터 조각의 개수가 기 설정된 제2 임계 개수보다 크면 상기 다음 데이터 블록의 크기를 상기 제1 크기보다 작은 크기로 변경하거나 상기 다음 데이터 블록에 속하는 데이터 조각의 크기를 상기 제2 크기보다 작은 크기로 변경하는, 데이터 전송 장치.
  8. 제1항에 있어서, 상기 프로세서는,
    특정 데이터 블록을 전송하기 위해 소요된 시간을 산출하고,
    상기 산출된 소요 시간 및 상기 특정 데이터 블록의 크기를 이용하여 상기 특정 데이터 블록에 대한 전송 속도를 산출하고,
    상기 산출된 전송 속도가 기 설정된 제1 임계 전송 속도보다 작으면 다음 데이터 블록의 크기를 상기 제1 크기보다 작은 크기로 변경하거나 상기 다음 데이터 블록에 속하는 데이터 조각의 크기를 상기 제2 크기보다 작은 크기로 변경하는, 데이터 전송 장치.
  9. 제8항에 있어서, 상기 프로세서는,
    상기 산출된 전송 속도가 기 설정된 제2 임계 전송 속도보다 크면 상기 다음 데이터 블록의 크기를 상기 제1 크기보다 큰 크기로 변경하거나 상기 다음 데이터 블록에 속하는 데이터 조각의 크기를 상기 제2 크기보다 큰 크기로 변경하는, 데이터 전송 장치.
  10. 데이터 전송을 위해 제2 장치와 제1 통신 채널 및 상기 제1 통신 채널과 상이한 통신 방식을 가지는 제2 통신 채널을 설정하는 단계;
    상기 제2 장치로 전송하고자 하는 데이터를 제1 크기를 가지는 복수의 데이터 블록들로 분할하는 단계;
    상기 복수의 분할된 데이터 블록들 각각을 상기 제1 크기보다 작은 제2 크기를 가지는 복수의 데이터 조각들로 분할하는 단계;
    상기 복수의 분할된 데이터 조각들 각각을 제1 통신 채널을 통해서 상기 제2 장치로 전달하는 단계;
    상기 데이터에 대한 전송이 완료되면 상기 제2 통신 채널을 통해서 상기 제2 장치로부터 미전송 데이터 조각에 대한 정보를 포함하는 확인 응답 데이터를 수신하는 단계;
    상기 미전송 데이터 조각에 대한 정보에 기반하여 상기 복수의 분할된 데이터 조각들 중 적어도 하나의 미전송 데이터 조각을 확인하는 단계; 및
    특정 데이터 블록의 크기 및 상기 특정 데이터 블록에 속하는 데이터 조각들 중 상기 제2 장치에 의해서 수신된 적어도 하나의 데이터 조각의 크기에 기반하여 산출된 전송 데이터 조각의 개수를 포함하는 블록 정보 요청 데이터를 수신하는 단계를 포함하고,
    상기 복수의 분할된 데이터 블록들 각각은 상기 블록 정보 요청 데이터에 따라 복수의 데이터 조각들로 분할되는, 데이터 전송 장치에서 소정의 데이터를 전송하는 방법.
  11. 삭제
  12. 제10항에 있어서,
    상기 전송 데이터 조각의 개수가 상기 제2 장치로 전달된 데이터 조각의 개수와 비교하는 단계; 및
    상기 전송 데이터 조각의 개수가 상기 제2 장치로 전달된 데이터 조각의 개수와 서로 다르면 상기 확인 응답 데이터를 요청하기 위한 확인 요청 데이터를 상기 제2 통신 채널을 통해서 상기 제2 장치로 전달하는 단계를 더 포함하는, 데이터 전송 장치에서 소정의 데이터를 전송하는 방법.
  13. 제10항에 있어서,
    상기 미전송 데이터 조각의 개수가 기 설정된 제1 임계 개수보다 작으면 다음 데이터 블록의 크기를 상기 제1 크기보다 큰 크기로 변경하거나 상기 다음 데이터 블록에 속하는 데이터 조각의 크기를 상기 제2 크기보다 큰 크기로 변경하는 단계를 더 포함하는, 데이터 전송 장치에서 소정의 데이터를 전송하는 방법.
  14. 제13항에 있어서,
    상기 미전송 데이터 조각의 개수가 기 설정된 제2 임계 개수보다 크면 상기 다음 데이터 블록의 크기를 상기 제1 크기보다 작은 크기로 변경하거나 상기 다음 데이터 블록에 속하는 데이터 조각의 크기를 상기 제2 크기보다 작은 크기로 변경하는 단계를 더 포함하는, 데이터 전송 장치에서 소정의 데이터를 전송하는 방법.
  15. 제10항에 있어서,
    특정 데이터 블록을 전송하기 위해 소요된 시간을 산출하는 단계;
    상기 산출된 소요 시간 및 상기 특정 데이터 블록의 크기를 이용하여 상기 특정 데이터 블록에 대한 전송 속도를 산출하는 단계; 및
    상기 산출된 전송 속도가 기 설정된 제1 임계 전송 속도보다 작으면 다음 데이터 블록의 크기를 상기 제1 크기보다 작은 크기로 변경하거나 상기 다음 데이터 블록에 속하는 데이터 조각의 크기를 상기 제2 크기보다 작은 크기로 변경하는 단계를 더 포함하는, 데이터 전송 장치에서 소정의 데이터를 전송하는 방법.
  16. 제15항에 있어서,
    상기 산출된 전송 속도가 기 설정된 제2 임계 전송 속도보다 크면 상기 다음 데이터 블록의 크기를 상기 제1 크기보다 큰 크기로 변경하거나 상기 다음 데이터 블록에 속하는 데이터 조각의 크기를 상기 제2 크기보다 큰 크기로 변경하는 단계를 더 포함하는, 데이터 전송 장치에서 소정의 데이터를 전송하는 방법.
KR1020180137576A 2018-11-09 2018-11-09 데이터 전송 장치 및 그 방법 KR101992061B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180137576A KR101992061B1 (ko) 2018-11-09 2018-11-09 데이터 전송 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180137576A KR101992061B1 (ko) 2018-11-09 2018-11-09 데이터 전송 장치 및 그 방법

Publications (1)

Publication Number Publication Date
KR101992061B1 true KR101992061B1 (ko) 2019-09-30

Family

ID=68098201

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180137576A KR101992061B1 (ko) 2018-11-09 2018-11-09 데이터 전송 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR101992061B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102564057B1 (ko) * 2022-04-04 2023-08-07 서울대학교산학협력단 오브젝트 레벨 혼잡 제어 장치 및 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080092654A (ko) * 2007-04-13 2008-10-16 삼성전자주식회사 광대역 무선 접속 시스템에서 상향링크 대역폭 요청 장치및 방법
KR20100104149A (ko) * 2009-03-16 2010-09-29 주식회사 팬택 전송계층 성능 향상을 위한 전송계층 제어장치 및 전송속도와 신뢰성을 동시에 보장할 수 있는 패킷 송신 방법
KR20140126055A (ko) * 2013-04-22 2014-10-30 삼성전자주식회사 데이터 송신 방법 및 그 전자 장치
KR20150111478A (ko) * 2014-03-25 2015-10-06 (주)브레닉스 무선연결에 따른 데이터전송시스템 및 이를 통한 방법
KR20170142513A (ko) * 2016-06-17 2017-12-28 주식회사 케이티 다중망 병합 전송 장치, 그리고 이의 패킷 스케줄링 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080092654A (ko) * 2007-04-13 2008-10-16 삼성전자주식회사 광대역 무선 접속 시스템에서 상향링크 대역폭 요청 장치및 방법
KR20100104149A (ko) * 2009-03-16 2010-09-29 주식회사 팬택 전송계층 성능 향상을 위한 전송계층 제어장치 및 전송속도와 신뢰성을 동시에 보장할 수 있는 패킷 송신 방법
KR20140126055A (ko) * 2013-04-22 2014-10-30 삼성전자주식회사 데이터 송신 방법 및 그 전자 장치
KR20150111478A (ko) * 2014-03-25 2015-10-06 (주)브레닉스 무선연결에 따른 데이터전송시스템 및 이를 통한 방법
KR20170142513A (ko) * 2016-06-17 2017-12-28 주식회사 케이티 다중망 병합 전송 장치, 그리고 이의 패킷 스케줄링 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102564057B1 (ko) * 2022-04-04 2023-08-07 서울대학교산학협력단 오브젝트 레벨 혼잡 제어 장치 및 방법

Similar Documents

Publication Publication Date Title
WO2018127238A1 (zh) 信息处理方法及装置
RU2461147C2 (ru) Способ обработки радиопротокола в системе подвижной связи и передатчик подвижной связи
US7609698B2 (en) Apparatus and method for retransmitting data in mobile communication system
EP3557801B1 (en) Segment retransmission method and device
RU2408994C1 (ru) Способ и устройство для выполнения передачи обслуживания с использованием переупорядочивания по протоколу конвергенции пакетных данных (pdcp) в системе мобильной связи
WO2018130034A1 (zh) 数据处理方法、装置和系统
US9226195B2 (en) Method for determining RLC Data PDU size in wireless communications system according to control data
US20060062323A1 (en) System and method for polling a protocol data unit of a transmission buffer
EP2424144A1 (en) Communication method and equipment of the header compression
CN111435866B (zh) 数据传输方法及相关装置
US20090086760A1 (en) System and method for providing status reports of transmitted data packets in a data communications system
KR101721268B1 (ko) 광대역 근거리 무선 통신 장치 및 방법
CN108632326B (zh) 一种协议数据单元传输数据的方法及装置
KR100624618B1 (ko) 제어 패이로드데이터유닛을 이용한 데이터와 제어정보의병렬 송수신 방법
KR101742909B1 (ko) 데이터 유닛 전송 장치 및 그 동작 방법
KR101992061B1 (ko) 데이터 전송 장치 및 그 방법
JP2002171257A (ja) 無線伝送装置及び無線伝送方法
CN114126084A (zh) 数据处理方法、基站、终端及存储介质
JP4217534B2 (ja) パケット送信装置、パケット受信装置、方法及びプログラム
CN115633104B (zh) 数据发送方法、数据接收方法、装置及数据收发系统
KR100612654B1 (ko) 자동 재송신 요청을 위한 프레임 생성 장치 및 방법
KR20060115498A (ko) 무선 통신 시스템의 송수신 단에서 상태정보를 포함하는pdu를 송수신하는 방법
KR101012549B1 (ko) 트래픽 특성에 따른 패킷의 집합 통신 방법 및 장치
WO2011061855A1 (ja) 無線通信装置、システム及び再送制御方法
KR20120024107A (ko) Rlc 계층에서의 데이터 전송을 위한 시스템 및 그 방법