VNC – қашықтан компьютерді басқару жүйесі. RFB протоколы арқылы экранды бөлісіп, файлдарға қол жеткізіңіз. Түрлі платформалармен үйлесімді, қолдауға қолайлы.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Графикалық жұмыс үстелі бөлісу жүйесі
Graphical desktop sharing system
Виртуалды желілік есептеу (VNC) – басқа компьютерді қашықтан басқару үшін қашықтан фрейм буфері протоколын (RFB) пайдаланатын графикалық жұмыс үстелі бөлісу жүйесі. Ол пернетақта мен тышқанның енгізуін бір компьютерден екіншісіне, графикалық экранның жаңаруларын желі арқылы жібереді. VNC платформаға тәуелсіз – көптеген графикалық интерфейске негізделген операциялық жүйелер және Java үшін клиенттер мен серверлер бар. Бір уақытта бірнеше клиент VNC серверіне қосылуы мүмкін. Бұл технологияны қолдануда кең таралған түрлері – қашықтан техникалық қолдау көрсету және жұмыс компьютеріндегі файлдарға үйдегі компьютерден немесе керісінше қол жеткізу. VNC бастапқыда Ұлыбританияның Кембридж қаласында орналасқан Olivetti & Oracle Research Lab-те жасалды. Бастапқы VNC коды және көптеген қазіргі туындылары GNU General Public License лицензиясы бойынша ашық кодты құрады. VNC-нің өзіндік ерекше функционалдығын ұсынатын бірқатар нұсқалары бар; мысалы, кейбіреулері Microsoft Windows үшін оңтайландырылған, немесе файлдарды жіберу мүмкіндігін ұсынады (бұл VNC-нің негізгі бөлігі емес) және т.б. Көптеген нұсқалары VNC-мен үйлесімді (қосымша мүмкіндіктері жоқ), яғни бір нұсқадағы қараушы басқа нұсқадағы серверге қосыла алады; ал кейбіреулері VNC кодына негізделген, бірақ стандартты VNC-мен үйлесімсіз. VNC және RFB – АҚШ және басқа да елдерде RealVNC Ltd. тіркелген тауарлық белгілері.
Virtual Network Computing (VNC) is a graphical desktop sharing system that uses the Remote Frame Buffer protocol (RFB) to remotely control another computer. It transmits the keyboard and mouse input from one computer to another, relaying the graphical screen updates, over a network. VNC is platform independent – there are clients and servers for many GUI based operating systems and for Java. Multiple clients may connect to a VNC server at the same time. Popular uses for this technology include remote technical support and accessing files on one's work computer from one's home computer, or vice versa. VNC was originally developed at the Olivetti & Oracle Research Lab in Cambridge, United Kingdom. The original VNC source code and many modern derivatives are open source under the GNU General Public License. There are a number of variants of VNC which offer their own particular functionality; e. g., some optimised for Microsoft Windows, or offering file transfer (not part of VNC proper), etc. Many are compatible (without their added features) with VNC proper in the sense that a viewer of one flavour can connect with a server of another; others are based on VNC code but not compatible with standard VNC. VNC and RFB are registered trademarks of RealVNC Ltd. in the US and some other countries.
Этимология
Виртуалды желілік компьютер/компьютер (VNC) атауы ORL-дің Videotile деп аталатын жұқа клиент үстіндегі жұмысынан туындады, ол RFB протоколын да қолданды. Videotile қаламмен басқаруға болатын LCD дисплейімен және желіге жылдам ATM қосылымымен жабдықталған. Сол кезде желілік компьютер жиі жұқа клиенттің синонимі ретінде қолданылатын; VNC, по сути, тек бағдарламалық құралдан (яғни виртуалды) тұратын желілік компьютер.
The name Virtual Network Computer/Computing (VNC) originated with ORL's work on a thin client called the Videotile, which also used the RFB protocol. The Videotile had an LCD display with pen input and a fast ATM connection to the network. At the time, network computer was commonly used as a synonym for a thin client; VNC is essentially a software only (i. e. virtual) network computer.
Операция
VNC сервері – машинадағы экранның бір бөлігін бөлісетін (және физикалық дисплеймен байланысты болмауы мүмкін – сервер «бассыз» болуы мүмкін) бағдарлама, және клиентке оны басқаруды бөлісуге мүмкіндік береді. VNC клиенті (немесе көрермен) – серверден келетін экран деректерін көрсететін, одан жаңартуларды алатын және жиналған жергілікті кіріс туралы хабарлау арқылы оны басқаратын бағдарлама. VNC протоколы (RFB протоколы) өте қарапайым, серверден клиентке бір графикалық примитивті жіберуге негізделген («көрсетілген X,Y координатасына пикселдік деректермен тіктөртбұрыш салыңыз») және клиенттен серверге оқиға туралы хабарламалар. Әдеттегі жұмыс режимінде көрермен сервердегі портқа қосылады (әдепкі порт: 5900). Басқаша (іске асыруға байланысты) браузер серверге қосыла алады (әдепкі порт: 5800). Сервер 5500 портында «тыңдау режимінде» көрерменмен байланыса алады. Тыңдау режимінің бір артықшылығы – сервер жағындағы өрт қабырғаны 5900 (немесе 5800) портына кіруге рұқсат беру үшін конфигурациялаудың қажеті жоқ; бұл міндет көрерменге жүктеледі, егер сервер жағында компьютерлік тәжірибе болмаса және көрермен пайдаланушысы көбірек білсе, бұл ыңғайлы. Сервер клиентке фреймбуфердің кішкентай тіктөртбұрыштарын жібереді. Ең қарапайым түрінде VNC протоколы көп өткізу қабілетін пайдалана алады, сондықтан байланыс шығындарын азайту үшін әртүрлі әдістер ойлап табылды. Мысалы, әртүрлі кодтаулар бар (осы тіктөртбұрыштарды берудің ең тиімді жолын анықтау әдістері). VNC протоколы клиент пен серверге қолданатын кодтауды келісуге мүмкіндік береді. Барлық клиенттер мен серверлер қолдайтын ең қарапайым кодтау – шикі кодтау, ол пикселдік деректерді солдан оңға қарай сканерлеу тәртібімен жібереді, ал бастапқы толық экран жіберілгеннен кейін тек өзгерген тіктөртбұрыштар ғана жіберіледі. Бұл кодтау экранның кішкентай бөлігі ғана бір кадрдан екіншісіне өзгеретін жағдайда жақсы жұмыс істейді (мысалы, тышқанның курсоры жұмыс үстелінде жылжығанда немесе курсорға мәтін жазылғанда), бірақ көптеген пикселдер бір уақытта өзгеретін болса (мысалы, терезені жылдырғанда немесе толық экранды бейне көру кезінде) өткізу қабілетінің талаптары өте жоғары болады. VNC әдетте TCP 5900+N портын пайдаланады, мұнда N – дисплей нөмірі (әдетте физикалық дисплей үшін :0). Кейбір іске асырулар сонымен қатар 5800+N портында қарапайым HTTP серверін іске қосады, бұл Java апплеты ретінде VNC көрерменін қамтамасыз етеді, бұл кез келген Java қосылған веб-браузер арқылы оңай қосылуға мүмкіндік береді. Клиент пен сервер сәйкес конфигурацияланған жағдайда әртүрлі порттарды пайдалануға болады. Қазіргі заманғы браузерлер үшін HTML5 VNC клиентінің іске асырылуы (қосымшалар қажет емес) бар. Төмен өткізу қабілетімен де мүмкін болса да, егер пайдаланушының екі жағында да кең жолақты қосылысы болса, Интернет арқылы VNC пайдалану жеңілдетіледі. Алайда, ол желілік адресті аударуды (NAT), өрт қабырғаны және маршрутизаторды конфигурациялауды, мысалы, портты қайта бағыттауды қажет етуі мүмкін, байланыс жасау үшін. Пайдаланушылар Интернет арқылы пайдалануды жеңілдету үшін виртуалды жеке желі (VPN) технологияларын пайдалана алады немесе VPN прокси ретінде пайдаланылса LAN қосылысы ретінде, немесе VNC ретрансляторы арқылы (NAT болған кезде пайдалы). Xvnc – стандартты X серверіне негізделген Unix VNC сервері. Қолданбаларға Xvnc X «сервері» ретінде көрінеді (яғни клиент терезелерін көрсетеді), ал қашықтағы VNC пайдаланушыларына бұл VNC сервері. Қолданбалар Xvnc-те өзін қарапайым X дисплейі ретінде көрсетуі мүмкін, бірақ олар физикалық экранда емес, кез келген қосылған VNC көрермендерінде пайда болады. Басқаша айтқанда, VNC серверін қызмет немесе демон ретінде іске қосу және іске қосу үшін экран, пернетақта және тышқан бар машинаны (жұмыс станциясы немесе желілік сервер болуы мүмкін) орнатуға болады, содан кейін экран, пернетақта және тышқан алынып тасталуы мүмкін және машинаны ыңғайлы орынға қоюға болады. Сонымен қатар, VNC көрсететін дисплей пайдаланушының серверде көретін дисплейімен бірдей болуы міндетті емес. Бірнеше бір уақыттағы X11 сессияларын қолдайтын Unix/Linux компьютерлерінде VNC белгілі бір қолданыстағы X11 сессияларын көрсетуге немесе өз сессиясын бастауға орнатылуы мүмкін. Сонымен қатар, бір компьютерден бірнеше VNC сессиясын іске қосуға болады. Microsoft Windows-та VNC сессиясы әрқашан ағымдағы пайдаланушы сессиясы болып табылады. Пайдаланушылар VNC-ді көп платформалық қашықтан басқару жүйесі ретінде жиі пайдаланады. Мысалы, Apple Remote Desktop for Mac OS X (және бір кезде, 'Leopard' – Mac OS X 10.5 арқылы 'High Sierra' – macOS 10.13) VNC-мен өзара әрекеттеседі және егер ол x11vnc арқылы көрсетілсе Unix пайдаланушысының ағымдағы жұмыс үстеліне қосылады немесе TightVNC арқылы көрсетілсе жеке X11 сессиясына қосылады. Unix-тен TightVNC VNC опциясы қосылған жағдайда Apple Remote Desktop көрсеткен Mac OS X сессиясына немесе Microsoft Windows-тағы VNC серверіне қосылады. 2014 жылдың шілдесінде RealVNC Wayland әзірлеушілерге арналған балама нұсқасын жариялады.
The VNC server is the program on the machine that shares some screen (and may not be related to a physical display – the server can be "headless"), and allows the client to share control of it. The VNC client (or viewer) is the program that represents the screen data originating from the server, receives updates from it, and presumably controls it by informing the server of collected local input. The VNC protocol (RFB protocol) is very simple, based on transmitting one graphic primitive from server to client ("Put a rectangle of pixel data at the specified X,Y position") and event messages from client to server. In the normal method of operation a viewer connects to a port on the server (default port: 5900). Alternatively (depending on the implementation) a browser can connect to the server (default port: 5800). And a server can connect to a viewer in "listening mode" on port 5500. One advantage of listening mode is that the server site does not have to configure its firewall to allow access on port 5900 (or 5800); the duty is on the viewer, which is useful if the server site has no computer expertise and the viewer user is more knowledgeable. The server sends small rectangles of the framebuffer to the client. In its simplest form, the VNC protocol can use a lot of bandwidth, so various methods have been devised to reduce the communication overhead. For example, there are various encodings (methods to determine the most efficient way to transfer these rectangles). The VNC protocol allows the client and server to negotiate which encoding they will use. The simplest encoding, supported by all clients and servers, is raw encoding, which sends pixel data in left to right scanline order, and after the original full screen has been transmitted, transfers only rectangles that change. This encoding works very well if only a small portion of the screen changes from one frame to the next (as when a mouse pointer moves across a desktop, or when text is written at the cursor), but bandwidth demands get very high if a lot of pixels change at the same time (such as when scrolling a window or viewing full screen video). VNC by default uses TCP port 5900+N, where N is the display number (usually :0 for a physical display). Several implementations also start a basic HTTP server on port 5800+N to provide a VNC viewer as a Java applet, allowing easy connection through any Java enabled web browser. Different port assignments can be used as long as both client and server are configured accordingly. A HTML5 VNC client implementation for modern browsers (no plugins required) exists too. Although possible even on low bandwidth, using VNC over the Internet is facilitated if the user has a broadband connection at both ends. However, it may require advanced network address translation (NAT), firewall and router configuration such as port forwarding in order for the connection to go through. Users may establish communication through virtual private network (VPN) technologies to ease usage over the Internet, or as a LAN connection if VPN is used as a proxy, or through a VNC repeater (useful in presence of a NAT). Xvnc is the Unix VNC server, which is based on a standard X server. To applications, Xvnc appears as an X "server" (i. e., it displays client windows), and to remote VNC users it is a VNC server. Applications can display themselves on Xvnc as if it were a normal X display, but they will appear on any connected VNC viewers rather than on a physical screen. Alternatively, a machine (which may be a workstation or a network server) with screen, keyboard, and mouse can be set up to boot and run the VNC server as a service or daemon, then the screen, keyboard, and mouse can be removed and the machine stored in an out of the way location. In addition, the display that is served by VNC is not necessarily the same display seen by a user on the server. On Unix/Linux computers that support multiple simultaneous X11 sessions, VNC may be set to serve a particular existing X11 session, or to start one of its own. It is also possible to run multiple VNC sessions from the same computer. On Microsoft Windows the VNC session served is always the current user session. Users commonly deploy VNC as a cross platform remote desktop system. For example, Apple Remote Desktop for Mac OS X (and for a time, "Back to My Mac" in 'Leopard' – Mac OS X 10.5 through 'High Sierra' – macOS 10.13) interoperates with VNC and will connect to a Unix user's current desktop if it is served with x11vnc, or to a separate X11 session if one is served with TightVNC. From Unix, TightVNC will connect to a Mac OS X session served by Apple Remote Desktop if the VNC option is enabled, or to a VNC server running on Microsoft Windows. In July 2014 RealVNC published a Wayland developer preview.
Қауіпсіздік
RFB әдетте қауіпсіз протокол емес. Парольдер қарапайым мәтінде жіберілмесе де (telnet-тегі сияқты), шифрлау кілті мен кодталған пароль желіден ұрланып алынса, оны бұзу мүмкін. Сондықтан кем дегенде 8 таңбадан тұратын парольді пайдалану ұсынылады. Дегенмен, VNC-нің кейбір нұсқаларында 8 таңбалық шектеу бар; егер 8 таңбадан асатын пароль жіберілсе, артық таңбалар жойылып, қысқартылған тізбе парольмен салыстырылады. UltraVNC парольді аутентификациялау және деректерді беруді қамтитын, VNC сессиясының барлығын шифрлейтін ашық кодты шифрлау плагинін қолдайды. Ол сондай-ақ NTLM және Active Directory пайдаланушы тіркелгілеріне негізделген аутентификацияны жүргізуге мүмкіндік береді. Алайда, мұндай шифрлау плагиндерін пайдалану оны басқа VNC бағдарламаларымен үйлесімсіз етеді. RealVNC өзінің коммерциялық жиынтығының бір бөлігі ретінде жоғары деңгейдегі AES шифрлауын ұсынады және Active Directory-мен интеграциялайды. Workspot VNC үшін AES шифрлау жаңартуларын жариялады. TightVNC мәлімдегендей, кескіндер деректері шифрланбағандықтан TightVNC қауіпсіз емес. Бұдан сақтану үшін оны SSH қосылымы арқылы туннельдеу керек (төменде қараңыз). VNC күшті шифрлаумен қосымша қауіпсіздік қабатын қамтамасыз ететін SSH немесе VPN қосылымы арқылы туннельделуі мүмкін. SSH клиенттері көптеген платформалар үшін қолжетімді; SSH туннельдерін UNIX клиенттерінен, Microsoft Windows клиенттерінен, Mac клиенттерінен (Mac OS X және System 7 және одан жоғары) және тағы да көптеген жүйелерден жасауға болады. Компьютерлер арасында жылдам VPN туннельдерін құратын тегін бағдарламалар да бар. VNC-ні пайдалану кезіндегі қосымша қауіпсіздік шарасы – қолданылатын нұсқаның, біреу құрылғыны басқаруды қолға алмас бұрын қашықтағы компьютер иесінен рұқсат алуын тексеру. Бұл компьютер иесінің ешқандай ескертусіз құрылғысын басқа біреу басқарып жатқанын байқауына жол бермейді.
By default, RFB is not a secure protocol. While passwords are not sent in plain text (as in telnet), cracking could prove successful if both the encryption key and encoded password were sniffed from a network. For this reason it is recommended that a password of at least 8 characters be used. On the other hand, there is also an 8 character limit on some versions of VNC; if a password is sent exceeding 8 characters, the excess characters are removed and the truncated string is compared to the password. UltraVNC supports the use of an open source encryption plugin which encrypts the entire VNC session including password authentication and data transfer. It also allows authentication to be performed based on NTLM and Active Directory user accounts. However, use of such encryption plugins makes it incompatible with other VNC programs. RealVNC offers high strength AES encryption as part of its commercial package, along with integration with Active Directory. Workspot released AES encryption patches for VNC. According to TightVNC, TightVNC is not secure as picture data is transmitted without encryption. To circumvent this, it should be tunneled through an SSH connection (see below). VNC may be tunneled over an SSH or VPN connection which would add an extra security layer with stronger encryption. SSH clients are available for most platforms; SSH tunnels can be created from UNIX clients, Microsoft Windows clients, Mac clients (including Mac OS X and System 7 and up) – and many others. There are also freeware applications that create instant VPN tunnels between computers. An additional security concern for the use of VNC is to check whether the version used requires authorization from the remote computer owner before someone takes control of their device. This will avoid the situation where the owner of the computer accessed realizes there is someone in control of their device without previous notice.