ユーザーとサーバー間のデータフローを制御するために、TCP フロー制御と呼ばれるプロトコルが作成されました。
重大な問題が発生することなく処理を続行できるように、データの送受信に一定量の帯域幅が利用可能であることを確認します。
TCP プロトコルは、スライディング ウィンドウ プロトコルと呼ばれる方法を使用してこれを実現します。
この記事では、TCP フロー制御の機能と、最も重要なスライディング ウィンドウ プロトコルを含めて、TCP フロー制御を詳しく見ていきます。
TCP フロー制御とは何ですか?
TCP プロトコルは、予測不可能なネットワーク上で信頼できる通信チャネルを確立できるようにします。
データ パケットは、あるノードから別のノードに送信されるときに、失われたり、順序どおりに到着したり、ネットワークでバックアップされたり、受信ノードで過負荷になったりする可能性があります。
ただし、アプリケーションの開発中は、通常、この複雑さに対処する必要はありません。 代わりに、ソケットにデータを送信するだけで、TCP はパケットが受信者ノードに正常に配信されるようにします。.
フロー制御は、TCP が提供する重要な追加機能です。
フロー制御を使用することで、TCP は基本的に、送信側が受信側に一度に大量のパケットを送信していないことを確認します。
転送制御プロトコル – フロー制御はどのように機能しますか?
これは通常、ネットワークを介してデータを通信する必要がある場合に発生します。
送信側アプリケーションはソケットにデータを送信し、トランスポート層 (この場合は TCP) がこのデータをセグメントにパッケージ化し、ネットワーク層 (IP など) がこのパケットを何らかのルートで受信ノードに渡します。
ネットワーク層は、会話の受信側でこのデータを TCP に送信し、TCP は、受信アプリケーションが、指定されたデータの同一の複製として、このデータを利用できるようにします。
TCP は順不同でパケットを配信せず、バイト ストリーム ギャップを検出した場合に再送信を待ちます。
これは、ズームインすると表示されるものです。
TCP の送信バッファと受信バッファの両方を使用して、それぞれ送受信する必要のあるデータを保持します。
受信バッファからのデータは、準備ができたときにアプリケーションによって読み取られます。
レシーバーの受信バッファーが既にいっぱいになっている間に追加のパケットを送信しないようにすることが、フロー制御の主な目標です。
受信者は、TCP が転送できるデータの量を制限するために、受信ウィンドウ、または受信バッファー内の使用可能なスペースを通知します。
スライディング ウィンドウ プロトコル
TCP のスライディング ウィンドウ プロトコルは、最も広く使用されているフロー制御方式の XNUMX つです。 これは、可変サイズのバイト指向のプロシージャです。
このアプローチでは、送信者と受信者が接続されるとすぐに、受信者は送信者に受信者ウィンドウを送信します。
レシーバーの現在のバッファーのサイズは、レシーバー ウィンドウと呼ばれます。
確認応答なしでさらに送信できるデータの量は、使用可能な受信ウィンドウに基づいて TCP によって計算されるようになりました。
ただし、TCP は、受信ウィンドウ サイズが 0 の場合はデータ転送を停止し、ウィンドウ サイズが大きくなるのを待ちます。
レシーバ ウィンドウのサイズは、TCP フレームのコンポーネントです。
ウィンドウのサイズは 65,535 ビットであるため、ウィンドウの最大サイズは 16 バイトです。
ウィンドウの寸法は、受信者によって選択されます。 各受信確認メッセージで、受信者は現在使用可能な受信者ウィンドウのサイズを送信します。
スライディング ウィンドウ プロトコルのプロセス
スライディング ウィンドウ プロトコル手法を使用する場合、送信側と受信側が接続しているときに XNUMX つのバッファーが確立されます。
これら XNUMX つのバッファは、送信側に属する送信ウィンドウと、受信側に属する受信ウィンドウの XNUMX つのグループに分割されます。
受信ウィンドウは、送信者が受信者にデータを送信するときに、残りの受信バッファー スペースを返します。
その結果、送信側は、受信バッファーに収まるデータ量に制限されます。
上記の例の送信ウィンドウは、受信ウィンドウにデータを送信します。
データを受信した後、受信ウィンドウは肯定応答を送信し、送信ウィンドウは新しいデータ フレームを送信します。
ただし、今回は、受信ウィンドウは、受信した確認応答に加えて、使用可能なメモリがいっぱいになったことを示すメッセージを追加で送信します。
送信ウィンドウは、スペースが解放されたという受信ウィンドウからの確認を受信するまでデータ送信を一時停止し、その時点でデータ送信を再開できます。
まとめ
結論として、データ接続層とトランスポート層は、フロー制御の問題を処理する責任があります。
フロー制御メカニズムの基本的な目的は、より高速に送信する送信者からのデータで受信者が過負荷になるのを防ぐことです。
送信者によって転送されるデータにエラーがなく、強力なマシンのおかげでより速い速度で送信されたとしても、遅い側の受信者がより速いデータ速度を処理できず、一部のデータが失われる可能性があります。
コメントを残す