找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7279|回复: 1

Citrix ICA协议版本及协议堆栈

[复制链接]

238

主题

329

帖子

2119

积分

超级版主

Rank: 8Rank: 8

积分
2119
QQ
发表于 2016-3-9 09:59:56 | 显示全部楼层 |阅读模式
本帖最后由 xiaoyu 于 2016-3-9 11:17 编辑

关于Citrix的ICA协议,他的英文全称,网上都称呼其为Independent ComputingArchitecture,翻译为中文就是独立计算体系结构。但是根据Citrix的内部材料显示,也可以称为是ICA = Intelligent Console Architecture!翻译为中文就是智能控制台架构!
1、 历史

ICA 1.0 – 1992
  在ICA1.0的版本中,最初是基于串行连接开放的,后来添加了IPX和NetBIOS的支持。所以在ICA1.0版本中,支持串行、IPX和NetBIOS。
IMG_6118.JPG
IMG_6116.JPG
     ICA 2.0 – 1992
  ICA2.0版本是ICA协议的第一个拥有图形界面的版本,并将Citrix WinCredible技术集成到ICA协议当中以支持多用户。并且支持多个操作系统:OS/2、DOS、Windows 3.1以及TCP/IPstack for OS/2 from FTP Software。
IMG_6117.JPG
        CitrixWinCredible技术
【Citrix WinCredible技术是Citrix公司基于微软公司的Windows 3.1推出的将桌面系统让多个用户进行访问的技术解决方案,极大地扩展了Windows3.1的优势,实现高性能的远程访问Windows。 WinCredible技术是一个完整的基于Windows系统的扩展技术,支持多个并发用户通过本地局域网或串行连接或远程通过拨号调制解调器访问服务器。WinCredible可用于配置Windows远程访问服务器,局域网上的Windows应用程序服务器,广域网络视窗应用性能增强器,并为多个Windows用户构建一个低成本的启动系统。】

       ICA 3.0 – 1995
  1995年8月思杰发布的WinFrame For Networks产品,在基于Window NT的架构上构建远程访问Windows服务器。相应的远程访问协议ICA就升级到了3.0版本。在3.0当中,集成了Thinwire 1.0、打印、客户端驱动器映射、音频、剪贴板等功能。并支持更多的网络协议和接入方式:TCP/IP, IPX, SPX, NetBEUI, Serial, Modems。
IMG_6119.PNG
1996年8月思杰发布了世界上第一个Windows应用程序的网页浏览器客户端。
IMG_6120.PNG
微软在1997宣布,Windows服务器NT系统,多用户访问支持启用Terminal Server协议。1998年6月思杰发布MetaFrame的1.0用于Windows NT Server 4.0终端服务器版本。
IMG_6121.PNG
  MetaFrame是Citrix公司的一款远程集中访问企业信息中心的产品,并和微软的终端服务(TerminalService)紧密集成,就是在微软的终端服务技术的基础上开发出来的。Citrix MetaFrame 提供一种最简洁的解决方案,可以在企业的信息中心,集中管理所有的企业应用,让员工或用户在任何地点都可以安全、快捷地进行访问。这就是后来大名鼎鼎的XenApp的前身。

      ICA更名与混乱时代
之后由于虚拟化技术的出现,桌面虚拟化技术暂露头角,Citrix在原先ICA协议的基础之上,修改ICA协议的显示技术,增加一些适宜的功能提供给XenDesktop桌面虚拟化使用,在内部被称之为PortICA,区别于XenApp的原先的ICA协议。到了XenDesktop3.0版本的时候,Citrix内部将PortICA协议的部分功能模块的名称进行了更名,更名列表如下:
更名前
更名后
Core  Virtual channels
HDX  Broadcast
Thinwire
HDX SmartRendering
Virtual  Channel fallback
HDX  Adaptive Orchestration
Flash  and Windows media redirection
HDX  MediaStream
Server-side  flash rendering
HDX  MediaStream Network Conditions
3D Pro  and RemoteFX
HDX  RichGraphics
Bidirectional  audio and UDP Audio
HDX  RealTime
Device  mapping
HDX  Plug-n-Play
Built-In  compression and Branch Repeater
HDX  WAN Optimization
NetScaler  session policies
HDX  SmartAccess
这些更名的功能模块主要提供给桌面虚拟化使用。在XenDesktop4.0版本的时候,Citrix将这些区别于原先ICA协议的功能模块单独提取出来,统一封装在HDX当中,统一命名为HDX,即高清用户体验。

      融合时代
