Открыть сервис

VNC

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

История

Протокол VNC был разработан в 1999 году в лаборатории Olivetti Research Laboratory (ORL) в Кембридже (Великобритания) под руководством Энди Хоппера, Оливии Хоппер и Тима Бакстера. Первоначальная реализация была написана на Java и C, что обеспечивало кроссплатформенность. В 2002 году ORL была приобретена компанией AT&T, которая выпустила исходный код VNC под лицензией GNU General Public License (GPL), что способствовало широкому распространению технологии.

С 2004 года развитие VNC разделилось на несколько ветвей: RealVNC (коммерческая версия, основанная на оригинальном коде), TightVNC (оптимизированная для низкой пропускной способности), UltraVNC (с расширенными функциями, такими как передача файлов) и TigerVNC (форк, ориентированный на производительность). В 2010-х годах появились облачные сервисы, такие как TeamViewer и AnyDesk, которые частично заменили VNC в корпоративной среде, но VNC остаётся популярным в сфере администрирования серверов и встраиваемых систем.

Принцип работы

VNC основан на архитектуре «клиент-сервер». Серверная часть запускается на управляемом компьютере и захватывает изображение экрана, преобразуя его в поток данных по протоколу RFB. Клиентская часть подключается к серверу по TCP-порту (по умолчанию 5900 для первого дисплея, 5901 для второго и т. д.) и отображает полученное изображение, отправляя обратно события от клавиатуры и мыши.

Протокол RFB

Протокол RFB (Remote Framebuffer) работает на уровне представления данных. Он не передаёт графические команды, а только растровые изображения областей экрана, которые изменились (инкрементальные обновления). Это снижает нагрузку на сеть, но требует больше вычислительных ресурсов для кодирования и декодирования. RFB поддерживает несколько форматов кодирования:

  • Raw — передача пикселей без сжатия (простой, но требовательный к пропускной способности).
  • Tight — сжатие с использованием алгоритмов JPEG и PNG (оптимизировано для медленных сетей).
  • Hextile — разбиение экрана на прямоугольные блоки (уменьшает задержки).
  • ZRLE — кодирование с использованием Run-Length Encoding и Zlib (баланс между скоростью и сжатием).

Аутентификация

VNC поддерживает несколько методов аутентификации:

  • VNC Passwordпароль длиной до 8 символов, передаваемый в зашифрованном виде (устаревший, уязвим к атакам).
  • Challenge-Response — с использованием ключей (например, в TightVNC).
  • VeNCrypt — расширение для шифрования через TLS/SSL (рекомендуется для безопасного подключения).
  • SSH-туннелирование — организация защищённого канала поверх VNC.

Классификация реализаций

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

По типу лицензии

  • Открытые (GPL) — TightVNC, TigerVNC, UltraVNC, LibVNCServer.
  • Коммерческие — RealVNC (Enterprise), VNC Connect, Apple Remote Desktop (использует VNC-протокол с расширениями).
  • Проприетарные с бесплатной версией — RealVNC Viewer (бесплатно для просмотра), UltraVNC (бесплатно, но с ограничениями в коммерческой версии).

По функциональности

  • Базовые — только передача экрана и ввода (TigerVNC).
  • Расширенные — поддержка передачи файлов, буфера обмена, аудио, нескольких мониторов (UltraVNC, TightVNC с патчами).
  • Облачные — VNC Connect (с интеграцией через облачный сервер для обхода NAT).

Применение

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

Системное администрирование

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

Образование и обучение

  • Демонстрация экрана преподавателя студентам в компьютерных классах.
  • Удалённое обучение работе с программным обеспечением (например, 1С, AutoCAD).

Встраиваемые системы

  • Управление одноплатными компьютерами (Raspberry Pi, Orange Pi) — VNC-сервер часто предустановлен в дистрибутивах (например, Raspbian).
  • Мониторинг и управление промышленными терминалами, киосками, банкоматами.

Разработка и тестирование

  • Тестирование графических интерфейсов на удалённых машинах (например, в виртуальных средах).
  • Разработка под мобильные платформы — VNC-клиенты для Android и iOS позволяют управлять настольными ПК.

Преимущества и недостатки

Преимущества

  • Кроссплатформенность — работает на всех основных ОС, включая редкие (например, Solaris, AIX).
  • Простота настройки — для базового использования достаточно установить сервер и клиент, задать пароль.
  • Открытый протокол — возможность создания собственных реализаций.
  • Низкие требования к ресурсам — сервер может работать на устройствах с 256 МБ ОЗУ.

Недостатки

  • Отсутствие встроенного шифрования — базовый VNC передаёт данные в открытом виде, что делает его уязвимым для перехвата. Рекомендуется использовать SSH-туннелирование или VeNCrypt.
  • Высокая задержка при медленных сетях — протокол RFB не оптимизирован для потокового видео или игр (задержка может достигать 200–500 мс).
  • Ограниченная поддержка аудио — большинство реализаций не передают звук (UltraVNC и RealVNC имеют расширения, но они нестандартизированы).
  • Проблемы с NAT и брандмауэрами — для подключения через интернет требуется настройка проброса портов или использование облачных сервисов.

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

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

  • Использовать SSH-туннелирование: ssh -L 5900:localhost:5900 user@server.
  • Применять VeNCrypt или TLS-расширения (поддерживаются в TigerVNC и RealVNC).
  • Ограничивать доступ по IP-адресам через брандмауэр.
  • Использовать сложные пароли (длина более 8 символов, хотя в старых версиях это ограничение).
  • Отключать VNC-сервер, когда он не используется.

Интересные факты

  • VNC использовался для управления марсоходом NASA «Спирит» (2004) — через него инженеры получали изображения с камер и отправляли команды.
  • В 2010 году хакеры использовали уязвимости в VNC для атак на банкоматы — злоумышленники подключались к серверам, управляющим диспенсерами, и инициировали выдачу наличных.
  • Протокол RFB лёг в основу стандарта VNC-совместимости, принятого в ISO/IEC 23005-5 (2013) для систем удалённого управления.

Источники

  • Richardson T., Stafford-Fraser Q., Wood K. R., Hopper A. Virtual Network Computing // IEEE Internet Computing. — 1998. — Vol. 2, No. 1. — P. 33–38.
  • Документация протокола RFB (RFC 6143) — Internet Engineering Task Force, 2011.
  • Официальные сайты TightVNC, TigerVNC, UltraVNC, RealVNC.
  • Книга: «Remote Desktop Services: A Practical Guide» — Microsoft Press, 2015 (раздел о VNC).
  • Статья «VNC Security: A Survey» — Journal of Network and Computer Applications, 2019.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →