Поздравляем с Новым Годом!
   
Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: XXXIV Международной научно-практической конференции «Вопросы технических и физико-математических наук в свете современных исследований» (Россия, г. Новосибирск, 21 декабря 2020 г.)

Наука: Информационные технологии

Секция: Вычислительные машины, комплексы и компьютерные сети

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Белов Е.А., Пак В.В. АНАЛИЗ НЕДОСТАТКОВ ТРАНСПОРТНЫХ ПРОТОКОЛОВ В СОВРЕМЕННЫХ КОМПЬЮТЕРНЫХ СЕТЯХ И МЕТОДОВ ИХ УСТРАНЕНИЯ // Вопросы технических и физико-математических наук в свете современных исследований: сб. ст. по матер. XXXIV междунар. науч.-практ. конф. № 12(27). – Новосибирск: СибАК, 2020. – С. 5-9.
Проголосовать за статью
Дипломы участников
У данной статьи нет
дипломов

АНАЛИЗ НЕДОСТАТКОВ ТРАНСПОРТНЫХ ПРОТОКОЛОВ В СОВРЕМЕННЫХ КОМПЬЮТЕРНЫХ СЕТЯХ И МЕТОДОВ ИХ УСТРАНЕНИЯ

Белов Евгений Александрович

студент направления подготовки 09.04.01 Московского авиационного института (национального исследовательского университета),

РФ, г. Москва

Пак Владимир Вячеславович

ст. преподаватель кафедры «Вычислительные системы и технологии» филиала «Восход», Московского авиационного института (национального исследовательского университета),

РФ, г. Байконур

В современных компьютерных сетях используется стек протоколов TCP/IP, который включает два основных транспортных протокола для передачи данных – Transmission Control Protocol (TCP) и User Datagram Protocol (UDP).

Механизм TCP предоставляет поток данных с предварительной установкой соединения, осуществляет повторный запрос данных в случае потери данных и устраняет дублирование при получении двух копий одного пакета [1]. Особенностью данного протокола является гарантия доставки всех передаваемых пакетов, причём в том порядке, в котором они были переданы. Но, с другой стороны, в этом заключается недостаток – возможны задержки в передаче данных (и в целом низкая скорость обмена), поскольку в случае утери пакета необходимо приостанавливать передачу и дожидаться повторной отправки утерянного пакета.

UDP использует простую модель передачи, без неявных «рукопожатий» для обеспечения надёжности, упорядочивания или целостности данных [2]. Особенностью же данного протокола является минимальная задержка при обмене данными, но, ввиду отсутствия какого-либо контроля надёжности, пакеты могут теряться, дублироваться или приходить в произвольном порядке.

На момент своего утверждения (1980 – 1981 гг.) данные протоколы могли полностью удовлетворить все потребности в коммуникации между вычислительными машинами в сети. Однако со стремительным развитием глобальной сети Интернет и с появлением всё новых и новых онлайн-сервисов потребовалось нечто среднее между TCP и UDP. К числу таких сервисов можно отнести средства удалённого управления и администрирования, многопользовательские онлайн-игры, средства облачной синхронизации данных и др. Данные сервисы требуют как минимальные задержки и высокую скорость, так и надёжность при передаче данных.

Также особенностью подобных сервисов является то, что они нуждаются в приоритезации трафика не только по срочности доставки данных, но и по гарантии (надёжности) доставки данных. Можно классифицировать передаваемые данные по следующим классам гарантии доставки:

- «ненадёжные» – доставка и соблюдение очерёдности для данного класса не гарантируется, однако гарантируется исключение пакетов-дубликатов;

- «ненадёжные последовательные» – доставка для данного класса не гарантируется, однако дубликаты и пакеты вне очереди будут отброшены;

- «надёжные» – гарантируется доставка данного класса пакетов, однако соблюдение порядка отправки при получении не гарантируется;

- «надёжные упорядоченные» – гарантируется доставка и соблюдение очерёдности.

Так, например, в средствах удалённого управления передачу изображения рабочего стола можно отнести к классу «ненадёжные последовательные», поскольку потеря одного или нескольких пакетов в ходе передачи некритична, и устаревшие (неактуальные) пакеты вне очереди необходимо отбросить. А передачу команд удалённому компьютеру можно отнести к классу «надёжные упорядоченные», т.к. необходимо гарантировать доставку всех команд при соблюдении правильного порядка.

