Используют ли веб-браузеры разные исходящие порты для разных вкладок?
В веб-браузере, который поддерживает наличие нескольких вкладок, таких как Firefox, используют ли разные вкладки, которые переходят на разные домены сайта, отдельный порт для каждого домена?
Или браузер использует один порт для управления всеми вкладками и, следовательно, всеми доменами?
4 ответа 4
Каждое соединение с веб-сайтом использует отдельный сокет с 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 или ss -t :
Используют ли браузеры разные порты для подключения к разным веб-сайтам?
Вот пример, показывающий мои текущие подключения Firefox (у меня 9 открытых вкладок) в Windows 7:
Вы можете видеть, что все локальные порты разные.
Удаленные порты обычно 80 (HTTP), 443 (HTTPS) или 8080 (альтернативный HTTP).
- Многие другие порты используются для размещения веб-серверов. Найдите 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 и информацией о стиле для каждого узла.
- Вы видите страницу на экране
- Вы раздражаетесь, весь процесс был слишком медленным.
Как открыть несколько браузеров с разными ip на одном ПК
Несколько одновременно открытых браузеров могут понадобиться для работы c аккаунтами в соцсетях, при парсинге информации или всевозможных скриптов для автоматизации задач через imacros. Для этой цели отлично подойдет браузер Firefox с его простой системой профилей.
Изначально все профили в Firefox под Windows хранятся в папке Пользователи — AppData — Roaming — Mozilla — Firefox — Profiles.
Туда записывается информация по кукам, истории просмотров, настройкам и расширениям для каждого профиля. Т.е. каждый профиль представляет собой по сути отдельную автономную единицу со своими возможностями тонкой настройки расширений и сетевых подключений.
Шаг 1. Для начала нам нужно создать новые профили сделать это можно 2-ми способами, но мы рассмотрим самый универсальный. Находим ярлык Firefox, переходим в свойства. Далее в поле «объект» после firefox.exe прописываем -p -no-remote
Шаг 2. Теперь Firefox начинает каждую сессию с менеджера профилей. Создаем нужное колличество профилей.
Далее копируем ярлык и создаем необходимое их кол-во. В каждом ярлыке в свойствах в поле объект прописываем -p «test1» -no-remote где test1 — это имя профиля который вы создали.
Теперь при загрузке такого ярлыка Firefox откроет новую сессию, с чистыми куками, своей инфой о расширениях, истории и настройках. Остается прописать прокси для каждого из профилей. После чего вы сможете использовать несколько браузеров с разными ip на одном устройстве.
Если требуются гибкие настройки логики использования прокси можно прописать их через расширение Foxy Proxy, в противном случае достаточно дефолтного меню настройки браузера.
Для работы лучше использовать не новые версии firefox, а например стабильную сборку 54.0.1
Шаг 3. Переходим в настройки, выбираем раздел «Дополнительные», далее «Сеть» и напротив поля «Настройка параметров соединения Firefox с Интернетом» нажимаем «Настроить». Далее прописываем свои прокси, можно взять у https://youproxy.ru/ стабильные и недорогие iPv4 подойдут для большинства задач.
Для большего удобства ставим галочку на против «Не запрашивать аутентификацию (если был сохранён пароль)». Можно сделать это также и через расширение Proxy Switcher.
Чтобы отключить окно аутентификации полностью можно использовать расширение Close Proxy Authentication, в его настройках прописываем имя и пароль для каждого профиля.
Для дополнительной защиты от банов различных сервисов, при сборе информации или отправке запросов, жеательно отключить webRTC через консольную команду введя в строку браузера about:config и media.peerconnection.enabled и настроить UserAgent для каждого профиля с помощью расширения User Agent Overrider или User Agent Switcher.
Шаг 4. После настройки каждого профиля, для удобства переименовываем ярлыки указывая название каждого профиля. В итоге у нас получается необходимое количество профилей и главный профиль для создания новых.
Теперь при нажатии на каждый из ярлыков открывается новый профиль со своим прокси и юзерагентом. Цель достигнута, предельное кол-во открытых одновремено профилей зависит от конфигурации вашего ПК, на моем для примера Core i5 и 8 гб оперативной памяти с частотой 2133 МГц. 10 одновременных профилей открыто и в каждом из них открыто от 1 до 3 вкладок, все работает стабильно.
Русские Блоги
Максимальное количество одновременных запросов на одно и то же доменное имя в браузере
Когда мы просматриваем Интернет, важным фактором, влияющим на скорость просмотра, является количество одновременно работающих браузеров. Количество параллелизма — это просто количество одновременных заданий, когда браузер является веб-страницей.
Если одновременно есть только 2 одновременных подключения, тогда веб-страница может полагаться только на эти 2 потока при открытии.Если на переднем плане есть медленное открытие контента, это напрямую повлияет на открытие следующего контента. Но если одновременно будет больше одновременных подключений, это значительно улучшит скорость загрузки страницы. Подробности читайте в нашей предыдущей статье:Тест количества одновременных подключений на скорость загрузки браузера. Количество одновременных подключений в браузере не так велико.
В следующей таблице приведено максимальное количество одновременных подключений в зависимости от версии браузера IE, работающего на хосте, скорости подключения хоста и поддерживаемой версии протокола сервера.
1. HTTP-клиенты обычно ограничивают количество одновременных подключений к одному серверу.
Фактически, браузеры действительно используют параллельные соединения, но они ограничивают общее количество параллельных соединений небольшим числом (обычно четырьмя). Сервер может закрыть слишком много соединений от определенных клиентов.
2. Информацию о максимальном количестве одновременных подключений к HTTP 1.1 и HTTP 1.0 в некоторых основных браузерах см. В следующей таблице:
Opera 9.63, 10.00альфа
3,Firefox Максимальное количество одновременных подключений браузера
Введите «about: config» в адресную строку Firefox, затем найдите и измените следующие два элемента конфигурации:
network.http.max постоянное соединение для каждого сервера
network.http.max постоянное соединение для каждого прокси
Интернет. HTTP。 Максимальное соединение: установите максимальное количество одновременных HTTP-соединений.
network.http.max Постоянные подключения, каждый сервер — это максимальное количество постоянных подключений, разрешенных для подключения к одному и тому же серверу, по умолчанию — 6, и его не нужно менять.
network.http.max persistent connections — максимальное количество постоянных подключений, разрешенных для каждого прокси-сервера на прокси.
Пользователи компании используют прокси-сервер, но внешние клиенты обычно не используют прокси.Сеть network.http.max, рекомендованная Firefox Wiki, имеет постоянное соединение, и для каждого сервера установлено значение:
4, IE Максимальное количество одновременных подключений браузера
Используйте команду «Редактор реестра», чтобы открыть редактор реестра и найти:
[HKEY_CURRRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings], вы можете увидеть MaxConnectionsPerServer с участием MaxConnectionsPer1_0Server
Эти два ключа (соответственно для настроек HTTP 1.1 и HTTP 1.0)
Для IE 9
[HKEY_CURRRENT_USER \ Software \ Policies \ Microsoft \ Internet Exploer \ Main \ FeatureControl, вы можете видеть FEATURE_MAXCONNECTIONSPER1_0SERVER с участием FEATURE_MAXCONNECTIONSPERSERVER
Эти два ключа (соответственно для настроек HTTP 1.1 и HTTP 1.0)
5. Если предположить, что количество одновременных запросов на соединение для браузера равно 10, обычно несколько пользователей будут посещать веб-сайт одновременно в одно и то же время. Также учитывая,Запрос на соединение Http может быть доступен только одному потоку за раз.
Следовательно, maxclients (общее количество потоков, разрешенных для установки) в httpd.conf сервера IHS должны иметь возможность обрабатывать запросы соединения браузера в пиковое время.
В то же время учтите, что не все запросы на соединение будут отправляться на сервер was, а некоторые соединения предназначены только для получения статических ресурсов на веб-сервере, поэтому количество пулов потоков на сервере было (Thread pools :50 ) Будет намного меньше, чем значение maxclients на сервере IHS, например 400).
6,HTTP Запрос на подключение и поток
HTTP-соединения представляют собой сложные объекты с отслеживанием состояния, поэтому им необходимо правильно управлять. Один АHTTP Запрос на соединение может быть доступен только одному потоку одновременно 。
HttpClient использует специальный класс сущностей, называемый диспетчером соединений Http, для управления соединениями Http. Диспетчер соединений HTTP действует как фабричный класс при создании нового соединения HTTP; управляет жизненным циклом постоянных соединений HTTP; синхронизирует постоянные соединения (убедитесь, что поток Безопасность, то есть соединение HTTP может быть доступно только одному потоку за раз).
Если Http-соединение выпущено или явно указано, что его потребитель закрывает, базовое соединение будет отделено от его прокси-сервера, и соединение будет возвращено диспетчеру соединений. Это значит, что даже если потребитель службы по-прежнему сохраняет ссылку на прокси, он больше не может выполнять операции ввода-вывода или изменять состояние Http-соединения.
Как показано на рисунке 7, диспетчер пула соединений
Диспетчер пула соединений — это сложный класс, который управляет пулом соединений и может одновременно предоставлять запросы HTTP-соединения для многих потоков. При запросе нового соединения, если в пуле соединений доступны постоянные соединения, диспетчер соединений будет использовать одно из них вместо создания нового соединения.
Когда используется диспетчер пула соединений запросов, HttpClient может выполнять запросы из нескольких потоков одновременно.
Диспетчер пула соединений распределяет запрошенные соединения в соответствии со своей конфигурацией. Если все соединения в пуле соединений заняты, последующие запросы будут блокироваться до тех пор, пока соединение не будет возвращено в пул соединений.
8, принцип пула потоков:
Принцип пула потоков очень прост, аналогичен концепции буфера в операционной системе, его поток выглядит следующим образом:
Пул потоков создает определенное количество потоков и помещает их в очередь ожидания до прибытия задачи. Все эти потоки находятся в спящем состоянии, то есть все они запущены, не потребляют ресурсы ЦП, а занимают лишь небольшой объем памяти. Когда у клиента появляется новый запрос, он пробуждает спящий поток в пуле потоков и позволяет ему обрабатывать запрос клиента. Когда запрос обрабатывается, поток снова спит.
Пул потоков может сэкономить много системных ресурсов, так что больше времени процессора и памяти можно использовать для обработки реальных коммерческих приложений вместо частого создания и уничтожения потоков.
Каждому потоку требуется около 1 МБ памяти. Чем больше потоков вы открываете, тем больше памяти он потребляет.
Когда использовать пул потоков:
1. Время обработки одной задачи относительно невелико.
2. Количество обрабатываемых задач велико.
9, пул соединений с базой данных:
Решение проблемы пула соединений с базой данных — установить достаточное количество соединений с базой данных при запуске приложения. , И скажем, что эти соединения образуют пул соединений (проще говоря: поместите множество полуфабрикатов объектов соединения с базой данных в «пул» ) приложение динамически обращается, использует и освобождает соединение в пуле. Для большего количества одновременных запросов, чем количество подключений в пуле подключений , Должен быть поставлен в очередь в очереди запросов. И приложение может быть основано на использовании соединения в пуле , Динамически увеличивайте или уменьшайте количество подключений в пуле. Чтобы
Технология пула соединений повторно использует как можно больше ресурсов, потребляющих память , Это значительно экономит память, повышает эффективность обслуживания сервера и может поддерживать больше услуг для клиентов. Использование пула соединений значительно повысит эффективность программы. В то же время мы можем отслеживать количество соединений с базой данных через собственный механизм управления. , Использование и т. Д.
1) Минимальное количество соединений — это соединение с базой данных, которое пул соединений всегда поддерживал, поэтому, если приложение не использует большую часть соединения с базой данных, много ресурсов соединения с базой данных будет потрачено впустую;
2) Максимальное количество подключений — это максимальное количество подключений, на которое может подать заявку пул подключений. Если запрос на подключение к базе данных превышает это число, последующие запросы подключения к базе данных будут добавлены в очередь ожидания. , Что повлияет на последующие операции с базой данных.
Подключение к базе данных — критический, ограниченный и дорогой ресурс , Это особенно заметно в многопользовательских веб-приложениях. 。 Объект подключения к базе данных соответствует физическому подключению к базе данных. , Каждая операция открывает физическое соединение и закрывает соединение после использования, что приводит к снижению производительности системы.
10. Производительность WebSphere Application Server
Излишне упрощенная модель построения серверных приложений заключается в создании нового объекта службы каждый раз, когда поступает запрос, а затем обслуживании запроса в новом объекте службы. Но когда имеется большое количество запросов на одновременный доступ, сервер продолжает создавать и уничтожать Объекты дорогие.
В объектно-ориентированном программировании создание и уничтожение объектов — пустая трата ресурсов, поскольку для создания объекта требуется доступ к ресурсам памяти или большему количеству ресурсов. Это особенно верно в Java, где виртуальная машина пытается отслеживать каждый объект, чтобы его можно было собрать мусором после уничтожения объекта. Следовательно, одним из способов повышения эффективности программы является минимизация количества создания и уничтожения объектов. Использование существующих объектов для обслуживания является причиной использования технологии «объединенных ресурсов».
На рисунке 1 показан поток запросов приложения, требующего внутренней обработки, и показана взаимосвязь между пулами потоков при обработке пользовательских запросов. Чтобы
Прослушиватель HTTP
Слушатель HTTP отвечает за создание потоков на уровне сервера HTTP. Большая часть обработки, которая здесь происходит, — это обслуживание статической страницы или передача команд HTTP post / GET бэкэнду. Это конфигурация потока первого уровня, которую необходимо учитывать.
Веб-контейнер
Веб-контейнер отвечает за создание пулов потоков на уровне сервера приложений. Большая часть обработки на этом уровне включает сервлет, JSP, EJB, создание динамических страниц и внутреннюю обработку доставки. Веб-контейнер — это конфигурация пула потоков второго уровня, которую необходимо настроить.
Контейнер ORB Контейнер ORB отвечает за создание пула потоков на уровне объекта. Большая часть обработки, которая здесь происходит, включает в себя обработку клиентов, не работающих в Интернете. Контейнер ORB — это третий уровень конфигурации пула потоков, который необходимо настроить.
источник данных
Уровень источника данных отвечает за создание потоков подключения, к которым осуществляется доступ из базы данных или «традиционной» системы. Эти потоки представляют собой конфигурацию четвертого уровня, которую необходимо разрешить.
Фактическая ситуация (китай):
Многие клиентские программы могут изменять максимальное количество подключений к компьютеру, например Thunder, Baofeng Yingyin и т. Д.
Мы поделились с вами раньшеКак изменить количество одновременных подключений в браузере IE, Если вы используете IE7 и более ранние версии, вы можете попробовать изменить количество подключений до 6, что поможет увеличить скорость открытия веб-сайта.
например:
Каскадная диаграмма полностью отличается от IE6, ее характеристики:
- Максимальное количество одновременных HTTP-соединений — 6.
- Файлы JavaScript не будут блокировать загрузку других ресурсов, и даже несколько файлов JavaScript могут быть загружены вместе, и порядок выполнения будет гарантирован.
- Он проанализирует структуру HTML и сначала загрузит внешние ресурсы, определенные тегами script и link.
Firefox3.6
Это почти то же самое, что и IE8:
- Максимальное количество одновременных HTTP-соединений — 6 (можно изменить в about: config).
- Файл javascript не будет блокировать загрузку других ресурсов, и несколько файлов javascript могут быть загружены вместе.
- Он проанализирует структуру HTML и сначала загрузит внешние ресурсы, определенные тегами script и link.
Firefox4 beta12
Я не знаю, из-за другой концепции дизайна или из-за того, что бета-версия не позаботилась об этом, вместо этого произошла деградация Firefox4. Отличие от Firefox3.6 в основном отражается в обработке типов ресурсов. Firefox4 больше не определяет приоритеты загрузки скриптов и ссылок. Внешние ресурсы, определенные тегами, загружаются в том порядке, в котором они появляются в структуре HTML.
Chrome8
Встроенные инструменты Chrome не могут четко указать время начала каждого запроса, поэтому используется каскадная диаграмма Fiddler. Как видно из рисунка, Chrome также относительно индивидуален, и его характеристики:
- Максимальное количество одновременных HTTP-соединений — 6.
- Ресурсы в головной части будут загружаться отдельно и блокировать загрузку других ресурсов в теле.
- Сначала будут загружены ресурсы, определенные тегами скрипта и ссылок.
Opera11
Сначала пожаловаться, Dragonfly не прост в использовании . Загрузка ресурсов Opera также весьма своеобразна, и трудно увидеть шаблон, только общее резюме:
- Максимальное количество одновременных HTTP-соединений Opera по умолчанию составляет 16, которые можно просмотреть и изменить в opera: config-Performance-Max Connections Server.
- Загрузка файлов javascript блокирует загрузку внешних ресурсов, определенных другими тегами сценария и ссылок, как показано в 2.js на рисунке. Но он не будет блокировать загрузку других ресурсов, таких как изображения, как показано в 3.js.
- Приоритет ресурсов будет в определенной степени оптимизирован, но поскольку файлы javascript должны предотвращать загрузку последующих ресурсов, и для того, чтобы в полной мере использовать максимальное количество HTTP-соединений, все ресурсы, определенные тегами сценария и ссылок, не могут быть загружены строго первыми, что приводит к водопаду Различные типы ресурсов на карте перемежаются друг с другом, и трудно найти правила.
Это все еще относительно оптимистично. Загрузка занимает несколько секунд. По логике, картинки не большие, и они должны быть в пределах 1 секунды. Конечно, это как-то связано с полосой пропускания пользователя, но, по моим наблюдениям, загружается партиями.
Итак, я проверил информацию и узнал.
Из 14 классических предложений Yahoo по оптимизации веб-сайтов, в версии V2 он был обновлен до 35. Среди них есть необходимость уменьшить количество запросов и разрешений DNS. Из-за количества одновременных запросов к браузеру в протоколе http В версии 1.1 есть два ограничения (соответствующую информацию см. В конце статьи), поэтому обычным способом оптимизации скорости загрузки веб-сайта является использование нескольких доменных имен для увеличения количества одновременных запросов браузера к одной и той же веб-странице.
Во-вторых, позвольте мне взглянуть на то, как с этим справляются крупные компании электронной коммерции.
1. Jingdong (www.jd.com)
Доменным именем Jingdong Pictures всегда было старое доменное имя 360buyimg.com.
Например, для этого изображения вы можете скопировать и открыть эту ссылку и изменить Img13 предыдущего доменного имени второго уровня на img11, img12, img13 и т. Д. И обнаружили, что все они могут быть открыты, и, как правило, это один и тот же IP. , Img1, img2 и т. Д. Не открываются. Это проблема политики. Это просто каштан.
2. Tmall (www.tmall.com)
Существует множество доменных имен CDN изображений, например tbcdn.cn, alicdn.com и т. Д.
То же самое верно, но HTTPS был изменен на img.alicdn.com после недавнего перехода. неизвестно почему.
В-третьих, поговорим о браузере Firefox
в Firefox Введите в адресную строку: about:config
Введите поисковый запрос: network.http.max-connections
Значение старой версии 30, моей версии 256, что указывает на наличие улучшений.
Затем мы вводим: network.http.max-persistent-connections-per-server Искать и найти это 6.
Вы можете написать демо, чтобы протестировать его, написать небольшой цикл и затем посетить то же доменное имя (рекомендуется Ajax Путь), а затем за кулисами sleep Через некоторое время вы можете увидеть эффект. Кто-то раньше проводил тестирование младшей версии и пришел к выводу.
IE8 имеет ограничение в 10 одновременных подключений;
Firefox с участием chrome Количество одновременных подключений 6. Возможны отличия между версиями. Это необходимо учитывать как веб-мастеру или как полноценному продукту.
1. Дан набор доменных имен, например: img1.baidu.com, img2.baidu.com, img3.baidu.com, img4.baidu.com . .
2. Эта группа доменных имен указывает на один и тот же источник, или конечный источник один.
3. При загрузке изображения (статического файла) достаточно случайным образом вернуть одно из доменных имен в этой группе, чтобы имя домена доступа изображения не отображалось только как доменное имя.