![Как маршрутизатор отправляет пакет в нужное место?](https://rvso.com/image/1604648/%D0%9A%D0%B0%D0%BA%20%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80%20%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%8F%D0%B5%D1%82%20%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%20%D0%B2%20%D0%BD%D1%83%D0%B6%D0%BD%D0%BE%D0%B5%20%D0%BC%D0%B5%D1%81%D1%82%D0%BE%3F.png)
Давайте рассмотрим пример:
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)
В этом сценарии предположим, что оба ПК аутентифицированы в Google и назначены файлы cookie Cookie1 и Cookie2 соответственно.
Итак, теперь оба этих ПК одновременно открывают "gmail.com". Теперь, когда сервер Google получает запрос, исходный IP-адрес для обоих пакетов — 3.3.3.3 (это то, что я знаю).
Итак, когда ответные пакеты будут получены от сервера Google маршрутизатором 1, их IP-адрес назначения будет тем же (т. е. 3.3.3.3). Так как же маршрутизатор узнает, должен ли пакет быть отправлен на ПК1 или ПК2?
Он мог бы отправлять почту с ПК1 на ПК2, но не делает этого. Как?
решение1
TCP-соединение включает в себя как исходный, так и конечный порт. Исходный порт НЕ связан с конечным портом и может (и в случае NAT используется) использоваться для отслеживания нескольких устройств за NAT, поскольку у каждого из них, скорее всего, будет свой исходный порт (и даже если это не так, маршрутизатор может переписать его, чтобы отслеживать)