情報処理安全確保支援士 2016年 秋期 午前2 問20
問題文
TCPに関する記述のうち、適切なものはどれか。
選択肢
ア:OSI基本参照モデルのネットワーク層の機能である。
イ:ウィンドウ制御の単位はバイトではなくビットである。
ウ:確認応答がない場合は再送処理によってデータ回復を行う。(正解)
エ:データの順序番号をもたないのでデータは受信した順番のままで処理する。
🔒 解説は解答すると表示されます
TCPの再送と確認応答【午前2解説】
正解の理由
TCPは信頼性のある伝送を提供するため、受信側からの確認応答(ACK)を基に未確認のデータを再送する仕組みを持ちます。したがって選択肢ウ「確認応答がない場合は再送処理によってデータ回復を行う。」が正しいです。TCPはシーケンス番号、ACK、タイムアウト(RTO)や重複ACK検出(fast retransmit)などを組み合わせて、欠失したセグメントを検出・再送し、上位に正しいデータを渡します。
解法ステップ
- 問題のキーワード(TCP)から「トランスポート層」「信頼性」「ウィンドウ制御」「順序番号」などの特徴を思い出す。
- 各選択肢がTCPの特徴と整合するかを照合する(OSI階層、単位、再送の有無、順序番号の有無)。
- 明らかに矛盾する選択肢(ネットワーク層の機能、単位がビット、順序番号がない)を順に除外する。
- 残った選択肢(再送による回復)がTCPの基本的動作と一致することを確認して選ぶ。
選択肢別の誤答解説
-
ア: 「OSI基本参照モデルのネットワーク層の機能である。」
誤り。TCPはトランスポート層(OSIモデルの第4層)のプロトコルであり、経路選択やIPアドレスを扱うネットワーク層(第3層)のプロトコルではありません。ネットワーク層の代表はIPです。 -
イ: 「ウィンドウ制御の単位はバイトではなくビットである。」
誤り。TCPのウィンドウ制御はバイト単位で行われます(ウィンドウサイズは受信側が受け入れ可能なバイト数を示す)。ビット単位ではありません。 -
ウ: 「確認応答がない場合は再送処理によってデータ回復を行う。」
正しい。TCPはACKを受け取れない場合やタイムアウト、重複ACKに基づき該当セグメントを再送してデータの信頼性を確保します。再送はRTOタイマーやfast retransmit/fast recoveryなどの仕組みで制御されます。 -
エ: 「データの順序番号をもたないのでデータは受信した順番のままで処理する。」
誤り。TCPは各バイトにシーケンス番号を付与し、受信側で正しい順序に再構成してから上位プロセスに渡します。到着順にそのまま処理するわけではありません。
よくある誤解
-
「TCPは受信した順番のまま処理する」
誤解です。TCPはシーケンス番号によりデータを再構成し、正しい順序で上位へ渡します。受信順はそのまま反映されません。 -
「ウィンドウ制御の単位がビットである」
ウィンドウはバイト単位です。ウィンドウサイズの解釈を間違えるとフロー制御やスループットの理解を誤ります。 -
「再送は必ずタイムアウトだけで発生する」
再送はRTO(タイムアウト)だけでなく、重複ACKの検出によるfast retransmitでも行われます。
補足コラム
- 再送を発生させる代表的条件は「RTOによるタイムアウト」と「重複ACKによる早期再送」です。RTOはRTTの推定と分散を元に計算され、Karnのアルゴリズムや指数バックオフが適用されます。
- TCPは累積ACK方式が基本ですが、Selective ACK(SACK)拡張により受信側が断片的に受け取ったブロックを通知でき、効率的な再送が可能になります。
- ウィンドウ制御はフロー制御(受信ウィンドウ)と輻輳制御(Congestion Window, cwnd)を組み合わせて送信量を決定します。実効ウィンドウは min(受信ウィンドウ, cwnd) で表されます。
FAQ
Q1: ACKが来ないと必ず再送されますか?
A1: はい。ただし再送はRTOが発火するか重複ACK検出がある場合に行われます。送信側は適切なタイムアウトや重複ACKの閾値を用いて再送を制御します。
A1: はい。ただし再送はRTOが発火するか重複ACK検出がある場合に行われます。送信側は適切なタイムアウトや重複ACKの閾値を用いて再送を制御します。
Q2: TCPとUDPの再送の違いは何ですか?
A2: TCPは信頼性を提供するため再送・順序制御・フロー制御を行います。UDPはコネクションレスでこれらを行わず、再送はアプリケーションレベルで実装する必要があります。
A2: TCPは信頼性を提供するため再送・順序制御・フロー制御を行います。UDPはコネクションレスでこれらを行わず、再送はアプリケーションレベルで実装する必要があります。
Q3: SACKを使うと何が改善されますか?
A3: 欠落した複数のセグメントがある場合でも、受信側が受け取ったブロック情報を送信側に通知できるため、不要な再送を減らし効率が向上します。
A3: 欠落した複数のセグメントがある場合でも、受信側が受け取ったブロック情報を送信側に通知できるため、不要な再送を減らし効率が向上します。
関連キーワード: TCP、ウィンドウ制御、シーケンス番号、ACK、再送制御、スライディングウィンドウ、RTO、SACK、トランスポート層、輻輳制御

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