Поскольку существующие протоколы не позволяют осуществить такую приоритезацию, то одним из наиболее простых и очевидных методов решения данной проблемы является одновременное использование TCP и UDP в приложении. При этом служебный трафик, как правило, передаётся по протоколу TCP, а чувствительный к задержкам – по UDP. В данном подходе имеется ряд недостатков. Во-первых, недостатки самого UDP остаются – необходимо учитывать возможность потерь и дубликатов на более высоком уровне в приложении. Во-вторых, возникает необходимость в синхронизации двух соединений, что вместе с первым недостатком повышает сложность разработки приложения. В-третьих, использование двух соединений в некоторых случаях может потребовать дополнительных настроек на сетевом экране. В-четвёртых, с точки зрения операционной системы и сетевого оборудования это два независимых соединения, поэтому в случае нестабильного или перегруженного сетевого канала они могут оказывать негативное воздействие друг на друга, а вероятность потери пакетов увеличивается вдвое.

Другой, и наиболее правильный метод, – это реализация альтернативного транспортного протокола. Несмотря на то, что такой подход является трудозатратным, он позволит объединить достоинства TCP и UDP. Однако все современные устройства (компьютеры, смартфоны и др.) и сетевое оборудование (коммутаторы, маршрутизаторы и др.) работают только с двумя существующими протоколами, поэтому, как правило, реализация нового протокола осуществляется поверх UDP.

Проблема разработки протокола поверх UDP не нова и ранее решалась разными разработчиками. Имеет смысл рассмотреть следующие программные библиотеки: «RakNet» (от Jenkins Software), «GameNetworkingSockets» (от Valve Software) и «ENet» (от Lee Salzman).

RakNet – это высокопроизводительный сетевой API, разработанный для игр или других высокопроизводительных сетевых приложений [3]. Данная библиотека обладает достаточно широким функционалом, а именно: позволяет устанавливать защищённые соединения, гибко приоритезировать трафик по срочности передачи, по надёжности, по нескольким каналам внутри одного соединения, обладает дополнительными подключаемыми модулями для расширения возможностей. К недостаткам данной библиотеки можно отнести наличие уязвимостей, приводящих к возможным атакам типа «отказ в обслуживании», что делает её ненадёжной в использовании. Также на данный момент разработка «RakNet» прекращена.

GameNetworkingSockets – это базовый транспортный уровень для игр [4]. Это относительно новая библиотека, обладающая поддержкой IPv6, возможностью разделения и пересборки пакетов при необходимости, а также с возможностью установки peer-to-peer соединений. К недостаткам можно отнести:

- создана преимущественно для игровых приложений;

- недостаточная гибкость в приоритезации трафика по надёжности;

- отсутствие сжатия трафика.

ENet – сетевая библиотека надёжного UDP [5]. К достоинствам данной библиотеки можно отнести возможность динамического контроля используемой полосы пропускания, а также возможность использования нескольких каналов. Недостатками данной библиотеки являются ограниченные возможности приоритезации трафика по надёжности; отсутствие шифрования.

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

При разработке необходимо учесть следующие особенности: механизм установки соединения, т.е. «рукопожатия», а также его поддержания; способ установки защищённого соединения с использованием шифрования; осуществление гарантии доставки; дробление и слияние пакетов; методы и алгоритмы сжатия пакетов при необходимости. Поэтому удобно разделить транспортную логику на несколько так называемых слоёв, где каждый слой будет решать свою задачу. На рисунке 1 представлен пример такого разделения. Порядок обработки при передаче данных – сверху вниз, а при приёме данных – снизу вверх.

 

Рисунок 1. Слои транспортной логики

 

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

 

Список литературы:

  1. Transmission Control Protocol // Википедия URL: https://ru.wikipedia.org/wiki/Transmission_Control_Protocol (дата обращения: 29.11.2020).
  2. UDP // Википедия URL: https://ru.wikipedia.org/wiki/UDP (дата обращения: 29.11.2020).
  3. Документация // Jenkins Software URL: http://www.jenkinssoftware.com/raknet/manual/index.html (дата обращения: 29.11.2020).
  4. Game Networking Sockets // GitHub URL: https://github.com/ValveSoftware/GameNetworkingSockets (дата обращения: 29.11.2020).
  5. Домашняя страница ENet // ENet URL: http://enet.bespin.org/index.html (дата обращения: 29.11.2020).
Проголосовать за статью
Дипломы участников
У данной статьи нет
дипломов

Оставить комментарий