230 likes | 438 Views
TCP/IP 基本原理 第十章 Web 服务. 本章学习要求 : 掌握: Web 与 HTTP 的概念与关系 掌握: HTTP 的工作原理 了解: Web 服务器软、硬件选择要点 了解: IIS 服务器的基本概念 了解: Apache 服务器的配置. Web( 或称 World Wide Web ,简称 WWW) 服务是最常见的 Internet 服务.而 HTTP ( Hypertext Transfer Protocol ,超文本传送协议)是 web 的基础。 W eb 服务是典型的客户 / 服务器结构的应用。
E N D
本章学习要求: • 掌握:Web与HTTP的概念与关系 • 掌握:HTTP的工作原理 • 了解:Web服务器软、硬件选择要点 • 了解:IIS服务器的基本概念 • 了解:Apache服务器的配置
Web(或称 World Wide Web,简称WWW)服务是最常见的Internet服务.而 HTTP(Hypertext Transfer Protocol,超文本传送协议)是web的基础。W eb服务是典型的客户/服务器结构的应用。 Web的客户(通常称之为“浏览器”)与web服务器使用一个或多个TCP连接进行通信。Web客户端与服务器端通信时所采用的协议就是HTTP协议。Web服务器可以通过超文本链接指向另一个Web服务器,或者是其他类型的服务器(如FTP服务器、Telnet服务器等)。 在HTTP的协议中,描述了一种从 Web服务器返回给客户端的文档,称为H TML(超文本标记语言)文档。Web服务器还返回其他类型的文档(图像、无格式文本等)。与这些用HTML语言描述的文档一起、构成了丰富多彩的Web页面。
10.1 HTTP协议简介 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。HTTP协议的主要特点可概括如下: • 支持客户/服务器模式。 • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 • 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 • 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
源 服 务 器 (O) 请求链 用 户 代 理 UA 连接V 响应链 10.1.1 HTTP的工作原理 由于HTTP协议基于请求/响应范模式(相当于客户机/服务器),一个客户机与服务器建立连接后,发送一个请求给服务器,请求格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。 许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理和源服务器(Origin server)之间通过一个单独的连接来完成。如下图示:
用 户 代 理 UA 源 服 务 器 (O) 请求链 连接V 连接V 连接V 连接V 响应链 当一个或多个中介出现在请求/响应链中时,情况就变得复杂一些。中介由三种:代理(Proxy)、网关(Gateway)和通道(Tunnel)。一个代理根据URI的绝对格式来接受请求,重写全部或部分消息,通过URI的标识把已格式化过的请求发送到服务器。网关是一个接收代理,作为一些其它服务器的上层,并且如果必须的话,可以把请求翻译给下层的服务器协议。一个通道作为不改变消息的两个连接之间的中继点。当通讯需要通过一个中介(例如:防火墙等)或者是中介不能识别消息的内容时,通道经常被使用。下面的图表明了在用户代理(UA)和源服务器(O)之间有三个中介(A,B和C)。一个通过整个链的请求或响应消息必须经过四个连接段。这个区别是重要的,因为一些HTTP通讯选择可能应用于最近的连接、没有通道的邻居,应用于链的终点或应用于沿链的所有连接。尽管下图是线性的,每个参与者都可能从事多重的、并发的通讯。例如,B可能从许多客户机接收请求而不通过A,并且/或者不通过C把请求送到A,在同时它还可能处理A的请求。
用 户 代 理 UA 源 服 务 器 (O) 请求链 连接V 连接V 响应链 任何针对不作为通道的汇聚可能为处理请求启用一个内部缓存。缓存的效果是请求/响应链被缩短,条件是沿链的参与者之一具有一个缓存的响应作用于那个请求。下图说明结果链,其条件是针对一个未被UA或A加缓存的请求,B有一个经过C来自O的一个前期响应的缓存拷贝。 在Internet上,HTTP通讯通常发生在TCP/IP连接之上。缺省端口是TCP80,但其它的端口也是可用的。但这并不预示着HTTP协议在Internet或其它网络的其它协议之上才能完成。HTTP只预示着一个可靠的传输。
这个过程就好像我们打电话订货一样,我们可以打电话给商家,告诉他我们需要什么规格的商品,然后商家再告诉我们什么商品有货,什么商品缺货。这些,我们是通过电话线用电话联系(HTTP是通过TCP/IP),当然我们也可以通过传真,只要商家那边也有传真。这个过程就好像我们打电话订货一样,我们可以打电话给商家,告诉他我们需要什么规格的商品,然后商家再告诉我们什么商品有货,什么商品缺货。这些,我们是通过电话线用电话联系(HTTP是通过TCP/IP),当然我们也可以通过传真,只要商家那边也有传真。 以上简要介绍了HTTP协议的宏观运作方式,下面介绍一下HTTP协议的内部操作过程。 首先,简单介绍基于HTTP协议的客户/服务器模式的信息交换过程,如下图所示,它分四个过程,建立连接、发送请求信息、发送响应信息、关闭连接。 在WWW中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。WWW服务器运行时,一直在TCP80端口(WWW的缺省端口)监听,等待连接的出现。 建立连接 发出请求信息 发出响应信息 拆除连接 服 务 器 (O) 客 户 机
下面讨论HTTP协议下客户/服务器模式中信息交换的实现。下面讨论HTTP协议下客户/服务器模式中信息交换的实现。 1)建立连接:通过申请套接字(Socket)实现的。客户打开一个套接字并把它约束在一个端口上,如果成功,就相当于建立了一个虚拟文件。以后就可以在该虚拟文件上写数据并通过网络向外传送。 2)发送请求: 打开一个连接后,客户机把请求消息送到服务器的停留端口上,完成提出请求动作。 HTTP/1.0请求消息的格式为: 请求消息=请求行(通用信息|请求头|实体头) CRLF[实体内容] 请求行=方法+请求URL+HTTP版本号+CRLF 方法=GET|HEAD|POST|扩展方法 URL=协议名称+宿主名+目录与文件名 方法描述指定资源中应该执行的动作,常用的方法有GET、HEAD和POST。不同的请求对象对应GET的结果是不同的,对应关系如下: 对象 GET的结果 文件 文件的内容 程序 该程序的执行结果 数据库查询 查询结果 HEAD:要求服务器查找某对象的元信息,而不是对象本身。 POST:从客户机向服务器传送数据,在要求服务器和CGI做进一步处理时会用到。用于发送HTML文本中FORM的内容,让CGI程序处理。
下面举 一个请求的例子: GET http://networking.zju.edu.cn/zju/index.htm HTTP/1.0 • 头信息又称为元信息,即信息的信息,利用元信息可以实现有条件的请求或应答 。 • 请求头——告诉服务器怎样解释本次请求,主要包括用户可以接受的数据类型、压缩方法和语言等。 • 实体头——实体信息类型、长度、压缩方法、最后一次修改时间、数据有效期等。 • 实体——请求或应答对象本身。 3)发送响应:服务器在处理完客户的请求之后,要向客户机发送响应消息。HTTP/1.0的响应消息格式如下: 响应消息=状态行(通用信息头|响应头|实体头) CRLF (实体内容) 状 态 行=HTTP版本号 状态码 原因叙述 状态码表示响应类型 1×× 保留 2×× 表示请求成功地接收 3×× 为完成请求客户需进一步细化请求 4×× 客户错误 5×× 服务器错误
响应头的信息包括:服务程序名,通知客户请求的URL需要认证,请求的资源何时能使用。响应头的信息包括:服务程序名,通知客户请求的URL需要认证,请求的资源何时能使用。 4)关闭连接: 客户和服务器双方都可以通过关闭套接字来结束TCP/IP对话。
10.2 HTML语言简介 HTML语言是超文本标记语言(Hyperlink Markup Languange)的缩写,它基于SGML(标准通用标记语言,Standard General Markup Language )的描述文档结构的语言。HTML语言使用描述性的标记符(称为标签)来指明文档的不同内容。标签是区分文本各个组成部分的分界符,用来把HTML文档划分成不同的逻辑部分(或结构),如段落、标题和表格等。标签描述了文档的结构,它向浏览器提供该文档的格式化信息,以传送文档的外观特征。 用HTML语言写的页面是普通的文本文档(ASCII),不含任何与平台和程序相关的信息,它们可以被任何文本编辑器读取。HTML文档包含两种信息: • 页面本身的文本 • 表示页面元素、结构、格式、和其它超文本链接的HTML标签。
10.3 Web服务器 在最简单的情况下,Web服务器就是一台计算机,它使用Internet传输协议和一个快速的Internet连接,向客户计算机发送其需要的HTML文件。然而,随着Internet的发展,最新型的Web服务器的配置越来越像传统的客户/服务器和多媒体系统。今天的Web服务器在Internet(或Intranet)上提供音频和视频服务,通信和协作服务,在客户输入的基础上动态地产生内容,下载组件和软件,影响和操作数据库应用程序及其他系统,在Internet上处理商务,并且提供大量的其他服务。 • Internet上的Web服务器 Internet上的计算机通过IP地址(如,207.67.42.91)来确认。这些IP地址和每个机器相应的域名由Internet上的DNS(域名服务)服务器管理。这些服务器不断地保持同步并更新它们的数据库列表,这些数据库列表包含了Internet上唯一的用数字表示的IP地址和域名。当前,World Wide Web的通信量在Internet通信量中占了很大的部分。web服务器通过高速通信线路直接与Internet连接。这些服务器运行Web服务器软件,该软件使用HTTP(超文本传输协议)越过TCP/IP接收和发送HTIP的页请求,并把数据反馈给客户浏览器。HTTP是通过Web传送超文本文件(例如htm文件)的协议。
Internet使用HTTP协议在内部网络上传送文件。公司在他们现有的基于TCP/IP的网络上建立并配置Web服务器。Internet创作工具和组件技术使一些组织能够开发出更便宜的Interanet的Web服务器是企业网络的一部分。 Internet使用HTTP协议在内部网络上传送文件。公司在他们现有的基于TCP/IP的网络上建立并配置Web服务器。Internet创作工具和组件技术使一些组织能够开发出更便宜的Interanet的Web服务器是企业网络的一部分。 当使用Windows NT Server和IIS建立企业内部互连网时,Web服务器成为现有的安全的企业网络的一部分,它允许用户访问HTML文件、Web应用程序、共享文件和打印机以及通过Windows NT Server网络登录在的有的Web服务器上共享系统信息。 还可以配置Windows NT Server,针对不同的用户对Web服务器上的文件确定不同的访问级别。Windows NT 安全系统的适当的设置、安装防火墙软件和硬件来控制访问,使你能够为企业内部互连网以外的用户开放部分的内部网络。在本章的“安全性”一节中介绍关于防火墙软件的更多信息。 • Web服务器必须具备的条件 运行Internet或Intranet应用程序的服务器,是你的商业事务中非常重要的部分。它们必须安全、可靠地运行,以确保对你的顾客不会产生任何影响。当然,它们也必须具有一定的伸缩性,使你的业务以所需的速度发展。在以下的小节中总结了Web服务器需要的软件和硬件。
Web服务器硬件 运行Internet Information Server 4.0和Windows NT Server 4.0 Web服务器的推荐硬件如下表所示。(这些推荐硬件不是最低要求,而是Microsoft 为运行良好的系统推荐的。) • RAM 如果建立的Web系统主要处理HTTP文件请求,那么当通信量增加时,在使用器中的处理或RAM超过负荷之前,很有可能用完网络的带宽。然而,确保计算机中有足够的RAM使系统能够快速地对文件服务,并且把许多用户经常访问的文件保持在高速缓冲里。至少,确保购买的计算机在增加网络带宽时,有能力增加RAM的数量。 • Internet连接 Web服务器通过一条或多条高速通信线路直接与Internet连接。无论是要求销售商来安装通信线路,还是把服务器连接到Internet服务提供商(IPS)的现存线路上,都必须了解Internet连接速度(ICS)和相关的硬件的基础知识。估计带宽需求是一个复杂的过程,通常涉及以下因素:用户要下载的文件的大小(KB)和数量、在同一时刻你所期望的用户数量。
用户Internet连接的速度 用户在你的站点上执行的任务。(由于用户不总要从服务器上得到文件,所以,服务器在同一时刻,所支持的用户数可以多于连接数。) • 网络线路需要支持的额外通信量 Windows NT Server和IIS可以处理每台计算机对于静态HTML内容同时的大量连接。实际上,除了快速的网络连接外,传送HTML文件的单个Windows NT服务器,可以比网络线路处理更多的连接。给你提供连接的销售商,可以给你每种类型的线路能够支持多少种使用的详细资料。 • 考虑其他硬件 应该根据系统对于你的业务成功的重要程度决定。项目的额外费用,例如RAID(廉价磁盘阵列)配置、服务器簇、UPS(不间断电源)和备份单元——还有其他的容错组件,例如备份电源供应和网卡,均有它们的价值;考虑其对你的网络系统可靠运行的重要性。与硬件销售或IPS讨论容错系统组件。当建立起服务器并运行时,最好在站点真正使用以前,在期望的负载一对其进行测试。这样有助于你确定瓶颈产生的地方和确保你对合适的硬件做出决定。测试期间,就发现机器RAM不足,比用户无法使用你的站点而遇到麻烦要好得多。
MaxRequestsPerChild 30 使用子进程的方式提供服务的Web服务,常用的方式是一个子进程为一次连接服务,这样造成的问题就是每次连接都需要生成、退出子进程的系统操作,使得这些额外的处理过程占据了计算机的大量处理能力。因此最好的方式是一个子进程可以为多次连接请求服务,这样就不需要这些生成、退出进程的系统消耗,Apache就采用了这样的方式,一次连接结束后,子进程并不退出,而是停留在系统中等待下一次服务请求,这样就极大的提高了性能。 但由于在处理过程中子进程要不断的申请和释放内存,次数多了就会造成一些内存垃圾,就会影响系统的稳定性,并且影响系统资源的有效利用。因此在一个副本处理过一定次数的请求之后,就可以让这个子进程副本退出,再从原始的httpd进程中重新复制一个干净的副本,这样就能提高系统的稳定性。这样,每个子进程处理服务请求次数由MaxRe questPerChild定义。 缺省的设置值为30,这个值对于具备高稳定性特点的Linux系统来讲是过于保守的设置,可以设置为1000甚至更高,设置为0支持每个副本进行无限次的服务处理。 • #Listen 3000#Listen 12.34.56.78:80#BindAddress *
10.3.1 Microsoft 的IIS服务器 IIS是一个Internet文件,IIS本身可以作为一个Web服务器,或者与相关的兼容技术一起建立Internet商务,访问并处理不同数据源中的数据以及建立利用服 务器脚本和组件代码传送客户/服务器功能的Web应用程序。 • 管理 IIS 的Internet Service Manager使得管理者可以创建Web和FIP站点、改变站点的默认设置、向服务器操作者分配任务、启动和停止站点、管理事务、查看统计资料、本地或远程地管理任务,并为Web服务器或其他的服务器执行其他的管理任务。使用Internet Service Manager作为到Microsoft Management Console(MMC)(Windows NT的管理程序)的咬接。利用Management Console,每个管理者都可以自定义网络管理任务。 • 安全性 如果Internet 中需要安全事务,IIS能提供Secure Sockets Layer (SSL)支持作为信息在客户与服务器之间交换的一种方式。SSL 服务器提供了数字鉴别以验证用户合法性。 IIS支持基本的身份验证(未加密的用户名和密码的发出)、Callenge/Response (密码的加密验证)以及服务器的登录密码(用于银行和其他财务机关的128位数字证明密码)。Microsoft通过Microsoft Proxy Server 提供了防火墙安全、内容缓冲以及管理软件工具。代理服务器允许企业内部互连网的开发者给公司提供Web访问,并允许用户安全地浏览内部网络的某些部分。
10.3.2 Apache的配置 1. 配置文件 Apache1.3.*是一个后台运行的程序,没有界面。所有的配置,都包含在配置文件里。如果按上图安装,则主配置文件是: C:\Apache\conf\httpd.conf 如果要修改Apache的配置,可以用任何一个文本编辑工具(如记事本)编辑这个配置文件。在配置文件里,以“#”开头的行是注释行。 2. 配置选项 在配置文件里的主要选项如下: #Listen 3000#Listen 61.36.56.78:80 Apache的IP地址和端口。一般来说不需要设置,Apache会绑定在本机所有IP地址的80端口上。 Port 80 Apache的端口。默认值是80。 ServerName www.12345.com
10.3.2 Apache的配置 Web服务器的名字。安装时输入的“Server Name”就是保存在这里。 DocumentRoot "C:/Apache/htdocs" 这是网站的根目录。如果您想把网站文件存放在“D:\WWW”目录下,可以把DocumentRoot后面的目录修改为“D:/WWW”。 Options Indexes FollowSymLinks MultiViews 为了安全起见,请把上面的“Indexes”删掉。否则别人可以浏览到您网站里的所有文件。 DirectoryIndex index.html 默认首页文件名。在浏览器里输入一个地址(例如http://www.12345.com/)的时候,Apache会查找这个默认的首页文件打开。如果要配置多个默认首页文件名,请用空格分开。 ScriptAlias /cgi-bin/ "C:/Apache/cgi-bin/" CGI文件存放路径。
3. 高级配置 1)设置虚拟目录:在配置文件中找下面这行: <IfModule mod_alias.c> 在这行下面添加如下内容: Alias /www1/ "c:/123/" <Directory "c:/123/">Options MultiViewsAllowOverride NoneOrder allow,denyAllow from all</Directory> 这样,通过访问 http://www.12345.com/www1/,就可以访问到c:\123\目录下的内容。 Apache默认开设了两个虚拟目录:“/icons/”和“/manual/”。这两个虚拟目录没有用,可以在配置文件中删除。 2)如何解决中文网页显示乱码 (1)在配置文件中找包含“AddLanguage”或“AddCharset”的行,在这些行最前面增加一行: AddDefaultCharset GB2312
2)养成良好的习惯,在每个网页的<head></head>里加入这行: 2)养成良好的习惯,在每个网页的<head></head>里加入这行: <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 一般的中文版网页编辑工具(例如FrontPage、Dreamweaver等)都会自动加上这行。 3)如何解决中文文件名无法访问:在ie中选择 工具 -> internet选项 -> 高级 -> 取消“总是以UTF-8发送URL”。这个方法很麻烦,请尽量不要使用中文的网站文件名。 注意: 1、Apache配置过程中最关键的两点是:网站根目录和默认首页文件名。必须要把网站文件放在所指定的网站根目录下,而且默认首页文件名必须要设置正确,否则将看不到您的网页。 2、每次配置文件更改后,要重新启动Apache才会生效。
本章习题 • 参见教师网页:http://staff.ustc.edu.cn/~leeyi