基本情報技術者 2016年 春期 午前(科目A) 問35
問題文
PCとWebサーバがHTTPで通信している。PCからWebサーバ宛てのパケットでは、送信元ポート番号はPC側で割り当てた50001、宛先ポート番号は80であった。WebサーバからPCへの戻りのパケットでのポート番号の組合せはどれか。

選択肢
ア:(正解)
イ:
ウ:
エ:
🔒 解説は解答すると表示されます
TCPの送受信ポート対応【午前解説】
正解の理由
正解: ア
クライアント→サーバの元パケットは次のようなポート組合せでした。
- 送信元(クライアント)ポート = 50001(エフェメラル)
- 宛先(サーバ)ポート = 80(HTTPのウェルノウンポート)
TCP/UDPでの応答パケットは、送受信の役割が入れ替わるため、サーバからクライアントへの戻りパケットは次の通りになります。
- 送信元(サーバ)ポート = 80
- 宛先(クライアント)ポート = 50001
したがって選択肢の中で正しい組合せはアです。サーバは同一接続内で送信元を80番のままにし、クライアントのエフェメラルポートへ戻します。
解法ステップ
- 元のパケットの送信元・宛先ポートを確認する(ここでは送元=50001、宛先=80)。
- 応答は送受信が入れ替わると考える(送元 ⇄ 宛先)。
- よって応答の送信元ポートは元の宛先(80)、宛先ポートは元の送信元(50001)になる。
- 選択肢と照らして一致するものを選ぶ(アが一致)。
選択肢別の誤答解説
- ア 80 → 50001
正解。戻りパケットは送信元がサーバの80、宛先がクライアントの50001になるため符合します。 - イ 50001 → 80
誤り。これは元パケットと同じ向きになっており、戻りパケットでは送受信が入れ替わるため成り立ちません。 - ウ 80と50001以外からサーバ側で割り当てた番号 → 80
誤り。サーバが別のエフェメラルポートを使って送信して宛先を80にすることは、同一接続の応答では起こりません。さらに宛先が80だと戻り先がサーバ自身になってしまいます。 - エ 80と50001以外からサーバ側で割り当てた番号 → 50001
誤り。サーバが別ポート(エフェメラル)で送信して宛先を50001にするというシナリオは、新規接続を張る場合以外では発生せず、同一の応答パケットとしては不適切です。
よくある誤解
- 「元と同じ順序で送られてくる」と考える誤解:元パケットの送信元/宛先を入れ替えるのが戻りパケットの基本です。
- 「サーバが応答時に別のエフェメラルポートを使う」と考える誤解:同一接続ではサーバ側は待ち受けポート(80)を送信元として用います。
- NATやプロキシがあると混乱する点:NATはポートを書き換えることがあり得ますが、論理的な役割(サーバの待ち受け=80、クライアントのエフェメラル)は変わりません。
補足コラム
- ポートとソケット:通信は(送信元IP, 送信元Port, 宛先IP, 宛先Port)の4つ組で一意に識別されます(ソケット)。応答はこの4タプルの送受信側が入れ替わった形になります。
- エフェメラルポート範囲:OSによって異なりますが、一般にクライアントは49152–65535などの範囲から一時ポートを選びます。サーバのウェルノウンポートは0–1023に多く割り当てられます。
- NAT/プロキシ:ネットワーク機器がポートを書き換えることがあります。書き換えは発生しても「応答がクライアントの割当ポートに返る」という論理は同じです。
FAQ
Q: サーバが応答時に必ず80番を送信元にするのですか?
A: HTTPサービスが80番で稼働している限り、同一接続の応答では送信元は80番です。別ポートでサービスを立てているならそのポートが用いられます。
A: HTTPサービスが80番で稼働している限り、同一接続の応答では送信元は80番です。別ポートでサービスを立てているならそのポートが用いられます。
Q: UDPでも同じですか?
A: 基本概念は同じです。応答パケットは送受信ポートが入れ替わる(送元=サーバポート、宛先=クライアントのエフェメラル)ことが多いです。
A: 基本概念は同じです。応答パケットは送受信ポートが入れ替わる(送元=サーバポート、宛先=クライアントのエフェメラル)ことが多いです。
Q: NATがあるとどう見ればよいですか?
A: NATは実際のパケットのポートを書き換えることがありますが、アプリケーション層の役割(クライアントの一時ポートへ返信する)は同様です。問題文のようにクライアントの割当ポートが50001なら応答はそこへ返ります。
A: NATは実際のパケットのポートを書き換えることがありますが、アプリケーション層の役割(クライアントの一時ポートへ返信する)は同様です。問題文のようにクライアントの割当ポートが50001なら応答はそこへ返ります。
関連キーワード: TCP、ポート番号、エフェメラルポート、ウェルノウンポート、ソケット、NAT、HTTP、クライアントサーバ通信

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

