19、【Ubuntu】【远程开发】技术方案分析:远程桌面

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

上篇 blog
【Ubuntu】【远程开发】技术方案分析:私网ip掩码

局域网 IP 中掩码的相关概念,下面继续

远程开发

之前 blog 【Ubuntu】【远程开发】技术方案分析:公私网ip 说了,想要远程连接办公,得有个公网 IP ,相当于寄快递时,快递上得有收货的街道地址,基于这个点,下面来对比一些技术方案:远程桌面,VPN,内网穿透

远程桌面

一种应用层协议(如 Windows 的远程桌面,开源的 VNC、向日葵,RustDesk 等),允许在一个设备上直接操作另一台设备的图形化桌面,就像坐在那台电脑前一样

远程桌面的操作一般如下

  • 目标电脑先开启 远程桌面服务,或者远程控制软件需要先点击接受远程 之类的设置选项

  • 控制端通过 IP + 端口连接(对于 Windows 的远程桌面)

    或者对于一些远程控制软件,点击发起远程 之类的设置选项

  • 然后就可以使用了,传输的直接是屏幕画面,用的是鼠标键盘指令,就像在家里操作电脑一样

前提是目标电脑必须有公网 IP(共享的也行,不需要独立 IP,只要能上网就行 ) 或在同一局域网 内,否则无法直接连接,核心目的是远程操作电脑的桌面

下面说下这类工具的基本原理,这类工具的连接过程大致可以分为下面三个步骤

一、被控端(目标电脑)主动连接中继服务器

  • 当在目标电脑上打开远程桌面控制软件并登录账号时(点击发起远程),软件会主动向远程服务提供商的公网服务器发起一个出站连接
  • 这个连接从内网到外网,不受网络地址转换 NAT 限制(内网设备访问外网服务器是允许的)
  • 连接建立后,远程服务器就知道,用户 A 的设备(比如 ID: ABC123)已上线,可通过这个连接与其通信

这里的关键点在于连接是由内网设备主动发起的,绕过了外网无法访问内网的限制

二、控制端也连接同一中继服务器

当在外地用电脑打开同样的远程桌面软件,点击远程连接 ABC123 时,电脑也会连接到同一个远程中继服务器,这里服务器就知道用户 A 想要控制设备 ABC123,而且 ABC123 也已经在线

三、中继服务器牵线搭桥

远程中继服务器不会直接发送操作指令设备 ABC123,而是处理中继转发,将远端的控制请求通过已建立的连接转发给内网的被控端,被控端收到指令后执行操作,并将屏幕画面压缩后,通过同一个连接发回给中继服务器,服务器再将画面数据转发回本地电脑

一些高级工具,比如 RustDesk,会尝试进行 P2P 打洞直连 ,这种方式需要 NAT 类型允许,双方设备会协商出一个直接通信的路径,绕过中继服务器,获得更低延迟的连接,如果打洞失败(比如在对称型 NAT 下),则退回到中继模式

可以看到,在公网环境下 ,远程桌面采用的是类似内网穿透的技术

内网穿透的几个核心要素:

  • 内网设备无法被外网直接访问
  • 需要一个公网服务器作为中介
  • 内网设备主动连接公网服务器
  • 外部用户通过服务器间接访问内网
  • 实现外网对内网服务的访问

远程桌面这里是:

  • 目标电脑在 NAT 后,共享公网 IP,ping 不通,端口无法被扫描
  • 远程桌面的中继服务器,有固定公网 IP
  • 被控端开机后可以远程连接中继服务器,建立长连接隧道
  • 控制端通过中继服务器找到并连接被控端,数据经服务器中继
  • 最终实现从外网远程操作内网电脑的桌面

内网穿透是一种技术类别或目标:让外网能访问内网服务,SSH 反向隧道,frp,向日葵、RustDesk、远程桌面等都是实现内网穿透的具体工具或方案,区别在于:

  • 使用的协议(SSH、自定义 TCP/UDP、WebRTC 等)
  • 是否支持 P2P 直连
  • 是否开源,是否免费
  • 用户体验,是图形化,还是命令行

其底层思想基本一致:内网主动连接,借助公网跳板,实现反向访问

ok,先到这里,下篇 blog 继续

相关推荐
Vcaker13 分钟前
Linux学习36-k8s集群升级及kube-vip高可用
linux·运维·学习
wdfk_prog28 分钟前
Wi-Fi Direct教程 02:从 wpa_cli main() 到 P2P_FIND——用源码注释追踪 CLI 控制命令发送
运维·服务器·网络·网络协议·ubuntu·p2p·wifi-direct
skywalk816337 分钟前
Deepseek harness的4种模式 配置文件内容
linux·人工智能·ubuntu·deepseek·harness
HRTOS1 小时前
HRTOS Shell继续完善:优化printf缓冲区与字符串越界保护,国庆后随新版本更新
运维·单片机·嵌入式硬件·算法·51单片机
智能RPA1 小时前
农业与矿业行业智能体自动化平台对比评测(计量与巡检场景)
运维·人工智能·python·自动化·agent·rpa
沫璃染墨1 小时前
《从零入门Linux系统篇(五十一):线程篇·四——pthread线程库详解:从线程创建到终止与分离》
linux·运维·服务器·开发语言·c++·系统架构·线程
YYRAN_ZZU1 小时前
GMSL开发加解串配置介绍
linux·嵌入式硬件
墨家前任巨子1 小时前
定时关机脚本
运维
云计算练习生1 小时前
什么是上下文切换?进程切换时 CPU 到底在保存什么
linux·服务器·操作系统·进程切换
用户0510122572961 小时前
RGA(二)——RK3588 的核拓扑与能力差异
linux·嵌入式