Транспортный уровень и управление перегрузками
Транспортный уровень расширяет доставку между хостами до связи между процессами, предлагая приложениям либо надежные, упорядоченные, управляемые по перегрузкам потоки байтов (TCP), либо легковесные дейтаграммы без установления соединения (UDP), в то время как управление перегрузками регулирует скорости отправки, чтобы общая сеть не коллапсировала.
Definition
Транспортный уровень — это уровень протокола, который обеспечивает логическую связь между прикладными процессами, работающими на разных хостах, добавляя такие службы, как мультиплексирование, надежная доставка, управление потоком и управление перегрузками, поверх доставки между хостами сетевого уровня.
Scope
Эта область охватывает сквозные транспортные службы: мультиплексирование и демультиплексирование данных для прикладных процессов, принципы надежной передачи данных по ненадежной сети (подтверждения, повторная передача, порядковые номера, скользящие окна), протокол управления передачей с установлением соединения и протокол пользовательских дейтаграмм без установления соединения, а также теорию и практику управления перегрузками. Она исключает маршрутизацию пакетов по сети (сетевой уровень) и прикладные протоколы, использующие транспортные службы (прикладной уровень).
Sub-topics
Core questions
- Как транспортный уровень доставляет данные правильному прикладному процессу посредством мультиплексирования и демультиплексирования?
- Как можно обеспечить надежную, упорядоченную доставку по ненадежной, подверженной потерям сети?
- Как работают механизмы установления соединения, управления потоком и надежности TCP?
- Когда приложению следует использовать UDP вместо TCP?
- Как управление перегрузками обнаруживает и реагирует на перегрузку сети, оставаясь при этом справедливым?
Key concepts
- мультиплексирование и демультиплексирование
- порты и сокеты
- надежная передача данных
- скользящее окно, возврат-N, выборочный повтор
- трехстороннее рукопожатие TCP
- управление потоком
- управление перегрузками
- аддитивное увеличение/мультипликативное уменьшение (AIMD)
- медленный старт и предотвращение перегрузок
- Протокол пользовательских дейтаграмм (UDP)
Key theories
- Надежная передача данных по ненадежному каналу
- Надежность строится на подтверждениях, таймерах повторной передачи, порядковых номерах и протоколах скользящего окна (возврат-N и выборочный повтор), которые обнаруживают и восстанавливаются после потерь, дублирования и изменения порядка, несмотря на ненадежную базовую сеть.
- Управление перегрузками TCP
- TCP определяет перегрузку по потере пакетов и регулирует свое окно отправки с помощью динамики аддитивного увеличения/мультипликативного уменьшения — медленного старта, предотвращения перегрузок и быстрого восстановления — для зондирования доступной пропускной способности, резко снижая скорость при потерях.
- Транспорт без установления соединения против транспорта с установлением соединения
- UDP предлагает тонкую службу без установления соединения, без настройки, надежности или управления перегрузками, минимизируя задержку и накладные расходы, в то время как TCP предлагает потоковый сервис с установлением соединения, надежный и управляемый по перегрузкам; выбор обменивает задержку и контроль на гарантии.
Clinical relevance
Поведение транспортного уровня определяет производительность почти каждого сетевого приложения: TCP надежно передает веб-страницы, электронную почту и файлы, в то время как UDP лежит в основе приложений с низкой задержкой, таких как DNS, голосовая связь и видео в реальном времени, а также многие игры. Управление перегрузками предотвращает коллапс Интернета под нагрузкой с конца 1980-х годов, и текущая работа над алгоритмами, такими как CUBIC и BBR, и протоколами, такими как QUIC, продолжает настраивать баланс между задержкой, пропускной способностью и справедливостью.
History
TCP и IP изначально были одним протоколом в разработке Серфа-Кана 1974 года и позже были разделены, при этом UDP (RFC 768, 1980) был добавлен для приложений, нуждающихся только в базовой службе дейтаграмм. После серии коллапсов перегрузок в раннем Интернете работа Вана Джейкобсона 1988 года представила алгоритмы медленного старта и предотвращения перегрузок, которые остаются основой управления перегрузками TCP, усовершенствованные за десятилетия в такие варианты, как Reno, CUBIC и BBR.
Debates
- Управление перегрузками на основе потерь против управления на основе задержек и моделей
- Классический TCP определяет перегрузку по потере пакетов, что может приводить к недоиспользованию высокоскоростных каналов с большой задержкой и поздней реакции, что стимулирует разработку алгоритмов на основе задержек и моделей, таких как BBR; продолжаются дебаты о справедливости и возможности развертывания, когда такие алгоритмы сосуществуют с алгоритмами на основе потерь.
Key figures
- Van Jacobson
- Jon Postel
- Vinton Cerf
- Sally Floyd
Related topics
Seminal works
- kurose2021
- jacobson1988
- rfc9293
Frequently asked questions
- Когда следует использовать UDP вместо TCP?
- Используйте UDP, когда низкая задержка важнее гарантированной доставки, и вы можете терпеть или самостоятельно обрабатывать потери — например, для голосовой связи/видео в реальном времени, DNS-запросов или игр. Используйте TCP, когда вам нужна надежная, упорядоченная доставка и встроенное управление перегрузками, например, для веб-страниц, передачи файлов и электронной почты.
- Что на самом деле делает управление перегрузками?
- Управление перегрузками регулирует скорость, с которой отправитель вводит данные в сеть, на основе сигналов перегрузки, обычно потери пакетов или задержки. Отступая, когда сеть перегружена, и зондируя свободную пропускную способность в противном случае, оно поддерживает совокупный трафик близко к пропускной способности сети и примерно справедливо распределяет пропускную способность между потоками.