HTTP权威协议笔记-5.Web服务器
5.1 Web服务器工作内容
- 建立连接——接受一个客户端的连接,或者将其拒绝
- 接受请求——从网络中读取一条HTTP报文
- 处理请求——对请求报文进行解释,并采取行动
- 访问资源——访问报文中指定的资源
- 构建响应——创建带有正确首部的HTTP响应报文
- 发送响应——将响应送回客户端
- 记录事务处理过程——将已完成事务的内容记录在日志中
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服务器的更多相关文章
- HTTP权威协议笔记-9.Web机器人
经过整个春节的放肆,终于回归了,说实话,春节真心比上班累. 9.1 爬虫及爬行方式 (1) 爬虫:Web爬虫是一种机器人,他们会递归性的对各种信息Web站点进行遍历. (2) 爬行方式:Web机器人会 ...
- HTTP权威协议笔记-7.集成点:网关、隧道及中继
.8.1 网关 定义:网关类似与翻译器,它抽象出了一种能够到达资源的方法. 实用:网关可以自动将HTTP流量转换为其他协议,这样使用HTTP协议的一方就不需要了解其他协议,也可实现与其他程序或设备交互 ...
- HTTP权威协议笔记-6.代理
6.1 Web的中间实体 Http的代理服务器即是客户端的服务器又是服务器的客户端. 它介于服务器与客户端之间,当客户端发送请求报文经过它时,它会像服务器一样正确的处理请求和返回响应,同时,代理服务器 ...
- 04-HTTP协议和静态Web服务器
一.HTTP协议(HyperText Transfer Protocol) 超文本传输协议,超文本是超级文本的缩写,是指超越文本限制或者超链接,比如:图片.音乐.视频.超链接等等都属于超文本. ...
- HTTP权威协议笔记-8.集成点:网关、隧道及中继
.8.1 网关 定义:网关类似与翻译器,它抽象出了一种能够到达资源的方法. 实用:网关可以自动将HTTP流量转换为其他协议,这样使用HTTP协议的一方就不需要了解其他协议,也可实现与其他程序或设备交互 ...
- HTTP权威协议笔记-7.缓存
7.1 冗余的数据传输 缓存的作用:当客户端每次访问服务器,服务器都会返回一份相同文件,一些相同的字节会不断的在网络内传输,这样冗余的数据传输会耗尽昂贵的带宽,降低传输速度,加重Web服务器的负载. ...
- 06-Node.js学习笔记-创建web服务器
创建web服务器 //引用系统模块 const http = require('http'); //创建web服务器 //用于处理url地址 const url = require('url'); c ...
- HTTP权威协议笔记-10.HTTP-NG
1.HTTP发展中存在的问题 复杂性 其连接.报文.及功能逻辑之间的混合使用相当复杂,使用容易出错 可扩展性 传统流行下来的http应用很难实现扩展性,且无法兼容 性能 高延时.低吞吐 ...
- HTTP权威协议笔记-4.连接管理
4.1 TCP连接 TCP为HTTP提供了一条可靠的比特传输管道,按顺序正确的传输,步骤如下: 浏览器解析主机名. 查询这个主机名的IP地址(DNS) 获得端口号. 浏览器对服务器该端口号发起连接. ...
随机推荐
- asp.net环境搭建
win7 开启internet infornation server 勾选相应配置 管理设置里,新增网站,对网站进行配置,设置用户验证连接 根目录下,配置文件web.config
- XPath Checker和Firebug安装与使用
一.XPath Checker和Firebug简介 XPath Checker和Firebug是写爬虫过程中提取数据的非常有用的插件工具,直接打开火狐浏览器的菜单就可以下载 二.XPath Check ...
- mysql 笔记
mysql配置主从复制的时候,不能将server-id设置成非数字,这样会导致mysqld启动失败. mysql重启的时候,自动会释放锁(这个锁应该是位于内存的) 执行sql脚本:source /ho ...
- opencv2.4.9在ubuntu(树莓派)上安装
参考原文:https://my.oschina.net/u/1757926/blog/293976 1. 先从sourceforge上下载OpenCV的源码 http://jaist.dl.sourc ...
- C#如何获取CPU处理器核心数量 z
有几条不同的处理器信息,您可以获得有关的信息:物理处理器数量.核心数量和逻辑处理器数量,这些可以不同.两颗双核超线程(启用)处理器的机器情况下有:2个物理处理器.4个核心和8个逻辑处理器. 逻辑处理器 ...
- 【javascript 面试笔试】1、几道笔试题
今天想起来几道javascript的面试题,大家做做看看,有别的思路可以在下面写出来,大家交流一下 (1) 将多维数组转化成一个一位数组,例如[1,[2,3],[4,5,[6,7]]]转化成[1,2, ...
- OpenStreetMap/Google/百度/Bing瓦片地图服务(TMS)
开源与成熟商业的瓦片地图服务(TMS 2 WMTS),都有如下共同的特性,基本成为了标准: (1) 坐标系:WGS84 (2) 投影:墨卡托投影(Marcator,正轴等角圆柱投影) ------ ...
- 升级到VS2013.Update.4的问题
升级到VS2013.Update.4后,编译VS2010的解决方案出错,提示AxImp.exe找不到,到网上搜索后,没有找到能用的法子: 修复VS2013后也无法解决: 折腾2个小时后终于找到问题了: ...
- 黑马程序员_ Objective-c 之Foundation笔记(一)
结构体 NSRange: 用来表示范围 创建 NSRange r1 = {2, 4} NSRange r2 = {.location = 2, .length = 4} NSRange r3 = N ...
- 问题解决_(转载)在VisualStudio 2012上使用MVC3出现错误的解决办法
错误: 找 不到方 法:“System.Collections.Generic.Dictionary`2<System.String,BlockParser> System.Web.Raz ...