Когда я пытаюсь связать сокет с портом 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-адреса.