На каком порту работает браузер

Обновлено: 06.07.2024

В веб-браузере, который поддерживает наличие нескольких вкладок, таких как Firefox, используют ли разные вкладки, которые переходят на разные домены сайта, выделенный порт для каждого домена?

Или браузер использует один порт для управления всеми вкладками и, следовательно, всеми доменами?

Я знаю порты, используемые для подключения к серверу, но мне было интересно узнать о номерах портов, используемых для подключения с клиента (хост-компьютера). Порты назначаются ОС, и каждому новому соединению назначается новый локальный порт, чтобы отличать его от всех других открытых соединений. @ExUmbris: Это может быть разумной и простой стратегией, но TCP-соединения идентифицируются с помощью четырех <локальный IP, локальный порт, удаленный IP, удаленный порт>. Локальный порт не нужен для уникальности, и это хорошо: веб-сервер вообще не может использовать свой локальный порт для уникальности. И с точки зрения веб-сервера, удаленный IP также не уникален, так как несколько пользователей могут находиться за одним шлюзом / прокси.

Используют ли браузеры разные порты для подключения к разным веб-сайтам?

Вот пример, показывающий мои текущие подключения Firefox (у меня 9 открытых вкладок) в Windows 7:

введите описание изображения здесь

Вы можете видеть, что все локальные порты разные.

Полный процесс рендеринга веб-страницы описан ниже. Смотрите, в частности, шаги 5, 6, 13 и 15 (которые выделены жирным шрифтом):

В общем случае для рендеринга одной веб-страницы используется несколько соединений, не все из которых будут иметь один и тот же удаленный адрес.

Это связано с тем, что веб-страницы часто содержат ресурсы, размещенные в других местах (файлы JavaScript и т. Д.).

Рендеринг веб-страницы - шаг за шагом

  • Шаги 5, 6, 13 и 15 (выделены жирным шрифтом) имеют прямое отношение к вопросу.

Если у вас есть несколько подключений к одному веб-сайту (при условии, что веб-сайт использует только 1 IP-адрес) с одного и того же компьютера, необходимо использовать другой исходный порт TCP. Таким образом, каждое соединение уникально.

Если вы работаете в Windows, netstat -no -p TCP команда покажет вам все активные сокеты TCP и соответствующие им идентификаторы процессов, в том числе вашего браузера:

введите описание изображения здесь

Если вы используете Unix / Linux (в данном случае Debian), вы можете использовать команду netstat -ntp or ss -t :

введите описание изображения здесь

Обратите внимание, что netstat также будет отображать соединения, не связанные с браузером, например, почтовые соединения для почтового клиента, новостные соединения для программы чтения новостей. Эти соединения будут на разных удаленных портах. Если я что-то не упустил, похоже, вы предполагаете, что спрашивающий использует Windows, хотя он не упомянул операционную систему. Также хорошо перечислять, на какую ОС вы ссылаетесь, когда предоставляете консольные команды. @ user45623: Хотя снимок экрана является снимком экрана Windows, он netstat -n должен работать в большинстве операционных систем, включая Linux и Mac OS. В Windows (возможно, и в других ОС) вы можете использовать, netstat -n -o чтобы увидеть, какой процесс создал какое соединение. Или вы можете запустить tcpview от SysInternal, чтобы увидеть список в графическом интерфейсе, с именами процессов, значками и всем остальным . Теперь вопрос заключается в том, могут ли веб-браузеры повторно использовать соединения из разных вкладок, если они ведут на один и тот же сервер?

Что касается вкладок на разных веб-сайтах, в TCP нет ничего, что требовало бы, чтобы локальный порт был другим, если кортеж уникален. Для вкладок на том же сайте ситуация гораздо сложнее.

Браузер, как и любая другая часть клиентского программного обеспечения, использует другой локальный порт для исходящего соединения с той же целью. Как правило, он формирует несколько соединений с любым конкретным веб-сайтом для извлечения встроенных ресурсов, таких как изображения, CSS, JavaScript и т. Д. Он также объединяет эти соединения для возможного повторного использования.

Невозможно сказать, будут ли разные вкладки одного и того же веб-сайта использовать разные подключения, потому что (а) в любом случае обычно не существует одного подключения на вкладку, и (б) в зависимости от времени и аутентификации соединения могут быть повторно используется между вкладками; и поскольку невозможно идентифицировать соединения, следовательно, также невозможно идентифицировать локальные порты.

Таким образом, пул - это структура данных в памяти, которая хранит открытые и еще не закрытые соединения? Это правильно, как правило, карта с ключом целевого IP: порт.

Да. Может быть По-разному.

Во-первых, браузер может использовать любую из этих стратегий для соединений:

У вас нет способа узнать, какую стратегию будет использовать браузер, хотя использование пула соединений (и повторное использование соединений) является разумным предположением.

Во-вторых, как работает TCP, у вас есть порт источника и порт назначения для каждого соединения. Пара источника и адреса назначения / порта определяет соединение.
Вы всегда [1] используете известный порт (например, 80 или 443) для подключения к серверу (который он прослушивает по своему объявленному адресу), но другой порт выбирается случайным образом. Таким образом, в зависимости от того, с какой стороны вы смотрите на соединение, оно имеет один или несколько возможных портов.

