【てぃーしーぴーうぃんどう】
TCPウィンドウ とは?
最終更新:
💡 受信側と通信経路の状態に合わせ、送りすぎを防ぐ窓
TCPウィンドウは、確認応答を受ける前に送れるデータの範囲を調整する仕組みです。受信ウィンドウと輻輳ウィンドウ、未確認データ、スケーリングとゼロウィンドウを説明します。
📌 このページのポイント
- 受信側は受け取れるデータの範囲を受信ウィンドウで伝える
- 送信側は輻輳ウィンドウも使い、経路への送信量を制御する
- 未確認のデータを含め、2つの制限内で送信する
- ウィンドウスケーリングは受信ウィンドウを拡張する仕組み
パケットを1個送るたびに、ACKを待つの?
必ず1個ごとに待つわけではないよ。確認がまだ返っていないデータも含め、許可された範囲なら続けて送れる。ACKで受信確認が進むと、送れる範囲も前へ動く。ACKが不要な通信になるわけではないんだ。
受信側が送ってよい量を決める?
受信ウィンドウrwndで、受け取れるデータの範囲を送信側へ伝えるよ。受信バッファなどの状態に関係する。この制御で受信側へ送りすぎるのを防ぐけれど、経路の混雑を扱う仕組みとは分けて考えよう。
経路が混んだときはどうする?
スケーリングで、何GBも送れるの?
受信ウィンドウの値を拡張する仕組みだよ。RFC 7323ではシフト数は最大14で、表現できる最大値は1GiB未満。「数GB」は正しくない。遠く大帯域の経路で役立つ場合があるけれど、輻輳ウィンドウやアプリの処理、回線の状態も関係し、広げれば必ず速くなるわけではないね。
Zero Windowが出たら、ネットが故障?
受信側が通常の新しいデータを受け取れる範囲をゼロと知らせている状態だよ。受信側のアプリ処理やバッファなどを調べる手掛かりになる。送信側はウィンドウの再開を確認するプローブを使うので、すべての通信が完全に止まるという意味ではない。この表示だけで原因を一つに決めず、時系列で調べよう。
まとめ:ざっくりこれだけ覚えればOK!
「TCPウィンドウ」って出てきたら「確認を待つ間に送れるデータの範囲を調整する仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「TCP Window」 = TCPのウィンドウ
💬 Windowは窓。送れるデータの範囲が、確認や受信側の状態に合わせて移動するイメージだよ。