[style_prompt] 本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
令和5年度 ネットワークスペシャリスト試験 午前Ⅱ 問1 TCPの輻輳制御
TCPの通信効率と安定性を両立する輻輳制御アルゴリズムの基本動作を問う問題です。スロースタートしきい値の役割を理解することが正解への近道です。
TCPの輻輳制御において,スロースタート状態から輻輳回避状態に遷移する契機はどれか。
ア RTT(Round Trip Time)が一定値を超えたとき イ 輻輳ウィンドウサイズがスロースタートしきい値に達したとき ウ パケットの再送タイムアウトが発生したとき エ 重複ACKを3個受信したとき
【解説】
TCPの輻輳制御(Congestion Control)は、ネットワークの混雑状況に応じてデータ送信量を調整する仕組みです。主に「スロースタート」と「輻輳回避」の2つのフェーズで制御されます。
スロースタート(Slow Start) 通信開始時、輻輳ウィンドウ(CWND)を最小値から開始し、ACK(確認応答)を受け取るたびにCWNDを1ずつ増やします。これにより、1RTTごとにCWNDは2倍(指数関数的)に増加します。 $$CWND_{next} = CWND_{current} \times 2$$
スロースタートしきい値(ssthresh) 急激な増加によるネットワーク破綻を防ぐための境界値です。CWNDがこの値に達すると、慎重な増加を行う「輻輳回避」フェーズへ移行します。
輻輳回避(Congestion Avoidance) CWNDがしきい値に達した後の挙動です。1RTTごとにCWNDを1ずつ増やします(線形増加)。 $$CWND_{next} = CWND_{current} + 1$$
graph TD
Start("(通信開始")) --> SlowStart["スロースタート
指数関数的に増加"]
SlowStart --> Condition{"CWND >= ssthresh?"}
Condition -- Yes --> Avoidance["輻輳回避状態
線形的に増加"]
Avoidance -- パケットロス検出 --> Reset["しきい値を更新/再開"]
【選択肢の吟味】
| 選択肢 | 判定 | 解説 |
|---|---|---|
| ア | × | RTTの変動は輻輳制御に影響を与えますが、状態遷移の直接的なトリガー(しきい値)ではありません。 |
| イ | 〇 | CWNDがスロースタートしきい値に達した瞬間に、指数増加から線形増加(輻輳回避)へ切り替わります。 |
| ウ | × | 再送タイムアウトは輻輳を検知した合図であり、CWNDの縮小としきい値の再設定(スロースタートへの戻り)を招きます。 |
| エ | × | 重複ACKを3個受信したときは、高速再送・高速回復アルゴリズムへ移行する契機です。 |
【ポイント】
スロースタート:CWNDは指数関数的に増加(1, 2, 4, 8…)。
輻輳回避:CWNDは線形に増加(…16, 17, 18…)。
遷移点:CWND(輻輳ウィンドウ) ≧ ssthresh(スロースタートしきい値)。


コメント