Что такое HTTP и его роль в вебе

Что такое HTTP и его роль в вебе

До этого модуля мы изучали интернет-инфраструктуру: как пакеты передаются, адресуются и маршрутизируются. Теперь поднимемся на прикладной уровень — к протоколу, ради которого большинство людей открывает браузер. HTTP (HyperText Transfer Protocol) — это язык, на котором браузер общается с веб-сервером.

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

HTTP работает по простой схеме: клиент отправляет запрос, сервер присылает ответ. Больше ничего. Клиент (обычно браузер) всегда инициирует общение. Сервер (веб-сервер вроде Nginx или Apache) слушает порт 80 (HTTP) или 443 (HTTPS) и отвечает на входящие запросы.

Это похоже на разговор в ресторане: ты (клиент) просишь блюдо из меню, официант (сервер) приносит его. Официант не подходит к тебе просто так — он ждёт заказа.

Зачем нужен HTTP

HTTP решает задачу передачи гипертекста — документов, содержащих ссылки на другие документы. Именно гипертекст сделал веб «паутиной»: страницы связываются ссылками, и пользователь переходит между ними одним кликом.

HTTP определяет:

  • Формат запроса. Что именно клиент говорит серверу: «Дай мне страницу», «Сохрани эти данные», «Удали то».
  • Формат ответа. Что сервер говорит клиенту: «Вот страница», «Всё сохранил», «Ничего не нашёл».
  • Метаданные. Заголовки с дополнительной информацией: тип контента, длина, параметры кэширования.

Краткая история HTTP

  • HTTP/0.9 (1991). Самый первый: только метод GET, только HTML, без заголовков. Запрос — одна строка.
  • HTTP/1.0 (1996). Появились заголовки, методы POST и HEAD, коды статуса.
  • HTTP/1.1 (1997). Keep-Alive (повторное использование соединения), виртуальные хосты (много сайтов на одном IP), chunked transfer. Основной протокол интернета на 20+ лет.
  • HTTP/2 (2015). Бинарный формат, мультиплексирование (много запросов в одном соединении), сжатие заголовков.
  • HTTP/3 (2022). Переход на QUIC (UDP вместо TCP), ускоренное рукопожатие, устранение head-of-line blocking.

Сегодня большинство сайтов работают на HTTP/2, HTTP/3 активно набирает популярность. Но понимать HTTP/1.1 критически важно — инструменты разработчика, curl и многие библиотеки по-прежнему показывают HTTP в его классическом текстовом виде.

HTTP и TCP

HTTP работает поверх TCP. Сначала браузер устанавливает TCP-соединение (трёхстороннее рукопожатие с сервером на порт 80), затем внутри этого соединения передаёт HTTP-запрос. Сервер обрабатывает запрос и в том же TCP-соединении отправляет HTTP-ответ.

С HTTP/1.1 Keep-Alive одно TCP-соединение может обслужить несколько HTTP-запросов подряд (например, загрузка HTML-страницы, затем CSS, затем картинок). Без Keep-Alive на каждый ресурс открывалось бы новое TCP-соединение.

HTTP-сессия на примере

Когда ты набираешь http://example.com в браузере, происходит:

  1. DNS разрешает example.com в IP-адрес 93.184.216.34.
  2. Браузер устанавливает TCP-соединение с 93.184.216.34 на порт 80.
  3. Браузер отправляет HTTP-запрос: GET / HTTP/1.1.
  4. Сервер присылает HTTP-ответ: HTTP/1.1 200 OK и HTML-страницу.
  5. Браузер читает HTML, видит <img src="logo.png"> и <link href="style.css">.
  6. Браузер отправляет ещё HTTP-запросы за картинкой и стилями (в том же TCP-соединении).
  7. Все ресурсы загружены, страница отрисована. TCP-соединение закрывается (или остаётся открытым для следующих запросов).

Вся эта цепочка от нажатия Enter до готовой страницы занимает 0.5–3 секунды.

Проверь себя

  1. Кто инициирует HTTP-общение: клиент или сервер?
  2. На каком порту по умолчанию работает HTTP?
  3. Сколько HTTP-запросов нужно для загрузки страницы с 10 картинками?
<details> <summary>Ответы</summary>
  1. Всегда клиент (браузер). Сервер только отвечает на запросы, сам он их не инициирует.
  2. Порт 80 для HTTP, порт 443 для HTTPS.
  3. Как минимум 11: один за HTML-страницей и 10 за картинками. Плюс могут быть запросы за CSS, JavaScript, шрифтами и другими ресурсами, упомянутыми в HTML.
</details>

Что унести с урока

  • HTTP — протокол прикладного уровня для передачи гипертекста. Работает по схеме «запрос → ответ».
  • Работает поверх TCP (порт 80 для HTTP, 443 для HTTPS).
  • Прошёл эволюцию от HTTP/0.9 до HTTP/3. HTTP/2 и HTTP/3 — современные стандарты.
  • Одно TCP-соединение с Keep-Alive может обслужить много HTTP-запросов.

В следующем уроке разберём фундаментальное свойство HTTP — отсутствие состояния. Что это значит и как с этим справляются.

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике