フロー制御

フロー制御

 TCP(Transmission Control Protocol)は、ネットワーク上でのデータ通信において、信頼性を担保するためのプロトコルです。TCPでは、データ通信を「セッション」と呼ばれる単位で行い、それぞれのセッションにおいて、フロー制御を行っています。

 TCPのフロー制御は、通信する双方の端末間で、通信する際に利用するバッファサイズや、データの転送速度などを調整することによって、通信の効率を高める仕組みです。

 TCPでは、データを送信する側(送信者)は、相手から受信確認を受け取るまで、一定量のデータを送信し続けることができません。受信側(受信者)がデータを受け取って処理する時間を考慮して、適切なタイミングで送信する必要があります。そのため、TCPでは、相手側の状況に応じて、送信するデータ量を自動的に調整することができます。

 具体的には、TCPでは「ウィンドウ制御」と呼ばれる仕組みを用いて、送信側と受信側の間で、通信可能なデータ量を調整します。受信側は、受信可能なバッファサイズを送信側に通知することができます。送信側は、その通知を受け取って、相手側が受信可能なバッファサイズに合わせてデータを送信します。これにより、相手側が受信可能な範囲内で、最大限のデータを送信することができます。

 また、TCPでは、通信路上に混雑が発生した場合に、パケットロスが発生することがあります。この場合、受信側は、パケットロスが発生したことを送信側に通知し、再送を要求することができます。再送要求が行われると、送信側は、再度データを送信することになります。

以上のように、TCPでは、ウィンドウ制御や再送制御といったフロー制御によって、通信の信頼性を担保しています。

TCPフロー制御には、以下のような機能があります。

  1. フロー制御ウィンドウ
     TCPでは、送信元と受信先の間でデータの送受信が行われますが、送信元は送信できるデータの量を制限する必要があります。これは、受信先が処理できる量を超えてデータを送信することを避けるためです。TCPでは、フロー制御ウィンドウと呼ばれるバッファを使って、送信元が送信することができるデータの量を制御します。
  2. スローイング
     ネットワークが混雑している場合、パケットの転送に時間がかかり、転送が完了する前に別のパケットが送信されることがあります。これを避けるため、TCPはスローイングと呼ばれる機能を持っています。これは、受信側が転送することができるデータの量を通知することで、送信側が適切なペースでデータを送信するように制御することができます。
  3. パイプライニング
     TCPでは、複数のパケットを一度に送信することができます。この場合、受信側は順番にパケットを処理することができます。TCPでは、このようなパイプライン処理を効率的に行うために、ACKを送信せずにデータを受信することができる機能を持っています。これにより、効率的なデータ転送が可能となります。
  4. レート制御
     TCPでは、パケットの送信速度を調整するために、レート制御機能を備えています。これにより、ネットワークの帯域幅を超える速度でパケットを送信することがないようになります。また、通信状況に応じて、送信速度を自動的に制御するために、TCPはダイナミックなレート制御機能を持っています。

 以上が、TCPフロー制御の主な機能になります。これらの機能により、TCPは高速で安定したデータ通信を実現することができます。