在最新版本的Citrix产品中,Citrix将XenApp和XenDesktop进行了融合,将原先XenApp和XenDesktop 4.0的IMA架构集成到了XenDesktop 新版本的FMA架构中。FMA架构最早出现在Citrix XenDesktop 5.x系列的产品中,这种架构区别于传统IMA架构,更加的易于管理和便捷。
  此时的ICA协议和HDX进行了整合,Citrix将其统称为ICA/HDX协议。

2、 ICA协议堆栈
ICA协议是泛区网络或广域网的高延迟链路优化的协议。它还支持Quality-Of-Service服务质量(QoS)和其他带宽优化功能。
IMG_6122.JPG
ICA协议工作于OSI七层模型中的第六层。
IMG_6123.JPG
该ICA数据包包含以下标题:帧头,可靠性,加密,压缩,命令,数据命令,帧路径。该命令是唯一必需的信息。
   在ICA中将KVM,打印,音频,驱动器映射,剪贴板,无缝窗口等虚拟通道进行封装。先目前ICA协议基于32bit开发,最多支持32个虚拟通道。 RDP通道和ICA不同,RDP支持30个虚拟通道。每个通道都有一个服务器上的对应点。这些通道位于在ICAWinstation驱动的上面,并且每个通道都有自己相对应的虚拟通道驱动程序。
IMG_6124.JPG
为了更好的理解ICA协议,以及明白ICA协议如何与TCP/IP进行交互,以及在以太网中如何进行数据包的接受和发送。下面我就接受ICA协议的数据库传输的细节。ICA协议堆栈如下图所示:
IMG_6125.PNG
  在上图中,描述了ICA数据如何通过各协议层的进行流动。ICA协议数据包是通过TCP/ IP网络由客户端应用程序(或服务器)中产生并包装用于递送到服务器(或客户端应用程序)。
   目的地(客户端或服务器)接收的ICA数据通过相应的协议层。所有的ICA协议层驻留在OSI网络模型内。如下图所示:
IMG_6126.PNG
1、虚拟通道驱动
每个虚拟通道会通过他自己专门的虚拟通道驱动将数据发送到WinStation驱动。因为每个虚拟通道的实现功能不一致,所以其去调用相应系统的自己的驱动就不相同和规范。所以虚拟通道的驱动都是基于需要实现的功能来作相应的驱动开发,完全取决于虚拟通道实现。
      2、WinStation驱动
该WinStation驱动通过较低的网络层接收和发送来自多个ICA虚拟通道驱动的虚拟通道的数据。该WinStation驱动工作在OSI网络模型的应用层、表示层和会话层。该WinStation驱动程序执行以下功能:
  • 建立客户端和服务器之间的ICA会话,并保持会话信息诸如在ICA会话中压缩和加密功能是否开启和ICA数据包优先级标识是否启用。
  • 编码ICA命令信息和变换输入虚拟通道数据分成ICA报文,它放置在WinStation驱动程序的输入缓冲区中。一个ICA包由一个命令字节后跟可选命令数据如下所示:

IMG_6127.PNG
  包含指令数据的ICA数据包并不是硬性的要求,因此一个ICA数据包在命令格式这里可能仅包含单个命令字节。 一个ICA数据包包含一个虚拟通道数据。一个单一的ICA包的最大长度不能超过2048字节(2KB)。
  • 压缩ICA数据包(当数据包处于连通时进行压缩)。
  • 合并或分离压缩ICA数据包(如果不使用压缩或解压缩的ICA数据包)进入一个可用的输出缓冲器。WinStation驱动程序确定在各输出缓冲器的数据量,使得包括ICA数据包的长度在成帧协议驱动程序离开时不超过1460字节(保持ICA数据包通过TCP/ IP传送的时候不被分解或丢弃)。
  • 在加入到输出缓冲器(当压缩已打开时)附加一个压缩报头。
  • 当多个ICA数据包被分配到一个输出缓冲器中,WinStation驱动程序在输出缓冲区里确定哪些ICA虚拟通道的数据包是具有最高优先级的。确定基于虚拟通道的每个输出缓冲区的优先级,并通过此信息提供给成帧协议的驱动程序。例如,如果该输出缓冲器包含Thinwire(优先级0)和打印(优先级为3)的ICA的数据包,那么Thinwire的数据的优先级最高,在输出数据的时候优先输出Thinwire虚拟通道的ICA数据包。
  • 将输出缓冲区转发给加密协议驱动程序(在加密时)。

