Ответ
HTTP (HyperText Transfer Protocol) — это протокол прикладного уровня с следующими фундаментальными свойствами:
-
Без состояния (Stateless). Каждый запрос от клиента к серверу должен содержать всю информацию, необходимую для его понимания. Сервер не хранит контекст сессии между запросами (для управления состоянием используются механизмы вроде cookies, токенов или сессий на стороне приложения).
-
Текстовый (в HTTP/1.1) или бинарный (в HTTP/2, HTTP/3) формат. Исходные версии протокола используют читаемый текст, что упрощает отладку. Современные версии перешли на бинарные фреймы для повышения производительности.
-
Клиент-серверная архитектура. Четкое разделение ролей: клиент инициирует запрос, сервер его обрабатывает и возвращает ответ.
-
Единообразие интерфейса (Uniform Interface). Определяется использованием:
- Ресурсов и URI — каждый ресурс имеет уникальный адрес.
- Методов запросов —
GET,POST,PUT,DELETE,PATCH,HEAD,OPTIONS. - Представлений ресурсов — данные передаются в формате (JSON, XML, HTML), не привязанном к их внутреннему хранению на сервере.
-
Система кодов состояния. Ответ сервера всегда содержит числовой код, указывающий на результат обработки запроса (например,
200— успех,404— не найдено,500— внутренняя ошибка сервера).
Пример HTTP/1.1 запроса и ответа:
# ЗАПРОС (Request)
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
# ОТВЕТ (Response)
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 1234
<!DOCTYPE html>
<html>...</html>