Сетевые протоколы
TCP против UDP, структура HTTP-запроса/ответа и его версии, а также QUIC поверх HTTP/3.
3 вопросов
JuniorТеорияОчень частоИз каких частей состоит HTTP-запрос и ответ?
Из каких частей состоит HTTP-запрос и ответ?
HTTP — это текстовый протокол запрос-ответ. Запрос состоит из стартовой строки (метод, путь к ресурсу, версия протокола), затем хедеры, затем необязательное тело. Ответ той же формы, но в стартовой строке вместо метода и пути стоит код состояния. Коды группируются по классам — 1xx информационные, 2xx успех, 3xx перенаправление, 4xx ошибка клиента, 5xx ошибка сервера.
Типичные ошибки
- ✗Ставить код состояния в стартовую строку запроса
- ✗Забывать, что тело необязательно, а хедеры — это строки ключ-значение
- ✗Путать классы кодов состояния (2xx против 4xx против 5xx)
Уточняющие вопросы
- →Почему статику часто отдают с отдельного домена без cookie?
- →В чём разница между статусами 4xx и 5xx на практике?
JuniorТеорияЧастоЧем различаются TCP и UDP и когда вы бы выбрали UDP?
Чем различаются TCP и UDP и когда вы бы выбрали UDP?
TCP ориентирован на соединение и надёжен: устанавливает соединение, подтверждает данные и доставляет байты по порядку, из-за чего медленнее. UDP без соединения и шлёт независимые датаграммы, которые могут теряться, дублироваться или переупорядочиваться, но он быстрее, ведь пропускает подтверждения и поддерживает broadcast. UDP подходит для потокового аудио/видео, онлайн-игр и DNS, где скорость важнее гарантированной доставки.
Типичные ошибки
- ✗Менять местами, какой протокол с соединением и надёжный
- ✗Утверждать, что UDP гарантирует порядок или доставку
- ✗Думать, что выбор про шифрование, а не про надёжность против скорости
Уточняющие вопросы
- →Какие системные вызовы образуют жизненный цикл сокета TCP-сервера и клиента?
- →Как QUIC получает надёжность, работая поверх UDP?
MiddleТеорияРедкоЧто такое QUIC и как поверх него работает HTTP/3?
Что такое QUIC и как поверх него работает HTTP/3?
QUIC — транспортный протокол поверх UDP со встроенным TLS 1.3, независимыми мультиплексированными потоками и миграцией соединения. HTTP/3 гоняет HTTP поверх QUIC вместо TCP, поэтому потерянный пакет тормозит только свой поток — убирая head-of-line blocking из TCP в HTTP/2 — а соединение переживает смену IP через свой connection ID.
Типичные ошибки
- ✗Считать, что QUIC работает поверх TCP, а не UDP
- ✗Думать, что HTTP/3 всё ещё страдает от head-of-line blocking в стиле TCP
- ✗Упускать, что соединение QUIC переживает смену IP через connection ID
Уточняющие вопросы
- →Почему QUIC даёт более быстрое рукопожатие, чем установка TCP и TLS по отдельности?
- →Чем миграция соединения полезна мобильному клиенту при смене сети?