Ten Years

十年一剑!
-------------------------------------------------
Operating System Research / Technique

Tuesday, January 30, 2007

AF_INET和PF_INET的区别

在写网络程序的时候,建立TCP socket一般是这样的:
   sock = socket(PF_INET, SOCK_STREAM, 0);
然后在绑定本地地址或连接远程地址时需要初始化sockaddr_in结构,其中指定address family时一般设置为AF_INET,即使用IP。

问题是AF_INET和PF_INET到底有什么区别,甚至很多参考书上都是混用。今天查了一下相关头文件的定义,找到了答案。

AF = Address Family
PF = Protocol Family
AF_INET = PF_INET

所以,理论上建立socket时是指定协议,应该用PF_xxxx,设置地址时应该用AF_xxxx。当然AF_INET和PF_INET的值是相同的,混用也不会有太大的问题。

Post a Comment

Thin-Clien Computing论文阅读指南 -- 3 WBT系统

3. WBT系统

WBT系统就是Windows终端,基于RDP协议。RDP是Windows远程协助、远程桌面的基础。WBT在服务器端需要Windows终端服务,通信使用RDP协议。

Citrix Systems, Citrix MetaFrame 1.8 Backgrounder, Technical White Paper, Fort Lauderdale, FL, June 1998.
Citrix公司的MetaFrame是最早的在Windows NT上支持多用户图形化登录的系统,后来核心功能卖给了M$,于是诞生了Windows NT 4.0, Terminal Server Edition(TSE),M$之后就有了Terminal Server的产品线(现在是Server版的标准功能,甚至XP里也有,只不过只支持1个用户)。这篇文章还介绍了当时Citrix当时和M$的协议。MetaFrame使用ICA(Independent Computing Architecture)协议,现在也依赖于Windows终端服务,可以看作RDP的高级版。

Microsoft Corporation, Microsoft Windows NT Server, Terminal Server Edition, Version 4.0: An Architectural Overview, Technical White Paper, Redmond, WA, 1998.
前面提到了NT 4.0 TSE,第一个Terminal Service。对终端服务的结构有比较细致的描述。(推荐阅读)

Microsoft Corporation, Microsoft Windows Server 2003: Technical Overview of Terminal Services, Technical Article, Redmond, WA, 2004.
Windows 2003版的,不过M$是越来越抠门了,实质性的内容比上一篇更少。

Databeam Corporation, A Primer on the T.120 Series Standard, Technical White Paper, Lexington, KY, May 1997.
RDP协议最初基于T.128(用于NetMeeting),属于T.120协议族,这篇文章有些基本的介绍。

ITU-T Recommendation T.128: Multipoint Application Sharing. Telecommunication Standardization Sector of International Telecommunication Union (ITU), 1998.
T.128标准,RDP 4和T.128很相似。如果要实现分析RDP协议,这篇文档很有帮助。

Performance and Sizing of Compaq Servers with Microsoft Windows NT Server 4.0, Terminal Server Edition. Compaq Computer Corporation, Houston, TX, 1998.
HP NetServer Performance and Sizing Guidelines: Microsoft Windows NT 4.0 Server, Terminal Server Edition. Hewlett-Packard Company, Cupertino, CA, 1999.
Windows Server 2003 Terminal Server Capacity and Scaling. Microsoft Corporation, Redmond, WA, 2003.
关于Windows终端服务的性能规划问题,内容大同小异。

H.L. Yu, W.M. Zhen, and M.M. Shen, Extending the Power of Server Based Computing, Proceedings of the 4th International Conference on Computational Science (ICCS2004), June 2004, pp. 242-249.
清华的朋友写的,关于NC的实现,可以看作国内CPU+NC开发工作的一个典型。也提到了本地解码支持视频播放。(推荐阅读)

Thin-Clien Computing论文阅读指南 -- 2 Thin-client应用

2. Thin-client应用

先说说thin-client的应用,这些文章一般都在IT应用的会议和期刊,主要是关于thin-client的优劣势问题,可以帮助理解thin-client。但是说对研究thin-client有什么作用,似乎主要是增加reference数量和完整性:-)

Don McIntosh and Rich Bom, Server-Based Computing: Back to the Future Solves Enterprise Desktop Problems, Proceedings of the IEEE International Conference on Management of Innovation and Technology (ICMIT), Volume 2, November 2000, pp. 732-737.

Andrej Volchkov, Server-Based Computing Opportunities, IEEE IT Professional, Volume 4, Issue 2, March-April 2002, pp. 18-23.

Thin-Clien Computing论文阅读指南 -- 1 概念

(注:由于内容比较多,现在没有那么多时间一下写完,先来个连载吧。)

 

Thin-client computing不是一个范围很广的主题,这里尝试针对这个主题给出一个快速阅读指南。

1. 概念

Thin-client computing是将计算任务集中在服务器端从而使用简单的(“瘦”的)客户端访问桌面计算环境的一种技术。代表性的thin-client有Windows终端(Windows Based Terminal,简称WBT)、Sun Ray、VNC等。某种意义上说,thin-client是大型主机(mainframe)时代的文本终端的现代图形化版本。按照其定义来讲,使用telnet的远程终端(或者SSH终端)也是符合thin-client定义的,因为所有计算都是在远程主机(remote host)上完成。不过,现在通常在说thin-client时,都隐含了使用图形界面的意思。由于thin-client computing的关键之一是远程访问图形界面,X终端有时也被当作thin-client,尤其是在进行比较的时候,因为X Window本质上就是网络透明的,可以从远程访问桌面环境,例如通过XDMCP。但是X Server实在是太“胖”了(注意是X server运行在X终端一边!),而且缺少stateless特性(前面列举的thin-client的重要特性),最重要的是X在设计时并有thin-client方面的考虑,所以我认为除了在分析远程显示机制时,不应当将X终端当作thin-client。

一个相关的概念是网络计算机(Network Computer, NC)。国内对NC的概念提的比较多,尤其是伴随着国产CPU纷纷选择thin-client应用作为重要的应用模式。NC的概念最早由Oracle和Sun等公司于1995年提出,并制定了NC参考标准(Network Computer Reference Profile)。最初NC是基于Java技术的,只能运行Java编写的程序,应用受到了很大的限制。现实一点的说法是最初NC概念伴随着Java OS等技术的失败而夭折了。(也许Java OS的概念太前驱了吧,我有朋友有幸参与到Java OS的开发,虽然大家尽了最大的努力,但是还是……我对Java OS没有偏见,也许是生不逢时吧,看看最近很火的VMM,也许有一天人们还会想起它。)后来,随着Windows终端服务的普及,基于Windows远程桌面协议(Remote Desktop Protocol, RDP)的WBT开始广泛应用,NC的概念开始和thin-client等同起来,也包括国内的大多数所谓“NC”(可以看看“北大众志NC”哦:P)。目前的现状是国外的论文一般使用thin-client,国内NC用的比较多。

由于典型的thin-client系统都是把计算任务集中在服务器端的,客户端只负载输入和显示等,一些文章也使用server centric computing, server based computing等术语表示和thin-client computing相似的概念。我的理解是强调了不同的方面,一般可以互换,但thin-client可能还是广泛些,因为从概念上讲没有说计算一定是server based。总之,在检索文献时也可以查查server centric/server based。另外,thin client有时也指一种设计模式,如在面向对象的设计环境中,不过似乎在2000年之后的就专指现在的概念了。