RustDesk ve Synchro — Detaylı Teknik Karşılaştırma
Not: Bu proje
rustdesk/rustdesk'in bir forku veya klonu değildir; teknoloji ve mimari tercihler bakımından tamamen bağımsız bir implementasyondur.
1. Genel Mimari
| Özellik | RustDesk (rustdesk/rustdesk) | Synchro | Detaylı Etki |
|---|---|---|---|
| Programlama dili | C++ + Rust hibrit yığın; Flutter (Dart) UI; Protobuf IDL | %100 saf Rust (3.084 satır) + JS relay (324 satır) | Tek dilde geliştirme, hata ayıklama ve bellek güvenliği. Cargo ekosistemi ile bağımlılık yönetimi |
| Proje kimliği | Orijinal açık kaynak projesi, 75K+ GitHub yıldız | Bağımsız implementasyon (onder-ozturk/rustdesk-remote) | İsim benzerliği nedeniyle dokümantasyonda net ayrım şart |
| Kaynak kodu boyutu | ~500K+ LOC (tüm bileşenler) | ~3.400 LOC (Rust + JS) | Minimal kod tabanı, hızlı anlaşılır, kolay bakım |
| Workspace yapısı | Çok modüllü Cargo workspace + Flutter projesi | 2 crate workspace: shared/ (protokol) + app/ (uygulama) | Yalın bağımlılık grafiği, hızlı derleme |
| Relay sunucusu | Kendi rustdesk-server (Rust binary, VPS gerekli) | Cloudflare Worker + Durable Objects (serverless) | Sıfır sunucu yönetimi, otomatik global dağıtım |
| Dashboard | Web konsol + API sunucusu | Statik HTML + Vercel (tek index.html) | Minimum altyapı, anında deploy |
2. İletişim Protokolü
| Özellik | RustDesk | Synchro | Detaylı Etki |
|---|---|---|---|
| Transport | TCP/UDP + kendi NAT traversal (hole punching, TURN) | WebSocket (WSS) üzerinden Cloudflare relay | Firewall/proxy dostu; NAT traversal sorunu yok (relay çözer) |
| Mesaj formatı | Protobuf binary serializasyon | JSON (kontrol) + Custom Binary (frame) | JSON: kolay debug; Binary frame: düşük overhead |
| Frame wire format | Protobuf sarılı VP8/VP9/AV1 codec çıktısı | RD1F magic + 30-byte header + zlib-compressed RGB | Codec bağımsız; sıkıştırma seviyesi ortam değişkeniyle ayarlanır |
| Frame header | Codec-specific metadata | magic(4) + ver(1) + w(4) + h(4) + ts(8) + seq(8) + delta(1) + len(4) = 30 byte | Sabit boyut header, hızlı decode |
| Kontrol mesajları | 50+ Protobuf mesaj tipi | 12 PeerMessage türü: Hello, Authenticate, AuthResult, Frame, MouseMove, MouseButton, MouseScroll, KeyEvent, TextInput, Clipboard, Ping/Pong, Disconnect | Minimal mesaj seti, kolay genişletilebilir |
| Relay mesajları | Kendi sunucu protokolü | 6 RelayMessage türü: Registered, Connected, PeerConnected, PeerDisconnected, Error, Replaced | Tam oturum yaşam döngüsü |
3. Relay Sunucu Mimarisi
| Özellik | RustDesk | Synchro | Detaylı Etki |
|---|---|---|---|
| Sunucu tipi | hbbs (ID/rendezvous) + hbbr (relay) — 2 ayrı binary | Tek Cloudflare Worker + Durable Objects (RelayRoom sınıfı) | Tek deployment, sıfır operasyon |
| Oturum yönetimi | Sunucu belleğinde stateful | Her room bir Durable Object instance'ı (server + client WebSocket çifti) | Otomatik isolasyon, room başına state |
| ID sistemi | Sunucudan alınan benzersiz ID | 9 haneli rastgele sayısal ID (100000000–999999999) | AnyDesk tarzı kolay paylaşılır ID |
| Ölçekleme | Dikey ölçekleme (VPS kapasitesi) | Yatay ölçekleme (Cloudflare edge network, 300+ PoP) | Global düşük gecikme, otomatik ölçek |
| Maliyet | VPS kiralama (aylık $5-50+) | Cloudflare Workers Free tier (100K istek/gün) veya $5/ay unlimited | Düşük giriş maliyeti |
| API endpoint'leri | Kendi protokolü | 4 REST/WS endpoint: /api/register, /api/connect, /api/status, /api/check | HTTP uyumlu, kolay entegrasyon |
| İstatistik | Sunucu logları | Room başına bytes_relayed, uptime_seconds, server/client_connected | Gerçek zamanlı oturum izleme |
4. Ekran Yakalama ve Frame Pipeline
| Özellik | RustDesk | Synchro | Detaylı Etki |
|---|---|---|---|
| Yakalama kütüphanesi | Platform-specific C++ (DXGI/CGDisplay/X11) | Rust scrap crate (cross-platform) | Tek API, 3 platform desteği |
| Pixel formatı | Platform bağımlı → codec input | BGRA → RGB dönüşümü (stride-aware) | compute_stride() ile IOSurface/128-byte alignment desteği |
| HiDPI desteği | Native çözünürlük + codec adaptasyonu | detect_physical_resolution() — 1x/2x/3x otomatik algılama | Retina ekranlarda doğru piksel çözünürlüğü |
| Codec | VP8/VP9/AV1/H264/H265 hardware accelerated | Zlib sıkıştırma (seviye ayarlanabilir: fast/default/best/0-9) | Düşük CPU yükü, codec bağımlılığı yok |
| Downscale | Codec içi çözünürlük adaptasyonu | 2 filtre: Nearest (Linux/Windows) + Average/Box (macOS); hedef 1280x720 | Configurable: SYNCHRO_TARGET_WIDTH/HEIGHT, SYNCHRO_DOWNSCALE_FILTER |
| Backpressure | Codec rate control | Latest-frame-only channel (watch) + sequence-based drop detection | Kuyruk birikimi engellenir, her zaman son frame iletilir |
| Sıkıştırma kontrolü | Codec bitrate | Ortam değişkenleri: SYNCHRO_COMPRESSION, SYNCHRO_QUALITY_FIRST | Runtime ayarlanabilir kalite-performans dengesi |
5. Input Simülasyonu (3 Platform)
| Özellik | RustDesk | Synchro | Detaylı Etki |
|---|---|---|---|
| Mimari | Platform-specific C++ modülleri | Channel-based InputHandler → ayrı OS thread'inde native API | Thread-safe, non-blocking input gönderimi |
| Linux | Kendi X11/Wayland implementasyonu | X11 XTest (XTestFakeKeyEvent/ButtonEvent) + XWarpPointer; fallback: xdotool | Native performans, xdotool güvenlik ağı |
| Windows | Win32 API (C++) | Win32 SendInput API (INPUT_MOUSE/INPUT_KEYBOARD); SetCursorPos | Doğrudan OS API, minimum overhead |
| macOS | Accessibility API (C++/ObjC) | CoreGraphics native: CGEvent (mouse/key/scroll) + CGEventKeyboardSetUnicodeString FFI | Accessibility izni gerekli, native performans |
| Mouse desteği | Tam (move, click, scroll, drag) | Move + Click (L/M/R) + Scroll (vertical+horizontal) | 3 buton + 2 eksen scroll desteği |
| Keyboard mapping | Doğrudan platform scancode | JavaScript keyCode → Platform keycode tablolar: Linux (X11 keysym, ~40 mapping), Windows (VK, ~45 mapping), macOS (CGKeyCode, ~60 mapping) | Kapsamlı tuş eşleştirmesi |
| Unicode text input | Codec-specific IME entegrasyonu | TextInput protokol mesajı: macOS=CGEventKeyboardSetUnicodeString, Linux=xdotool type, Windows=KEYEVENTF_UNICODE | Türkçe (ğüşçöı), Arapça, CJK vb. tam Unicode desteği |
| Modifier tuşları | Platform-specific | Ctrl/Shift/Alt/Meta — her platformda doğru eşleştirme (VK_CONTROL, Control_L, KeyCode::CONTROL) | Kısayol tuşları tam çalışır |
6. GUI ve Kullanıcı Arayüzü
| Özellik | RustDesk | Synchro | Detaylı Etki |
|---|---|---|---|
| UI framework | Flutter (Dart) — çok platformlu zengin widget | egui/eframe v0.29 (Rust immediate-mode GUI) | Tek dil, native derleme, düşük bellek |
| Ekran sayısı | 10+ farklı ekran/dialog | 2 ekran: Home (Host+Connect) + RemoteView | Minimal UX, hızlı kullanım |
| Uzak ekran render | Flutter canvas + codec decoder | egui TextureHandle + zlib decode → RGB → ColorImage | GPU hızlandırmalı texture render |
| Frame istatistikleri | Detaylı codec/network stats | Latency (ms), frame seq#, drop count — ekranda canlı gösterim | Gerçek zamanlı performans takibi |
| Ölçekleme | Codec-level adaptive | Pencere boyutuna göre otomatik frame scale-up | Fluid görüntü, her pencere boyutunda çalışır |
| Input handling | Flutter event → platform channel | egui Event::Key + Event::Text + PointerButton + MouseWheel | Çift giriş koruması (Key/Text ayırımı) |
7. Güvenlik
| Özellik | RustDesk | Synchro | Detaylı Etki |
|---|---|---|---|
| Kimlik doğrulama | Şifre + anahtar çifti + 2FA opsiyonel | Şifre tabanlı: Host şifre belirler, viewer şifre girer (Authenticate→AuthResult) | Basit ama etkili; Hello→Auth→AuthResult el sıkışma |
| Transport şifreleme | Kendi TLS + ek şifreleme katmanı | WSS (TLS) — Cloudflare edge SSL | Endüstri standardı TLS, sertifika yönetimi Cloudflare'da |
| Saldırı yüzeyi | Geniş (çok modül, çok protokol) | Dar (~3.400 LOC): 12 mesaj tipi, 4 API endpoint | Minimal kod = minimal saldırı yüzeyi |
| Client izolasyonu | Sunucu-bazlı | Durable Object: her room izole instance | Oturum sızıntısı riski minimal |
8. Build ve Dağıtım
| Özellik | RustDesk | Synchro | Detaylı Etki |
|---|---|---|---|
| CI/CD | GitHub Actions + çoklu pipeline | GitHub Actions: tag push → 4 platform matrix build → auto release | Tek workflow dosyası (115 satır) |
| Hedef platformlar | Windows, macOS, Linux, Android, iOS, Web | 4 platform: Linux x86_64, Windows x86_64, macOS x86_64, macOS ARM64 | Masaüstü odaklı, mobil desteği yok (henüz) |
| Binary dağıtım | Installer + çoklu binary | Tek binary (synchro) — derle ve çalıştır | Sıfır bağımlılık kurulumu |
| Derleme süresi | Uzun (C++/Flutter/Rust karışımı) | cargo build --release — tek komut | Cache ile hızlı incremental build |
| Bağımlılık sayısı | 100+ (tüm bileşenler) | 12 doğrudan Rust bağımlılığı: tokio, tokio-tungstenite, eframe, egui, scrap, flate2, serde, serde_json, anyhow, tracing, url, hostname + platform-specific (x11, windows, core-graphics) | Minimal bağımlılık ağacı |
| Sürüm geçmişi | Semantic versioning, yüzlerce sürüm | v1.0.0 → v1.0.37 (38 sürüm, 29 başarılı, 9 başarısız) | Hızlı iterasyon, detaylı changelog (made.md) |
9. Özellik Kapsamı Karşılaştırması
| Özellik | RustDesk | Synchro |
|---|---|---|
| Ekran paylaşımı / uzak görüntüleme | VAR | VAR |
| Uzak fare kontrolü (move/click/scroll) | VAR | VAR |
| Uzak klavye kontrolü | VAR | VAR |
| Unicode / çok dilli text input | VAR | VAR (v1.0.36+) |
| Şifre tabanlı kimlik doğrulama | VAR | VAR |
| Ping/Pong gecikme ölçümü | VAR | VAR |
| HiDPI / Retina desteği | VAR | VAR (otomatik algılama) |
| Clipboard paylaşımı | VAR | KISMI (protokolde var, UI bekleniyor) |
| Dosya transferi | VAR | YOK |
| Ses iletimi | VAR | YOK |
| Çoklu monitör seçimi | VAR | YOK |
| Mobil istemci (Android/iOS) | VAR | YOK |
| Web istemci | VAR | YOK |
| Chat / mesajlaşma | VAR | YOK |
| Adres defteri | VAR | YOK |
| Unattended erişim | VAR | YOK |
| Grup yönetimi | VAR | YOK |
| 2FA | VAR | YOK |
10. Kod Yapısı Özeti
synchro-remote/
├── shared/ # Paylaşılan kütüphane (47+234 = 281 LOC)
│ └── src/
│ ├── lib.rs # Modül export
│ └── protocol.rs # PeerMessage (12), RelayMessage (6), BinaryFrame, KeyModifiers
├── app/ # Ana uygulama (2.807 LOC)
│ └── src/
│ ├── main.rs # Entry point (28 LOC)
│ ├── gui.rs # egui UI — Home + RemoteView (789 LOC)
│ ├── host.rs # Host modu — capture + relay (517 LOC)
│ ├── viewer.rs # Viewer modu — connect + render (328 LOC)
│ ├── capture.rs # Ekran yakalama + stride + downscale (396 LOC)
│ └── input.rs # 3 platform input simülasyonu (745 LOC)
├── relay/ # Cloudflare Worker relay (324 LOC JS)
│ ├── src/index.js # Worker + RelayRoom Durable Object
│ └── wrangler.toml # Cloudflare konfigürasyon
├── dashboard/ # İndirme sayfası (Vercel)
│ └── public/index.html # Statik HTML
└── .github/workflows/release.yml # CI/CD (115 LOC)
Toplam: ~3.400 LOC (Rust) + 324 LOC (JS) = ~3.724 LOC
11. Benchmark Puanlama Tablosu
Puanlama: 1 (en dusuk) — 10 (en yuksek). Her kategori projenin kendi hedef kitlesine gore degerlendirilmistir.
| # | Kategori | Alt Kriter | RustDesk | Synchro | Aciklama |
|---|---|---|---|---|---|
| 1 | Kurulum Kolayligi | Sunucu kurulumu | 4 | 9 | RD: VPS+hbbs+hbbr kurulumu gerekir; Synchro: Cloudflare Worker deploy, 5 dk |
| 2 | Client kurulumu | 7 | 9 | RD: installer/paket; Synchro: tek binary indir-calistir | |
| 3 | Ilk baglanti suresi | 7 | 9 | RD: ID server kaydi + NAT traversal; Synchro: WebSocket aninda baglanir | |
| 4 | Kod Kalitesi | Kod boyutu (kucuk=iyi) | 4 | 10 | RD: ~500K LOC; Synchro: ~3.700 LOC |
| 5 | Tek dil tutarliligi | 5 | 10 | RD: C++/Rust/Dart/Protobuf karisimi; Synchro: %100 Rust + minimal JS | |
| 6 | Bagimllik sayisi (az=iyi) | 4 | 9 | RD: 100+ bagimllik; Synchro: 12 dogrudan Rust bagimliligi | |
| 7 | Kod okunabilirligi | 6 | 9 | Synchro: kucuk kod tabani, Turkce yorumlar, net modul yapisi | |
| 8 | Performans | Video codec kalitesi | 10 | 5 | RD: VP9/AV1/H265 HW hizlandirmali; Synchro: zlib-compressed RGB |
| 9 | Frame latency | 7 | 8 | Synchro: latest-frame-only channel, sira tabanli drop; RD: codec buffer gecikmesi | |
| 10 | CPU kullanimi (dusuk=iyi) | 6 | 8 | Synchro: codec yok, zlib hafif; RD: codec encode/decode yogun | |
| 11 | Bant genisligi verimi | 9 | 5 | RD: video codec 10-50x sikistirma; Synchro: zlib RGB ~3-5x sikistirma | |
| 12 | HiDPI / Retina | 8 | 8 | Her ikisi de destekler; Synchro otomatik 1x/2x/3x algilama | |
| 13 | Platform Destegi | Masaustu (Win/Mac/Linux) | 10 | 10 | Her ikisi de 3 masaustu platformu destekler |
| 14 | Mobil (Android/iOS) | 10 | 0 | RD: tam mobil destek; Synchro: mobil yok | |
| 15 | Web istemci | 8 | 0 | RD: web client mevcut; Synchro: yok | |
| 16 | macOS ARM64 (Apple Silicon) | 10 | 10 | Her ikisi de native ARM64 binary | |
| 17 | Ozellik Zenginligi | Ekran paylasimi | 10 | 10 | Temel ozellik, her ikisinde tam |
| 18 | Fare kontrolu | 10 | 9 | RD: drag destegi; Synchro: move/click/scroll (3 buton + 2 eksen) | |
| 19 | Klavye kontrolu | 10 | 9 | Her ikisi tam; Synchro: ~145 keycode mapping | |
| 20 | Unicode text input | 9 | 9 | RD: IME; Synchro: CGEventKeyboardSetUnicodeString/KEYEVENTF_UNICODE/xdotool | |
| 21 | Dosya transferi | 10 | 0 | RD: tam; Synchro: yok | |
| 22 | Ses iletimi | 9 | 0 | RD: tam; Synchro: yok | |
| 23 | Clipboard | 10 | 3 | RD: tam; Synchro: protokolde var, UI baglantisi bekleniyor | |
| 24 | Chat / mesajlasma | 8 | 0 | RD: var; Synchro: yok | |
| 25 | Coklu monitor | 9 | 0 | RD: monitor secimi; Synchro: sadece birincil ekran | |
| 26 | Adres defteri | 8 | 0 | RD: var; Synchro: yok | |
| 27 | Unattended erisim | 9 | 0 | RD: var; Synchro: yok | |
| 28 | Guvenlik | Kimlik dogrulama | 9 | 6 | RD: sifre+anahtar+2FA; Synchro: sadece sifre |
| 29 | Transport sifreleme | 8 | 8 | RD: kendi TLS+ek katman; Synchro: WSS (Cloudflare TLS) | |
| 30 | Saldiri yuzeyi (dar=iyi) | 5 | 9 | RD: genis yuzey (cok modul); Synchro: ~3.700 LOC, 12 mesaj tipi | |
| 31 | Client izolasyonu | 7 | 9 | Synchro: Durable Object izole instance; RD: sunucu bazli | |
| 32 | Sunucu Altyapisi | Kurulum maliyeti (dusuk=iyi) | 5 | 10 | RD: VPS $5-50+/ay; Synchro: CF Workers free tier veya $5/ay |
| 33 | Global gecikme (dusuk=iyi) | 6 | 9 | Synchro: Cloudflare 300+ PoP; RD: tek VPS lokasyonu | |
| 34 | Otomatik olcekleme | 5 | 9 | Synchro: serverless otomatik; RD: manuel VPS olcekleme | |
| 35 | Operasyon yukuu (dusuk=iyi) | 4 | 10 | Synchro: sifir ops; RD: sunucu bakimi/guncelleme gerekli | |
| 36 | Build / CI/CD | Derleme hizi (hizli=iyi) | 4 | 8 | Synchro: tek cargo build; RD: C++/Flutter/Rust coklu pipeline |
| 37 | CI/CD basitligi | 6 | 9 | Synchro: tek workflow 115 satir; RD: coklu pipeline | |
| 38 | Binary boyutu (kucuk=iyi) | 5 | 8 | Synchro: tek binary ~5-10MB; RD: installer + coklu binary | |
| 39 | Topluluk / Ekosistem | GitHub yildiz/katki | 10 | 2 | RD: 75K+ yildiz, buyuk topluluk; Synchro: bireysel proje |
| 40 | Dokumantasyon | 9 | 6 | RD: kapsamli wiki; Synchro: made.md + karsilastirma dokumani | |
| 41 | Ucuncu parti entegrasyon | 9 | 2 | RD: cok sayida eklenti/entegrasyon; Synchro: nis proje | |
| 42 | Bakim Kolayligi | Hata ayiklama (kolay=iyi) | 6 | 9 | Synchro: tek dil, kucuk kod, tracing logging; RD: cok dil karisimi |
| 43 | Yeni ozellik ekleme | 7 | 9 | Synchro: minimal kod, hizli iterasyon (38 surum hizla cikarildi) | |
| 44 | Guncelleme/deploy | 6 | 9 | Synchro: tag push → otomatik 4 platform release |
12. Puan Ozeti
| Kategori | RustDesk | Synchro |
|---|---|---|
| Kurulum Kolayligi (3 kriter) | 18/30 | 27/30 |
| Kod Kalitesi (4 kriter) | 19/40 | 38/40 |
| Performans (5 kriter) | 40/50 | 34/50 |
| Platform Destegi (4 kriter) | 38/40 | 20/40 |
| Ozellik Zenginligi (11 kriter) | 102/110 | 40/110 |
| Guvenlik (4 kriter) | 29/40 | 32/40 |
| Sunucu Altyapisi (4 kriter) | 20/40 | 38/40 |
| Build / CI/CD (3 kriter) | 15/30 | 25/30 |
| Topluluk / Ekosistem (3 kriter) | 28/30 | 10/30 |
| Bakim Kolayligi (3 kriter) | 19/30 | 27/30 |
| TOPLAM (44 kriter) | 328/440 | 291/440 |
| YUZDE | %74.5 | %66.1 |
13. Sonuc ve Degerlendirme
| Guclu Yonu | RustDesk | Synchro |
|---|---|---|
| 1. avantaj | Ozellik zenginligi (dosya, ses, chat, adres defteri) | Kurulum/operasyon kolayligi (serverless, tek binary) |
| 2. avantaj | Platform kapsami (mobil + web + masaustu) | Kod kalitesi (%100 Rust, 3.700 LOC, minimal bagimllik) |
| 3. avantaj | Video codec kalitesi (VP9/AV1 HW hizlandirmali) | Sunucu maliyeti (Cloudflare free tier, sifir ops) |
| 4. avantaj | Buyuk topluluk ve ekosistem (75K+ yildiz) | Guvenlik yuzeyi (dar saldiri alani, izole oturumlar) |
| 5. avantaj | Bant genisligi verimi (10-50x codec sikistirma) | Bakim kolayligi (tek dil, hizli iterasyon, kolay debug) |
RustDesk: Tam kapsamli kurumsal uzaktan erisim cozumu arayan, genis platform destegi ve zengin ozellik seti isteyen kullanicilar icin ideal.
Synchro: Hizli kurulum, dusuk maliyet, minimal bakim, kompakt ve bagimsiz bir uzaktan erisim cozumu isteyen bireysel gelistiriciler ve kucuk takimlar icin ideal. Ozellikle serverless mimari ve tek binary yaklasimi ile operasyonel yukuu minimuma indirir.
Belge sürümü: v1.0.37 — 25 Şubat 2026