TCP는 신뢰성 있는 데이터 전송을 보장하기 위해 다양한 제어 메커니즘을 사용한다.
이 중 중요한 요소로 흐름 제어(Flow Control)와 혼잡 제어(Congestion Control)가 있으며,
흐름 제어의 핵심 기술 중 하나가 슬라이딩 윈도우(Sliding Window) 기법이다.
만약 송신 속도가 너무 빠르면, 수신 버터가 가득 차서 데이터 손실이 발생할 수 있음. 이를 방지하기 위해 수신자는 윈도우 크기 값을 조정하여 송신자의 전송량을 제한함.
TCP에서 데이터를 전송할 때, 송신자가 한 번에 보낼 수 있는 데이터 크기를 조절하는 기법이다.
이 윈도우는 수신자가 수용할 수 있는 크기(Window Size)에 따라 동적으로 변경됨.
즉, 한 번에 여러 패킷을 보내고, ACK를 받으면 새로운 데이터를 추가로 전송하는 방식이다.
슬라이딩 윈도우는 다음과 같은 3가지 영역으로 구성된다.
| 상태 | 설명 |
|---|---|
| 전송 완료 (ACK 수신됨) | 이미 송신하여 수신자의 ACK를 받은 데이터 |
| 전송됨 (ACK 대기 중) | 전송은 했지만 아직 수신자의 확인 응답(ACK)을 받지 못한 데이터 |
| 미전송 (전송 대기 중) | 아직 전송하지 않은 데이터 (윈도우 크기 내에서 전송 가능) |
TCP에서는 윈도우 크기를 동적으로 조절하여 최적의 성능을 유지한다.
윈도우 크기는 수신자가 설정하며, 수신 버퍼가 가득 차면 줄어들고 여유가 생기면 커진다.
윈도우 크기=0을 설정하여 송신자가 더 이상 데이터를 보내지 않도록 함.| 제어 기법 | 목적 | 핵심 개념 |
|---|---|---|
| 흐름 제어 (Flow Control) | 수신자의 처리 속도에 맞춰 송신 속도를 조절 | 윈도우 크기(Window Size) |
| 혼잡 제어 (Congestion Control) | 네트워크 과부하를 방지 | Slow Start, Congestion Avoidance |
| 오류 제어 (Error Control) | 패킷 손실 시 재전송 | ACK, 재전송(Retransmission) |
이처럼 슬라이딩 윈도우는 TCP의 핵심적인 흐름 제어 기술로, 효율적이고 신뢰성 있는 데이터 전송을 가능하게 한다.