技術士 過去問
令和7年度(2025年)
問9 (基礎科目「情報・論理に関するもの」 問3)

このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。

問題

技術士試験 令和7年度(2025年) 問9(基礎科目「情報・論理に関するもの」 問3) (訂正依頼・報告はこちら)

TCPのふくそう制御に関する次の記述のうち、最も不適切なものはどれか。
  • ネットワーク層以下の通信レイヤからはネットワークの混み具合に関する情報は直接得られないため、TCP自体が通信経路上で発生しているふくそうを検知し、転送レートを調整する。
  • 送信ホストは通信開始時にふくそうウィンドウの値を最大セグメント長(バイト)に設定し、そのサイズのセグメントを1つ受信ホストに送信する。
  • 送信ホストはACKを受信すると、ふくそうウィンドウを最大セグメント長だけ大きくすることをふくそうウィンドウの値がしきい値に達するまで、又はセグメント廃棄によるタイムアウトが発生するまで繰り返す。そのためふくそうウィンドウのサイズは線形的に増加し、この段階をスロースタートフェーズと呼ぶ。
  • ふくそうウィンドウがしきい値に達したあとは、ふくそうウィンドウをおよそ1ラウンドトリップタイム当たり1つのセグメント分だけ増加させる。この段階をふくそう回避フェーズと呼ぶ。
  • ふくそうウィンドウがしきい値に達する前に送信中のセグメントでタイムアウトが発生した場合、しきい値をそのときのふくそうウィンドウの半分の値に設定し、ふくそうウィンドウの値を最大セグメント長に初期化する。

次の問題へ

正解!素晴らしいです

残念...

この過去問の解説 (3件)

01

TCPのふくそう制御に関する問題です。

 

ふくそう制御は、どれだけのTCPのセグメントを一度に送るかを、ウインドウサイズをネットワークの状況に応じて制御することです。

4つの選択肢は、ふくそう制御の方法についての手順を正しく述べたものです。

ただし、以下については、記述に誤りがあります。

選択肢3. 送信ホストはACKを受信すると、ふくそうウィンドウを最大セグメント長だけ大きくすることをふくそうウィンドウの値がしきい値に達するまで、又はセグメント廃棄によるタイムアウトが発生するまで繰り返す。そのためふくそうウィンドウのサイズは線形的に増加し、この段階をスロースタートフェーズと呼ぶ。

送信ホストはACKを受信すると,ふくそうウィンドウを最大セグメント長だけ大きくすることを,ふくそうウィンドウの値がしきい値に達するまで,又はセグメント廃棄による夕イムアウトが発生するまで繰り返します。そのために、ふくそうウィンドウのサイズは、線形的にではなく、指数関数的に増加し、この段階をスロースタートフェーズと呼びます。

参考になった数0

02

ふくそう制御アルゴリズムは、TCPの通信の信頼性を確保するための機能のひとつであり、ネットワークの状況に応じて効率的にデータを転送するためのふくそうを制御するための手法です。

選択肢1. ネットワーク層以下の通信レイヤからはネットワークの混み具合に関する情報は直接得られないため、TCP自体が通信経路上で発生しているふくそうを検知し、転送レートを調整する。

TCPのふくそう制御は、まず、TCPにおけるデータ分割サイズであるふくそうウィンドウ(cwnd)を1セグメントサイズに設定して送信します。これに対するACK(確認応答)を受け取ったとき、cwndを1セグメント増加させます。そして、受信側から通知されたウインドウサイズに達するまで転送量を上げていくので、時間単位で見た場合cwndは指数関数的な増加が見受けられます。これをスロースタートと言い、通信開始時のトラフィック量を抑え、ふくそうの発生を抑えます。従って本設問は適切です。
 

選択肢2. 送信ホストは通信開始時にふくそうウィンドウの値を最大セグメント長(バイト)に設定し、そのサイズのセグメントを1つ受信ホストに送信する。

現在のTCP標準では、スライディングウィンドウという技術を使用しているため、セグメントを1つずつ受信ホストに送信するとはなっていませんが、基本的な考え方は合っているため、この選択肢は適切です。
 

選択肢3. 送信ホストはACKを受信すると、ふくそうウィンドウを最大セグメント長だけ大きくすることをふくそうウィンドウの値がしきい値に達するまで、又はセグメント廃棄によるタイムアウトが発生するまで繰り返す。そのためふくそうウィンドウのサイズは線形的に増加し、この段階をスロースタートフェーズと呼ぶ。

