--- title: HTTP, HTTPS и HTTP/3 status: processing type: concept tags: [web, network, networking, protocols, http, https, http3] created: 2026-06-04 updated: 2026-06-05 source: "[[00_базовые_понятия.pdf]]" aliases: - HTTP, HTTPS и HTTP/3 --- # HTTP, HTTPS и HTTP/3 HTTP (HyperText Transfer Protocol) — прикладной протокол для доступа к ресурсам WWW. Клиент и сервер обмениваются отдельными сообщениями: клиент отправляет HTTP-запрос, сервер возвращает HTTP-ответ. ## Главное - HTTP сам по себе не хранит состояние между запросами. Сессии поверх HTTP обычно поддерживаются через cookies или токены. - HTTP/1.0 часто открывал новое TCP-соединение на каждый обмен запросом и ответом. - HTTP/1.1 добавил постоянные соединения и конвейерную обработку. - HTTP/2 использует бинарные фреймы, сжатие заголовков и мультиплексирование нескольких потоков в одном TCP-соединении. - HTTPS — это HTTP поверх TLS. Он защищает конфиденциальность, целостность и аутентичность соединения. - HTTP/3 переносит семантику HTTP на QUIC поверх UDP и уменьшает проблему head-of-line blocking. ## HTTP-запрос Стартовая строка запроса состоит из метода, цели запроса и версии протокола: ```http GET /index.html HTTP/1.1 ``` Основные методы: | Метод | Что делает | |-------|------------| | `GET` | Получить ресурс; параметры часто передаются в query string. | | `POST` | Отправить данные на сервер: форма, JSON, файл. | | `HEAD` | Получить только заголовки, как у `GET`, без тела ответа. | | `PUT` | Создать или полностью заменить ресурс. | | `PATCH` | Частично изменить ресурс. | | `DELETE` | Удалить ресурс. | | `OPTIONS` | Узнать доступные методы/возможности сервера. | ## HTTP-сообщение И запрос, и ответ имеют общую структуру: 1. Стартовая строка. 2. Заголовки. 3. Пустая строка. 4. Необязательное тело. Заголовок записывается как `Имя-Заголовка: значение`. Имя не чувствительно к регистру. Частые заголовки запроса: - `Host` — конкретный домен или IP, к которому обращается клиент. - `User-Agent` — сведения о клиенте: браузер, ОС, версия. - `Accept` — какие типы данных клиент готов принять. - `Cookie` — cookies клиента. - `Authorization` — данные аутентификации, например Bearer-токен. ## HTTP-ответ Строка статуса ответа содержит версию протокола, код состояния и текстовое пояснение: ```http HTTP/1.1 200 OK ``` Классы кодов: - `1xx` — информационные. - `2xx` — успешная обработка. - `3xx` — перенаправление. - `4xx` — ошибка клиента. - `5xx` — ошибка сервера. Частые коды: - `200 OK` — запрос успешно обработан. - `302 Found` — временное перенаправление. - `400 Bad Request` — некорректный запрос. - `403 Forbidden` — доступ запрещён. - `404 Not Found` — ресурс не найден. - `500 Internal Server Error` — внутренняя ошибка сервера. ## HTTPS HTTPS использует TLS поверх TCP-соединения. Порт по умолчанию — `443`, у обычного HTTP — `80`. Базовый смысл TLS: - сервер предъявляет сертификат; - клиент проверяет сертификат через центр сертификации; - стороны согласуют ключи; - дальнейший трафик шифруется и защищается от подмены. SSL — устаревшее название семейства протоколов, в современных системах фактически используется TLS, но термин "SSL-сертификат" всё ещё распространён. ## HTTP/3 HTTP/3 работает поверх QUIC, а QUIC работает поверх UDP. QUIC объединяет надёжную доставку, шифрование TLS 1.3 и управление потоками. Ключевые отличия: | HTTP/2 | HTTP/3 | |--------|--------| | Поверх TCP | Поверх UDP/QUIC | | TLS-хендшейк отдельно | TLS 1.3 встроен в QUIC | | Потеря TCP-пакета может блокировать все потоки | Потеря пакета влияет только на конкретный поток | | Соединение привязано к IP/порту | QUIC поддерживает connection migration через connection ID | HTTP/3 не меняет смысл методов, заголовков и кодов ответа. Меняется транспортный слой. ## Простыми словами для экзамена HTTP — это правила разговора браузера и сервера. Запрос отвечает на вопрос: "что клиент хочет?". Ответ отвечает: "что сервер вернул?". Пример GET: ```http GET /posts/?page=2 HTTP/1.1 Host: example.com ``` Пример POST: ```http POST /login/ HTTP/1.1 Host: example.com Content-Type: application/x-www-form-urlencoded username=ivan&password=secret ``` Главное различие: - `GET` обычно получает данные; параметры видны в URL. - `POST` обычно отправляет данные в теле запроса; подходит для форм, создания объектов, логина. HTTPS — это не "другой HTTP", а HTTP внутри защищённого TLS-соединения. Порт HTTP — `80`, HTTPS — `443`. HTTP/3 использует QUIC поверх UDP. Для экзамена достаточно помнить: HTTP/3 уменьшает задержки и проблему блокировки потоков при потере пакетов. ## Связи - [[TCP vs UDP]] - [[IP-адрес]] - [[DNS]] - [[URI, URL, URN]] - [[Сетевые порты]]