上篇说到了关于瘦客户端的一些现状和遐想,接下来我们开始探索这种技术实现的可能。要实现瘦客户端,最重要的是选择一种客户端和服务端都能理解的沟通方式,这种沟通方式就是通讯协议,或者远程传输协议。

本文不讨论Onlive之类的公司制定的私有未公开的传输协议,而是讨论一些现有的通用协议。其实大家对这些通用协议并不会陌生,他们分别是微软的RDP协议、Citrix的ICA协议、VNC的RFB协议、MIT的X11协议等等。

常见协议列表:

Software Protocol License
Citrix XenApp RDP, ICA Proprietary
FreeNX NX, RDP, RFB(VNC) GPL
LogMeIn Proprietary Proprietary
Neatx NX GPL
rdesktop RDP GPL
RealVNC RFB(VNC) GPL
UltraVNC RFB(VNC) GPL
Remote Desktop Services/Terminal Services RDP Proprietary
SSH with X forwarding X11 BSD
Symantec pcAnywhere Proprietary Proprietary
Citrix XenAppRDP ICA Proprietary

更详细的列表见: http://en.wikipedia.org/wiki/Comparison_of_remote_desktop_software

RDP协议

RDP全称是Remote Desktop Protocol,这就是我们平时在Windows里远程桌面使用的协议。使用mstsc.exe我们就可以远程连接到一台Windows机器的桌面进行操作了。在Windows2008里,有一个更吸引人的东西,那就是 Terminal Services RemoteApp。

Terminal Services RemoteApp支持远程的执行单个应用程序,就好像这个应用程序是在本机运行的一样。有了RemoteApp,我们就可以实现在一台没有安装Office或者Visual Studio的客户端机器运行起来一个Excel或VS2010,而Excel和VS2010程序实际是安装在远程安装有RemoteApp服务端的机器。

设置远程应用程序:

RemoeApp架构图:

客户端可以直接使用.rdp快捷方式运行远程App,也可以 在浏览器里里 通过TS Web Access运行一个远程App(远程App并不是运行在浏览器里的)。

比如,在一台Vista的机器里,通过TS Web Access运行远程的WordPad(非Vista风格)。

运行效果如下:

微软的这项技术很酷,是吧。不过,RemoteApp仅限于Windows平台。

ICA协议

ICA全称是Independent Computing Architecture,即独立计算架构,它把应用程序的计算/执行逻辑与显示逻辑分离开来,把程序的计算/执行100%地保留在服务器端,而把运行结果图形化/界面化并通过网络传输到客户端,对于客户端而言,也只有键盘敲击和鼠标点击等会通过网络传给服务器。

ICA由Citrix公司设计的,Citrix可以算是这一领域的老大哥了,就连微软这样技术雄厚的公司,都是购买的Citrix的技术才做出上面的Remote Desktop和TS RemoteApp。技术的原创者是Citrix,因此Citrix拥有更大的优势,运用更多的创新,做出更好的产品出来。这个产品就是Citrix XenApp。

XenApp是个商业工具,我没有用过,自然算不上深入了,有兴趣的同学可以访问Citrix官网了解更多。下面是我找到的一个XenApp设计图:

RFB协议

RFB全称是Remote Frame Buffer,它是我们常用的VNC所使用的协议。RFB是一个远程图形用户的简单协议,因为它工作在帧缓存级别上,所以它可以应用于所有的窗口系统,例如:X11,Windows和Mac系统。远程终端用户使用机器(比如显示器、键盘、鼠标)的叫做RFB客户端,提供帧缓存变化的被称做RFB服务端。

由于使用的是帧缓存技术,因此VNC的性能一直被人所诟病。同时,VNC只能远程控制整个桌面,还没办法做到只单独运行一个程序。

X11协议

X11(X Window System core protocol)是由MIT于1984年设计出来的开源传输协议,一直发展至今,最新版本是X11R7.5。它是X Window System的基本协议。而X Window System系统生来就是为瘦客户服务的,从设计之初,它就被设计成计算和显示分离的架构,即程序的运行可以在一台计算机,而显示又在另外一台计算机。随着X11的不断演变发展,出现了各种不同形式的改良版本,其中最著名的就是NoMachine公司开发的NX协议,NX协议在X11的基础上,加入了缓存机制、压缩传输等,使其性能得到飞跃的提升。这也是我下一篇要重点介绍的。

X11的设计原则是: create Mechanism, not Policy ,所以X故意没有规范应用程式的使用者界面 ,例如按钮 、选单 和视窗的标题栏等等。这些都由视窗管理器 (window managers)、GUI 构件工具包 、桌面环境 (desktop environments)或者应用程序指定的GUI(䠋如 POS机 )等等诸如此类的用户软件来提供。这样我们就可以理解,为什么Linux系统中会有诸多如Gnome,KDE之类桌面系统,同样使用X协议,绘制的界面却不尽相同。

要了解X11,一个非常重要的概念一定要弄清楚。就是X Server和X Client。通常Server是指服务器端,Cilent是指用户的客户端,但是X11中要反过来理解。X11中,用于显示画面的是Server,用于计算处理的是Client。所以,如果通过X11远程连接,用户端必须起一个X Server,远程应用程序实际通过远程的X Cilent来执行。

X11本身并不复杂,Server和Client交互的请求一共四种:Requests, Replies, Events, Errors。
   1. Request: Client请求Server端返回信息或执行动作。
   2. Reply: Server针对Request的返回。不是所有Request都有返回。
   3. Event: Server发送的一些界面相关的事件给Client,例如:键盘、鼠标输入,窗口移动,Resize等等。
   4. Error: 当Request请求无效时,Server发送错误信息给Cilent。

