第5章 Web服务器

1、Web服务器有不同的形式:可以在计算机系统上安装并运行通用的软件Web服务器;一台Web服务器设备;或是在少量计算机芯片上实现嵌入式Web服务器。

2、第一步——接收客户端连接

客户端请求一条到Web服务器的TCP连接时,Web服务器会建立连接,判断连接的另一端是哪个客户端,从TCP连接中将IP地址解析出来。

3、第二步——接收请求报文

连接上有数据到达时,Web服务器会从网络连接中读取数据,并将请求报文中的内容解析出来。

单线程的Web服务器以此只处理一个请求,直到其完成为止。可以采用多线程的Web服务器或是复用I/O的服务器。在复用结构中,要同时监视所有连接上的活动。当连接的状态发生变化时,就对那条连接进行少量的处理;处理结束后,将连接返回到开放连接列表中,等待下一次状态变化。可以将多线程和复用I/O结合起来。

4、第三步——处理请求

一旦Web服务器收到了请求,就可以根据方法、资源、首部和可选的主体部分来对请求进行处理。

5、第四步——对资源的映射及访问

Web服务器是资源服务器。它们负责发送预先创建好的内容。通常,Web服务器的文件系统中会有一个特殊的文件夹专门用于存放Web内容,这个文件夹被称为文档的根目录。Web服务器从请求报文中获取URI,并将其附加在文档根目录的后面。服务器要注意,不能让相对URL退到根目录之外,将文件系统的其余部分暴露出来。。

虚拟托管的Web服务器会在同一台Web服务器上提供多个Web站点,每个站点在服务器上都有自己独有的文档根目录。

根目录的另一种常见应用是在Web服务器上为人们提供私有的Web站点。

Web服务器可以接收对目录URL的请求,其路径可以解析为一个目录,而不是文件。大多数Web服务器都会去查找目录中一个名为index.html的文件来代表此目录。如果用户请求目录URI时,没有提供默认的索引文件,而且没有禁止使用目录索引,很多Web服务器都会自动返回一个HTML文件,此文件中会列出那个目录里的文件名,以及每个文件的大小和修改日期,还包括到每个文件的URI连接。

Apache允许用户将URI路径名组件映射为可执行文件目录。服务器收到一条带有可执行路径组件的对URI的请求时,会试着去执行相应服务器目录中的程序。

6、第五步——构建响应

6.1、MIME类型

Web服务器要负责确定响应主体的MIME类型,有很多方法可以将MIME类型与资源关联起来。

Web服务器可用文件的扩展名来说明MIME类型;Apache Web服务器可以扫描每个资源的内容,并将其与一个已知模式表进行匹配,以决定每个文件的MIME类型;可以对Web服务器进行配置,使其不考虑文件的扩展名和内容,强制特定文件或目录内容拥有某个MIME类型;有些Web服务器经过配置,可以以多种文档格式来存储资源,这时可以使其通过与用户的协商来决定使用哪种最好。

7、第六步——发送响应

服务器要记录连接的状态,还要特别注意对持久连接的处理。对非持久连接而言,服务器应该在发送了整条报文之后,关闭自己这一端的连接。

8、第七步——记录日志

当事务结束时,Web服务器会在日志文件中添加一个条目,来描述已执行的事务。

时间: 2024-10-13 14:30:59

第5章 Web服务器的相关文章

网络操作系统 第十一章 Web 服务器的按照与配置

习题 1.如何在WindowsServer 2008 系统中使用IIS进行多站点配置与管理? 1)运行"开始"–"程序"–"管理工具"–"服务器管理器"打开: 选择"WEB服务器(IIS)",注意:首次安装IIS的时候,当你点击"下一步"的时候会提示"是否添加WEB服务器所需的功能"对话框. 提示在安装IIS时,必须同时安装"Windows进程激活服务&qu

图解http协议(五章与http协作的web服务器)

今天看了网络协议(5)web服务器. 第二章我们了解了一个简单的客户端和服务器进行交互的方式.现在我们看看在实际中是做哪些改进的吧. 1 关键字:映射.这个映射就是可以使客户端和服务器分离了.一个客户端对应一个DNS映射,然后通过映射把他的请求发送到服务器上,这就感觉像是一个古代的媒婆,她必须深谐两家的思维习惯.把这边的话"映射"翻译给了那边. 2 两个大头确定了,那么他们之间怎么交流呢?是,通过映射.可是谁来执行呢?那就引出了这几个小鲜肉.代理,网关,和隧道. 先看代理.代理就是向一

