情報処理安全確保支援士 2011年 春期 午前2 問19
問題文
TCPのフロー制御に関する記述のうち、適切なものはどれか。
選択肢
ア:OSI基本参照モデルのネットワーク層の機能である。
イ:ウィンドウ制御はビット単位で行う。
ウ:確認応答がない場合は再送処理によってデータ回復を行う。(正解)
エ:データの順序番号をもたないので、データは受信した順番のままで処理する。
🔒 解説は解答すると表示されます
TCPのフロー制御【午前2解説】
正解の理由
選択肢のうち、ウ「確認応答がない場合は再送処理によってデータ回復を行う。」が正しいのは、TCP が確認応答(ACK)と再送(タイムアウトや高速再送)で信頼性(誤り制御)を実現しているためです。TCP は送信したデータに対して受信側から ACK を受け取り、所定時間内に ACK が返らない場合は再送して欠落分を回復します(RTO による再送、3重ACK による fast retransmit など)。
一方、問題文がテーマとする「フロー制御」は受信側の処理能力やバッファ容量に応じて送信側の送信速度を制御する機能であり、再送のような誤り制御とは役割が異なります。TCP のフロー制御は受信ウィンドウ(rwnd)を使って送信側の送信量を制限します。
一方、問題文がテーマとする「フロー制御」は受信側の処理能力やバッファ容量に応じて送信側の送信速度を制御する機能であり、再送のような誤り制御とは役割が異なります。TCP のフロー制御は受信ウィンドウ(rwnd)を使って送信側の送信量を制限します。
解法ステップ
- 問題文のキーワード「フロー制御」「再送」「順序番号」「OSI 層」それぞれが TCP におけるどの機能に対応するかを整理する。
- 各選択肢を、フロー制御(受信ウィンドウで送信速度調整)、誤り制御(ACK・再送で信頼性確保)、順序制御(シーケンス番号で順序復元)、OSI 層(TCP はトランスポート層)に照らして照合する。
- フロー制御に関する記述で正しいものを選ぶが、選択肢の意味を正確に判定すると、再送は誤り制御であると分かり、最も適切な記述は ウ であると判断する。
選択肢別の誤答解説
-
ア: 「OSI基本参照モデルのネットワーク層の機能である。」
誤り。TCP はトランスポート層(OSI では第4層)のプロトコルであり、フロー制御や誤り制御(信頼性確保)はトランスポート層の責任領域です。ネットワーク層(第3層)はパケットの経路制御などが主な役割です。 -
イ: 「ウィンドウ制御はビット単位で行う。」
誤り。TCP のウィンドウ制御はバイト単位(シーケンス番号はバイトオフセット)で行います。ウィンドウサイズは送信可能なバイト数を表しますので、ビット単位という表現は誤解を招きます。 -
ウ: 「確認応答がない場合は再送処理によってデータ回復を行う。」
正しい。TCP は ACK を基に信頼性を実現し、ACK が来ない場合は再送(RTO による再送や高速再送)で欠損データを回復します。加えて選択的再送を可能にする SACK(オプション)などの仕組みも存在します。 -
エ: 「データの順序番号をもたないので、データは受信した順番のままで処理する。」
誤り。TCP は各バイトにシーケンス番号を付与するため、受信側で順序番号に基づき正しい順序に並べ替えてアプリケーションへ渡します。したがって「順序番号を持たない」という記述は間違いです。
よくある誤解
- 再送とフロー制御を混同する
→ 再送は誤り制御(信頼性確保)、フロー制御は受信側の処理能力に合わせて送信側の速度を制限する機能です。役割が明確に異なります。 - ウィンドウサイズは「ビット」だと思う
→ TCP のウィンドウはバイト単位です(シーケンス番号もバイトオフセット)。 - フロー制御と輻輳制御を同一視する
→ フロー制御(rwnd)は受信側と送信側間の能力差へ対応するもの、輻輳制御(cwnd)はネットワーク全体の混雑状態に応じて送信量を制御するものです。
補足コラム
TCP の送信可能量は受信ウィンドウ(rwnd)と輻輳ウィンドウ(cwnd)の両方に依存します。実際の制約は次のように表せます。
- rwnd は受信側がアドバタイズする「空きバッファ容量」を示す。
- cwnd は輻輳制御で変化する送信許容量。
また、TCP の信頼性機構としては、再送タイマ(RTO)に基づく再送、3重 ACK による fast retransmit、SACK による選択的再送などがあり、これらはすべて誤り制御の一部です。フロー制御はこれらとは別のレイヤで受信バッファオーバーフローを防ぎます。
FAQ
Q. フロー制御と誤り制御は同時に働きますか?
A. はい。TCP では両方が同時に機能しますが、目的は異なります。誤り制御は欠損データの回復、フロー制御は受信側のバッファオーバーフロー防止です。
A. はい。TCP では両方が同時に機能しますが、目的は異なります。誤り制御は欠損データの回復、フロー制御は受信側のバッファオーバーフロー防止です。
Q. 受信ウィンドウが 0 になったら送信側はどうなる?
A. 送信側は新たなデータ送信を停止します。受信側が非ゼロのウィンドウを広告するまで persist タイマ等でウィンドウ更新を待ちます。
A. 送信側は新たなデータ送信を停止します。受信側が非ゼロのウィンドウを広告するまで persist タイマ等でウィンドウ更新を待ちます。
Q. 再送はどのタイミングで発生する?
A. 通常は再送タイムアウト(RTO)到達時に発生します。さらに 3 重 ACK(同一 ACK が 3 回続く)で高速再送が発生する仕組みもあります。
A. 通常は再送タイムアウト(RTO)到達時に発生します。さらに 3 重 ACK(同一 ACK が 3 回続く)で高速再送が発生する仕組みもあります。
関連キーワード: TCP、フロー制御、誤り制御、ウィンドウ制御、再送、順序番号、スライディングウィンドウ、輻輳制御、RTO、SACK

\ せっかくなら /
情報処理安全確保支援士を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

