理屈はともかく、プロキシサーバーの動作とはそういうもの(クライアント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:58