Разработка системы удаленной компиляции | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 18 мая, печатный экземпляр отправим 22 мая.

Опубликовать статью в журнале

Авторы: , , ,

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

Опубликовано в Молодой учёный №27 (317) июль 2020 г.

Дата публикации: 05.07.2020

Статья просмотрена: 53 раза

Библиографическое описание:

Горелов, Б. Р. Разработка системы удаленной компиляции / Б. Р. Горелов, Д. А. Балавнев, Т. О. Шергин, М. Л. Киндулов. — Текст : непосредственный // Молодой ученый. — 2020. — № 27 (317). — С. 32-34. — URL: https://moluch.ru/archive/317/72360/ (дата обращения: 07.05.2024).



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

Ключевые слова: удаленная разработка, сокеты, TLS.

Сейчас на рынке можно найти много готовых решений, позволяющих вести удаленную разработку и в том числе производить удаленную компиляцию. Условно решения данной задачи можно разделить на несколько классов. Один из них — это полноценные интегрированные среды разработки (IDE), предоставляющие широкие возможности, в том числе удаленную разработку (например NetBeans, CLion). К сожалению, часто для комфортной работы с большим проектом в таком приложении требуется мощный компьютер.

Другим классом решений являются утилиты, автоматизирующие сборку, с функционалом распределенных вычислений (например FASTBuild, IncrediBuild, Distcc). При наличии большого количества вычислительных мощностей данные утилиты многократно ускоряют процесс компиляции и сборки программного обеспечения, что является их главным плюсом. Среди недостатков можно отметить требование серьезной настройки программного окружения, узкий круг поддерживаемых языков (чаще всего только С/С++).

Для устранения недостатков существующих подходов, а также для обеспечения простоты и безопасности использования была разработана собственная система, представляющая из себя консольное клиент-серверное приложение, разрабатываемое на языке С под OC Linux. Ее работа состоит из нескольких этапов:

  1. Инициализация соединения клиента с сервером
  2. Архивация и сжатие выбранных файлов (опционально)
  3. Инициализация работы протокола TLS (опционально)
  4. Отправка данных на сервер
  5. Компиляция файлов / сборка проекта
  6. Отправка результата клиенту.

Для всех сетевых взаимодействий был использован зарекомендовавший себя интерфейс сокетов Беркли. Сокет позволяет управлять сетевым адресом, транспортом (то есть выбирать протокол транспортного уровня), а также предоставляет базовые операции ввода вывода (открытие/закрытие соединения, отправка/получение данных). В качестве протокола транспортного уровня при создании сокета было решено использовать TCP, так как в отличие от UDP он обеспечивает надежную доставку данных. Для того, чтобы отслеживать несколько клиентских сокетов, не блокируясь на них, использовался мультиплексор select. Он работает как обработчик прерываний, который активируется, как только на любой из сокетов приходят какие-либо данные. Если запрос пришел на исходный серверный сокет, он трактуется как запрос на новое соединение. Иначе происходит взаимодействие с уже существующим клиентом.

: Интерфейс сокетов Беркли, мультиплексор select

Рис. 1: Интерфейс сокетов Беркли, мультиплексор select

Для удобства пользователя была добавлена возможность архивации данных. Если требуется обработать 1–2 файла, не составляет труда ввести их имена. В противном случае, этот процесс может быть трудоемким, поэтому вместо файла пользователь может указать папку с файлами, содержащими исходный код. В этом случае с помощью архиватора tar создается архив. Далее при помощи утилиты gzip производится сжатие. В полученном виде информацию можно удобно и быстро передать на сервер для последующей работы.

