HTTP权威指南(二)

HTTP权威指南笔记(二)

五.Web服务器

1.Web服务器实现了HTTP和相关的TCP连接处理。
2.Perl Web服务器
3.实际的Web服务器流程
建立连接—接受请求—处理请求—访问资源—构建响应—发送响应—记录事务处理过程
4.接受客户端连接
如果客户端已经打开了一条到服务器的持久连接,可以使用那条连接来发送它的请求。否则,客户端需要打开一条新的到服务器的连接
处理新连接、客户端主机名识别、通过ident确定客户端用户
5.接受请求报文
解析请求行,查找请求方法、指定的资源标识符以及版本号
读取以CRLF结尾的报文首部
检测到以CRLF结尾的、标识首部结束的空行
如果有的话,读取请求主体
6.处理请求
7.对资源的映射及访问
8.构建响应
如果事务处理产生了响应主体,就将内容放在响应报文中回送过去。
9.发送响应
10.记录日志

六.代理

1.Web的中间实体
HTTP的代理服务器既是Web服务器又是Web客户端
(1)公共代理:集中式代理成本效率更高,更容易管理;私有代理:单个客户端专用的代理
(2)代理和网关的对比:严格来说,代理连接的是两个或多个相同协议的应用程序,而网关连接的则是两个或多个使用不同协议的端点
2.为什么使用代理
儿童过滤器、文档访问控制、安全防火墙、Web缓存、反向代理(提高访问慢速Web服务器上公共内容时的性能)、内容路由器、转码器、匿名者
3.代理会去往何处
(1)代理服务器的部署:出口代理(控制本地网络与大型因特网之间的流量)、入口代理(处理来自客户的聚合请求)、反向代理(网络边缘,处理所有传送给Web服务器的请求,并只在必要时向Web服务器请求资源)、网络交换代理
(2)代理的层次结构
(3)代理获取流量:修改客户端、修改网络(拦截代理)、修改DNS命名空间、修改Web服务器
4.客户端的代理设置
(1)手工配制
(2)PAC文件(JS代码)
(3)WPAD协议
5.与代理请求相关的一些棘手问题
(1)代理URI和服务器URI的不同

  • 没有设置客户端使用代理时,它会发送部分URI
  • 设置客户端使用代理时,它会发送完整URI

(2)与虚拟主机一样的问题
(3)拦截代理会收到部分URI
(4)代理既可以处理代理请求,也可以处理服务器请求
(5)转发过程中对URI的修改
(6)URI的客户端自动扩展和主机名解析
(7)没有代理时URI的解析
(8)有显示代理时URI的解析
(9)有拦截代理时URI的解析
6.追踪报文
(1)Via首部:列出了与报文途径的每个中间节点有关的信息,用于记录报文的转发,诊断报文循环,标识请求/响应链上所有发送者的协议能力

Via = 协议名/版本号 节点名 节点注释 , 协议名/版本号 节点名 节点注释 ……

Via的请求和响应路径是相反的
(2)TRACE方法
当TRACE请求到达目的服务器时,整条请求报文都会被封装在一条HTTP响应的主体中回送给发送端。TRACE响应的Content-Type为message/http,状态码为200
可以设置Max-Forwards设置跳数
7.代理认证
8.代理的互操作性
(1)处理代理不支持的首部和方法
(2)OPTIONS:发现对可选特性的支持
(3)ALLOW首部:列出了请求URL标识的资源所支持的方法列表

七.缓存

