DNS, TCP, TLS
↑ 1.1 Как работает веб и браузер · → Следующая
Зачем это на собесе
Базовый вопрос «что происходит, когда вы открываете сайт» начинается с DNS, TCP и TLS. Нужно уметь объяснить каждый шаг и его стоимость.
Объяснение
Перед первым HTTP-запросом браузер устанавливает соединение:
| Шаг | Что делает | Стоимость |
|---|---|---|
| DNS | превращает имя example.com в IP-адрес (кэш браузера → ОС → рекурсивный резолвер → корневые/TLD/авторитативные серверы) | 1 RTT и больше без кэша |
| TCP (3-way handshake) | SYN → SYN-ACK → ACK, надёжное упорядоченное соединение | 1 RTT |
| TLS 1.3 | согласование шифров и ключей, проверка сертификата | 1 RTT (0-RTT при возобновлении) |
| HTTP-запрос | сам запрос и ответ | 1 RTT + время сервера |
sequenceDiagram participant B as Браузер participant D as DNS participant S as Сервер B->>D: example.com? D-->>B: 93.184.216.34 B->>S: SYN S-->>B: SYN-ACK B->>S: ACK + ClientHello S-->>B: ServerHello + сертификат B->>S: HTTP GET /
Ускорение: dns-prefetch, preconnect, keep-alive и HTTP/2 (одно соединение на много запросов), HTTP/3 (QUIC поверх UDP: нет head-of-line blocking на уровне транспорта, быстрее установка).
<link rel="preconnect" href="https://cdn.example.com" crossorigin>
<link rel="dns-prefetch" href="https://api.example.com">Нюансы и подводные камни
- Каждый новый домен — новый DNS + TCP + TLS: не дробите ресурсы на десятки доменов.
- DNS-кэш определяется TTL записи; смена IP не мгновенна.
- HTTPS обязателен: без него недоступны Service Worker, Geolocation и др.
- Сертификат проверяется по цепочке доверия и SAN; ошибка → предупреждение браузера.
- HSTS заставляет браузер использовать только HTTPS.
Практика
- Откройте DevTools → Network → Timing и найдите DNS, Connect, SSL.
- Добавьте
preconnectк API-домену и сравните время первого запроса. - Проверьте сертификат сайта (замок → сведения) и цепочку доверия.
Вопросы с ответами
Зачем TCP handshake?
Синхронизирует последовательности и подтверждает готовность обеих сторон к обмену.
Чем TLS 1.3 лучше 1.2?
Быстрее (1 RTT), убраны устаревшие шифры, обязательная прямая секретность.
Что такое preconnect?
Подсказка браузеру заранее выполнить DNS, TCP и TLS к домену.