例を見てみましょう:
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 の場合はそうなります)。各デバイスは異なる送信元ポートを持つ可能性が高いためです (そうでなくても、ルーターは追跡できるようにそれを書き換えることができます)。