Virtual Network Computing (VNC) — система удалённого доступа к рабочему столу компьютера, использующая протокол RFB (Remote FrameBuffer). Управление осуществляется путём передачи нажатий клавиш на клавиатуре и движений мыши с одного компьютера на другой и ретрансляции содержимого экрана через компьютерную сеть. Система VNC платформонезависима: VNC-клиент, называемый VNC viewer, запущенный на одной операционной системе, может подключаться к VNC-серверу, работающему на любой другой ОС. Существуют реализации клиентской и серверной части практически для всех операционных систем, в том числе и для Java (включая мобильную платформу J2ME). К одному VNC-серверу одновременно могут подключаться множественные клиенты. Наиболее популярные способы использования VNC — удалённая техническая поддержка и доступ к рабочему компьютеру из дома.
VNC была разработана компанией AT&T. Оригинальные исходные коды доступны на условиях лицензии GNU General Public License, как и многие варианты VNC, существующие на данный момент. История
VNC была создана в Olivetti & Oracle Research Lab, которая в то время принадлежала Olivetti и Oracle Corporation. В 1999 году лаборатория была приобретена компанией AT&T, которая закрыла отдел разработок в 2002 году.
Название возникло из компьютерной сети тонких клиентов Videotile, которая представляла из себя ЖК-дисплей с вводом пером и быстрым ATM-подключением к сети. По существу, VNC — программная реализация «ATM Network Computer».
Разработчики, работавшие над VNC в AT&T Research Lab: Tristan Richardson Квентин Стаффорд-Фрейзер (англ.) James Weatherall Ken Wood Энди Хоппер (англ.) Charlie McLachlan Paul Webster
Устройство
VNC состоит из двух частей: клиента и сервера. Сервер — программа, предоставляющая доступ к экрану компьютера, на котором она запущена. Клиент (или viewer) — программа, получающая изображение экрана с сервера и взаимодействующая с ним.
VNC — очень простой протокол, основанный на графических примитивах: «Положить прямоугольник пиксельных данных на заданную координатами позицию». Сервер посылает небольшие прямоугольники клиенту. Такая схема в своей примитивной форме потребляет большую часть пропускной возможности канала. Для снижения нагрузки на канал используются различные методы. Существуют различные кодировки — методы определения наиболее эффективного способа передачи этих прямоугольников. Протокол VNC позволяет клиенту и серверу «договориться» о том, какая кодировка будет использована. Самый простой метод кодирования, поддерживаемый всеми клиентами и серверами — «raw encoding», при котором пиксели передаются в порядке слева-направо, сверху-вниз, и после передачи первоначального состояния экрана передаются только изменившиеся пиксели. Этот метод работает очень хорошо при незначительных изменениях изображения на экране (движения указателя мыши по рабочему столу, набор текста под курсором), но загрузка канала становится очень высокой при одновременном изменения большого количества пикселей, например, при просмотре видео в полноэкранном режиме.
По умолчанию VNC использует диапазон TCP-портов с 5900 до 5906. Каждый порт представляет собой соответствующий экран X-сервера (порты с 5900 по 5906 ассоциированы с экранами с :0 по :6). Java-клиенты, доступные во многих реализациях, использующих встроенный web-сервер для этой цели, например, в RealVNC, связаны с экранами таким же образом, но на диапазоне портов с 5800 до 5806. Многие компьютеры под управлением ОС Windows могут использовать лишь один порт из-за отсутствия многопользовательских свойств, присущих UNIX-системам. Для Windows-систем экран по умолчанию — :0, что соответствует порту 5900.
Также существует возможность обратного подключения от сервера к клиенту. В этом случае клиент переводится в слушающий (Listening) режим и соединение инициируется сервером на 5500 TCP-порт клиента.
Порты могут быть изменены.
Безопасность
Изначально VNC не использует шифрование трафика, однако в процедуре аутентификации пароль не передается в открытом виде, а используется алгоритм «вызов-ответ» с DES-шифрованием (эффективная длина ключа составляет 56-бит). Во многих реализациях существует ограничение в 8 символов на длину пароля и если его длина превосходит 8 символов, то пароль урезается, а лишние символы игнорируются.
При необходимости надежного шифрования всей VNC-сессии, она может быть установлена через SSL, SSH или VPN-туннель, а также поверх IPSec. Технология IPSec поддерживается подавляющим большинством современных ОС и используется как при соединении через Интернет, так и в локальных сетях. SSH-клиенты позволяют создавать SSH-туннели как со всех основных платформ (UNIX, Windows, Macintosh и др.), так и для менее популярных.
Также многие современные версии VNC поддерживают расширения стандартного протокола, которые реализуют шифрование и/или сжатие VNC-трафика, разграничения по спискам доступа ACL и различные методы аутентификации.
EchoVNC использует OpenSSL для шифрования соединений, причем шифруется сессия VNC, включая аутентификацию и передачу данных. Также поддерживает передачу файлов и чат. Если клиент не поддерживает OpenSSL шифрование, то шифрование автоматически отключается.
UltraVNC позволяет использовать специальный плагин, распространяемый с открытым исходным кодом, который шифрует всю сессию VNC используя алгоритмы AES или RC4, включая аутентификацию и передачу данных. Также существуют варианты аутентификации на основе NTLM и учётных записей пользователей в Active Directory. UltraVNC позволяет передавать файлы между сервером и клиентом, в любых направлениях.
RealVNC в коммерческой версии продукта использует алгоритм AES для шифрования соединения и алгоритм RSA для аутентификации.
Workspot выпустила патч для VNC, реализующий алгоритм шифрования AES. [править] См. также freenx — позволяет осуществлять подключения к X Window System через медленный канал передачи данных LTSP — тонкий клиент на основе Linux Ndiyo — ультра-тонкий клиент LogMeIn — свободный способ удалённого доступа с поддержкой шифрования VNC Loop — необычный эффект при рекурсивном зацикливании подключений VNC autocutsel — свободная утилита для использования буфера обмена при работе VNC в современных графических оболочках Linux NetRemote — свободная утилита для управления рабочим столом в ОС Windows с любого браузера. Существует клиент на python для управления с телефона под управлением symbian UltraVNC MetaVNC — поддерживает бесшовный режим TeamViewer — бесплатная утилита для некоммерческого использования для управления рабочим столом в ОС Windows, Linux, Mac OS Программы удалённого администрирования
Литература Tristan Richardson, Quentin Stafford-Fraser, Kenneth R. Wood & Andy Hopper. Virtual Network Computing IEEE Internet Computing, Vol.2, No.1, Jan/Feb 1998. P. 33-38
|