Я постараюсь быть простым в объяснении. У вас есть в основном два типа NAT:
- Исходный NAT : обычно известный как «маскарад», он маскирует ваш локальный IP-адрес под его адрес, чтобы он мог связываться с хостами в сетях, которые не знают маршрут к вашей локальной сети.
- NAT назначения : обычно известный как «переадресация портов», он преобразует сетевой адрес назначения в локальный адрес в чужой сети.
Я думаю, что вы описываете источник NAT, ваше общение из локальной сети с сервером в Интернете. И что происходит, как вы сказали, но позвольте мне немного перефразировать:
- Вы генерируете соединение из локальной сети в Интернет:
192.168.1.1 -> 137.132.1.15:PORT
ваш исходный порт является случайным. - Исходя из вашей таблицы маршрутизации, на локальном хосте с IP 192.168.1.1 ваш пакет перейдет на следующий переход, обычно это шлюз по умолчанию для интернет-адресов.
- когда ваш пакет прибывает на устройство с настроенным NAT источника, он преобразует адрес источника, маскируя источник пакета и преобразуя его в
201.22.14.15 -> 137.132.1.15:PORT
. И он будет помнить, что это соединение с вашего локального IP 192.168.1.1. - Предположим, что, как и в большинстве случаев, 137.132.1.15 - это брандмауэр, который будет преобразовывать порт назначения PORT в чужую локальную сеть, например 10.0.0.1, и предположим, что это веб-сервер, поэтому он будет транслировать пакет. как
201.22.14.15 -> 10.0.0.1:80
. - Затем сервер на 10.0.0.1 получит запрос от 201.22.14.15, и при возврате то же самое произойдет в другом направлении, на основе своей таблицы маршрутизации он вернется к 201.22.14.15.
- Маршрутизатор / межсетевой экран должен будет маскироваться по-другому, изменяя адреса пакетов как
137.132.1.15 -> 201.22.14.15
. - Ваш маршрутизатор на 201.22.14.15 получит пакет, сможет обнаружить, что связано с потоком, генерируемым 192.168.1.1, и вернет ответ. 192.168.1.1 увидит пакет из 137.132.1.15, так как 10.0.0.1 был замаскирован.
Надеюсь, что это помогает, и это не вызывает больше путаницы.
Примечание
TCP-соединения не организованы в дейтаграммы, они являются потоками. Дейтаграммы являются UDP.