Protokół RFB

RFB („ zdalny bufor ramki ”) to otwarty, prosty protokół zdalnego dostępu do graficznych interfejsów użytkownika . Ponieważ działa na bufora ramki , ma zastosowanie do wszystkich systemów i aplikacji okienkowych, w tym Microsoft Windows , macOS i X Window System . RFB to protokół używany w technologii Virtual Network Computing (VNC) i jego pochodnych.

Opis

Domyślnie przeglądarka/klient używa portu TCP 5900 do łączenia się z serwerem (lub 5800 w celu uzyskania dostępu do przeglądarki), ale można go również ustawić tak, aby korzystał z dowolnego innego portu. Alternatywnie serwer może połączyć się z przeglądarką w „trybie nasłuchiwania” (domyślnie na porcie 5500). Jedną z zalet trybu nasłuchiwania jest to, że serwer nie musi konfigurować zapory sieciowej/NAT, aby umożliwić dostęp do określonych portów; ciężar spoczywa na przeglądającym, co jest przydatne, jeśli serwer nie ma wiedzy informatycznej, podczas gdy od użytkownika przeglądającego oczekuje się większej wiedzy.

w miarę rozwoju został udoskonalony o dodatkowe funkcje (takie jak przesyłanie plików) oraz bardziej wyrafinowane techniki kompresji i bezpieczeństwa. Aby zachować płynną kompatybilność między wieloma różnymi implementacjami klientów i serwerów VNC, klienci i serwery negocjują połączenie przy użyciu najlepszej wersji RFB oraz najbardziej odpowiednich opcji kompresji i bezpieczeństwa, które oba mogą obsługiwać.

Historia

RFB został pierwotnie opracowany w Olivetti Research Laboratory (ORL) jako technologia zdalnego wyświetlania do użytku przez prostego cienkiego klienta z łącznością w trybie transferu asynchronicznego zwanego Videotile. Aby urządzenie było jak najprostsze, opracowano i zastosowano technologię RFB zamiast jakiejkolwiek istniejącej technologii zdalnego wyświetlania.

Kiedy opracowano VNC, RFB znalazło drugie i trwalsze zastosowanie. VNC zostało wydane jako typu open source , a specyfikacja RFB została opublikowana w Internecie. Od tego czasu RFB jest darmowym protokołem, z którego może korzystać każdy.

Kiedy w 2002 roku ORL został zamknięty, niektórzy z kluczowych ludzi stojących za VNC i RFB utworzyli RealVNC , Ltd., aby kontynuować rozwój VNC i utrzymywać protokół RFB. Aktualny protokół RFB jest opublikowany na stronie internetowej RealVNC .

Wersje protokołu

Opublikowane wersje protokołu RFB są następujące:

Wersja Opublikowany Data Specyfikacja
RFB 3.3 ORL Styczeń 1998 Protokół zdalnego bufora ramki 3.3
RFB 3.7 RealVNC spółka z ograniczoną odpowiedzialnością sierpień 2003 Protokół zdalnego bufora ramki 3.7
RFB 3.8 (prąd) RealVNC spółka z ograniczoną odpowiedzialnością Czerwiec 2007 Protokół zdalnego bufora ramki 3.8
RFC IETF (3.8) RealVNC spółka z ograniczoną odpowiedzialnością Marzec 2011   RFC 6143

Programiści mogą dodawać dodatkowe kodowania i typy zabezpieczeń, ale muszą zarezerwować dla nich unikalne numery identyfikacyjne u opiekunów protokołu, aby numery się nie kolidowały. Zderzające się numery typów powodowałyby zamieszanie podczas uzgadniania połączenia i zakłócały kompatybilność krzyżową między implementacjami. Lista typów kodowania i zabezpieczeń prowadzona jest przez firmę RealVNC Ltd i jest oddzielona od specyfikacji protokołu, dzięki czemu można dodawać nowe typy bez konieczności ponownego wydawania specyfikacji. Od grudnia 2012 lista trafiła do IANA .

Społecznościowa wersja specyfikacji protokołu RFB, której celem jest udokumentowanie wszystkich istniejących rozszerzeń, jest udostępniana w ramach projektu TigerVNC .

