Меню

Главная
Случайная статья
Настройки
Протокол RFB
Материал из https://ru.wikipedia.org

RFB (аббр. от англ. remote framebuffer) — клиент-серверный сетевой протокол для удалённого доступа к графическому рабочему столу компьютера. Используется в системах удаленного доступа VNC[1]. Так как он работает на уровне кадрового буфера, то его можно применять для графических оконных систем, например X Window System, Windows, Quartz Compositor.

Содержание

Описание

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

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

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

История

RFB был разработан в Olivetti Research Laboratory (ORL), как технология удаленного отображения для использования с тонким клиентом Videotile, с подключением по ATM соединению. Разработка своего протокола позволила упростить клиент.

Реализация VNC была выпущена как программное обеспечение с открытым исходным кодом, а спецификацию RFB опубликовали в сети. С тех пор RFB стал более популярным протоколом.

После закрытия ORL в 2002 некоторые ключевые разработчики из VNC и RFB сформировали RealVNC Ltd., чтобы продолжать разработку VNC и поддерживать протокол RFB. Текущая спецификация протокола RFB опубликована на веб-сайте RealVNC.

Версии протокола

Опубликованные версии протокола RFB:
Версия Издатель Дата Спецификация
RFB 3.3 ORL Январь 1998 The Remote Framebuffer Protocol 3.3
RFB 3.7 RealVNC Ltd Август 2003 The Remote Framebuffer Protocol 3.7
RFB 3.8 (текущая) RealVNC Ltd Июнь 2007 The Remote Framebuffer Protocol 3.8


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

Типы кодирования
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 CompressLevel (Tight)
0xFFFFFF09 CompressLevel (Tight)
0xFFFFFF10 XCursor
0xFFFFFF11 RichCursor
0xFFFFFF18 PointerPos
0xFFFFFF20 LastRect
0xFFFFFF21 NewFBSize
0xFFFFFFE0 Сжатие ZRLE
0xFFFFFFE0 — 0xFFFFFFE9 QualityLevel (Tight)


Ограничения

С точки зрения передачи данных буфера обмена, RFB способен передавать текст только в рамках кодировки Latin-1.[2]

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

Примечания
  1. Камерон Лейрд. Искусство VNC. Как научиться работе с великолепным инструментом виртуализации. IBM DW (12 декабря 2007). Дата обращения: 25 октября 2018. Архивировано 26 октября 2018 года.
  2. Richardson, Tristan. Sections 6.4.6, 6.5.4 // The RFB Protocol - Version 3.8 (неопр.). — 2010.


Ссылки
Downgrade Counter