Подтвердить что ты не робот

Как два компьютера подключаются к одному внешнему адресу через NAT?

Если у меня есть два внутренних компьютера, подключающихся к одному и тому же внешнему IP-адресу через NAT-маршрутизатор, как маршрутизатор может получить трафик на правильный внутренний компьютер? Я понимаю, что NAT перенаправляет входящие пакеты на компьютер, который недавно отправил исходящие пакеты на IP-адрес отправителя [входящего пакета]. Поскольку оба компьютера отправляются на один и тот же адрес, маршрутизатор перенаправляет пакет на оба? Если это так, является ли клиентское программное обеспечение для определения того, какие пакеты релевантны?

Возможно ли, что оба компьютера пытаются подключиться к одному и тому же порту?

4b9b3361

Ответ 1

Когда вы открываете сокет, вам нужно обратиться к порту системы назначения и открыть соответствующий порт прослушивания в вашей собственной системе, чтобы получить ответ. Вам необходимо отправить систему назначения в ваш порт для прослушивания.

Наличие нескольких систем с использованием одного и того же модема

При запуске веб-браузера и перейдите на сайт www.google.com:80, ваш браузер получает/ищет свободный несистемный сопряженный порт из системы для прослушивания. Скажем, порт сопряжения 10000. Порт слушателя предназначен для приема HTTP-потока из Google.

Затем ваш малыш, сидящий рядом с вами, кстати, также просматривает www.google.com:80 и его/ее сеанс google игровой станции или xbox - независимо от того, кстати, назначается сопряженный порт 10000.

Оба вы сидите за кабельным модемом, а за кабельным модемом - ваш беспроводной маршрутизатор. И обе ваши системы находятся за беспроводным маршрутизатором - все сидят в этой последовательности, топология сети.

Чтобы предотвратить столкновение адреса порта на маршрутизаторе/модемом

Предположим, что ваша кабельная компания DHCP назначает ваш модем ip4-адрес 72.72.72.72. Но ваш беспроводной маршрутизатор DHCP назначает 192.168.0.10 вашей системе и 192.168.0.11 для вашей системы малыша.

Когда кадр, несущий информацию о ваших портах слушателя, проходит через ваш NAT-маршрутизатор, он будет переводить один или оба порта прослушивания. Скажем, порт 15000 для вашей страницы и порта 16000 для вашей детской страницы.

Затем ваш беспроводной маршрутизатор отправляет ваши запросы на сервер google исходя из 72.72.72.72:15000 и 72.72.72.72:16000.

Затем сервер Google отвечает индивидуально на 72.72.72.72:15000 и 72.72.72.72:16000, а когда ваш беспроводной маршрутизатор встречает ответ, он достигает отображаемого им файла и переводит 72.72.72.72:15000 на 192.168.0.10: 10000 для достижения вашей системы, но переводит 72.72.72.72:16000 в 192.168.0.11:10000 для достижения вашей системы малыша.

Запуск веб-серверов/серверов/ftp/etc

Но что, если в вашей системе есть веб-сервер или ftp-сервер. Что делать, если у вас есть две системы, и у обоих есть веб-сервер, и оба веб-сервера прослушивают порт 80?

Скажем, локальные IP-адреса, зарегистрированные/назначенные вашим беспроводным маршрутизатором вашей первой системы веб-сервера, равны 192.168.0.30, а ваша вторая система веб-сервера - 192.168.0.40.

У беспроводного маршрутизатора обычно будет веб-страница конфигурации по умолчанию 192.168.0.1:80, если вы не изменили ее. На странице будет отображаться вкладка, в которой вы можете определить/зарезервировать сопоставления портов приложения.

Вы можете зарегистрироваться на своем беспроводном маршрутизаторе, чтобы зарезервировать отображение

192.168.0.30:80 => outgoing port 8080
192.168.0.40:80 => outgoing port 8088

Чтобы вы могли звонить своим друзьям, ваши веб-серверы могут быть адресованы через 72,72,72,72:8080 и 72,72,72,72:8088 соответственно, где беспроводной маршрутизатор будет препятствовать его порту 8080 и 8088 из собственного динамического использования NAT.

Конечно, 72.72.72.72 так же хорош, как только ваш провайдер DHCP решит обновить ip4-адрес вашего модема, скажем, 72.72.90.200. После чего вам придется звонить/отправлять по электронной почте своим друзьям и говорить Эй, адреса серверов изменились на 72.72.90.200:8080 и 72.72.90.200:8088 соответственно. Или вы можете подписаться на динамическую службу dns (ddns), чтобы использовать именованный домен, в котором службе ddns понадобится вам установить в вашей системе простое приложение heartbeat, чтобы помочь им отслеживать изменение адреса. Перевод DDNS - это отдельная проблема/стратегия.

модемы NAT

Новые контракты ISP предоставляют вам модем с NAT. Если это так, вам нужно отключить либо тот, который находится на вашем модемом, либо тот, который находится на вашем беспроводном маршрутизаторе. Вы не должны использовать оба - то, что точка в переводе дважды, потому что NAT просто предотвращает столкновение адресов. Когда вы отключите NAT от своего беспроводного маршрутизатора, он может работать как коммутатор хаба, а не маршрутизатор, чтобы вы могли подключить его к модему, используя один из его гнезд локальной сети, а не через свой WAN-разъем.

Ответ 2

Маршрутизатор управляет "исходными" портами, которые являются отдельными для каждого компьютера. Хотя вы можете подключиться к порту 80 в "получателе", маршрутизатор может назначить порт источника некоторому порту с большим номером.

Wikipedia суммирует его как

Трансляция сетевых адресов включает переписывание источника и/или IP-адреса назначения и обычно также номера портов TCP/UDP IP когда они проходят через NAT. Контрольные суммы (как IP, так и TCP/UDP) должны также можно переписать, чтобы учесть изменения.

Ответ 3

Уже есть хорошие ответы, но вот еще один пример:

    HOST A addr         HOST B addr
    10.1.0.2:4040       10.1.0.3:4040
-----------------------------------------
NAT 200.50.50.28:4040   200.50.50.28:4041 (what external host sees)

200.50.50.28 - глобальный (интернет) маршрутизатор.

Каждый номер порта уникален в таблице NAT. И, конечно же, маршрутизатор выполняет всю грязную работу по прозрачному изменению адреса источника и адресата.

Ответ 4

Он использует разные порты для входящего внешнего трафика, а NAT затем маршрутизирует пакеты на один порт на один внутренний IP-адрес и пакеты из другого порта на другой внутренний IP-адрес... Инициальный запрос от каждого внутреннего компьютер, когда он проходит через NAT на выходе, устанавливает, какой порт будет использоваться для входящего трафика с внешнего IP-адреса, и он сообщает внешнему серверу, какой порт будет отправлять ему трафик для этого соединения.

Ответ 5

RFC3022 предоставляет много информации о том, как это работает