Протокол RFB

Перейти к: навигация, поиск

RFB (англ. remote framebuffer) — клиент-серверный сетевой протокол для удалённого доступа к графическому рабочему столу компьютера. Так как он работает на уровне кадрового буфера, то его можно применять для графических оконных систем, например 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 был разработан в Videotile. Чтобы сохранить устройство максимально простым, RFB разрабатывался для любой из существующих технологий удаленного показа дисплея.

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

После закрытия в 2002 ORL, некоторые ключевые люди из 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 — 0xFFFFFF09 — CompressLevel (Tight)

· 0xFFFFFF10 — XCursor

· 0xFFFFFF11 — RichCursor

· 0xFFFFFF18 — PointerPos

· 0xFFFFFF20 — LastRect

· 0xFFFFFF21 — NewFBSize

· 0xFFFFFFE0 — 0xFFFFFFE9 — QualityLevel (Tight)

Ограничения

С точки зрения передачи данных буфера обмена, «нет в настоящее время никакого способа передать текст вне латинского 1 набора символов».

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

Протокол RFB.

© 2016–2023 mk-hram.ru, Россия, Барнаул, ул. Школьная 34, +7 (3852) 17-07-29