1. Путешествие начинается: что происходит, когда вы вводите URL в браузере
Путешествие начинается: что происходит, когда вы вводите URL в браузере
Вы открываете браузер, печатаете example.com и нажимаете Enter. Менее чем через секунду перед вами появляется готовая страница. Для пользователя это выглядит как магия мгновенной телепортации данных, но для сетевого инженера эта секунда — строго оркестрованный каскад событий, в котором участвуют десятки устройств по всему миру. Чтобы научиться управлять сетями, нам нужно замедлить время и разобрать эту секунду на кадры.
В этой статье мы проследим путь сетевого запроса от нажатия клавиши до получения первого байта данных. Это каркас, на который в следующих главах мы будем наращивать глубокое понимание протоколов.
Шаг 1. Анатомия адреса (Парсинг URL)
Прежде чем куда-то идти, браузер должен понять, куда именно вы хотите попасть и как с этим местом общаться. Строка, которую вы вводите, называется URL (Uniform Resource Locator — единообразный локатор ресурса).
Браузер разбирает введенную строку на составные части.
Даже если вы ввели просто example.com, браузер автоматически достраивает строку до полного вида, например: https://example.com/.
Здесь скрыты две критически важные инструкции:
https:// говорит браузеру, на каком «языке» придется общаться с сервером (в данном случае — по защищенному протоколу HTTP).example.com — это человекочитаемое имя узла, к которому нужно обратиться.Но здесь возникает первая инженерная проблема: компьютеры и маршрутизаторы в интернете не понимают имен вроде «example.com». Они оперируют только числами — IP-адресами (например, 93.184.216.34). Нам нужен переводчик.
Шаг 2. Телефонная книга интернета (DNS)
Процесс перевода доменного имени в IP-адрес называется DNS-разрешением (DNS resolution). Серверы DNS работают как гигантская распределенная адресная книга.
Браузер не сразу бежит в интернет с вопросом. Сначала он проверяет свою внутреннюю память (кэш): не заходили ли вы на этот сайт пять минут назад? Если адреса там нет, он спрашивает операционную систему. Если и там пусто, запрос отправляется к DNS-резолверу (обычно это сервер вашего интернет-провайдера).
Если резолвер тоже не знает ответа, начинается настоящее детективное расследование по иерархии интернета.
В результате этого многоступенчатого опроса браузер наконец получает заветный IP-адрес: 93.184.216.34. Теперь он знает физические координаты сервера в глобальной сети.
Шаг 3. Установка контакта (TCP Handshake)
Зная IP-адрес, браузер готов отправить запрос. Но в надежных сетях нельзя просто бросить данные в пустоту и надеяться, что они дойдут. Сначала нужно убедиться, что сервер существует, работает и готов нас слушать.
Для этого используется протокол транспортного уровня — TCP (Transmission Control Protocol). Он устанавливает соединение с помощью процедуры, которую называют «тройным рукопожатием» (Three-way handshake).
В упрощенном виде диалог машин выглядит так:
Только после того, как это рукопожатие успешно завершено, между вашим компьютером и сервером образуется виртуальный «туннель», по которому можно безопасно передавать информацию. Детальную механику TCP, структуру его пакетов и то, как он гарантирует доставку каждого байта, мы препарируем в третьей главе курса.
Шаг 4. Разговор на одном языке (HTTP-запрос)
Соединение установлено. Настало время попросить ту самую веб-страницу, ради которой все затевалось. Здесь в дело вступает протокол HTTP (HyperText Transfer Protocol) — язык, на котором общаются веб-браузеры и веб-серверы.
Браузер формирует текстовое сообщение и отправляет его по установленному TCP-каналу. Выглядит оно примерно так:
> GET / HTTP/1.1 > Host: example.com > User-Agent: Mozilla/5.0 > Accept: text/html
Это сообщение говорит серверу: «Дай мне (GET) главную страницу (/), используя версию протокола HTTP/1.1. Я ищу сайт example.com, а сам я — браузер Mozilla. Я готов принять текст в формате HTML».
Сервер получает этот текст, обрабатывает его и отправляет ответ:
> HTTP/1.1 200 OK > Content-Type: text/html > > \<html>...код страницы...\</html>
Код 200 OK означает, что сервер понял запрос и успешно нашел нужный документ. Получив HTML-код, браузер закрывает соединение (или оставляет его открытым для загрузки картинок) и начинает рисовать страницу на вашем экране.
Физическое воплощение сервера
Важно понимать, что «сервер», с которым мы только что поздоровались и обменялись текстом, — это не абстрактное облако. Это конкретный физический компьютер, на котором запущена специальная программа-слушатель.
Любой компьютер может стать сервером, если на нем открыть нужный порт и запустить программу, умеющую отвечать на HTTP-запросы. В седьмой главе курса вы сами напишете такую программу и превратите свою машину в полноценный узел сети.
Сборка картины
Давайте окинем взглядом весь пройденный путь:
Это базовый скелет любого сетевого взаимодействия в вебе. Сегодня мы посмотрели на него с высоты птичьего полета. Но мы упустили одну важнейшую деталь: как именно биты информации находят дорогу от вашего домашнего роутера до сервера, который может находиться на другом континенте?
Именно этому посвящена наша следующая статья, где мы спустимся на уровень ниже и разберем, как данные путешествуют по глобальной паутине маршрутизаторов.