3

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

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

Мое понимание:

  1. Компьютер от маршрутизатора. 22.22.22.22.22: 80

  2. Router to World: 12.68.191.1.102: 1 -ISP заданный IP-адрес: порт для различения компьютеров, подключенных к нему.

Что теперь

Или, может быть, есть разница между портом и портом источника.

2 ответа2

1

Вы путаете исходные порты и порты назначения. Когда запрос отправляется на HTTP-сервер, порт назначения равен 80, поскольку именно это обычно и прослушивают веб-серверы. Маршрутизаторы NAT могут выбрать любой порт источника, который они хотят. Когда они получают ответы, они используют порт назначения (и другую информацию), который должен соответствовать исходному порту, который они выбирают для исходящих пакетов, чтобы знать, с каким соединением связаны пакеты.

Ваш компьютер должен делать то же самое. Скажем, вы запускаете два разных браузера и указываете каждый на superuser.com . Как вы думаете, как ваш компьютер сообщает, к какому TCP-соединению относятся входящие пакеты?

0

Сервер всегда получает данные через порт 80 - маршрутизатор не переписывает порт, а только адрес источника - по крайней мере, в "типичном" случае.

Правда в том, что сервер НЕ знает, какая машина за маршрутизатором NAT изначально запрашивает трафик, но есть несколько вещей, которые он может сделать, чтобы выяснить это:

  1. Он может просматривать информацию, которую браузер отправляет на сервер как часть запроса, и использовать такие вещи, как поле REFERER (реферер), чтобы увидеть последнюю страницу, которую посетил браузер, и строку идентификации браузера. (Нет никаких сомнений в том, что можно "дактилоскопировать" клиента разумно, если вы в отчаянии)

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .