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

Введение


Персональный компьютер способен выполнять заданные, четко определенные последовательности операций, описания которых называются программами[3]. Однако какие последовательности операций при запуске той или иной программы выполняет компьютер, дилетанту неизвестно. Тех же, кто понимает тонкости работы программ ЭВМ, обычно называют хакерами[4]. Нередко говорят о субкультуре хакеров, отличающейся от доминирующей культуры собственной системой ценностей, а иногда и языком, манерой поведения, одеждой и другими аспектами[5]. Для системных администраторов является не абстрактной ценностью, а необходимым условием профессиональной деятельности знание основ построения и архитектуры ЭВМ. Хороший системный администратор знаком и с основными стандартами в области инфокоммуникационных систем и технологий[6].

Работы по поддержке, обслуживанию и модернизации ИТ-инфраструктуры могут передаваться в руки компании, для которой выполнение подобных работ является профильным направлением деятельности[7]. Наиболее частым видом частичной или полной передачи таких работ является абонентское обслуживание компьютеров. Для этого ит-аутсорсинговая компания всегда имеет штат специалистов различной квалификации. Обычно абонентское обслуживание предполагает предложение заказчику комплексного набора услуг. Предлагаемый набор услуг позволяет заказчику обойтись без собственного системного администратора или же значительно снизить его загрузку[8].

Техническая поддержка предоставляется, как правило, по телефону, через интернет или по электронной почте. Не менее популярны и онлайн-сервисы поддержки на веб-сайте или через инструменты, посредством которых пользователи могут зарегистрировать заявку или создать инцидент. Не лишним бывает затем с их помощью проследить судьбу зарегистрированной заявки или созданного инцидента — историю состояний/этапов ее или его решения. В список заранее определенных услуг на постоянной основе по заранее определенной цене может быть включена помощь, оказываемая «на месте» возникновения проблемы. При этом словосочетание «на месте» подразумевает выход технического специалиста, в том случае, когда удаленно проблема не может быть решена[9].

Использование программ удаленного администрирования — всего лишь один из многих случаев взаимодействия компьютеров через сеть. Причем во всех случаях имеет место соединение и обмен данными между двумя и более включенными в сеть устройствами. Выполнение последней задачи позволяют осуществлять различные наборы правил и действий (очередности действий)[10]. Одним из таких наборов правил и действий (очередности действий) является сетевой протокол RFB. Именно он используется в системах удаленного доступа к рабочему столу компьютера по технологии Virtual Network Computing (VNC). С его помощью осуществляется взаимодействие через компьютерную сеть VNC-клиентов и VNC-серверов. Хотя обычно VNC-клиенты и VNC-сервера находятся на разных вычислительных машинах, иногда они могут выполняться и на одной машине[11].

Протокол передачи данных «remote framebuffer»


RFB (англ. remote framebuffer, удаленный кадровый буфер) — простой клиент-серверный сетевой протокол прикладного уровня, используемый в VNC. Предназначен для удаленного доступа к графическому рабочему столу компьютера. Он работает на уровне кадрового буфера, поэтому его можно применять для различных графических оконных систем. В их число входят X11, Windows и Macintosh[12].

VNC состоит из двух частей: клиента и сервера. Сервер — программа, предоставляющая доступ к экрану компьютера, на котором она запущена. Клиент (или viewer) — программа, получающая изображение экрана с сервера. Клиент взаимодействует с сервером по протоколу RFB[13].

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

Существует три этапа взаимодействия VNC-клиента и VNC-сервера через компьютерную сеть. На всех трех этапах это происходит посредством сетевого протокола RFB. Первый этап носит название «этап рукопожатия». Его цель — договориться о версии протокола. Их три — RFB 3.3, 3.7 или 3.8. На этом этапе определяется и используемый тип безопасности. Пример возможных типов безопасности: 1 — None, 2 — VNC Authentication, 18 — TLS. Второй этап — это этап инициализации. На нем которой клиент и сервер обмениваются сообщениями ClientInit и ServerInit. Заключительный этап — это нормальное взаимодействие по определенным в протоколе правилам. На заключительном этапе клиент посылает любые сообщения, какие хочет. В ответ он получает сообщения от сервера. Все сообщения начинаются с байта типа сообщения. За байтом типа сообщения следуют соответствующие данные.

