Что происходит, когда вы вводите https://www.google.com в браузере и нажимаете ENTER

Контекст

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

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

Архитектура клиент-сервер

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

  • Клиенты – это подключенные к Интернету устройства типичного пользователя Интернета (например, ваш компьютер, подключенный к сети Wi-Fi, или ваш телефон, подключенный к вашей мобильной сети) и программное обеспечение для доступа в Интернет, доступное на этих устройствах (обычно веб-браузер, такой как Firefox или Chrome).
  • Серверы — это компьютеры, на которых хранятся веб-страницы, сайты или приложения. Когда клиентское устройство хочет получить доступ к веб-странице, копия веб-страницы загружается с сервера на клиентский компьютер для отображения в веб-браузере пользователя.

Серверная часть

При настройке веб-приложения существует набор необходимого вам программного обеспечения. Эта коллекция называется веб-стеком. Как минимум, в эту коллекцию входят:

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

LAMP — наиболее часто используемый веб-стек.

Веб-сервер против сервера приложений

Веб-серверы отлично подходят для выполнения одной задачи; обслуживание файлов — статических веб-страниц. Если наши приложения используют какие-либо изображения, файлы HTML, .pdf или .zip, мы предпочитаем хранить все эти статические файлы на веб-сервере. Однако веб-серверы не могут выполнять какую-либо бизнес-логику или предоставлять динамический контент на веб-страницы. Примеры бизнес-логики и динамического содержимого включают:

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

Вот здесь и появляется сервер приложений.

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

База данных

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

Балансировщик нагрузки

У крупных организаций, таких как Google или Facebook, обычно миллионы пользователей делают запросы одновременно. Таким образом, эти организации обычно размещают свои веб-приложения на тысячах серверов для обработки большого входящего трафика. Здесь на помощь приходит балансировщик нагрузки:

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

Существует два типа балансировщиков нагрузки:

  • Программные балансировщики нагрузки
  • Аппаратные балансировщики нагрузки

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

Сторона клиента

Запрос DNS (динамическая система имен)

Domain Name System is like an address book for websites. When you type a web address in your browser, the browser looks at the DNS to find the website’s IP address before it can retrieve the website.

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

DNS — это сервер базы данных имен, в котором находятся доменные имена в Интернете и которые преобразуются в IP-адреса. Когда вы ищете веб-сайт в своем браузере, используя доменное имя веб-сайта, например example.com, DNS сопоставляет это имя с соответствующим IP-адресом и возвращает этот IP-адрес вашему браузеру. Теперь ваш браузер может отправлять запросы непосредственно на серверы этого веб-сайта, чтобы получить от них доступ к нужным вам услугам.

Как работает DNS

Когда вы вводите example.com в своем браузере, предпринимаются следующие шаги для сопоставления/разрешения этого доменного имени с соответствующим IP-адресом:

  1. Браузер проверяет свой кеш, если сайт посещался ранее.
  2. Затем проверяется кеш ОС, не хранилась ли там информация о доменном имени сайта и соответствующем ему IP-адресе.
  3. Если IP-адрес не найден во время этих первых двух шагов, браузер отправляет запрос преобразователю DNS на поиск IP-адреса этого доменного имени.
  4. Резолвер DNS проверяет свой кеш
  5. Если не найдено, DNS делает запрос к корневому серверу.
  6. Корневой сервер, в свою очередь, перенаправляет этот запрос на сервер .COM Домен верхнего уровня (TLD). (Если бы доменное имя этого веб-сайта было example.org, перенаправление было бы на сервер TLD .ORG и так далее.)
  7. Затем TLD .COM находит Официальные серверы имен для доменного имени example.com. На этом DNS-запросе наконец-то дается ответ с указанием IP-адреса серверов веб-сайта. (Примечание: обычно к любому домену подключено более одного сервера имен, в зависимости от услуг, предлагаемых веб-сайтом, например веб-сайт, электронная почта и т. д.)
  8. Преобразователь DNS возвращает этот IP-адрес вашему браузеру, после чего ваш браузер может отправить запрос http/https к этому конкретному серверу IP-адресов, а сервер возвращает http-ответ с запрошенной вами информацией.

HTTP- и HTTPS-запрос

HTTP defines a language for clients and servers to communicate with each other.

Протокол передачи гипертекста (HTTP) — это протокол, по которому данные передаются между вашим браузером и веб-сайтом, к которому вы подключены. HTTP — это протокол запроса-ответа. Это дает пользователям возможность взаимодействовать с веб-ресурсами, такими как файлы HTML, путем передачи гипертекстовых сообщений между клиентами и серверами. .

