UDP의 신뢰성을 보완할 방법이 없을까?

Alex·2025년 3월 6일
0

CS를 공부하자

목록 보기
48/74

UDP는 빠르지만, TCP가 제공하는 신뢰성 보장 매커니즘을 제공하지 않는다.

그렇다면, 이 UDP의 신뢰성을 보완할 방법이 없을까?

UDP는 왜 신뢰할 수 없어?

UDP 패킷은 전송 도중에 유실될 수 있다. 그런데, UDP 프로토콜은 패킷이 유실됐는지 확인하는 매커니즘이나, 확인 시 재전송하는 매커니즘을 제공하지 않는다.

패킷은 위처럼 1)잘못 라우팅되거나 2)방화벽에 의해서 먹히거나(EAT) 3)전송 중 혼잡함 때문에 사라지거나 등등 다양한 이유로 유실된다.

신뢰성을 어느정도 보완할 방법들이 있긴 하다.

1) 최대 UDP 패킷 크기를 네트워크 경로의 MTU(Maximum Transmission Unit) IP 단편화를 피하는 것이 좋다. IP단편화(원본 패킷이 MUT보다 커지면 패킷이 작은 패킷으로 분할된다) 가 발생하면 패킷 손실 확률이 늘어나기 때문이다.
2) 패킷을 가능하면 빠르게 읽어야 한다. 운영체제의 UDP 수신 버퍼가 가득차면 새로운 패킷이 폐기될 수 있기 때문이다.
3) UDP는 혼잡 제어 매커니즘이 없으므로, 혼잡한 네트워크에서는 패킷 손실률이 높아진다. 혼잡한 네트워크 링크를 피해라
4) 짧은 시간에 너무 많은 패킷을 보내면 손실률이 높아진다(혼잡해져서)

RUDP(Reliable UDP) 라는 프로토콜도 있다. 이는 송신자가 모든 패킷을 다 보내고, 수신자가 패킷에 인덱스를 부여하는 방식이다. 전송이 완료되면 수신자는 받지 못한 패킷의 인덱스 모곩을 송신자에게 보내고, 송신자는이 정보를 바탕으로 누락된 패킷을 재전송한다.

profile
답을 찾기 위해서 노력하는 사람

0개의 댓글