Статьи

Как устроен HTTP/HTTPS и что такое DNS

Браузер и схема сетевого запроса на тёмном фоне с акцентом на HTTP, HTTPS и DNS

Как устроен HTTP/HTTPS и что такое DNS проще всего понять на одном действии: ты вводишь адрес сайта, а через доли секунды видишь страницу. За этой короткой паузой работают три слоя: DNS находит IP-адрес сервера, HTTPS защищает соединение, а HTTP договаривается, какой именно ресурс сервер должен вернуть браузеру.

Что такое DNS и зачем он нужен

DNS — это система, которая переводит понятные человеку домены вроде easyx-x.com в IP-адреса, по которым устройства реально находят друг друга в сети. Cloudflare в своём объяснении называет DNS «телефонной книгой интернета»: браузеру нужен адрес машины, а человеку удобнее помнить имя сайта.

Я бы начинал изучение веба именно с DNS, потому что без него HTTP даже не доходит до сервера. Домен сам по себе не является местом хранения сайта. Это имя, которое указывает на записи в DNS: A-запись для IPv4, AAAA-запись для IPv6, CNAME для псевдонима, MX для почты и другие типы записей.

Когда DNS работает нормально, он почти незаметен. Когда ломается, сайт может быть жив, сервер может отвечать, SSL-сертификат может быть в порядке, но браузер всё равно покажет ошибку, потому что не смог получить правильный адрес.

Как DNS находит IP-адрес сайта

Схема DNS-запроса от браузера через несколько серверов к финальному ответу
DNS выглядит как один запрос, но внутри может пройти несколько уровней поиска.

DNS-запрос обычно идёт через несколько участников: браузер, операционную систему, рекурсивный резолвер, корневые DNS-серверы, серверы доменной зоны верхнего уровня и авторитативный DNS-сервер домена. В полной цепочке резолвер сначала спрашивает корневой уровень, затем TLD-сервер вроде .com, затем авторитативный сервер конкретного домена.

  1. Браузер проверяет локальный кэш: возможно, IP уже известен.
  2. Если ответа нет, запрос уходит в DNS-резолвер провайдера, роутера, Google DNS, Cloudflare DNS или другого сервиса.
  3. Резолвер ищет, кто отвечает за нужную доменную зону.
  4. Авторитативный DNS-сервер возвращает нужную запись, например A или AAAA.
  5. Полученный IP кэшируется на время TTL, чтобы не повторять всю цепочку при каждом открытии сайта.
Ключевая мысль

DNS не скачивает страницу и не шифрует трафик. Его задача уже: найти сетевой адрес, к которому браузер сможет подключиться.

HTTP: язык запросов и ответов

Клиент и сервер обмениваются HTTP-запросом и HTTP-ответом
HTTP — это договорённость о том, как клиент просит ресурс и как сервер отвечает.

HTTP — это прикладной протокол для обмена ресурсами в вебе. По описанию MDN, HTTP работает как клиент-серверный протокол: клиент, обычно браузер, отправляет запрос, а сервер возвращает ответ. В ответе может быть HTML-документ, JSON, картинка, видео, файл, ошибка или редирект.

В терминах RFC 9110 HTTP описывает семантику сообщений: методы, статусы, поля заголовков и содержимое. Запрос состоит из метода, пути, версии протокола, заголовков и иногда тела. Самые частые методы — GET для получения ресурса и POST для отправки данных. Заголовки передают контекст: какой тип ответа клиент принимает, какие cookies отправляет, какой домен нужен, как работать с кэшем.

Ответ тоже имеет структуру: версия протокола, статус-код, заголовки и тело. Код 200 обычно значит успешный ответ, 301 или 302 — перенаправление, 404 — ресурс не найден, 500 — проблема на стороне сервера. Для разработчика это не декоративные цифры, а быстрый способ понять, где именно сломалась цепочка.

КодЧто означаетТипичный смысл
200OKСервер вернул нужный ресурс
301Moved PermanentlyАдрес переехал на постоянной основе
404Not FoundРесурс по этому пути не найден
500Internal Server ErrorСервер упал или не смог обработать запрос

Почему HTTP называют stateless

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

Сессии на сайтах появляются поверх HTTP. Cookies, токены авторизации и серверные сессии добавляют состояние там, где оно нужно: логин в аккаунт, корзина в магазине, настройки пользователя, персональная лента. Поэтому фраза «HTTP без состояния» не означает, что сайты не умеют помнить пользователя. Это значит, что память строится дополнительными механизмами.

HTTPS: тот же HTTP, но внутри защищённого канала

Защищённый HTTPS-канал между браузером и сервером в тёмной техно-сцене
HTTPS добавляет к HTTP защищённый слой, через который проходит обмен данными.

