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

Как приложение может использовать порт 80/HTTP без конфликтов с браузерами?

Если я правильно понимаю, приложения иногда используют HTTP для отправки сообщений, так как использование других портов может вызвать проблемы с брандмауэром. Но как это работает без конфликтов с другими приложениями, такими как веб-браузеры? На самом деле, как работают сразу несколько браузеров? Все ли они контролируют порт и получают уведомление... можете ли вы поделиться портом таким образом?

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

4b9b3361

Ответ 1

Есть 2 порта: исходный порт (браузер) и порт назначения (сервер). Браузер запрашивает ОС для доступного исходного порта (пусть он получает 33123), затем делает подключение сокета к порту назначения (обычно 80/HTTP, 443/HTTPS).

Когда веб-сервер получает ответ, он отправляет ответ, который имеет 80 в качестве исходного порта и 33123 в качестве порта назначения.

Итак, если у вас есть два браузера, одновременно обращающихся к stackoverflow.com, у вас будет что-то вроде этого:

Firefox (localhost:33123) <-----------> stackoverflow.com (69.59.196.211:80)
Chrome  (localhost:33124) <-----------> stackoverflow.com (69.59.196.211:80)

Ответ 2

Исходящие HTTP-запросы не выполняются на порту 80. Когда приложение запрашивает сокет, оно обычно получает одно случайно. Это порт источника.

Порт 80 предназначен для обслуживания HTTP-контента (сервером, а не клиентом). Это порт назначения.

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

Ответ 3

Это 5-кортеж (IP-протокол, локальный IP-адрес, локальный порт, удаленный IP-адрес, удаленный порт), который идентифицирует соединение. Несколько браузеров (или, фактически, один браузер, загружающий несколько страниц одновременно) будут использовать порт назначения 80, но локальный порт (который выделяется O/S) различен в каждом случае. Поэтому нет конфликта.

Ответ 4

Клиенты обычно выбирают порт между 1024 и 65535. Это зависит от операционной системы. Я думаю, что клиенты Windows увеличивают значение для каждого нового соединения, клиенты Unix выбирают случайный номер порта.

Некоторые службы полагаются на статический клиентский порт, например NTP (123 UDP)

Ответ 5

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

Когда вы говорите: "приложения иногда используют HTTP для отправки сообщений, так как использование других портов может вызвать проблемы с брандмауэром", вы фактически подразумеваете, что "приложения иногда отправляют сообщения на порт 80".

Сервер прослушивает порт 80 и может принимать несколько соединений на этом порту.

Ответ 6

Порт 80, о котором вы говорите, это порт удаленный на сервере, локальный браузер открывает высокий порт для каждого установленного соединения.

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

Брандмауэр позволит трафику на высокий порт для браузера, поскольку он знает, что соединение установлено с вашего компьютера.

Ответ 7

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