スロースタートのふくそうウィンドウのサイズは線形的ではなく指数関数的に増加するので、本設問は不適切です。従って、この選択肢が正解です。

選択肢4. ふくそうウィンドウがしきい値に達したあとは、ふくそうウィンドウをおよそ1ラウンドトリップタイム当たり1つのセグメント分だけ増加させる。この段階をふくそう回避フェーズと呼ぶ。

ふくそう回避フェーズでは、ウインドウサイズの変化は線形的です。従って本設問は適切です。

選択肢5. ふくそうウィンドウがしきい値に達する前に送信中のセグメントでタイムアウトが発生した場合、しきい値をそのときのふくそうウィンドウの半分の値に設定し、ふくそうウィンドウの値を最大セグメント長に初期化する。

ふくそうウィンドウ(cwnd)がしきい値に達する前に送信中のセグメントでタイムアウトが発生した場合、スロースタートしきい値(ssthresh)をそのときのcwndの半分の値に設定します。そしてcwndがssthreshに達した後は、ACKを受け取るたびに増やすcwndの増加分を緩やかにすることで、ふくそうを発生させにくくします。従って本設問は適切です。
 

まとめ

TCPのふくそう制御、ふくそうウィンドウ(cwnd)、ACK(確認応答)、スロースタートは指数関数的増加、ふくそう回避フェーズは線形的増加など用語と意味を覚えておきましょう。

参考になった数0

03

この問題でいちばん大切なのは、スロースタートとふくそう回避の増え方の違いです。
スロースタートでは、cwndはおおよそ倍々に増えるので、線形増加ではありません。
ふくそう回避では、cwndは1RTT当たり約1セグメント分ずつ増えます。こちらが線形的な増え方です。

選択肢1. ネットワーク層以下の通信レイヤからはネットワークの混み具合に関する情報は直接得られないため、TCP自体が通信経路上で発生しているふくそうを検知し、転送レートを調整する。

TCPの標準的なふくそう制御は、ACKの返り方や損失、タイムアウトなどを見ながら、送信側が自分で転送量を調整します。

RFC 5681も、TCPのふくそう制御としてスロースタート、ふくそう回避、高速再送、高速回復を定めています。

選択肢2. 送信ホストは通信開始時にふくそうウィンドウの値を最大セグメント長(バイト)に設定し、そのサイズのセグメントを1つ受信ホストに送信する。

現在のTCP標準では、初期ウィンドウは1 MSS固定ではありません

RFC 5681では2~4 MSS相当、RFC 6928では最大10セグメント程度まで許されています。

ですので最新仕様にぴったり一致する書き方ではありませんが、この問題の中では、後の選択肢ほど大きな誤りではありません。

選択肢3. 送信ホストはACKを受信すると、ふくそうウィンドウを最大セグメント長だけ大きくすることをふくそうウィンドウの値がしきい値に達するまで、又はセグメント廃棄によるタイムアウトが発生するまで繰り返す。そのためふくそうウィンドウのサイズは線形的に増加し、この段階をスロースタートフェーズと呼ぶ。

これが最も不適切です。
前半の「ACKごとに最大セグメント長だけ大きくする」という説明自体は、RFC 5681の考え方と合っています。

ですが、その結果を線形的に増加すると書いているのが間違いです。

ACKごとに増えるので、1RTTの間に受け取るACKの数も増え、cwndはおおよそ倍々に増えます

つまり、スロースタートは急に大きくなる段階です。

線形的に増えるのは、ふくそう回避フェーズです。

選択肢4. ふくそうウィンドウがしきい値に達したあとは、ふくそうウィンドウをおよそ1ラウンドトリップタイム当たり1つのセグメント分だけ増加させる。この段階をふくそう回避フェーズと呼ぶ。

この記述は適切です。

RFC 5681では、ふくそう回避では1RTT当たりおおよそ1セグメント分だけcwndを増やすとされています。

これは、急に増やしすぎないようにするためです。

ここはスロースタートとの大きな違いです。

選択肢5. ふくそうウィンドウがしきい値に達する前に送信中のセグメントでタイムアウトが発生した場合、しきい値をそのときのふくそうウィンドウの半分の値に設定し、ふくそうウィンドウの値を最大セグメント長に初期化する。

RFC 5681では、タイムアウトが起きたとき、ssthreshをおおよそ半分に下げ、cwndを1 SMSS以下に戻すとしています。

厳密には「そのときのcwndの半分」ではなく、FlightSizeの半分を基準にする書き方ですが、基本動作としては「半分に下げて、cwndを小さく戻す」という理解でよいです。

参考になった数0