5.1 Web服务器工作内容

  1. 建立连接——接受一个客户端的连接,或者将其拒绝
  2. 接受请求——从网络中读取一条HTTP报文
  3. 处理请求——对请求报文进行解释,并采取行动
  4. 访问资源——访问报文中指定的资源
  5. 构建响应——创建带有正确首部的HTTP响应报文
  6. 发送响应——将响应送回客户端
  7. 记录事务处理过程——将已完成事务的内容记录在日志中

5.2 服务器结构类型:

  • 单线程Web服务器

    一次处理一个请求,直到其完成为止,性能较差,属于低负荷服务器

  • 多进程及多线程Web服务器

    可以高效率处理请求,可根据需求进行创建线程/进程,也可预先创建完成进程/线程,但根据服务器本身性能会有最大数量限制。

  • 复用I/O的服务器

    同时监督所有连接上的活动,当某条连接产生变化时就对那条线程进行少量处理,当处理结束时,将连接返回到开放连接列表中,等待下一次变化。

  • 复用的多线程Web服务器

    利用计算机的多个CPU,多个线程中的每一个都在观察打开的连接,并对每条链接进行少量的任务。

盗图:

5.3 构建响应

  如果有响应主体,响应报文通常包括:

  • 主体MIME类型的Content-Type首部
  • 描述响应主体的长度Content-Length首部
  • 实际报文内容

5.4 MIME类型

  • 魔法分类

    服务器对资源内容进行扫描,将其与一个已知模式表进行匹配,以决定文件的MIME类型

  • 显式分类

    强制特定文件或目录内容拥有某个MIME类型

  • 类型协商

    与用户协商来决定使用哪种类型

5.5 重定向

  Web服务器有时候会返回重定向响应而不是成功的报文,Web服务器可以讲浏览器重定向到其他地方来执行请求。

  重定向可用于下列情况:

  • 永久删除的资源

    资源可能已经被移动到新的位置,或者被重命名,有了一个新的URL,Web服务器这时会告诉客户端资源被修改,客户端会更新书签/地址去用新的URL获取资源,状态码301 Moved Permanently。

  • 临时删除的资源

   如果资源只是临时被移动或者修改,后续还是会修改回原状时,Web服务器需要客户端不要用新的地址/书签获取资源,状态码303 See Other 及 307 Temporary Redirect。

  • URL增强

   当请求到达时服务器会生成一个新的包含了嵌入式状态信息的URL,并将用户重定向到这个新的URL上去。客户端会根据这个新URL重新发起请求,这次的请求会包含完整的、经过状态增强的URL。

  • 负载均衡

   如果负载过重的服务器收到请求,可以将其定向到一个负载不太重的服务器上去,状态码303,307。

  • 服务器关联

    服务器可能含有其他用户的本地信息,服务端可以将客户端重定向到包含那个客户端信息的服务器上去,状态码303,307。

  • 规范目录名称

    客户端请求的URI是个不带尾部斜线的目录名时,大部分服务器都会将客户端定向到一个加了斜线的URI上去,这样链接就可以正常工作了。

