Используют ли веб-браузер разные номера портов для открытых вкладок?
Мне интересно, как работают внутренние браузеры.
Теперь подключение к различным веб-сайтам с помощью "вкладок" в одном браузере можно обрабатывать одним из двух способов:
1 - Использование потоков
2 - Использование разных номеров исходного порта для каждой открытой вкладки
Я знаю, что для этого вопроса может быть не один ответ, и он может отличаться от одного браузера к другому, но все ответы оценены.
Спасибо
Спасибо всем. Я очень ценю это.
Мой вопрос относится к исходному порту на стороне клиента. Я спрашиваю, использует ли браузер разные исходные порты для каждой открываемой вкладки или один и тот же исходный порт для всего процесса "Я имею в виду окно, которое включает в себя разные вкладки" или один и тот же исходный порт для всех окон?
Или, как веб-браузеры используют потоки?
Ответы
Ответ 1
Потоки и порты представляют собой отдельные и в основном не связанные понятия.
Потоки - это то, что локальный компьютерный процессор выполняет для обработки вычислений, таких как рисование на экране или ожидание интернет-трафика. Вероятно, для этих операций на каждой вкладке есть отдельный поток (и более).
Порты - это то, что сам трафик идентифицируется (в TCP и UDP). Чтобы сообщить браузеру, вы откроете локальный порт (обычно что-то вроде ~ 5000, и это не имеет значения до тех пор, пока оно уникально) и подключитесь к серверу, обычно к порту 80 (тот, который прослушивает сервер). Если ваш компьютер не знал удаленный порт, он не мог подключиться, но его стандарт для использования 80 для HTTP, например.
Браузеры открывают вкладки в отдельных потоках (и новые, даже в отдельных процессах по соображениям безопасности и надежности) и используют отдельные порты на стороне клиента. Так что да, ответ - это как потоки, так и порты. Они всегда используют один и тот же удаленный порт, если вы физически не укажете иное (например, подключение к веб-сайту с использованием https://вместо http://использует отдельный порт, потому что именно так был создан этот протокол). Вы можете указать порт для использования в современных браузерах с: # после имени. (пример: http://www.google.com:81/, однако это провалится, потому что это не тот порт, который они прослушивают!)
Ответ 2
Быстрая проверка с использованием netstat
(или sockstat
на машинах BSD) показывает, что разные номера портов источника используются для разных соединений. В этом отношении вы правы.
Firefox использует по крайней мере один поток для каждой вкладки. Каждый поток может открывать несколько соединений для разных данных (например, загрузка изображений с медиа-сервера и содержимого с веб-сервера). Каждое соединение должно иметь собственный порт источника.
Ответ 3
В зависимости от браузера для каждой вкладки используются разные потоки или разные процессы. Используемые локальные порты, вероятно, не имеют большого отношения к различным вкладкам.
Ответ 4
Вы имеете в виду TCP-порты? Нет. Браузеры используют один и тот же порт, обычно 80 или 443 (для HTTPS).
HTTP - это протокол без учета состояния: браузер открывает соединение, загружает страницу и закрывает ее. Он не поддерживает соединение. Если вы загружаете более 1 страницы, то она создает потоки для каждого (как правило, Chrome создает процессы), но как только страница загружается, соединение закрывается.
AJAX открывает новое соединение для каждого запроса и закрывает его впоследствии.
Есть некоторые хаки, которые имеют постоянное HTTP-соединение (см. COMET), но поскольку браузер выполняет несколько потоков/процессов, они обычно не конфликтуют.
Ответ 5
нет! он обычно использует порт 80 по умолчанию, если не указано. например, www.someweb.com:8080.
Вкладки в браузере, которые я предполагаю, запускаются в разных потоках