Как работает протокол HTTP?

«Как работает протокол HTTP?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP (HyperText Transfer Protocol) — это протокол прикладного уровня модели OSI, основанный на схеме «запрос-ответ» для передачи данных между клиентом (например, браузером) и сервером.

Основной цикл работы:

  1. Клиент устанавливает TCP-соединение с сервером (обычно на порт 80 для HTTP или 443 для HTTPS).
  2. Клиент отправляет HTTP-запрос, который включает:
    • Метод (GET, POST, PUT, DELETE и др.).
    • Путь к ресурсу (URI).
    • Версию протокола (HTTP/1.1, HTTP/2).
    • Заголовки (Host, User-Agent, Accept).
    • Тело запроса (опционально, для методов POST, PUT).
  3. Сервер обрабатывает запрос и формирует ответ, который содержит:
    • Код состояния (200 OK, 404 Not Found, 500 Internal Server Error).
    • Заголовки (Content-Type, Content-Length).
    • Тело ответа (HTML, JSON, изображение и т.д.).
  4. Соединение может быть закрыто или сохранено для последующих запросов (keep-alive).

Пример обмена:

// Запрос клиента
GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html

// Ответ сервера
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 1234

<!DOCTYPE html>
<html>...</html>

Ключевые характеристики:

  • Stateless (без состояния): Каждый запрос независим. Состояние сессии поддерживается через механизмы вроде cookies.
  • Текстовый формат: Заголовки и метаданные передаются в виде текста, что удобно для отладки.
  • Расширяемость: Поддерживает кастомные заголовки и методы.
  • HTTPS: Защищённая версия HTTP, где трафик шифруется с помощью TLS/SSL поверх TCP.