HTTP权威协议笔记-5.Web服务器的更多相关文章

  1. HTTP权威协议笔记-9.Web机器人

    经过整个春节的放肆,终于回归了,说实话,春节真心比上班累. 9.1 爬虫及爬行方式 (1) 爬虫:Web爬虫是一种机器人,他们会递归性的对各种信息Web站点进行遍历. (2) 爬行方式:Web机器人会 ...

  2. HTTP权威协议笔记-7.集成点:网关、隧道及中继

    .8.1 网关 定义:网关类似与翻译器,它抽象出了一种能够到达资源的方法. 实用:网关可以自动将HTTP流量转换为其他协议,这样使用HTTP协议的一方就不需要了解其他协议,也可实现与其他程序或设备交互 ...

  3. HTTP权威协议笔记-6.代理

    6.1 Web的中间实体 Http的代理服务器即是客户端的服务器又是服务器的客户端. 它介于服务器与客户端之间,当客户端发送请求报文经过它时,它会像服务器一样正确的处理请求和返回响应,同时,代理服务器 ...

  4. 04-HTTP协议和静态Web服务器

    一.HTTP协议(HyperText Transfer Protocol)     超文本传输协议,超文本是超级文本的缩写,是指超越文本限制或者超链接,比如:图片.音乐.视频.超链接等等都属于超文本. ...

  5. HTTP权威协议笔记-8.集成点:网关、隧道及中继

    .8.1 网关 定义:网关类似与翻译器,它抽象出了一种能够到达资源的方法. 实用:网关可以自动将HTTP流量转换为其他协议,这样使用HTTP协议的一方就不需要了解其他协议,也可实现与其他程序或设备交互 ...

  6. HTTP权威协议笔记-7.缓存

    7.1 冗余的数据传输 缓存的作用:当客户端每次访问服务器,服务器都会返回一份相同文件,一些相同的字节会不断的在网络内传输,这样冗余的数据传输会耗尽昂贵的带宽,降低传输速度,加重Web服务器的负载. ...

  7. 06-Node.js学习笔记-创建web服务器

    创建web服务器 //引用系统模块 const http = require('http'); //创建web服务器 //用于处理url地址 const url = require('url'); c ...

  8. HTTP权威协议笔记-10.HTTP-NG

    1.HTTP发展中存在的问题 复杂性   其连接.报文.及功能逻辑之间的混合使用相当复杂,使用容易出错 可扩展性 传统流行下来的http应用很难实现扩展性,且无法兼容 性能      高延时.低吞吐 ...

  9. HTTP权威协议笔记-4.连接管理

    4.1 TCP连接 TCP为HTTP提供了一条可靠的比特传输管道,按顺序正确的传输,步骤如下: 浏览器解析主机名. 查询这个主机名的IP地址(DNS) 获得端口号. 浏览器对服务器该端口号发起连接. ...

随机推荐

  1. handshake_failure

    在java 1.6版本中,通过HttpsURLConnection请求class 1(多发生于免费ssl证书,比如沃通或者startssl的)的https网络地址时,可能会报握手异常: Caused ...

  2. [Linux] - CentOS 安装nginx

    linux版本:CentOS 6.0+ 安装nginx方法: 1.下载nginx rpm包命令: wget http://nginx.org/packages/centos/6/noarch/RPMS ...

  3. spring mvc 用freemarker实现/user/edit?id=${id}=${type} 的替换

    java 中实现/user/edit?id=${id}=${type} 的替换; 引入包: freemark.jar  ,以及 类代码如下: public class FreeMarkerTextTe ...

  4. 关于redis的主从复制

    redis主从复制需要注意的一个问题 这两天我朋友在使用redis偶尔会遇见一个问题,就是所有的缓存莫名其妙会不见,找了好久都没找到,他一直以为 有人错误执行了什么命令 他跟我说的时候我估计是主从复制 ...

  5. 很不错的在线Office控件:IWebOffice与SOAOffice

    http://blog.csdn.net/cjh200102/article/details/17220441 iWebOffice2003文档控件 iWebOffice2003网络文档中间件能够在I ...

  6. 【uTenux】学习一个嵌入式操作系统-uTenux

    [这个是汇总] 最近有点时间,参加了EEPW论坛和悠龙咨询组织的一个嵌入式操作系统uTenux试用活动.本来想借助这个活动提供的开发板做一个小项目,奈何OS使用功底太次.于是,这个活动被我降低到了学习 ...

  7. 每天一个 Linux 命令(17):whereis 命令

    whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件(参数-s).如果省略参数,则返回所有信息. 和find相比,whereis查找的速度非 ...

  8. 作业总结(一):IE6下面的那些坑

    考完试就来实习的公司实习了,大概最近有两周时间就一直在做公司给新人布置的大作业.虽然只是很简单的一个小的项目,但却从其中总结到了不少有用的东西.计划将其发出来一系列文章,算是对这两周时间的总结.也算是 ...

  9. cocos2dx day 3 - Chapter5 Scene

    写在前面 越来越懒了,才3天,主要是cocos2dx官网的文章写的还是不是太完美,发现一段代码有个笔误,还有好几处写得不是很清楚的,所以有点泄气,不想继续读下去,不过为了我的第一款手游,一切困难都要先 ...

  10. 在线编辑器的使用总结(kindeditor , )

    1).kindedtor中让编辑框默认为“HTML代码/源代码”模式 [javascript] view plaincopyprint? <script> // 自定义插件 #1 Kind ...