Определены следующие типы сообщений от клиента к серверу: 0 — SetPixelFormat, 1 — SetEncodings, 3 — FramebufferUpdateRequest. К ним примыкают еще три типа: 4 — KeyEvent, 5 — PointEvent, 6 — ClientCutText. SetPixelFormat позволяет установить формат пикселей, передаваемых с помощью сообщений FramebufferUpdate. SetEncodings задает тип кодировки, используемый для передачи пикселей сервером. FramebufferRequest сообщает серверу о том, что клиент запрашивает содержимое некоторой области кадрового буфера. С помощью KeyEvent серверу передается информация о нажатии или отпускании клавиатурной клавиши, а с помощью PointEvent — о перемещении курсора мыши или нажатии кнопки мыши. Сообщения последнего типа информируют сервер о наличии в текстовом буфере клиента текста в кодировке Latin-1.

Также определены 4 типа сообщений от сервера к клиенту: 0 — FramebufferUpdate, 1 — SetColourMapEntries, 2 — Bell, 3 — ServerCutText. С помощью FramebufferUpdate осуществляется передача клиенту массивов пикселей. SetColourMapEntries передает соответствующую цветовую карту. Bell сообщает клиенту о необходимости воспроизвести звуковой сигнал. Сообщение ServerCutText говорит о наличии текстовом буфере сервера текста в кодировке Latin-1.

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

Самый простой тип кодирования, применяемый в протоколе RFB и поддерживаемый всеми клиентами и серверами — «raw encoding» (рус. сырое кодирование). Это означает, что пиксели передаются в порядке слева-направо, сверху-вниз. Еще один тип кодирования — CopyRect — применяется в тех случаях, когда необходимая область изображения уже присутствует в копии кадрового буфера у клиента. Тогда достаточно указать координаты прямоугольника, который необходимо скопировать из копии кадрового буфера, что и делается при использовании этого типа кодирования.

Тип кодирования Zlib представляет собой тот же Raw, но предварительно сжатый с помощью библиотеки Zlib. При кодировании Hextile прямоугольник разбивается на небольшие квадраты, каждый из которых может иметь свое собственное представление, что позволяет кодировать повторяющиеся области и использовать палитры. ZRLE сочетает в себе Zlib и Hextile[14].

Обзор VNC-серверов и VNC-клиентов для OS X, Windows и Linux


Mac и Windows адекватно поддерживают железо и мультимедиа. Для них существует значительное количество игр. Благодаря этому они безраздельно господствуют в среде обычных домашних ПК. Однако Linux уверенно теснит другие операционные системы. Это происходит во многих сферах деятельности (в том числе, на домашних ПК). Причиной тому бесплатность этого продукта и качественная платная поддержка[3].

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

В OS X в качестве VNC-сервера можно использовать Apple Remote Desktop. Для этого можно открыть меню «Системные настройки». После этого появится возможность открыть панель «Общий доступ». Теперь можно установить галочку напротив пункта «Удаленное управление». Нажав кнопку «Настройки компьютера..», в открывшемся окне можно установить еще одну галочку. Она называется «Пользователи VNC могут получить управление экраном по паролю». При этом необходимо ввести пароль в соответветствующее поле ввода[15].

Apple_Remote_Desktop_Logo.png

x11vnc — VNC-сервер[16]. Он позволяет получить удаленный доступ к рабочему столу компьютера с операционной системой Unix/Linux. В различных дистрибутивах Linux его можно установить из репозиториев. Для этого используется штатный консольный менеджер пакетов. В Mageia это urpmi, В Ubuntu это apt. В openSUSE для этих целей обычно применяется zypper. Fedora предоставляет yum, В качестве аргумента консольного менеджера пакетов обычно указывается имя пакета, в данном случае x11vnc. После этого необходимой операцией является установка пароля для VNC-клиентов. Это можно сделать с помощью команды x11vnc -storepasswd. Для настройки VNC-сервера x11vnc предусмотренна утилита с графическим интерфейсом. Она вызывается с помощью команды x11vnc -gui. Также она позволяет просматривать информацию о событиях, происходящих в работе VNC-сервера и даже управлять VNC-клиентами.

SSVNC_version_1.0.29.png"