Поскольку компилируемая программа может представлять коммерческий интерес, в разрабатываемую систему была добавлена возможность шифрования данных. Для этих целей использовалась широко известная криптографическая библиотека с открытым исходным кодом OpenSSL. Использованный в системе протокол TLS версии 1.2 является стандартом на рынке и гарантирует что данные, передаваемые между сервером и клиентом, защищены и не повреждены. TLS использует асимметричные алгоритмы шифрования. Рассмотрим процесс установки соединения. После того, как стороны договорились использовать TLS, согласование деталей соединения происходит с помощью представленной на Рис. 2 процедуры рукопожатия. В начале клиент отправляет запрос на установление безопасного соединения и указывает в нем доступный ему набор шифров и хэш функций. Сервер выбирает шифр и хэш-функцию, отправляет подтверждение, а также свой цифровой сертификат, содержащий имя сервера, публичный ключ и название центра сертификации. Затем в случае, если клиент подтвердил действительность сертификата, он шифрует случайное число публичным ключом сервера и отправляет его. Последним этапом сервер расшифровывает переданное случайное число своим приватным ключом и обе стороны с помощью данного числа генерируют сеансовый ключ для последующего шифрования и дешифрования данных во время сеанса. Таким образом обеспечивается защита данных даже в случае, если они были перехвачены третьей стороной.

Процедура рукопожатия TLS

Рис. 2. Процедура рукопожатия TLS

Были протестированы базовый и расширенный функционал приложения. Создан каталог с тестами и версиями системы для отслеживания изменений в работе приложения. В базовом режиме на сервер передавались однофайловые и многофайловые проекты. Тесты подразумевали как корректный пользовательский ввод, так и нет (например, содержащий ошибки в названиях файлов). Для тестирования расширенного функционала были выбраны проекты и разной структурой. Тесты показали, что текущая версия системы без ошибок работает с проектами с одноуровневой структурой, обработка многоуровневых проектов требует участия пользователя.

Благодаря тому, что основной функционал приложения написан на языке C, есть возможность реализовать кроссплатформенную версию приложения. Для этого потребуется доработать модуль архивации и добавить аналоги системных вызовов для соответствующих платформ.

Литература:

  1. W. Richard Stevens; Bill Fenner & Andrew M. Rudoff (2003). Unix Network Programming, Volume 1: The Sockets Networking API (3rd Edition). Addison-Wesley Professional.
  2. Advanced Programming in the UNIX environment, third edition, W. Richard Stevens and Stephen A. Rago, Addison-Wesley, 2013
  3. Postel, Jon, «Transmission Control Protocol — DARPA Internet Program Protocol Specification», RFC 793 , DARPA, September 1981.
  4. Berkeley sockets — URL: https://en.wikipedia.org/wiki/Berkeley_sockets
  5. OpenSSL Cryptography and SSL/TLS toolkit — URL: https://www.openssl.org
  6. SSL/TLS cryptographic protocols — URL: https://en.wikipedia.org/wiki/Transport_Layer_Security
Основные термины (генерируются автоматически): TLS, удаленная разработка, IDE, TCP, UDP, безопасность использования, Интерфейс сокетов Беркли, процедура рукопожатия, транспортный уровень, удаленная компиляция.


Ключевые слова

TLS, удаленная разработка, сокеты

Похожие статьи

Роль протокола TCP в современных компьютерных сетях.

Логическое TCP-соединение однозначно идентифицируется парой сокетов.

Протокол TCP обеспечивает обмен сегментами в обе стороны. В связи с этим на каждой из них имеются

Для урегулирования процедуры отправления сегментов на основе наполненности буферов каждая...

Протокол TACACS+ | Статья в журнале «Молодой ученый»

TACACS + похож на RADIUS (удаленный доступ к набору номера на пользовательском сервере) с несколькими ключевыми отличиями.

С подключением TCP ориентированный протокол более надежный, это делает более надежным выбором транспортного протокола.

Сравнение некоторых модификаций протокола TCP с ARTCP

Использование стартового значения CWND>1 может увеличить эффективность виртуального ТСР-канала.

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

Модель системы передачи данных с использованием...

Транспортный и сеансовый уровень (четвертый и пятый уровень). Создание защищенных виртуальных сетей на транспортном и сеансовом

