패킷을 전송할 때 한 개만 보내지 않고 한 번 보낼 때 여러 개를 보내는 방식
전송된 첫번째 프레임에 대한 확인 응답을 기다리지 않고 여러 데이터 장치를 전송하는 방법
- 네트워크 리소스의 더 나은 활용률과 많은 수의 데이터 유닛이 전송될 메세지를 구성하는 상황에서 전송속도를 향상시킨다.
- 전송 후 대기 프로토콜은 한 번에 한 개의 패킷만 전송해서 확답(ACK)신호를 받기 전까지 시간이 남는 비효율적인 측면이 있었지만 파이프라인 프로토콜은 한 번 전송할 때 정해진 사이즈만큼 여러 개의 패킷을 보내므로 전송 후 프로토콜 단점을 보완하였다
Go-Back-N
첫 번째 프레임에 대한 확인 응답을 수신하기 전에 여러 프레임을 전송하는 방식
- 패킷의 수는 아직 확인응답을 받지 못한 패킷의 최대 허용 수 N보다 크지 않다.
N크기의 window size, 아직 ACK을 받지 못한 첫 번째 패킷인 send_base, 다음에 보낼 패킷의 seq_num인 next_seq_num
- 송신자는 현재 전송 후 ACK을 받지 않은 패킷 중 보낸지 가장 오래된 패킷 하나에 대해서만 타이머를 실행하고 timeout이 발생하면 아직 ACK을 받지 못한 모든 패킷을 재전송한다.
- 수신자는 2번 패킷을 기다리는 상황에서 2번 패킷이 손실이 발생해 2번 패킷이 아닌 다른 패킷이 도착하면 2번 패킷이 아닌 해당 패킷들은 모두 무시하고 수신자는 송신자에게 현재 1번 패킷까지 정상적으로 도착했다는 의미로 ACK1을 전송한다.
- 송신자는 ACK1을 받으면 1번 패킷까지 정상적으로 전송됐다고 이해
- Comulative ACK(누적 ACK) - 만약 송신자가 1,2,3번 패킷을 전송하고 1,2번 패킷에 대한 ACK은 받지 못하고 ACK3을 받는다면 3번 패킷까지 무사지 전송됐다는 것을 의미한다.
Go-Back-N 과정
GBN을 적용한 상태에서 Sender가 전송한 패킷2번이 중간에 소실된 상황이다. Sender는 ack1이 도착한 순간부터 패킷 2번에 대한 타이머를 계산하고, 일정시간이 지나면 타이머가 만료되면서 Sender의 Window 속에 있는 패킷들이 모두 재전송된다.
Selective Repeat
수신자가 Ack를 각각의 패킷에 대해서 보내는 것이다.
3번 패킷을 기다리는 상황에서 5번 패킷이 도착한다면 Go-Back-N의 경우는 ACK3을 전송하지만 Selective Repeat은 ACK5를 전송한다.
- 수신자 측은 ACK 순서 상관없이 받은 패킷에 대한 ACK을 전송
- 송신자가 1,2,3,4,5 패킷을 전송하였는데 수신자가 1,2,4,5 패킷을 받았다면 ACK 1,2,4,5을 전송
- 송신자는 ACK을 받지 못한 모든 패킷에 대해 타이머를 계산
- 각각 타이머가 만료될 때까지 ACK이 안오며느 각각 패킷이 재전송된다.
- 따로 받은 패킷을 보관할 버퍼가 필요
- 올바르지 않은 패킷이 와도 저장하여 나중에 부족한 부분이 채워지면 함께 삼키는 구조이다.
- 사용되는 Sequence Number는 송신자의 window size와 수신자의 window size 크기의 합보다 무조건 크거나 가능
Selective Repeat 과정
- Sender가 보낸 패킷 하나가 소실되는 경우이다. 각각의 패킷이 전송되는 순간 timer가 작동하고 소실된 패킷의 타이머가 만료되면 해당 패킷만 재전송한다
- 패킷은 전송되었으니 ACK가 소실되는 경우, 해당 패킷의 타이머가 만료된 경우 ACK만 재전송한다.
참고
https://hello70825.tistory.com/461
https://www.tutorialspoint.com/what-is-pipelining
https://00h0.tistory.com/61
https://ddongwon.tistory.com/81
많은 도움이 되었습니다, 감사합니다.