Как два браузера одновременно прослушивают порт 80?

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

Ответ 1

Браузеры не прослушивают порт 80, HTTP-серверы (хотя это просто соглашение, вы можете легко иметь FTP или telnet-сервер, используя порт 80).

В TCP/IP "сеанс" должен быть уникальным, а сеанс определяется как 5-кортеж (protocol, sourceIP, sourcePort, destinationIP, destinationPort). Это позволяет правильно маршрутизировать пакеты в Интернете.

Обычно, когда клиент пытается связаться с сервером, он указывает 0 в качестве исходного порта, что означает, что операционная система присваивает ему неиспользованный. Это означает, что клиент фактически прослушивает этот порт, а не порт 80.

Таким образом, вы можете получить сеанс со свойствами (TCP, mybox.com, 1101, www.microsoft.com, 80), когда ваш браузер отключится для доступа к веб-страницам Microsoft.

Если вы обнаружите, что не можете привязать сервер к порту 80, это, скорее всего, потому, что у вас уже есть сервер, работающий на этом порту, или ваша программа не имеет необходимых прав для привязки к этому порту (порты меньше чем 1024 обычно считаются привилегированными портами).

Запуск netstat -a (в Linux или Windows) сообщит вам, привязан ли сервер к порту 80. Найдите слушателя на порту 80 (или http, если он разрешает порты именам служб), например:

tcp  0  0  localhost:http  *:*  LISTEN

Ответ 2

Они не слушают порт 80, они разговаривают с портом 80 или 443, если вы используете SSL (или на любом другом порту, если администратор нарушил соглашение, вы, возможно, видели URL-адреса, такие как http://www.site.com:8080, где сайт был настроен на порт 8080).

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

Как говорит paxdiablo, вы можете использовать netstat для просмотра того, какие программы прослушивают подключения (с помощью "netstat -a -b" будет показано, какой исполняемый файл привязан к тому порту)

Ответ 3

Браузеры фактически не прослушивают порт 80. Веб-серверы делают это, и браузер открывает соединение с портом между 49152 и 65535, я думаю (динамические порты).

Ответ 4

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

В этом случае веб-сервер прослушивает порт 80, пока все клиенты (браузеры) подключаются к нему.

Ответ 5

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

Ответ 6

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

Ответ 7

Если вы имеете в виду "как два сервера могут прослушивать порт 80", подумайте об использовании API-интерфейса HTTP Server. Оба сервера могут регистрировать функцию обратного вызова вместе с URL-адресом. Затем клиент может решить, какой сервер будет вызываться на основе URL, f.e.

http://localhost/Service1 перейдет к службе, которая указала" http://localhost/Service1" в качестве URL-адреса.