← Назад к вопросам

Из чего состоит http протокол

1.0 Junior🔥 211 комментариев
#Браузер и сетевые технологии

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Структура HTTP протокола

HTTP (HyperText Transfer Protocol) — это протокол прикладного уровня, который строится на основе TCP/IP и предназначен для передачи данных между клиентом и сервером. HTTP имеет четко определённую структуру, которая состоит из нескольких основных компонентов.

Основные компоненты HTTP

1. Запрос (HTTP Request)

Каждый HTTP запрос состоит из трёх основных частей:

METHOD /path/to/resource HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Content-Type: application/json
Content-Length: 27

{"key": "value", "name": "John"}
  • Строка запроса (Request Line) — содержит метод (GET, POST, PUT, DELETE и т.д.), путь к ресурсу и версию протокола
  • Заголовки (Headers) — передают метаинформацию (User-Agent, Content-Type, Cookie и др.)
  • Пустая строка — разделяет заголовки и тело
  • Тело (Body) — опционально, содержит данные (при POST, PUT запросах)

2. Ответ (HTTP Response)

Сервер отправляет ответ в следующем формате:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 44
Set-Cookie: sessionId=abc123; Path=/

{"status": "success", "data": {"id": 1, "name": "John"}}
  • Строка состояния (Status Line) — версия HTTP, код состояния (200, 404, 500 и т.д.) и описание
  • Заголовки ответа (Response Headers) — информация о ответе (Content-Type, Set-Cookie и др.)
  • Пустая строка — разделитель
  • Тело ответа (Response Body) — содержит запрошенный ресурс (HTML, JSON, файл и т.д.)

Коды состояния

Коды группируются в пять категорий:

  • 1xx (Informational) — информационные (100 Continue)
  • 2xx (Success) — успех (200 OK, 201 Created, 204 No Content)
  • 3xx (Redirection) — перенаправление (301 Moved Permanently, 304 Not Modified)
  • 4xx (Client Error) — ошибка клиента (400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found)
  • 5xx (Server Error) — ошибка сервера (500 Internal Server Error, 502 Bad Gateway)

Методы HTTP

// GET — получить ресурс (безопасный, идемпотентный)
fetch("https://api.example.com/users/1", { method: "GET" })

// POST — создать новый ресурс
fetch("https://api.example.com/users", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ name: "John", email: "john@example.com" })
})

// PUT — полностью заменить ресурс
fetch("https://api.example.com/users/1", {
  method: "PUT",
  body: JSON.stringify({ name: "Jane", email: "jane@example.com" })
})

// PATCH — частично изменить ресурс
fetch("https://api.example.com/users/1", {
  method: "PATCH",
  body: JSON.stringify({ name: "Jane" })
})

// DELETE — удалить ресурс
fetch("https://api.example.com/users/1", { method: "DELETE" })

Важные заголовки

  • Content-Type — тип содержимого (application/json, text/html, image/png)
  • Content-Length — размер тела в байтах
  • Authorization — учётные данные (Bearer token, Basic auth)
  • Cookie — отправляет cookies на сервер
  • Set-Cookie — сервер устанавливает cookies у клиента
  • Cache-Control — инструкции кеширования
  • CORS (Access-Control-*) — кросс-доменные запросы

HTTP/2 и HTTP/3

Хотя базовая структура остаётся похожей, более новые версии оптимизируют передачу:

  • HTTP/2 — бинарный формат, мультиплексирование, push
  • HTTP/3 — использует QUIC вместо TCP, меньше задержек

Пример полного цикла

// Запрос
fetch("https://jsonplaceholder.typicode.com/posts/1")
  .then(response => {
    console.log(response.status); // 200
    console.log(response.headers.get("Content-Type")); // application/json
    return response.json();
  })
  .then(data => console.log(data))
  .catch(error => console.error(error));

Таким образом, HTTP — это простой текстовый протокол, построенный на парадигме запрос-ответ, где каждый запрос содержит метод, путь и заголовки, а ответ — код состояния, заголовки и тело. Эта структура остаётся неизменной вот уже почти 30 лет и является основой всего современного веба.

Из чего состоит http протокол | PrepBro