1.冗余的数据传输
2.带宽瓶颈
3.瞬间拥塞
4.距离时延
5.命中和未命中的
(1)再验证:再验证命中返回304;再验证未命中返回新内容和200;对象被删除返回404
(2)命中率
(3)字节命中率
(4)区分命中和未命中的情况
6.缓存的拓扑结构
(1)私有缓存:浏览器有内建的私有缓存
(2)公有代理缓存:接受来自多个用户的访问,可以更好地减少冗余流量
(3)代理缓存的层次结构
(4)网状缓存、内容路由以及对等缓存:决定选择何种路由对内容进行访问、管理和传送,因此可以成为内容路由器
7.缓存的处理步骤
(1)接收:读取输入数据
(2)解析:将首部的各个部分放入易于操作的数据结构中
(3)查找:已缓存对象中包含了服务器响应主体和原始服务器响应首部,这样就会在缓存命中时返回正确的服务器首部
(4)新鲜度检测
(5)创建响应:不应该调整Date首部
(6)发送
(7)日志
8.保持副本的新鲜
(1)文档过期:通过特殊的HTTP的Cache-Control首部和Expires首部,HTTP让原始服务器向每个文档附加了一个过期日期
(2)过期日期和使用期:Cache-Control首部使用相对时间,Expires首部使用绝对时间
(3)服务器再验证:如果再验证内容发生了变化,缓存会获取一份新的文档副本,并存储在旧文档的位置上,然后将文档发给客户端;如果再验证显示内容没有发生变化,缓存只需要获取新的首部,包括一个新的过期日期,并对缓存中的首部进行更新
(4)用条件方法进行再验证
(5)If-Modified-Since:Date再验证:如果自指定日期后文档被修改,携带新首部的新文档就会被返回给缓存;如果没有被修改,会返回给客户端304 Not Modified响应报文
(6)If-None-Match 实体标签再验证:通过ETag
(7)强弱验证器:只要内容发生了变化,强验证器就会变化。弱验证器允许对一些内容进行修改,但是内容的主要含义发生变化时,通常还是会变化的
(8)什么时候应该使用实体标签和最近修改日期
9.控制缓存的能力
(1)no-Store和no-Cache响应首部

  • no-Store:进行缓存对响应进行复制
  • no-Cache:实际上可以存储在本地缓存区,只是在与原始服务器进行新鲜度再验证之前,缓存不能将其提供给客户端使用

(2)max-age响应首部:从服务器将文档传来之时,可以认为此文档处于新鲜状态的秒数
(3)Expires响应首部:不推荐使用,指定的是实际的过期日期而不是秒数
(4)must-revalidate响应首部:在事先没有和原始服务器进行再验证的情况下,不能提供这个对象的陈旧副本
(5)试探性过期
(6)客户端的新鲜度限制
(7)注意事项:缓存时间不宜过长
10.设置缓存控制
11.详细算法
12.缓存和广告

八.集成点:网关、隧道及中继

1.网关:抽象出了一种能够到达资源的方法。网关是资源和应用程序之间的粘合剂。Web网关在一侧使用HTTP协议,在另一侧使用另一种协议
2.协议网关:将HTTP流量导向网关时所使用的方式与将流量导向代理的方式相同
(1)HTTP/*:服务器端Web网关,请求流入原始服务器时,服务器端Web网关会将客户端HTTP请求转换为其他协议
(2)HTTP/HTTPS:服务器端安全网关
(3)HTTPS/HTTP:客户端安全加速器网关
3.资源网关:最常见的网关,应用程序服务器,会将目标服务器与网关结合在一个服务器中实现
4.应用程序接口和Web服务
5.隧道:允许用户通过HTTP连接发送非HTTP流量
(1)CONNECT方法建立HTTP隧道:请求隧道网关建立一条到达任意目的服务器和端口的TCP连接,并对客户端和服务器之间的后继数据进行盲转发
(2)数据隧道、定时及连接管理
(3)SSL隧道
6.中继:没有完全遵循HTTP规范的简单HTTP代理,负责处理HTTP中建立连接的部分,然后对字节进行盲转发

九.Web机器人(爬虫)

十.HTTP-NG

1.发展中存在的问题
(1)复杂性(2)可扩展性(3)性能(4)传输依赖性
2.HTTP-NG的活动
3.模块化及功能增强:报文传输层、远程调用层、Web应用层
4.分布式对象
5.第一层—报文传输:报文传输层关心的是报文的有效传输,不考虑报文的含义和目的

  • 对报文进行管道化和批量化传输,以降低往返时延
  • 重用连接,以降低时延,提高传输带宽
  • 在同一条连接上并行的复用多个报文流,以防止报文流饿死的同时优化共享链接
  • 对报文进行有效的分段,使报文边界的确定更加容易

6.第二层—远程调用:本层提供了通用的请求/响应框架,客户端可通过此框架调用对服务器资源的操作
7.第三层—Web应用:执行语义和应用程序特定逻辑的地方

猜你喜欢

转载自blog.csdn.net/u011955067/article/details/80096392