Используют ли веб-браузер разные исходящие порты для разных вкладок?
В веб-браузере, который поддерживает несколько вкладок, таких как Firefox, делать разные вкладки, которые идут на разные веб-сайты, используют выделенный порт для каждого домена ?.
Или браузер использует один порт для управления всеми вкладками и, следовательно, всеми доменами ?.
- Dlink DIR-615 неожиданно перестает работать - оранжевый интернет-свет
- Переадресация портов в маршрутизаторе D-LINK DIR-524
- Я забыл про пародию для беспроводной связи. Как восстановить или изменить его для маршрутизатора Westell
- Как перенаправить трафик на сайт с использованием указанного сетевого подключения в Windows 7?
- Как ускорить передачу данных между локальными компьютерами в сети WiFi?
- Как настроить прокси-сервер уровня ОС, если конкретное приложение не поддерживает его?
- Почему маршрутизаторы не используют MAC-адреса вместо частных / локальных IP-адресов?
- Как отслеживать сетевой трафик на маршрутизаторе?
- Как изменить тайм-аут подключения по умолчанию в Chrome?
- Воспроизвести системные звуки с одного компьютера через динамики другого компьютера?
- Мониторинг трафика через домашний маршрутизатор
- Редактор сетевых пакетов для Linux?
- Доступ к странице конфигурации модема через маршрутизатор
Используют ли браузеры разные порты для подключения к различным веб-сайтам?
Да, они делают.
Вот пример, показывающий мои текущие подключения Firefox (у меня есть 9 открытых вкладок) в Windows 7:
Заметки:
-
Вы можете видеть, что локальные порты все разные.
-
Удаленные порты обычно 80 (HTTP), 443 (HTTPS) или 8080 (HTTP Alternate).
- Многие другие порты используются для размещения веб-серверов. Поиск
HTTP
в списке номеров портов TCP и UDP для некоторых из них.
- Многие другие порты используются для размещения веб-серверов. Поиск
-
Полный процесс создания веб-страницы описан ниже. См., В частности, шаги 5, 6, 13 и 15 (выделены жирным шрифтом):
-
В общем случае, если одна веб-страница использует несколько подключений, не все из которых будут находиться на одном и том же удаленном адресе.
-
Это связано с тем, что веб-страницы часто включают ресурсы, размещенные в других местах (файлы javascript и т. Д.).
-
-
Несколько подключений к одному и тому же веб-сайту (например, stackoverflow.com) также имеют разные локальные порты (поскольку они представляют собой отдельные соединения на разных вкладках, отображающих разные страницы).
Рендеринг веб-страницы – шаг за шагом
Заметка:
- Шаги 5, 6, 13 и 15 (выделенные жирным шрифтом) имеют непосредственное отношение к вопросу.
Вы когда-нибудь думали о том, что происходит, когда вы занимаетесь поиском в Интернете? Это не так просто, как кажется:
- Вы вводите URL-адрес в адресную строку в предпочитаемом браузере.
- Браузер анализирует URL-адрес, чтобы найти протокол, хост, порт и путь.
- Он формирует HTTP-запрос (это, скорее всего, протокол)
- Чтобы добраться до хоста, сначала нужно перевести читаемый человеческий узел в IP-номер, и он делает это, выполняя поиск DNS на хосте
- Затем сокет должен быть открыт с компьютера пользователя на этот номер IP, на указанном порту (чаще всего на порту 80)
- Когда соединение открыто, HTTP-запрос отправляется на хост
- Хост перенаправляет запрос серверному программному обеспечению (чаще всего Apache), настроенному на прослушивание на указанном порту
- Сервер проверяет запрос (чаще всего только путь) и запускает серверный плагин, необходимый для обработки запроса (соответствующий используемому языку сервера, PHP, Java, .NET, Python?)
- Плагин получает доступ к полному запросу и начинает подготовку ответа HTTP.
- Для построения ответа на доступ к базе данных (скорее всего). Выполняется поиск базы данных на основе параметров в пути (или данных) запроса
- Данные из базы данных вместе с другой информацией, которую плагин решает добавить, объединяются в длинную строку текста (возможно, HTML).
- Плагин объединяет эти данные с некоторыми метаданными (в виде заголовков HTTP) и отправляет ответ HTTP обратно в браузер.
- Браузер получает ответ и анализирует HTML (который с вероятностью 95% нарушен) в ответе
- Дерево DOM построено из разбитого HTML-кода
- Новые запросы поступают на сервер для каждого нового ресурса, который находится в источнике HTML (обычно это изображения, таблицы стилей и файлы JavaScript). Вернитесь к шагу 3 и повторите для каждого ресурса.
- Таблицы стилей анализируются, и информация об рендеринге каждого из них привязывается к соответствующему узлу в дереве DOM
- Javascript анализируется и выполняется, а узлы DOM перемещаются, и информация о стиле обновляется соответствующим образом
- Браузер отображает страницу на экране в соответствии с деревом DOM, а информация о стиле для каждого узла
- Вы видите страницу на экране
- Вы раздражаетесь, весь процесс был слишком медленным.
Источник Рендеринг веб-страницы – шаг за шагом
Каждое подключение к веб-сайту использует другой сокет с TCP-портом назначения по умолчанию 80 для простых HTTP и 443 для HTTPS. Для того чтобы сокет был уникальным, комбинация исходного IP-адреса, исходного TCP-порта, целевого IP-адреса и TCP-порта назначения должна быть разной.
Если у вас несколько подключений к одному и тому же веб-сайту (при условии, что веб-сайт использует только один IP-адрес) с того же компьютера, необходимо использовать другой TCP-порт источника. Таким образом, каждое соединение уникально.
Однако следует отметить, что с HTTP 1.1 все соединения сохраняются в течение определенного периода времени (если не указано иное). Это означает, что одно и то же соединение может быть повторно использовано вашим браузером, если запрашиваются несколько ресурсов с одного и того же веб-сайта (например, файлы css / js). Это также применимо, если в вашем браузере имеется несколько экземпляров одного и того же веб-сайта.
Если вы находитесь в Windows, команда netstat -no -p TCP
покажет вам все активные сокеты TCP и их соответствующий идентификатор процесса, в том числе ваш браузер:
Если вы используете Unix / Linux (в данном случае Debian), вы можете использовать команду netstat -ntp
или ss -t
:
Что касается вкладок на разные веб-сайты, в TCP нет ничего, что требует, чтобы локальный порт был другим, если кортеж (локальный IP-адрес, локальный порт, целевой IP-адрес, целевой порт ) уникален. Для вкладок на один и тот же сайт ситуация намного сложнее.
Браузер, как и любая другая клиентская программа, использует другой локальный порт для исходящего соединения с одной и той же целью. В общем, он будет создавать несколько соединений с любым сайтом, чтобы получить встроенные ресурсы, такие как изображения, CSS, JavaScript и т. Д. Он также объединит эти соединения для возможного повторного использования.
Невозможно сказать, будут ли разные вкладки на одном и том же веб-сайте использовать разные соединения, потому что (а) в любом случае, как правило, нет ни одного соединения для каждой вкладки, и (б) в зависимости от синхронизации и аутентификации, могут быть связаны Повторное использование вкладок; И, поскольку невозможно идентифицировать соединения, поэтому невозможно идентифицировать локальные порты.
Да. Нет. Может быть. Это зависит.
Во-первых, браузер может использовать любую из этих стратегий для соединений:
- Одно соединение (маловероятно для любого браузера более позднего, чем 1995)
- Одно соединение на вкладку (в основном такое же, как # 1, только немного лучше)
- Одно соединение на ресурс (наивное, но не работает так плохо)
- Пул соединений с keep-alive, повторное использование соединений
- Что-то другое (читайте как: странные вещи)
У вас нет способа узнать, какую стратегию использует браузер, хотя использование пула соединений (и повторного использования соединений) является разумным предположением.
Во-вторых, как работает TCP, у вас есть исходный порт и порт назначения для каждого подключения. Пара адреса и порта источника и получателя определяет соединение.
Вы всегда используете [1] хорошо известный порт (например, 80 или 443) для подключения к серверу (которому он прослушивает его рекламируемый адрес), но другой случай выбирается случайным образом. Таким образом, в зависимости от того, с какой стороны вы смотрите на соединение, у него есть один или несколько возможных портов.
Таким образом, та же вкладка может (и обычно будет) использовать несколько разных портов на своем конце, но в принципе разные вкладки могут (если соединения объединены и разные ресурсы на разных вкладках загружаются с одного и того же сервера) используют один и тот же порт.
Поскольку вопрос явно упоминает об исходящих , в «нормальном» случае номера портов будут одинаковыми независимо от того, в какую вкладку они находятся, или одного из двух возможных портов (80 и 443). Хотя, конечно, можно явно запросить другой порт (например, 8080) в URL-адресе. Однако это редкость.
[1] Ну, не всегда … но давайте не будем слишком усложнять его.