基本情報 2022 サンプル問題 問29:テクノロジ系に関する問題
PC とWeb サーバがHTTP で通信している。PC からWeb サーバ宛てのパケットでは, 送信元ポート番号はPC 側で割り当てた50001,宛先ポート番号は80 であった。Web サーバからPC への戻りのパケットでのポート番号の組合せはどれか。 送信元(Web サーバ)のポート番号 宛先(PC)の ポート番号
- a80 50001正答
- b50001 80
- c80 と50001 以外からサーバ側で割り当てた番号 80
- d80 と50001 以外からサーバ側で割り当てた番号 50001
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは a「送信元(Web サーバ)80、宛先(PC)50001」 です。
ポート番号は「部屋番号」と思ってください。Web サーバは「80号室」で Web サービスを受付け、PC は会話のためにたまたま空いてた50001号室を使った、という状態です。
行きの便(PC→サーバ):
- 送信元 = PC の50001号室、宛先 = サーバの80号室
戻りの便(サーバ→PC):単純に行きと送信元・宛先を入れ替えるだけ。
- 送信元 = サーバの80号室、宛先 = PC の50001号室
👉 覚え方:戻りは送信元と宛先をスワップ(入れ替え)するだけ。サーバが新しい番号を勝手に作ったりはしません。
ほかの選択肢:b は行きと同じで間違い/c・d は「サーバが新しい番号を割り当てる」と書いてあるが、通信は同じセッションを続けるので80のまま。
なぜこれが正解か
正解は a。TCP/UDP 通信では、戻りパケットの送信元・宛先は行きパケットの逆になる:
- 行き(PC→Web サーバ):送信元 PC:50001 → 宛先 Web:80
- 戻り(Web→PC):送信元 Web:80 → 宛先 PC:50001
同一 TCP コネクションでは双方向のポート番号ペアが固定され、サーバ側が応答のたびに新ポートを割り当てることはない。
各選択肢の解説
- a:正答。送信元と宛先を入れ替えるだけ。
- b:行きパケットと同じになっているため誤り。
- c・d:「サーバ側で新しい番号を割り当てる」とあるが、戻りパケットでサーバが送信元ポートを変更することはない(同一コネクションを保つため)。
覚え方・ひっかけ注意
ポート番号の3分類:
- Well-Known(0-1023):HTTP=80、HTTPS=443、SSH=22、SMTP=25、DNS=53 等のサーバ用標準ポート。
- Registered(1024-49151):登録済みアプリ用。
- Dynamic/Ephemeral(49152-65535):クライアントが一時的に使う動的ポート(本問の50001はこの範囲)。
通信の本質は「4タプル(送信元IP・送信元ポート・宛先IP・宛先ポート)でセッション識別」。戻りパケットは IP もポートもすべて逆転する。
理論的背景
TCP/UDP 通信におけるコネクション(ソケットペア)は 5タプルで一意に識別される:
- プロトコル(TCP/UDP)
- 送信元 IP アドレス
- 送信元ポート番号
- 宛先 IP アドレス
- 宛先ポート番号
クライアントはエフェメラルポート(短命ポート)として OS が動的割当する高位番号を使用。サーバはサービス受付用にWell-Known ポートで LISTEN する。コネクション確立後、両端のソケットは5タプルに紐付き、戻り通信は単に送受の役割が逆転するだけ。サーバ側が応答中に送信元ポートを変える操作は TCP の状態機械では発生しない(FIN/RST 後の再接続を除く)。
実務での使われ方
- NAT(Network Address Translation):NAPT(NAT 過負荷)はクライアント側ポート番号を書換えて多対1変換を実現。NAT テーブルは5タプル+変換後ポートを保持し、戻りパケットを正しい内部ホストに転送。
- ファイアウォール:ステートフルインスペクション型はコネクション状態を追跡し、戻りパケットを自動許可(NEW/ESTABLISHED/RELATED)。Linux の `iptables`/`nftables`、ufw、Cisco ASA 等。
- ロードバランサ:L4 LB は5タプルベースのハッシュで同一コネクションを同一バックエンドに固定(コネクションパーシステンス)。L7 LB は HTTP ヘッダで振分け。
- トラブルシュート:`netstat -an`、`ss -tnp`、Wireshark の Conversations 統計で5タプル単位のフロー解析。
- ポート枯渇:高負荷クライアント(プロキシ等)でエフェメラルポート枯渇が起こる。Linux なら `net.ipv4.ip_local_port_range` でレンジ拡張、`tcp_tw_reuse` で TIME_WAIT 再利用が対策。
試験での位置づけ
基本情報・応用情報のネットワーク分野で必出。3-way handshake(SYN/SYN-ACK/ACK)の状態遷移、TIME_WAIT 状態の意義、TCP のシーケンス番号・確認応答番号、ポート番号と IANA 管理まで体系で押さえる。ネットワークスペシャリスト試験では NAT トラバーサル(STUN/TURN/ICE)、UPnP IGD まで深掘りされる。
選択肢の発展補足
- 行きパケットの IP ヘッダ:送信元 IP=PC、宛先 IP=Web サーバ。戻りでは IP も入れ替わる。
- HTTPS(443番)の場合:TLS ハンドシェイク(ClientHello→ServerHello→鍵交換)が走るが、ポート番号は同じく行き443・戻り443、送受役割逆転は同じ。
- HTTP Keep-Alive(持続接続)では同一5タプル上で複数 HTTP リクエストが流れ、エフェメラルポートの消費を抑制する。
- QUIC(HTTP/3)は UDP ベースだがコネクションIDで識別するため、IP/ポート変化(モバイル網切替など)でも同一セッション継続可能(コネクション マイグレーション)。これは TCP/UDP の従来モデルからの大きな変化。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 2022 サンプル問題 問29/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。