
해당 포스팅은 한양대학교 이석복 교수님의 컴퓨터네트워크 강의를 정리한 글입니다.
http://www.kocw.net/home/search/kemView.do?kemId=1169634
cumulative ACK를 사용하는데, 이는 ACK(n)이라면 n번의 packet까지 잘 받았다는 신호이다.




- (a)의 경우는 receiver의 response가 모두 손실된 경우이다.
- 이때, 수신자는 패킷들을 모두 제대로 받았으므로 window를 [3,0,1]로 옮긴다.
- 송신자는 ACK를 받지 않았고, 0번 패킷이 timeout이 되었으므로 재전송한다.
- (b)의 경우는 수신자가 정상적으로 응답했을 경우이다.
- 이때, [0,1,2]를 모두 받았으므로 sender의 window는 옮겨진다.
- 송신자가 3번 패킷을 보내고 이에 대해서 유실이 되ㅓ었다.
- 송신자가 그 후 0번 패킷을 보내게 되는데, 이 패킷이 새로운 패킷인지 아니면 재전송되는 패킷인지 구분할 수 없다.
- 즉, 너무 큰 N을 설정하는 것은 수신자로 하여금 딜레마에 빠지게 한다.
- 결론적으로 window size는 sequence number의 절반의 이하가 되어야 한다.