Я знаю о таблице NAT. Я просто хочу знать, что произойдет, если два клиента в частной локальной сети захотят загрузить один и тот же ресурс на один и тот же порт? Другими словами, когда с сервера приходит пакет, как маршрутизатор может решить, какой клиент должен получить этот пакет?
Если я не ошибаюсь, входящий пакет с сервера имеет IP-адрес назначения маршрутизатора, который является общедоступным и одинаковым для обоих, а также номер порта назначения, который в этом случае тоже одинаков.
Есть ли какой-либо механизм в маршрутизаторе или сервере для обнаружения этого? или такое поведение вообще возможно?
Я искал такие вопросы, как это, что имеет смысл в том, что ошибка возникает из-за того, что порт занят, но я спрашиваю о двух разных системах.
Обновлять : Из комментариев я понял, что был недостаточно ясен, поэтому позвольте мне повторить это еще раз с примером:
Меня просто волнует «исходный» порт устройств. Предположим, у меня есть два ноутбука (192.168.2.10
и 192.168.2.11
), оба они загружают один и тот же файл с одного и того же сервера где-то в Интернете. У каждого из них есть операционная система, которая генерирует случайный порт, поэтому исходный IP-адрес и исходный порт будут примерно такими: 192.168.2.10:6321
и 192.168.2.11:7132
. Я думал, что в NAT маршрутизатор установит свой (общедоступный) IP-адрес вместе с портами от ноутбуков, поэтому, если общедоступный IP-адрес домашнего маршрутизатора 65.82.23.32
, эти два пакета получат исходный IP-адрес и исходный порт соответственно: 65.82.23.32:6321
и 65.82.23.32:7132
.
Теперь, когда ответ возвращается, маршрутизатор может определить, какой пакет для какого ноутбука, по номерам портов, верно? Все идет нормально. Но что произойдет, если случайно или намеренно два ноутбука сгенерируют один и тот же исходный порт? Например : 192.168.2.10:6000
и 192.168.2.11:6000
. Теперь маршрутизатор установит свой общедоступный IP-адрес в качестве исходного IP-адреса, как и раньше, но теперь, если он попытается использовать эти номера портов, эти пакеты будут иметь точно такой же исходный IP-адрес и номер исходного порта, например: 65.82.23.32:6000
и 65.82.23.32:6000
.
Вот где я запутался, когда возвращается ответ, как маршрутизатор может решить, какой пакет для какого ноутбука?
После ответа @mfinni я заметил, что PAT работает не так! Устройство NAT (здесь маршрутизатор) будет назначать уникальные порты для каждого отдельного ноутбука (частный IP-адрес), затем пакеты, отправленные с этими уникальными портами (например, 7777
и 7778
). Поэтому, когда ответ возвращается, становится ясно, какой пакет для какого ноутбука из портов, тогда маршрутизатор преобразует эти 65.82.23.32:7777
, 65.82.23.32:7778
в --> 192.168.2.10:6000
, 192.168.2.11:6000
соответственно.