【てぃーしーぴーうぃんどう】

TCPウィンドウ とは?

最終更新:
💡 受信側と通信経路の状態に合わせ、送りすぎを防ぐ窓

TCPウィンドウは、確認応答を受ける前に送れるデータの範囲を調整する仕組みです。受信ウィンドウと輻輳ウィンドウ、未確認データ、スケーリングとゼロウィンドウを説明します。

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

参考資料

← 用語集にもどる