수신자가 감당할 수 있는 만큼만 데이터를 보내어, 수신자의 버퍼 초과를 방지하기 위함이다.
수신자가 매번 송신자에게 남아있는 버퍼 사이즈(Window Size)를 알려준다.
송신자는 이 윈도우 크기를 보고, 수신자가 받을 수 있을 만큼만 데이터를 전송한다.
중간 라우터나 네트워크 경로의 과부하로 인한 네트워크 자체가 터지는 걸 방지하기 위함이다.
송신자가 네트워크 상태를 추측해서 적절히 데이터 보내는 전략을 사용한다.
윈도우 크기를 동적으로 조정하여 문제가 생기면 사이즈를 줄인다.
Slow Start (느린 시작)
AIMD (Additive Increase, Multiplicative Decrease)
초기엔 아주 조심스럽게 시작한다.
처음 연결하면 윈도우 크기(cwnd) 를 1로 시작.
매번 ACK 받을때마다 윈도우 크기를 두 배로 증가시킨다.
하지만, 어느 순간 임계치(ssthresh)를 넘으면 slow start 모드를 종료하고, 그 다음부터는 AIMD 모드로 넘어간다.
Slow Start 이후에 사용되는 동작 방식이다.
즉, AIMD는 다음과 같은 특징을 가진다.
평소엔 천천히 윈도우 사이즈를 키운다.
문제가 생기면 과감히 윈도우를 줄인다.
-> 이렇게 네트워크가 막히지 않게(혼잡 제어) 조절해서 전송한다.