В веб-браузере, который поддерживает наличие нескольких вкладок, таких как Firefox, используют ли разные вкладки, которые переходят на разные домены сайта, выделенный порт для каждого домена?
Или браузер использует один порт для управления всеми вкладками и, следовательно, всеми доменами?
networking
browser
port
tabs
yoyo_fun
источник
источник
Ответы:
Используют ли браузеры разные порты для подключения к разным веб-сайтам?
Да, они делают.
Вот пример, показывающий мои текущие подключения Firefox (у меня 9 открытых вкладок) в Windows 7:
Примечания:
Вы можете видеть, что все локальные порты разные.
Удаленные порты обычно 80 (HTTP), 443 (HTTPS) или 8080 (альтернативный HTTP).
HTTP
в списке номеров портов TCP и UDP некоторые из них.Полный процесс рендеринга веб-страницы описан ниже. Смотрите, в частности, шаги 5, 6, 13 и 15 (которые выделены жирным шрифтом):
В общем случае для рендеринга одной веб-страницы используется несколько соединений, не все из которых будут иметь один и тот же удаленный адрес.
Это связано с тем, что веб-страницы часто содержат ресурсы, размещенные в других местах (файлы JavaScript и т. Д.).
Несколько соединений с одним и тем же веб-сайтом (например, stackoverflow.com) также имеют разные локальные порты (поскольку они являются отдельными соединениями на разных вкладках, отображающих разные страницы).
Рендеринг веб-страницы - шаг за шагом
Примечание:
Источник Рендеринг веб-страницы - шаг за шагом
источник
Каждое соединение с веб-сайтом использует отдельный сокет с TCP-портом назначения 80 по умолчанию для простого HTTP и 443 для HTTPS. Чтобы сокет был уникальным, комбинация IP-адреса источника, TCP-порта источника, IP-адреса назначения и TCP-порта назначения должна отличаться.
Если у вас есть несколько подключений к одному веб-сайту (при условии, что веб-сайт использует только 1 IP-адрес) с одного и того же компьютера, необходимо использовать другой исходный порт TCP. Таким образом, каждое соединение уникально.
Однако следует отметить, что с HTTP 1.1 все соединения являются постоянными в течение определенного периода времени (если не указано иное). Это означает, что браузер может повторно использовать одно и то же соединение, если запрашивается несколько ресурсов с одного веб-сайта (например, файлы css / js). Это также применяется, если у вас есть несколько экземпляров одного и того же веб-сайта в вашем браузере.
Если вы работаете в Windows,
netstat -no -p TCP
команда покажет вам все активные сокеты TCP и соответствующие им идентификаторы процессов, в том числе вашего браузера:Если вы используете Unix / Linux (в данном случае Debian), вы можете использовать команду
netstat -ntp
orss -t
:источник
netstat -n
должен работать в большинстве операционных систем, включая Linux и Mac OS.netstat -n -o
чтобы увидеть, какой процесс создал какое соединение. Или вы можете запустить tcpview от SysInternal, чтобы увидеть список в графическом интерфейсе, с именами процессов, значками и всем остальным .Что касается вкладок на разных веб-сайтах, в TCP нет ничего, что требовало бы, чтобы локальный порт был другим, если кортеж {локальный IP, локальный порт, целевой IP, целевой порт} уникален. Для вкладок на том же сайте ситуация гораздо сложнее.
Браузер, как и любая другая часть клиентского программного обеспечения, использует другой локальный порт для исходящего соединения с той же целью. Как правило, он формирует несколько соединений с любым конкретным веб-сайтом для извлечения встроенных ресурсов, таких как изображения, CSS, JavaScript и т. Д. Он также объединяет эти соединения для возможного повторного использования.
Невозможно сказать, будут ли разные вкладки одного и того же веб-сайта использовать разные подключения, потому что (а) в любом случае обычно не существует одного подключения на вкладку, и (б) в зависимости от времени и аутентификации соединения могут быть повторно используется между вкладками; и поскольку невозможно идентифицировать соединения, следовательно, также невозможно идентифицировать локальные порты.
источник
Да. Может быть По-разному.
Во-первых, браузер может использовать любую из этих стратегий для соединений:
У вас нет способа узнать, какую стратегию будет использовать браузер, хотя использование пула соединений (и повторное использование соединений) является разумным предположением.
Во-вторых, как работает TCP, у вас есть порт источника и порт назначения для каждого соединения. Пара источника и адреса назначения / порта определяет соединение.
Вы всегда [1] используете известный порт (например, 80 или 443) для подключения к серверу (который он прослушивает по своему объявленному адресу), но другой порт выбирается случайным образом. Таким образом, в зависимости от того, с какой стороны вы смотрите на соединение, оно имеет один или несколько возможных портов.
Таким образом, одна и та же вкладка может (и обычно будет) использовать несколько разных портов на своем конце, но в принципе разные вкладки могут (если соединения объединяются в пул и разные ресурсы в разных вкладках загружаются с одного и того же сервера) использовать один и тот же порт.
Поскольку в вопросе явно упоминается исходящий , в «нормальном» случае номера портов будут одинаковыми независимо от того, на какой вкладке они находятся, или на одном из двух возможных портов (80 и 443). Хотя, конечно, можно явно запросить другой порт (например, 8080) в URL. Это довольно редко, хотя.
[1] Ну, не всегда ... но давайте не будем слишком усложнять.
источник