«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Что происходит, когда вы заходите на сайт &#google.com&# ?

Что происходит, когда вы заходите на сайт &#google.com&# ?

Опубликовано 4 ноября 2024 г.
Просматривать:986

What Happens When You Enter

Задумывались ли вы когда-нибудь о сложной последовательности событий, которые происходят за долю секунды между вводом «google.com» в браузере и появлением знакомой страницы поиска? В этом подробном исследовании мы откроем для себя увлекательный мир веб-технологий, сетевых протоколов и запутанного танца данных, который делает возможным наш онлайн-опыт.

1. Путешествие начинается: ваш браузер и операционная система

1.1 Первые шаги браузера

Когда вы вводите «google.com» и нажимаете Enter, ваш браузер начинает действовать:

  1. Разбор URL-адреса: браузер сначала анализирует введенный вами URL-адрес. Он идентифицирует протокол (в данном случае подразумевается «http://» или «https://»), имя домена («google.com») и любые дополнительные параметры пути или запроса (в этом простом примере их нет). .

  2. Проверка HSTS: для веб-сайтов, заботящихся о безопасности, таких как Google, браузер проверяет свой список HTTP Strict Transport Security (HSTS). Если google.com есть в этом списке (а это так и есть), браузер автоматически обновляет запрос до HTTPS.

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

    • Кэш DNS: IP-адрес, связанный с google.com
    • Кэш ресурсов: файлы HTML, CSS, JavaScript и изображения с главной страницы Google

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

1.2 Роль операционной системы

Если браузер не может найти необходимую информацию в своем кэше, он обращается за помощью к операционной системе (ОС):

  1. Проверка файла хостов: ОС сначала просматривает локальный файл «hosts». Этот файл может сопоставлять доменные имена с IP-адресами, потенциально минуя поиск DNS. Однако для большинства пользователей google.com в этом файле не будет.

  2. Кэш DNS-клиента: ОС поддерживает собственный кэш DNS, отдельный от кэша браузера. Далее он проверяет здесь.

  3. Конфигурация преобразователя: если IP-адрес отсутствует в локальном кеше, ОС готовится запросить DNS-сервер. Он считывает конфигурацию своей сети, чтобы определить, какой DNS-сервер следует запросить (обычно предоставляется вашим интернет-провайдером или устанавливается вручную).

2. Разрешение DNS: поиск адреса Google

Если IP-адрес google.com не кэширован, нам нужно попросить систему доменных имен (DNS) преобразовать удобочитаемый «google.com» в IP-адрес, пригодный для использования машиной.

2.1 Иерархия DNS

DNS имеет иерархическую структуру:

  1. Корневые серверы: На вершине иерархии. Они знают, где найти авторитетные серверы для доменов верхнего уровня (TLD), таких как .com, .org, .net и т. д.

  2. Серверы TLD: эти серверы знают обо всех доменах, зарегистрированных в их TLD. Сервер TLD .com знает о google.com.

  3. Авторитетные серверы имен: они отвечают за знание всей информации о конкретном домене, включая его IP-адреса.

2.2 Процесс DNS-запроса

  1. Рекурсивный преобразователь: DNS-сервер вашего интернет-провайдера (или другой настроенный преобразователь) получает запрос для google.com. Если ответ не кэширован, он запускает рекурсивный процесс:
  • Он запрашивает корневой сервер о домене .com
  • Корневой сервер направляет его на сервер TLD .com
  • Он запрашивает сервер TLD .com о google.com
  • Сервер .com передает его на авторитетные серверы имен Google
  • Он запрашивает у сервера имен Google IP-адрес google.com
  • Им-сервер Google отвечает IP-адресом
  1. Кэширование: каждый шаг этого процесса может включать в себя кэширование, поэтому не всегда требуется полный путь. Резолвер кэширует конечный результат, обычно на время, указанное Google (время жизни или TTL).

  2. Балансировка нагрузки: крупные сервисы, такие как Google, часто возвращают несколько IP-адресов. Это обеспечивает балансировку нагрузки и повышает надежность.

2.3 Пример поиска DNS

Предположим, поиск DNS возвращает следующий (упрощенный) результат:

google.com.     300    IN    A     172.217.167.78

Это означает:

  • Домен — google.com
  • Запись имеет 300-секундный (5-минутный) TTL
  • Это запись в Интернете (IN)
  • Это тип записи адреса (A)
  • IP-адрес: 172.217.167.78

3. Установление соединения: TCP/IP.

Теперь, когда у нас есть IP-адрес Google, пришло время установить соединение.

3.1 Стек TCP/IP

  1. Прикладной уровень: здесь работает ваш браузер, используя для связи HTTP(S).

  2. Транспортный уровень: TCP используется здесь для обеспечения надежной и упорядоченной доставки данных.

  3. Интернет-уровень: IP используется для маршрутизации пакетов между сетями.

  4. Link Layer: он обеспечивает физическую передачу данных через Ethernet, Wi-Fi, сотовые сети и т. д.

3.2 TCP-квитирование

Для установления соединения происходит трехстороннее рукопожатие:

  1. SYN: ваш компьютер отправляет пакет SYN (синхронизации) на сервер Google.
  2. SYN-ACK: сервер Google отвечает пакетом SYN-ACK.
  3. ACK: ваш компьютер отправляет обратно пакет ACK (подтверждения).

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

3.3 TLS-квитирование

Для соединений HTTPS (которые использует Google) происходит дополнительное рукопожатие TLS (Transport Layer Security):

  1. Привет клиенту: ваш браузер отправляет поддерживаемые версии SSL/TLS, наборы шифров и случайное число.
  2. Привет серверу: сервер выбирает версию SSL/TLS и набор шифров, отправляет свой сертификат и другое случайное число.
  3. Аутентификация: ваш браузер проверяет сертификат сервера в доверенном центре сертификации.
  4. Обмен ключами: для шифрования сеанса устанавливается безопасный симметричный ключ.

4. HTTP-запрос: запрос страницы

При установленном безопасном соединении ваш браузер отправляет HTTP-запрос GET на главную страницу Google.

4.1 Пример HTTP-запроса

GET / HTTP/2
Host: www.google.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0
Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1

Этот запрос включает в себя:

  • Метод (GET) и путь (/), которые мы запрашиваем
  • Версия HTTP (HTTP/2)*
  • Различные заголовки, предоставляющие информацию о браузере и его возможностях *Примечание. HTTP/2 относится только к HTTPS, а не к HTTP-соединению. Этот запрос отправляется через уже установленное соединение HTTPS, хотя в заголовках HTTPS явно не упоминается.

5. Серверная обработка: ответы Google

Серверы Google получают этот запрос и обрабатывают его. Это может включать в себя:

  1. Балансировка нагрузки: распределение запроса между многими серверами.
  2. Серверы приложений: запуск кода для генерации ответа.
  3. Запросы к базе данных: получение персонализированных данных или поисковых предложений.
  4. Кэширование: получение заранее созданного контента, если это возможно.

6. HTTP-ответ: отправка страницы

Сервер Google отправляет обратно HTTP-ответ, который может выглядеть примерно так:

HTTP/2 200 OK
Content-Type: text/html; charset=UTF-8
Date: Sat, 21 Sep 2024 12:00:00 GMT
Expires: Sat, 21 Sep 2024 12:00:00 GMT
Cache-Control: private, max-age=0
Server: gws
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
[... other headers ...]



  
    
    Google
    [... rest of the HTML ...]
  
  
    [... body content ...]
  

Этот ответ включает в себя:

  • Код состояния (200 ОК)
  • Различные заголовки с метаданными об ответе
  • HTML-содержимое страницы

7. Рендеринг: оживление страницы

Теперь ваш браузер имеет HTML-содержимое и начинает отображать страницу:

  1. Разбор HTML: браузер анализирует HTML, создавая объектную модель документа (DOM).

  2. Запрос дополнительных ресурсов: при обнаружении ссылок на CSS, JavaScript, изображения и т. д. он отправляет дополнительные HTTP-запросы на эти ресурсы.

  3. Разбор CSS: браузер анализирует CSS и применяет стили к элементам DOM, создавая объектную модель CSS (CSSOM).

  4. Выполнение JavaScript: браузер выполняет JavaScript, который может изменять DOM и CSSOM.

  5. Рендеринг: браузер использует окончательные модели DOM и CSSOM для отображения страницы на экране.

Заключение

То, что кажется простым действием — набрать «google.com» и нажать Enter, — на самом деле включает в себя сложную серию шагов: от поиска DNS и сетевых протоколов до обработки на стороне сервера и рендеринга на стороне клиента. Этот замысловатый танец происходит всего за миллисекунды, демонстрируя невероятную инженерию, которая лежит в основе нашего онлайн-опыта.

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


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

Также читайте HTTP и HTTPS, в чем разница между ними

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/yashrajxdev/what-happens-when-you-enter-googlecom-a-deep-dive-into-the-internets-inner-workings-1aoi?1Если есть какие-либо нарушение, пожалуйста, свяжитесь с [email protected], чтобы удалить
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3