关于X Server/Client和RDP的畅想

    看了X Server/Client的模型,它们其实是通过X Protocol来通讯,所以默认就是运行在网络上的。X Client/Server的位置可能与平常所说的概念相反,X Server负责I/O,与用户的交互,而X Client才真正运行处理程序(才算是真正的Server)。想想这种模式与远程桌面的方式很像,就结合Windows里远程桌面协议(Remote Desktop Protocol, RDP)随便说说。

    X Client传给X Server的是一些与平台、硬件无关的绘画信息,如要输出的类型:点、线、字符等等;以及与类型相关的信息,其实就是一个对象。传输对象的好处就是在一 般情况下可以节省很多带宽,甚至较复杂的3D图像信息可以这样传输而只依赖于X Server端的图形处理能力即可运行起来。但因为对象本身是原始的对象,很可能不经过压缩(我猜测的),一个简单但较庞大的位图可能需要复杂的描述,从 而造成瓶颈。X模型是可以跨平台的,就是说可以X Client运行在Linux下,X Server开在另一台机器的Windows上。

    关于RDP,网上找不到什么资料,Linux下的rdesktop的作者说除了他的程序估计也没有任何的参考资料了……RDP是基于ITU-T T.128协议的,具体还没仔细看。简单地想想,和一些远程控制的软件类似,RDP应该是传输位图,当然是经过压缩的,而不是像X中传输对象。RDP协议 中还有桌面、窗口等模型,使之尽可能更新传输更少的数据。但毕竟是传输位图,对于视频、3D图像等RDP就很难以胜任,这不仅仅是带宽限制的问题,还涉及 到获取位图、压缩/解压缩的过程,视频等数据的压缩率不是普通的位图压缩能做到的。既然是协议,那必然也是与平台无关的了,所以我们也可以在Linux下 远程登录Windows的远程桌面服务器。

    可见,对象传输和位图传输各有千秋,如果能定义出结合这两种优势或者自适应的新协议,对于远程桌面无疑是一大进步。当然,这只是很肤浅的一些想法,望大家批评指正。
原文地址:https://www.cnblogs.com/wonderow/p/71673.html