HTTP权威指南(四)

HTTP权威指南笔记(四 )

十五.实体和编码

1.报文是箱子,实体是货物
报文实体由报文首部和实体主体组成
2.Content-Length:实体的大小
该首部指示出报文中实体主体的字节大小
(1)检测截尾
(2)错误的长度信息
(3)对于持久连接必不可少
(4)如果进行了内容编码,则是编码后的字节长度
(5)确定实体主体长度的规则

  • 如果特定的HTTP报文类型不允许带有主体,就忽略该首部(诸如HEAD请求)
  • 如果含有描述传输编码的Transfer-Encoding首部,那么实体就应该由“零字节块”结束
  • 如果有Content-Length并且没有Transfer-Encoding,则指示了实体长度
  • 如果使用了multipart/byteranges,且没有使用Content-Length,那么多报文每个部分都要说明自身的长度
  • 如果都不匹配,实体就在连接关闭的时候结束

HTTP/1.1建议对于没有Content-Length首部的请求,发送400/411响应

3.实体摘要
为检测实体主体的数据是否被不经意地修改,发送方可以在生成初始的主体时,生成一个数据的校验和,这样接收方就可以通过检查这个校验和来捕获所有意外的实体修改
服务器使用Content-MD5首部发送对实体主体运行MD5算法的结果,只有产生响应的原始服务器可以计算并发送Content-MD5首部
4.媒体类型和字符集
Content-Type首部说明了实体主体的MIME类型,还支持可选的参数来进一步说明内容的类型,诸如charset等
5.内容编码
(1)内容编码过程

  • 网站服务器生成原始响应报文,带有Content-Type和Content-Length首部
  • 内容编码服务器创建编码后的报文,同时添加Content-Encoding首部
  • 接收程序得到编码后的报文进行解码,获得原始报文

(2)内容编码类型

Content-Encoding值描述
gzip表明采用GNU zip编码
compress表明实体采用Unix的文件压缩程序
deflate表明实体是用zlib格式压缩的
identity表明没有对实体进行编码

以上三种编码都是无损,gzip效率最高,使用最多

(3)Accept-Encoding首部:表明客户端可以接收的编码方式
6.传输编码和分块编码
经过内容编码的报文,只是对报文的实体主体部分进行了编码;经过传输编码的报文,编码作用于整个报文,报文自身的结构发生了变化
(1)可靠传输
(2)Transfer-Encoding首部:用于告知接收方为了可靠的传输报文,已经对其进行了传输编码;TE首部:用于请求首部中,告知服务器可以使用那些传输编码扩展
(3)分块编码:把报文分割成若干个大小已知的块;分块编码是一种传输编码,因此是报文的属性,而不是主体的属性

  • 分块与持久连接:在持久连接时,如果服务器动态生成内容,可以使用分块技术解决;它由起始的响应首部开始,随后是一系列分块,每个分块包含一个长度值和该分块的数据;长度使用16进制表示并且用CRLF与数据分隔;最后用长度为0的块表示结束
  • 分块报文的拖挂:在0长度的结束报文之后添加

(4)内容编码和传输编码的结合
(5)传输编码的规则
7.随时间变化的实例
8.验证码和新鲜度
(1)新鲜度:服务器应当告知客户端能够将内容缓存多长时间,在这个时间之内就是新鲜的;可以使用Expires和Cache-Control首部
Cache-Control首部

指令报文类型描述
no-cache请求在重新向服务器验证之前,不要返回文档的缓存副本
no-store请求不要返回文档的缓存副本,不要保存服务器的响应
max-age请求缓存中的文档不能超过指定的使用期
max-stale请求文档允许过期,但是不能超过指令中的指定的过期值
min-fresh请求响应必须在指定的这段时间保持新鲜
no-transform请求文档在发送之前不允许转换
only-if-cached请求只有当文档在缓存中才发送,不要联系原始服务器
public响应响应可以被任何服务器缓存
private响应响应可以被缓存,但是只能被单个客户端访问
no-cache响应有首部列表,可以缓存并提供给客户端,但要删除首部列表;没有指定首部,缓存中的副本在没有重新向服务器验证之前不能提供给客户端
no-store响应响应不允许被缓存
no-transform响应响应在提供给客户端之前不能做任何形式的修改
must-revalidate响应响应在提供给客户端之前必须重新向服务器验证
proxy-revalidate响应共享的缓存在提供给客户端之前必须向原始服务器验证
max-age响应指定文档可以被缓存的时间以及新鲜度的最长时间
s-max-age响应指定文档作为共享缓存的最长使用时间

(2)有条件的请求和验证码
仅当资源改变时才请求副本,这种特殊请求称为有条件的请求

请求类型验证码描述
If-Modified-SinceLast-Modified如果在前一条响应的Last-Modified中说明的时间之后,资源的副本发生了变化,就发送其副本
If-Unmodified-SinceLast-Modified如果在前一条响应的Last-Modified中说明的时间之后,资源的副本没有变化,就发送其副本
If-MatchETag如果实体的标记与前一次响应首部中ETag相同,就发送资源副本
If-None-MatchETag如果实体的标记与前一次响应首部中ETag不同,就发送资源副本

