web-dev-qa-db-ja.com

WebサーバーはどのようにHTTPリクエストを返しますか?

これが本当にばかげた質問であるならば、すみません。私のネットワーキングの知識はかなりまばらです。

そのため、ユーザーはあるアドレスにHTTPリクエストを送信します。その要求はローカルサブネット上のアドレスから送信されますが、宛先IPがルーティングテーブル内の他のIPと一致しないため、ルーターは要求をデフォルトゲートウェイに送信することを認識しています。要求はインターネットを介してホップし、最終的に宛先マシン(Webサーバー)によって受信されます。それはすべて理にかなっています。

しかし今、Webサーバーはどのようにしてリクエストをローカルマシンに送り返すことができますか?リクエストはローカルサブネット上のIPアドレスからのものではありませんか?ローカルマシンのルーターのIPアドレスはどこで取得されましたか?また、そのルーターのIPがある場合でも、ルーターに到達すると、パケットはどのようにしてローカルマシンにルーティングされますか?

3
ejk314

パケットには前述のように送信元アドレスがありますが、ポート番号も割り当てられています。これは、NAT環境(内部IPがプライベートで、外部IPが一定である-インターネット接続の共有など)で特に必要です。ルーターは、ランダムな未使用のポート番号を割り当て、次のテーブルを保持します。ポート番号の参照先(ユーザーのコンピューター)。ルーターがパケットを受信すると、ルーターはポート番号を調べて照合し、コンピューター/ユーザーに送信します。

間違っていることがわかった場合は、これを自由に更新/修正してください。ただし、それがどのように機能するかです。お役に立てれば。

2
Sid_Hussey

Webサーバーの応答は、クライアントの要求と同じように処理されます。それらは単なるIPデータグラムです。

Webサーバーには、応答を送信するデフォルトゲートウェイがあります。要求を発信したクライアントによって「インターネットを介してホップし、最終的に受信されます」という応答。

Webサーバーは、要求しているクライアントのルーターについて何も「知りません」。

編集:

あなたのコメントは私がした仮定を裏切っています。

要求しているクライアントコンピューターがプライベートIPアドレスを持ち、クライアントのネットワーク(そのネットワークが存在する場所)の境界にある ネットワークアドレス変換 (NAT)ルーターを使用してネットワークに接続されているシナリオについて話しています。インターネットに接続します)。

その場合、クライアントコンピューターのIPアドレスは、NATルーターによって、NATルーターの「外部」に割り当てられたパブリックIPアドレスに変換されます。 NATルーターは、要求を追跡し、インターネットから受信したときに応答がクライアントに返されるようにします。

1
Evan Anderson

答えは SPI-ステートフルパケットインスペクション にあります。これは、ルーターがサブネット上の応答の送信先を追跡する方法です。私自身、すべての要点を知っているわけではありませんが(知る必要はありませんでした)、リンクをたどると、おそらく知る必要があるだけのことがわかります。そうでない場合は、「ステートフルパケットインスペクション」で検索すると、ギャップが埋められます。

0
AFH