瘦客户端那些事 - 远程传输协议
上篇说到了关于瘦客户端的一些现状和遐想,接下来我们开始探索这种技术实现的可能。要实现瘦客户端,最重要的是选择一种客户端和服务端都能理解的沟通方式,这种沟通方式就是通讯协议,或者远程传输协议。
本文不讨论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(文本编辑器):
即使不是远程显示图像,本地执行的应用程序所使用的X11的架构也是一样的,都有一个Server和Client。我们可以通过修改Display环境变量,将画面显示到别处。
比如,Client端执行:
远程Display的X Server要接受Client的连接,使用xhost加入允许列表,Server端执行:
然后,在Client端运行一个应用程序,比如:gedit,画面将显示在远程的Server端。
好了,这篇就到这了。下篇将带大家了解NoMachine的NX的秘密。如果你对此有兴趣,请告诉我。
瘦客户端那些事 - 远程传输协议相关推荐
- 瘦客户端那些事 - 开篇
人类活动最大的成本花费在哪里?我认为在沟通和学习上.我们从哇哇落地开始,就在不断的学习前人总结的经验.学校教育,大大加速了这一进程.随着互联网的发展,人们可以自由的分享知识和经验,使得我们平时遇到的问 ...
- 瘦客户端那些事 - 开篇,互联网营销
人类活动最大的成本花费在哪里?我认为在沟通和学习上.我们从哇哇落地开始,就在不断的学习前人总结的经验.学校教育,大大加速了这一进程.随着互联网的发展,人们可以自由的分享知识和经验,使得我们平时遇到的问 ...
- Dubbo远程传输协议详解
前言 上次小编为大家带来了Dubbo调用及容错机制详解,不知道大家有没有去看小编最后留下的问题,欢迎对文章进行评论也希望大家和小编多多交流.今天接着为大家带来Dubbo的内容,传输协议,上次调用机制中 ...
- TFTP 简单文件传输协议
1 协议介绍: TFTP (Trivial File Transfer Protocol, 简单文件传输协议也称小型文件传输协议) 是一种于1981年在RFC 783中定义的简化的文件传输协议(FTP ...
- 全球主流云桌面传输协议
转载:https://zhuanlan.zhihu.com/p/40351781 ⚽ 2018年世界杯都来了,你还在看几年前的云桌面传输协议文章吗?来看新鲜出炉的! 上期我们谈到了影响云桌面性能的三个 ...
- 计算机一级ftp协议传输,文件传输协议(FTP)必将消亡
文件传输协议(FTP)在RFC 959中定义,于1985年10月发布.文件传输协议(FTP)被设计成为一个跨平台的.简单且易于实现的协议.文件传输协议(FTP)有一个漫长的演化史,是互联网上最重要的应 ...
- gRPC传输协议使用(python教程)
全栈工程师开发手册 (作者:栾鹏) 架构系列文章 gRPC 简介: gRPC 是一款高性能.开源的 RPC 框架,产自 Google,基于 ProtoBuf 序列化协议进行开发,支持多种语言(Gola ...
- day30Node.js web模块:服务端与客户端、互联网传输协议、
文章目录 一 1.服务端与客户端 1.1什么是上网 1.2享受服务的流程 1.3服务器 1.4客户端 1.5url地址 协议: 服务器名称: 端口号: 路径: 参数: 1.6 域名与ip的关系 2.互 ...
- 王道考研 计算机网络20 应用层 客户端/服务器C/S模型 P2P模型 DHCP协议 域名解析系统DNS 文件传送协议FTP 万维网 超文本传输协议HTTP
应用层概述 FTP:文件传输协议(File Transfer Protocol)是用于在网络上进行文件传输的一套标准协议. SMTP:是一种提供可靠且有效的电子邮件传输的协议. POP3 ,全名为&q ...
最新文章
- 云从科技完成B+轮超10亿元融资,多个国家基金进入
- Android左边有固定文字的EditText
- python+scapy 抓包与解析
- linux下mysql远程登陆
- java aes mysql blob_使用带有ORDER子句的AES_DECRYPT在MySQL中返回BLOB数据
- 利用100个小例子总结Python的知识要点!
- matlab分支定界法linprog_序列比对(二十二)——中间字符串分支定界方法中更紧的界...
- php 属性名字访问,php – 如何使用连字符的名称访问此对象属性?
- android 结束if循环_简单探究Android平台下' if ' 语句条件判断耗时情况
- oracle sql between and 范围,oracle between and 边界有关问题
- CSS学习总结(3)——CSS文本样式(属性)
- 安装MyBatis教程
- 案例分享|水下光通信系统
- 《纽约时报》畅销书作家发布新的COVID安全旅行提示电子书
- PS制作(LOGO)步骤流程
- 【干货】如何利用 pandas 批量合并 Excel?
- 史上最详细的HashMap红黑树解析
- 【重点】心田花开|人教版小学一年级语文上册汉语拼音
- SEO中的十大关键词竞争度分析方法
- 1.华为分布式存储fusionstorage介绍