web服务器

web服务器有各种不同的形式

可以再标准的计算机系统上安装并运行通用的软件web服务器

可以购买web服务器设备 里的软件会预装并配置好

可以在少量计算机芯片上嵌入web服务器

web服务器会做些什么

建立连接------接受一个客户端连接
接受请求------从网络中读取一条HTTP报文请求
处理请求------对请求报文进行解释
访问资源------访问报文中指定的资源
构建响应------创建带有正确首部的HTTP响应报文
发送响应------将响应发送给客户端
记录事务处理过程------将已完成事务有关的内容记录在一个日志文件中

web服务器是这样实现基本任务的

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

客户端收到一条连接之后,那么它将会把新连接添加到现存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的结合

第三步 ------ 处理请求

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

第四部 ------ 对资源的映射及访问

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

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

猜你喜欢

转载自gaofan0528.iteye.com/blog/2397613