Selective Repeat
- 깨진 패킷만 재전송받는 방식
- GBN(Go-Back-N)과 달리 잘 전송받은 패킷을 폐기하지 않음
- 모든 패킷이 각각 깨졌는지 검사해야 한다.
- 누적 ACK가 아니다.
- 패킷을 잘 받았는데 ACK 응답이 손실된 경우, timeout이 발생하여 해당 패킷을 재전송한다.
Selective Repeat의 단점
- 메모리 낭비가 심함
- receiver 측에서 버퍼링을 많이 해야한다.
- ACK 패킷의 손실에 따라 통신에 문제가 생길 수 있다.
- Seq num이 0 ~ 4, window size가 3일 때 Receiver가 0 ~ 2번 패킷을 잘 받았는데, ACK 패킷이 모두 손실되었다고 가정
![](https://velog.velcdn.com/images/jsgcom/post/9e083af5-b80e-4ef5-924d-5fe932adb286/image.png)
- Sender에서는 0 ~ 2번 패킷 모두 timeout이 발생하여 재전송한다.
- Receiver은 3, 4, 0번 패킷을 받을 차례이므로 Sender가 보낸 0번 패킷이 4번 다음으로 올 패킷으로 인식한다.
- 통신에 에러가 발생한다.