Главная страница
Навигация по странице:

  • 1. Исследовательская часть 1.1 Цель разработки и основные решаемые задачи

  • 1.2 Современные средства решения поставленной задачи

  • 1.2.2 Hidden Administrator

  • 2.1.2 Алгоритм отправки файла с клиента на сервер

  • 2.1.3 Алгоритм получения сервером дерева файлов

  • 2.1.4 Алгоритм проверки существующих соединений

  • 2.3 Функциональная структура

  • 3. Технологическая часть 3.1 Средства программирования и отладки

  • 3.2 Основные структуры данных программного комплекса Протокол

  • 3.3 Описание работы приложения Начало работы

  • 3.4 Тестирование проекта

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


    Скачать 4.09 Mb.
    НазваниеКомпьютерные сети в настоящее время представляют собой сложные комплексы с множеством поддерживаемых протоколов передачи данных и управления, которые интенсивно совершенствуются
    Дата02.06.2022
    Размер4.09 Mb.
    Формат файлаrtf
    Имя файлаПример курсача 1.rtf
    ТипРеферат
    #566182

    Размещено на http://www.allbest.ru/Размещено на http://www.allbest.ru/Размещено на http://www.allbest.ru/Размещено на http://www.allbest.ru/Размещено на http://www.allbest.ru/Размещено на http://www.allbest.ru/Размещено на http://www.allbest.ru/

    Содержание
    Введение

    1. Исследовательская часть

    1.1 Цель разработки и основные решаемые задачи

    1.2 Современные средства решения поставленной задачи

    1.2.1 Radmin

    1.2.2 Hidden Administrator

    1.2.3 Anyplace Control

    2. Конструкторская часть

    2.1 Блок схемы алгоритмов

    2.1.1 Алгоритм приема команды клиентом

    2.1.2 Алгоритм отправки файла с клиента на сервер

    2.1.3 Алгоритм получения сервером дерева файлов

    2.1.4 Алгоритм проверки существующих соединений

    2.2 Диаграмма протокола

    2.3 Функциональная структура

    3. Технологическая часть

    3.1 Средства программирования и отладки

    3.2 Основные структуры данных программного комплекса

    3.3 Описание работы приложения

    3.4 Тестирование проекта

    Выводы

    Заключение

    Введение

    клиентский серверный сеть компьютер

    Компьютерные сети в настоящее время представляют собой сложные комплексы с множеством поддерживаемых протоколов передачи данных и управления, которые интенсивно совершенствуются. Компьютерные сети предоставляют пользователям сервисы, реализуемые в виде сетевых приложений. Одним из наиболее распространенных классов сетевых приложений являются клиент-серверные приложения [2], которые реализуются в виде серверной части, формирующей запросы к клиентам, и клиентской части, реагирующей на эти запросы (рис. 1.).
    

    Рис. 1. Клиент-серверное приложение.
    В данной работе предпринята попытка создания сетевого приложения, обеспечивающего возможность управления удаленной машиной. В качестве протокола обмена данными между клиентом и сервером предложен протокол, основанный на прямых командах серверной части к клиентской. Система поддерживает одновременную работу сервера с несколькими клиентами. Команды серверной части могут быть следующего вида:

    • Команда на выключение/перезагрузку компьютера клиента.

    • Команда на выключение монитора (только для стационарного компьютера).

    • Команда на выполнение в командной строке передаваемой инструкции.

    • Команда на отключение процесса.

    • Команда на передачу дерева файлов.

    • Команда на удаление файла.

    • Команда на переименование файла.

    • Команда на копирование файла.

    • Команда на перемещение файла.

    • Команда на получение файла.



    1. Исследовательская часть
    1.1 Цель разработки и основные решаемые задачи
    Главной целью данной работы является создание серверной и клиентской частей системы удаленного доступа с возможностью управления удаленной машиной по локальной или глобальной сетям.

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

    • Регистрация новых пользователей в системе.

    • Отправка сообщений-инструкций на удаленную машину.

    • Отправка корректных команд клиенту.

    • Сохранение в лог файл общей истории событий, а так же истории событий для каждого клиента в отдельности.

    • Отслеживание ошибок соединения и передачи (обработка исключительных ситуаций).

    Клиентская часть должна обеспечивать эффективное обслуживание серверных запросов и корректно выполнять посылаемые ей команды. К клиентской части предъявляются следующие требования:

    • Корректное реагирование на команды сервера.

    • Фиксированное время ответа и выполнение команд сервера.

    • Выполнение системных функций для компьютера (выключение/перезагрузка), сервисов (остановка/запуск) и файлов (копирование/вставка/переименование).

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

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

    Radmin – это программа удаленного администрирования для платформы Windows, которая позволяет полноценно работать сразу на нескольких удаленных компьютерах с помощью обычного графического интерфейса [3] (Рис. 1.2.1.1.).

    Возможности:

    • Удаленное управление на аппаратном уровне с поддержкой технологии Intel® AMT.

    • Текстовый и голосовой чаты.

    • Безопасный обмен файлами с функцией "докачки".

    • Поддержка нескольких одновременных соединений.

    • Возможность отображения экрана удалённого ПК в отдельном окне или в полноэкранном режиме с плавным изменением масштаба и сохранением пропорций.

    • Поддержка нескольких мониторов.

    • Совместимость с ОС Linux.

    • Двусторонняя работа с буфером обмена с поддержкой Unicode.

    • Режим Telnet.

    • Удалённое выключение компьютера.

    • Запись в лог файл имени пользователя и DNS расшифровки его адреса.

    • И т.д.

    Недостатки:

    • Необходимость установки на компьютер клиента программного обеспечения, видео драйвера.

    • Необходимость доступа в интернет.

    • Работа Telnet не корректна:

      • нет возможности выделить/скопировать/вставить текст;

      • поддерживается только вывод русской кодировки chcp 1251;

      • невозможно вводить команды на русском языке.

    • Непрозрачная работа с буфером обмена.




    Рис. 1.2.1.1. Главное окно Radmin.
    1.2.2 Hidden Administrator

    Программа Hidden Administrator предназначена для удаленного скрытого наблюдения или управления компьютерами локальной сети или рабочей группы [4] (Рис. 1.2.2.1.).

    Возможности:

    • Отображение рабочего стола дистанционного ПК в реальном времени.

    • Управление удаленным компьютером при помощи мыши и клавиатуры.

    • Одновременное наблюдение за несколькими компьютерами (до 256 компьютеров одновременно) с возможностью их администрирования.

    • Обмен файлами, поддержка Drag & Drop (Менеджер файлов).

    • Удаленный доступ в режиме командной строки (аналог системной утилиты "CMD").

    • Передача звука по сети в режиме реального времени.

    • Мониторинг запущенных приложений, посещенных сайтов, распечатанных документов и активности USB накопителей.

    • Включение компьютеров по сети (Wake on LAN).

    • Обмен сообщениями с пользователем (Чат).

    • Поддержка многоязычности.

    • И т.д.

    Недостатки:

    • Необходимость установки программного обеспечения на компьютер клиента.

    • Сложная удаленная установка.




    Рис. 1.2.2.1. Главное окно Hidden Administrator.
    1.2.3 Anyplace Control

    Anyplace Control - программа, позволяющая получить удаленный доступ к компьютеру через Интернет или локальную сеть и в полной безопасности управлять удаленным компьютером в режиме реального времени [5] (Рис. 1.2.3.1.).

    Возможности:

    • Отображение рабочего стола удаленного компьютера в реальном времени.

    • Использование мыши и клавиатуры для управления удаленным компьютером.

    • Обмен файлами между компьютерами.

    • Копирование текста, графики или других данных из буфера обмена одного компьютера и перенос их на другой компьютер.

    • Включение, выключение, перезагрузка удаленного ПК, а также блокирование его мыши и клавиатуры.

    • Получение удаленного доступа через интернет к ПК за маршрутизатором или брандмауэром без каких-либо настроек.

    Недостатки:

    • Отсутствие поддержки мультиэкранных систем.

    • Невозможность проведения записи с экрана.

    • Неудачный алгоритм шифрования данных (128 бит вместо 256).

    • Режим работы через аккаунт-подключение, когда трафик пропускается через промежуточный веб-сервер, который принадлежит разработчикам Anyplace Control. С одной стороны, они гарантируют сохранность подобной информации, с другой – пользователи становятся в своего рода зависимость от стабильности работы сервера вендора, который может, например, выйти на длительное время из строя.





    Рис. 1.2.3.1. Работа Anyplace Control.

    2. Конструкторская часть
    2.1 Блок схемы алгоритмов
    2.1.1 Алгоритм приема команды клиентом

    Алгоритм для клиентской части. Клиент находится в ожидании, производя проверку буфера на пустоту через промежутки времени в 100 млс. Если буфер оказывается заполненным, то клиент должен распознать префикс пришедших данных и найти его в библиотеке префиксов, чтобы выяснить, какое действие ему необходимо выполнить (Рис. 2.1.1.1.).

    

    Рис. 2.1.1.1. Алгоритм приема команды клиентом.
    2.1.2 Алгоритм отправки файла с клиента на сервер

    Алгоритм для клиентской и серверной частей. Перед передачей файла, клиент должен отправить запрос на сервер. Сервер находится в ожидании и проверяет буфер на пустоту. Как только буфер оказывается не пустым, сервер должен распознать префикс переданных данных. По префиксу сервер поймет, что клиент хочет передать файл, и, если сервер не занят, он примет этот файл (Рис. 2.1.2.1.).
    
    Рис. 2.1.2.1. Алгоритм отправки файла с клиента на сервер.
    2.1.3 Алгоритм получения сервером дерева файлов

    Алгоритм для серверной части. После установления соединения сервер ждет, пока клиент не сформирует дерево своих файлов. После чего начинается передача файла со сформированным деревом с клиента на сервер. Если передача прошла неуспешно, то клиент получает сообщение о неудаче и отправляет файл с деревом повторно. Если передача прошла успешно, то сервер отобразит дерево файлов клиента (Рис. 2.1.3.1.).
    

    Рис. 2.1.3.1. Алгоритм получения сервером дерева файлов.
    2.1.4 Алгоритм проверки существующих соединений

    Алгоритм для серверной части. На сервере выполняется бесконечный цикл проверок каждого сокета на событие Disconnect (разъединение). Если какой-то из сокетов разорвал соединение, то сервер, после очередной проверки, обнаружит это, удалит информацию об отсоединенном клиенте и выведет сообщение о данном разъединении (Рис. 2.1.4.1.).
    

    Рис. 2.1.4.1. Алгоритм проверки существующих соединений.
    2.2 Диаграмма протокола
    Для приема и отправки команд серверной части в создаваемом приложении был разработан специальный протокол вида (Рис. 2.2.1.):

    <префикс> <размер передаваемых данных или файла, который последует за данным сообщением> <данные>

    

    Рис. 2.2.1. Диаграмма протокола.
    2.3 Функциональная структура
    Для корректной работы проекта, скорости выполнения команд, а также для упрощения механизма отладки, программный код разбит на небольшие функции. Самыми важными из них, для обеспечения работоспособности всего запланированного функционала, являются:

    1. Исключительно для сервера:

    • CreateServerSocket – создание сокета и настройка его на прослушивание заданного порта: 49200.

    • AddClien – добавление нового пользователя в случае наличия в очереди клиента, желающего взаимодействовать с сервером.

    • RemoovClient – очистка информации о клиенте в случае отключения клиента по каким-либо причинам.

    • isClientRedyToWork – контроль за готовностью клиента к работе. Он необходим, например, при передаче файла клиенту или получения файла от него, чтобы в байты файла не попали лишние байты команд и не исказили структуру файла.

    1. Исключительно для клиента:

      • CreateClientSocket – создание сокета клиента и настройка его для связи с сервером.

      • ConnectToServer – запрос на соединение с сервером.

    2. Функции важные для обеспечения корректной работоспособности обоих приложений:

      • ShutDounSocket – функция, предназначенная для корректного завершения сеанса связи.

      • CheckConection – функция, необходимая для проверки соединения, на случай обрыва связи, инициированного второй стороной.

      • SendFile – функция, необходимая для передачи файлов.

      • SendMessage - функция принимает набор данных для передачи и префикс передачи, компонует пакет данных и отправляет второй стороне.

      • Createcommand – функция для создания команды заданной структуры, используемой в разработанном протоколе связи.

      • SepaGetedData – функция, необходимая для распаковки полученного пакета данных в структуру W_Data (Листинг 2.3.1.).

      • GetMessageIfAny – функция, используемая для проверки буфера входных данных на пустоту и, в случае наличия данных, считывания их.

      • GetError – функция, используемая для получения интуитивно-понятного объяснения возникшей ошибки, если таковая возникла.


    typedef struct W_Data

    {

    int Len; //Длинна данных

    AnsiString Prefix; // Префикс

    AnsiString DData; // Непосредственно данные

    }W_Data;


    Листинг 2.3.1.

    3. Технологическая часть
    3.1 Средства программирования и отладки
    Для разработки клиент-серверного приложения был выбран язык C++. Данный выбор обусловлен наличием библиотек, предоставляющих необходимый для нашего проекта функционал, реализованный в достаточном объеме, а также удобством и лаконичностью синтаксиса языка.

    Средой разработки был выбран C++ Builder компании Borland из-за обширности и разнообразия компонентных моделей, проработанных за долгие годы существования среды. Кроме того, данная среда не добавляет в код, не требуемых в задаче функций, тем самым уменьшая размер программы и увеличивая скорость работы приложения.
    3.2 Основные структуры данных программного комплекса
    Протокол

    Создаваемое приложение имеет ряд команд, которые сервер пересылает клиенту. Структура этих команд:

      • Запрос на получение, удаление и установку защиты от изменения файла:

    -xxx < Len(File Path)>

      • Запрос на копирование и перемещение файла:

    -xxx < Len(\t)> \t

      • Запрос на переименование файла:

    -xxx < Len(\t) > \t

      • Запрос на передачу файла:

    -xxx sss

    Где «-xxx» в каждой запросе является префиксом, отвечающим за какую-либо команду:

      • “-ss” – пересылка текстового сообщения (запрос от сервера к клиенту).

      • “-tbf” – команда на передачу дерева файлов (от сервера к клиенту); будет передан файл, используя префикс -flg.

      • “-tbs” – начало передачи дерева файлов (от клиента к серверу).

      • “-cmc” – запрос на выполнение в командной строке передаваемой команды (от сервера к клиенту).

      • “-cmd” – начало передачи файла командной строки для последующего выполнения (от сервера к клиенту).

      • “-mnr” – команда на выключение монитора (только для стационарных компьютеров) (от сервера к клиенту).

      • “-flm” – команда на перемещение файла (от сервера к клиенту).

      • “-flc” – команда на копирование файла (от сервера к клиенту).

      • “-fld” – команда на удаление файла (от сервера к клиенту).

      • “-flr” – команда на переименование файла (от сервера к клиенту).

      • “-flo” – команда на установление параметров файла в «только для чтения» (от сервера к клиенту).

      • “-flg” – команда на пересылку файла клиента на сервер (от сервера к клиенту).

      • “-pf” – команда для передачи первого в списке активного процесса (от клиента к серверу)

      • “-pp” – команда для передачи всех, кроме первого в списке, активных процессов (от клиента к серверу)



    3.3 Описание работы приложения
    Начало работы

    Для того чтобы начать работу с разработанным проектом, на компьютере-сервере должно быть запущено приложение-сервер, а на компьютере-пользователе – приложение-клиент.

    Чтобы запустить, приложение-клиент, необходимо кликнуть по .exe файлу, после чего откроется окно программы. В открывшемся окне нужно занести IP-адрес машины, на которой установлен сервер, после чего щелкнуть по кнопке «Соединение», чтобы установить соединение с компьютером-сервером (Рис. 3.3.1.).


    Рис. 3.3.1. Окно приложения-клиента.
    Для того чтобы запустить приложение-сервер, также необходимо щелкнуть по .exe файлу, после чего появится небольшое окно с приглашением ввести порт, через который будет работать приложение, и IP-адрес сети, в которой будет работать приложение (Рис. 3.3.2.). После ввода необходимой информации и нажатия на кнопку «Ок», появится непосредственно окно приложения-сервера.


    Рис. 3.3.2. Окно для ввода порта и IP-адреса.
    После того, как пользователь установит связь с сервером, в окне приложения-сервера в списке справа появится IP-адрес данного пользователя (Рис. 3.3.3.). Кроме того, приложение-сервер тут же сформирует дерево файлов клиента, которое появится на вкладке «Файлы и Службы». Дерево формируется не мгновенно, процент передачи дерева отображает полоса прогресса на вкладке «Файлы и службы» (Рис. 3.3.4.).


    Рис. 3.3.3. Список присоединенных клиентов.


    Рис. 3.3.4. Полоса прогресса при формировании дерева файлов.
    Работа с процессами

    При работе с приложением-сервером можно увидеть, какие процессы активны на клиенте. Все активные процессы отображены на вкладке «Активные процессы» (Рис. 3.3.5.).


    Рис. 3.3.5. Активные процессы клиента.
    Работа с файлами

    Для того чтобы производить какие-либо операции с файлами клиента, необходимо открыть вкладку «Файлы и службы», в которой находится дерево файлов. Далее нужно перейти на вкладку «Системные функции» на нижней панели приложения, которая отображает все возможные операции для работы с файлами клиента (Рис. 3.3.6.).


    Рис. 3.3.6. Окно работы с файлами клиента.
    Чтобы переименовать файл, необходимо найти его в дереве файлов, выделить и нажать кнопку «Новое имя». В появившемся окне (Рис. 3.3.7.) необходимо ввести новое имя файла (с расширением) и нажать «Ок».



    Рис. 3.3.7. Переименование файла.
    Чтобы переместить файл, необходимо найти его в дереве файлов, выделить и нажать кнопку «Переместить». В появившемся окне (Рис. 3.3.8.) необходимо ввести новый путь файла либо выбрать его в дереве файлов и нажать «Ок».


    Рис. 3.3.8. Перемещение файла.
    3.4 Тестирование проекта
    Проект был тщательно протестирован. Были выявлены следующие недостатки:

      • В случае если сервер не запущен, при запросе соединения от клиента, функция возвращает ошибку: «Ресурс временно не доступен», хотя соединение проходит корректно (данную проблему удалось решить дополнительными проверками, что увеличивает время работы, но не значительно).

      • Формирование дерева происходит довольно долгое время, которое зависит от количества файлов, находящихся на жёстком диске.

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

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

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

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

    • Регистрация новых пользователей в системе.

    • Выполнение системных функций для компьютера: выключение, перезагрузка, отключение монитора.

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

    • Выполнение системных функций для файлов: копирование, перемещение (в том числе и на машину сервера), переименование, удаление, установка защиты от корректировки и удаления.

    • Отправление на удаленную машину сообщений-инструкций.

    • Сохранение в лог файл общей истории событий, а так же истории событий для каждого клиента в отдельности.

    • Отображение активных процессов удалённой машины.

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

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

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

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

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

    • Выполнение системных функций для компьютера: выключение, перезагрузка, отключение монитора.

    • Выполнение системных функций для файлов: копирование, перемещение (в том числе и на машину сервера), переименование, удаление, установка защиты от корректировки и удаления.

      • Сохранение всей истории работы в лог-файл.

      • Отслеживание процессов, запущенных на клиентской машине, и работа с ними.

    Нереализованной осталась работа со службами клиента, что будет исправлено позже.

    Основными направлениями совершенствования проекта в дальнейшем будут:

    • Уменьшение времени формирования и работы с файловым деревом и списком активных процессов.

    • Добавление возможности видеть рабочий стол клиента и работать с ним в реальном времени посредствам мыши и клавиатуры.



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

    Функциональность приложения обусловлена базовыми требованиями к программам такого рода и включает в себя:

    1. Возможность передачи сообщений с сервера на клиентское приложение.

    2. Возможность получения файлов, отправленных с клиентского приложения на сервер.

    3. Возможность передачи команд сервером на клиентское приложение.

    4. Распознавание клиентским приложением команд и выполнение их.

    5. Работа с процессами клиентской машины.

    6. Проверка команд на корректность.

    7. Проверка соединения.

    8. Возможность добавления новых клиентов.

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


    написать администратору сайта