KR101611663B1 - 비연결 지향형 프로토콜을 이용한 데이터 통신 - Google Patents
비연결 지향형 프로토콜을 이용한 데이터 통신 Download PDFInfo
- Publication number
- KR101611663B1 KR101611663B1 KR1020130128621A KR20130128621A KR101611663B1 KR 101611663 B1 KR101611663 B1 KR 101611663B1 KR 1020130128621 A KR1020130128621 A KR 1020130128621A KR 20130128621 A KR20130128621 A KR 20130128621A KR 101611663 B1 KR101611663 B1 KR 101611663B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- packet
- lost
- acknowledgment message
- transmitter
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/55—Prevention, detection or correction of errors
- H04L49/552—Prevention, detection or correction of errors by ensuring the integrity of packets received through redundant connections
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Communication Control (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
비연결 지향형 프로토콜을 이용한 데이터 통신 방법이 제공된다. 상기 데이터 통신 방법은, 복수의 데이터 패킷 중 대응하는 데이터 패킷이 데이터 송신기로부터 수신되었는지 여부를 각각 나타내는 지시자들을 구성하는 단계; 상기 지시자들에 대한 논리 연산을 수행하여 상기 복수의 데이터 패킷 중 유실된 데이터 패킷이 존재하는지 여부를 판정하는 단계; 및 상기 판정 결과 유실된 데이터 패킷이 존재하는 경우, 상기 지시자들을 포함하는 확인응답 메시지를 상기 데이터 송신기로 송신하는 단계를 포함한다.
Description
본 발명의 실시예는 데이터 통신에 관한 것으로서, 더욱 상세하게는 비연결 지향형 프로토콜(connectionless-oriented protocol)을 이용하여 데이터 통신을 수행하는 것과 관련된다.
컴퓨터 네트워크는 여러 컴퓨터들 간의 통신을 가능하게 한다. 예를 들어, 컴퓨터 네트워크는 로컬 영역 네트워크(Local Area Network: LAN), 광대역 네트워크(Wide Area Network: WAN), 인터넷, 무선 네트워크, 혼성 디바이스 네트워크 등을 포함한다.
이러한 컴퓨터 네트워크에서, 데이터는 하나 이상의 패킷의 형태로 전송될 수 있다. 수신되는 모든 패킷들로부터 원래 전송된 데이터가 재구성된다. 몇몇 예에서, 패킷들의 일련번호(sequence number)는 데이터의 재구성에 중요하다.
소정의 네트워크 환경(예컨대, 무선 네트워크 환경)에서, 패킷들은 종종 전송되는 동안 네트워크 상의 간섭, 전송 채널의 특성 등으로 인해 유실(lost) 되기 쉽다. 따라서, 가령 인터넷 상의 컴퓨터들 간에는 데이터를 패킷의 형태로 신뢰성 있게 보내기 위해 트랜스포트 제어 프로트콜(Transmission Control Protocol: TCP)이 사용된다. TCP는 트랜스포트 계층(transport layer)에서 사용될 수 있는 프로토콜이다. TCP는 연결 지향형(connection-oriented) 프로토콜로서, 데이터를 송수신하는 컴퓨터들 간의 메시지들이 각 컴퓨터의 애플리케이션에 의해 교환되는 시간 동안 연결의 수립(establishment) 및 유지를 가능하게 한다.
반면, 트랜스포트 계층의 다른 프로토콜인 사용자 데이터그램 프로토콜(User Datagram Protocol: UDP)은 비연결 지향형 프로토콜이다. UDP는 데이터를 데이터 송신기에서 데이터 수신기로 송신함으로써 통신을 수행하도록 하되, 데이터 송신기에서 데이터를 전송한다는 신호를 미리 보내는 절차나 데이터 수신기의 상태를 확인하는 절차를 수반하지 않는다. 이러한 UDP 자체는 데이터 수신기가 데이터를 정상적으로 수신하였는지 여부를 데이터 송신기가 확인하는 메커니즘을 제공하지 않는바, UDP는 TCP에 비해 신뢰성 있는 전송을 보장하지 못한다.
데이터 전송을 위한 연결의 수립 및 해제를 수행할 과정이 불필요한 UDP는 더욱 효율적이고 간편한 데이터 전송에 적합하고, 예컨대 무선 네트워크 환경에서 TCP보다 빠른 데이터 전송을 가능하게 한다.
이러한 UDP를 기반으로 한 데이터 전송에서 신뢰성을 향상시키기 위해 재전송 메커니즘이 사용될 수 있다. 그러한 재전송 메커니즘의 예는 자동 반복 요청(Automatic Repeat reQuest: ARQ) 방식(가령, Go-Back-N ARQ 방식 및 Selective-Reject ARQ 방식 등)을 포함한다. ARQ 방식은 데이터 송신기로부터 전송된 패킷들 중 데이터 수신기에서 수신되지 않은 패킷(즉, 유실된 패킷)을 전송된 패킷들의 일련번호를 이용하여 검출하고, 유실된 패킷의 검출에 응답하여 데이터 수신기로부터 데이터 송신기로 부정 확인응답(Negative ACKnowledgement: NACK)을 송신함으로써 유실된 패킷의 재전송을 요청한다.
ARQ 방식에서 어떤 패킷에 대한 NACK가 데이터 수신기로부터 송신되었으나 데이터 송신기에 전달되지 않고 유실되는 경우 문제가 될 수 있다. 통상적으로, 데이터 송신기가 그 패킷에 대한 NACK를 재차 수신하거나 또는 데이터 송신기가 그 패킷의 수신을 나타내는 확인응답(ACKnowledgement: ACK)을 그 패킷의 전송 후 일정 시간 동안 수신하지 못하고 타임아웃(timeout)될 때까지 그 패킷은 재전송되지 않는다. 따라서, 어떤 패킷이 수신되지 않았다는 NACK 메시지가 유실되면, 그 패킷의 재전송이 수행될 때까지 상당한 시간이 소요될 수 있다.
또한, ARQ 방식에서 어떤 패킷에 대한 ACK가 데이터 수신기로부터 송신되었으나 데이터 송신기에 전달되지 않고 유실되는 경우, 그 패킷은 이미 수신되었더라도 데이터 송신기가 타임아웃된 후 불필요하게 재전송된다.
개시된 실시예들은 UDP와 같은 비연결 지향형 프로토콜을 통한 데이터 통신에서 재전송 메커니즘을 채택하되, 통상적인 ACK/NACK 대신에, 데이터 패킷의 집합에 대하여 각 데이터 패킷이 데이터 수신기에서 수신되었는지 여부를 나타내는 정보를 포함하는 새로운 확인응답 메시지(acknowledgement message)를 이용한다. 예컨대, 전술한 정보는, 데이터 패킷의 수신에 따라 갱신되어 위 데이터 패킷 집합의 모든 데이터 패킷이 수신될 때까지 그 집합 내 각 데이터 패킷의 수신 여부의 표시를 유지할 수 있는 일종의 누적 정보(cumulative information)이다. 이와 같은 메커니즘은 기존의 ARQ 방식에서 ACK/NACK의 유실에 따라 패킷 재전송이 지연되거나 또는 패킷이 중복적으로 재전송되는 것을 방지할 수 있다.
개시된 실시예들에 따르면, 확인응답 메시지는 데이터 패킷의 유실이 발생한 경우에 송신될 수 있고, 또한 유실된 데이터 패킷이 재전송되어 수신된 경우에 송신될 수 있다. 따라서, 확인응답 메시지가 송신되는 빈도는 기존의 ARQ 방식에서 ACK/NACK가 송신되는 빈도보다 적다.
개시된 실시예들에 따르면, 확인응답 메시지들이 송신될 때까지 데이터 패킷 집합 내의 각 데이터 패킷에 대한 수신 여부에 관하여 누적된 정보가 그 확인응답 메시지들 내에 포함된다. 따라서, 기존의 ARQ 방식에 비해, 어떤 확인응답 메시지가 유실되더라도, 유실된 확인응답 메시지에 따라 데이터 송신기에서 수행되어야 했던 동작들이 신속한 시간 내에 수행될 수 있다. 유실된 확인응답 메시지에 후속하는 확인응답 메시지가 데이터 수신기에서 수신되면, 후속 확인 응답 메시지에 포함된 위 정보에 기반하여 그 동작들이 수행될 수 있기 때문이다.
예시적인 실시예에 따르면, 비연결 지향형 프로토콜(connectionless-oriented protocol)을 이용한 데이터 통신 방법으로서, 복수의 데이터 패킷 중 대응하는 데이터 패킷이 데이터 송신기로부터 수신되었는지 여부를 각각 나타내는 지시자(indicator)들을 구성하는 단계; 상기 지시자들에 대한 논리 연산(logical operation)을 수행하여 상기 복수의 데이터 패킷 중 유실된 데이터 패킷의 존재 여부를 판정하는 단계; 및 상기 판정 결과 유실된 데이터 패킷이 존재하는 경우, 상기 지시자들을 포함하는 확인응답 메시지(acknowledgement message)를 상기 데이터 송신기로 송신하는 단계를 포함하는, 데이터 통신 방법이 제공된다.
상기 데이터 통신 방법의 일 측면에 따르면, 상기 논리 연산은 상기 지시자들 각각이 상기 지시자들 중 다른 지시자와 무관하게 다루어지는 방식으로 수행된다.
상기 데이터 통신 방법의 일 측면에 따르면, 상기 데이터 통신 방법은, 상기 확인응답 메시지의 송신 이후에 상기 데이터 송신기로부터 재전송된 데이터 패킷을 수신하는 것에 응답하여, 상기 재전송된 데이터 패킷의 수신에 따라 갱신된 상기 지시자들을 포함하는 다른 확인응답 메시지를 상기 데이터 송신기로 송신하는 단계를 더 포함한다.
상기 데이터 통신 방법의 일 측면에 따르면, 상기 논리 연산은 상기 복수의 데이터 패킷 중 이전에 유실된 데이터 패킷을 나타내는 유실 정보 및 상기 복수의 데이터 패킷 중 이전에 수신된 데이터 패킷의 일련번호 중 가장 큰 일련번호에 기반한다.
상기 데이터 통신 방법의 일 측면에 따르면, 상기 데이터 통신 방법은, 상기 지시자들에 기반하여, 상기 복수의 데이터 패킷 중 몇 개의 데이터 패킷이 유실되었는지 및 상기 복수의 데이터 패킷 중 어느 데이터 패킷이 유실되었는지 중 적어도 하나를 식별하는 단계를 더 포함한다.
상기 데이터 통신 방법의 일 측면에 따르면, 상기 데이터 통신 방법은, 상기 확인응답 메시지를 상기 데이터 송신기로 재전송하는 데에 이용 가능한 시구간(time period)을 설정하는 단계를 더 포함한다.
상기 데이터 통신 방법의 일 측면에 따르면, 상기 비연결 지향형 프로토콜은 사용자 데이터그램 프로토콜(User Datagram Protocol: UDP)을 포함한다.
다른 예시적인 실시예에 따르면, 비연결 지향형 프로토콜을 이용한 데이터 통신 방법으로서, 복수의 데이터 패킷 중 대응하는 데이터 패킷이 데이터 수신기에 수신되었는지 여부를 각각 나타내는 지시자들을 포함하는 확인응답 메시지를 상기 데이터 수신기로부터 수신하는 단계; 상기 정보에 기반하여 상기 복수의 데이터 패킷 중에서 유실된 데이터 패킷을 식별하는 단계; 및 상기 유실된 데이터 패킷의 식별에 응답하여, 상기 유실된 데이터 패킷을 상기 데이터 수신기로 재전송하는 데에 이용 가능한 시구간을 설정하는 단계를 포함하는, 데이터 통신 방법이 제공된다.
상기 데이터 통신 방법의 일 측면에 따르면, 상기 논리 연산은 상기 지시자들 각각이 상기 지시자들 중 다른 지시자와 무관하게 다루어지는 방식으로 수행된다.
상기 데이터 통신 방법의 일 측면에 따르면, 상기 데이터 통신 방법은, 상기 유실된 데이터 패킷이 재전송된 이후에 상기 데이터에서 수신되었음을 나타내도록 갱신된 상기 지시자들을 포함하는 다른 확인응답 메시지를 상기 데이터 수신기로부터 수신하는 것에 응답하여, 상기 유실된 데이터 패킷의 추가적인 재전송을 방지하기 위하여 상기 시구간의 설정을 해제하는 단계를 더 포함한다.
상기 데이터 통신 방법의 일 측면에 따르면, 상기 데이터 통신 방법은, 상기 시구간 동안 상기 유실된 데이터 패킷을 반복적으로 재전송하는 단계를 더 포함한다.
상기 데이터 통신 방법의 일 측면에 따르면, 상기 비연결 지향형 프로토콜은 사용자 데이터그램 프로토콜을 포함한다.
다른 예시적인 실시예에 따르면, 상기 방법들 중 어느 하나를 실행하기 위한 컴퓨터 프로그램이 저장된 컴퓨터 판독가능 저장 매체가 제공된다.
다른 예시적인 실시예에 따르면, 비연결 지향형 프로토콜을 이용하여 데이터 통신을 수행하는 데이터 수신기로서, 복수의 데이터 패킷 중 대응하는 데이터 패킷이 데이터 송신기로부터 수신되었는지 여부를 각각 나타내는 지시자들을 구성하고, 상기 지시자들에 대한 논리 연산을 수행하여 상기 복수의 데이터 패킷 중 유실된 데이터 패킷의 존재 여부를 판정하는 동작을 수행하는 패킷 유실 확인부; 및 상기 판정 결과 유실된 데이터 패킷이 존재하는 경우, 상기 지시자들을 포함하는 확인응답 메시지를 상기 데이터 송신기로 송신하는 확인응답 메시지 전송부를 포함하는, 데이터 수신기가 제공된다.
상기 데이터 수신기의 일 측면에 따르면, 상기 논리 연산은 상기 지시자들 각각이 상기 지시자들 중 다른 지시자와 무관하게 다루어지는 방식으로 수행된다.
상기 데이터 수신기의 일 측면에 따르면, 상기 패킷 유실 확인부는 또한, 상기 확인응답 메시지의 송신 이후에 상기 데이터 송신기로부터 재전송된 데이터 패킷의 수신에 따라 상기 정보를 갱신하고, 상기 확인응답 메시지 전송부는 또한, 상기 재전송된 데이터 패킷의 수신에 응답하여, 상기 갱신된 정보를 포함하는 다른 확인응답 메시지를 상기 데이터 송신기로 송신한다.
상기 데이터 수신기의 일 측면에 따르면, 상기 논리 연산은 상기 복수의 데이터 패킷 중 이전에 유실된 데이터 패킷을 나타내는 유실 정보 및 상기 복수의 데이터 패킷 중 이전에 수신된 데이터 패킷의 일련번호 중 가장 큰 일련번호에 기반한다.
상기 데이터 수신기의 일 측면에 따르면, 상기 패킷 유실 확인부는 또한, 상기 지시자들에 기반하여, 상기 복수의 데이터 패킷 중 몇 개의 데이터 패킷이 유실되었는지 및 상기 복수의 데이터 패킷 중 어느 데이터 패킷이 유실되었는지 중 적어도 하나를 식별한다.
상기 데이터 수신기의 일 측면에 따르면, 상기 확인응답 메시지 전송부는 또한, 상기 확인응답 메시지를 상기 데이터 송신기로 재전송하는 데에 이용 가능한 시구간을 설정한다.
상기 데이터 수신기의 일 측면에 따르면, 상기 비연결 지향형 프로토콜은 사용자 데이터그램 프로토콜을 포함한다.
다른 예시적인 실시예에 따르면, 비연결 지향형 프로토콜을 이용하여 데이터 통신을 수행하는 데이터 송신기로서, 복수의 데이터 패킷을 데이터 수신기에 전송하도록 구성된 패킷 전송부; 및 상기 복수의 데이터 패킷 중 대응하는 데이터 패킷이 상기 데이터 수신기에 수신되었는지 여부를 각각 나타내는 지시자들을 포함하는 확인응답 메시지를 상기 데이터 수신기로부터 수신하고, 상기 지시자들에 대한 논리 연산을 수행하여 상기 복수의 데이터 패킷 중 유실된 데이터 패킷을 식별하는 동작을 수행하며, 상기 유실된 데이터 패킷의 식별에 응답하여, 상기 유실된 데이터 패킷을 상기 데이터 수신기로 재전송하는 데에 이용 가능한 시구간을 설정하는 재전송 처리부를 포함하는, 데이터 송신기가 제공된다.
상기 데이터 송신기의 일 측면에 따르면, 상기 논리 연산은 상기 지시자들 각각이 상기 지시자들 중 다른 지시자와 무관하게 다루어지는 방식으로 수행된다.
상기 데이터 송신기의 일 측면에 따르면, 상기 재전송 처리부는 또한, 상기 유실된 데이터 패킷이 재전송된 이후에 상기 데이터 수신기에서 수신되었음을 나타내도록 갱신된 상기 지시자들을 포함하는 다른 확인응답 메시지를 상기 데이터 수신기로부터 수신하는 것에 응답하여, 상기 유실된 데이터 패킷의 추가적인 재전송을 방지하기 위하여 상기 시구간의 설정을 해제한다.
상기 데이터 송신기의 일 측면에 따르면, 상기 패킷 전송부는 또한, 상기 다른 확인응답 메시지를 상기 시구간 동안 상기 유실된 데이터 패킷을 반복적으로 재전송한다.
상기 데이터 송신기의 일 측면에 따르면, 상기 비연결 지향형 프로토콜은 사용자 데이터그램 프로토콜을 포함한다.
소정의 실시예에 따르면, 기존의 ARQ 방식에서 ACK/NACK의 유실에 따라 패킷 재전송이 지연되거나 또는 패킷이 중복적으로 재전송되는 것을 방지할 수 있다.
소정의 실시예에 따른 확인응답 메시지가 데이터 수신기로부터 데이터 송신기로 송신되는 횟수의 기대값은 기존의 ARQ 방식에서 ACK/NACK에 비해 작다.
소정의 실시예에 따르면, 확인응답 메시지가 유실되더라도, 유실된 확인응답 메시지에 따라 수행되어야 했던 동작들이 신속한 시간 내에 수행될 수 있다.
도 1은 본 발명의 실시예에 따라 데이터 통신을 수행하는 시스템을 도시한다.
도 2는 본 발명의 실시예에 따른 데이터 패킷의 구조를 설명하기 위한 도면이다.
도 3은 본 발명의 실시예에 따라 데이터 패킷 집합 내의 각 데이터 패킷의 수신 여부를 나타내도록 구성된 정보의 구조를 도시한다.
도 4는 본 발명의 실시예에 따라 유실된 데이터 패킷의 존재 여부를 판정하기 위한 비트 연산을 설명하기 위한 도면이다.
도 5는 본 발명의 실시예에 따라 데이터 송신기에서 데이터 수신기로 데이터 패킷들이 전달되는 절차를 설명하기 위한 도면이다.
도 2는 본 발명의 실시예에 따른 데이터 패킷의 구조를 설명하기 위한 도면이다.
도 3은 본 발명의 실시예에 따라 데이터 패킷 집합 내의 각 데이터 패킷의 수신 여부를 나타내도록 구성된 정보의 구조를 도시한다.
도 4는 본 발명의 실시예에 따라 유실된 데이터 패킷의 존재 여부를 판정하기 위한 비트 연산을 설명하기 위한 도면이다.
도 5는 본 발명의 실시예에 따라 데이터 송신기에서 데이터 수신기로 데이터 패킷들이 전달되는 절차를 설명하기 위한 도면이다.
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
본 발명의 기술적 사상은 청구범위에 의해 결정되며, 이하의 실시예는 본 발명의 기술적 사상을 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 효율적으로 설명하기 위한 일 수단일 뿐이다.
도 1은 본 발명의 실시예에 따라 데이터 통신을 수행하는 시스템을 도시한다.
도 1에 나타낸 바와 같이, 예시적인 데이터 통신 시스템(100)은 데이터 송신기(110) 및 데이터 수신기(120)를 포함한다. 데이터 송신기(110)는 비연결 지향형 프로토콜을 이용하여 데이터를 전송하도록 구성되며, 데이터 수신기(120)는 이러한 비연결 지향형 프로토콜을 이용하여 전송되는 데이터를 수신하도록 구성된다. 데이터 통신 시스템(100)에서 이용되는 비연결 지향형 프로토콜은 UDP를 포함할 수 있다.
예시적인 실시예에 따르면, 데이터 송신기(110)는 패킷화부(111), 전송 버퍼(113), 패킷 전송부(115) 및 재전송 처리부(117)를 포함하고, 데이터 수신기(120)는 패킷 수신부(121), 수신 버퍼(123), 패킷 유실 확인부(125) 및 확인응답 메시지 전송부(127)를 포함한다.
데이터 송신기(110)의 패킷화부(111)는 전송될 데이터의 입력을 수신하고, 그 데이터를 각각 소정의 크기를 갖는 패킷들로 변환한다. 이와 같이 패킷화된 데이터는 데이터 송신기(110)의 전송 버퍼(113)에 저장된다. 데이터 송신기(110)의 패킷 전송부(115)는 전송 버퍼(113)에 저장된 데이터 패킷을 데이터 수신기(120)로 전송한다.
데이터 수신기(120)의 패킷 수신부(121)는 데이터 송신기(110)의 패킷 전송부(115)로부터 전송된 데이터 패킷을 수신하도록 구성된다. 수신된 데이터 패킷은 데이터 수신기(120)의 수신 버퍼(123)에 저장된다. 수신 버퍼(123)에 저장된 데이터 패킷들로부터 원래 전송된 데이터가 재구성된다.
예시적인 실시예에서, 데이터 패킷은 헤더(header) 및 데이터 페이로드(data payload)를 포함한다. 예를 들어, 전송될 데이터의 일부분인 데이터 페이로드에 헤더가 추가되는 방식으로 데이터 송신기(110)의 패킷화부(111)에서 데이터 패킷이 생성된다. 데이터 패킷이 데이터 수신기(120)에서 수신되는 경우, 수신된 데이터 패킷의 헤더에 포함된 정보는 데이터 수신기(120)가 그 데이터 패킷을 관리하는 데에 이용할 수 있다. 예를 들어, 데이터 패킷의 헤더는 그 데이터 패킷에 부여되는 일련번호를 포함할 수 있다.
데이터 송신기(110)로부터 전송되는 데이터 패킷의 예시적인 구조가 도 2를 참조하여 이하에서 더욱 상세히 논의된다. 도 2에 도시된 바와 같이, 예시적인 데이터 패킷(220)은 n-7 바이트의 데이터 페이로드 및 데이터 페이로드 앞의 7 바이트의 헤더를 포함한다. 데이터 패킷(220)의 길이 n은 가변적이다. 데이터 패킷(220)의 7 바이트의 헤더가 나타내는 정보는 수신 버퍼(123)에 저장되는 데이터 패킷들이 도 2에 도시된 X 개의 데이터 패킷의 블록(210) 단위로 관리될 수 있도록 한다. 데이터 블록(210)에 포함되는 패킷의 개수 X는 가변적이다.
데이터 패킷(220)의 헤더 중에서, 첫 번째 바이트(바이트 0)는 데이터 패킷(220)의 메시지 타입을 나타내고, 다음 2 바이트(바이트 1 및 바이트 2)는 데이터 패킷(220)이 속한 데이터 블록(210)의 인덱스를 나타내며, 다음 2 바이트(바이트 3 및 바이트 4)는 그 데이터 블록(210)에서 데이터 패킷(220)이 갖는 인덱스(예컨대, i)를 나타내고, 다음 2 바이트(바이트 5 및 바이트 6)는 그 데이터 블록(210)에 포함된 데이터 패킷의 개수(예컨대, X)를 나타낸다. 따라서, 데이터 수신기(120)의 패킷 수신부(121)가 데이터 패킷(220)을 수신하는 경우, 수신 버퍼(123)에서 데이터 패킷(220)이 저장될 위치가 데이터 패킷(220)의 헤더로부터 도출될 수 있다.
도 1을 다시 참조하여, 전송된 데이터 패킷들 중에서 유실된 데이터 패킷의 재전송을 위한 과정을 이하에서 설명한다.
데이터 수신기(120)의 패킷 유실 확인부(125)는 수신 버퍼(123)에 저장된 소정의 개수의 데이터 패킷의 집합(set) 내의 각 데이터 패킷이 데이터 송신기(110)로부터 수신되었는지 여부를 나타내는 정보(이하, “패킷 수신 여부 정보”라고도 지칭함)를 구성하고 관리한다. 예컨대, 이 정보는 지시자(indicator)들을 포함할 수 있고, 각각의 지시자는 데이터 패킷 집합 내의 복수의 데이터 패킷 중 대응하는 데이터 패킷이 데이터 송신기(110)로부터 수신되었는지 여부를 나타낼 수 있다. 각 지시자는 위 정보 내의 하나의 플래그 또는 비트일 수 있다. 패킷 수신 여부 정보는 하나의 데이터 패킷이 데이터 수신기(120)에서 수신될 때마다 그 데이터 패킷이 데이터 수신기(120)에서 수신되었음을 나타내도록 갱신될 수 있다.
도 3은 본 발명의 실시예에 따라 데이터 패킷 집합 내의 각 데이터 패킷의 수신 여부를 나타내도록 구성된 정보의 구조를 도시한다. 예시적인 실시예에서, 패킷 유실 확인부(125)는 도 2에 도시된 데이터 블록(210)의 소정의 서브-블록(sub-block)에 포함된 데이터 패킷 각각의 수신 여부를 나타내기 위해 도 3의 64비트 블록슬라이스(BlockSlice) 구조(310)를 유지한다. 블록슬라이스 구조(310)에서 비트 14부터 비트 63까지의 50 비트들은 서브-블록에 포함된 데이터 패킷들 각각의 수신 여부를 나타내는 플래그들이다. 서브-블록에 포함된 데이터 패킷이 수신될 때마다 패킷 유실 확인부(125)는 그 데이터 패킷에 대응하는 플래그 비트를 1로 설정한다. 즉, 하나의 블록슬라이스 구조는 50개의 데이터 패킷의 집합에 대하여 각 데이터 패킷이 데이터 수신기(120)에서 수신되었는지 여부를 나타내는 정보를 포함한다.
블록슬라이스 구조(310)에서, 비트 0부터 비트 4까지의 5 비트들은 데이터 블록(210)에서 서브-블록이 갖는 인덱스를 나타낸다. 예컨대, 이 5 비트의 서브-블록 인덱스가 0일 경우 50 비트의 패킷 수신 여부 플래그들은 데이터 블록(210)의 패킷 0부터 패킷 49까지의 50 개의 데이터 패킷의 수신 여부를 나타내고, 서브-블록 인덱스가 1일 경우 패킷 수신 여부 플래그들은 데이터 블록(210)의 패킷 50부터 패킷 99까지의 50개의 데이터 패킷의 수신 여부를 나타낸다.
블록슬라이스 구조(310)의 비트 5는 모든 패킷이 수신되었을 경우 1로 설정되고 그렇지 않으면 0으로 설정되며, 비트 6은 모든 패킷이 유실된 경우 1로 설정되고 그렇지 않으면 0으로 설정된다. 블록슬라이스 구조(310)의 비트 7은 현재 수신 중인 서브-블록에 대하여 1로 설정되고 그렇지 않으면 0으로 설정되는 프래그먼트(fragment) 비트이고, 비트 8부터 비트 13까지의 6 비트는 서브-블록 내의 현재까지 수신된 데이터 패킷이 갖는 인덱스(예컨대, 패킷(220)의 패킷 인덱스) 중 가장 큰 인덱스를 나타낸다. 이 수신 패킷의 최대 인덱스를 나타내는 6비트들은 데이터 패킷이 수신될 때마다 수신된 데이터 패킷의 인덱스와 비교되고, 그러한 비교의 결과에 따라 갱신될 수 있다.
다시 도 1을 참조하여, 패킷 유실 확인부(125)의 동작을 더 설명한다.
데이터 패킷 집합 내 복수의 데이터 패킷 중 대응하는 데이터 패킷의 수신 여부를 각각 나타내는 지시자들을 포함하는 정보에 기반하여, 패킷 유실 확인부(125)는 데이터 패킷 집합 내의 데이터 패킷 중에서 유실된 데이터 패킷이 존재하는지 여부를 판정한다. 추가적으로, 유실된 데이터 패킷의 존재 여부는 복수의 데이터 패킷 중 이전에 유실된 데이터 패킷을 나타내는 유실 정보 및 복수의 데이터 패킷 중 이전에 수신된 데이터 패킷의 일련번호 중 가장 큰 일련번호(예컨대, 블록슬라이스 구조(310) 내 수신 패킷의 최대 인덱스)에 기반하여 판정될 수 있다. 나아가, 패킷 유실 확인부(125)는 전술한 패킷 수신 여부 정보에 기반하여 데이터 패킷 집합 내의 데이터 패킷 중에서 유실된 데이터 패킷의 개수 및/또는 유실된 데이터 패킷이 무엇인지를 식별할 수 있다.
패킷 유실 확인부(125)가 데이터 패킷 집합 내의 데이터 패킷 중에서 유실된 데이터 패킷이 존재하는지 여부를 판정하는 동작은 패킷 수신 여부 정보 내의 지시자들에 대하여 논리 연산을 수행하는 동작을 포함할 수 있다. 예를 들어, 패킷 유실 확인부(125)는 도 4에 도시된 비트 연산(bit operation)을 이용하여 유실된 패킷의 존재 여부를 판정할 수 있다. 도 4는 일 예로서 패킷 0, 패킷 1, 패킷 3 및 패킷 7이 데이터 수신기(120)에서 차례로 수신되는 경우에 유실된 패킷의 존재 여부를 판정하는 과정을 보여준다. 편의상 도 4는 8 개의 비트에 대한 비트 연산을 도시하였다. 개시되는 실시예에서 기술된 비트 연산의 피연산자인 비트의 개수를 구체적으로 한정하는 것이 아님을 이해할 수 있을 것이다.
나아가, 전술한 논리 연산은 패킷 수신 여부 정보 내의 지시자들 각각이 다른 지시자와 무관하게 다루어지는 방식으로 수행될 수 있다. 소정의 실시예에서, 그 논리 연산은 비트별(bitwise) 연산(예컨대, 비트별 NOT 연산, 비트별 AND 연산, 비트별 XOR 연산, 비트별 OR 연산 등)일 수 있다.
이러한 논리 연산은 위 지시자들을 하나의 피연산자(operand)로 취하는 적어도 하나의 단항 연산(unary operation)를 포함할 수 있다. 이와 더불어, 또는 대안적으로, 위 논리 연산은 데이터 패킷 집합 내의 데이터 패킷 중에서 유실된 데이터 패킷이 존재하는지 여부를 판정하기 전에 상기 복수의 데이터 패킷 중에서 유실된 패킷을 나타내는 유실 정보 또는 데이터 패킷 집합 내의 수신된 데이터 패킷의 일련번호 중 가장 큰 일련번호를 나타내는 정보를, 상기 지시자들과 함께 두 개의 피연산자로 취하는 적어도 하나의 이항 연산(dyadic operation)을 포함할 수 있다. 예컨대, 도 4에 도시된 비트 연산은, 현재까지 수신된 패킷을 나타내는 비트들(이하에서 집합적으로 “A”라고 지칭되기도 함)에 대하여 비트별 NOT 연산을 수행하는 것, 그러한 NOT 연산의 결과(이하에서 집합적으로 “B”라고 지칭되기도 함) 및 이전까지 유실된 패킷을 나타내는 비트들(이하에서 집합적으로 “C”라고 지칭되기도 함)에 대해 비트별 XOR 연산을 수행하는 것, 그리고 수신된 패킷의 최대 인덱스(예컨대, 블록슬라이스 구조(310) 내 수신 패킷의 최대 인덱스)에 따른 마스크 비트들(이하에서 집합적으로 “MASK”라고 지칭되기도 함)과 그러한 XOR 연산의 결과(이하에서 집합적으로 “D”라고 지칭되기도 함)에 대해 비트별 AND 연산을 수행하는 것을 포함한다. 위 AND 연산의 결과(이하에서 집합적으로 “Y”라고 지칭되기도 함)가 0보다 크다면 유실된 패킷이 존재한다고 판정된다. 이러한 비트 연산은 패킷의 유실 발생 여부를 판정하는 데 필요한 시간복잡도를 O(1) 수준으로 낮출 수 있다.
도 4를 참조하여, 패킷 유실의 발생 여부를 판정하는 과정을 예로서 설명한다. 도 4에 도시된 예에서, A, B, C, D, Y 및 MASK 각각의 비트들은 우측부터 좌측으로 패킷 0 내지 패킷 8에 대응한다. 패킷 1이 수신된 경우, 현재까지 수신된 데이터 패킷은 패킷 0 및 패킷 1이므로 A는 00000011이고, 이전까지 유실된 데이터 패킷은 없었으므로 C는 00000000이다. 따라서, D는 11111100이다. 수신된 데이터 패킷들의 인덱스(즉, 0 및 1) 중 가장 큰 인덱스(즉, 1)에 따라 MASK는 00000011로 설정된다(MASK의 비트들 중 패킷 0부터 가장 큰 인덱스의 패킷에 대응하는 비트들이 1로 설정된다). 결국, Y는 00000000인바, 데이터 패킷의 유실이 발생하지 않았다고 판정된다. 이어서, 패킷 3이 수신된 경우, 현재까지 수신된 데이터 패킷은 패킷 0, 패킷 1 및 패킷 3이므로 A는 00001011이고, 이전까지 유실된 데이터 패킷은 없었으므로 C는 00000000이다. 따라서, D는 11110100이다. 수신된 데이터 패킷들의 인덱스 중 가장 큰 인덱스는 3이므로 MASK는 00001111이다. 결국, Y는 00000100인바, 데이터 패킷의 유실이 발생하였다고 판정된다. 이후에, 패킷 유실 확인부(125)는 Hamming Weight 알고리즘 및 Find First Bit 알고리즘 등을 이용하여 몇 개의 데이터 패킷이 유실되었는지 그리고 몇 번째 데이터 패킷이 유실되었는지 식별할 수 있다.
다시 도 1을 참조하여, 유실된 데이터 패킷의 재전송 과정을 계속해서 설명한다.
데이터 수신기(120)의 확인응답 메시지 전송부(127)는 유실된 데이터 패킷이 존재한다고 판정되는 경우 소정의 확인응답 메시지를 데이터 송신기(110)로 송신한다. 확인응답 메시지는 패킷 유실 확인부(125)에 의해 구성/갱신되는 패킷 수신 여부 정보를 포함한다. 예를 들어, 데이터 패킷의 유실이 발생하였다는 판정에 응답하여, 확인응답 메시지 전송부(127)는 64비트 블록슬라이스 구조(310)가 포함된 확인응답 메시지를 데이터 송신기(110)로 송신할 수 있고, 이때 블록슬라이스 구조(310)의 프래그먼트 비트는 1로 설정된다. 추가적으로, 확인응답 메시지 전송부(127)는 블록슬라이스 구조(310)를 포함하는 확인응답 메시지가 유실된 경우 이를 재전송하기 위한 시구간(time period)을 설정할 수 있다. 이 블록슬라이스 구조(310)가 나타내는 데이터 패킷 모두가 데이터 수신기(120)에서 수신되는 경우, 설정된 시구간은 해제될 수 있다. 예컨대, 시구간 설정 및 시구간 해제는 각각 타이머(timer)의 구동 및 제거를 수반할 수 있다. 만일 블록슬라이스 구조(310)의 비트 6이 1로 설정된 경우(블록슬라이스 구조(310)에 대응하는 서브-블록의 데이터 패킷 전부가 유실된 경우), 확인응답 메시지 전송부(127)는 블록슬라이스 구조(310)의 모든 비트(64 비트) 대신에 비트 0부터 비트 7까지의 8 비트를 포함하는 확인응답 메시지를 송신할 수 있다.
데이터 송신기(110)의 재전송 처리부(117)는 확인응답 메시지를 수신하도록 구성된다. 또한, 재전송 처리부(117)는 수신된 확인응답 메시지에 포함된 패킷 수신 여부 정보에 기반하여 데이터 패킷 집합 내의 데이터 패킷 중에서 새로이 유실된 데이터 패킷을 식별할 수 있다. 예를 들어, 프래그먼트 비트가 1로 설정된 블록슬라이스 구조(310)가 포함된 확인응답 메시지를 재전송 처리부(117)가 수신한 경우, 재전송 처리부(117)는 블록슬라이스 구조(310)에 기반하여 유실된 데이터 패킷이 무엇인지 식별할 수 있다. 이러한 식별은 패킷 유실 확인부(125)에서 유실된 데이터 패킷을 식별하는 것과 마찬가지 방식(예컨대, 도 4와 관련하여 앞서 언급된 비트 연산을 이용하는 방식)으로 수행될 수 있다.
유실된 데이터 패킷이 재전송 처리부(117)에서 식별되면, 그 데이터 패킷은 패킷 전송부(115)를 통해 재전송된다. 또한, 재전송 처리부(117)는 유실된 데이터 패킷의 식별에 응답하여 유실된 데이터의 재전송에 이용 가능한 시구간을 설정한다. 예컨대, 시구간 설정은 타이머의 구동을 수반할 수 있다. 이러한 예시적인 실시예에서, 재전송을 위한 타이머는 유실되었다고 식별된 데이터 패킷에 대해서 설정되고, 모든 데이터 패킷에 대하여 설정되지 않을 수 있다. 유실된 데이터 패킷은 설정된 시구간 동안 패킷 전송부(115)로부터 반복적으로 재전송될 수 있다. 예를 들어, 유실된 데이터 패킷이 패킷 전송부(115)에서 주기적으로 재전송될 수 있고, 그 주기는 데이터 통신 시스템(100)의 라운드 트립 시간(Round Trip Time)에 소정의 값(데이터 패킷의 전송 환경 및/또는 데이터 통신 시스템(100)의 특성에 따라 설정될 수 있음)을 더한 것일 수 있다.
이어서, 데이터 송신기(110)의 패킷 전송부(115)를 통해 재전송된 데이터 패킷이 데이터 수신기(120)의 패킷 수신부(121)에서 수신되는 경우, 패킷 유실 확인부(125)는 재전송된 데이터 패킷의 수신에 따라 패킷 수신 여부 정보를 갱신하고, 확인응답 메시지 전송부(127)는 갱신된 패킷 수신 여부 정보를 포함하는 확인응답 메시지를 데이터 송신기(110)로 송신한다. 예를 들어, 재전송된 데이터 패킷의 수신에 응답하여 확인응답 메시지 전송부(127)로부터 송신되는 확인응답 메시지는 프래그먼트 비트가 0으로 설정된 블록슬라이스 구조(310)를 포함할 수 있다. 이 확인응답 메시지는 앞서 유실된 데이터 패킷이 존재한다는 판정에 응답하여 송신되는 확인응답 메시지와 상이한 타입을 가지는바, 블록슬라이스 구조(310)의 프래그먼트 비트에 의해 이러한 두 가지 타입의 확인응답 메시지가 서로 구별된다.
추가적으로, 또 다른 타입의 확인응답 메시지가 확인응답 메시지 전송부(127)로부터 데이터 송신기(110)에 송신될 수도 있는데, 가령 블록슬라이스 구조(310)가 커버하는 서브-블록의 모든 데이터 패킷이 수신된 경우 이를 나타내는 비트(블록슬라이스 구조(310)의 비트 5)를 1로 설정된 64 비트 블록슬라이스 구조(310)를 포함하는 확인응답 메시지가 데이터 송신기(110)에 송신될 수 있고, 대안적으로는 블록슬라이스 구조(310)에서 64 비트 대신 비트 0부터 비트 7까지의 8 비트를 포함하는 확인응답 메시지가 데이터 송신기(110)에 송신될 수 있다. 이러한 확인응답 메시지는 불필요한 데이터 패킷 재전송을 방지하기 위하여 송신된다.
재전송된 데이터 패킷의 수신에 응답하여 송신된 확인응답 메시지를 데이터 송신기(110)의 재전송 처리부(117)가 수신하는 경우(예컨대, 프래그먼트 비트가 0으로 설정된 블록슬라이스 구조(310)가 포함된 확인응답 메시지를 재전송 처리부(117)가 수신한 경우), 재전송 처리부(117)는 그 데이터 패킷의 재전송을 위한 시구간의 설정을 해제하는바, 이로써 이전에는 유실되었으나 재전송 이후 데이터 수신기(120)에서 수신된 데이터 패킷이 불필요하게 반복적으로 재전송되는 것을 방지한다. 시구간의 설정이 타이머의 구동을 수반하는 실시예에서, 시구간 설정의 해제는 타이머를 제거하는 것을 수반한다.
도 5는 본 발명의 실시예에 따라 데이터 송신기에서 데이터 수신기로 데이터 패킷들이 전달되는 절차를 설명하기 위한 도면이다.
데이터 송신기(110)는 패킷 0을 전송한다(501). 데이터 수신기(120)는 패킷 0을 수신하고, 패킷 0의 수신에 따라 패킷 수신 여부 정보를 갱신한다(502).
데이터 송신기(110)는 패킷 1을 전송한다(503). 그러나, 도 5에 도시된 예에서, 패킷 1은 데이터 수신기(120)에 의해 수신되지 않은 채 유실되었다.
데이터 송신기(110)는 패킷 2를 전송한다(505). 데이터 수신기(120)는 패킷 2를 수신하고, 패킷 2의 수신에 따라 패킷 수신 여부 정보를 갱신하며, 패킷의 유실이 발생하였음을 판정한다(504). 나아가, 데이터 수신기(120)는 패킷 1이 유실되었음을 식별할 수 있다. 예를 들어, 이러한 판정 및 식별은 도 4와 관련되어 기술된 비트 연산을 이용할 수 있다. 유실된 패킷이 존재한다는 판정에 응답하여, 데이터 수신기(120)는 갱신된 패킷 수신 여부 정보를 포함하는 확인응답 메시지 0을 데이터 송신기(110)에 송신한다(506). 갱신된 패킷 수신 여부 정보는 패킷 0 및 패킷 2는 데이터 수신기(120)에서 수신되었고 패킷 1은 데이터 수신기(120)에서 수신되지 않았음을 나타낸다. 그러나, 도 5에 도시된 예에서, 확인응답 메시지 0은 데이터 송신기(110)에 전달되지 않은 채 유실되었다.
데이터 송신기(110)는 패킷 3을 전송한다(507). 그러나, 도 5의 예에서, 패킷 3은 데이터 수신기(120)에 의해 수신되지 않은 채 유실되었다.
데이터 송신기(110)는 패킷 4를 전송한다(509). 데이터 수신기(120)는 패킷 4를 수신하고, 패킷 4의 수신에 따라 패킷 수신 여부 정보를 갱신하며, 패킷 수신 여부 정보에 기반하여 패킷의 유실이 발생하였음을 판정한다(508). 나아가, 데이터 수신기(120)는 패킷 4가 유실되었음을 식별할 수 있다. 유실된 패킷이 존재한다는 판정에 응답하여, 데이터 수신기(120)는 갱신된 패킷 수신 여부 정보를 포함하는 확인응답 메시지 1을 데이터 송신기(110)에 송신한다(510). 갱신된 패킷 수신 여부 정보는 패킷 0, 패킷 2 및 패킷 4는 데이터 수신기(120)에서 수신되었고 패킷 1 및 패킷 3은 데이터 수신기(120)에서 수신되지 않았음을 나타낸다.
한편, 데이터 송신기(110)는 패킷 5의 전송(511), 패킷 6의 전송(513) 및 패킷 7의 전송(515)을 수행한다. 데이터 수신기(120)는 패킷 5, 패킷 6 및 패킷 7을 각각 수신할 때 패킷 수신 여부 정보를 차례로 갱신한다(512, 514 및 516).
데이터 송신기(110)가 확인응답 메시지 1을 수신하는 경우, 데이터 송신기(110)는 확인응답 메시지 1로부터 유실된 패킷이라고 식별되는 패킷 1의 재전송을 위한 타이머를 설정하고(517), 패킷 1을 재전송한다(519). 또한, 데이터 송신기(110)는 확인응답 메시지 1로부터 역시 유실된 패킷이라고 식별되는 패킷 3의 재전송을 위한 타이머를 설정하고(521), 패킷 3을 재전송한다(523).
데이터 수신기(120)는 재전송된 패킷 1을 수신하고, 패킷 1의 수신에 따라 패킷 수신 여부 정보를 갱신하며, 재전송된 패킷이 수신되었음을 확인한다(518). 이어서, 데이터 수신기(120)는 갱신된 패킷 수신 여부 정보를 포함하는 확인응답 메시지 2를 데이터 송신기(110)에 송신한다(520). 갱신된 패킷 수신 여부 정보는 패킷 0 내지 패킷 2 및 패킷 4 내지 패킷 7이 데이터 수신기(120)에서 수신되었고 패킷 3은 데이터 수신기(120)에서 수신되지 않았음을 나타낸다. 그러나, 도 5에 도시된 예에서, 확인응답 메시지 2는 데이터 송신기(110)에 전달되지 않은 채 유실되었다.
데이터 수신기(120)는 재전송된 패킷 3을 수신하고, 패킷 3의 수신에 따라 패킷 수신 여부 정보를 갱신하며, 재전송된 패킷이 수신되었음을 확인한다(522). 이어서, 데이터 수신기(120)는 갱신된 패킷 수신 여부 정보를 포함하는 확인응답 메시지 3을 데이터 송신기(110)에 송신한다(524). 갱신된 패킷 수신 여부 정보는 패킷 0 내지 패킷 7이 데이터 수신기(120)에서 수신되었음을 나타낸다.
데이터 송신기(110)가 확인응답 메시지 3을 수신하는 경우, 데이터 송신기(110)는 확인응답 메시지 3에 포함된 패킷 수신 여부 정보에 기반하여 기존에 타이머가 설정된 패킷 1 및 패킷 3이 데이터 수신기(120)에서 수신되었음을 확인하고 패킷 1 에 대한 타이머 및 패킷 3에 대한 타이머를 제거한다.
한편, 본 발명의 실시예는 본 명세서에서 기술한 방법들을 컴퓨터상에서 수행하기 위한 프로그램을 포함하는 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 상기 컴퓨터 판독가능 저장 매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들일 수 있다. 컴퓨터 판독가능 저장 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광 기록 매체, 플롭티컬 디스크와 같은 자기-광 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다.
그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 데이터 통신 시스템
110: 데이터 송신기
111: 패킷화부
113: 전송 버퍼
115: 패킷 전송부
117: 재전송 처리부
120: 데이터 수신기
121: 패킷 수신부
123: 수신 버퍼
125: 패킷 유실 확인부
127: 확인응답 메시지 전송부
110: 데이터 송신기
111: 패킷화부
113: 전송 버퍼
115: 패킷 전송부
117: 재전송 처리부
120: 데이터 수신기
121: 패킷 수신부
123: 수신 버퍼
125: 패킷 유실 확인부
127: 확인응답 메시지 전송부
Claims (25)
- 비연결 지향형 프로토콜(connectionless-oriented protocol)을 이용한 데이터 통신 방법으로서,
복수의 데이터 패킷 중 대응하는 데이터 패킷이 데이터 송신기로부터 수신되었는지 여부를 각각 나타내는 지시자(indicator)들을 구성하는 단계;
상기 지시자들에 대한 논리 연산(logical operation)을 수행하여 상기 복수의 데이터 패킷 중 유실된 데이터 패킷의 존재 여부를 판정하는 단계; 및
상기 판정 결과 유실된 데이터 패킷이 존재하는 경우, 상기 지시자들을 포함하는 확인응답 메시지(acknowledgement message)를 상기 데이터 송신기로 송신하는 단계를 포함하며,
상기 논리 연산은, 비트별 NOT 연산, 비트별 AND 연산, 비트별 XOR 연산 및 비트별 OR 연산 중 하나 이상을 포함하며,
상기 지시자들을 하나의 피연산자로 취하는 적어도 하나의 단항 연산과,
상기 복수의 데이터 패킷 중 이전에 유실된 데이터 패킷을 나타내는 유실 정보 또는 상기 복수의 데이터 패킷 중 이전에 수신된 데이터 패킷의 일련번호 중 가장 큰 일련번호를 나타내는 정보를, 상기 지시자들과 함께 두 개의 피연산자로 취하는 적어도 하나의 이항 연산으로 이루어지는, 데이터 통신 방법.
- 삭제
- 제1항에 있어서,
상기 확인응답 메시지의 송신 이후에 상기 데이터 송신기로부터 재전송된 데이터 패킷을 수신하는 것에 응답하여, 상기 재전송된 데이터 패킷의 수신에 따라 갱신된 상기 지시자들을 포함하는 다른 확인응답 메시지를 상기 데이터 송신기로 송신하는 단계를 더 포함하는,
데이터 통신 방법.
- 삭제
- 제1항에 있어서,
상기 지시자들에 기반하여, 상기 복수의 데이터 패킷 중 몇 개의 데이터 패킷이 유실되었는지 및 상기 복수의 데이터 패킷 중 어느 데이터 패킷이 유실되었는지 중 적어도 하나를 식별하는 단계를 더 포함하는,
데이터 통신 방법.
- 제1항에 있어서,
상기 확인응답 메시지를 상기 데이터 송신기로 재전송하는 데에 이용 가능한 시구간(time period)을 설정하는 단계를 포함하는,
데이터 통신 방법.
- 제1항에 있어서,
상기 비연결 지향형 프로토콜은 사용자 데이터그램 프로토콜(User Datagram Protocol: UDP)을 포함하는,
데이터 통신 방법.
- 비연결 지향형 프로토콜을 이용한 데이터 통신 방법으로서,
복수의 데이터 패킷 중 대응하는 데이터 패킷이 데이터 수신기에 수신되었는지 여부를 각각 나타내는 지시자들을 포함하는 확인응답 메시지를 상기 데이터 수신기로부터 수신하는 단계;
상기 지시자들에 대한 논리 연산을 수행하여 상기 복수의 데이터 패킷 중 유실된 데이터 패킷을 식별하는 단계; 및
상기 유실된 데이터 패킷의 식별에 응답하여, 상기 유실된 데이터 패킷을 상기 데이터 수신기로 재전송하는 데에 이용 가능한 시구간을 설정하는 단계를 포함하며,
상기 논리 연산은, 비트별 NOT 연산, 비트별 AND 연산, 비트별 XOR 연산 및 비트별 OR 연산 중 하나 이상을 포함하며,
상기 지시자들을 하나의 피연산자로 취하는 적어도 하나의 단항 연산과,
상기 복수의 데이터 패킷 중 이전에 유실된 데이터 패킷을 나타내는 유실 정보 또는 상기 복수의 데이터 패킷 중 이전에 수신된 데이터 패킷의 일련번호 중 가장 큰 일련번호를 나타내는 정보를, 상기 지시자들과 함께 두 개의 피연산자로 취하는 적어도 하나의 이항 연산으로 이루어지는, 데이터 통신 방법.
- 삭제
- 제8항에 있어서,
상기 유실된 데이터 패킷이 재전송된 이후에 상기 데이터에서 수신되었음을 나타내도록 갱신된 상기 지시자들을 포함하는 다른 확인응답 메시지를 상기 데이터 수신기로부터 수신하는 것에 응답하여, 상기 유실된 데이터 패킷의 추가적인 재전송을 방지하기 위하여 상기 시구간의 설정을 해제하는 단계를 더 포함하는,
데이터 통신 방법.
- 제8항에 있어서,
상기 시구간 동안 상기 유실된 데이터 패킷을 반복적으로 재전송하는 단계를 더 포함하는,
데이터 통신 방법.
- 제8항에 있어서,
상기 비연결 지향형 프로토콜은 사용자 데이터그램 프로토콜을 포함하는,
데이터 통신 방법.
- 제1항, 제3항, 제5항 내지 제8항 및 제10항 내지 제12항 중 어느 한 항에 기재된 방법을 실행하기 위한 컴퓨터 프로그램이 저장된 컴퓨터 판독가능 저장 매체.
- 비연결 지향형 프로토콜을 이용하여 데이터 통신을 수행하는 데이터 수신기로서,
복수의 데이터 패킷 중 대응하는 데이터 패킷이 데이터 송신기로부터 수신되었는지 여부를 각각 나타내는 지시자들을 구성하고, 상기 지시자들에 대한 논리 연산을 수행하여 상기 복수의 데이터 패킷 중 유실된 데이터 패킷의 존재 여부를 판정하는 동작을 수행하는 패킷 유실 확인부; 및
상기 판정 결과 유실된 데이터 패킷이 존재하는 경우, 상기 지시자들을 포함하는 확인응답 메시지를 상기 데이터 송신기로 송신하는 확인응답 메시지 전송부를 포함하며,
상기 논리 연산은, 비트별 NOT 연산, 비트별 AND 연산, 비트별 XOR 연산 및 비트별 OR 연산 중 하나 이상을 포함하며,
상기 지시자들을 하나의 피연산자로 취하는 적어도 하나의 단항 연산과,
상기 복수의 데이터 패킷 중 이전에 유실된 데이터 패킷을 나타내는 유실 정보 또는 상기 복수의 데이터 패킷 중 이전에 수신된 데이터 패킷의 일련번호 중 가장 큰 일련번호를 나타내는 정보를, 상기 지시자들과 함께 두 개의 피연산자로 취하는 적어도 하나의 이항 연산으로 이루어지는, 데이터 수신기.
- 삭제
- 제14항에 있어서,
상기 패킷 유실 확인부는 또한, 상기 확인응답 메시지의 송신 이후에 상기 데이터 송신기로부터 재전송된 데이터 패킷의 수신에 따라 상기 지시자들을 갱신하고,
상기 확인응답 메시지 전송부는 또한, 상기 재전송된 데이터 패킷의 수신에 응답하여, 상기 갱신된 지시자들을 포함하는 다른 확인응답 메시지를 상기 데이터 송신기로 송신하는,
데이터 수신기.
- 삭제
- 제14항에 있어서,
상기 패킷 유실 확인부는 또한, 상기 지시자들에 기반하여, 상기 복수의 데이터 패킷 중 몇 개의 데이터 패킷이 유실되었는지 및 상기 복수의 데이터 패킷 중 어느 데이터 패킷이 유실되었는지 중 적어도 하나를 식별하는,
데이터 수신기.
- 제14항에 있어서,
상기 확인응답 메시지 전송부는 또한, 상기 확인응답 메시지를 상기 데이터 송신기로 재전송하는 데에 이용 가능한 시구간을 설정하는,
데이터 수신기.
- 제14항에 있어서,
상기 비연결 지향형 프로토콜은 사용자 데이터그램 프로토콜을 포함하는,
데이터 수신기.
- 비연결 지향형 프로토콜을 이용하여 데이터 통신을 수행하는 데이터 송신기로서,
복수의 데이터 패킷을 데이터 수신기에 전송하도록 구성된 패킷 전송부; 및
상기 복수의 데이터 패킷 중 대응하는 데이터 패킷이 상기 데이터 수신기에 수신되었는지 여부를 각각 나타내는 지시자들을 포함하는 확인응답 메시지를 상기 데이터 수신기로부터 수신하고, 상기 지시자들에 대한 논리 연산을 수행하여 상기 복수의 데이터 패킷 중 유실된 데이터 패킷을 식별하는 동작을 수행하며, 상기 유실된 데이터 패킷의 식별에 응답하여, 상기 유실된 데이터 패킷을 상기 데이터 수신기로 재전송하는 데에 이용 가능한 시구간을 설정하는 재전송 처리부를 포함하며,
상기 논리 연산은, 비트별 NOT 연산, 비트별 AND 연산, 비트별 XOR 연산 및 비트별 OR 연산 중 하나 이상을 포함하며,
상기 지시자들을 하나의 피연산자로 취하는 적어도 하나의 단항 연산과,
상기 복수의 데이터 패킷 중 이전에 유실된 데이터 패킷을 나타내는 유실 정보 또는 상기 복수의 데이터 패킷 중 이전에 수신된 데이터 패킷의 일련번호 중 가장 큰 일련번호를 나타내는 정보를, 상기 지시자들과 함께 두 개의 피연산자로 취하는 적어도 하나의 이항 연산으로 이루어지는, 데이터 송신기.
- 삭제
- 제21항에 있어서,
상기 재전송 처리부는 또한, 상기 유실된 데이터 패킷이 재전송된 이후에 상기 데이터 수신기에서 수신되었음을 나타내도록 갱신된 상기 지시자들을 포함하는 다른 확인응답 메시지를 상기 데이터 수신기로부터 수신하는 것에 응답하여, 상기 유실된 데이터 패킷의 추가적인 재전송을 방지하기 위하여 상기 시구간의 설정을 해제하는,
데이터 송신기.
- 제21항에 있어서,
상기 패킷 전송부는 또한, 상기 시구간 동안 상기 유실된 데이터 패킷을 반복적으로 재전송하는,
데이터 송신기.
- 제21항에 있어서,
상기 비연결 지향형 프로토콜은 사용자 데이터그램 프로토콜을 포함하는,
데이터 송신기.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130128621A KR101611663B1 (ko) | 2013-10-28 | 2013-10-28 | 비연결 지향형 프로토콜을 이용한 데이터 통신 |
US14/141,844 US20150117176A1 (en) | 2013-10-28 | 2013-12-27 | Data communications using connectionless-oriented protocol |
PCT/KR2013/012348 WO2015064841A1 (ko) | 2013-10-28 | 2013-12-27 | 비연결 지향형 프로토콜을 이용한 데이터 통신 |
CN201310744351.9A CN104579597A (zh) | 2013-10-28 | 2013-12-30 | 利用面向非连接的协议的数据通信 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130128621A KR101611663B1 (ko) | 2013-10-28 | 2013-10-28 | 비연결 지향형 프로토콜을 이용한 데이터 통신 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150048489A KR20150048489A (ko) | 2015-05-07 |
KR101611663B1 true KR101611663B1 (ko) | 2016-04-12 |
Family
ID=52995312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130128621A KR101611663B1 (ko) | 2013-10-28 | 2013-10-28 | 비연결 지향형 프로토콜을 이용한 데이터 통신 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20150117176A1 (ko) |
KR (1) | KR101611663B1 (ko) |
CN (1) | CN104579597A (ko) |
WO (1) | WO2015064841A1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3301843A4 (en) * | 2015-06-29 | 2018-05-23 | Huawei Technologies Co., Ltd. | Method for data processing and receiver device |
US9999049B2 (en) * | 2015-08-31 | 2018-06-12 | Qualcomm Incorporated | Avoiding unnecessary protocol data unit (PDU) transmissions |
CN111404648A (zh) * | 2020-02-20 | 2020-07-10 | 视联动力信息技术股份有限公司 | 一种数据发送方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050185604A1 (en) * | 2004-02-23 | 2005-08-25 | Samsung Electronics Co., Ltd. | Method and apparatus for transferring connectionless-oriented data packets |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5151899A (en) * | 1991-02-11 | 1992-09-29 | Digital Equipment Corporation | Tracking sequence numbers in packet data communication system |
US6282267B1 (en) * | 1998-03-26 | 2001-08-28 | Bell Atlantic Network Services, Inc. | Network planning traffic measurement program |
KR100468290B1 (ko) * | 2002-09-12 | 2005-01-27 | (주) 솔빅스테크놀로지 | 유디피 제어시스템 |
US7949778B2 (en) * | 2007-03-27 | 2011-05-24 | Kencast, Inc. | Systems, methods, apparatus and computer program products for providing packet-level FEC with higher throughput using user datagram protocol (UDP) |
US20090198830A1 (en) * | 2008-02-06 | 2009-08-06 | Inventec Corporation | Method of adjusting network data sending speed according to data processing speed at client |
US8345605B2 (en) * | 2008-02-21 | 2013-01-01 | Texas Instruments Incorporated | Transmission of bundled feedback in wireless networks |
US8873543B2 (en) * | 2008-03-07 | 2014-10-28 | Arcsoft (Shanghai) Technology Company, Ltd. | Implementing a high quality VOIP device |
KR100998830B1 (ko) * | 2008-08-27 | 2010-12-06 | 주식회사 엘지유플러스 | 무선 네트워크에서의 유디피를 이용한 데이터 전송 시스템및 그 방법 |
JP5412917B2 (ja) * | 2009-03-27 | 2014-02-12 | 富士通株式会社 | 誤り訂正制御装置、誤り訂正制御方法およびメディアデータ配信システム |
US8136018B2 (en) * | 2009-08-24 | 2012-03-13 | Sony Computer Entertainment Inc. | Network communication protocol for large scale distribution of streaming content |
US8738986B2 (en) * | 2010-03-05 | 2014-05-27 | Microsoft Corporation | Remote presentation over lossy transport with forward error correction |
CN102045362B (zh) * | 2010-12-21 | 2014-01-15 | 北京高森明晨信息科技有限公司 | 一种基于udp协议的数据传输方法和系统 |
-
2013
- 2013-10-28 KR KR1020130128621A patent/KR101611663B1/ko active IP Right Grant
- 2013-12-27 WO PCT/KR2013/012348 patent/WO2015064841A1/ko active Application Filing
- 2013-12-27 US US14/141,844 patent/US20150117176A1/en not_active Abandoned
- 2013-12-30 CN CN201310744351.9A patent/CN104579597A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050185604A1 (en) * | 2004-02-23 | 2005-08-25 | Samsung Electronics Co., Ltd. | Method and apparatus for transferring connectionless-oriented data packets |
Also Published As
Publication number | Publication date |
---|---|
KR20150048489A (ko) | 2015-05-07 |
US20150117176A1 (en) | 2015-04-30 |
WO2015064841A1 (ko) | 2015-05-07 |
CN104579597A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI486016B (zh) | 通信終端機及將狀態報告自接收終端機發送至發送終端機之方法 | |
JP4546542B2 (ja) | 重複受信確認を用いたデータフロー制御 | |
US20110161777A1 (en) | Reliable Packet Cut-Through | |
US7801142B2 (en) | Method to avoid potential deadlocks in a SDU discard function | |
EP2978171B1 (en) | Communication method, communication device, and communication program | |
US20030125056A1 (en) | Window based stall avoidance mechanism for high speed wireless communication system | |
KR100842281B1 (ko) | 무선 네트워크상에서 경로 회복 알림을 통하여 전송 제어 프로토콜의 성능을 관리하는 장치 및 그 방법 | |
US7496038B2 (en) | Method for faster detection and retransmission of lost TCP segments | |
CA2466231A1 (en) | Time-aware best-effort hole-filling retry method and system for network communications | |
EP3591875A1 (en) | Reliable message transport network | |
JP2013243694A (ja) | 少なくとも1つのtcpデータセグメントストリームをインラインコンテンツ解析にサブミットするための方法及びデバイス、その方法を実施するための1つ又は複数の命令シーケンスを保持するコンピュータ可読媒体、並びにコンピュータプログラム製品 | |
US10505677B2 (en) | Fast detection and retransmission of dropped last packet in a flow | |
CN113765626B (zh) | 一种移动通信系统的数据传输方法和装置 | |
KR101611663B1 (ko) | 비연결 지향형 프로토콜을 이용한 데이터 통신 | |
CN114521317B (zh) | 用于首选数据包的选择性多数据包传输的装置和方法 | |
CN101667897A (zh) | 一种实现物理层重传的方法、装置及系统 | |
US10110350B2 (en) | Method and system for flow control | |
US9094281B2 (en) | Apparatus and method for identifying transmission control protocol (TCP) packet loss | |
US20060059273A1 (en) | Envelope packet architecture for broadband engine | |
US20180020040A1 (en) | Method and device for http streaming over unreliable transport protocol | |
CN111130705A (zh) | 一种数据包发送的方法和设备 | |
KR100662250B1 (ko) | 서비스데이터유닛의 가변적 분할 송신 방법 및 그를이용한 송신 장치 | |
JP2017220711A (ja) | 通信装置、通信制御方法およびコンピュータプログラム | |
CN115276916A (zh) | 一种丢弃数据的确定方法、装置、电子设备及存储介质 | |
WO2023241770A1 (en) | Efficient rerouting of a selective-repeat connection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
X091 | Application refused [patent] | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20190401 Year of fee payment: 4 |