Reliable data transfer 1(RDT)

박제구·2021년 2월 24일
1

Network

목록 보기
4/6
post-thumbnail

🧩 Reliable data transfer protocol

  • 신뢰성 있는 데이터 전송을 위한 프로토콜

데이터의 유실, 에러를 극복하면 신뢰성있는 데이터 전송 이라고 할 수 있다.

<RDT를 위한 메커니즘>

  • Error detection
  • Feedback
  • Sequence numbering

🧩 RDT 1.0

  • 하위 계층의 신뢰성이 보장될때 (에러도 없고, 패킷의 유실도 없다고 가정)
Sender는 전송의 역할, Receiver는 수신의 역할만 하면 된다.

-FSM 으로 나타낸 결과

(FSM 은 finite state machines 로 특정한 상태를 나타내기 위한 개념적 모델이다.)

🧩 RDT 2.0

  • 하위 계층에서 비트 에러가 발생할 경우, 패킷의 유실은 발생 안하는 경우를 다룬다.

  • RDT 2.0 에러 시나리오

  1. 패킷 전송
  2. Checksum 을 통해 에러를 감지한다.
  3. ACKs(긍정), NAKs(부정) 의 피드백을 Sender 에 Response
  4. Sender는 리스폰을 기다렸다가, 잘못된 경우 재전송

  • RDT 2.0의 문제점

→ RDT 2.0의 경우 ACK 와 NAK 패킷의 손상을 고려하지 않았다.

  1. Sender가 보낸 패킷이 에러가 발생하였지만, ACK가 잘못 전송되어 패킷을 받을 수 없는 상태
  2. 에러가 발생하지 않았지만, NAK가 잘못 전송되어 중복된 패킷을 받는 상태

위와 같은 문제점이 발생할 수 있다.

🧩 RDT 2.1

  • RDT 2.0의 문제를 보완하기 위해 Sequence number(0, 1)를 도입

Sequence number 0과 1을 통해 상태를 관리한다.

  • Sender

    → Sender의 경우, 만약 #0 패킷을 보낸경우 0 state를 기다리게 되고 ACK가 온 경우 #1 패킷을 전송하며 1 state 로 전환한다.

    → #0 패킷을 보내고 0 state 인데 NAK가 온 경우에는 #0 패킷을 재전송한다.

  • Reciver

    → Reciver가 0 state 인데, #0 패킷이 제대로 온 경우에는 ACK를 보내고 1 state 로 전환한다.

    → 만약 0 state 인데, #1 패킷이 온 경우에는 ACK는 보내지만 0 state 를 유지한다.

  • 0,1을 이용해 패킷에 순서를 부여하고, 순서와 응답을 매치하여 RDT 2.0의 중복 패킷 전송을 방지 할 수 있다.

🧩 RDT 2.2

  • NAK-free protocol 이라고 하며, NAK를 없애고 ACK와 sequence # 를 조합하여 사용한다.

  • RDT2.1 보다 덜 복잡한 구조로 되어있으며 ACK와 Sequence #를 통해 NAK를 대체할 수 있다.
  • 만약 #0 의 패킷을 보냈는데, ACK1 이 온다면 #0 패킷에 대한 NAK 역할을 한다고 볼 수 있다.
  • 즉, ACK #을 통해 Sequence # 패킷을 제대로 전송 받았다는 메세지를 담는 것 이다.

🧩 RDT 3.0

  • RDT 2.2 에서 타이머를 추가한 개념, 타임 아웃 기능을 통해 패킷의 유실 을 처리할 수 있다.

  • RDT3.0 에서 타이머의 역할

  • (a) 패킷이 유실이 발생하지 않은 경우 : RDT 2.2와 같이 동작한다. (타이머 설정 제외)
  • (b) 타이머를 설정하여 유실된 패킷의 ack 가 도착하지 않더라도, 재전송을 하게 된다.

  • (c) 제대로 전송이 되었지만, 응답인 ACK가 유실된 경우에 설정했던 타이머가 동작하여 재전송 하게 된다.
  • (d) ACK가 설정했던 타임보다 늦게 온 경우에도 재전송 하게 된다.

🧩 RDT 3.0 까지의 문제점

  • Stop-and-wait 프로토콜로, 하나의 패킷을 보내고 응답을 기다린다는 점은 실제 네트워크에서 사용되기에 상당히 느린편이다.
  • 문제점을 해결하기 위해 나온 Pipelining 방식의 Go-Back-N, Selective repeat 방식이 있다.

여기까지가 RDT의 전체적인 내용이고, 다음 포스팅 에서 RDT3.0까지의 문제 해결을 위한 파이프라이닝 방식을 다룰 예정이다.

References


Computer Networking: A Top-Down Approach (6th Edition)

profile
안녕하세요!

0개의 댓글