Принципы организации Интернета
Интернет соединяет независимые сети через IP-маршрутизацию. Приложение обычно видит имя и URL, но запрос проходит несколько разных механизмов.
Путь запроса
Для адреса со scheme https, host api.example.test и path /orders:
- Клиент разбирает scheme, host, port и path.
- Resolver получает IP для host и учитывает DNS cache.
- Маршрутизаторы доставляют пакеты к сети назначения.
- Устанавливается TCP connection или QUIC connection.
- TLS подтверждает identity сервера и создаёт защищённый канал.
- HTTP передаёт request.
- Reverse proxy/load balancer выбирает backend.
- Ответ проходит обратно; часть пути может отличаться.
URL → DNS → route → transport → TLS → HTTP → proxy → applicationАдрес и порт
IP адресует сетевой интерфейс, порт — transport endpoint процесса. NAT заменяет адреса/порты на границе сети. Поэтому адрес, видимый приложению, может отличаться от исходного; доверять X-Forwarded-For можно только от контролируемого proxy.
Packet, connection, request
- IP передаёт packets без гарантии надёжности.
- TCP даёт упорядоченный byte stream и retransmission.
- QUIC строит защищённые streams поверх UDP.
- HTTP определяет сообщения и semantics.
Один connection может обслужить много HTTP requests. Один request может породить много downstream requests — именно так возникает сетевой N+1.
Latency budget
Общая задержка состоит из DNS, connection/TLS setup, очередей, работы приложения и downstream. Если endpoint последовательно вызывает пять сервисов по 200 ms, пользователь ждёт уже около секунды без учёта остального. Parallel calls уменьшают wall time, но увеличивают одновременную нагрузку и усложняют отказ.
Типичные сбои
- DNS ещё возвращает старый адрес после переключения.
- Firewall пропускает DNS, но закрывает application port.
- Proxy timeout короче timeout приложения.
- MTU или packet loss проявляются как странные медленные соединения.
- Приложение верит поддельным forwarded headers от прямого клиента.
Вопросы для собеседования
Что делает router? Выбирает следующий hop для IP packet по таблице маршрутизации.
Чем port отличается от IP? IP выбирает host/interface, port — transport endpoint приложения.
Почему DNS-изменение не мгновенно? Ответы кэшируются до TTL и иногда дольше из-за локальной политики.
Может ли request пройти без нового TCP handshake? Да, через уже существующее persistent connection.
Почему timeout должен учитывать всю цепочку? Каждый downstream расходует общий пользовательский latency budget.