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

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

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

53
задан Mr. Boy 2 June 2010 в 01:46
поделиться

7 ответов

Имеется 2 порта: порт источника (браузер) и порт назначения (сервер). Браузер запрашивает у ОС доступный исходный порт (допустим, он получает 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)
76
ответ дан 7 November 2019 в 08:31
поделиться

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

4
ответ дан 7 November 2019 в 08:31
поделиться

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

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

5
ответ дан 7 November 2019 в 08:31
поделиться

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

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

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

2
ответ дан 7 November 2019 в 08:31
поделиться

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

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

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

20
ответ дан 7 November 2019 в 08:31
поделиться

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

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

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

4
ответ дан 7 November 2019 в 08:31
поделиться

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

7
ответ дан 7 November 2019 в 08:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: