web服务器
1.web服务器形式
1.通用软件web服务器
- 如:免费的Apache软件
- 微软的web服务器
- sun的iPlanet
2.提供web页面的特定设备或计算机
- web服务器设备:提前打包好的软硬件的结合
- sun/cobalt raq web 设备
3.芯片嵌入式web服务器
- 允许用户通过便捷的web浏览器接口来管理其消费者设备
- IPi火柴头大小的web服务器
2.基本web服务器请求步骤
2.1建立连接
接受一个客户端;不希望连接则关闭
1.处理新连接
- 从TCP连接中解析出IP地址
- 服务器会将新的连接添加到现存web服务器连接表中,做好监视
2.客户端主机名识别
- 对web 服务器进行”反向DNS“配置,将ip转换换位客户端主机名
- 查找需要时间,会降低事务处理的速度,可设置只对特定内容开启
- hostnameLookups off/on
3.使用ident协议来确定HTTP客户端用户名
2.2接收请求
从网络中读取一条HTTP请求报文
1.过程步骤
- 解析请求行,查找请求方法、指定的资源标识符以及版本号
- 读取以CRLF结尾的报文首部
- 检测以CRLF结尾的、标识首部结束的空行
- 读取请求主体
2.内部表示法
- 用内部数据结构来储存请求报文
3.连接的输入、输出处理结构
- 单线程web服务器
- 多进程及多线程web服务器
- 复用I/O的服务器
- 复用的多线程Web服务器
2.3处理请求
对请求报文进行解释,并采取行动
- GET\PUT\POST等
2.4访问资源
访问报文中指定的资源
1.文档根目录docroot
2.在配置文http.conf为Apache Web服务器设置文档的根目录:DocumentRoot /usr/local/httpd/files
3.虚拟托管的docroot
- 同意台Web服务器上提供多个Web站点,每个站点在服务器上都有自己独有的文件根目录
- 通过host首部,或者ip地址来区分不同的站点
4.用户的主目录 docroot
- 提供私有web站点
- 以斜杠/和波浪线~开始,后面跟这用户名的URI
5.web服务器可以提供静态资源和动态资源
- 服务器端包含项、访问控制
2.5构建响应
创建带有正确首部的HTTP响应报文
1.响应报文
1.1描述响应MIME类型的content-Type首部
- MIME类型
- 魔法分类
- 显示分类
- 类型协商
1.2描述响应主图长度的content_length首部
1.3实际报文的主体内容
2.如果事务处理产生了响应实体,将内容放在响应报文中送过去
3.重定向
- localtion响应首部包含了内容的新地址或者优选地址的URL
- 301 Moved Permanently 资源移到了新的位置
- 303 see other 资源被临时一走或者重命名了
- 307 Temporary Redirect 重写嵌入式URL
2.6发送响应
将响应回送给客户端
1.持久连接
- 要正确计算Content_length首部,不然客户端就无法知道响应什么时候结束
2.非持久连接
- 服务器应该在发送完整条报文后,关闭自己这一端的连接
2.7记录事务处理过程
将与已完成事务有关的内容记录再一个日志文件中