受信ウィンドウサイズ (ジュシンウィンドウサイズ) とは | 意味や読み方など丁寧でわかりやすい用語解説

作成日: 更新日:

受信ウィンドウサイズ (ジュシンウィンドウサイズ) の読み方

日本語表記

受信ウィンドウサイズ (ジュシンウィンドウサイズ)

英語表記

Receive window size (リシーブウィンドウサイズ)

受信ウィンドウサイズ (ジュシンウィンドウサイズ) の意味や用語解説

受信ウィンドウサイズは、コンピュータネットワークにおけるTCP通信の信頼性を支えるフロー制御の中核的な概念である。これは、通信相手から一度に受信できるデータ量の上限をバイト単位で示した値であり、受信側が送信側に自身の受け入れ能力を伝えるために使用される。コンピュータがデータを受信する際には、まず受信バッファと呼ばれる一時的な記憶領域にデータを格納し、その後アプリケーションがそのデータを処理する。受信ウィンドウサイズは、この受信バッファの空き容量に相当する。もし送信側が受信側の処理能力を無視して一方的に大量のデータを送りつけると、受信バッファが溢れてしまい、後から到着したデータは破棄されてしまう。このデータの取りこぼし(パケットロス)は、再送処理を発生させ、通信効率を著しく低下させる原因となる。受信ウィンドウサイズは、こうした事態を防ぎ、送信側が送信するデータ量を適切に調整することで、安定的かつ効率的なデータ転送を実現するために不可欠な仕組みである。 受信ウィンドウサイズの具体的な動作を理解するためには、TCPの通信手順を追う必要がある。まず、TCPコネクションが確立される際の3ウェイハンドシェイクと呼ばれる手順の中で、通信を行う双方が自身の受信ウィンドウサイズを相手に通知し合う。この初期値は、それぞれのOSやネットワークスタックの設定に依存する。通信が開始されると、このウィンドウサイズは固定ではなく、動的に変化する。受信側は、受信したデータをバッファからアプリケーションに渡し、バッファに空きができるたびに、その最新の空き容量、つまり新しい受信ウィンドウサイズを、送信側への確認応答(ACK)パケットに含めて通知する。これを受け取った送信側は、相手が受け取れるデータ量を常に把握し、送信量を調整する。この一連の仕組みは「スライディングウィンドウ」と呼ばれる。送信側は、受信側から通知されたウィンドウサイズの範囲内であれば、ACKを待たずにデータを連続して送信することが許される。そして、受信側からデータを受け取ったことを示すACKが返ってくると、送信を許可されたデータの範囲(ウィンドウ)が前に進み(スライドし)、さらに新しいデータを送信できるようになる。これにより、パケットを一つ送るたびにACKを待つという非効率な通信を避け、ネットワークの帯域を最大限に活用した高速なデータ転送が可能になる。 通信パフォーマンスは、この受信ウィンドウサイズの大きさに大きく左右される。ウィンドウサイズが小さすぎると、送信側は少量のデータしか一度に送れず、すぐにACKを待つ状態になってしまう。その結果、ネットワークの回線速度(帯域)が十分に広くても、その能力を活かしきれず、通信速度(スループット)が低下する。逆に、ウィンドウサイズが大きければ、一度に多くのデータを送信できるため、特に遅延が大きいネットワーク環境(例えば、日本と海外を結ぶような長距離通信)においても、高いスループットを維持しやすくなる。ただし、TCPヘッダで定義されているウィンドウサイズのフィールドは16ビットであり、表現できる最大値は65,535バイト(約64KB)である。現代の高速な広帯域ネットワークではこの値は小さすぎるため、RFC 7323で「ウィンドウ・スケール・オプション」という拡張機能が定義された。これは、3ウェイハンドシェイクの際に、実際のウィンドウサイズに特定の倍率(スケールファクタ)を掛けることをお互いに合意する仕組みである。このオプションを利用することで、受信ウィンドウサイズを最大約1ギガバイトまで拡張でき、高速ネットワークの性能を十分に引き出すことが可能となる。 一方で、受信側のアプリケーションの処理が遅れるなどして受信バッファが完全にいっぱいになると、受信側は受信ウィンドウサイズが「0」であることを送信側に通知する。これは「ゼロウィンドウ」と呼ばれ、これ以上データを受け取れないという信号である。ゼロウィンドウ通知を受け取った送信側は、データの送信を一時停止し、受信側のバッファに空きができるのを待つ。その後、受信側の処理が進みバッファに空きができると、受信側はウィンドウサイズが0より大きいことを示す「ウィンドウアップデート」通知を送信し、通信が再開される。もし、このウィンドウアップデート通知がネットワークの途中で失われると、送信側は永遠に待ち続けてしまい、通信が停止するデッドロック状態に陥る可能性がある。これを防ぐため、送信側はゼロウィンドウ状態になった後も、定期的に「ウィンドウプローブ」と呼ばれる小さなパケットを送信し、受信側のウィンドウサイズが回復していないかを確認する仕組みを備えている。このように、受信ウィンドウサイズはTCP通信におけるデータ転送のペースを調整する重要なパラメータであり、その動的な制御によって、信頼性と効率性を両立した通信が実現されている。

受信ウィンドウサイズ (ジュシンウィンドウサイズ) とは | 意味や読み方など丁寧でわかりやすい用語解説