瘦客户端那些事 - 远程传输协议

简介:

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

本文不讨论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  - - 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的秘密。如果你对此有兴趣,请告诉我。

瘦客户端那些事 系列:

瘦客户端那些事 - 开篇

瘦客户端那些事 - 远程传输协议

瘦客户端那些事 - NoMachine的秘密

 

 

本文转自CoderZh博客园博客,原文链接:http://www.cnblogs.com/coderzh/archive/2010/09/24/thinclient-protocol.html如需转载请自行联系原作者

相关文章
|
6月前
|
消息中间件 运维 网络协议
客户端和服务器之间的通信
客户端和服务器之间的通信
109 0
|
网络协议 Windows
59【工控通信】ModbusTCP通讯之ModbusPoll客户端工具配置
【工控通信】ModbusTCP通讯之ModbusPoll客户端工具配置
298 0
|
13天前
|
传感器 安全 Java
如何使用 CoAP 协议进行设备通信
CoAP(Constrained Application Protocol)是一种适用于资源受限设备的轻量级协议,常用于物联网(IoT)设备之间的通信。本文介绍如何使用 CoAP 协议进行设备通信,包括协议的基本概念、消息格式、请求与响应流程以及实际应用示例。
|
6月前
|
网络协议 JavaScript 前端开发
WebSocket:实现客户端与服务器实时通信的技术
WebSocket:实现客户端与服务器实时通信的技术
|
3月前
|
Java
java网络编程 UDP通信协议实现局域网内文件的发送和接收
java网络编程 UDP通信协议实现局域网内文件的发送和接收
java网络编程 UDP通信协议实现局域网内文件的发送和接收
|
6月前
|
网络协议 Python
在python中利用TCP协议编写简单网络通信程序,要求服务器端和客户端进行信息互传。 - 蓝易云
在这个示例中,服务器端创建一个socket并监听本地的12345端口。当客户端连接后,服务器发送一条欢迎消息,然后关闭连接。客户端创建一个socket,连接到服务器,接收消息,然后关闭连接。
98 0
|
6月前
|
缓存 负载均衡 网络协议
《网络是怎么样连接的》读书笔记 - 服务器端的局域网中(四)
《网络是怎么样连接的》读书笔记 - 服务器端的局域网中(四)
72 0
|
安全 开发者
直播平台开发协议分析篇(一):会话初始化协议SIP
直播平台开发的SIP协议今天的分析就到这里,大家不难看出,SIP协议关乎着直播平台的实时通信和多方互动能否正常提供服务,确保用户能够以高质量和稳定性进行音视频交流,从而创造更丰富的直播体验。
直播平台开发协议分析篇(一):会话初始化协议SIP
|
网络协议 网络安全 数据安全/隐私保护
从报文交互看Telnet协议的安全系数
从报文交互看Telnet协议的安全系数
从报文交互看Telnet协议的安全系数
|
存储 安全 网络协议
远程协议RDP
什么是远程桌面协议(RDP)?远程桌面协议 (RDP) 指的是用于远程使用桌面计算机的协议或技术标准。远程桌面软件可以使用几种不同的协议,如 RDP、独立计算架构 (ICA) 和虚拟网络计算 (VNC) 等,但 RDP 是最常用的协议。RDP 最初由微软公司发布,可用于大多数 Windows 操作系统,但 Mac 操作系统也提供相应的支持。“远程桌面”是什么意思?
361 0