~ / blog / series / chto-proishodit-kogda-otkryvaesh-sayt

Что происходит, когда открываешь сайт

Цикл о пути одного запроса — от нажатия Enter до страницы на экране: DNS, маршрут, TCP, TLS и сертификаты, HTTP и обратная дорога. На живых замерах и захватах трафика собственного сайта, с командами, которые можно повторить у себя.

#Серверы 3 мин

Секунда между Enter и страницей: что происходит, когда открываешь сайт

Один запрос к сайту, разложенный по миллисекундам: DNS 36, TCP 28, TLS 128, ожидание сервера 310, загрузка 55. Почему сеть — самое быстрое в этой цепочке и почему второй запрос вдвое быстрее первого.

· · ·
#Серверы 4 мин

DNS: как имя сайта превращается в адрес

Никто не знает всех адресов: корень отправляет к зоне ru, зона ru — к серверам домена, и только они отвечают. Проходим цепочку командой dig +trace, разбираемся с TTL — 2 суток, 4 суток и 5 минут — и почему второй запрос занимает 0,6 мс.

· · ·
#Серверы 5 мин

DNS на практике: кэш, TTL и «сменил адрес, а открывается старое»

Почему после переезда сайт у части людей открывается на старом сервере, как кэшируется «такого имени нет», чем опасна забытая AAAA и запись «на всё», откуда SERVFAIL у оплаченного домена и почему браузер с DoH не видит файл hosts.

· · ·
#Серверы 4 мин

Адрес, порт и маршрут: как пакет находит сервер

IP везёт пакет до машины, порт — до программы. Читаем вывод mtr на реальном пути из 12 узлов: почему «???» со 100% потерь — не потери, где набираются 28 мс задержки и почему за CGNAT домашний сервер снаружи недоступен.

· · ·
#Серверы 4 мин

TCP-рукопожатие на живом захвате: SYN, SYN-ACK, ACK

Снимаем tcpdump один запрос к сайту и разбираем каждую строку: флаги, номера байтов, MSS 1460, масштаб окна. Рукопожатие заняло 29,2 мс — ровно один круг по сети, и почему сервер присылает ответ пачками.

· · ·
#Серверы 5 мин

Смотреть свой трафик: tcpdump и Wireshark без страха

Снимаем один запрос к сайту целиком — DNS, рукопожатие, TLS — и разбираем, что в HTTPS видит сторонний наблюдатель: адрес, имя сайта из SNI, размеры и время. Что спрятано: путь страницы, куки, содержимое и даже сертификат. Фильтры захвата против фильтров отображения и пять фильтров на каждый день.

· · ·
#Серверы 4 мин

TLS 1.3: рукопожатие за один круг и куда уходят 128 миллисекунд

Client Hello с половиной ключа, ответ сервера с сертификатом, подписью и Finished — и сразу запрос. Почему из 128 мс сеть заняла 29, а остальное — подпись ключом RSA 4096 на старом процессоре, что такое X25519MLKEM768 и почему сервер выбрал ChaCha20 вместо AES.

· · ·
#Серверы 4 мин

Откуда замок: сертификат, цепочка доверия и что проверяет браузер

Разбираем сертификат этого сайта: кому выдан, кто подписал, почему цепочка идёт через промежуточный центр, что браузер проверяет по шагам и почему 90 дней — это нормально. Плюс неполная цепочка, при которой браузер работает, а curl и интеграции падают.

· · ·
#Серверы 4 мин

Человек посередине: почему он не прочитает HTTPS — и когда всё-таки прочитает

Почему из открытых половин ключа посредник не вычислит секрет, почему без закрытого ключа сайта не сойдётся подпись, что даёт HSTS против первого запроса по HTTP и что всё равно видно на пути. И корпоративный корневой сертификат — законный способ читать весь HTTPS.

· · ·
#Серверы 5 мин

HTTP поверх всего: запрос, ответ и три версии протокола

Набираем HTTP-запрос руками через openssl и разбираем ответ по строчке: Host, коды, Vary, chunked. Сжатие уменьшает страницу с 44,9 до 8,8 КБ. Чем HTTP/2 с потоками лучше шести соединений HTTP/1.1 и зачем HTTP/3 ушёл с TCP на QUIC.

· · ·
#Серверы 4 мин

Обратная дорога: где на самом деле уходит время, пока открывается сайт

Одна страница из кэша и без него: 35 мс ожидания против 160–200, из которых сеть — 29. Почему сжатый HTML в 8,8 КБ приходит за один круг, сколько ресурсов браузер просит следом и почему каждый сторонний домен — это новое рукопожатие.

· · ·
#Серверы 5 мин

«Сайт не открывается»: проверка по уровням снизу вверх

Заключительная часть цикла — чек-лист с командами: DNS, маршрут, TCP, TLS, HTTP и браузер. Что значит каждый ответ, почему 80 открыт, а 443 нет — это путь, а не сервер, почему HTTPS нельзя проверять по голому IP, и одна строка curl, которая показывает, на каком шаге остановилось время.

· · ·

$ tail -f /blog

Не пропустите новые статьи

Пишу разборы по скорости сайтов, кэшу и разработке — на живых проектах и с цифрами. Подпишитесь, и ссылка на новую статью придёт сразу после выхода. Без рекламы и спама, отписаться — в один клик.

В Telegramодна кнопка «Старт» в боте

или на почту

связаться

Расскажите о задаче