如果你正使用X Window System,比如Linux,Debian,Ubuntu等,马上就可以试试了。运行下面的命令,就可以运行一个远程的gedit(文本编辑器):

ssh  - X  - C root @ 192.168 .x.x gedit

即使不是远程显示图像,本地执行的应用程序所使用的X11的架构也是一样的,都有一个Server和Client。我们可以通过修改Display环境变量,将画面显示到别处。

比如,Client端执行:

export DISPLAY = 192.168 .x.x: 0

远程Display的X Server要接受Client的连接,使用xhost加入允许列表,Server端执行:

xhost  +   192.168 .x.x

然后,在Client端运行一个应用程序,比如:gedit,画面将显示在远程的Server端。

好了,这篇就到这了。下篇将带大家了解NoMachine的NX的秘密。如果你对此有兴趣,请告诉我。

瘦客户端那些事 - 远程传输协议相关推荐

  1. 瘦客户端那些事 - 开篇

    人类活动最大的成本花费在哪里?我认为在沟通和学习上.我们从哇哇落地开始,就在不断的学习前人总结的经验.学校教育,大大加速了这一进程.随着互联网的发展,人们可以自由的分享知识和经验,使得我们平时遇到的问 ...

  2. 瘦客户端那些事 - 开篇,互联网营销

    人类活动最大的成本花费在哪里?我认为在沟通和学习上.我们从哇哇落地开始,就在不断的学习前人总结的经验.学校教育,大大加速了这一进程.随着互联网的发展,人们可以自由的分享知识和经验,使得我们平时遇到的问 ...

  3. Dubbo远程传输协议详解

    前言 上次小编为大家带来了Dubbo调用及容错机制详解,不知道大家有没有去看小编最后留下的问题,欢迎对文章进行评论也希望大家和小编多多交流.今天接着为大家带来Dubbo的内容,传输协议,上次调用机制中 ...

  4. TFTP 简单文件传输协议

    1 协议介绍: TFTP (Trivial File Transfer Protocol, 简单文件传输协议也称小型文件传输协议) 是一种于1981年在RFC 783中定义的简化的文件传输协议(FTP ...

  5. 全球主流云桌面传输协议

    转载:https://zhuanlan.zhihu.com/p/40351781 ⚽ 2018年世界杯都来了,你还在看几年前的云桌面传输协议文章吗?来看新鲜出炉的! 上期我们谈到了影响云桌面性能的三个 ...

  6. 计算机一级ftp协议传输,文件传输协议(FTP)必将消亡

    文件传输协议(FTP)在RFC 959中定义,于1985年10月发布.文件传输协议(FTP)被设计成为一个跨平台的.简单且易于实现的协议.文件传输协议(FTP)有一个漫长的演化史,是互联网上最重要的应 ...

  7. gRPC传输协议使用(python教程)

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 gRPC 简介: gRPC 是一款高性能.开源的 RPC 框架,产自 Google,基于 ProtoBuf 序列化协议进行开发,支持多种语言(Gola ...

  8. day30Node.js web模块:服务端与客户端、互联网传输协议、

    文章目录 一 1.服务端与客户端 1.1什么是上网 1.2享受服务的流程 1.3服务器 1.4客户端 1.5url地址 协议: 服务器名称: 端口号: 路径: 参数: 1.6 域名与ip的关系 2.互 ...

  9. 王道考研 计算机网络20 应用层 客户端/服务器C/S模型 P2P模型 DHCP协议 域名解析系统DNS 文件传送协议FTP 万维网 超文本传输协议HTTP

    应用层概述 FTP:文件传输协议(File Transfer Protocol)是用于在网络上进行文件传输的一套标准协议. SMTP:是一种提供可靠且有效的电子邮件传输的协议. POP3 ,全名为&q ...

最新文章

  1. 云从科技完成B+轮超10亿元融资,多个国家基金进入
  2. Android左边有固定文字的EditText
  3. python+scapy 抓包与解析
  4. linux下mysql远程登陆
  5. java aes mysql blob_使用带有ORDER子句的AES_DECRYPT在MySQL中返回BLOB数据
  6. 利用100个小例子总结Python的知识要点!
  7. matlab分支定界法linprog_序列比对(二十二)——中间字符串分支定界方法中更紧的界...
  8. php 属性名字访问,php – 如何使用连字符的名称访问此对象属性?
  9. android 结束if循环_简单探究Android平台下' if ' 语句条件判断耗时情况
  10. oracle sql between and 范围,oracle between and 边界有关问题
  11. CSS学习总结(3)——CSS文本样式(属性)
  12. 安装MyBatis教程
  13. 案例分享|水下光通信系统
  14. 《纽约时报》畅销书作家发布新的COVID安全旅行提示电子书
  15. PS制作(LOGO)步骤流程
  16. 【干货】如何利用 pandas 批量合并 Excel?
  17. 史上最详细的HashMap红黑树解析
  18. 【重点】心田花开|人教版小学一年级语文上册汉语拼音
  19. SEO中的十大关键词竞争度分析方法
  20. 1.华为分布式存储fusionstorage介绍

热门文章

  1. 纯文本抽出通用程序库 让您不再为文本抽出和处理发愁!
  2. 关于雅虎中国关闭邮箱服务
  3. 计算机视觉竞赛技巧总结(一):目标检测篇
  4. 大端模式和小端模式-以前犯过这样的错误
  5. [转载] 七龙珠第一部——第107话 孙悟空大发雷霆
  6. Windows使用uncompyle6
  7. 纪念一下加入CSDN一千多天吧
  8. java实现对数组按中文名称排序
  9. 2022高性价比蓝牙耳机推荐,降噪好的平价蓝牙耳机排行榜
  10. 华为鸿蒙系统荣耀X10,华为也分三六九等,3款机型才是正确选择,全都能升级鸿蒙系统...