http_docs/第五章 web服务器/readme.md

3.3 KiB
Raw Blame History

内容提要

  • 本章简单介绍了web服务器原理、实现以及实现处理http事务的一些细节

web服务器

  • 定义:实现提供资源或应答的提供者都可以谓之为服务器!

  • 从不同形式划分,服务器有以下几种:

    1. 标准计算机上安装的通用服务器如apache

    2. 购买的服务器

    3. 嵌入式服务器

web服务器应该做些什么

  1. 接受建立连接请求

  2. 接受请求

  3. 处理请求

  4. 访问报文中指定的资源

  5. 构建响应

  6. 发送响应

  7. 记录事务处理过程

第一步————接受客户端连接

  • 客户端收到一条连接之后那么它将会把新连接添加到现存web服务器连接列表中用于监视当前连接上的数据传输情况。期间服务器还应该做到通过一定的设备机制阻止未认证或已知恶意黑名客户端的连接相关设别技术有客户端主机名设别、通过ident设别客户端用户等

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

  • 主要经过几个步骤来解析报文:
  1. 解析请求行得知方法、url、协议版本以及crlf符

  2. 解析得到以crlf结尾的首部

  3. 得到以crlf结尾标志首部结束的空行如果有的话

  4. 解析得到主体,(如果有的话)

  • web服务可能还会把请求报文用一种自己能快速处理的内部数据结构来存储请求报文

  • 不同的服务器配置预示它能同时处理的事务情况:

  1. 单线程web服务器只能处理一个请求待当前请求处理完成之后才能处理下一个请求优点简单已于实现适用于低负荷服务器。缺点不能及时处理其他请求容易引发延迟过长而导致性能问题。

  2. 多线程及多进程web服务器能同时处理多个请求优点响应及时。缺点构建复杂容易快速引起内存消耗过大而死机最好应该对能同时处理的连接数量进行限制

  3. 复用i/o的web服务器复用i/o

  4. 复用i/o和多线程的web服务器2和3的结合

第三步————处理请求

  • 这点留在本书其余章节大篇幅介绍!

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

  • 这里介绍了请求资源的一种路径映射关系说白了就是找到客户端请求资源在服务器的上的目录路径相关概念有docroot(文档根目录)、不允许访问根目录的上一级目录。

  • 虚拟托管的docroot:在一个服务器上挂了几个web站点那么这样当请求的资源路径相同时服务器应该从请求报文首部的host、uri字段找出真正的资源目录这些目录都是可以配置的

第五步————构建响应

  • 构建响应报文1、正确设置响应主体的长度content-length2、设置报文的mime类型content-type,主要通过与一直mime类型文件匹配得到当前的文件的mime类型还可以通过文件扩展名以及硬规定特定目录下的文件拥有某个mime类型3、控制重定向

#### 第六步————发送响应

第七步————记录事务日志

  • 在web服务器日志文件中添加一个条目以描述当前事务处理情况