Таким образом, одна и та же вкладка может (и обычно будет) использовать несколько разных портов на своем конце, но в принципе разные вкладки могут (если соединения объединяются в пул и разные ресурсы в разных вкладках загружаются с одного и того же сервера) использовать один и тот же порт.

Поскольку в вопросе явно упоминается исходящий , в «нормальном» случае номера портов будут одинаковыми независимо от того, на какой вкладке они находятся, или на одном из двух возможных портов (80 и 443). Хотя, конечно, можно явно запросить другой порт (например, 8080) в URL. Это довольно редко, хотя.

1. Я так понял: Если браузеру нужно загрузить сайт он выбирает случайный порт и с него шлет пакеты на сервер.
А сервер шлет ответы на порт который был выбран браузером.
Для каждого сайта (или сессии с сайтом) выбирается свой порт.
Правильно?
2. Как именно браузер выбирает порт? По какому алгоритму?
3. Как поведет себя шлюз с nat если через него PC1 и PC2 отправят пакет на сервер X c одинакового порта?
Получается что шлюз не сможет какой эээ. ответ от сервера какому PC принадлежит. Что будет делать шлюз в таком случае? Есть ли какая то защита от выше описанной ситуации?

  • Вопрос задан более трёх лет назад
  • 1503 просмотра

Mystray

2. Как именно браузер выбирает порт? По какому алгоритму?

Браузер порты сам не выбирает, а полагается на операционную систему. И уже она выбирает по собственным алгоритмам

3. Как поведет себя шлюз с nat если через него PC1 и PC2 отправят пакет на сервер X c одинакового порта?


у второго исходящего соединения кроме адреса отправителя поменяет еще и номер порта, делов-то. А может и у первого соединения поменяет, если по какой-либо причине решит, что так удобнее.

1.Часто браузер для одного сайта открывает не одно соединение, а сразу пачку и качает ресурсы параллельно. Порты в этом случае для каждого соединения разные. Кроме того на одной странице могут быть ссылки ведущие на разные сайты, для них браузер открывает новые соединения.
2.Как было сказано порт выбирает ОС. При открытии сокета браузер указывает, что нужен "любой локальный порт". Считайте, что ОС выбирает первый свободный порт из динамического диапазона. На самом деле сложнее, конечно, но конкретный алгоритм обычно не важен.
3.В общем случае шлюз с NAT подменяет и адрес и порт, поэтому сервер увидит не адрес и порт отправителя, а адрес и порт шлюза. Все это происходит прозрачно для сервера и для клиента. Клиент думает, что он общается на прямую с сервером, а сервер думает, что клиент - это шлюз с NAT и не подозревает, что по пути пакета реальный адрес/порт клиента был подменен NATом.

dimonchik2013

1) правильно
2) каждый раз (каждая вкладка) порт увеличивается, но ты и 1000 вкладок не откроешь - не хватит или памяти или процессора ( про голову молчу)
3) NAT распределяет по IP адресу и вообще не парится за порты, смотри как файрволлы реализованы

На компьютере может быть установлено довольно много программ и все они резервируют в операционной системе определенный порт для взаимодействия с другим программным обеспечением по сети. В большинстве случаев пользователь заранее знает какой порт использует программа. Это может быть официально зарезервированный порт, под определенный сетевой протокол. Например почтовые программы используют для приема почты протокол POP3 и резервируют порт 110. Бывают неофициально резервируемые порты, например порт 1540 используемый агентом сервера 1С:Предприятие. Информацию об используемых неофициальных портах разработчики программного обеспечения указывают в документации.

Определения порта программы стандартными средствами Windows

Узнать какой порт использует программа в операционной системе Windows можно используя инструменты командной строки - tasklist и netstat. С помощью tasklist узнаем номер идентификатора процесса - PID, затем в netstat находим номер порта этого процесса.

Поиск идентификатора процесса PID

1. Открываем командную строку: сочетание клавиш <Win +R> и вводим команду CMD.

запуск командной строки wondows

2. Запускаем tasklist и находим PID процесса.

Если необходимо отобразить полный список процессов, в том числе служебных и системных, необходимо использовать tasklist без аргументов.

Команда tasklist /fi "status eq running" найдет только те процессы, которые были запущенны программами. Это сократит список процессов и облегчит поиск.

Находим в списке нужную программу, например OneDrive.exe и запоминаем соответствующий PID.

список активных процессов

Поиск порта процесса

Для получения списка используемых портов воспользуемся утилитой командной строки netstat.

B netstat были использованы слtдующие аргументы:

-a - показывает все сокеты, используемые процессами
-o - показывает PID процесса
-n - показывает адреса в числовом формате

В результате будет получен довольно крупный список активных сетевых соединений, среди которых необходимо найти соединение с нужным PID.

список активных сетевых соединений

