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

選択肢
ア:(正解)
イ:
ウ:
エ:
🔒 解説は解答すると表示されます
クライアント・サーバ間のポート番号【午前解説】
正解の理由
クライアント(PC)が送信したパケットの送信元ポートは50001、宛先ポートは80でした。サーバの応答では送受信が逆になるため、Webサーバが送信元ポート80で送信し、宛先がクライアントのポート50001になります。したがって正解は ア です。
解法ステップ
- 問題文で「PC→Webサーバのパケット」を確認し、送信元50001、宛先80と読み取る。
- 応答パケットは向きが逆になることを思い出す(送受信が入れ替わる)。
- したがって応答の送信元はサーバ側のポート80、宛先はクライアントの50001であると結論付ける。
- 選択肢と照合して一致するものを選ぶ(アが一致)。
選択肢別の誤答解説
- ア(正解): 送信元が80、宛先が50001。クライアント→サーバの逆向きになっており正しい。
- イ(誤り): 送信元50001、宛先80は「クライアントからサーバへ送った元のパケット」と同じ組合せで、サーバからの応答ではない。
- ウ(誤り): 「サーバ側で割り当てた80と50001以外の番号 → 宛先80」は、サーバが任意のエフェメラルポートを送信元にして宛先を80にする状況であり、サーバ応答としては不適切。サーバの応答は宛先がクライアントのポートである必要がある。
- エ(誤り): 「サーバ側で割り当てた番号 → 宛先50001」はサーバが送信元に別のポートを使うと仮定していますが、HTTPサーバは通常リスニングポート80を送信元にします。したがって誤り。
よくある誤解
- 「応答ではサーバ側が別のエフェメラルポートを使う」と思い込む誤解:サーバが受動的に受けるサービス(HTTP)は通常リスニングポート80をそのまま送信元ポートにします。
- 「送信元と宛先は変わらない」と考える誤解:パケットの向きが逆になるためポートも逆になる点を見落としがちです。
- NATやプロキシ環境を混同する誤解:翻訳やプロキシがあると観測されるポートが変わる場合があり、純粋な端末間通信とは挙動が異なります。
補足コラム
- ポートの分類: 0–1023 がウェルノウンポート(HTTPは80, HTTPSは443)、1024–49151 が登録ポート、49152–65535 がエフェメラル(動的)ポートとして実装上よく使われます。実際のエフェメラル範囲はOSや設定で異なります。
- 通信の識別: TCP/UDP接続は (送信元IP, 送信元Port, 宛先IP, 宛先Port) の組合せで一意に識別され、サーバ応答はこの組合せの送受信側を入れ替えて返されます。
- NAT/プロキシ: ネットワークアドレス変換やプロキシが介在する場合、外部から見たポート番号は変わることがあるため、実運用では観測値が異なる点に注意してください。
FAQ
Q: サーバは常にポート80を送信元にするのですか?
A: HTTPを提供するサーバは通常リスニングポート80を使い、応答パケットの送信元も80になります。ただしサービスが別ポートで動作している場合はそのポートが使われます。
A: HTTPを提供するサーバは通常リスニングポート80を使い、応答パケットの送信元も80になります。ただしサービスが別ポートで動作している場合はそのポートが使われます。
Q: クライアントのポート番号は毎回変わりますか?
A: 多くの場合、クライアントは接続ごとにエフェメラルポートを割り当てますが、長時間の接続やOSの実装によっては再利用されることもあります。
A: 多くの場合、クライアントは接続ごとにエフェメラルポートを割り当てますが、長時間の接続やOSの実装によっては再利用されることもあります。
Q: NAT越しだとどうなりますか?
A: NATは内部の送信元ポートを外部から一意に見えるように変換(ポートマッピング)するため、外部から観測する送信元ポートはNATデバイスで割り当てられた番号になります。
A: NATは内部の送信元ポートを外部から一意に見えるように変換(ポートマッピング)するため、外部から観測する送信元ポートはNATデバイスで割り当てられた番号になります。
関連キーワード: TCP, ポート番号, エフェメラルポート, ウェルノウンポート, HTTP, サーバ応答, NAT, 通信フロー, 4タプル, クライアントサーバモデル

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

