RDT 프로토콜은 신뢰성은 좋지만 효율은 좋지 않다.

패킷을 하나만 주고 피드백을 받기 때문에..

pipeline 프로토콜은 패킷을 한번에 여러 개 보낸다.

GO-BACK-N

보낼 패킷을 window size로 정의해서 그 크기만큼 한번에 보낸다. 패킷은 각각 타이머가 존재한다.

타이머가 터졌다면 윈도우에 있는 패킷 모두 다시 재전송한다.

reciver가 피드백을 보낼 때는 ack에 값을 담아서 잘 받았는지 확인할 수 있다

리시버는 자신이 받아야 할 시퀀스 넘버만 기다리고 받은 패킷에 대한 ack만 피드백한다. 다른 아무 행동도 하지 않는다. 리시버가 엄청 단순해진다. 잘못된 패킷은 버린다.

센더는 윈도우에 존재하는 패킷들을 버퍼에 담고 있어야한다. 패킷 전송중 실패했다면 버퍼에 남겨둔 패킷을 재전송 해야한다.

리시버는 아무 행동도 하지 않고, 센더의 부담이 너무 큰 방식이다.

Selective Repeat