네트워크에서는 데이터 손실이나 지연을 방지하기 위해 흐름 제어 (Flow Control)가 중요한 역할을 합니다. OSI 7계층 중 2계층(데이터 링크 계층)과 4계층(전송 계층)에서만 흐름 제어가 이루어지며, 각 계층마다 제어 방식에 차이가 있는데요, 흐름 제어의 개념과 계층별 차이를 정확히 이해하면 문제가 나왔을때 잘 작성하실 수 있을거라고 생각합니다.
흐름 제어 (Flow Control)
1. 정의
- 흐름 제어(Flow Control)는 송신 측과 수신 측의 데이터 처리 속도 차이로 인해 발생하는 데이터 손실을 방지하기 위한 제어 기법.
- OSI 7계층의 4계층 (전송 계층)뿐만 아니라, 2계층 (데이터 링크 계층)에서도 흐름 제어 기능이 수행.
2. 계층별 흐름 제어
(1) 4계층 (전송 계층) 흐름 제어
- 종단 간(end-to-end) 제어를 수행
- TCP 프로토콜을 통해 구현되며, 슬라이딩 윈도우 (Sliding Window) 기법이 핵심
- 네트워크 경로 전체의 데이터 흐름을 조절하여 대규모 트래픽 제어에 효과적
(2) 2계층 (데이터 링크 계층) 흐름 제어
- 인접한 노드 간(Point-to-Point) 제어를 수행
- 일반적으로 Stop-and-Wait 방식과 슬라이딩 윈도우 방식이 사용
- 4계층에 비해 단순한 구조로, 링크 단위의 데이터 흐름 제어에 집중
3. 슬라이딩 윈도우 (Sliding Window) 기법

(1) 개념
- 송신 측은 수신 측이 설정한 윈도우 크기만큼 데이터를 전송한 후, ACK (확인 응답)을 받아야 다음 데이터를 전송 가능
- 윈도우 크기는 네트워크 상태에 따라 동적으로 변경
- 윈도우는 전송이 완료된 데이터의 경계를 기준으로 Slide (이동) 하며 계속 확장되거나 축소
(2) 주요 특징
- 윈도우 크기 = min(수신 윈도우 크기, 혼잡 윈도우 크기)
- 윈도우 열림: 수신 측이 ACK를 보내면 윈도우의 경계가 오른쪽으로 이동하여 추가 데이터 전송 가능
- 윈도우 닫힘: 전송한 데이터가 확인될 경우, 해당 데이터는 더 이상 송신 측에서 관리하지 않아 윈도우가 닫힘
4. 흐름 제어 중 발생 가능한 문제
- Silly Window Syndrome: 수신 측이 작은 크기의 데이터를 자주 보내는 경우 비효율적인 데이터 전송 발생
→ 해결 방안: 일정 크기 이상의 데이터가 쌓일 경우에만 ACK 전송
5. 슬라이딩 윈도우 활용 방안
- 윈도우 크기 최적화: 트래픽 상태를 실시간으로 감지해 윈도우 크기를 조절함으로써 최적의 데이터 흐름 유지
- Silly Window Syndrome 방지: ACK 전송 간격을 조정하여 작은 패킷의 과도한 전송 방지
- QoS 연동: 중요 데이터의 우선 전송을 통해 대역폭을 효율적으로 사용
6. 계층별 흐름제어 비교
구분
|
4계층 (전송 계층)
|
2계층 (데이터 링크 계층)
|
제어 범위
|
종단 간 (End-to-End)
|
인접한 노드 간 (Point-to-Point)
|
주요 기법
|
슬라이딩 윈도우 (Sliding Window)
|
Stop-and-Wait, 슬라이딩 윈도우 (단순 버전)
|
프로토콜
|
TCP, UDP
|
HDLC, PPP 등
|
흐름 제어 초점
|
전체 네트워크 경로 상의 데이터 흐름 제어
|
두 노드 간의 링크 흐름 제어
|
속도 조절 능력
|
혼잡 제어와 연계되어 동적 조절 기능이 강력
|
단순히 ACK 기반의 제한적인 흐름 제어
|
7. 흐름제어 요약
구분
|
설명
|
정의
|
송신 측과 수신 측의 데이터 처리 속도 차이를 조절하는 기술
|
핵심 기법
|
슬라이딩 윈도우 (Sliding Window)
|
윈도우 크기
|
min(수신 윈도우 크기, 혼잡 윈도우 크기)
|
윈도우 열림
|
ACK 수신 시 윈도우의 오른쪽 경계 이동
|
윈도우 닫힘
|
데이터 전송 완료 후 더 이상 관리할 필요 없는 데이터 제외
|
계층별 특성
|
4계층: 종단 간 흐름 제어 / 2계층: 노드 간 흐름 제어
|
문제 상황
|
Silly Window Syndrome
|
해결 방안
|
일정 크기 이상의 데이터가 쌓일 경우에만 ACK 전송
|
'ITPE > NW' 카테고리의 다른 글
오픈랜(Open Radio Access Network, O-RAN) (0) | 2025.03.28 |
---|---|
MQTT 프로토콜 참고 (0) | 2018.03.02 |
NDN (0) | 2018.02.26 |