Кіріспе

Графикалық жұмыс үстелі бөлісу жүйесі

Виртуалды желілік есептеу (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. тіркелген тауарлық белгілері.

Этимология

Виртуалды желілік компьютер/компьютер (VNC) атауы ORL-дің Videotile деп аталатын жұқа клиент үстіндегі жұмысынан туындады, ол RFB протоколын да қолданды. Videotile қаламмен басқаруға болатын LCD дисплейімен және желіге жылдам ATM қосылымымен жабдықталған. Сол кезде желілік компьютер жиі жұқа клиенттің синонимі ретінде қолданылатын; VNC, по сути, тек бағдарламалық құралдан (яғни виртуалды) тұратын желілік компьютер.

Операция

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 әзірлеушілерге арналған балама нұсқасын жариялады.

Қауіпсіздік

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-ні пайдалану кезіндегі қосымша қауіпсіздік шарасы – қолданылатын нұсқаның, біреу құрылғыны басқаруды қолға алмас бұрын қашықтағы компьютер иесінен рұқсат алуын тексеру. Бұл компьютер иесінің ешқандай ескертусіз құрылғысын басқа біреу басқарып жатқанын байқауына жол бермейді.