Введение

Компьютерный сетевой протокол

RFB (Remote Framebuffer – «удаленный фреймбуфер») — это открытый и простой протокол для удаленного доступа к графическим пользовательским интерфейсам. Поскольку он работает на уровне фреймбуфера, он применим ко всем оконным системам и приложениям, включая Microsoft Windows, macOS, X Window System и Wayland. RFB является протоколом, используемым в Virtual Network Computing (VNC) и его производных.

Описание

По умолчанию, просмотрщик/клиент использует TCP-порт 5900 для подключения к серверу (или 5800 для доступа через браузер), но может быть настроен на использование любого другого порта. В качестве альтернативы, сервер может подключаться к просмотрщику, работающему в "режиме прослушивания" (по умолчанию на порту 5500). Одним из преимуществ режима прослушивания является то, что стороне сервера не требуется настраивать свой брандмауэр/NAT для разрешения доступа к указанным портам; эта задача ложится на просмотрщик, что удобно, если на стороне сервера нет специалистов по компьютерам, в то время как от пользователя просмотрщика ожидаются более глубокие знания. Хотя RFB изначально был относительно простым протоколом, он был дополнен новыми функциями (например, передачей файлов), а также более сложными методами сжатия и обеспечения безопасности по мере его развития. Для обеспечения бесперебойной кросс-совместимости между множеством различных реализаций VNC-клиентов и серверов, клиенты и серверы согласовывают соединение, используя наилучшую поддерживаемую версию RFB и наиболее подходящие параметры сжатия и безопасности.

История

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

Ограничения

Что касается передачи данных из буфера обмена, "в настоящее время нет способа передачи текста вне набора символов Latin 1". Распространенное псевдокодировочное расширение решает эту проблему, используя UTF-8 в расширенном формате. Протокол VNC основан на пикселях. Хотя это обеспечивает большую гибкость (то есть любой тип рабочего стола может быть отображен), он часто менее эффективен, чем решения, которые лучше понимают базовую графическую структуру, такие как X11 или настольные среды, такие как RDP. Эти протоколы отправляют графические примитивы или команды высокого уровня в более простом виде (например, "открыть окно"), в то время как RFB просто отправляет необработанные пиксельные данные, хотя и сжатые. Протокол VNC выражает состояние кнопок мыши в одном байте, в двоичном формате "нажата/отпущена". Это ограничивает количество кнопок мыши до восьми (фактически 7, учитывая, что кнопка 0 означает "отключена"). Многие современные мыши имеют 9 и более кнопок, из-за чего кнопки "вперед/назад" не оказывают никакого эффекта при использовании RFB. Расширение "GII" решает эту проблему. Стандарта для передачи звуковых данных не существует вообще, за исключением того, что сервер может подать сигнал о необходимости воспроизвести звуковой сигнал (звуковой сигнал, звук уведомления) на стороне клиента.