フロー制御 【flow control】 フローコントロール
二つの機器間でデータのやり取りを行う場合、相手から受信したデータはバッファメモリにいったん記録され、その後プロセッサから読み出されて処理される。このとき、送信が速過ぎてバッファからあふれそうになったり、受信側が何らかの処理に忙しくてデータの処理を進められない場合などに、送信側の機器にこれを通知して、送信を一時中断したり、速度を低下させたりする。こうしたデータの流れの調整をフロー制御という。
ハードウェアフロー制御 (hardware flow control)
通常の信号線とは別にフロー制御専用の信号線を用意し、これを使って通信を制御する方式をハードウェアフロー制御という。制御専用の信号線が必要なため設計は複雑になるものの、送受信するデータに制御データを埋め込まずに済むためデータ転送の効率がよい。コンピュータ本体と周辺機器間の接続など、専用のケーブルや通信路で直に繋がれた機器間の通信で用いられる。
RS/CSフロー制御 (CS/RSフロー制御 、RTS/CTSフロー制御、CTS/RTSフロー制御)
代表的なハードウェアフロー制御の方式で、RS-232Cで用いられるもの。データの送受信に用いる信号線の他に、「CS」あるいは「CTS」(Clear To Send)と呼ばれる信号線と「RS」あるいは「RTS」(Request To Send)と呼ばれる信号線の2本の制御専用の信号線を持っており、これを使ってフロー制御を行う。
ソフトウェアフロー制御 (software flow control)
通常の信号線で送受信するデータ列の中に制御データを埋め込む方式をソフトウェアフロー制御という。制御専用の信号線が必要無いためハードウェアの構成や設計は単純になるものの、制御データを埋め込む分だけデータ転送の効率は低下する。遠隔地間を公衆回線網を経由して通信する場合など、ハードウェアによるフロー制御が物理的に不可能な場合などに用いられる。
X-ON/X-OFFフロー制御
代表的なソフトウェアフロー制御の方式で、アナログモデムが公衆回線を通じてフロー制御を行う際などに用いられるもの。送信中断を要求する「X-OFF」と送信再開を要求する「X-ON」の2種類の制御コマンドをデータ中に埋め込んで送受信する。X-ONには文字コード17番(11h/Ctrl-Q)、X-OFFには19番(13h/Ctrl-S)の制御文字を用いるため、送受信するデータ自体にこの二つが含まれないよう適切に変換する必要がある。