インターネットでは、世界中の機器が同時にデータを送り合っています。 もし全員が好きなだけデータを送り続ければ、途中のルーターが処理しきれず、 通信は渋滞し、やがて全体が機能しなくなってしまいます。 TCP の「輻輳制御」は、この“渋滞”を未然に防ぐために生まれた仕組みです。 ネットワークの混み具合を推測しながら、送信速度を自動で調整することで、 通信を安定させる役割を担っています。
なぜ輻輳制御が必要なのか
ネットワークは道路と同じで、同時に流せるデータ量には限界があります。 限界を超えるとパケットが落ち、再送が増え、さらに混雑が悪化する── これを「輻輳崩壊」と呼びます。 TCP はこの崩壊を防ぐため、送信量を自動で調整する仕組みを備えています。
輻輳ウィンドウ(CWND)という考え方
TCP は「今どれだけ送ってよいか」を CWND という値で管理します。 この値が大きいほど多くのデータを送れますが、 混雑の兆候が見えると CWND を減らして速度を落とします。
4つの基本アルゴリズム
① スロースタート(Slow Start)
接続直後はネットワークの容量が分からないため、 CWND を 1 → 2 → 4 → 8 のように指数的に増やします。 “ゆっくり始めて、様子を見ながら一気に加速する”段階です。
② 輻輳回避(Congestion Avoidance)
一定のしきい値(ssthresh)を超えると、 CWND の増加を 1ずつの線形増加 に切り替えます。 混雑を避けるための慎重な運転です。
③ 高速再送(Fast Retransmit)
同じ ACK が3回届くと「パケットが落ちた」と判断し、 タイムアウトを待たずにすぐ再送します。
④ 高速回復(Fast Recovery)
パケットロスが起きたら CWND を半分に減らし、 そこからゆっくり回復させます。 完全にスロースタートへ戻らないのが特徴です。
現代の輻輳制御(CUBIC・BBR など)
現在の Linux や Google のサービスでは、 より高速な回線に適した新しいアルゴリズムが使われています。
- CUBIC:高速回線向けに最適化された Linux 標準
- BBR:Google 開発。帯域と遅延を推定し、混雑しても速度が落ちにくい
TCP の輻輳制御は、時代とともに進化し続けています。
まとめ

TCP の輻輳制御は、インターネット全体を安定させるための重要な仕組みです。 ネットワークの混雑を“推測”しながら、送信速度を自動で調整することで、 輻輳崩壊を防ぎ、通信を滑らかに保っています。 スロースタートや輻輳回避といった基本アルゴリズムに加え、 近年は CUBIC や BBR など、より高度な方式も登場しています。 普段意識することは少ないものの、 この制御があるからこそ、私たちは安定した通信を当たり前のように使えているのです。



人気ブログランキング ブログパーツ