Networking Reference

Пакет от компьютера до сайта: что происходит на каждом шаге

Полный путь сетевого пакета: DNS, TCP-рукопожатие, TLS, HTTP-запрос, маршрутизация, обработка на сервере. Карта: какая ошибка означает что сломалось.

Проверено: —

Вы нажимаете Enter после ввода адреса. Через 200 миллисекунд страница открылась. Что именно произошло за это время — и почему иногда не происходит? Проходим весь путь пакета от браузера до сервера и обратно.

Этап 1. Браузер разбирает URL

Браузер разбирает https://asknews.ru/goryachie-klavishi-windows/:

  • https:// — протокол: зашифрованное HTTP соединение через TLS
  • asknews.ru — доменное имя хоста
  • /goryachie-klavishi-windows/ — путь к ресурсу на сервере

Этап 2. DNS: имя → IP

Браузер не умеет подключаться к именам — только к IP. Запрос к DNS-резолверу: «какой IP у asknews.ru?»

Если записи нет в кэше — рекурсивный запрос: локальный резолвер → корневые серверы → TLD-серверы → авторитетный NS домена → A-запись с IP.

Результат: asknews.ru → 185.230.63.171. DNS-ответ кэшируется на TTL секунд.

Этап 3. TCP: установка соединения

Браузер знает IP и порт (443 для HTTPS). Начинается TCP-рукопожатие (3-way handshake):

  1. Клиент → Сервер: SYN (хочу подключиться к 185.230.63.171:443)
  2. Сервер → Клиент: SYN-ACK (принял, готов)
  3. Клиент → Сервер: ACK (начинаем)

Если сервер не отвечает — Connection refused (порт закрыт) или Connection timed out (пакеты не доходят, например firewall).

Этап 4. TLS: шифрование соединения

После TCP-рукопожатия идёт TLS-рукопожатие. Стороны согласовывают:

  • Версию TLS (1.2 или 1.3)
  • Алгоритм шифрования (cipher suite)
  • Сервер передаёт TLS-сертификат
  • Браузер проверяет сертификат: выдан доверенным CA? Для нужного домена? Не просрочен?
  • Генерируется общий сессионный ключ для шифрования

Если сертификат недействителен — браузер показывает «Ваше соединение не защищено».

Этап 5. HTTP-запрос

Через зашифрованный канал браузер отправляет HTTP-запрос:

GET /goryachie-klavishi-windows/ HTTP/2
Host: asknews.ru
User-Agent: Mozilla/5.0 ...
Accept: text/html
Accept-Language: ru-RU

Этап 6. Маршрутизация: пакет идёт по сети

HTTP-запрос разбивается на TCP-сегменты, те — на IP-пакеты. Каждый пакет проходит через несколько маршрутизаторов (узлов). Каждый маршрутизатор читает IP-адрес назначения и решает куда отправить пакет дальше.

# Посмотреть путь пакета до сервера
traceroute asknews.ru          # Linux/macOS
tracert asknews.ru             # Windows

# Каждая строка — один hop (узел на пути)

Этап 7. Сервер обрабатывает запрос

На сервере: пакеты проходят через сетевой стек ОС → Nginx принимает соединение на порту 443 → передаёт запрос в PHP-FPM → PHP выполняет WordPress → WordPress строит HTML → Nginx отдаёт ответ.

Этап 8. Ответ возвращается

Nginx отправляет HTTP-ответ: статус 200, заголовки, тело (HTML-страница). Данные снова делятся на пакеты и идут обратно тем же путём или другим — маршрутизация в интернете не обязана быть симметричной.

Где ломается: карта проблем

СимптомСкорее всего сломалось
«Сервер не найден»DNS — имя не резолвится
«Соединение отклонено»TCP: порт закрыт или сервис не запущен
«Время ожидания истекло»Firewall блокирует пакеты, нет маршрута
«Небезопасное соединение»TLS: сертификат недействителен
«502 Bad Gateway»Nginx работает, backend (PHP/приложение) — нет
«403 Forbidden»Сервер отвечает, но нет прав на ресурс
«404 Not Found»Сервер отвечает, путь не найден
Сайт медленныйDNS latency, TLS handshake, медленный backend или большие ресурсы

Итог

Путь пакета: DNS → TCP handshake → TLS handshake → HTTP запрос → маршрутизация → обработка на сервере → ответ. Понимание этой цепочки позволяет по сообщению об ошибке сразу определить на каком этапе возникла проблема.