ルータはどのようにしてパケットを正しい場所に送信するのでしょうか?

ルータはどのようにしてパケットを正しい場所に送信するのでしょうか?

例を見てみましょう:

PC 1 (1.1.1.1)
    |
    |-----  **Router 1** (IP 3.3.3.3) ------------- **Router 2** --- Google Server(8.8.8.8 for eg)
    |
PC 2 (2.2.2.2)

このシナリオでは、両方の PC が Google に認証されており、割り当てられた Cookie がそれぞれ Cookie1 と Cookie2 であるとします。

これで、これら 2 台の PC は同時に「gmail.com」を開きます。Google サーバーがリクエストを受信すると、両方のパケットの送信元 IP は 3.3.3.3 になります (これが私の知っていることです)。

したがって、ルータ 1 が Google サーバーから応答パケットを受信すると、その宛先 IP は同じになります (つまり、3.3.3.3)。では、ルータはパケットが PC1 に送信されるのか、それとも PC2 に送信されるのかをどのようにして知るのでしょうか。

PC1 のメールを PC2 に送信できるはずなのに、送信できません。どうしてでしょうか?

答え1

TCP 接続には、送信元ポートと宛先ポートの両方が含まれます。送信元ポートは宛先ポートとは関係がなく、NAT の背後にある複数のデバイスを追跡するために使用できます (NAT の場合はそうなります)。各デバイスは異なる送信元ポートを持つ可能性が高いためです (そうでなくても、ルーターは追跡できるようにそれを書き換えることができます)。

関連情報