Virtual Network Computing

Материал из Википедии — свободной энциклопедии
(Перенаправлено с )
Перейти к: навигация, поиск

Virtual Network Computing (VNC) — система удалённого доступа к рабочему столу компьютера, использующая RFB ( Remote FrameBuffer, удалённый ). Управление осуществляется путём передачи нажатий клавиш на клавиатуре и движений мыши с одного компьютера на другой и ретрансляции содержимого экрана через .

Система VNC платформонезависима: VNC-клиент, называемый VNC viewer, запущенный на одной , может подключаться к VNC-серверу, работающему на любой другой ОС. Существуют реализации клиентской и серверной части практически для всех операционных систем, в том числе и для (включая мобильную платформу ). К одному VNC-серверу одновременно могут подключаться множественные клиенты. Наиболее популярные способы использования VNC — удалённая техническая поддержка и доступ к рабочему компьютеру из дома.

Содержание

[] История

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

Название возникло из компьютерной сети Videotile, которая представляла из себя с вводом пером и быстрым -подключением к сети. По существу, VNC — программная реализация «ATM Network Computer».

Разработчики, работавшие над VNC в AT&T Research Lab:

[] Устройство

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

[] Протокол RFB

RFBremote framebuffer) — простой клиент-серверный сетевой протокол прикладного уровня для удалённого доступа к графическому рабочему столу компьютера, используемый в VNC. Так как он работает на уровне , то его можно применять для графических оконных систем, например , , .

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

По умолчанию RFB использует диапазон с 5900 до 5906. Каждый порт представляет собой соответствующий экран (порты с 5900 по 5906 ассоциированы с экранами с :0 по :6). Java-клиенты, доступные во многих реализациях, использующих встроенный для этой цели, например, в RealVNC, связаны с экранами таким же образом, но на диапазоне портов с 5800 до 5806. Многие компьютеры под управлением ОС могут использовать лишь один порт из-за отсутствия многопользовательских свойств, присущих -системам. Для Windows-систем экран по умолчанию — :0, что соответствует порту 5900.

Также существует возможность обратного подключения от сервера к клиенту. В этом случае клиент переводится в слушающий ( listening) режим и соединение инициируется сервером на 5500 TCP-порт клиента.

Порты могут быть изменены.

Методы кодирования и расширения, опубликованные из проекта TigerVNC:

  • 0x00000000 — Сырой (Raw)
  • 0x00000001 — Копирование прямоугольников (CopyRect)
  • 0x00000002 — Увеличение прямоугольника (Rising Rectangle)
  • 0x00000004 — CoRRE (Compact Rising Rectangle)
  • 0x00000005 — Hextile
  • 0x00000006 — Сжатие Zlib
  • 0x00000007 — Версия клиента Tight
  • 0x00000008 — ZlibHex
  • 0x00000009 — Версия клиента Ultra
  • 0x00000010 — Сжатие ZRLE
  • 0x00000011 — Сжатие ZYWRLE (ZLib YUV Wavelet Run Length Encoding)
  • 0xFFFF0001 — Флаг кэширования (CacheEnable)
  • 0xFFFF0006 — Флаг побитового XOR (XOREnable)
  • 0xFFFF8000 — ServerState (UltraVNC)
  • 0xFFFF8001 — EnableKeepAlive (UltraVNC)
  • 0xFFFF8002 — Передача файлов (FTProtocolVersion — UltraVNC)
  • 0xFFFFFF00 — 0xFFFFFF09 — CompressLevel (Tight)
  • 0xFFFFFF10 — XCursor
  • 0xFFFFFF11 — RichCursor
  • 0xFFFFFF18 — PointerPos
  • 0xFFFFFF20 — LastRect
  • 0xFFFFFF21 — NewFBSize
  • 0xFFFFFFE0 — 0xFFFFFFE9 — QualityLevel(Tight)

[] Безопасность

Изначально VNC не использует шифрование трафика, однако в процедуре пароль не передается в открытом виде, а используется с -шифрованием (эффективная длина ключа составляет 56-бит). Во многих реализациях существует ограничение в 8 символов на длину пароля и если его длина превосходит 8 символов, то пароль урезается, а лишние символы игнорируются.

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

Также многие современные версии VNC поддерживают расширения стандартного протокола, которые реализуют шифрование и/или сжатие VNC-трафика, разграничения по спискам доступа и различные методы аутентификации.

использует для шифрования соединений, причем шифруется сессия VNC, включая аутентификацию и передачу данных. Также поддерживает передачу файлов и чат. Если клиент не поддерживает OpenSSL шифрование, то шифрование автоматически отключается.

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

в коммерческой версии продукта использует алгоритм AES для шифрования соединения и алгоритм для аутентификации.

выпустила для VNC, реализующий алгоритм шифрования AES.

[] См. также

[] Ссылки

[] Литература


Источник — «»
Личные инструменты
Пространства имён
Варианты
Просмотры
Действия
Навигация
Участие
Печать/экспорт
Инструменты
На других языках