Сети и протоколы#
Что происходит под HTTP-запросом: TCP/IP, UDP, DNS, TLS, версии HTTP, WebSocket и пулы соединений.
Оглавление#
Статьи идут в порядке чтения: от базы к деталям. Всего 7 статей.
- TCP/IP: модель, транспорт и что важно бэкендеру — TCP превращает ненадёжную сеть, где пакеты теряются, дублируются и приходят не по порядку, в надёжный поток байт.
- UDP и надёжность поверх UDP — UDP работает по принципу «отправил и забыл»: ни соединения, ни подтверждений, ни гарантии порядка.
- DNS: записи, резолвинг, кэширование, DNS в Go — DNS превращает имя в IP-адрес, спрашивая по цепочке: корневые серверы → серверы зоны
.com→ авторитетный сервер твоего домена. - Версии HTTP: 1.1, 2, 3 — Разница между версиями HTTP — не в возможностях протокола, а в том, как запросы упаковываются в соединение.
- TLS: handshake, сертификаты, mTLS, производительность — TLS решает три задачи сразу: трафик никто не прочитает, никто не подменит по дороге, и ты действительно говоришь с тем, за кого он себя выдаёт.
- WebSocket: upgrade, фреймы, масштабирование — WebSocket — постоянное двустороннее соединение: сервер может сам отправить сообщение клиенту, не дожидаясь запроса.
- Пулы соединений: http.Transport, БД, утечки — Пул соединений переиспользует уже установленные TCP-соединения, чтобы не платить за рукопожатие на каждом запросе.