Что происходит при отправке HTTP-запроса от клиента к серверу?

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

Ответ

Процесс представляет собой последовательность шагов по протоколу TCP/IP и HTTP.

  1. Формирование запроса: Клиент (браузер, приложение) создаёт HTTP-сообщение, содержащее:
    • Метод (GET, POST, PUT, DELETE).
    • URL и путь к ресурсу.
    • Заголовки (Headers), например, Content-Type, Authorization.
    • Тело (Body) для методов POST/PUT.
  2. Установка соединения: Через TCP/IP выполняется «рукопожатие» (handshake) с сервером для установки безопасного канала (если используется HTTPS, поверх TLS).
  3. Маршрутизация и обработка: Запрос проходит через сеть (маршрутизаторы, DNS) и достигает целевого сервера. Серверное приложение (например, веб-фреймворк) обрабатывает запрос: выполняет бизнес-логику, обращается к базе данных.
  4. Формирование ответа: Сервер генерирует HTTP-ответ, который включает:
    • Статус-код (200 OK, 404 Not Found, 500 Internal Server Error).
    • Собственные заголовки.
    • Тело ответа (HTML, JSON и т.д.).
  5. Доставка и обработка: Ответ отправляется обратно клиенту, который его интерпретирует (рендерит страницу, обрабатывает данные).

Пример запроса и ответа:

// HTTP GET Запрос
GET /api/users/123 HTTP/1.1
Host: api.example.com
Accept: application/json

// HTTP Ответ
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 45

{
  "id": 123,
  "name": "Alice",
  "email": "alice@example.com"
}