この概念が出た関連問題

この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は ア

解説

TCP/IP通信におけるポート番号の役割を問う問題です。クライアント(PC)からサーバへの要求パケットでは、送信元ポート番号はPC側で動的に割り当てた50001、宛先ポート番号はHTTPの well-known ポートである80でした。サーバからの応答(戻り)パケットでは、送信元と宛先がそっくり入れ替わります。すなわち、Webサーバは自分の80番ポートから送信し(送信元=80)、PCが要求時に使った50001番ポート宛てに返す(宛先=50001)ことで、PC側は届いた応答がどの要求に対するものかを識別できます。したがって「送信元(Webサーバ)=80、宛先(PC)=50001」のアが正解です。ポート番号は通信の論理的な出入口であり、「行きと帰りで送信元・宛先が対称に入れ替わる」のが大原則です。サーバ側が応答用に新しいポート番号を使うことはなく、要求を受けたポートがそのまま応答の送信元になります。この対称性さえ理解していれば、同種の問題はすべて機械的に解けます。

なぜ他の選択肢は違うのか

選択肢 イ
送信元50001・宛先80は、PCからWebサーバへ向かう「行き」のパケットのポート番号の組合せです。問われているのはWebサーバからPCへの「戻り」のパケットなので、行きと比べて送信元と宛先が入れ替わっていなければなりません。設問がどちら向きのパケットを問うているかを最初に確認する習慣をつけましょう。
選択肢 ウ
サーバが応答時に80でも50001でもない新しいポート番号を送信元として使うことはありません。応答の送信元は、要求を受け付けたポート(80)そのものです。また宛先を80にすると、PC側の待ち受けポートではなくサーバ自身のサービスポートに送り返す形になり、通信が成立しません。要求と応答でポートの組が対称に保たれることがTCP通信の基本です。
選択肢 エ
宛先が50001である点は正しいのですが、送信元を「80と50001以外からサーバ側で割り当てた番号」とする点が誤りです。サーバはクライアントのように動的ポートを新規に割り当てて応答するのではなく、サービスを提供している80番ポートを送信元として応答します。クライアント側だけが動的(エフェメラル)ポートを使う、という役割の非対称性を押さえましょう。

解くときのポイント

応答パケットは要求パケットの送信元・宛先ポートをそのまま入れ替えたもの。サーバはwell-knownポート(HTTP=80)を使い続け、動的ポートを割り当てるのはクライアント側だけ。