Чтобы отфильтровать список и сразу найти сетевое соединение с нужным PID перенаправим результаты netstat в утилиту findstr "PID_number", где PID_number - идентификатор искомого процесса.

фильтр списка сетевых соединений по PID

В найденных результатах видно, что процесс c PID 15304 (программа OneDrive.exe) использует несколько сетевых портов: 11906, 11907, 11908.

Обращайте внимание на то, для какого траспортного протокола открыт порт: ТСР или UDP. Это информация будет важна, когда будете пробрасывать порт через межсетевой экран.

Программы для просмотра сетевых соединений

Этот способ подойдет для тех, кто не хочет погружаться в работу утилит командной строки Windows, а желает быстро и просто получить информацию о портах, которые использует программа, в графическом интерфейсе.

Без труда в интернете можно найти 2 бесплатные программы для полчения списка сетевых соединений операционной системы - это "TCPView" и "Curr ports".

TCPView

После запуска программы будет сразу показан список всех сетевых соединений процессов с информацией о протоколе, локальном и удаленном адресе, локальном и удаленном порте соединения. Список можно фильтровать, сортировать и следить за изменениями онлайн. В дополнение к этому можно убить какой-либо процесс или определить кому принадлежит ip-адрес хоста, с которым установлено соединение.

Из мелких недостатков - отсутствие русского языка.

как найти порт в TCPView

CurrPorts

Из плюсов программы следует отметить наличие русского языка. Чтобы русифицировать программу нужно скачать отдельный файл русификации и положить его в папку с программой.

  • Важнейшей функцией TCP/IP и UDP является идентификация программы (или процесса), которая сгенерировала переносимые данные. Для этого и используется номер порта, который назначен данному процессу организацией IANA. Тут тоже давно существуют свои стандарты и номера портов опубликованы в RFC 1700. На компьютере список портов можно найти в файле SERVICES клиента TCP/IP.

Когда пакет достигает цели, протокол транспортного уровня (в нашем случае TCP/IP), принимает дейтаграмму, считывает номер порта из соответствующего поля и передает эту информацию программе (или протоколу), которая начинает работу с полученными данными.


Кратко перечислю хорошо известные номера портов в разрезе сервисов:

Хорошо известные номера портов не являются чем-то жестко регламентируемым. Их можно менять своему усмотрению. В этом случае в настройках программы прописывается нужный порт, а при обращении к нему через браузер его так же нужно указывать в адресной строке. Это необходимо делать для проверки на открытость или закрытость того или иного порта.

Что такое динамические порты FTP


В Windows Server 2012-2016 можно задать произвольный диапазон портов прямо в операционной системе, не пользуясь сторонними программами. Диапазон номеров задается от 1024 до 65535, это ограничение транспортного протокола.

Как проверить порты на роутере

Открытые порты могут угрожать безопасности компьютера. Если вашему компьютеру присвоен внешний IP адрес, то такая проверка актуальна для Вас. Проверить можно с помощью многочисленных онлайн сервисов. Вводите свой внешний IP и готово:



У меня для фтп включено вот такое правило. Подробнее, как открывать порты на маршрутизаторе я рассказываю тут.

Как проверить открыт порт на компьютере Win 10, или нет

Получаем список открытых портов на компьютере сети

Для того, чтобы получить список портов, нужно сначала запустить командную строку (обязательно от имени администратора) :



Будет выведен список сокетов, а так же приложений, которые идентифицированы с ними в данный момент. Можно увидеть и адреса внешних ресурсов, которые обмениваются данными с портами:


Порты компьютера и файрвол

Файрвол (или брандмауэер) это фильтр, который закрывает порты кроме хорошо известных, и тех которые используются установленными программами. Впрочем, и эти порты можно легко закрывать и снова открывать вручную. Данное программное обеспечение идет в составе операционных систем. Дополнительно его можно активировать в антивирусной программе, а так же на роутере.



Включить брандмауэр можно нажатием на одноименную ссылку в левой части окна. При этом не делайте максимальной блокировки портов:


У антивирусов свой файрвол, можно использовать и его. Но, это по началу может доставить неудобства, потому что программу надо обучать. При каждом соединении она будет спрашивать у вас разрешения на соединения и прописывать правила. Так как порты временные тоже будут, то процесс обучения растягивается надолго. Поэтому учится открывать порты мы будем на классическом виндовом брандмауэре.

Как открыть порты в брандмауэре Windows 10(49, 50, 4955, 25655)




Выбираем протокол TCP (в случае необходимости можно аналогичные настройки сделать и на UDP протокол).Через запятую указываем нужные порты. Можно через дефис указать диапазон портов, если в этом есть нужда. Далее, переходим к настройкам безопасности подключения.


Безопасное подключение требует проверки подлинности и выбирается, только если используется защищенное соединение. Поэтому выбираем верхний пункт. Далее, мы выбираем все доступные типы сетей на нашем компьютере:


Не забываем указать имя нашего правила, чтобы потом было легко его найти. На этом настройка брандмауэра для входящих подключений завершена.


В списке правил мы теперь видим наше, и в случае необходимости можно его отключить или удалить. Порты закроются.


Читайте также: