HTTP学习(五)实体、编码

HTTP作为现在非常重要的协议,需要仔细梳理一下。本次学习知识点来自于《HTTP权威指南》,只是文中知识点罗列,算是读书笔记,请有兴趣的读者购买《HTTP权威指南》完整阅读

一、实体

每天都有数以亿计的各种媒体对象经由 HTTP 传送, 如图像、 文本、 影片以及软件程序等。 只要你能叫出名字, HTTP 就可以传送。 HTTP 还会确保它的报文被正确传送、 识别、 提取以及适当处理。 具体说来, HTTP 要确保它所承载的“货物” 满足以下条件。
可 以 被 正 确 地 识 别(通 过 Content-Type 首 部 说 明 媒 体 格 式, ContentLanguage 首部说明语言), 以便浏览器和其他客户端能正确处理内容。
可以被正确地解包(通过 Content-Length 首部和 Content-Encoding 首部)。
是最新的(通过实体验证码和缓存过期控制)
符合用户的需要(基于 Accept 系列的内容协商首部)
在网络上可以快速有效地传输(通过范围请求、 差异编码以及其他数据压缩方法)
完整到达、 未被篡改(通过传输编码首部和 Content-MD5 校验和首部) 

1、报文是箱子, 实体是货物

HTTP 实体首部(参见第 3 章) 描述了 HTTP 报文的内容。 HTTP/1.1 版定义了以下10 个基本字体首部字段。
Content-Type
实体中所承载对象的类型。
Content-Length
所传送实体主体的长度或大小。
Content-Language
与所传送对象最相配的人类语言。
Content-Encoding
对象数据所做的任意变换(比如, 压缩)。
Content-Location
一个备用位置, 请求时可通过它获得对象。
Content-Range
如果这是部分实体, 这个首部说明它是整体的哪个部分。
Content-MD5
实体主体内容的校验和
Last-Modified
所传输内容在服务器上创建或最后修改的日期时间。
Expires
实体数据将要失效的日期时间。
Allow
该资源所允许的各种请求方法, 例如, GET HEAD
ETag
这份文档特定实例(参见 15.7 节) 的唯一验证码。 ETag 首部没有正式定义为实体首部, 但它对许多涉及实体的操作来说, 都是一个重要的首部。
Cache-Control
指出应该如何缓存该文档。 和 ETag 首部类似, Cache-Control 首部也没有正式定义为实体首部。
2、Transfer-Encoding首部
HTTP 协议中只定义了下面两个首部来描述和控制传输编码。
Transfer-Encoding
告知接收方为了可靠地传输报文, 已经对其进行了何种编码。
TE
用在请求首部中, 告知服务器可以使用哪些传输编码扩展。 
3、新鲜度

服务器应当告知客户端能够将内容缓存多长时间, 在这个时间之内就是新鲜的。服务器可以用这两个首部之一来提供这种信息: Expires(过期) 和 CacheControl(缓存控制)。Expires 首部规定文档“过期” 的具体时间——此后就不应当认为它还是最新的。Expires 首部的语法如下:
Expires: Sun Mar 18 23:59:59 GMT 2001
4、验证码

HTTP 把验证码分为两类: 弱验证码weak validators) 和强验证码strong validators)。弱验证码不一定能唯一标识资源的一个实例, 而强验证码必须如此。 弱验证码的一个例子是对象的大小字节数。 有可能资源的内容改变了, 而大小还保持不变, 因此假想的字节计数验证码与改变是弱相关的。 而资源内容的加密校验和(比如 MD5)就是强验证码, 当文档改变时它总是会改变。 

二、国际化
1、HTTP对国际性内容的支持
服 务 器 通 过 HTTP 协 议 的 Content-Type 首 部 中 的 charset 参 数 和 ContentLanguage 首部告知客户端文档的字母表和语言。 这些首部描述了实体主体的“信息盒子” 里面装的是什么, 如何把内容转换成合适的字符以便显示在屏幕上以及里面的词语表示的是哪种语言。
同时, 客户端需要告知服务器用户理解何种语言, 浏览器上安装了何种字母表编码算法。 客户端发送
Accept-Charset 首部和 Accept-Language 首部, 告知服务器它理解哪些字符集编码算法和语言以及其中的优先顺序。 
2、字符集是把字符转换为二进制码的编码
HTTP 字符集的值说明如何把实体内容的二进制码转换为特定字母表中的字符。 每个字符集标记都命名了一种把二进制码转换为字符的算法(反之亦然)。  
下 面 的 Content-Type 首 部 告 知 接 收 者, 传 输 的 内 容 是 一 份 HTML 文 件, 用charset 参数告知接收者使用 iso-8859-6 阿拉伯字符集的解码算法把内容中的二进制码转换为字符:
Content-Type: text/html; charset=iso-8859-6 
3、MIMEcharset 标记。

