質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
基本情報技術者

基本情報技術者とは、経済産業省が行う国家資格「情報処理技術者試験」の区分の一つです。試験ではプログラマーやシステムエンジニアなどIT業界で働くために必要とされる基礎知識や情報処理において論理的な考え方ができるか等が問われ、企業から高い評価を獲ることができ、IT業界の入門的な資格として人気があります。

Q&A

解決済

2回答

1580閲覧

基本情報技術者試験 ポート番号

piyoko123

総合スコア2

基本情報技術者

基本情報技術者とは、経済産業省が行う国家資格「情報処理技術者試験」の区分の一つです。試験ではプログラマーやシステムエンジニアなどIT業界で働くために必要とされる基礎知識や情報処理において論理的な考え方ができるか等が問われ、企業から高い評価を獲ることができ、IT業界の入門的な資格として人気があります。

0グッド

0クリップ

投稿2022/09/02 13:46

基本情報技術者試験のネットワークの問題についてです。
以下が問題文です。

クライアント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応答

私は以下のように考えました。
クライアント → HTTPプロキシサーバ(8080)→ Webサーバ(80)
よって、アを選択しましたが、正答はイでした。

同じ機器での同じ通信であっても、
宛先ポート番号と送信元ポート番号は異なるモノなのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

理屈はともかく、プロキシサーバーの動作とはそういうもの(クライアントAからの通信を待ち受けるポート番号[8080]と、Aから受け取ったデータをWEBサーバCへ"転送"するときの送信元ポート番号は通常異なる番号になる)と覚えるのが一番簡単なんじゃないですかね。

BからCへ転送するときの送信元ポート番号はランダムに選ばれます。

問題でいうと、WebサーバCはポート番号80で待ち受けていて、CがプロキシサーバBに対して応答する時の送信元ポートは、おんなじ80番になります。
つまりWebサーバCは、待ち受けるためのポート番号と(応答時の)送信元ポート番号はおなじ番号。
また、BからAへ応答する場合の送信元ポート番号も、待ち受けポート番号と同じ8080。
よって同じ機器の待ち受けポート番号と送信元ポート番号は絶対に異なるというわけでもない。

あとBの送信元ポートはクライアントの通信ごとにランダムにすることで、複数のクライアントを区別できるという意味もあります。

仮に複数のクライアントがBにつながっているとします。
そして、BがCに対してデータを送るときに、送信元ポート番号を常に自分の待ち受けポート番号と同じ8080にするとします。
すると、Cは応答時に宛先ポート番号を、Bから受け取った時の送信元ポート番号である8080に設定します。
こうなっちゃうとプロキシサーバBは、Cからの応答を受けたときに、どのクライアントに対する応答なのか区別できません。

そうではなくて、BがCへ送信する時に、送信元ポート番号をクライアントごとにランダムな番号に変えておき、それぞれのクライアントのIPアドレスと設定した送信元ポート番号を紐づけておきます。このようにすることで、Cから応答があった時に、その応答がどのクライアントに対するものなのか区別して、正しいクライアントに返信できます。

投稿2022/09/02 14:37

編集2022/09/02 14:42
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

piyoko123

2022/09/02 14:58

とてもよく分かりました! プロキシサーバがWebサーバにアクセスするときの送信元ポート番号が、ランダムである必要性についても具体例で理解できました! ありがとうございます。
guest

0

同じ機器での同じ通信であっても、

宛先ポート番号と送信元ポート番号は異なるモノなのでしょうか?

はい。むしろ、Bの8080番ポートはクライアントからの問い合わせのためにリッスン中なので、Cへのリクエストにあたって使われることは通常ありません。適当なポート(エフェメラルポート)から問い合わせを行って、そのポートに返信されます。

投稿2022/09/02 14:31

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問