arrow_backНазад к полевым заметкам
NETWORKING Опубликовано 8 Aug 2026

Что означает "end-to-end" в компьютерных сетях?

Практический разбор сквозного соединения, почему оно нарушается в реальных сетях и как его проверить с помощью traceroute и проверок MTU.

Когда говорят, что соединение "end-to-end", имеют в виду, что данные проходят от исходного приложения прямо к приложению-адресату без того, чтобы какой-то промежуточный узел незаметно переписал или прервал их по дороге. Звучит просто, пока не начнёшь трассировать реальный путь пакета через NAT, firewalls, load balancers и proxies.

Принцип end-to-end

Эта идея из статьи 1984 года авторов Saltzer, Reed и Clark, которая утверждала, что определённые функции, такие как надёжность и шифрование, должны находиться на конечных точках сети, а не в её середине. Сама сеть должна просто пересылать пакеты. Конечные точки отвечают за проверку ошибок, повторную передачу и упорядочивание.

ТCP — самый ясный пример. Маршрутизаторы в середине не отслеживают номера последовательности и не подтверждают сегменты. Это работа двух хостов, на которых запущены TCP-стеки. Сетевой уровень (IP) просто обеспечивает доставку по принципу «лучшего усилия», а TCP на каждом конце исправляет потери или переупорядочивание.

Где end-to-end сегодня нарушается

Современные сети нарушают этот принцип постоянно, обычно по веским операционным причинам:

  • NAT переписывает исходный IP и порт, так что пакет, который видит сервер, — это не пакет, который отправил клиент.
  • TLS-terminating proxies и load balancers (как AWS ALB или nginx reverse proxy) завершают одну TCP/TLS-сессию и начинают новую. Реальной конечной точкой клиента становится proxy, а не app server.
  • Stateful firewalls отслеживают состояние соединения и могут отбросить пакеты, которые не соответствуют ожидаемым последовательностям, фактически встраивая себя в разговор.
  • CGNAT на сетях ISP означает, что много клиентов делят один public IP, что нарушает предположение, что IP соответствует одному хосту.

Это имеет практическое значение при отладке. Если пользователь сообщает, что «соединение разорвалось», нужно понять, разорвалось ли оно на его ноутбуке, домашнем маршрутизаторе, ISP, узле CDN, load balancer или на origin server. End-to-end мышление заставляет трассировать всю цепь вместо того, чтобы просто проверить логи своего сервера.

Проверка end-to-end подключения

Несколько инструментов, которые действительно показывают путь, а не просто успех/неудачу:

# Трассировать маршрут hop by hop
traceroute 8.8.8.8

# На Linux, MTR выдаёт постоянную статистику на hop
mtr google.com

# Проверить проблемы MTU, которые фрагментируют или молча роняют пакеты
ping -M do -s 1472 8.8.8.8

Эта последняя команда стоит хорошо знать. Отказы Path MTU discovery — это классическая проблема «выглядит как end-to-end подключение, но на самом деле нет». Маленькие пакеты вроде TCP SYN проходят нормально, но как только отправишь полноразмерный payload, какой-то hop в середине молча его роняет, потому что он слишком большой и firewall блокирует ICMP сообщение «fragmentation needed». Соединение зависает и все блейчат на приложение.

Для TCP специально, tcpdump или ss -ti на обоих концах показывает, действительно ли два хоста согласны, что у них открыто соединение:

ss -ti dst 203.0.113.5

Если одна сторона думает, что соединение ESTABLISHED, а другая ничего не показывает, что-то в середине (обычно firewall, завершивший idle соединение) молча его убило.

Почему это важно для безопасности

End-to-end шифрование — это версия того же концепта, релевантная для безопасности. TLS между браузером и CDN edge — это не то же самое, что TLS между браузером и origin server. Если CDN завершает TLS и пересылает plaintext (или новое TLS соединение) на backend, у тебя два отдельных зашифрованных hop, а не один непрерывный зашифрованный канал. Это нормально для большинства случаев, но если работаешь с чем-то чувствительным, нужно знать точно, где происходит расшифровка и кто может видеть plaintext на каждом hop.

Та же логика применяется к VPN. «Full tunnel» VPN даёт тебе end-to-end шифрование от устройства к VPN exit node, но соединение от exit node к реальному destination server — отдельный hop со своими свойствами безопасности.

Практический вывод

Когда кто-то говорит, что сетевой путь end-to-end, спроси: end-to-end между какими именно двумя точками? Между клиентом и load balancer? Между load balancer и app server? Названия реальных конечных точек превращают смутное сетевое утверждение в нечто, что можно проверить с помощью packet capture.

Если хочешь глубже разобраться в трассировке реального трафика и чтении packet captures, посмотри сегменты по Wireshark и основам TCP/IP на платформе DEFENSE_GRID от Korra Studio.

Написано с помощью ИИ, проверено и опубликовано Михалом Пильхом (CISSP), Korra Studio.

Готовы пойти дальше?

Это одна заметка из базы знаний Korra Studio — платформа сочетает каждую тему с наставничеством один на один.

Начать бесплатноarrow_forward