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

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

本当に愚かな質問だったら申し訳ありません。私のネットワークに関する知識は非常に乏しいのです。

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

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

答え1

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

間違っていることがわかったら、遠慮なく更新/修正してください。これが仕組みです。お役に立てれば幸いです。

答え2

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

Web サーバーには、応答を送信するデフォルト ゲートウェイがあります。応答はインターネットを経由して、要求の発信元であるクライアントによって最終的に受信されます。

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

編集:

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

要求元のクライアントコンピュータがプライベートIPアドレスを持ち、ネットワークアドレス変換(NAT) ルーターは、クライアントのネットワークの境界 (そのネットワークがインターネットに接続する場所) にあります。

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

答え3

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

関連情報