Software Courses/Network

Transport : RDT (Reliable Data Transfer)

김 정 환 2021. 1. 2. 20:16
반응형
본 내용은 한양대학교 이석복 교수님의 강의를 참고하여 정리하였습니다. 교재는 Pearson/Addison Wesley에서 출판한 Computer networking : a top-down approach입니다.

 

 

 

들어가기 전에

대전에서 독일 뮌헨으로 데이터를 보낸다고 하자. 본인이 대전에서 메시지를 보내면 수 많은 라우터를 지나갈 것 입니다. 아마도 서울을 지나 도쿄, LA, NW, 베를린 등을 거칠 것 입니다. 그렇다면, 전송 중에 데이터에 문제가 발생하지 않을까요? 발생할 것입니다. 이전에 배운 TCP에서는 신뢰성 특성이 있었습니다. 어떻게 신뢰성을 보장할까요? 이 how에 대한 방법을 여기서 배우겠습니다. TCP는 너무 복잡하니 RDT로 설명하겠습니다. RDT는 실제로 사용하지 않지만, 신뢰성을 보장하는 원리를 비슷합니다. RDT 버전 순서대로 보겠습니다.

 

 

 

RDT

    - Sender에서 데이터를 보내고, receiver가 메시지를 받아서 확인 메시지를 보내면 sender가 확인 메시지를 받아서 다음 데이터를 보내는 방식

    - Sender는 receiver로 부터 메시지가 올 때까지 대기

    - 확인 메시지를 받고 데이터를 보내는 방식은 상당히 느립니다.

    - 문제들의 따라 버전이 나뉩니다.

 

    - 문제 : 전송 과정에서 신뢰성에 문제가 될 수 있는 2가지 요소

        * Bits error

        * Loss

 

 

 

RDT v1.0

    - No bits error, No loss

    - Underlying channel은 항상 신뢰성 보장

 

 

 

RDT v2.0

    - Bits error, No loss

 

방법

1) Error detection

    - 데이터에 에러가 발생했는지 기록

    - Checksum bits를 헤더에 추가

 

 

2) Feedback

    - 실생활 예시 : 친구와 전화 통화를 한다고 하자. 친구 A가 열심히 보라카이 여행 계획을 말하고 있다. 본인은 이 계획을 들으면서 '어', '어 좋은데?', '그래서', '오`라고 대답한다. 상대방의 말을 이해했다고 피드백은 준다.

    - 실생활 예시에서 우리는 피드백을 통해서 내용이 잘 전달되었는지 상대방에게 확인시켜 준다. 이와 동일하게 ACKs와 NAKs이라는 피드백을 사용한다.

 

(1) ACKs (Acknowledgments) : receiver는 sender에게 packet을 옳바르게 받았다고 보내는 메시지

(2) NAKs (Negative acknowledgements) : reciever는 sender에게 에러가 있는 packet을 받았다고 보내는 메시지

 

 

3) Retransmission

    - Sender는 NAK를 받으면 packet을 재전송

 

 

 

RDT v2.1

    - Bits error, No loss

    - RDT v2.0에서 ACK/NAK에 에러가 발생한다면?

        * 예시 : sender에서 'AABB'라는 데이터를 보낸다고 하자. 'A'가 receiver에 안전하게 도착하여 receiver는 ACK를 보낸다. 그런데 도중에 에러가 발생하여 NAK로 변경된다. Sender는 NAK을 받고 다시 'A'를 보낸다. Receiver는 'A를 받게 되는데, receiver는 이 'A'가 첫 번째인지 두 번째인지 모른다. 이 문제를 다루기 위해서 v2.1가 나온다.

 

    - Sequence number가 packet에 추가

        * 예시

A A B B
1 2 3 4

        * 번호를 매기게 되면, 위 예시에서 receiver가 받은 'A'는 첫 번째라고 판단할 수 있다.

 

        * 순서 번호는 0과 1

            + 위 예시에서 1~4로 해 놓은 것은 이해를 돕기 위한 표현입니다. sender는 receiver에서 메시지가 올 때까지 대기하므로 데이터의 순서를 표현할 때는 0 과 1로 충분히 표현 가능합니다.

 

 

 

RDT v2.2

    - Bits error, No loss

    - NAK대신 ACK만 사용

        * ACK에 가장 최근에 옯바르게 받은 sequence number를 함께 보냅니다.

 

 

RDT v3.0

    - Bits error, Loss

 

방법

(1) Timer

    - 일정 시간을 설정하여, 일정 시간 안에 packet/ACK가 오지 않으면 sender는 packet을 재전송

    - 동작(d)에서 feedback에 오기 전에 timeout이 되어서 sender가 packet을 다시 보내는 상황입니다. 이후에 중복 처리를 계속해 주어야 합니다. 중복이 일어나도 reliable은 보장됩니다. 그러나 중복을 계속 처리해야 하기 때문에 overhead가 발생할 수 있습니다.

반응형

'Software Courses > Network' 카테고리의 다른 글

Transport : Segment의 크기  (0) 2021.01.05
Transport : TCP  (0) 2021.01.03
Transport : UDP  (0) 2020.12.31
Transport : Multiplexing, Demultiplexing  (0) 2020.12.31
Application : Socket programming  (0) 2020.12.31