Стек протоколов TCP/IP включает в себя: транспортный и сетевой уровень. Пакет UDP состоит из порта отправителя (16 байт), порта...

Методика измерения пропускной способности в сетях TCP/IP

Требуется HTTP сервер на удалённом сервере и привилегии суперпользователя.

Утилита abget требует HTTP сервер на удалённом сервере и привилегии суперпользователя, а что

...форматах, получать журналы из сети удаленно через UDP, TCP или TLS / SSL на всех.

Показатели угроз безопасности на уровнях модели OSI

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

Сравнительный обзор сетевых интерфейсов для коммутации...

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

TCP также является одним из основных протоколов транспортного уровня.

Анализ системы мультиплексирования данных в распределенных...

Транспортный и сеансовый уровень (четвертый и пятый уровень). Создание защищенных виртуальных сетей на транспортном и сеансовом

Система мультиплексирования трафика может быть реализована в стеке TCP/IP с использованием транспортного протокола TCP.

Организация сбора технологических данных с буровой и передачи...

Интерфейс основного окна представлен на (Рис 1). Окно состоит из элементов настройки и индикации работы программы. Все элементы основного окна программы объединены в логические группы — блоки. В блоке Данные станции выполняется настройка чтения данных...

Метод анализа сетей IPv4 и IPv6 | Статья в журнале...

...форматах, получать журналы из сети удаленно через UDP, TCP или TLS / SSL на всех. С правильным оборудованием пропускная способность этой

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

Похожие статьи

Роль протокола TCP в современных компьютерных сетях.

Логическое TCP-соединение однозначно идентифицируется парой сокетов.

Протокол TCP обеспечивает обмен сегментами в обе стороны. В связи с этим на каждой из них имеются

Для урегулирования процедуры отправления сегментов на основе наполненности буферов каждая...

Протокол TACACS+ | Статья в журнале «Молодой ученый»

TACACS + похож на RADIUS (удаленный доступ к набору номера на пользовательском сервере) с несколькими ключевыми отличиями.

С подключением TCP ориентированный протокол более надежный, это делает более надежным выбором транспортного протокола.

Сравнение некоторых модификаций протокола TCP с ARTCP

Использование стартового значения CWND>1 может увеличить эффективность виртуального ТСР-канала.

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

Модель системы передачи данных с использованием...

Транспортный и сеансовый уровень (четвертый и пятый уровень). Создание защищенных виртуальных сетей на транспортном и сеансовом

Стек протоколов TCP/IP включает в себя: транспортный и сетевой уровень. Пакет UDP состоит из порта отправителя (16 байт), порта...

Методика измерения пропускной способности в сетях TCP/IP

Требуется HTTP сервер на удалённом сервере и привилегии суперпользователя.

Утилита abget требует HTTP сервер на удалённом сервере и привилегии суперпользователя, а что

...форматах, получать журналы из сети удаленно через UDP, TCP или TLS / SSL на всех.

Показатели угроз безопасности на уровнях модели OSI

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

Сравнительный обзор сетевых интерфейсов для коммутации...

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

TCP также является одним из основных протоколов транспортного уровня.

Анализ системы мультиплексирования данных в распределенных...

Транспортный и сеансовый уровень (четвертый и пятый уровень). Создание защищенных виртуальных сетей на транспортном и сеансовом

Система мультиплексирования трафика может быть реализована в стеке TCP/IP с использованием транспортного протокола TCP.

Организация сбора технологических данных с буровой и передачи...

Интерфейс основного окна представлен на (Рис 1). Окно состоит из элементов настройки и индикации работы программы. Все элементы основного окна программы объединены в логические группы — блоки. В блоке Данные станции выполняется настройка чтения данных...

Метод анализа сетей IPv4 и IPv6 | Статья в журнале...

...форматах, получать журналы из сети удаленно через UDP, TCP или TLS / SSL на всех. С правильным оборудованием пропускная способность этой

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

Задать вопрос