速读,五分钟深入了解HTTP( 六 )


例如,一个客户端发送了一个包含 Accept-Language 首部字段的请求之后,源服务器返回的响应包含 Vary: Accept-Language 内容,缓存服务器对这个响应进行缓存之后,在客户端下一次访问同一个 URL 资源,并且 Accept-Language 与缓存中的对应的值相同时才会返回该缓存 。
内容编码内容编码将实体主体进行压缩,从而减少传输的数据量 。
常用的内容编码有:gzip、compress、deflate、identity 。
浏览器发送 Accept-Encoding 首部,其中包含有它所支持的压缩算法,以及各自的优先级 。服务器则从中选择一种,使用该算法对响应的消息主体进行压缩,并且发送 Content-Encoding 首部来告知浏览器它选择了哪一种算法 。由于该内容协商过程是基于编码类型来选择资源的展现形式的,在响应的 Vary 首部至少要包含 Content-Encoding 。
范围请求如果网络出现中断,服务器只发送了一部分数据,范围请求可以使得客户端只请求服务器未发送的那部分数据,从而避免服务器重新发送所有数据 。
1. Range在请求报文中添加 Range 首部字段指定请求的范围 。
GET /z4d4kWk.jpg HTTP/1.1Host: i.imgur.comRange: bytes=0-1023请求成功的话服务器返回的响应包含 206 Partial Content 状态码 。
HTTP/1.1 206 Partial ContentContent-Range: bytes 0-1023/146515Content-Length: 1024...(binary content)2. Accept-Ranges响应首部字段 Accept-Ranges 用于告知客户端是否能处理范围请求,可以处理使用 bytes,否则使用 none 。
Accept-Ranges: bytes3. 响应状态码

在请求成功的情况下,服务器会返回 206 Partial Content 状态码 。
在请求的范围越界的情况下,服务器会返回 416 Requested Range Not Satisfiable 状态码 。
在不支持范围请求的情况下,服务器会返回 200 OK 状态码 。
分块传输编码Chunked Transfer Coding,可以把数据分割成多块,让浏览器逐步显示页面 。
多部分对象集合一份报文主体内可含有多种类型的实体同时发送,每个部分之间用 boundary 字段定义的分隔符进行分隔,每个部分都可以有首部字段 。
例如,上传多个表单时可以使用如下方式:
Content-Type: multipart/form-data; boundary=AaB03x--AaB03xContent-Disposition: form-data; name="submit-name"Larry--AaB03xContent-Disposition: form-data; name="files"; filename="file1.txt"Content-Type: text/plain... contents of file1.txt ...--AaB03x--虚拟主机HTTP/1.1 使用虚拟主机技术,使得一台服务器拥有多个域名,并且在逻辑上可以看成多个服务器 。
通信数据转发1. 代理代理服务器接受客户端的请求,并且转发给其它服务器 。
使用代理的主要目的是:
缓存
负载均衡
网络访问控制
访问日志记录
代理服务器分为正向代理和反向代理两种:
用户察觉得到正向代理的存在 。

速读,五分钟深入了解HTTP

文章插图
 
而反向代理一般位于内部网络中,用户察觉不到 。

速读,五分钟深入了解HTTP

文章插图
 
2. 网关与代理服务器不同的是,网关服务器会将 HTTP 转化为其它协议进行通信,从而请求其它非 HTTP 服务器的服务 。
3. 隧道使用 SSL 等加密手段,在客户端和服务器之间建立一条安全的通信线路 。
八、HTTPsHTTP 有以下安全性问题:
使用明文进行通信,内容可能会被窃听;
不验证通信方的身份,通信方的身份有可能遭遇伪装;
无法证明报文的完整性,报文有可能遭篡改 。
HTTPs 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信,也就是说 HTTPs 使用了隧道进行通信 。
通过使用 SSL,HTTPs 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改) 。
速读,五分钟深入了解HTTP

文章插图
 
加密1. 对称密钥加密对称密钥加密(Symmetric-Key Encryption),加密和解密使用同一密钥 。
优点:运算速度快;
缺点:无法安全地将密钥传输给通信方 。

速读,五分钟深入了解HTTP

文章插图
 
2.非对称密钥加密非对称密钥加密,又称公开密钥加密(Public-Key Encryption),加密和解密使用不同的密钥 。


推荐阅读