Суть Чтение реального вывода инструментов — захват tcpdump, трассировка dig, TLS-рукопожатие curl и согласование HTTP/3 через Alt-Svc — и диагностика того, что байты на самом деле говорят.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 14 min
Производственная диагностика — это чтение вывода инструментов, а не цитирование RFC. Четыре реальных захвата охватывают весь стек: трасса пакетов, обход резолвера, TLS-рукопожатие и апгрейд до HTTP/3. Прочитай каждый и скажи, что на самом деле произошло на проводе.
Цель
Отработай senior-приём: открой захват, найди строку, которая рассказывает историю, и переведи сырой вывод протокола в одно предложение о том, что сделала сеть и что делать дальше.
Что показывают эти четыре пакета и какова доминирующая стоимость до сих пор?
Heads-up Прикладные данные ещё не обменивались. TLS даже не завершён — 517-байтный PSH это ClientHello. Байты рукопожатия пока не несут HTTP.
Heads-up Это SYN, SYN-ACK, ACK, затем ClientHello — чистое рукопожатие, а не ретрансмиссии. Ретрансмиссии показали бы повторяющиеся seq и бо́льшие паузы.
Heads-up IP уже разрешён до этих пакетов; DNS идёт отдельным запросом (обычно UDP/53) и здесь не появляется. Это чистый TCP плюс начало TLS.
Захват 2 — dig +trace
$ dig +trace www.example.com. 518400 IN NS a.root-servers.net.com. 172800 IN NS a.gtld-servers.net.example.com. 172800 IN NS a.iana-servers.net.www.example.com. 60 IN A 93.184.216.34;; Received 56 bytes from 199.43.135.53#53(a.iana-servers.net) in 48 ms
Викторина
Completed
У финальной A-записи TTL 60. Сайт стоит за CDN. Во что обходится этот TTL в 60 секунд и правильный ли это дефолт?
Heads-up dig +trace обходит кэши, чтобы показать обход делегирования, но реальные клиенты соблюдают TTL 60 с. Низкий TTL действительно увеличивает, как часто пользователи платят за холодный DNS.
Heads-up TTL — это длительность кэширования, а не размер. Меньший TTL означает более частые lookup'ы — больше стоимости холодного DNS, а не быстрее разрешение.
Heads-up TTL управляет временем жизни в кэше; он никак не связан с тем, выполняется ли DNSSEC-валидация. Компромисс здесь — скорость failover против повторной задержки lookup'а.
Это TLS 1.3-рукопожатие. Какие два факта senior читает с него сразу?
Heads-up Возобновлённое рукопожатие пропускает Certificate и CERT verify и использует PSK. Присутствие этих сообщений означает полное 1-RTT-рукопожатие со свежей проверкой сертификата.
Heads-up Последняя строка показывает, что сервер принял h2 — ALPN успешен и выбрал HTTP/2. Никакого отката тут нет.
Heads-up Это AEAD-шифр TLS 1.3, и каждая строка помечена TLSv1.3. Версия в трассе однозначна.
Первый ответ пришёл по HTTP/2, но рекламирует h3. Почему браузер на самом первом визите всё равно доходит до страницы по HTTP/2?
Heads-up Это by design. Нельзя узнать, что HTTP/3 доступен, до подключения, поэтому первое соединение использует TCP, а Alt-Svc рекламирует h3 для будущих соединений.
Heads-up Вторая команда с --http3 доходит до HTTP/3 нормально. Первая использовала дефолт (h2 по TCP), потому что h3 ещё не был обнаружен через Alt-Svc.
Heads-up ma (max-age) — это длительность в секундах — 24 часа — на которую кэшируется объявление Alt-Svc, а не счётчик запросов.
Итог
Чтение стека по его собственному выводу: tcpdump показывает SYN/SYN-ACK/ACK плюс ClientHello, так что виден один RTT TCP до любых TLS-данных; dig +trace раскрывает обход делегирования и TTL, решающий, как часто повторяется стоимость холодного DNS; TLS-трасса curl говорит полное-vs-возобновлённое (наличие Certificate) и какой ALPN-протокол победил; а заголовок Alt-Svc раскрывает, что HTTP/3 обнаруживается на предыдущем h2-соединении и апгрейдится до QUIC на следующем. Навык — найти ту единственную строку, что рассказывает историю, и превратить её в действие.