- 흐름제어는 혼잡제어와 거의 유사하다.
- TCP 송신저의 수신 윈로(receive window →rwnd) 로 흐름을 제어한다.
- 흐름제어가 필요한 이유
- 애플리케이션의 읽는 속도(LastByteRead) 가 네트워크에서 받는 속도 보다 느린경우(LastByteRcvd)
버퍼에 계속 쌓이는 오버플로를 방지하기 위해서
- 성립 수식
- LastByteRcvd-LastByteRead ≤ RcvBuffer → 버퍼보다 받아서 쌓이는 데이터가 많아서는 안된다.
- rwnd = RcvBuffer - [LastByteRcvd-LastByteRead] → rwnd 는 데이터를 받는 버퍼의 여유공간
- LastBySent - LastByteAcked (덜 도착한 ACK를 뜻한다.) ≤ rwnd
- 이는 살짝 모순이 있는데 이 수식대로라면, rwnd가 0이되면 전송이 중지된다. → 데이터 전송을 끊기 때문 ⇒ 그래서 RFC는 전송을 끊지말고 1씩 보내라고 함 And 수신측은 항상 어느정도 rwnd를 확보해놨기에 가능 ⇒ 이렇게 연결 가늘게 유지하고 후에 다 전송