Typy kodowania

Ponieważ kodowanie jest częścią negocjacji, niektóre z poniższych kodowań to pseudokodowania używane do reklamowania możliwości obsługi określonego rozszerzenia.

Kodowanie RFB
Numer Kodowanie
0x00000000 Surowy
0x00000001 KopiujRect
0x00000002 RRE (długość rosnącego prostokąta)
0x00000004 CoRRE (kompaktowy RRE)
0x00000005 Hextile (wariant RRE)
0x00000006 Zlib
0x00000007 Obcisły
0x00000008 ZlibHex (Zlib + Hextile)
0x00000009 Ultra
0x00000010 ZRLE (długość biegu Zlib)
0x00000011 ŻYWRLE
0x00000014 H.264
0x00000032 Otwórz H.264
0xFFFF0001 Włącz pamięć podręczną
0xFFFF0006 XORenable
0xFFFF8000 Stan serwera (UltraVNC)
0xFFFF8001 WłączKeepAlive (UltraVNC)
0xFFFF8002 FTProtocolVersion (wersja protokołu przesyłania plików — UltraVNC)
0xFFFFFEC7 Ciągłe aktualizacje
0xFFFFFEC8 Ogrodzenie
0xFFFFFECC Rozszerzony rozmiar pulpitu
0xFFFFFFECF Ogólny interfejs wejściowy (GII)
0xFFFFFF00–0xFFFFFF09 CompressLevel (ścisłe kodowanie)
0xFFFFFF10 XKursor
0xFFFFFF11 Bogaty kursor
0xFFFFFF18 WskaźnikPoz
0xFFFFFF20 OstatniRekt
0xFFFFFF21 NowyFBSize
0xFFFFFF74 Ciasne PNG
0xFFFFFFFE0–0xFFFFFE9 Poziom jakości (ścisłe kodowanie)

Spośród publicznie zdefiniowanych kodowań opartych na obrazach najskuteczniejsze są typy kodowania Tight. TightVNC definiuje dwa typy kodowania:

  • Tight Encoding, mieszanka prostokąta, palety i wypełnienia gradientowego za pomocą Zlib i JPEG, a także „podstawowa kompresja” Zlib-plus-filter.
  • Ścisłe kodowanie PNG. Ścisłe kodowanie z podstawową kompresją zastąpione danymi PNG .

Badano kodowanie danych RFB w formacie H.264 , ale twórca TurboVNC określił wstępne wyniki (przy użyciu formatu Open H.264) jako słabe . Staje się bardziej wydajny przy mniejszej liczbie klatek I (klatek kluczowych), ale problemem pozostaje wykorzystanie procesora.

Ograniczenia

Jeśli chodzi o przesyłanie danych ze schowka, „obecnie nie ma możliwości przeniesienia tekstu poza zestawem znaków Latin-1”. Powszechne rozszerzenie pseudokodowania rozwiązuje problem, używając UTF-8 w rozszerzonym formacie.

Protokół VNC opiera się na pikselach. Chociaż prowadzi to do dużej elastyczności (tj. można wyświetlić dowolny typ pulpitu), często jest mniej wydajne niż rozwiązania, które lepiej rozumieją podstawowy układ graficzny, jak X11 lub pulpit, taki jak RDP . Protokoły te wysyłają podstawowe elementy graficzne lub polecenia wysokiego poziomu w prostszej formie (np. otwarte okno), podczas gdy RFB wysyła po prostu surowe dane pikseli, choć skompresowane.

Protokół VNC wyraża stan przycisku myszy w pojedynczym bajcie, jako binarnie góra/dół. Ogranicza to liczbę przycisków myszy do ośmiu (w rzeczywistości 7, biorąc pod uwagę konwencję przycisku 0 oznaczającego „wyłączony”). Wiele nowoczesnych myszy ma 9 lub więcej przycisków, co powoduje, że przyciski do przodu/do tyłu nie mają wpływu na RFB. Rozszerzenie „GII” rozwiązuje ten problem.

Zobacz też

Linki zewnętrzne