当前位置:文档之家› 客户-服务器编程与应用

客户-服务器编程与应用

客户-服务器编程与应用课程目的和要求:TCP/IP协议已经成为业界最成熟的互联网协议,它使得与厂商无关的计算机通讯成为可能。

而客户机-服务器模式在计算机通讯中占主导地位,它是网络中最基本的通讯基础。

它不仅让学生理解客户机-服务器各部件的功能,还说明了如何构造客户机和服务器软件。

了解客户机服务器模式的基本概念;掌握TCP/IP 提供传送数据的基本机制;如何在TCP/IP环境下组织编写应用程序;掌握计算机网络通讯程序的基本构造;了解在网络环境下构造分布式程序。

第1章引言和概述客户机—服务器结构▪信息分散和再分配技术▪局域网和广域网原先是为共享资源和降低外设成本而开展▪促进了严重依赖服务器的应用程序的开发▪客户不再需要庞大的计算机,3W技术归功于客户—服务器技术客户机—服务器概念模块化编程的一种逻辑延伸复杂软件包括:主程序模块1 每一模块特定功能模块2 提高开发能力和可维护性……模块n基础网络▪客户机/服务器的应用必须拥有一个基础网络进行有效的通信。

▪协议使客户机/服务器进程之间能够进行通信和交换数据包。

▪TCP/IP协议可划分为5层:•硬件层:•网络接口层:硬件控制(路由),封装数据•INTERNET协议层(IP):数据格式•传输层:用TCP将数据送入缓存•应用层:Telnet FTP WWW …客户机-服务器的结构图•局域网(LAN)•企业INTRANET•企业广域INTRANET(不同地区企业)•企业WWW网(世界范围内企业上网,是INTERNET一部分)•企业WWW数据库应用(数据库服务器)1.1 使用TCP/IP的因特网应用TCP/IP提供了将计算机互连的技术。

公用网络应用:浏览、聊天、万维网。

专用网络应用:公司内部监控,酒店预定现在已经从构造互连网转变为使用户连网,则需要更多的程序员知道设计和实现分布式应用的基本原理和技术。

1.2 为分布式环境设计应用程序目标:透明性,即每个分布式应用程序的行为应尽可能与同样程序的非分布式版本一样。

提供一个环境,隐藏计算机和服务的位置。

1.3 标准和非标准的应用协议只要程序员设计了一个使用TCP/IP通信的分布式程序,它就已经发明了一个应用协议,有些协议已经成为RFC文件,并被采纳为TCP/IP协议族的一部分,这些协议称为标准协议。

其他私人使用的应用协议为非标准协议。

1.4 使用标准应用协议的例子远程登录:TELNET 通信量居第四(WEB,文件传送,网络新闻)用户并不关心TELNET协议内部编码细节。

UNIX系统中,命令为:TELNET machineTELNET 1.5 telnet连接的例子telnet Trying…Conneted to Escape character is ‘^]’.SunOS 5.6Login:1.6 使用TELNET访问其他服务TCP/IP使用协议端口号标明在一台给定的机器中的应用服务,在伯克利UNIX中:telnet 13提供Daytime服务telnet 79提供Finger服务,有关已登录机器中的所有用户信息。

1.7 应用协议和软件的灵活性单一软件访问多个服务▪所有协议设计目标都是找出可以重用于多种应用的基本抽象。

服务的协议和服务的本身是分离的。

▪尽可能使用标准协议。

1.8 从提供者的角度看服务在各个网点用户可能在同一时间访问给定的服务,且都希望无延时的响应。

为提供快速响应并处理多个请求,提供应用服务的计算机系统必须使用并发处理。

提供对应用服务的并发访问是重要而困难的一个单个程序必须在同一时间管理多个活动,这些多个活动相互不影响。

这种对并发的需求使网络软件的设计、实现和维护复杂化了。

1.9 小结许多程序员在构建分布式程序时使用TCP/IP作为传输机制,在设计和实现这些软件前,必须先理解计算的客户-服务器模型、传输协议使用的语义、应用系统用于访问协议软件的操作系统的接口、实现客户和服务器的基本算法,以及诸如应用网关的其他技术。

多数网络服务允许多个用户同时对其进行访问,为使多个用户能同时访问服务,服务器软件必须是并发的。

并发处理技术使构建这种可以同时处理多个请求的应用程序成为可能。

第2章客户-服务器模型与软件设计2.1 引言TCP/IP协议仅提供传送数据的基本机制。

它建立两个程序之间的对等通信。

可在同一机器和不同机器上运行。

但并没有规定对等程序在什么时间及为什么要交互,也没有规定在分布式环境下应如何组织应用程序。

由一种占主导地位的方法,几乎所有应用都是用它,称之为客户机-服务器模式,它构成大多数计算机通讯的基础。

以下说明客户机-服务器模型动机,功能以及如何构造客户机-服务器软件。

2.2 动机基本动机来自聚集问题。

一个人启动程序发现对等程序不存在而推出;另一个人启动程序发现对等程序已中止;因此在同一时间内向对方发送消息概率很低,客户机-服务器模型要求要求任何一对程序通信时,有一方必须在启动后等待对方联系。

因此,一般的操作系统中在启动时就自动启动通信程序,一直运行等待下一个服务请求。

2.3 术语和概念2.3.1 客户机和服务器按通信发起的方向来对程序分类。

发动通信的应用程序叫客户机;等待来自客户机的入呼叫请求的任何一种程序叫服务器。

术语和概念2.3.2 特权和复杂性由于服务器软件往往要访问操作系统保护的数据(如数据库、文件、设备、协议接口)因此需要一些特定的系统特权。

