ecsimsw

Transport layer_ RDT 본문

Transport layer_ RDT

JinHwan Kim 2019. 7. 23. 17:36

Reliable Data Transfer

 

   check-sum으로 에러 체크만 가능한 udp와 달리 tcp는 reliable한 데이터 전송을 보장한다.

 

   reliable을 보장하기 위해 문제가 되는 점은 Error와 Data loss이다. 반대로 이 두가지를 해결할 방법이 있다면 reliable한 데이터 전송이 보장된다는 말과 같다.

 

Protocol  

 

   1. Check error with check sum

 

   2. Feedback on wheter received data has errors.

 

   3. Re-transmission when there's no feedback for a certain period.

 

   위 세가지 기본 원리로 rdt 처리가 진행된다. 우선 pck의 checksum 만으로 오류를 확인하고 feedback하여 비정상적인 패킷을 재전송하는 처리하는 방식에서 시작된다.

 

ACK, NAK에 따라 전송/재전송을 결정하는 처리 방식

      이때, 만약 ACK와 NAK, feedback에 에러가 있다면 이 처리 방식은 재전송 여부를 결정할 방법이 없다. 이를 해결하기 위해 ACK일 때만 전송을 확인하고, feedback이 error나 NAK 일 경우 다시 재전송을 하는 처리한다.

 

feedback 에러에 대비하여 확실한 경우(ACK) 외에는 재전송하는 처리 방식

   Feedback error가 NAK에서 일어난다면 상관 없겠지만, ACK에서 일어난 경우 PCK1이 중복되는 상황이 발생한다.(duplicate packet issue) 

 

   전송 시의 PCK과 재전송 시의 PCK이 구분되기만 하면 중복을 확인하고 이를 처리할 수 있다. 패킷에 sequence number를 삽입하는 것으로 PCK에 순서를 표기하면 이전 수신 패킷과 현재 수신 패킷이 같은 것인지를 비교 할 수 있다. 이때, 어차피 비교해야하는 것은 현재와 이전 수신 패킷 두개 뿐이므로 sequence number는 한 비트(0,1)가 순차적으로 돌아가기만 하면 충분하다.

 

PCK에 sequence를 추가하여 duplicate를 바로 처리할 수 있다. sequence는 0,1으로 이전 수신 패킷과의 비교만 가능하도록 한다.

  Feedback에도 sequence를 추가하여 이전 피드백과 현재 피드백을 비교하는 것으로 NAK을 불필요하도록 만들 수 있다. 가장 최근 수신에 성공한 PCK의 sequence를 feedback이 기억하고 수신 부에서는 feedback의 sequence으로 재전송 여부를 결정할 수 있다.

 

Feedback에 sequence를 포함하는 것으로 NAK 확인 없이 ACK만으로 재전송이 가능한 처리 방식

 

   위 방식에서 loss에 대한 처리는 timer 만으로  가능하다. 아래 그림과 같이 특정 시간 기간을 두고 해당 기간 안에 반응이 없음(time out)만 확인하면 이전 패킷을 재전송해도 문제 없음을 확인할 수 있다.

 

왼쪽부터 packet loss, feedback loss인 상황, 가장 오른쪽 사진처럼 feedback delay보다 timer 대기 시간이 짧은 상황에도 문제 없이 처리가 가능함.

 

Note

 

'Computer Science > Network' 카테고리의 다른 글

Transport layer_TCP  (0) 2019.08.05
Pipelining _ Go Back N, Selective Repeat  (0) 2019.07.29
Transport layer_UDP  (2) 2019.07.23
Socket  (0) 2019.07.11
Introduction to network  (0) 2019.07.09
Comments