Belajar Remote Desktop - Arsitektur & Cara Kerja VNC/RDP
Episode 2 of 23

Belajar Remote Desktop - Arsitektur & Cara Kerja VNC/RDP

Episode ini membedah arsitektur internal VNC dan RDP: model server-to-client pada RFB, kaitan display dengan port 5900, peran vncpasswd, mekanisme encoding Tight, Hextile, dan ZRLE yang menentukan kualitas dan latensi, hingga NLA pada arsitektur RDP.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Di episode 1 kalian sudah mengenal asal-usul remote desktop. Episode 2 masuk lebih dalam: bagaimana sebenarnya VNC dan RDP bekerja di balik layar? Kalian tidak perlu menjadi penulis protokol, tapi memahami arsitektur ini akan menyelamatkan kalian saat koneksi lambat, layar hitam, atau refresh yang patah-patah.

Fokus episode ini ada tiga: model komunikasi server-client pada protokol RFB, mekanisme encoding yang menentukan efisiensi bandwidth, dan arsitektur RDP beserta NLA. Di akhir episode, kalian akan tahu kenapa VNC kadang terasa "berat" di jaringan lambat, dan mengapa RDP lebih unggul di skenario tersebut.

Arsitektur VNC (RFB)

Model Server ke Client

VNC bekerja dengan pola server-to-client: server memegang framebuffer — representasi piksel dari layar yang di-share — lalu mengirim potongan-potongan layar ke viewer. Arah sebaliknya hanya berisi event input: gerakan mouse, klik, dan penekanan tombol keyboard.

Inilah kenapa VNC sangat portable: karena yang ditransfer adalah piksel, bukan instruksi aplikasi, maka VNC bisa men-share hampir semua sistem yang bisa merender grafis — Linux, Windows, bahkan sistem tanpa GUI murni.

Display, Port, dan vncpasswd

Setiap VNC server punya nomor display. Display :0 berarti port 5900, display :1 berarti port 5901, dan seterusnya dengan rumus 5900 + nomor display. Koneksi bisa dilakukan dalam dua format:

  • host:display — contoh server:1
  • host:port — contoh 192.168.1.20:5901

Saat pertama kali server dibuat, kalian harus menetapkan password dengan vncpasswd. Password inilah yang akan diminta viewer saat handshake:

Membuat password VNC
vncpasswd

Perintah vncpasswd menuliskan password ke file ~/.vnc/passwd secara terenkripsi (DES). File ini dipakai server untuk memvalidasi client pada saat koneksi dibuka. Detail keamanannya — termasuk kelemahan VNC password — akan kita bedah di episode 12.

Encodings: Kompresi dan Kualitas

Apa itu Encoding

Karena VNC mengirim piksel, cara piksel itu dikodekan sangat menentukan kecepatan. Mekanisme ini disebut encoding, dan setiap client-server menyepakati encoding yang dipakai saat handshake. Empat encoding yang paling penting:

  • Raw — kirim piksel apa adanya, tanpa kompresi. Paling cepat diproses, paling boros bandwidth.
  • Hextile — potong layar jadi petak-petak 16x16 dan kirim hanya petak yang berubah.
  • ZRLE — kompresi zlib berlapis dengan run-length encoding; sangat hemat bandwidth.
  • Tight — kombinasi JPEG dan zlib; paling efisien untuk foto dan gradasi halus.

Pengaruh Encoding terhadap Kualitas dan Latensi

Pemilihan encoding adalah kompromi antara CPU, bandwidth, dan kualitas:

  • Tight encoding hemat bandwidth tapi butuh CPU lebih untuk kompresi/dekompresi — ideal untuk WAN.
  • Hextile ringan di CPU dan cukup efisien untuk perubahan area kecil — bagus di LAN.
  • Raw hanya untuk kasus khusus seperti debugging, karena menghabiskan bandwidth.
Memaksa encoding tertentu di viewer
vncviewer -encodings zrle server:1

Opsi -encodings zrle pada vncviewer memberitahu viewer untuk memprioritaskan ZRLE. Di episode 19 kita akan membahas tuning ini lebih jauh saat optimasi performa dan bandwidth.

Arsitektur RDP

Client-Server Bidirectional

Berbeda dengan VNC, RDP bukan sekadar "kirim piksel". RDP adalah protokol bidirectional yang memisahkan presentasi data, input, dan channel periferal dalam lapisan-lapisan tersendiri. Koneksi RDP bisa membawa tidak hanya layar dan input, tapi juga clipboard, printer, sound, dan drive mapping — semua dalam satu sesi.

Port default RDP adalah 3389. Server RDP di Linux biasanya memakai xrdp, yang akan kita bahas menyeluruh di episode 15.

NLA: Network Level Authentication

Salah satu fitur keamanan kunci RDP adalah NLA (Network Level Authentication). Dengan NLA, client harus melakukan autentikasi — biasanya dengan kredensial pengguna — sebelum sesi desktop penuh dibangun. Ini mencegah serangan di mana penyerang berinteraksi dengan layar login palsu atau memboroskan resource server.

Tes koneksi RDP dengan client Linux
xfreerdp /v:192.168.1.20 /u:arman /sec:nla

Perintah xfreerdp /v:... /sec:nla memaksa autentikasi NLA ke server RDP. Dibanding VNC yang autentikasinya "password sebelum layar", RDP mengautentikasi user utuh dengan mekanisme Windows/Linux.

Perbandingan VNC dan RDP

Kapan Masing-Masing Unggul

Dengan memahami arsitekturnya, kalian bisa membandingkan secara adil:

AspekVNCRDP
TransferFramebuffer pikselProtokol berlapis + channel
Efisiensi WANTergantung encodingKompresi bawaan agresif
AutentikasiPassword statisNLA kredensial
PeriferalKeyboard + mouseClipboard, printer, sound, drive
EkstensibilitasRFB spec terbukaProprietary

Aturan praktisnya: di LAN dengan koneksi cepat, VNC dengan encoding Tight/Hextile nyaris tanpa beda dengan RDP. Di WAN dengan bandwidth terbatas, RDP hampir selalu menang karena kompresinya dirancang untuk itu. Tapi VNC tetap juara untuk cross-platform dan kasus di mana kalian hanya butuh melihat layar, bukan memetakan drive atau printer.

Ringkasan arsitektur
LAN  ->  VNC (hextile / tight)
WAN  ->  RDP (NLA + kompresi bawaan)

Penutup

Episode 2 membuka kotak hitam VNC dan RDP: model server-to-client pada RFB dengan pengiriman framebuffer, rumus port 5900 + display, peran vncpasswd, mekanisme encoding Tight/Hextile/ZRLE yang menentukan kualitas dan latensi, hingga arsitektur RDP dengan NLA dan channel periferal.

Inti yang harus dibawa pulang:

  • VNC mengirim piksel framebuffer; RDP adalah protokol berlapis bidirectional.
  • Rumus port VNC: 5900 ditambah nomor display, dan bisa dipanggil host:display.
  • Encoding menentukan kompromi bandwidth vs CPU vs kualitas.
  • Tight hemat bandwidth di WAN; Hextile ringan dan cocok untuk LAN.
  • RDP memakai NLA: autentikasi sebelum sesi desktop penuh dibuat.

Di episode 3 selanjutnya kita mulai praktik: instalasi VNC server di Linux — memilih antara x11vnc, TigerVNC, TightVNC, dan GNOME Remote Desktop, lengkap dengan perintah install di Debian/Ubuntu, RHEL/Rocky, dan Arch. Pastikan mesin server kalian siap, karena mulai episode ini kita serius menyentuh terminal.