Защищенный протокол передачи гипертекста (HTTPS) — это безопасная версия HTTP. Безопасность в данном случае означает, что все сообщения между вашим браузером и веб-сайтом зашифрованы. Безопасная связь иногда необходима для защиты высококонфиденциальных онлайн-транзакций, таких как онлайн-банкинг и формы заказов онлайн-покупок.

Как работает HTTPS?

Страницы HTTP используют протокол Secure Sockets Layer (SSL) для шифрования связи. SSL использует «асимметричную» систему инфраструктуры открытых ключей (PKI). Асимметричная система использует «открытый» ключ и «закрытый» ключ для шифрования сообщений. Все, что зашифровано открытым ключом, может быть расшифровано только закрытым ключом и наоборот.

Когда вы запрашиваете HTTPS-подключение к веб-странице, веб-сайт сначала отправляет в ваш браузер свой SSL-сертификат. Этот сертификат содержит открытый ключ, необходимый для начала безопасного сеанса. На основе этого первоначального обмена ваш браузер и веб-сайт затем инициируют 'SSL-подтверждение'. Рукопожатие SSL включает в себя создание общих секретов для установления уникального безопасного соединения между вами и веб-сайтом.

HTTP-клиенты обычно используют соединения Протокол управления передачей (TCP) для связи с серверами.

Протокол управления передачей/Интернет-протокол (TCP/IP)

TCP/IP are communication protocols define how data should travel across the internet.

TCP/IP — это набор правил и процедур, регулирующих взаимодействие устройств в сети. Эти правила определяют, как данные, передаваемые по сети, должны быть разбиты на пакеты, адресованы, переданы, маршрутизированы и получены в пункте назначения.

TCP определяет, как приложения могут создавать каналы связи в сети. Он также управляет тем, как сообщение собирается в более мелкие пакеты, прежде чем они будут переданы через Интернет и собраны в правильном порядке по адресу назначения.

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

Некоторые другие важные технологии

Брандмауэр

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

Веб-мониторинг стека

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

Мониторинг веб-стека можно разделить на 2 категории:

  • Мониторинг приложений: получает данные о работающем ПО и следит за тем, чтобы оно работало должным образом.
  • Мониторинг сервера: получает данные о вашем виртуальном или физическом сервере и следит за тем, чтобы они не были перегружены (это может быть перегрузка процессора, памяти, диска или сети).

Итак, что происходит, когда вы вводите https://www.google.com и нажимаете ENTER?

В заключение, когда вы вводите https://www.google.com в своем веб-браузере, будут предприняты следующие шаги, чтобы предоставить вам запрошенную страницу:

  1. Запрос DNS: браузер отправляет запрос преобразователю DNS для сопоставления доменного имени (www.google.com) с соответствующим IP-адресом. (резюме шагов, предпринятых для решения этой здесь). Затем преобразователь DNS возвращает этот IP-адрес вашему браузеру, чтобы ваш браузер мог отправить запрос https непосредственно на серверы для этой веб-страницы.
  2. HTTPS-запрос к серверу: браузер отправляет HTTP-запрос на сервер, используя для связи с сервером протокол TCP/IP. Примечание. При общении через Интернет протокол TCP/IP устанавливает соединение, повторно компилирует пакеты данных после передачи, а затем передает их программам, адресованным на устройстве получателя. Чтобы эта передача работала, операционная система должна создать входы и открыть их для передачи. Каждый вход имеет определенный кодовый номер (номера портов). По умолчанию номера портов для http-подключений — 80, а для https-подключений — 443. В нашем случае наш запрос является https-запросом, поэтому он попадет на серверы Google через порт 443, и Google ответит нашему браузеру через тот же порт: 443.
  3. Брандмауэр: наш запрос попадает в брандмауэры Google, которые определяют, разрешать ли этот трафик или нет (в случае злонамеренного запроса).
  4. Балансировщики нагрузки: балансировщики нагрузки Google перераспределяют наш запрос (вместе с миллионами других, которые он получает каждую минуту) на один из своих многочисленных серверов.
  5. Веб-сервер: мы запрашиваем целевую страницу google.com. Это простая статическая веб-страница. Когда запрос достигает веб-сервера, он будет упакован в ответ HTTPS и отправлен обратно в наш веб-браузер. Ответ https будет содержать заголовок и тело. Заголовок содержит метаданные, а тело содержит содержимое, которое будет отображаться в браузере.
  6. Сервер приложений: если наш запрос должен был отображать динамический контент или включать какую-то бизнес-логику (например, если нам нужно было войти в учетную запись или выполнить транзакцию в Интернете), веб-сайт сервер будет связываться с сервером приложений для выполнения этого запроса. Сервер приложений, в свою очередь, при необходимости будет передавать базу данных для получения любых данных, необходимых на веб-странице. (например, получение информации о продукте для онлайн-транзакции). Ответ https отправляется обратно в веб-браузер.

Конец.