Протокол RFB (Hjkmktkl RFB)
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 — 0xFFFFFF09 — CompressLevel (Tight) · 0xFFFFFF10 — XCursor · 0xFFFFFF11 — RichCursor · 0xFFFFFF18 — PointerPos · 0xFFFFFF20 — LastRect · 0xFFFFFF21 — NewFBSize · 0xFFFFFFE0 — 0xFFFFFFE9 — QualityLevel (Tight) |
Ограничения
[править | править код]С точки зрения передачи данных буфера обмена, RFB способен передавать текст только в рамках кодировки Latin-1.[2]
Протокол VNC основан на передаче растров (массивов пикселей). Несмотря на то, что это приводит к большой гибкости (то есть возможно отображение любого типа рабочего стола), такой метод часто менее эффективен, чем решения, более близкие к графическим системам типа X11 или RDP. В таких протоколах возможна отправка более сложных графических примитивов и команд высокого уровня в более простой форме (например, создать окно), тогда как RFB просто отправляет необработанные пиксельные данные, хоть и сжатые.
Примечания
[править | править код]- ↑ Камерон Лейрд. Искусство VNC. Как научиться работе с великолепным инструментом виртуализации . IBM DW (12 декабря 2007). Дата обращения: 25 октября 2018. Архивировано 26 октября 2018 года.
- ↑ Richardson, Tristan. Sections 6.4.6, 6.5.4 // The RFB Protocol - Version 3.8 (неопр.). — 2010.
Ссылки
[править | править код]- 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
Для улучшения этой статьи желательно:
|