Ответ
HTTP (HyperText Transfer Protocol) — это протокол прикладного уровня модели OSI, основанный на схеме «запрос-ответ» для передачи данных между клиентом (например, браузером) и сервером.
Основной цикл работы:
- Клиент устанавливает TCP-соединение с сервером (обычно на порт 80 для HTTP или 443 для HTTPS).
- Клиент отправляет HTTP-запрос, который включает:
- Метод (GET, POST, PUT, DELETE и др.).
- Путь к ресурсу (URI).
- Версию протокола (HTTP/1.1, HTTP/2).
- Заголовки (Host, User-Agent, Accept).
- Тело запроса (опционально, для методов POST, PUT).
- Сервер обрабатывает запрос и формирует ответ, который содержит:
- Код состояния (200 OK, 404 Not Found, 500 Internal Server Error).
- Заголовки (Content-Type, Content-Length).
- Тело ответа (HTML, JSON, изображение и т.д.).
- Соединение может быть закрыто или сохранено для последующих запросов (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.