🎯 Зачем спрашивают
- Проверка понимания базовых сетевых принципов (насколько кандидат ориентируется в протоколах).
- Умение объяснить простыми словами, что такое HTTP и из чего состоит запрос.
📝 Ответ
HTTP (Hypertext Transfer Protocol) — это гипертекстовый протокол передачи данных прикладного уровня в сетевой модели OSI.
Создан для связи между браузерами и серверами, хотя в принципе HTTP может использоваться и для других целей.
HTTP традиционно работает поверх TCP, но может использоваться любой другой протокол транспортного уровня с гарантированной доставкой.
Структура
#1 Стартовая строка (Request Line)
Формат:
<Метод> <Путь> <Версия протокола>
Примеры:
GET /index.html HTTP/1.1 POST /api/login HTTP/1.1
- Метод — определяет действие
- Путь — URI ресурса (например
/products/123).
- Версия — чаще всего
HTTP/1.1илиHTTP/2.
Стартовая строка характерна для HTTP/1.x.
В HTTP/2 и HTTP/3 используется другая структура — псевдозаголовки).
#2 Заголовки (Headers)
Мета-информация, вкладываемая в запрос. Это пары «ключ: значение», которые уточняют запрос.
Пример:
Host: www.example.com User-Agent: Mozilla/5.0 Accept: text/html,application/xhtml+xml Content-Type: application/json X-Say-My-Name: Heisenberg
Некоторые важные:
Host— указывает домен (обязателен в HTTP/1.1).
User-Agent— информация о клиенте (браузере).
Accept— какие форматы ответа клиент может обработать.
Content-Type— формат тела запроса (если есть).
X-Say-My-Name— кастомный заголовок. Используйте как душе угодно
#3 Тело (Body)
Используется не всегда. Обычно в
POST, PUT, PATCH.Примеры:
- В
GETтело чаще всего отсутствует.
- В
POSTс формой (Content-Type: application/x-www-form-urlencoded):
username=alex&password=123
- В
POSTс JSON (Content-Type: application/json):
{ "username": "alex", "password": "123" }
Пример HTTP запроса:
Пример ответа:
⚖️ Компромиссы
✅ Плюсы | ❌ Минусы |
Простота и широкая поддержка — работает во всех браузерах и серверах без доп. настроек | Отсутствие шифрования — данные передаются в открытом виде |
Низкие накладные расходы — нет затрат на шифрование/дешифрование | Уязвимость для атак (перехват, MITM, подмена содержимого) |
Минимальные требования к инфраструктуре — не нужны TLS-сертификаты | Нет защиты конфиденциальности (логины, пароли, куки видны в сети) |
Хорошо работает с кэшами и прокси | Нет гарантии целостности данных (их можно изменить по пути) |
Стейтлес-природа — легко масштабировать | Современные браузеры и API часто блокируют HTTP (требуют HTTPS) |
Меньше задержка в простых сценариях | Не подходит для передачи чувствительных данных |
🔎 Встречные вопросы
- Что такое URI?
- Чем отличаются URI, URL и URN?
- Какие обязательные заголовки в HTTP/1.1?
- Какие версии протокола знаете?
🚩 Красные флаги
- HTTP — это протокол только для браузеров (игнорирование того, что он шире: API, сервисы).
- У GET-запроса никогда не бывает тела (категоричность, без уточнения, что стандарт не запрещает, но обычно не используется).
- Путает структуру: не упоминает стартовую строку или говорит, что заголовки «необязательны».
- Уверяет, что HTTP всегда = TCP и не знает про HTTP/3/QUIC.
- Не различает уровни модели (путает HTTP с TCP/IP или даже с DNS).
🛠 Практика
Поделать HTTP-запросы через curl / httpie / fetch
Есть API — http://httpbin.org
Выполните:
• GET-запрос, посмотреть заголовки ответа
• POST-запрос с данными формы / JSON
• Запрос с кастомными заголовками (например, X-My-Header)
• Отправить запрос с аутентификацией (Basic Auth)
• Отправить запрос с параметрами query string
📚 Источники / ссылки
MDN Web DocsHTTP | MDN

HTTP | MDN
Протокол передачи гипертекста (Hypertext Transfer Protocol - HTTP) - это прикладной протокол для передачи гипертекстовых документов, таких как HTML. Он создан для связи между веб-браузерами и веб-серверами, хотя в принципе HTTP может использоваться и для других целей. Протокол следует классической клиент-серверной модели, когда клиент открывает соединение для создания запроса, а затем ждёт ответа. HTTP - это протокол без сохранения состояния, то есть сервер не сохраняет никаких данных (состояние) между двумя парами "запрос-ответ". Несмотря на то, что HTTP основан на TCP/IP, он также может использовать любой другой протокол транспортного уровня с гарантированной доставкой.
- Книга «Компьютерные сети. Принципы, технологии, протоколы» (с) Viktor Olifer