UNIX网络的服务器程序设计方法_信息技术论文
unix网络的服务器程序设计方法
(刘凯 刘春旭,四川大学计算机学院)
摘要:介绍了几种网络操作模式和unix下基于tcp/ip协议的网络客户/服务器模式的程序架构。重点对客户/服务器模式中服务器程序的几种设计方法进行了讨论。
关键词:客户/服务器,socket,进程,并发服务器
1.引言
1.1几种网络模式的介绍
对等网络(peer-to-peer)模式不需要专用服务器,每一台工作站都能充当网络服务的请求者和提供者,都有绝对自主权,也可以互相交换文件。这种类型的网络软件被设计成每一个实体都能完成相同或相似的功能。
服务器(server-based)模式以服务器为中心,严格地定义了每一个实体的工作角色,即网络上的工作站无法在彼此间直接进行文件传输,需通过服务器作为媒介,所有的文件读取,消息传送等也都在服务器的掌握之中。
客户/服务器(client/server)模式(有时也称为主从式master/slave)指将需要处理的工作分配给客户端和服务器端处理,所谓的客户和服务器并没有一定的界限,这取决于运行什么软件,简单的讲,客户是提出服务请求的一方,而服务器是提供服务的一方。在客户/服务器模式中服务器端所提供的功能不仅仅是文件、数据库等服务,还应当有相应的计算、通信等能力——也就是说在工作时由客户端和服务器端各自负担一部分计算或通信的功能。客户/服务器模式已经成为计算机网络互连中最重要的应用技术之一,它把一个大型的计算机应用系统变为多个能互为独立的子系统,而服务器便是整个应用系统资源的存储与管理中心,多台客户机则各自处理相应的功能,共同实现完整的应用。
浏览器/服务器(browser/server)模式从本质上将,仍然是客户/服务器模式(是客户/服务器模式的特例)。只不过在某些应用方面,如数据库服务,它将传统的二层客户/服务器结构发展成三层的客户/服务器结构并在internet上应用而已。
在上述几种模式中,客户/服务器模式具有灵活多变的体系结构、丰富的开发环境和强大的设备驱动能力。
1.2本文所采用的网络应用程序编程接口
网络程序之间进行通讯,必须建立在一定的通讯协议基础之上。对于unix下的应用程序,可用的协议有tcp/ip的传输控制协议tcp(transmission control protocol)和用户数据报协议udp(user datagram protocol),xns(xerox network system)的定序分组协议spp(sequential pocket protocol)和网际数据报协议idp(internetwork datagram protocol)以及arpanet的接口报文处理机链路implink(interface message processor link)等。因为internet的普及,使得tcp/ip成为使用最广泛的协议。
unix下基于tcp/ip协议的网络应用程序编程接口api(application programming interface)有两种:源自bsd unix的socket api和at&t的传输层接口tli(transport layer interface)的超集——x/open传输接口xti(x/open transport interface)。这两种api都是面向客户/服务器模式的。由于socket api已经成为事实上的标准,因此本文在介绍服务器端程序的设计方法时也采用socket api。