Flow Control은 송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 방법이다.
수신 >> 송신 의 경우는 문제가 되지 않는다. 어차피 수신측은 계속해서 데이터를 받을 것이기 때문이다.
하지만 송신 >> 수신의 경우 문제가 발생한다. 수신측에서 데이터를 처리하여 윗 계층으로 서비스 하는 속도보다 송신측에서 보내는 데이터가 많을 경우(빨라서 많아짐), 수신측에서 제한된 저장용량을 초과하여 이후에 도착하는 데이터의 손실을 가져울 수 있다.
따라서 수신측에서 수신 가능한 버퍼의 크기를 공지하고, 해당 크기에 맞게 데이터를 보내면 된다.
다르게 말하면, 송신측의 데이터 전송을 줄이면 된다
1) Stop-And-Wait : 매번 전송한 패킷에 대해 확인 응답을 받아야 다음 패킷을 전송
2) Sliding Window : 수신측에서 설정한 윈도우 크기만큼 송신측에서 확인 응답 없이 세그먼트를 전송할 수 있게 하여, 데이터 흐름을 조절하여 제어함
송신 버퍼의 범위는 수신측의 여유 버퍼 공간을 반영하여 동적으로 바뀌어서 흐름 제어를 수행한다
Congestion Control은 Flow control과는 다르게 송신측의 데이터 전달과 네트워크의 처리속도 차이를 해결하기 위한 방법이다.
1) Slow Start
2) Fast Recovery
