Всякий раз, когда вы вводите адрес в строку браузера и нажимаете на "Enter", браузер начинает выполнять множество операций, которые большинство из нас воспринимают как само собой разумеющееся. Но давайте заглянем за кулисы и рассмотрим ключевые процессы, которые помогают вашему браузеру представить вам запрашиваемую веб-страницу.
Парсинг URL
Сначала браузер разбирает URL (Uniform Resource Locator), чтобы понять, какой ресурс вы хотите получить. После ввода в адресной строке браузера адреса и нажатия клавиши ввода, браузер начинает парсить url, который мы ввели.
URL — это адрес ресурса в сети.
Uniform Resource Locator (url) переводится как унифицированный локатор ресурса, и это адрес искомого ресурса в сети Интернет. Он состоит из нескольких компонентов, включая протокол (например, http:// или https://) и доменное имя.
Протокол указывает, каким образом должен быть осуществлен запрос, в то время как доменное имя ведет нас к ресурсу — веб-странице или файлу. Из протокола извлекается Uniform Resource Locator и по нему запрашивается искомый ресурс.
Разрешение доменного имени
После того как браузер распознал доменное имя, следующим шагом становится получение IP-адреса сервера, на котором находится запрашиваемый ресурс. Здесь начинает свою работу система доменных имен DNS (Domain Name System), которая сравнивает доменные имена с их IP-адресами. Этот систематический процесс, который называется DNS Lookup.
Все ip адреса находятся в базе Domain Name System (DNS).
Прежде чем сделать запрос к внешним DNS-серверам, браузер пытается найти IP-адрес в различных кэшах, таких как собственный кэш, кэш операционной системы, кэш роутера и кэш своего интернет-провайдера. Если адрес не найден в этих кэшах, тогда инициируется запрос к корневым и далее к другим DNS-серверам (запрос в цепочке серверов DNS). Этот запрос рекурсивен и продолжается до тех пор, пока не будет найден нужный IP-адрес, либо будет возвращена ошибка, что данный ip не был найден.
Рекурсивный поиск — это неоднократный поиск от DNS сервера к DNS серверу. Результатом будет, либо найденный ip адрес, либо возврат уведомления об ошибке, что он не смог его найти.
Примеры IP-адресов:
Адреса IPv4: 192.168.0.1, 135.17.245.3. Они состоят из четырёх десятичных чисел, разделённых точками.
Адреса IPv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334, 1091:5db7:45a6:0012:0c00:8a2e:53a1:2443. Они записываются в виде восьми групп по четыре шестнадцатеричных цифры, разделённых двоеточиями.
ip адреса являются истинными адресами сайтов. Но для удобства работы пользователям они были заменены на названия и имена. Имена сайтов легче запомнить, чем ip адреса, которые запомнить невозможно.
Роль TCP в передаче данных
Основной транспортный протокол, используемый в интернете для передачи данных, — это TCP (Transmission Control Protocol). Протокол TCP был разработан в 1974 году и остается одним из основных стандартов передачи данных. Он обеспечивает надежную передачу данных между клиентом и сервером, гарантируя целостность и последовательность получаемых данных. Перед началом обмена данными TCP выполняет процедуру, известную как "трехстороннее рукопожатие" (three-way handshake), что помогает установить устойчивое и надежное соединение.
Названия сайтов созданы для удобства пользователей, а вся работа по соединению с сервером происходит с помощью ip адресов.
Запомнить все ip адреса каждого сайта невозможно, а вот запомнить название сайта удобно для пользователей. Поиск ip адреса закрепляется за DNS.
Запросы к DNS серверам содержат в себе небольшие пакеты данных, и включают в себя: адрес-ссылку запрашиваемого ресурса и ip адрес, куда нужно будет вернуть ответ.
Весь процесс поиска ip адреса по имени сайта называется DNS Lookup.
Процедура передачи данных
После установления надежного соединения через протокол TCP начинается передача данных с использованием протокола HTTP (Hypertext Transfer Protocol). Сервер обрабатывает запрос клиента и отправляет ответ, используемый браузером для отображения веб-страницы.
TCP протоколы были разработаны в 1974 году, подверглись некоторым улучшениям, но в основе своей остались прежними до сих пор.
TCP (англ. Transmission Control Protocol — протокол управления передачей) — один из основных протоколов передачи данных интернета.
В стеке протоколов TCP/IP выполняет функции транспортного уровня модели OSI.
Механизм TCP предоставляет собой поток данных с предварительной установкой соединения, осуществляет повторный запрос данных в случае потери данных и устраняет дублирование при получении двух копий одного пакета, гарантируя тем самым (в отличие от UDP) целостность передаваемых данных и уведомление отправителя о результатах передачи.
Перед непосредственным обменом данными Клиент и Сервер должны произвести процедуру тройного рукопожатия. Эта процедура представляет собой обмен числовой последовательностью, которая будет использоваться в начале каждого отправленного пакета и ряда других переменных, которые нужны для соединения.
Числовые значения при обмене числовой последовательностью выбираются случайным образом на обеих сторонах Клиента и Сервера для обеспечения безопасности.
Этапы обмена данными между Клиентом и Сервером: синхронизация, подтверждение сервера, процедура handshake (хендшейка). После чего наблюдается стойкое соединение и только после этого начинается реальный обмен данными.
При каждом соединении каждый раз осуществляется процедура хендшейка.
Данные отправляются по специальному протоколу HTTP. По специальному протоколу мы и получаем ответ от сервера.
Заключение
Хотя для пользователя веб-серфинг может казаться простым процессом, за кулисами происходит множество сложных операций и взаимодействий между различными элементами сети. Знание того, как взаимодействуют URL, DNS, TCP и HTTP, помогает лучше понять магию интернета и оценивает важную роль инжиниринга в каждом аспекте этого процесса.
Эта статья лишь поверхностно затронула отдельные аспекты взаимодействия вашего браузера с интернетом. Понимание этих принципов — это как открытие двери в мир технологий, управляющих нашими повседневными цифровыми взаимодействиями.
Полезные ресурсы:
Сообщество дизайнеров в VK
https://vk.com/grafantonkozlov
Телеграмм канал сообщества
https://t.me/grafantonkozlov
Архив эксклюзивного контента
https://boosty.to/antonkzv
Канал на Дзен
https://dzen.ru/grafantonkozlov
---------------------------------------
Бесплатный Хостинг и доменное имя
https://tilda.cc/?r=4159746
Мощная и надежная нейронная сеть Gerwin AI
https://t.me/GerwinPromoBot?start=referrer_3CKSERJX
GPTs — плагины и ассистенты для ChatGPT на русском языке
https://gptunnel.ru/?ref=Anton
---------------------------------------
Донат для автора блога