HTTP把验证码分为两类:弱验证码和强验证码
弱验证码不一定能唯一标识一个资源,而强验证码必须唯一标识
9.范围请求
客户端可以通过range首部来请求某个范围的数据;服务器通过Accept-Ranges向客户端说明可以接受的范围请求
10.差异编码:通过交换对象改变的部分而不是完整的对象来优化传输性能

十六.国际化

1.HTTP对国际性内容的支持
服务器通过Content-Type和Content-Language告知客户端文档的字母表和语言
客户端发送Accept-Charset和Accept-Language告知服务器它理解哪些字符集编码和语言以及优先顺序
2.字符集和HTTP
(1)字符集是把字符转换为二进制码的编码:charset参数用来告知客户端如何把内容中的二进制码转换为字符
(2)工作过程:根据编码方案解码,使用编码后的字符集找到字符,最后显示
(3)字符集不对,字符就不对
(4)标准化的MIME charset值
(5)Content-Type首部和charset首部以及META标志:如果首部中没有标明字符集,HTML中的META中也可能会有字符相关的信息
(6)Accept-Charset首部:客户端明确告知服务器它支持哪些字符系统
其余略

十七.内容协商与转码

内容协商技术:客户端驱动、服务器驱动以及透明驱动
技术概要

技术工作原理优点缺点
客户端驱动客户端发起请求,服务器发送可选项的列表,客户端选择在服务器端的实现最容易,客户端可以选择合适的内容增加了时延:为了获得正确的内容,至少要发送两次请求
服务器驱动服务器检查客户端的请求首部集并决定提供哪个版本的页面比客户端驱动要快,提供q值机制,允许服务器近似匹配,还提供vary首部告知下游设备如何对请求估值如果结论不明确,服务器要猜测
透明某个中间设备代表客户端进行请求协商免除了web服务器的协商开销,比客户端驱动要快没有正式规范

内容协商首部集

Accept首部实体首部
AcceptContent-Type
Accept-LanguageContent-Language
Accept-CharsetContent-Type
Accept-EncodingContent-Encoding

十八.Web主机托管

1.主机托管服务
2.虚拟主机托管
(1)虚拟服务器请求缺乏主机信息:HTTP/1.0中只发送了URL的路径部分
(2)设法让虚拟主机托管正常工作

  • 通过URL路径进行虚拟主机托管:给每个逻辑网站一个专门的路径前缀
  • 通过端口号进行虚拟主机托管:用户不愿意
  • 通过IP地址进行虚拟主机托管:资源有限
  • 通过Host首部进行虚拟主机托管

(3)HTTP/1.1的Host首部
3.使网站更可靠
(1)镜像的服务器集群:服务器集群是一排配置相同的Web服务器,互相可以替换。有一个主原始服务器和多个复制原始服务器
(2)内容分发网络CDN:对特定内容进行分发的专门网络
(3)CDN中的反向代理缓存
(4)CDN中的代理缓存
4.让网站更快
服务器集群和分布式代理缓存或反向代理服务器分散了网络流量,可以避免拥塞

十九.发布系统

二十.重定向和负载均衡

1.为什么要重定向:可靠的执行HTTP事务、最小化时延、节约网络带宽
2.重定向到何地:Web服务器会根据每个IP来处理请求。将请求分摊到复制的服务器中去,就意味着应该把对某特定URL的每条请求都发送到最佳的Web服务器上去
3.重定向协议概览:重定向的目标是尽快将HTTP报文发送到可用的Web服务器上去
4.通用的重定向方法
(1)HTTP重定向:处理重定向的服务器找到可用的负载最小的内容服务器,并将浏览器重定向到那台服务器上去;HTTP重定向的优点之一就是重定向服务器知道客户端的IP地址
缺点:需要原始服务器进行大量处理来判断要重定向到哪台服务器上去;增加了用户时延,因为访问界面要进行两次往返;如果重定向服务器出故障,站点就会瘫痪
(2)DNS重定向:DNS轮转,在Web服务器集群中平衡负载;大多数DNS客户端只会使用多地址集中的第一个地址,为了均衡负载,大多数DNS服务器都会在每次完成查询之后对地址进行轮转;其他算法包括负载均衡算法、邻接路由算法以及故障屏蔽算法
(3)任播寻址
(4)IP MAC 转发
(5)IP地址转发
(6)网元控制协议
5.代理的重定向方法
(1)显式浏览器配置
(2)代理自动配置
(3)Web代理自动发现协议
6.缓存的重定向方法
7.因特网缓存协议(ICP)
ICP允许缓存在其兄弟缓存中查找命中内容,避免查询原始服务器带来的更多开销
8.缓存阵列路由协议
9.超文本缓存协议

二十一.日志记录与使用情况跟踪

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值