HTTP:完整指南
浏览器和服务器如何通信、HTTP 与 HTTPS 有何不同、TLS 是什么、版本 HTTP/1.1、HTTP/2、HTTP/3,以及代码 200、404、500 的含义。
简单来说什么是 HTTP
HTTP (HyperText Transfer Protocol) — это язык общения между вашим браузером и веб-сервером. Когда вы вводите example.com в адресной строке, происходит примерно такой диалог:
Браузер → Сервер: GET / HTTP/1.1
Host: example.com
User-Agent: Chrome/124
Accept: text/html
Сервер → Браузер: HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
<html>...</html>
Браузер отправляет HTTP-запрос (Request), сервер отвечает HTTP-ответом (Response). Всё взаимодействие построено на этом простом принципе «запрос-ответ».
HTTP — протокол прикладного уровня в модели OSI. Он работает поверх TCP (по умолчанию порт 80) или TLS (тогда это HTTPS, порт 443).
Ключевые свойства HTTP
- Текстовый (в HTTP/1.1): запросы и ответы читаемы как текст. Это удобно для отладки, но небезопасно.
- Без состояния (stateless): каждый запрос независим. Сервер не помнит предыдущие запросы без cookies/sessions.
- Расширяемый: можно добавлять свои заголовки, методы, коды ответов.
- Клиент-серверный: инициатор — всегда клиент (браузер). Сервер не отправляет данные без запроса (кроме Server-Sent Events и WebSockets).
HTTP 与 HTTPS 有何不同?
HTTPS (HTTP Secure) — это HTTP, работающий поверх TLS. Данные шифруются до отправки и расшифровываются после получения. Перехватить «посередине» можно, но прочитать — нельзя.
Что меняется в HTTPS
| Аспект | HTTP | HTTPS |
|---|---|---|
| Порт | 80 | 443 |
| Шифрование | Нет | TLS 1.2 / 1.3 |
| Сертификат | Не нужен | X.509 от CA (Let's Encrypt, Sectigo и др.) |
| Скорость | Быстрее (без оверхеда) | Чуть медленнее (handshake ~200-500 мс) |
| SEO | Штраф от Google | Бонус к ранжированию |
| Доверие | «Не защищено» | Замок в адресной строке |
| Перехват | Любой на пути видит всё | Только каша |
С 2017 года Google Chrome помечает все HTTP-сайты как «Не защищено». С 2018 года HTTP-сайты теряют позиции в поиске. С 2023 года большинство браузеров блокируют HTTP-формы с паролями и платёжными данными.
Сейчас HTTPS — это не опция, а обязательный минимум. Получить сертификат бесплатно: наш SSL Check покажет, насколько корректно настроен TLS на вашем сайте.
TLS 的工作原理
TLS (Transport Layer Security) — криптографический протокол, обеспечивающий три вещи:
- Шифрование — никто не прочитает данные при перехвате.
- Аутентификация — вы уверены, что общаетесь именно с тем сайтом.
- Целостность — данные не подменены по пути.
TLS Handshake (установка соединения)
Перед первым HTTP-запросом клиент и сервер «здороваются» и договариваются о ключах. Упрощённо (TLS 1.3, 1-RTT):
- Client Hello. Браузер отправляет список поддерживаемых шифров, версию TLS, случайное число.
- Server Hello + Certificate + Finished. Сервер выбирает шифр, отправляет свой сертификат (X.509), подтверждение.
- Проверка сертификата. Браузер проверяет, что сертификат:
- выдан доверенным CA (из встроенного списка),
- не просрочен,
- совпадает с доменом,
- не отозван (CRL/OCSP).
- Обмен ключами. Браузер и сервер генерируют общий сессионный ключ (X25519 / ECDHE). Даже если перехватят handshake — ключ не узнают.
- Шифрованное соединение. Дальнейший HTTP-трафик шифруется симметричным AES-256-GCM или ChaCha20-Poly1305.
Весь процесс занимает 0.5-1.5 RTT (round-trip time), то есть 50-200 мс до первого байта. На TLS 1.3 это быстрее, чем на TLS 1.2.
Проверить, какие версии TLS поддерживает ваш сайт: наш SSL Check покажет сертификат, цепочку, поддерживаемые протоколы, шифры.
Версии TLS
- TLS 1.0 / 1.1 (1999/2006) — устарели, уязвимы. Браузеры отключили в 2020-2023.
- TLS 1.2 (2008) — рабочая лошадка, поддерживается всеми. Безопасна при правильной настройке.
- TLS 1.3 (2018) — последняя версия. Быстрее, безопаснее, нет уязвимостей 1.2. Поддержка: Chrome 70+, Firefox 63+, Safari 12.1+. ~70% сайтов в 2025.
版本:HTTP/1.1、HTTP/2、HTTP/3
HTTP/1.1 (1997) — классика
Каждый запрос — отдельное TCP-соединение (или 6 параллельных). Один файл = один запрос. Для страницы с 50 картинками, JS и CSS — десятки соединений, задержки на каждый.
Главная проблема: head-of-line blocking — пока один запрос не обработан, следующий ждёт.
HTTP/2 (2015) — революция
Одно TCP-соединение, по нему — мультиплексирование множества запросов «одновременно». Сжатие заголовков (HPACK), server push (сервер угадывает, что понадобится).
Главные фичи:
- Бинарный протокол (вместо текстового) — быстрее парсить.
- Мультиплексирование — все запросы и ответы идут параллельно.
- Сжатие заголовков (HPACK) — экономия трафика.
- Server push — сервер шлёт ресурсы до запроса (на практике оказался неэффективным и deprecated).
- Приоритизация потоков — CSS грузится раньше картинок.
Реальный эффект: страница грузится в 1.5-2 раза быстрее, особенно на мобильных.
HTTP/3 (2022) — следующая ступень
Главное отличие: HTTP/3 работает поверх QUIC (UDP), а не TCP. Это решает проблему head-of-line blocking на уровне транспорта.
Преимущества HTTP/3:
- 0-RTT handshake — при повторном подключении данные идут в первом же пакете.
- Нет TCP head-of-line blocking — потеря одного пакета не блокирует остальные.
- Лучше на мобильных — переключение Wi-Fi → 4G без разрыва (connection ID).
- Встроенное шифрование — TLS 1.3 обязателен, нельзя отключить.
Поддержка: ~30% сайтов в 2025, в основном крупные (Google, YouTube, Facebook, Cloudflare). Браузеры все поддерживают с 2020-2021.
| Параметр | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|
| Год | 1997 | 2015 | 2022 |
| Транспорт | TCP | TCP | QUIC (UDP) |
| Шифрование | Опционально | Опционально (но везде с TLS) | Обязательно (TLS 1.3) |
| Мультиплексирование | Нет | Да | Да + нет HoL blocking |
| Сжатие заголовков | Нет | HPACK | QPACK |
| Скорость | Базовая | ×1.5-2 | ×2-3 (особенно на мобильных) |
Какая версия у вашего сайта: наш HTTP Headers покажет версию в ответе сервера.
HTTP 方法:GET、POST、PUT、DELETE
Каждый HTTP-запрос имеет метод, указывающий, какое действие нужно выполнить. Основные:
| Метод | Назначение | Идемпотентный | Безопасный |
|---|---|---|---|
| GET | Получить ресурс | ✅ | ✅ |
| HEAD | Как GET, но без тела (проверить заголовки) | ✅ | ✅ |
| POST | Создать ресурс или отправить данные | ❌ | ❌ |
| PUT | Заменить ресурс целиком | ✅ | ❌ |
| PATCH | Частично обновить ресурс | ❌ | ❌ |
| DELETE | Удалить ресурс | ✅ | ❌ |
| OPTIONS | Узнать, какие методы поддерживает сервер | ✅ | ✅ |
Идемпотентный метод — можно выполнить много раз, результат тот же. GET, PUT, DELETE — идемпотентные. POST — нет (каждый POST может создать новый заказ).
Безопасный метод — не должен менять состояние на сервере. GET, HEAD, OPTIONS — безопасные.
Примеры:
- Открыли главную —
GET / - Ввели логин/пароль —
POST /loginс телом{email, password} - Удалили запись —
DELETE /posts/42 - Обновили профиль —
PATCH /users/meс{name: 'Новое имя'}
响应代码:2xx、3xx、4xx、5xx
Каждый HTTP-ответ начинается с кода состояния. Первая цифра — класс:
1xx — информационные (редко видны)
100 Continue— сервер принял первую часть запроса, можно отправлять остальное101 Switching Protocols— переключение на WebSocket
2xx — успех
200 OK— всё хорошо (стандартный ответ на GET)201 Created— ресурс создан (ответ на POST/PUT)204 No Content— успех, но тела нет (типичный ответ на DELETE)206 Partial Content— частичный контент (для загрузок с докачкой)
3xx — перенаправления
301 Moved Permanently— ресурс навсегда переехал (передаёт SEO-вес)302 Found— временное перенаправление (часто для POST → GET после отправки формы)303 See Other— смотри другой URL (для POST-redirect-GET паттерна)304 Not Modified— не изменилось (используется с кешем, If-Modified-Since)307 Temporary Redirect— как 302, но сохраняет метод308 Permanent Redirect— как 301, но сохраняет метод
4xx — ошибка клиента (ваша вина)
400 Bad Request— синтаксическая ошибка в запросе401 Unauthorized— нужна аутентификация (Basic, Bearer)403 Forbidden— аутентификация есть, но прав нет404 Not Found— ресурс не найден (самая частая ошибка)405 Method Not Allowed— метод не поддерживается для этого URL408 Request Timeout— сервер устал ждать410 Gone— ресурс удалён навсегда (важно для SEO)413 Payload Too Large— тело запроса слишком большое418 I'm a teapot— шуточный код из RFC 2324 (Hyper Text Coffee Pot Control Protocol)429 Too Many Requests— слишком много запросов (rate limit)
5xx — ошибка сервера (не ваша вина)
500 Internal Server Error— общая ошибка (часто: баг в коде)501 Not Implemented— сервер не поддерживает функцию502 Bad Gateway— nginx не может достучаться до бэкенда503 Service Unavailable— сервер перегружен или на обслуживании504 Gateway Timeout— бэкенд не отвечает вовремя
Увидеть коды и заголовки любого URL: наш Server Response.
标题:它们的重要内容
Каждый HTTP-запрос и ответ содержит заголовки — метаинформацию. Самые важные:
Заголовки запроса (от клиента)
Host— к какому домену обращение (обязательный в HTTP/1.1)User-Agent— какой браузер/ОСAccept— какие форматы понимает клиент (text/html, application/json)Accept-Language— предпочитаемые языки (ru-RU, ru, en)Accept-Encoding— поддержка сжатия (gzip, br, deflate)Cookie— данные для аутентификации/сессииAuthorization— токен (Bearer ...) для APIReferer— с какой страницы пришли (для аналитики)
Заголовки ответа (от сервера)
Content-Type— MIME-тип (text/html, application/json, image/png)Content-Length— размер тела в байтахSet-Cookie— установить cookie у клиентаCache-Control— правила кеширования (max-age=3600, no-cache)Location— куда перенаправить (для 3xx)Server— какой сервер (nginx, Apache) — часто скрывают из соображений безопасностиStrict-Transport-Security— HSTS, принудительно HTTPSContent-Security-Policy— CSP, защита от XSSX-Frame-Options— защита от clickjacking
Посмотреть заголовки вашего или чужого сайта: наш HTTP Headers.
HTTP 请求和响应结构
HTTP-запрос (Request)
GET /article/123 HTTP/1.1 ← стартовая строка (метод, путь, версия)
Host: example.com ← заголовки
User-Agent: Mozilla/5.0 (...)
Accept: text/html,application/json
Accept-Language: ru-RU,ru;q=0.9
Cookie: session=abc123
Connection: keep-alive
{тело запроса — обычно для POST/PUT}
HTTP-ответ (Response)
HTTP/1.1 200 OK ← стартовая строка (версия, код, текст)
Content-Type: text/html; charset=utf-8 ← заголовки
Content-Length: 1234
Set-Cookie: session=xyz789; HttpOnly
Cache-Control: max-age=300
Strict-Transport-Security: max-age=31536000
<!DOCTYPE html> ← тело ответа
<html>
<head>...</head>
<body>...</body>
</html>
安全性:HTTPS 保护什么
Когда вы заходите на сайт по HTTPS, вы получаете три гарантии:
1. Конфиденциальность
Весь трафик зашифрован. Ни провайдер, ни Wi-Fi в кафе, ни государственный DPI не видят, какие страницы вы открываете и что вводите. Видят только IP сервера и объём трафика.
2. Целостность
Данные не подменены по пути. Если кто-то на маршруте изменит байт в HTTP-ответе — TLS это обнаружит, и браузер покажет ошибку.
3. Аутентификация
Вы точно подключились к google.com, а не к поддельному сайту с похожим доменом. Благодаря сертификату, подписанному доверенным CA.
Что HTTPS НЕ защищает
- От провайдера: он видит, к каким IP вы подключаетесь (даже по HTTPS). Это не решается HTTPS, нужно использовать VPN или Tor.
- От самого сайта: если вы вводите пароль на фишинговом сайте с валидным сертификатом — HTTPS вас не спасёт. Всегда проверяйте домен в адресной строке.
- От MITM с корневым сертификатом: если в системе установлен «левый» корневой сертификат (антивирус, корпоративный прокси, государство), TLS можно перехватить.
- От утечек DNS: HTTPS шифрует содержимое, но DNS-запросы (какой домен) идут отдельно. Используйте DNS-over-HTTPS (наш гайд по DNS).
Инструменты ip.brazya.ru
- HTTP Headers — посмотреть все заголовки запроса и ответа любого URL.
- Server Response — коды ответов, время загрузки, цепочка редиректов.
- SSL Check — проверить TLS-сертификат, цепочку, поддерживаемые версии и шифры.
- Meta Tags — посмотреть Security Headers (CSP, HSTS, X-Frame-Options) на сайте.
- Site Analyzer — комплексный анализ: HTTP, SSL, SEO, производительность.
- Site Load Time — замерить, сколько грузится ваш сайт и на каком этапе тормозит.
- File Load Time — время загрузки конкретного файла (JS, CSS, картинки).
Часто задаваемые вопросы
Что такое HTTP простыми словами?
HTTP (HyperText Transfer Protocol) — это правила, по которым ваш браузер и сервер сайта обмениваются данными. Когда вы открываете страницу, браузер отправляет HTTP-запрос «дай мне главную страницу», сервер отвечает «вот HTML». Это как диалог по заранее оговорённому формату.
Чем HTTP отличается от HTTPS?
HTTPS — это HTTP + шифрование (TLS/SSL). В HTTP данные идут открытым текстом: кто-то на пути может прочитать пароли, сообщения, номера карт. В HTTPS всё зашифровано: даже если перехватят — увидят только кашу. Сейчас HTTPS обязателен для любого сайта — Google отмечает HTTP-сайты как «Не защищено».
Что такое HTTP/2 и HTTP/3?
HTTP/1.1 — классика с 1997 года, по одному запросу за раз. HTTP/2 (2015) — мультиплексирование, сжатие заголовков, server push. Страница грузится в 2-3 раза быстрее. HTTP/3 (2022) — поверх UDP (QUIC), решает проблему head-of-line blocking, ещё быстрее на мобильных. Сейчас HTTP/2 поддерживают ~70% сайтов, HTTP/3 — ~30%.
Что такое TLS и как он работает?
TLS (Transport Layer Security) — протокол шифрования, лежащий в основе HTTPS. Работает в 3 этапа: 1) клиент и сервер договариваются о шифрах (TLS handshake), 2) обмениваются сертификатами для аутентификации, 3) устанавливают сессионный ключ и шифруют весь трафик. TLS 1.3 (2018) — быстрее handshake, только безопасные шифры, нет уязвимостей старых версий.
Что означают коды 200, 301, 404, 500?
Коды HTTP делятся на 5 классов: 1xx — информационные, 2xx — успех (200 OK, 201 Created), 3xx — перенаправления (301 Moved Permanently, 302 Found, 304 Not Modified), 4xx — ошибка клиента (400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests), 5xx — ошибка сервера (500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable, 504 Gateway Timeout).
Безопасен ли HTTP для отправки паролей?
Нет, категорически нет. HTTP передаёт всё открытым текстом — пароль, email, номер карты, сообщения. Любой на пути (Wi-Fi в кафе, провайдер, государственный DPI) увидит. Всегда проверяйте, что в адресной строке https:// и есть замочек. Если сайта нет на HTTPS — вводить пароли нельзя. Браузеры с 2017 года помечают HTTP-формы как «небезопасные».
Можно ли прослушать HTTPS-трафик?
В теории — нет, если всё настроено правильно (TLS 1.3, валидные сертификаты). На практике — есть MITM через установку корневого сертификата (например, корпоративный прокси, антивирус Kaspersky). Также государства могут выдавать себя за сайт через BGP hijack + фейковый сертификат (практически не встречается). Если в браузере нет ошибки сертификата — соединение защищено.
👉 Посмотреть HTTP-заголовки → — узнайте версию HTTP, сервер, кеширование, security headers любого сайта.