CS/네트워크

Reliable UDP(RUDP)란 무엇인가?

Junuuu 2022. 5. 28. 12:15

간략한 TCP/ UDP 소개

 

TCP는 통신을 할 때 클라이언트에서 connect를 열어 서버와 소통하게 됩니다.

 

하지만 UDP의 경우에는 connect를 열지 않고 일방적으로 server에서 client에 데이터를 보내주고 데이터를 정확하게 받았는지 확인하지 않습니다.

 

이러한 차이점 때문에 데이터의 신뢰성은 UDP < TCP이지만, 속도는 UDP > TCP입니다.

 

따라서 TCP를 신뢰성있는 프로토콜이라고 부르고, UDP는 비신뢰성 프로토콜이라 알 고 있었습니다.

 

다음은 TCP와 UDP의 헤더 구조인데 TCP에 비해 UDP는 매우 간단한 구조를 갖습니다.

 

TCP 헤더 구조

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ak0402&logNo=221539958656

UDP 헤더 구조

Reliable UDP(RUDP)란?

UDP 또한 RUDP라는 방법으로 신뢰성을 보장하기도 합니다.

 

TCP에서 신뢰성을 보장하는 이유는 데이터 순서 보장, 도착 보장, 무결성 보장 3가지입니다.

 

RUDP는 UDP 통신이지만 이 3가지에 대한 처리를 해줍니다.

 

순서 보장 : 데이터 순서 보장을 위해 패킷에 번호를 붙임

도착 보장 : 해당 번호의 패킷이 도착할 때까지 재전송

무결성 보장 : checksum을 통해 데이터 손실을 검증

 

 

이렇게 되면  TCP를 쓰는것과 무엇이 다를까요?

TCP의 특성을 그대로 구현하는 것이 아니라 UDP의 특성을 살리면서 TCP처럼 신뢰할 수 있는 데이터를 만드는 것이 목표입니다.

 

TCP는 서버와 클라이언트의 관계가 성립되어 한쪽이 서버로서 대기하고 있어야 합니다.

 

하지만 UDP는 그럴 필요가 없이 통신이 바로 가능합니다.

 

TCP의 장점을 선택적으로 결정할 수 있게 됩니다.

 

예를 들어 도착은 보장하지 않지만 순서는 보장해야 한다면 패킷에 번호를 붙이고 패킷을 모아놓음으로써 순서를 보장해 줄 수 있습니다.

 

예를 들어 순서는 보장하지 않지만 모든 패킷이 도착을 보장해야 한다면 아직 받지 못한 데이터그램 리스트를 검색하면서 재전송을 요청합니다.

 

위에서 봤던 UDP Header 그림에는 Sequence Number가 없기 때문에 직접 넘버링을 해주면 될 것 같습니다.

 

 

 

 

출처

https://stage-diary.tistory.com/315

 

TCP, UDP의 역사

■ IP. 모든 것의 허리. TCP/IP 라는 프로토콜 체계는 나중에 두 개로 분리된 것이 아니라, 인터넷 프로토콜 표준이 제정될 때부터 지금처럼 두 개로 분리되어 제안되었다. David Clark 교수님의 88년

stage-diary.tistory.com

https://elky.tistory.com/258

 

[UDP] Reliable UDP

Reliable UDP (이하 RUDP)는 신뢰성을 갖는 UDP를 의미합니다. 일반적으로 TCP는 신뢰성을 갖는 대신 느리고, UDP는 신뢰성이 없고 빠르다고 알려져있죠. 여기에 또 하나의 특징은, TCP는 서버 (Listener)와

elky.tistory.com