awesome-everything EN
↑ Обратно к восхождению

Сети и протоколы

Версии HTTP: чтение заголовков и трейсов

Суть Читай реальные HTTP-заголовки, curl-трейс и gRPC-обмен; предсказывай поведение и выбирай фикс с наибольшим рычагом, который senior-инженер сделает первым.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 14 min

Дампы трафика и заголовки ответов — это место, где HTTP-проблемы реально диагностируются. Прочитай обмен, предскажи, что сделает браузер, CDN или QUIC-стек, затем выбери фикс, к которому senior-инженер тянется первым.

Цель

Отработай цикл, который ты запускаешь в каждом HTTP-инциденте: прочитай заголовки и трейс, предскажи поведение на уровне протокола и потянись за структурным фиксом раньше, чем что-либо тюнить.

Сниппет 1 — реклама Alt-Svc

$ curl -v https://api.example.com/health
* ALPN: server accepted h2
< HTTP/2 200 OK
< alt-svc: h3=":443"; ma=86400
< x-quic-version: draft-29
< content-type: application/json
{"status":"ok"}

$ curl --http3-only https://api.example.com/health
* QUIC handshake fail: protocol violation: invalid initial packet
Викторина

Сервер рекламирует h3 через Alt-Svc, но хендшейк HTTP/3 фейлится. В чём дело и какой первый фикс?

Сниппет 2 — закэшированный профиль пользователя

GET /api/user/profile HTTP/2
authorization: Bearer eyJ...userA

HTTP/2 200 OK
content-type: application/json
cache-control: max-age=300
{"id":"userA","email":"a@example.com"}
Викторина

Пользователи время от времени видят чужие профили. Читая только эти заголовки, какой баг и верный фикс?

Сниппет 3 — ответ gRPC

HTTP/2 200 OK
content-type: application/grpc

(DATA-фреймы: сериализованное protobuf-сообщение)

(хвостовой HEADERS-фрейм)
grpc-status: 5
grpc-message: user not found
Викторина

HTTP-статус 200, но grpc-status 5 (NOT_FOUND). Почему результат в трейлере и что ломается, если браузер вызовет это напрямую?

Сниппет 4 — подсказки приоритета

:method = GET
:path = /hero.jpg
priority = u=5

:method = GET
:path = /critical.css
priority = u=1
Викторина

Оба запроса приходят одновременно по HTTP/3. Читая заголовки Priority из RFC 9218, какой сервер отправит первым и каково правило?

Итог

Каждый HTTP-инцидент читается в заголовках и трейсах: подсказка Alt-Svc h3 при QUIC-стеке на драфте жжёт RTT на каждого клиента; пер-пользовательский ответ без private/no-store и Vary утекает через общий кэш; реальный исход gRPC живёт в хвостовом HEADERS-фрейме (200 на уровне HTTP) и требует gRPC-Web для браузеров; а urgency в RFC 9218 инвертирован — меньшее u срочнее. Читай трафик, предсказывай поведение протокола, затем применяй структурный фикс.

Продолжить восхождение ↑Версии HTTP: измерь HOL blocking и выкати HTTP/3-edge
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.