[CS Study] 4주차(2) - 신뢰적 데이터 전송 원리(SR, GBN)

bagt13·2025년 4월 25일
0

CS

목록 보기
22/27

✅ 신뢰적 데이터 전송 (Reliable Data Transfer)

데이터가 전송 중에 손실/손상 되더라도 정확히 목적지에 도착하도록 하는 전송 방식이다.

주로 ACK(확인 응답) 과 타이머를 이용해서 보장한다.


📚 대표적인 프로토콜

  1. GBN (Go-Back-N)

  2. SR (Selective Repeat)

이 프로토콜들은 OSI 7계층 중 4계층(전송 계층)에 해당하여, 신뢰성 있는 데이터 전달을 보장한다.
즉, 송신자와 수신자 간에 데이터를 정확하게 수신했는지를 관리한다.

TCP의 경우 위 프로토콜들의 특징을 이미 가지고 있기 때문에 필요 없지만, UDP와 같이 신뢰성이 낮은 프로토콜 위에서 필요할 때 사용하는 방식이다.


즉, UDP를 쓸 때 데이터가 순서대로 와야 한다거나 손실 없이 전송되어야 한다면, 다음과 같은 방법을 고려해야 한다.
  • UDP 기반에서 신뢰성을 추가해주는 QUIC, RUDP(Reliable UDP) 같은 프로토콜을 쓴다.
  • 라이브러리나 오픈소스를 가져다 쓰거나, GBN이나 SR 같은 로직을 따로 개발자가 직접 구현한다.


🟢 GBN (Go-Back-N)

  • 송신자는 N개까지 데이터를 연속으로 보낼 수 있다. (N = 윈도우 크기)

  • 수신자는 패킷 번호가 순서대로 온 것만 받는다.

  • 중간에 하나라도 문제가 생기면, 송신자는 손실된 번호부터 전부 재전송해야 한다.

  • 위 특징 때문에 다른 방법에 비해 비효율적이다.


예시

  1. 송신자가 패킷 1, 2, 3, 4를 보냄.

  2. 수신자가 1, 2는 받았는데, 3보다 4가 먼저 도착한다 (3번 패킷 손실)

    • 이 경우 수신자는 4번 패킷을 무시한다. (3을 아직 못 받았기 때문)
  3. 송신자는 3부터 다시 보낸다.



🟢 SR (Selective Repeat)

  • 수신자는 패킷 순서가 안 맞아도 패킷을 임시 저장한다. (버퍼링)

    • 나중에 유실된 패킷이 도착하면 순서를 맞춰서 재조립 및 정렬한다.
  • 송신자는 오류가 발생한 패킷만 재전송하기 때문에 GBN보다 훨씬 효율적이다.

  • 하지만 효율적인 만큼, 수신자가 복잡해지고 구현이 어렵다는 단점이 있다.

예시

  1. 송신자가 1 2 3 4 5 순서로 전송한다.

  2. 3번 패킷만 손실된 경우

    • 수신자는 1, 2, 4, 5를 버퍼에 저장
  3. 송신자는 3만 다시 보낸다.

  4. 수신자는 3을 받은후 받은 패킷들을 재조립한다.

profile
백엔드 개발자입니다😄

0개의 댓글