データバッファなどがフロー(溢れ)を起こさないよう、管理・制御をすること。
データ通信で受信されたデータは一旦メモリなどのバッファに格納され、そこからプロセッサに読み出されて処理される。
このバッファの容量は有限なので、溢れそうになったら受信を一時中止し、データの処理が行なわれてバッファの容量がある程度空いたら再度受信を再開する、という制御をする。
これがフロー制御である。
一般にはバッファ容量の80%程度でフロー制御により受信を一時中断し、20%程度にまで空きが出来たところで再開する。
この80%、20%というのは経験則によるものであり、一般的でないスタイルの通信では他の値を選ぶ必要がある。
一時中断のタイミングが100%になってからで無いのは、中断するための信号の送信と、相手側が送信中断までに要する時間差を考慮しているためで、バッファが100%になってからフロー制御を始めたのでは処理が間に合わないためである。
同様に開始が0%になってからでないのも時間差を考慮しているためで、実際にデータ通信が開始されるまでの間に残ったデータの転送が完了してしまうと無駄な空き時間が発生することになり、効率が落ちてしまうからである。