Selective repeat이란?
Selective repeat는 한국말로 번역하면 선택적 반복이라고 한다.
Go-Back-N과 달리 말 그대로 손실되거나 timeout이 발생한 패킷만 재전송한다. 따라서 불필요하게 재전송하는 경우를 피할 수 있다.
sender는 올바르게 수신된 모든 패킷을 개별적으로 인식하고 필요에 따라 버퍼 패킷을 제공하여 상위 계층에 전달한다.
또한, 중간에 loss된 패킷이 발생하여 잘못된 순서의 패킷을 받았더라도 버퍼에 이를 저장해 둔 후, loss된 패킷만 다시 재전송하도록 하였다.
timer는 손실된 패킷을 보호하기 위해 다시 사용하지만 오직 한 패킷만이 time out에 전송되기 때문에 각 패킷은 자신만의 논리 타이머를 가져야 한다.
sender에서 보낸 패킷에 대한 ack가 잘 수신되었을 때, base를 하나 늘리고 다시 다음 sequence number와 데이터를 보내는 알고리즘을 가지고 있다.
Selective repeat 문제점
receiver에서 ACK가 loss된 경우 time out이 발생하고 sender로부터 다시 재전송하지만 이미 receiver는 그 패킷을 받았으므로 무시하게 된다.
따라서 ACK를 받았음에도 불구하고 base가 이동하지 않게 되며 전송 지연이 발생할 수 있다.
또한, 01230123과 같은 패킷 순서를 전송할 경우에 receiver에서 loss가 발생한다면 dilemma 문제가 발생할 수 있다.
이 문제를 해결하기 위해서는 window size를 N이라고 가정했을 때, 2의 N승 - 1이 sequence number이여야 이 문제를 해결할 수 있다.
'Computer Science > 컴퓨터 네트워크' 카테고리의 다른 글
전송 계층 프로토콜 : Go-Back-N (0) | 2021.08.23 |
---|---|
rdt 3.0 (stop- and- wait) (0) | 2021.08.23 |