Задумывались ли вы когда-нибудь о сложной последовательности событий, которые происходят за долю секунды между вводом «google.com» в браузере и появлением знакомой страницы поиска? В этом подробном исследовании мы откроем для себя увлекательный мир веб-технологий, сетевых протоколов и запутанного танца данных, который делает возможным наш онлайн-опыт.
Когда вы вводите «google.com» и нажимаете Enter, ваш браузер начинает действовать:
Разбор URL-адреса: браузер сначала анализирует введенный вами URL-адрес. Он идентифицирует протокол (в данном случае подразумевается «http://» или «https://»), имя домена («google.com») и любые дополнительные параметры пути или запроса (в этом простом примере их нет). .
Проверка HSTS: для веб-сайтов, заботящихся о безопасности, таких как Google, браузер проверяет свой список HTTP Strict Transport Security (HSTS). Если google.com есть в этом списке (а это так и есть), браузер автоматически обновляет запрос до HTTPS.
Проверка кэша: перед подключением к сети браузер проверяет свой локальный кеш. В этом кеше хранится информация о предыдущих посещениях, в том числе:
Если какой-либо из них обнаружен и все еще действителен (срок действия не истек), браузер может пропустить некоторые из следующих шагов.
Если браузер не может найти необходимую информацию в своем кэше, он обращается за помощью к операционной системе (ОС):
Проверка файла хостов: ОС сначала просматривает локальный файл «hosts». Этот файл может сопоставлять доменные имена с IP-адресами, потенциально минуя поиск DNS. Однако для большинства пользователей google.com в этом файле не будет.
Кэш DNS-клиента: ОС поддерживает собственный кэш DNS, отдельный от кэша браузера. Далее он проверяет здесь.
Конфигурация преобразователя: если IP-адрес отсутствует в локальном кеше, ОС готовится запросить DNS-сервер. Он считывает конфигурацию своей сети, чтобы определить, какой DNS-сервер следует запросить (обычно предоставляется вашим интернет-провайдером или устанавливается вручную).
Если IP-адрес google.com не кэширован, нам нужно попросить систему доменных имен (DNS) преобразовать удобочитаемый «google.com» в IP-адрес, пригодный для использования машиной.
DNS имеет иерархическую структуру:
Корневые серверы: На вершине иерархии. Они знают, где найти авторитетные серверы для доменов верхнего уровня (TLD), таких как .com, .org, .net и т. д.
Серверы TLD: эти серверы знают обо всех доменах, зарегистрированных в их TLD. Сервер TLD .com знает о google.com.
Авторитетные серверы имен: они отвечают за знание всей информации о конкретном домене, включая его IP-адреса.
Кэширование: каждый шаг этого процесса может включать в себя кэширование, поэтому не всегда требуется полный путь. Резолвер кэширует конечный результат, обычно на время, указанное Google (время жизни или TTL).
Балансировка нагрузки: крупные сервисы, такие как Google, часто возвращают несколько IP-адресов. Это обеспечивает балансировку нагрузки и повышает надежность.
Предположим, поиск DNS возвращает следующий (упрощенный) результат:
google.com. 300 IN A 172.217.167.78
Это означает:
Теперь, когда у нас есть IP-адрес Google, пришло время установить соединение.
Прикладной уровень: здесь работает ваш браузер, используя для связи HTTP(S).
Транспортный уровень: TCP используется здесь для обеспечения надежной и упорядоченной доставки данных.
Интернет-уровень: IP используется для маршрутизации пакетов между сетями.
Link Layer: он обеспечивает физическую передачу данных через Ethernet, Wi-Fi, сотовые сети и т. д.
Для установления соединения происходит трехстороннее рукопожатие:
Этот процесс устанавливает порядковые номера для диалога, обеспечивая правильное упорядочение пакетов, а также возможность обнаружения и повторной передачи любых потерянных пакетов.
Для соединений HTTPS (которые использует Google) происходит дополнительное рукопожатие TLS (Transport Layer Security):
При установленном безопасном соединении ваш браузер отправляет HTTP-запрос GET на главную страницу Google.
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
Этот запрос включает в себя:
Серверы Google получают этот запрос и обрабатывают его. Это может включать в себя:
Сервер 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 ...]
Этот ответ включает в себя:
Теперь ваш браузер имеет HTML-содержимое и начинает отображать страницу:
Разбор HTML: браузер анализирует HTML, создавая объектную модель документа (DOM).
Запрос дополнительных ресурсов: при обнаружении ссылок на CSS, JavaScript, изображения и т. д. он отправляет дополнительные HTTP-запросы на эти ресурсы.
Разбор CSS: браузер анализирует CSS и применяет стили к элементам DOM, создавая объектную модель CSS (CSSOM).
Выполнение JavaScript: браузер выполняет JavaScript, который может изменять DOM и CSSOM.
Рендеринг: браузер использует окончательные модели DOM и CSSOM для отображения страницы на экране.
То, что кажется простым действием — набрать «google.com» и нажать Enter, — на самом деле включает в себя сложную серию шагов: от поиска DNS и сетевых протоколов до обработки на стороне сервера и рендеринга на стороне клиента. Этот замысловатый танец происходит всего за миллисекунды, демонстрируя невероятную инженерию, которая лежит в основе нашего онлайн-опыта.
Понимание этих процессов не только удовлетворяет наше любопытство, но также помогает веб-разработчикам и ИТ-специалистам оптимизировать веб-сайты, устранять проблемы и создавать более эффективные и безопасные веб-приложения. В следующий раз, когда вы зайдете на веб-сайт, найдите минутку, чтобы оценить технологические чудеса, работающие за кулисами, чтобы представить Интернет на вашем экране!
Изображения в этом блоге созданы искусственным интеллектом.
Также читайте HTTP и HTTPS, в чем разница между ними
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3