HTTPS — это HTTP, работающий поверх защищённого соединения TLS. MDN определяет HTTPS как зашифрованную версию HTTP: TLS шифрует обмен между клиентом и сервером, чтобы посторонний участник сети не мог спокойно прочитать или подменить содержимое запроса.

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

Значок замка в браузере не доказывает, что сайт честный или безопасный по смыслу. Он говорит скромнее: соединение с этим доменом защищено сертификатом, который браузер принял. Фишинговый сайт тоже может иметь HTTPS, если владелец получил сертификат на свой домен.

Что происходит при открытии сайта

В реальной загрузке страницы DNS, HTTPS и HTTP идут не как три отдельные темы из учебника, а как одна цепочка. Упрощённый порядок такой: браузер разбирает URL, получает IP через DNS, устанавливает соединение с сервером, выполняет TLS-рукопожатие для HTTPS, отправляет HTTP-запрос и получает HTTP-ответ.

  • DNS отвечает на вопрос «куда подключаться?».
  • TLS отвечает за защищённый канал в HTTPS.
  • HTTP отвечает на вопрос «что именно запросить и что вернуть?».
  • Браузер собирает HTML, CSS, JavaScript, изображения и другие ресурсы в страницу.

После первого HTML-документа браузер обычно делает десятки дополнительных запросов: за стилями, скриптами, шрифтами, картинками, API-данными. Поэтому «открыть сайт» — это редко один запрос. Чаще это маленький конвейер запросов, кэша, приоритетов загрузки и повторного использования соединений.

HTTP/1.1, HTTP/2 и HTTP/3: что менялось

Смысл HTTP остаётся тем же: запрос и ответ. Менялась упаковка и доставка сообщений. В HTTP/1.1 сообщения были текстовыми и достаточно читаемыми для человека. HTTP/2 добавил бинарные фреймы и мультиплексирование, чтобы несколько запросов эффективнее шли по одному соединению. HTTP/3 перенёс HTTP-семантику поверх QUIC, а QUIC работает поверх UDP и включает TLS 1.3 на транспортном уровне.

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

Где чаще всего путаются

Первая ошибка — считать DNS частью HTTPS. DNS может работать до защищённого соединения, потому что браузеру сначала нужно понять, куда идти. Существуют DNS over HTTPS и DNS over TLS, но это отдельная защита DNS-запросов, а не базовый механизм HTTPS-страницы.

Вторая ошибка — думать, что домен и сервер равны друг другу. Один домен может указывать на разные IP, один IP может обслуживать несколько сайтов, а CDN может отдавать страницу с ближайшего узла. Заголовок Host и сертификат помогают серверу и браузеру понять, какой именно сайт нужен.

Третья ошибка — воспринимать HTTP-статус как «ошибку браузера». Код ответа приходит от сервера или промежуточной инфраструктуры. Браузер только показывает результат. Поэтому при отладке я всегда смотрю цепочку: DNS-ответ, TLS-сертификат, статус HTTP, заголовки, тело ответа.

Короткий план для проверки проблем

  1. Проверь, резолвится ли домен: команда nslookup или dig покажет DNS-ответ.
  2. Посмотри сертификат в браузере: домен, срок действия, издатель, совпадение имени.
  3. Открой DevTools → Network и проверь HTTP-статус первого документа.
  4. Если статус нормальный, смотри дополнительные запросы: CSS, JS, изображения, API.
  5. Если ошибка плавает, учитывай кэш DNS, CDN и разные узлы выдачи.

Частые вопросы

DNS и HTTPS связаны напрямую?

Они участвуют в одной загрузке сайта, но отвечают за разные задачи. DNS находит IP-адрес домена, а HTTPS защищает HTTP-обмен после подключения к серверу.

HTTP без HTTPS опасен?

Для логинов, платежей, личных данных и cookies — да, потому что трафик может идти открытым текстом. Для современной публичной страницы HTTPS всё равно стал нормой: он защищает целостность и доверие к соединению.

Почему сайт может не открываться, хотя сервер работает?

Причина может быть в DNS-записях, сертификате, редиректах, CDN, firewall или ошибке приложения. Сервер «жив» — это только один слой, а загрузка сайта проходит через несколько зависимых этапов.

Главное

HTTP/HTTPS и DNS — это не магия браузера, а нормальная инженерная цепочка. DNS превращает имя сайта в адрес, HTTPS создаёт защищённый канал, HTTP формулирует запрос и принимает ответ. Как только эта схема укладывается в голове, ошибки в вебе перестают быть туманом: становится понятно, где искать — в домене, сертификате, соединении, сервере или самом приложении.

Источники

Комментарии 0

Пока нет комментариев. Будьте первым!