对于高强度计算和处理大量数据的服务器,如果并发地处理请求,其运行更有效。

这种特权和并发操作的结合使服务器的设计与实现较客户机更加困难。

术语和概念2.3.3 标准的和非标准的客户机软件标准的:请求标准的TCP/IP服务(电子邮件)非标准的:请求网点自己定义的服务(专用数据库系统)系统管理员让用户不能区分是本地的还是标准的服务,但程序员必须了解这些服务。

术语和概念2.3.4 客户机的参数化有些客户机提供了更多的通用性,允许用户能指明目的机器和目的协议端口号等参数,称之为全参数化客户机。

在用户调试时,使用非标准协议端口调用他们不会打扰标准服务。

术语和概念2.3.5 无连接的和面向无连接的服务器无连接的:使用UDP协议通信(不可靠)面向连接的:使用TCP协议通信(可靠)TCP:可靠,验证数据到达,忽略重复分组,控制流量,意外处理初学者:使用TCP使用UDP的原因:•指明使用UDP•依靠硬件广播或组播•不能容忍额外开销术语和概念2.3.6 无状态和有状态的服务器由服务器维护的关于它与客户机正在进行的交互信息称为状态信息。

不保存任何状态信息的服务器称为无状态服务器(Stateless Server);而与此相反的称为由状态服务器(Stateful Server)。

术语和概念2.3.7 无状态文件服务器的例子客户每次请求必须包括完整的信息,不能有二义性。

如包括以下字段:项目描述Op 操作(读或写)Name 文件名Pos 在文件中的位置Size 要传输的字节数data (只出现在写请求中)术语和概念2.3.8 有状态文件服务器的例子由于服务器能区分各个用户,并保留个用户以前的请求,请求报文不必保留所有信息。

服务器维护一张表,含有当前客户和访问文件信息。

使得交互报文小处理简单。

但在真实网络中机器可能崩溃或重启,而报文可能丢失,重复,交付失序,采用状态信息会导致复杂应用协议,而这种协议难于设计、理解和正确编程。

术语和概念2.3.9 标识客户有状态服务器表示客户的两种方法:端点和句柄。

端点:IP地址和协议段口号,新的连接不会将其与以前的连接关联;句柄:一个句柄只能用于一个客户和服务器之间。

在理想可靠交付时使用状态信息能提高效率。

但在大部分情况下有报文丢失,失序,重复,状态信息可能不正确,耗尽服务器资源。

因此状态协议导致复杂应用协议。

难于设计。

术语和概念2.3.10 无状态是一个协议问题无状态问题的重点是应用协议是否承担着可靠交付责任。

如果一个互联网种的下层网络可能使报文重复、延迟或不按序交付,或者客户机可能意外崩溃,那么这种网络服务器应是无状态的。

只有应用程序被设计成对操作是幂等的,服务器才能使无状态的。

术语和概念2.3.11 充当客户的服务器一个服务器也许需要访问网络服务,而这个服务要求该程序作为一个客户机。

2.4 小结▪客户机服务器范例将通信分为两类,客户机或服务器。

并进一步分为标准和非标准客户服务器软件。

▪初学者使用TCP,TCP提供可靠服务。

▪服务器状态信息提供高效服务。

如果客户机机器意外崩溃或者传输网络让分组重复、延迟或丢失,状态信息会耗尽资源或不正确。

因此应尽量减少状态信息;如果应用协议不能使操作成为幂等的,就不能使用无状态服务器。

▪有些服务器在某些情况下也可称为客户机。

第3章客户-服务器软件中的并发处理3.1 引言本章通过并发来扩展这种客户机-服务器交互的概念。

并发提供了很多藏在客户机服务器交互背后的能力,但也使软件的设计和构建变得更困难。

3.2 网络中的并发并发concurrency:指真正的或表面的同时计算。

分时Time sharing:单个处理器在多个计算任务之间快速切换。

多处理multiprocessing:多个处理器同时执行多个计算任务。

网络中并发:机器之间,通信机器对之间,各机器表面独立。

他们共享网络。

当用户在多台机器上运行时,或者当一个多任务操作系统允许多个客户程序在单台计算机中并发运行时,这些客户程序之间就产生了并发3.3 服务器中的并发服务器必须并发地处理多个传入请求(incoming request)。

服务器操作需要相当多的计算或通信。

3.4 术语和概念3.4.1 进程概念进程:抽象定义了计算的基本单元,包括指令指针,用户表示符,程序文本,数据区。

它是一个计算活动的执行。

一个进程至少有一个线程,每个线程按自己的步调执行。

为并发环境构建应用程序的程序员并不知道低层硬件是由一个处理器构成还是由多个处理器构成。

术语和概念3.4.2 局部和全局变量的共享当多个线程并发地执行同一段代码时,对这段代码所涉及的变量,每个线程都应各有一份独立的副本。

进程模型将独立变量副本的做法扩大到了包含全局变量每个进程拥有全局变量的副本,如果多个线程在同一个进程内执行,则他们各自有局部变量的副本,但可共享进程的全局变量副本。

3.4.3 过程调用当多个线程并发地执行一段代码时,每个线程拥有自己的过程激活记录运行时栈(run-time stack)3.5 一个创建并发进程的实例3.5.1 一个顺序执行的C实例 P203.5.2 程序的并发版本 P21调用Fork函数,操作系统主要开销是进程切换,系统调用。

Fork函数调用导致操作系统建立了执行程序的一个副本,并且允许这两个副本同时执行。

3.5.3 时间分片时间分片机制试图在所有进程间平等地分配可用处理器资源。

相关主题