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


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

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

7 52

7 ответов:

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

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

Так если у вас есть 2 браузера одновременно доступ stackoverflow.com, у вас было бы что-то вроде этого:

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

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

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

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

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

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

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

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

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

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

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

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

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

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