Távoli Framebuffer protokoll
| RFB (Remote Framebuffer Protocol) | |||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Család: | Internet protokoll család | ||||||||||||||||||||||||
| Működési terület: | Adatátvitel, képernyő tartalma, felhasználói bevitel |
||||||||||||||||||||||||
| Kikötő: | 5900 / TCP (lásd a szöveget ) | ||||||||||||||||||||||||
| |||||||||||||||||||||||||
A Remote Framebuffer Protocol ( RFB ) egy hálózati protokoll, amely hozzáférést biztosít más számítógépek grafikus felhasználói felületeihez (GUI) . A VNC a képernyő tartalmának és a felhasználói bevitel továbbítására használja .
Alapelv
Az RFB szerver úgynevezett "képernyőt" kínál. Ezen általában egy „ asztali számítógép ” vagy egy távoli számítógépen futó grafikus munkakörnyezet egyetlen programja vagy a kapcsolódó alkalmazások jelennek meg . Az RFB kliens ezt az asztalt általában a felhasználó munkaállomás számítógépén jeleníti meg, megkapja a felhasználó bevitelét ( billentyűzet bemenetek , egérmozgások és kattintások stb.), És továbbítja azokat az RFB szervernek, amely ellenőrzi az ottani munkakörnyezetet.
Mivel a bitkép-orientált grafikus memória ( angol framebuffer ) szintjén működik, bármilyen ablakrendszeren használható, például Windows , Mac OS vagy X11 . A képernyő tartalmát bitképként továbbítják, ezáltal általában csak a megfelelő változásokat továbbítják a kliensnek - megfelelő kódolásban, lásd alább. Vannak színmélységet 8, 16 és 32 bit pixel támogatásával a RFB ügyfél kéri a kívánt színmélységet és kódoló a szerver és a szerver, hogy kövessék a kívánságait az ügyfél, ha támogatja a kívánt kódolást. Ez a kialakítás lehetővé teszi az ügyféllel szemben támasztott követelmények egyszerűségét és ezáltal a vékony kliensek használatának támogatását.
Az RFB kapcsolatok hontalanok , így a kapcsolat megszakítása vagy az RFB kliens megváltoztatása problémamentesen lehetséges a hozzárendelt munkamenet elvesztése nélkül. Az RFB és a VNC végső célja a számítógépeken végzett távmunka támogatása egységes munkakörnyezetben.
Port és asztali számok
A VNC eredeti Unix verziójában minden VNC szerver saját X szerver, és pontosan egy X asztalt képvisel ( Xvnc ). Az első szabad X szerver számot a VNC alapértelmezés szerint használja. Ha a gépen már fut egy helyi X szerver, amely így :0elfoglalja az X asztalt , a VNC megkapja az asztalt :1. A TCP port száma által elfoglalt VNC van általában 5901 alatt Unix. Néhány VNC szerver a kikötői 5800 vagy egy Java applet , amellyel az asztalon lehet megtekinteni és ellenőrizni a böngésző .
5900 + desktopnummer5800 + desktopnummer
A Windows és a Mac OS X alatt általában nincs helyi X szerver, így a VNC :0foglalja el az asztalt és így az 5900 TCP portot. Ezt a portot használja az Unix x11vnc program is , amely a meglévő helyi X szervert :0kínálja VNC asztalként.
A protokoll részletei
Kézfogás és verzióazonosítók
Amint létrejön a TCP kapcsolat, a szerver elküldi az ügyfélnek az általa támogatott RFB verziószámot, amelyre az ügyfél a protokoll verziószámával válaszol. A protokollverzió struktúrája főverzió .kisebb verzió . Feltételezzük, hogy az azonos főverzióval rendelkező protokollverziók kompatibilisek egymással. A mindkét partner által támogatott legnagyobb verziószám megegyezettnek tekinthető a későbbi csatlakozáshoz. Minden kommunikációs partner azonban szabadon megszakíthatja a kapcsolatot a protokollváltozatok cseréje után, ha a megbeszélt protokollverziót nem lehet vagy nem szabad kommunikációra használni.
A verzióazonosító mindig 12 bájt hosszú ASCII karakterlánc, amelyet LineFeed karakterrel zárunk . A leggyakoribb verziók: 3.3, 3.7 és 3.8:
| változat | Azonosító | Azonosító (hex) | Megengedett |
|---|---|---|---|
| 3.3 | RFB 003.003\n |
52 46 42 20 30 30 33 2E 30 30 33 0A |
1998. január, Olivetti Research Laboratories (ORL) |
| 3.7 | RFB 003.007\n |
52 46 42 20 30 30 33 2E 30 30 37 0A |
2003. július: a RealVNC Ltd. |
| 3.8 | RFB 003.008\n |
52 46 42 20 30 30 33 2E 30 30 38 0A |
2005. július: a RealVNC Ltd. |
Egyes ügyfelek helytelenül jelentik a 3.5 protokoll verzióját. Ezt úgy kell kezelni, mint a szerver oldali 3.3 verziót.
Kliens hitelesítés
Ha az ügyfél és a kiszolgáló kompatibilis RFB verziót kötött, a kiszolgáló elküldi az ügyféltől a szükséges hitelesítés típusát. Az eredeti RFB specifikációban két típus van meghatározva: "VNC hitelesítés" vagy "nincs hitelesítés". A hitelesítés más típusait azonban harmadik fél gyártói határozták meg. Az ügyfél eldönti, hogy a szerver által kínált hitelesítési típusok közül melyiket akarja hitelesíteni a szerveren.
inicializálás
A sikeres hitelesítés után az ügyfél 1 bájtos „ClientInit” üzenetet küld. Ez csak egy jelzőt tartalmaz, amely jelzi, hogy az ügyfél elfogad-e "megosztott" kapcsolatot, azaz. Ez azt jelenti, hogy megengedett a szerverről a többi ügyfélhez való kapcsolat, vagy (ha a zászló értéke 0), meg kell szakítani.
Ezután a szerver küld egy "ServerInit" üzenetet. Ez tartalmazza az asztal nevét (amely gyakran a kiszolgáló számítógépének nevéből származik), az asztal méretét (pixelben), valamint a kiszolgáló oldalán lévő natív színmélységet és a pixelek elrendezését. A képadatokat alapértelmezés szerint ebben a formátumban továbbítják az ügyfélnek, kivéve, ha az ügyfél más formátumban kéri az adatokat, amelyet az ügyfél könnyebben feldolgozhat a „SetPixelFormat” üzeneten keresztül.
Adatátvitel
Az ügyfél ellenőrzi, hogy az adatokat továbbítani kell-e és mikor. Elküldi a helyi billentyűzetet és egeret a szerverre. Ezenkívül rendszeresen „FramebufferUpdateRequest” üzeneteket küld a szervernek, amely aztán a képernyő tartalmának változásait (az utolsó FramebufferUpdateRequest óta) elküldi az ügyfélnek.
Az eredeti RFB változatban az egérmutató mozdulatait normál keretpuffer frissítésekkel is elküldték az ügyfélnek. Az átvihető adatok mennyisége meglehetősen magas, és mindenekelőtt a hozzájuk tartozó késések nehezítik a működést. Az RFB 3.8 verziójával egy kiterjesztést vezettek be, amely lehetővé teszi az egérmutató helyi megrajzolását az ügyfél számára, és csak az egér nyíljának megjelenését és annak változásait (például amikor az egér nyíl egy bemeneti mező fölé mozog, majd az I A kurzor átkerül az ügyfélhez.
A 3.8 verzió óta. az asztal méretének változását továbbítják az ügyfélnek. A korábbi verziókban a szervernek meg kellett szakítania a kapcsolatot az ügyféllel, mivel az asztal méretét csak a kapcsolat inicializálási szakaszában lehetett átvinni az ügyfélnek.
web Linkek
- RFC 6143 - A távoli framebuffer protokoll