Поскольку уникальные номера портов назначаются каждому из различных процессов, связанных с сетью, которые идут в системе.Итак, мой вопрос заключается в том, что если в браузере открыто несколько вкладок, то каждому процессу будут назначаться разные номера портов ИЛИ один номер порта для одного браузера?
4 ответа
Другие ответы ссылаются на удаленный порт, к которому вы подключаетесь, который не имеет никакого отношения к вашим локальным процессам. В своем ответе я имею в виду местный порт. Когда TCP-соединение устанавливается с портом назначения в Интернете, из верхних диапазонов выбирается локальный порт для обратного трафика в сеансе. На изображении ниже вы можете видеть, что процесс 1724 имеет несколько сеансов, открытых для разных IP-адресов, и даже если один и тот же удаленный порт, например, 80, локальный порт различается (21077,21128,20881)
Используя Resource Manager для проверки сетевых соединений, похоже, что каждое соединение получает свой собственный набор локальных портов. Я считаю, что локальный порт выбирается для каждого соединения, а не для процесса. Например, когда соединение с сайтом создается впервые, для этого сеанса выбирается локальный порт.
Если вы на самом деле имеете в виду порты (не PID или что-то еще), то почти каждый посещаемый вами веб-сайт будет использовать порт 80 (HTTP) или 443 (HTTPS).
Не имеет значения, используете ли вы новую вкладку, это зависит от того, какой веб-сайт вы используете. Например, https://google.com использует 443, потому что это https (попробуйте https://google.com:443), а http://superuser.com использует 80, потому что это не https. Можно использовать FTP или другие порты, но это маловероятно.
Надеюсь, что это ответ на ваш вопрос!
HTTP - это протокол приложения, который передается по TCP-соединению.
Пакеты TCP/IP содержат следующую информацию:
- Адрес назначения (IP): общедоступный Интернет веб-сервера, например, 104.16.37.249 для stackoverflow.com
- Адрес источника (IP): ваш общедоступный интернет-адрес
- Порт назначения TCP: порт для доступа к приложению веб-сервера после достижения компьютера веб-сервера, 80 для HTTP, 443 для HTTPS
- Порт источника TCP: порт для доступа к веб-браузеру после того, как пакет достигнет вашего компьютера, например, 43505
Порт и адрес источника затем становятся портом и адресом назначения, и наоборот, когда сервер отправляет ответы на запросы от клиента.
Веб-браузер (или любой TCP-клиент) не должен знать порт источника, поскольку он выбирается автоматически операционной системой. ОС предоставляет программный интерфейс для связи по протоколу TCP. Этот интерфейс затем предоставит так называемый "сокет" для представления этого соединения. Сокет обеспечивает выходной канал (для отправки запросов) и входной канал (для получения ответов), что интересно, так как общение по сети не сильно отличается от чтения и записи из файлов.
Чтобы ответить на ваш вопрос более конкретно, ОС отслеживает, какой процесс (PID) использует какой порт источника, поэтому, когда она получает пакет TCP, где порт назначения соответствует этому порту источника (например, 34505), она будет знать, куда направить пакет. Многие UNIX-системы поставляются с netstat, что показывает именно это:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 172.16.123.140:34034 38.127.167.38:443 ESTABLISHED 3153/chromium-browser
tcp 0 0 172.16.123.140:50309 162.125.32.129:443 ESTABLISHED 2945/chromium-browser
Здесь вы можете видеть, что есть два установленных / открытых TCP-соединения с веб-серверами 38.127.167.38 и 162.125.32.129, использующих HTTP-порт 443. Адрес источника и порт источника здесь описываются как "локальный адрес".
В вашем примере веб-браузер разветвляется на несколько дочерних процессов. Операционная система пересылает пакеты дочерним процессам напрямую. Поскольку браузер создает один дочерний процесс для каждой вкладки, вы можете сказать, что пакеты отправляются непосредственно на вкладку, а не "маршрутизируются" каким-то хореографом в браузере. Однако это предполагает, что браузер использует одно соединение для каждой вкладки, что не всегда так, он создаст их много даже для одного и того же хоста, и ничто не мешает ему совместно использовать соединение на нескольких вкладках.
Я настоятельно советую вам обратиться к такой книге, как « Компьютерные сети», А. Таненбаум, 5-е издание, Пирсон.
Разные вкладки не взаимодействуют через разные порты. Веб-браузеры используют порт 80 для http и порт 443 для https, если не указано иное. Например, http://www.example.com:8443 будет работать через порт 8443
Компьютер внутренне не использует разные порты, он использует "Идентификаторы процесса" или PID, которые являются числами, используемыми большинством ядер операционной системы для уникальной идентификации активного процесса.