徒手用Java来写个Web服务器和框架吧<第二章:Request和Response>

徒手用Java来写个Web服务器和框架吧<第一章:NIO篇> 接上一篇,说到接受了请求,接下来就是解析请求构建Request对象,以及创建Response对象返回. 多有纰漏还请指出.省略了很多生产用的服务器需要处理的过程,仅供参考.可能在不断的完整中修改文章内容. 先上图 项目地址: https://github.com/csdbianhua/Telemarketer 首先看看如何解析请求 解析请求 构建Request对象 这部分对应代码在这里,可以对照查看 一个HTTP的GET请求大概如下

徒手用Java来写个Web服务器和框架吧&lt;第三章:Service的实现和注册&gt;

徒手用Java来写个Web服务器和框架吧<第一章:NIO篇> 徒手用Java来写个Web服务器和框架吧<第二章:Request和Response> 这一章先把Web框架的功能说一些,有个雏形. 先是制作一个Service,并绑定到一个正则地址.用到了注解和反射. 项目地址: Telemarketer Service的定义 Telemarketer的Service是一个服务,请求了跟它关联的地址,那就由它来为你服务. 它对外只需一个方法.并且对这个方法的要求大概只有输入一个Reque

第五章 与HTTP协作的Web服务器

第五章  与HTTP协作的Web服务器 一台Web服务器可搭建多个独立域名的Web网站,也可以作为通信路径上的中转服务器提升传输效率. 1.用单台虚拟机实现多个域名 HTTP/1.1规范允许一台HTTP服务器搭建多个Web站点.即使物理层面只有一台服务器,但只要使用虚拟主机,则可以假想已具有多台服务器.在相同IP地址下,由于虚拟主机可以寄存多个不同主机和域名的Web网站,因此发送HTTP请求时,必须在Host首部内完整指定主机名或域名的URI. 2.通信数据转发程序:代理.网关.隧道 HTTP除

徒手用Java来写个Web服务器和框架吧&lt;第一章:NIO篇&gt;

因为有个不会存在大量连接的小的Web服务器需求,不至于用上重量级服务器,于是自己动手写一个服务器. 同时也提供了一个简单的Web框架.能够简单的使用了. 大体的需求包括 能够处理HTTP协议. 能够提供接口让使用者编写自己的服务. 会省略一些暂时影响察看的代码.还不够完善,供记录问题和解决办法之用,可能会修改许多地方. 让我们开始吧~ Project的地址 : Github 从ServerSocket开始 点这里是这部分的完整代码,可以对照察看 大家都知道HTTP协议使用的是TCP服务. 而要用

第五章、web服务器

一.web服务器 Web服务器就是整个万维网的骨干,广义上来说Web服务器既可以用来表示Web服务器的软件,也可以用来表示提供Web页面的特定设备和计算机.我们在网络上获取的所以资源,都需要有服务器来保存和提供.另外需要说明的是本篇中对于Web服务器的配置说明是基于Apache Web服务器的. 1 Web服务器的类型 Web 服务器有着不同的风格.形状和尺寸.有普通的 10 行 Perl 脚本的 Web 服务器.50MB 的安全商用引擎以及极小的卡上服务器.但不管功能有何差异,所有的 Web

使用Micrisoft.net设计方案 第三章Web表示模式

第三章Web表示模式 体系结构设计者在设计第一个作品时比较精简和干练.在第一次设计时,并清除自己做什么,因此比较小心谨慎.第二个作品是最危险的一个作品,此时他会对第一个作品做修饰和润色,以及把第一次设计的边缘性设计思想都用在第二个作品,结果导致设计过头. 最初的Web很简单,只是有几个简单的Html页面组成,实现信息共享.随着业务的发展,需要根据业务来决定显示什么,于是开发了CGI编程,把大量的业务逻辑写到CGI中,然后输出到页面.随着发展,CGI编程模式受到了挑战,不能满足发展的需求,于是开发

TinyWS —— 一个C++写的简易WEB服务器(三)

写在前面 代码已经托管在 https://git.oschina.net/augustus/TinyWS.git 可以用git clone下来.由于我可能会偶尔做一些修改,不能保证git 库上的代码与blog里的完全一致(实际上也不可能把所有的代码都贴在这里).另外,TinyWS是基于linux写的(ubuntu 14.10 + eclipse luna,eclipse工程我也push到了git库),故在Windows上可能无法正常编译(主要是系统调用 部分可能会不同). 前面的内容可参考上一篇