현대의 TCP는 파이프라이닝 방식을 통해 여러 세그먼트를 동시에 송신한다.
그 과정에서 수신 호스트가 한번에 얼마나 받아 처리할 수 있는지 고려해야 한다.
Stop and Wait ARQ를 사용한다면 별도의 흐름 제어는 필요하지 않다.
Stop and Wait
매번 전송한 패킷에 대해 확인 응답을 받아야만 그 다음 패킷을 전송하는 기법이다.
Sliding Window
오늘날의 TCP에서 주로 사용하는 기능
- 수신 측이 한 번에 처리할 수 있는 데이터의 양(윈도우 크기)을 3 way handshake할 때 송신 측에 전달한다.
- 상대방에게 응답을 받지 않아도 범위 내에서 데이터를 보낼 수 있다.
- 패킷의 왕복 시간(RTT)이 크다면 네트워크가 혼잡하다고 생각하여 윈도우 크기를 실제 버퍼의 크기보다 작게 설정한다.
- 통신 과정 중에도 네트워크 혼잡 등의 조건을 통해 윈도우 크기는 유동적으로 설정된다.
윈도우
송신 호스트가 파이프라이닝 할 수 있는 최대량을 의미한다.