데이터가 전송 중에 손실/손상 되더라도 정확히 목적지에 도착하도록 하는 전송 방식이다.
주로 ACK(확인 응답) 과 타이머를 이용해서 보장한다.
GBN (Go-Back-N)
SR (Selective Repeat)
이 프로토콜들은 OSI 7계층 중 4계층(전송 계층)에 해당하여, 신뢰성 있는 데이터 전달을 보장한다.
즉, 송신자와 수신자 간에 데이터를 정확하게 수신했는지를 관리한다.
TCP의 경우 위 프로토콜들의 특징을 이미 가지고 있기 때문에 필요 없지만, UDP와 같이 신뢰성이 낮은 프로토콜 위에서 필요할 때 사용하는 방식이다.
송신자는 N개까지 데이터를 연속으로 보낼 수 있다. (N = 윈도우 크기)
수신자는 패킷 번호가 순서대로 온 것만 받는다.
중간에 하나라도 문제가 생기면, 송신자는 손실된 번호부터 전부 재전송해야 한다.
위 특징 때문에 다른 방법에 비해 비효율적이다.
송신자가 패킷 1, 2, 3, 4를 보냄.
수신자가 1, 2는 받았는데, 3보다 4가 먼저 도착한다 (3번 패킷 손실)
송신자는 3부터 다시 보낸다.
수신자는 패킷 순서가 안 맞아도 패킷을 임시 저장한다. (버퍼링)
송신자는 오류가 발생한 패킷만 재전송하기 때문에 GBN보다 훨씬 효율적이다.
하지만 효율적인 만큼, 수신자가 복잡해지고 구현이 어렵다는 단점이 있다.
송신자가 1 2 3 4 5 순서로 전송한다.
3번 패킷만 손실된 경우
송신자는 3만 다시 보낸다.
수신자는 3을 받은후 받은 패킷들을 재조립한다.