TodayILearned/네트워크

전송계층 -1

tuigun 2021. 8. 16. 20:39

Pipelined protocols

Sender가 패킷을 보내고 Receiver가 응답을 하는것을 일일이 기다리면서 작업하면

RTT가 너무 길어진다. 

그래서 파이프라이닝 방식, 한번에 많은 패킷을 쏟아 붓는 방식으로 효율성을 높인다.

한 번에 얼만큼의 패킷을 보내는가의 여부는

window size(피드백 없이 한번에 보낼 수 있는 크기)

 

Go-Back-N

  •  Receiver는 Sender가 보내는 #Seq 들을 기억해두었다가, 누락된 #Seq가 있을 경우, 다음 #Seq에 대해 ACK를 날리지 않고 계속 누락된 것을 기다린다.

출처)강의자료-한양대 네트워크2015

Selective Reapeat

  • Receiver는 올바르게 전송된 모든 패킷에 대해 각각 Ack함
  • Sender는 누락되어 Ack받지 못한 패킷에 대해서만 재전송
  • 아래 그림에서, 패킷2번은 전송실패했지만 나머지 패킷에 대해서 버퍼에 저장한다
  • Sender는 ack2를 받지 못했기 때문에, 버퍼에 기록한다.
  • 윈도우 크기만큼(그림에서는 N=4),3번 패킷까지 전달받으면, 2번 패킷에 대한 타임아웃이 발생한다.
  • Sender는 2번 패킷을 재전송한다.

출처)강의자료-한양대 네트워크2015

Selective Reapeat dilemma

윈도우 사이즈를 넘어갈 때, 시퀀스넘버가 한정되어있다면,
패킷 손실이 일어날 때 시퀀스 넘버가 0부터 다시 시작하게 된다면, Receiver는 이 때 받는 패킷이 손실된 데이터에 대한 것인지 새로운 패킷인지 알 방법이 없다.

해결 : 시퀀스 넘버를 늘린다.