4、字符集术语 
以下是应当了解的电子化字符系统的 8 个术语。
字符
字符是指字母、 数字、 标点、 表意文字(比如汉语)、 符号, 或其他文本形式的
书写“原子”。 由统一字符集(
Universal Character SetUCS, 它的非正式的名字
Unicode3) 首创, 为多种语言中的很多字符开发了一系列标准化的文本名称,
它们常用来便捷地命名字符, 而且不会与其他字符冲突。
4
字形
描述字符的笔画图案或唯一的图形化形状。 如果一个字符有多种不同的写法, 就有多个字形(参见图 16-3)。
编码后的字符
分配给字符的唯一数字编号, 这样我们就可以操作它了。
代码空间
计划用于字符代码值的整数范围。
代码宽度
每个(固定大小的) 字符代码所用的位数。
字符库
特定的工作字符集(全体字符的一个子集)
编码后的字符集
组成字符库(从全球的字符中选出若干字符) 的已编码字符集, 并为每个字符分配代码空间中的一个代码。 换句话说, 它把数字化的字符代码映射为实际的
字符。
字符编码方案
把数字化的字符代码编码成一系列二进制码(并能相应地反向解码) 的算法。 字符编码方案可用来减少识别字符所需要的数据总量(压缩)、 解决传输限制、 统
一重叠编码字符集


三、发布
1、web主机托管
随着 Web 迅速成为主流, 每人都想要一个网站, 但很少有人有能力或时间来搭建带空调的服务器机房, 注册域名, 或购买网络带宽。 为了满足人们的迫切需求, 出现了很多新的企业, 提供了专业化管理的 Web 主机托管服务。 服务级别有多种, 从物理上的设备管理(提供空间、 空调以及线缆) 到完整的 Web 主机托管, 顾客只需要提供内容就行了。 
2、虚拟主机托管
许多 Web 托管者通过让一些顾客共享一台计算机来提供便宜的 Web 主机托管服务。这称为共享主机托管虚拟主机托管。 每个网站看起来是托管在不同的服务器上,但实际上是托管在同一个物理服务器上。 从最终用户的角度来看, 被虚拟托管的网站应当和托管在专用服务器上的网站没什么区别。 
3、镜像的服务器集群
服务器集群是一排配置相同的 Web 服务器, 互相可以替换。 每个服务器上的内容可以通过镜像复制, 这样当某个服务器出问题的时候, 其他的可以顶上。
4、内容分发网络
简单地说, 内容分发网络(CDN) 就是对特定内容进行分发的专门网络。 这个网络中的节点可以是 Web 服务器、 反向代理或缓存。

四、重定向与负载均衡
1、重定向
Web 服务器会根据每个 IP 来处理请求。 将请求分摊到复制的服务器中去, 就意味着应该把对某特定 URL 的每条请求都发送到最佳的 Web 服务器上去(最靠近客户端的、 或负载最轻的或采用其他优化策略选择的服务器)。 重定向到某台服务器就像将所有需要给汽车加油的司机都送到最近的加油站去一样。 
2、重定向方式

3、HTTP重定向

4、DNS重定向

5、因特网缓存协议
ICP(因特网缓存协议) 允许缓存在其兄弟缓存中查找命中内容。 如果某个缓存中没有 HTTP 报文所请求的内容, 它可以查明内容是否在附近的兄弟缓存中, 如果在,就从那里获取内容, 以避免查询原始服务器而带来的更多开销。 可以把 ICP 当作一个缓存集群协议。 HTTP 请求报文的最终目的地可以通过一系列的 ICP 查询确定,从这个角度来说, 它就是一个重定向协议。 
6、HTCP(超文本缓存协议)
HTCP(超文本缓存协议) 允许兄弟缓存之间通过 URL 和所有的请求及响应首部来相互查询文档是否存在, 以降低错误命中的可能。 而且 HTCP 允许兄弟缓存监视或请求在对方的缓存中添加或删除所选中的文档, 并修改对方已缓存文档的缓存策略。 











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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值