Pipelined Protocols
- packet 하나 보내고 피드백 packet 받을 때까지 대기해야한다는 RDT의 문제점을 TCP는 한 번의 전송에 여러 packet을 pipeline을 통해 왕창 보내는 방법으로 문제를 개선하고 있다
- sender
- data packet (:≡✉️✉️✉️✉️✉️
- receiver
- ack packet ✉️✉️✉️✉️✉️≡:)
⇒ utilization(네트워크 활용)을 높일 수 있음
신뢰성 있는 파이프라인 프로토콜 구축 방법
1️⃣ Go-Back-N
2️⃣ Selective repeat
Go-Back-N
- window size를 정하여 해당 수만큼 packet 전송
- 윈도우 크기(window size): feedback을 받지 않고 보낼수 있는 허용된 packet 숫자
- sender가 보낸 packet을 모두 잘 받았으면 receiver는 지금까지 누적된 packet에 대한 피드백 보냄
- timer 시간 내에 feedback을 받지 못하면 window N 사이즈의 packet을 전부 재전송
- ACK(n) _ cumulative ACK
- RDT에서의 ACK(n) ⇒ seq# n번 packet을 잘 받았다는 응답
- Go-Back-N 에서의 ACK(n) ⇒ n개의 ACK을 잘 받았다는 응답
⚠️ 발생할 수 있는 문제점
→ 패킷 유실 시 loss packet부터 window size내 모든 packet 재전송
- pkt 2가 유실된 상황
- pkt 2를 기대하고 있던 receiver은 잘 전송된 pkt 3과 pkt 4를 버림
- ACK 2가 오지 않아 timeout 발생 (현재 ACK 1까지 받았으므로 sender의 window size는 2,3,4,5)
- sender는 window 내의 모든 packet 재전송
- window에 있는 packet들은 버퍼에 저장하고 있어야함
- window 안에 있는 packet들은 sender가 받았는지 안 받았는지 모르는 애들
- 재전송해야 할 수도 있으므로 가지고 있어야함
- window에 있는 packet들은 버퍼에 저장하고 있어야함
Selective Repeat
- 받지 못 한 packet에 대해서만 선택적 재전송
- GBN에서는 sender만 상태를 가졌지만, Selective Repeat에서는 sender와 receiver가 서로의 packet state list를 갖게 됨
- GBN은 ack-yet acked인 불연속면 한 군데 Selective Repeat은 ack-yet ack인 불연속면 여러군데임
- receiver는 pkt 0 , pkt 1은 잘 받았으니 application layer에 전달
- sender는 pkt 2 가 timeout이 나기 전까지 window size에 포함될 수 있는 packet 전달
- pkt 2 타임아웃 발생
- pkt 2만 재전송
- receiver는 유실된 pkt 2를 잘 전달 받을 때까지 버퍼에 담고 있다가 pkt 2를 받으면 순서대로 packet을 정리하여 application layer에 전달
⚠️ 딜레마
- receiver가 전송한 ACK가 모두 유실된 경우
- sender는 ACK를 받지 못했으므로 0번부터 재전송
- receiver은 이미 window를 3 0 1로 옮김
- receiver 입장에서는 pkt 0이 재전송된 패킷인지 새로운 패킷인지 알 수 없음
- packet loss 경우
- pkt 0, pkt 1, pkt 2 정상 전송
- ACK 0, ACK 1, ACK2 정상 반환
- pkt 3 유실
- sender는 pkt 3 유실을 모르고 ACK 1에 맞춰 window 이동시키고 새 pkt 0 전송
- receiver은 그 pkt 0이 새로운 패킷인지 재전송된 패킷인지 알 수 없음
✨ 딜레마 대응책
시퀀스 넘버를 window size * 2 만큼 설정
⚡ Selective Repeat 단점
- windows size 안에 있는 모든 packet에 대한 timer 수행
- 따라서 computer resource 소모
- 컴퓨터 상에 네트워크를 사용하는 프로세스는 하나의 동작만 하는 것이 아니라 그 소모량이 매우 큼
'📝Computer Science > network' 카테고리의 다른 글
전송계층(3) _ Flow Control, 3-way handshake, 4-way Handshake (0) | 2023.07.10 |
---|---|
전송계층(2) _ TCP (0) | 2023.07.09 |
애플리케이션 계층(2) _ RDT (0) | 2023.07.06 |
애플리케이션 계층(1) (0) | 2023.07.05 |
네트워크 기본(2) (0) | 2023.07.04 |