ℹ️ 자료 정리
ℹ️ 굣님 요약 정리
📡 Flow Control & Sliding Window
✅ 1. Flow Control의 목적
수신 측 버퍼 오버플로우 방지
송신자가 수신자의 처리 속도 및 버퍼 용량을 고려해 전송 속도 제어.
✅ 2. 주요 시간 요소
요소 | 의미 |
Transmission Time (Ttrans) | 프레임의 모든 비트를 링크로 전송하는 데 걸리는 시간 (L bits / R bps) |
Propagation Time (Tprop) | 1비트가 TX→RX로 이동하는 데 걸리는 시간 (d / V) |
✅ 3. Stop-and-Wait Flow Control
특징 | 설명 |
전송 방식 | 프레임 1개 전송 → ACK 수신 대기 → 다음 전송 |
프레임 수 | 한 번에 1개만 전송 가능 |
효율성 | 전파 지연이 클수록 비효율적 (idle 시간 ↑) |
Link Utilization | U = T_trans / (T_trans + 2 × T_prop) |
비유적 설명 | 하나 보내고 ACK 기다릴 동안 전송 중지 = 쉬는 시간 많음 |
✅ 4. Sliding Window Flow Control
W개의 프레임을 ACK 없이 연속 전송하여 idle 시간 없이 링크 활용
핵심 구조
- W = 수신자 ACK 없이 송신 가능한 프레임 수
- 프레임마다 고유 sequence number (k-bit) 필요 → 시퀀스 번호: 0 ~ 2ᵏ–1
- 제약 조건:
- W ≤ 2ᵏ – 1
- 이유: 시퀀스 번호가 반복되므로 프레임 충돌 혼동 방지
예시
- k = 3 → 가능한 시퀀스 번호: 0~7
- → 최대 W = 7 (8은 불가)
✅ 5. Sliding Window + ACK 종류
ACK 종류 | 의미 |
RRk | “k-1까지 잘 받았고, 이제 k번 기다림” (Receive Ready) |
RNRk | “k-1까지는 받았지만, k는 아직 못 받음” (Receive Not Ready) → flow control 목적 |
✅ 6. Piggybacking (Full Duplex일 때만)
데이터 프레임에 ACK 번호를 함께 실어서 전송
상황 | 전송 방식 |
(1) 데이터 + 새 ACK | data seq = X, ack seq = Y |
(2) 데이터 없이 ACK만 | ack seq = Y (RR 프레임) |
(3) 데이터 + 반복 ACK | ack seq는 이전 값 그대로, data seq만 증가 |
→ ACK 전용 프레임 수 감소 → 링크 효율성 증가
✅ 7. Sliding Window의 Utilization 계산
조건별 계산
● Case 1:
(조건) W ≥ (Ttrans + 2 × Tprop) / Ttrans
→ Utilization = 100%
● Case 2:
(조건) W < (Ttrans + 2 × Tprop) / Ttrans
U = (W * Ttrans) / (Ttrans + 2 × Tprop) * 100 (< 100%)
→ W가 부족하면 대기 발생
→ 낮은 효율
✅ 8. Sliding Window에서 새로 보낼 수 있는 프레임 수
현재 W값 – 아직 ACK을 받지 못한 프레임 수(unacked)
→ 남은 window 공간만큼 추가 전송 가능
✅ 9. 정리 비교
항목 | Stop-and-Wai | Sliding Window |
전송 가능 프레임 수 | 1 | W (≥ 1) |
필요 조건 | 없음 | 시퀀스 번호 (k-bit), 버퍼 고려 |
링크 효율 | 낮음 | 높음 (특히 Tprop 큰 환경에서 유리) |
구조 복잡성 | 낮음 | 높음 (윈도우 추적, 번호 순환 등 필요) |