-원활한 데이터 흐름을 위해서 목적지로부터 ACK를 받기 전에 소스가 보낼 수 있는 데이터의 양을 조절하는 기법
-Flow control을 위해 TCP에서는 sliding window protocol을 사용
sliding windows는 2개의 네트워크 호스트간 데이터의 흐름을 제어하기 위한 기법으로 ACK를 받지 않고도 여러 패킷을 보내는 것을 가능하게 하여 네트워크를 효율적으로 사용
이 때 window 크기는 목적지가 알려주는 receiver advertised window size와 congestion window size에 의존하여 변경된다.
window=min(recv window, cwnd)
-처음에 congestion window size(CWND)=1 segment로 시작
-Exponential increase 구간:ACK를 받을 때마다 ongestion window size를 1 segment씩 증가
-Linear increase 구간:CWND가 Allowed window size에 절반에 이르면, ACK를 받을 때마다 CWND를 1/CWND씩 증가시킴(or RTT마다 1씩 증가), Allowed window size에 이를 때 까지 만약 Allowed window size에 다다르면 거기서 멈춤.
-Packet 손실을 감지하면, CWNK=1에서 다시 시작하여 손실직선 CWND의 절반까지 exponential increase
-그 이후 Linear increase
-TCP sender가 혼잡상황에 알맞게 패킷을 전송하기 위해 사용하는 window이다.
-네트워크 혼잡상황을 추정하여 네트워크를 혼잡상황에 빠트리지 않게 하며, 또한 네트워크가 혼잡상황에 빠졌을 경우 신속하게 혼잡상황을 탈출하기 위해 사용한다.
-처음에 congestion window size(CWND)=1segment로 시작
-EXPONENTIAL INCREASE 구간:ACK를 받을 때마다 congestion window size를 1segment씩 증가.
-linear increase구:CWND를 1/CWND씩 증가시킴(OR RTT마다 1씩 증가).
Allowed window size에 이를 때까지. 만약 Allowed window size에 다다르면 거기서 멈춤.
-Packet 손실을 감지하면 CWND=1에서 다시 시작하여 손실직선 CWND의 절반까지 Exponential increase(Slow start)
-그 이후 Linear increase
-fast retransmit은 TCP의 sender가 전송한 패킷이 손실될 경우 time out이 일어나지 않더라도 손실된 패킷을 재전송하는 것을 말한다.
-동작원리:TCP receiver는 out of sequence packet(segment)을 수신하면, 자신이 현재 필요로 하는 세그먼트의 시작번호로 ACK를 보낸다. 이것을 중복 ACK라 하는데 중복 ACK를 세 개 수신하면 TCP sender는 해당 세그먼트가 손실되었다고 판단하고 timeout이 일어나지 않더라도 즉시 재전송한다.