基本情報技術者試験 平成31年度 春期 午前 問34
通信における、送信元と送信先のポート番号についての問題。
--------------------------
平成31年度 春期 午前 問34
PC と Web サーバが HTTP で通信している。PC から Web サーバ宛てのパケットでは、送信元ポート番号は PC 側で割り当てた50001、宛先ポート番号は 80 であった。Web サーバから PC への戻りパケットでのポート番号の組み合わせはどれか。
ア
送信元(Webサーバ)のポート番号:80
宛先(PC)のポート番号:50001
イ
送信元(Webサーバ)のポート番号:50001
宛先(PC)のポート番号:80
ウ
送信元(Webサーバ)のポート番号:80と50001以外からサーバ側で割り当てた番号
宛先(PC)のポート番号:80
エ
送信元(Webサーバ)のポート番号:80と50001以外からサーバ側で割り当てた番号
宛先(PC)のポート番号:50001
--------------------------
解説
更新さぼってしまった。
モチベーションを保つことは難しい。
ポート番号の問題。
通信したい PC やサーバーがネットワークのどこにいるかは IP アドレスで指定し、その PC やサーバーの OS 上で動いているサービスをポート番号で指定する。
サービスは自身に割り当てられたポート番号宛の通信を待っていて(Listen 状態)、通信が来たらサービスを提供するための通信を返す。
問題にもある web サービスで使われる HTTP は 80 番ポートが割り当てられている。
0 〜 1023 のポート番号はウェルノウンポート番号と呼ばれ、各番号にサービスが世界共通で割り当てられている。
よく見るところだと22番 SSH、25番 SMTP、53番 DNS、443番 HTTPS、など。
世界の共通認識として "80 番は HTTP" となっているので、webサーバーを作る側は悩まず 80 番ポートを割り当て、アクセスする側は HTTP サービスを使いたい時は悩まず 80番ポートを指定するだけで良い。
(今はセキュリティ気にしてほぼ HTTPS になっているけれども)
なお、HTTP は 80 番ポートでないといけない、という意味ではないことに注意。
8000 番とか 8080 番ポートで待ち受けている HTTP も存在する。ただし、アクセスする側がそのことを知らないと 80 番ポートを指定してしまうのでサービスが始まらなくなってしまう。
ポート番号の説明をする際は、IP アドレスはアパート(≒ PC)の住所、ポート番号はアパート内の部屋番号(≒ PC 上の各サービス)によく例えられる。
送信元(差出人)住所が IP アドレス A +ポート番号 50001 で送信先(宛先)住所が IPアドレス B +ポート番号 80 の時に、お返事の送信元と宛先はどうなりますか?がこの問題が聞いていることになる。
答えとしては、手紙と同じく送信元と送信先が入れ替わればよく、 IPアドレス B + ポート番号 80 からの返事が宛先 IP アドレス A + ポート番号 50001に 届くことになる。
ということで選択肢アが正解。
違う住所から返信が来たら、こんなところに連絡したっけ?となる。というか怖い。
通信開始時の送信元ポート番号 50001 はサービスを受け付けているポートではない。
HTTP 通信の戻りパケットがちゃんと返ってくるように(住所をちゃんと指定できるように)一時的に50001を利用しているだけ。
同じプロセスが次に HTTP 通信をしたいときは 50020 を使ってるかもしれないし、54321 かもしれない。
前後の問題はこちら。