http web服务器

来源:互联网 发布:5g网络哪些手机支持 编辑:程序博客网 时间:2024/06/06 01:29

web服务器实现

web服务器实现了http和相关的tcp连接处理,负责管理web服务器提供的资源,以及对web服务器的配置、控制、及扩展方面的管理。
  1. 通用的软件web服务器 有很多种,大多来自三个公司,apache,微软和sun的iplant。
  2. web服务器设备 就是预先包装好的软硬件解决方案,厂商在他们选择的计算机平台上预先安装好软件服务器,并将软件配置好。
  3. 嵌入式web服务器 可以嵌入到电子消费品中去。

实际的web服务器会做什么

  1. 建立连接 如果不希望与这个客户端建立连接,就关闭
  2. 接受请求
  3. 处理请求
  4. 访问资源 访问报文中指定的资源
  5. 构建响应 创建具有正确响应首部的http报文。
  6. 发送响应
  7. 记录事务处理过程

接受客户端连接

客户端请求一条到服务器的tcp连接时,web服务器会建立连接,并将接连添加到现存的web服务器连接列表中去,做好监视连接上的数据。web服务器可以随意的拒绝或者关闭任意一条连接。客户端主机名识别:web服务器将客户端主机名用于**详细的访问控制和日志记录**。但是请求过来的时候,只有客户端ip,可以通过方向dns来查找主机名,但是可能会很慢。通过ident协议来确定客户端用户。如果客户端支持ident协议,就在tcp端口113上坚挺ident请求。这种方式在因特网上,并不常用。

接受请求报文

解析请求行,获取请求方法,和资源标识符。获取首部。如果有的话,还需要读取请求主体。
  1. 报文内部表示法 有些web服务器使用内部数据结构来存储请求报文。将首部放到一个快速查询表中。
  2. 连接输入输出的处理结构 因为有的请求,会在任意时刻到达,web服务器会不停的观察有无新的web请求。不同的web服务器结构会以不同的方式为请求服务:单线程web服务器,多进程及多线程web服务器,复用的io服务器(异步io),复用的多线程web服务器。

对资源的映射和访问

负责发送预先创建好的内容,或者服务器上程序动态生成内容。
  1. docroot 最简单的资源映射,就是使用uri作为名字访问web服务器文件系统中的文件。web服务器会有一个特殊的文件夹专门存放web内容。称为文档根目录。把请求中的uri放在根目录后面找到对应的资源。
  2. 虚拟托管的docroot 就是一台服务器上提供多个web站点,每个站点在服务器上有自己的独有文档根目录。虚拟托管web服务器根据uri或者host首部的主机名或者ip识别正确的文档根目录。
  3. 用户的主目录docroot web服务器上为人们提供私有的站点,通常把那些一斜杠和波浪线开始/~。私有的docroot通常都是用户主目录下那个名为public_html的目录。
  4. 目录列表 如果客户端请求的是一个目录,而不是一个资源,那么会有以下几种方式处理:返回一个错误;不返回目录,返回一个特殊的默认的索引文件;扫描目录,返回一个包含目录内容的html页面。大多数服务器会去目录下查找index.html文件来代替此目录。这都是可以配置的。
  5. 动态内容资源映射 web服务器还可以将uri映射为动态资源。映射到按需动态生成内容的程序上去。web服务器要能分辨出资源什么时候是动态的,动态内容生成程序位于何处。apache允许用户把uri映射为可执行文件目录。
  6. 访问控制 对特定的资源,进行访问控制

构建响应

  1. 响应实体 mime类型,content-length(不一定需要,如果服务器响应了这次请求之后,就把连接关了就不需要这个,整个流,都属于这个主题),主体的实际内容。
  2. mime类型 web服务器可以使用文件扩展名来说明mime类型。web服务器会为每个资源扫描一个包含了所有扩展名的mime类型文件。 -魔法分类 扫描内容,确定mime。 -显式分类 根据目录 -类型协商
  3. 重定向 适用于以下几种情况:永久删除的资源(301),临时删除的资源(303),url增强(303,307),负责均衡,服务器关联,规范目录名。

发送响应

要注意此次响应发送完之后,是否要关闭连接。
0 0
原创粉丝点击