基本情報技術者 2019年 秋期 午前(科目A) 問34
問題文
クライアントAがポート番号8080のHTTPプロキシサーバBを経由してポート番号80のWebサーバCにアクセスしているとき、宛先ポート番号が常に8080になるTCPパケットはどれか。
選択肢
ア:AからBへのHTTP要求及びCからBへのHTTP応答
イ:AからBへのHTTP要求だけ(正解)
ウ:BからAへのHTTP応答だけ
エ:BからCへのHTTP要求及びCからBへのHTTP応答
宛先ポートが常に8080になるTCPパケットはどれか【午前2 解説】
要点まとめ
- 結論:クライアントAからプロキシBへ送るHTTP要求パケットのみ宛先ポートが常に8080です。
- 根拠:A→Bの接続はBのリスニングポート8080へ直接向かい、B↔Cは別接続でポート80や一時ポートを使うためです。
- 差がつくポイント:プロキシは二つの独立したTCP接続を張る点(A↔B と B↔C)を正確に理解することが合格者の差です。
正解の理由
クライアントAが「ポート8080で待機するHTTPプロキシB」を利用する場合、Aは直接Bのポート8080へTCP接続を張ります。したがってAからBへ送るTCPパケットの宛先ポートは常に8080です。一方、プロキシBはC(ポート80のWebサーバ)へ別のTCP接続を張るため、B→CやC→Bのパケットの宛先ポートは80やBが使った一時ポートとなり、常に8080にはなりません。したがって正解は イ です。
よくある誤解
- 誤解1:プロキシ経由だからすべてのパケットがプロキシのポート(8080)を宛先にすると思う。→ 実際はプロキシは中継役で、A↔BとB↔Cは別々の接続です。
- 誤解2:応答パケット(C→BやB→A)は元の要求と同じ宛先ポートになると思う。→ 応答は相手のソースポート(一時ポート)を宛先にするため一致しません。
解法ステップ
- 問題文から「A→Bに対してポート8080のHTTPプロキシBを経由」と読み取り、AはBの8080へ接続する事実を把握する。
- TCP接続は端末間ごとに独立して張られる(A↔B と B↔C の2接続)ことを確認する。
- 各通信方向の宛先ポートを想定:A→B は 8080、B→C は 80、C→B は Bが接続時に使った一時ポート、B→A は Aの一時ポート。
- 「常に8080」になるのは上記から A→B のみであると結論付け、選択肢を選ぶ。
選択肢別の誤答解説
- ア: AからBへのHTTP要求及びCからBへのHTTP応答
誤り。A→Bは確かに宛先8080だが、C→B(CがBへ返す応答)の宛先はBがCへ接続したときの一時ポートであり8080ではない。 - イ: AからBへのHTTP要求だけ
正解。AがBのポート8080へ直接接続するため、A→Bの宛先ポートは常に8080となる。 - ウ: BからAへのHTTP応答だけ
誤り。B→Aの応答はAが最初に使った一時ポートを宛先とするため、8080ではない。 - エ: BからCへのHTTP要求及びCからBへのHTTP応答
誤り。B→Cの宛先はWebサーバのポート80であり、C→Bの宛先はBがCへ接続した際の一時ポートであるため、どちらも8080ではない。
補足コラム
- 明示プロキシ(explicit proxy)ではクライアントがプロキシのアドレスとポート(例:8080)を直接指定して接続します。一方、フォワードプロキシとリバースプロキシの役割や透過プロキシ(transparent proxy)では振る舞いが異なりますが、基本的に「プロキシは中継であり接続は分離される」点は共通です。
- 「一時ポート(ephemeral port)」はOSがクライアント側に自動割当てする高位ポート(通常1024以上)で、応答の宛先になることが多い点も覚えておきましょう。
FAQ
Q1: プロキシを使うとクライアントから見てすべての宛先がプロキシのポートになりますか?
A1: いいえ。クライアント→プロキシ間はプロキシのポートを宛先にしますが、プロキシ→オリジンサーバ間は別接続で別ポートになります。
A1: いいえ。クライアント→プロキシ間はプロキシのポートを宛先にしますが、プロキシ→オリジンサーバ間は別接続で別ポートになります。
Q2: HTTPS(TLS)でも同じ扱いですか?
A2: 明示プロキシでCONNECTメソッドを使う場合、A→BはBのポート(例:8080)へ接続しますが、BはCへ直接TCP接続してTLSトンネルを張るため、B↔Cは別接続です。概念は同じです。
A2: 明示プロキシでCONNECTメソッドを使う場合、A→BはBのポート(例:8080)へ接続しますが、BはCへ直接TCP接続してTLSトンネルを張るため、B↔Cは別接続です。概念は同じです。
Q3: NATとプロキシは同じですか?
A3: 別物です。NATはアドレス・ポート変換でパケットのヘッダを書き換えながら単一の接続を維持することがあり得ますが、プロキシはアプリケーション層で中継して別接続を張ります。
A3: 別物です。NATはアドレス・ポート変換でパケットのヘッダを書き換えながら単一の接続を維持することがあり得ますが、プロキシはアプリケーション層で中継して別接続を張ります。
関連キーワード: HTTPプロキシ、ポート8080、一時ポート、TCP接続、フォワードプロキシ、リバースプロキシ、エフェメラルポート、パケットヘッダ、OSI参照モデル、ポート番号管理

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