3、加密协议驱动程序
在打开加密时,加密协议驱动程序将Winstation驱动输出缓冲区数据传递过来的数据添加加密头。所有的数据都经过加密头加密,包括压缩头(如果压缩开启)。
4、帧协议驱动程序
  帧协议驱动程序计算输出缓冲区的字节计数,并添加一个帧头。在除了字节计数、帧头包括一个二位的由WINSTATION驱动程序确定优先值。例如,如果总字节输出缓冲区数是1320个字节,该数据包是高优先级的,帧头的二进制值如下:
IMG_6128.PNG
低阶和高阶字节是反向的网络传输,和帧头被创建如下:
IMG_6129.PNG
上述帧头所描述的ICA优先级分组标注功能第一次引入了是在MetaFrame 1.8版本中,还包括MetaFrame XP。之前早期版本的MetaFrame使用的帧头,不包含优先位。所有16位的帧头被用于字节计数。由于字节计数将永远不会超过2048个字节(ICA包2 kb的限制),早期版本的帧头使用时前两位将始终为零。
   5、TDTCP
ICA协议通过tdtcp(TCP传输驱动程序)传输控制TCP/IP协议栈。tdtcp是ICA(RDP)接口的TCP/IP协议栈。tdtcp不附加任何额外的头部或尾部信息到ICA数据。
6、TCP/IP协议
  一旦TDTCP控制转移到TCP/IP协议栈,该TCP/IP协议驱动程序将准备在网络中传输ICA数据。详细介绍了TCP/IP标准和TCP/IP网络传输数据的封装,可以在互联网上提供的文件(http://www.faqs.org/)上找到和查看。

3、 ICA协议的服务质量


QoS(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力, 是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。 在正常情况下,如果网络只用于特定的无时间限制的应用系统,并不需要QoS,比如Web应用,或E-mail设置等。但是对关键应用和多媒体应用就十分必要。当网络过载或拥塞时,QoS 能确保重要业务量不受延迟或丢弃,同时保证网络的高效运行。在RFC 3644上有对QoS的说明。这解决方案能够识别网络流量中的ICA通信,无论是基于TCP端口(1494默认情况下)或通过识别当新的ICA会话被建立时发起初始化握手(这比使用TCP端口更安全,因为在TCP端口数量是可配置的)。一些QoS的解决方案还可以识别基于其他信息的ICA通信,如发布的应用程序或源IP地址。这种识别使得ICA会话在进行传输时优先整个网络。例如,当用户在通过ICA会话运行关键业务应用程序如PeopleSoft,所有ICA会话可以得到的高优先级的执行功能。
ICA优先级数据包标记提供了QoS解决方案的机会,ICA内部识别虚拟通道优先级,使ICA会话传输优先级较高的数据首先发送。 ICA优先级数据包标记要求在与QoS解决方案结合使用时注意以下事项:
  • TCP和IP是面向流的协议。当接收到ICA数据通过TCP/IP后,它不可以被组合或分解,这取决于ICA协议的驱动程序如何打包的ICA数据。ICA输出缓冲器是专门限制ICA数据包大小为1460字节的,使它们传递到TCP/IP协议栈保持不变。然而,并不能保证输出缓冲区后到TCP/IP协议栈后将保持不变。因此,在帧头的ICA的优先级位不得不总是在TCP段或IP数据包中的同一个地方。这可以防止服务质量的解决方案依靠一个数据偏移无法识别在TCP和IP层优先级位。为了避免这个潜在的问题,QoS的解决方案ICA的数据必须验证在TCP和IP层的报头信息的字节计数匹配的前两个字节的字节数(正确对准后,前两个字节将包括优先级位和ICA的字节数成帧头)。如果将字节计数不匹配,在ICA输出缓冲器中输出到TCP/IP协议栈的ICA数据包可能是不完整的或是异常的数据包。
  • ICA优先级数据包标记是在表示层(OSI网络模型的第六层)来实现。大多数路由器在较低层(层中的两个通过四个)读取数据。因此,路由器不要有权访问ICA优先级数据包标记信息。当IP数据包通过路由器发送的数据包可能被分片。如果这种情况下,第一分组将包含成帧头,包括优先级位和一个现在不正确字节计数(由于分组被分段)。随后的数据包片段将不会有一个成帧头,从而将不包括优先级位(或字节数)。因此,如果服务质量解决方案通过接收到不完整的数据包后,ICA通信就会出现问题。因此需要检验IP层和ICA成帧之间的字节数头,确保优先级位被正确识别。
  • TCP要求收到在TCP缓冲区中的每个TCP段发送附加前确认段。这可以防止的QoS解决方案能够实现QOS的优先级功能。如果没有优先级标记头,TCP会报告收到失败的TCP报文段。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表