RFB (аббр. от ) — клиент-серверный сетевой протокол для удалённого доступа к графическому рабочему столу компьютера. Используется в системах удаленного доступа VNC. Так как он работает на уровне кадрового буфера, то его можно применять для графических оконных систем, например X Window System, Windows, Quartz Compositor.
Описание По умолчанию RFB использует диапазон TCP-портов с 5900 до 5906. Каждый порт представляет собой соответствующий экран X-сервера (порты с 5900 по 5906 ассоциированы с экранами с :0 по :6). Java-клиенты, доступные во многих реализациях, использующих встроенный веб-сервер для этой цели, например, в RealVNC, связаны с экранами таким же образом, но на диапазоне портов с 5800 до 5806. Многие компьютеры под управлением ОС Windows могут использовать лишь один порт из-за отсутствия многопользовательских свойств, присущих UNIX-системам. Для Windows-систем экран по умолчанию — :0, что соответствует порту 5900.
Существует возможность обратного подключения от сервера к клиенту. В этом случае клиент переводится в слушающий () режим и соединение инициируется сервером на 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.3ORLЯнварь 1998The Remote Framebuffer Protocol 3.3RFB 3.7RealVNC LtdАвгуст 2003The Remote Framebuffer Protocol 3.7RFB 3.8 (текущая)RealVNC LtdИюнь 2007The 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.
Протокол VNC основан на передаче растров (массивов пикселей). Несмотря на то, что это приводит к большой гибкости (то есть возможно отображение любого типа рабочего стола), такой метод часто менее эффективен, чем решения, более близкие к графическим системам типа X11 или RDP. В таких протоколах возможна отправка более сложных графических примитивов и команд высокого уровня в более простой форме (например, создать окно), тогда как RFB просто отправляет необработанные пиксельные данные, хоть и сжатые.
Примечания
Ссылки The RFB Protocol - Version 3.8 (2010-11-26) The RFB Protocol - Version 3.7 (2003-08-12) The RFB Protocol - Version 3.3 (1998-01) The RFB Protocol - Community Version RFC 6143 - The Remote Framebuffer Protocol (2011) at the IETF
Категория:VNC Категория:Протоколы прикладного уровня Категория:Сетевые протоколы Категория:Программы удалённого администрирования