Для Windows имеется свободное программное обеспечение UltraVNC. В его состав входят VNC-сервер UltraVNC и VNC-клиент UltraVNC Viewer. В принципе, в Linux и OS X также можно использовать UltraVNC Viewer. В этих операционных системах его можно запустить с помощью Wine. В Linux этот пакет можно установить с помощью консольного менеждера пакетов. В OS X это делается из портов (с помощью команды port install wine). Для этого предварительно должна быть установлена система MacPorts. Это распространяемая в исходных кодах система для установки программного обеспечения[17]. В последнем случае установка Wine может продолжаться более полутора часов.

UltraVNC_Viewer.png

Chicken of the VNC[18] — популярный VNC-клиент для OS X. Очень простая утилита. Первое знакомство с ней обычно начинается с загрузки c sourceforge.net последней версии образа диска[19]. Далее его можно открыть. В нем находится иконка Chicken of the VNC. Чтобы установить эту утилиту, достаточно перетащить эту иконку с помощью мыши в папку Программы. Папка Программы для этого должна быть предварительно открыта в окне Finder. Как подключаться с ее помощью к VNC-серверу? Да очень просто! Достаточно в окне этой программы указать его IP-адрес.

Chicken_of_the_VNC.png

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

Заключение


В статье не были рассмотрены шифрование трафика в программах удаленного администрирования с использованием протокола SSH. Этот прием используется при соединении сервера и клиента напрямую через незащищенную сеть, такую как Интернет[20]. Также ничего не было сказано о возможности передачи файлов между VNC-сервером и VNC-клиентом. Проигнорировано в статье и использование режима «View Only».

Кроме упомянутых VNC-серверов и VNC-клиентов существуют и другие реализации технологии VNC. Cреди последних хотелось бы отметить VNC-сервер vino и VNC-клиент vinagre. Они входят в состав рабочей среды GNOME и предназначены для соединения компьютеров, работающих под управлением операционной системы Linux.

Можно по-разному относиться к представленной в статье информации. Для кого-то она может показаться избыточной. Кому-то поможет заменить головную боль, связанную с управлением удаленными рабочими столами на других компьютерах, на осознание самореализации в работе. Наконец, из статьи, может быть, cмогут узнать для себя что-то новое те, кто еще не имеет опыта, достаточного для эффективной работы в таких упоминаемых выше операционных системах, как OS X и Linux. В любой случае, как бы читатель не относился к рассмотренной теме, нельзя отрицать влияние компьютерных технологий на культуру, экономику и политику[21]. Владение ими позволяет индивиду успешно функционировать в обществе[22].

Используемые источники


1. UltraVNC — Википедия
2. Technology company — Wikipedia
3. Персональный компьютер — Википедия
4. Хакер — Википедия
5. Субкультура — Википедия
6. ФГОС ВПО по напр. подготовки 230100 Информатика и в.т., 9.11.2009
7. ИТ-аутсорсинг — Википедия
8. Аутсорсинг — Википедия
9. Техническая поддержка — Википедия
10. Протокол передачи данных — Википедия
11. Клиент-сервер — Википедия
12. Tristan Richardson. The RFB Protocol Version 3.8, 26.11.2010
13. Virtual Network Computing — Википедия
14. Фирсов И.C. Разработка программной системы сетевого мониторинга удаленных комптьютеров с использованием протокола RFB — Томск: ТГУ, 2010 inf.tsu.ru/library/DiplomaWorks/CompScience/2010/Firsov/diplom.pdf
15. Apple Remote Desktop — Ubuntu Community Help Wiki
16. x11vnc — Wikipedia
17. MacPorts — Википедия
18. Ubuntu Community Help Wiki. VNC/Clients
19. Apple Disk Image — Wikipedia
20. VNC — Ubuntu Community Help Wiki
21. Wired — Википедия
22. Социализация — Википедия

Комментарии ()


  1. ildarz
    29.04.2015 11:57
    +10

    Курсовик по информатике в гуманитарном вузе? :)


    1. mikhaylovns
      23.05.2015 13:41
      -2

      Это не курсовая. Это статья, не принятая для публикации в журнал. Ее первый вариант.

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

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


  1. nightvich
    29.04.2015 13:57

    Рекомендую источники округлить до ~ Википедия.

    У вас это выглядит примерно так:
    1. Автор Название Страница 1
    2. Автор Название Страница 10
    3. Автор Название Страница 22